This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
Re: [PATCH 0/5] i386: Optimize for Jump Conditional Code Erratum
- From: Fangrui Song <i at maskray dot me>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: binutils at sourceware dot org
- Date: Thu, 14 Nov 2019 16:16:55 -0800
- Subject: Re: [PATCH 0/5] i386: Optimize for Jump Conditional Code Erratum
- References: <20191112161905.10048-1-hjl.tools@gmail.com>
On 2019-11-12, H.J. Lu wrote:
Microcode update for Jump Conditional Code Erratum may cause performance
loss for some workloads:
https://www.intel.com/content/www/us/en/support/articles/000055650.html
Here is the set of assembler patches to mitigate performance impact by
aligning branches within 32-byte boundary. The impacted instructions
are:
So, a few questions.
1. Without the assembler mitigation, what is the performance hit with and
without the microcode update?
2. What is the code size increase of this assembler mitigation?
3. Why is the jcc+fused+jmp set suggested? (-mbranches-within-32B-boundaries)
What is the performance and code size impact with this set compared
with the full set? Among "jcc+fused+call+jmp+ret+indirect", which one
gives the largest hit?
4. Shall we default to -mbranches-within-32B-boundaries if the specified
-march= or -mtune= may be affected by the erratum?
5. Do we need to increase the section alignment (sh_addralign)?