<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:"\@SimSun";
panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Preformatted Char";
margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.HTMLPreformattedChar
{mso-style-name:"HTML Preformatted Char";
mso-style-priority:99;
mso-style-link:"HTML Preformatted";
font-family:"Courier New";}
.MsoChpDefault
{mso-style-type:export-only;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
/* List Definitions */
@list l0
{mso-list-id:571307949;
mso-list-type:hybrid;
mso-list-template-ids:-568326754 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l0:level1
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level2
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level3
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level4
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level5
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level6
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
@list l0:level7
{mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level8
{mso-level-number-format:alpha-lower;
mso-level-tab-stop:none;
mso-level-number-position:left;
text-indent:-.25in;}
@list l0:level9
{mso-level-number-format:roman-lower;
mso-level-tab-stop:none;
mso-level-number-position:right;
text-indent:-9.0pt;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hi all,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">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.
<o:p></o:p></p>
<p class="MsoNormal">For the code size of <span style="color:black;background:white">
Chrome, Firefox, or Safari, we don’t have data on hand. We are willing to work with community to get those data.
<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="text-align:justify;text-justify:inter-ideograph">Below is the LLVM test suite we measured including the performance, code size and build time.
<o:p></o:p></p>
<p class="MsoNormal" style="text-align:justify;text-justify:inter-ideograph"><span style="color:black">The data indicates some
</span>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%.<o:p></o:p></p>
<pre style="text-align:justify;text-justify:inter-ideograph"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">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. <o:p></o:p></span></pre>
<pre style="text-align:justify;text-justify:inter-ideograph"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Comparing with hw_sw_prefix and hw_sw_prefix_align_all, the exec_time difference is even less at 0.1%. <o:p></o:p></span></pre>
<pre style="text-align:justify;text-justify:inter-ideograph"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">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. <o:p></o:p></span></pre>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><b>Table 1 – test suite result data<o:p></o:p></b></p>
<p class="MsoNormal"><table><o:p></o:p></p>
<p class="MsoNormal"> <tr><o:p></o:p></p>
<p class="MsoNormal"> <th><br> LLVM test-suite<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> Baseline<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> sw_prefix<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> sw_nop<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> sw_prefix_<br> align_all<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> hw<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> hw_sw_<br> prefix<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> hw_sw_nop<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> hw_sw_prefix_<br> align_all<br> </th><o:p></o:p></p>
<p class="MsoNormal"> </tr><o:p></o:p></p>
<p class="MsoNormal"> <tr><o:p></o:p></p>
<p class="MsoNormal"> <td><br> compile_time<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 0.276<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 0.282<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 0.277<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 0.282<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 0.276<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 0.282<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 0.277<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 0.282<br> </td><o:p></o:p></p>
<p class="MsoNormal"> </tr><o:p></o:p></p>
<p class="MsoNormal"> <tr><o:p></o:p></p>
<p class="MsoNormal"> <td><br> exec_time<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 286.465<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 285.017<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 287.125<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 285.696<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 291.294<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 287.766<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 285.027<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 288.2<br> </td><o:p></o:p></p>
<p class="MsoNormal"> </tr><o:p></o:p></p>
<p class="MsoNormal"> <tr><o:p></o:p></p>
<p class="MsoNormal"> <td><br> code_size<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 3.868<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 3.889<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 3.888<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 3.895<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 3.868<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 3.889<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 3.888<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 3.895<br> </td><o:p></o:p></p>
<p class="MsoNormal"> </tr><o:p></o:p></p>
<p class="MsoNormal"></table><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><b>Table 2 – normalized test suite result data<o:p></o:p></b></p>
<p class="MsoNormal"><table><o:p></o:p></p>
<p class="MsoNormal"> <tr><o:p></o:p></p>
<p class="MsoNormal"> <th><br> LLVM test-suite<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> Baseline<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> sw_prefix<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> sw_nop<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> sw_prefix_<br> align_all<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> hw<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> hw_sw_<br> prefix<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> hw_sw_nop<br> </th><o:p></o:p></p>
<p class="MsoNormal"> <th><br> hw_sw_prefix_<br> align_all<br> </th><o:p></o:p></p>
<p class="MsoNormal"> </tr><o:p></o:p></p>
<p class="MsoNormal"> <tr><o:p></o:p></p>
<p class="MsoNormal"> <td><br> compile_time<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.021<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.005<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.022<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.021<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.005<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.022<br> </td><o:p></o:p></p>
<p class="MsoNormal"> </tr><o:p></o:p></p>
<p class="MsoNormal"> <tr><o:p></o:p></p>
<p class="MsoNormal"> <td><br> exec_time<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 0.995<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.002<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 0.997<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.017<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.005<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 0.995<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.006<br> </td><o:p></o:p></p>
<p class="MsoNormal"> </tr><o:p></o:p></p>
<p class="MsoNormal"> <tr><o:p></o:p></p>
<p class="MsoNormal"> <td><br> code_size<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.005<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.005<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.007<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.005<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.005<br> </td><o:p></o:p></p>
<p class="MsoNormal"> <td><br> 1.007<br> </td><o:p></o:p></p>
<p class="MsoNormal"> </tr><o:p></o:p></p>
<p class="MsoNormal"></table><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="EN-GB">Test date:</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-GB"> 2019/11/25</span><o:p></o:p></p>
<p class="MsoNormal"> System Configuration:<o:p></o:p></p>
<p class="MsoNormal"> Platform: Intel Internal Reference Validation Platform<o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span lang="EN-GB">OS: Red Hat* 8.0 x86_64</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span lang="EN-GB">Memory: 192 GB
</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span lang="EN-GB">CPUCount: 2
</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span lang="EN-GB">CoreCount: 40</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span lang="EN-GB">Intel HyperThreading: yes</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span lang="EN-GB">CPU Model: Intel<sup>®</sup> Xeon<sup>®</sup> Gold 6148 CPU @ 2.40GHz</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span lang="EN-GB">Microcode w/o microcode update: 0x200005e</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span lang="EN-GB">Microcode with microcode update: 0x2000063</span><o:p></o:p></p>
<p class="MsoNormal" style="margin-left:.5in"><span lang="EN-GB"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-GB">Compiler options:</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-GB"> ***sw_prefix: -x86-branches-within-32B-boundaries</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-GB"> ***sw_nop: -x86-align-branch-boundary=32 -x86-align-branch-prefix-size=0 -x86-align-branch=fused+jcc+jmp</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-GB"> ***sw_prefix_align_all: -x86-align-branch-boundary=32 -x86-align-branch-prefix-size=5 -x86-align-branch=fused+jcc+jmp+indirect+call+ret
</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-GB">Notes: </span><span style="color:#4472C4"><o:p></o:p></span></p>
<pre style="margin-left:.5in;text-align:justify;text-justify:inter-ideograph;text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><span style="mso-list:Ignore">1.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">Baseline means the system w/o microcode update and w/o SW mitigation.<o:p></o:p></span></pre>
<pre style="margin-left:.5in;text-align:justify;text-justify:inter-ideograph;text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><span style="mso-list:Ignore">2.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">sw_prefix means SW mitigation of prefix padding is applied to a system w/o microcode update. <o:p></o:p></span></pre>
<pre style="margin-left:.5in;text-align:justify;text-justify:inter-ideograph;text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><span style="mso-list:Ignore">3.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">sw_nop means SW mitigation of nop padding is applied to a system w/o microcode update.<o:p></o:p></span></pre>
<pre style="margin-left:.5in;text-align:justify;text-justify:inter-ideograph;text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><span style="mso-list:Ignore">4.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">sw_prefix_align_all means SW mitigation of prefix padding is applied to all impacted branches including call, ret and indirect jump, to a system w/o microcode update.<o:p></o:p></span></pre>
<pre style="margin-left:.5in;text-align:justify;text-justify:inter-ideograph;text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><span style="mso-list:Ignore">5.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">hw means the microcode update is applied w/o SW mitigation.<o:p></o:p></span></pre>
<pre style="margin-left:.5in;text-align:justify;text-justify:inter-ideograph;text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><span style="mso-list:Ignore">6.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">hw_sw_prefix means both microcode update and SW mitigation of prefix padding are applied.<o:p></o:p></span></pre>
<pre style="margin-left:.5in;text-align:justify;text-justify:inter-ideograph;text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><span style="mso-list:Ignore">7.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">hw_sw_nop means both microcode update and SW mitigation of nop padding are applied.<o:p></o:p></span></pre>
<pre style="margin-left:.5in;text-align:justify;text-justify:inter-ideograph;text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><span style="mso-list:Ignore">8.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">hw_sw_prefix_align_all means microcode update is applied, and SW mitigation of prefix padding is applied to all impacted branches including call, ret and indirect jump.<o:p></o:p></span></pre>
<pre style="margin-left:.5in;text-align:justify;text-justify:inter-ideograph;text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><span style="mso-list:Ignore">9.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">The data in 2nd table is normalized as the ratio vs. baseline (i.e. baseline =1, so the smaller the better).<o:p></o:p></span></pre>
<pre style="margin-left:.5in;text-align:justify;text-justify:inter-ideograph;text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><span style="mso-list:Ignore">10.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">The test was built with an engineering LLVM compiler plus the SW mitigation patch. The performance data may be variant from build to build.<o:p></o:p></span></pre>
<pre style="margin-left:.5in;text-align:justify;text-justify:inter-ideograph;text-indent:-.25in;mso-list:l0 level1 lfo1"><![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"><span style="mso-list:Ignore">11.<span style="font:7.0pt "Times New Roman""> </span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">The tested Microcode 0x2000063 is an engineering version with microcode update. The production version 0x2000064 and above contain the microcode update.<o:p></o:p></span></pre>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="EN-GB" style="font-family:"Times New Roman",serif">For more complete information about performance and benchmark results, visit </span><a href="http://www.intel.com/benchmarks"><span lang="EN-GB" style="font-family:"Times New Roman",serif">www.intel.com/benchmarks</span></a><span lang="EN-GB" style="font-family:"Times New Roman",serif">.
For specific information and notices/disclaimers regarding the Jump Conditional Code Erratum, visit </span><a href="https://www.intel.com/content/dam/support/us/en/documents/processors/mitigations-jump-conditional-code-erratum.pdf"><span lang="EN-GB" style="font-family:"Times New Roman",serif">https://www.intel.com/content/dam/support/us/en/documents/processors/mitigations-jump-conditional-code-erratum.pdf</span></a><span lang="EN-GB" style="font-family:"Times New Roman",serif">.</span><span style="font-family:"Times New Roman",serif"><o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>