Discuss about the LLVM SW mitigation to Jump Conditional Code Erratum

Changed the data into plain text.

Hi all,

We have more data based on LLVM test suite and SPEC2017. It covered the performance, code size and build time. It collected the performance of the SW mitigation on the servers w/o MCU and with MCU, the prefix padding and nop padding, the padding to jcc+fused+jmp and the padding to all types of branches. I expect the data can help us to move forward and make decision.

For the code size of Chrome, Firefox, or Safari, we don’t have data on hand. We are willing to work with community to get those data.

Below is the LLVM test suite we measured including the performance, code size and build time.

The data indicates some performance effect (1.7%) from the microcode update, which was reduced to 0.5% with the SW mitigation of prefix padding. The code size increase in test suite is ~0.5%. And the compile time increase is ~2%.

Comparing with hw_sw_prefix and hw_sw_nop, the exec_time difference is within -0.5%~0.5%, which may be a within the margin of error.

Comparing with hw_sw_prefix and hw_sw_prefix_align_all, the exec_time difference is even less at 0.1%.

Given that LLVM test-suite is a relatively small benchmark, we do not conclude which padding is preferable, hw_sw_prefix, hw_sw_nop or hw_sw_prefix_align_all.

Table 1 - test suite result data

LLVM test-suite Baseline sw_prefix sw_nop sw_prefix_align_ hw hw_sw_prefix hw_sw_nop hw_sw_prefix_ali

compile_time 0.276 0.282 0.277 0.282 0.276 0.282 0.277 0.282

exec_time 286.465 285.017 287.125 285.696 291.294 287.766 285.027 288.2

code_size 3.868 3.889 3.888 3.895 3.868 3.889 3.888 3.895