导读 | 去年11月披露的是Intel Jump Conditional Code Erratum(英特尔跳转条件代码勘误),它需要更新的CPU微代码来缓解这种情况,并且几乎对整个系统的性能都产生了影响。 |
但是英特尔开发人员一直在研究汇编程序补丁,以帮助减少性能损失。 GNU汇编器修补程序在12月进行了合并,而现在在LLVM 10.0之前,替代工具链提供了一个选项,可以帮助恢复某些损失的性能。
在GNU方面,公开的选项是“ -mbranches-within-32B-boundaries”,用于更改跳转指令的处理,以帮助降低通过Cascadelake为Skylake提供的Intel CPU微代码更新带来的性能下降。 (原始JCC文章中有更多详细信息,其中包括JCC影响的早期基准以及自披露之日起Intel的Clear Linux中提供的缓解支持。)
自11月以来,LLVM开发人员一直在讨论他们的等效处理方法,以帮助减少此微代码更新对受影响处理器的性能影响。他们于12月下旬开始着手更改,而现在所需的LLVM和Clang位已公开。
在冻结LLVM 10.0功能之前的这一周,现在可以使用必需的选项: --x86-branches-within-32B-boundaries。提交添加 --x86-branches-within-32B-boundaries的解释说:“由于我们已经检查了nop支持,并且它看起来很成熟(*),所以我认为是时候添加master标志了。现在,它将默认到nop padding,但是一旦前缀padding支持到达,我们将更新默认值(*)现在,我可以确认对最新更改的下游测试- nop padding和编译器对抑制的支持-已通过所有我们已经进行过的功能测试,可能仍然存在一些隐患,但是我们已经获得了足够的覆盖范围,可以对基本方法充满信心,请注意,可以在组装.s文件时或在直接从编译器使用集成汇编程序。稍后将使用所有抑制机制,并且应始终生成正确的代码。”
对于Clang 10,该选项是 -mbranches-within-32B-boundaries,并且也刚好登陆。此选项与GNU端的命名相同。该Clang驱动程序选项已添加到此处。
默认情况下,此LLVM/Clang 10.0支持可帮助弥补JCC勘误微码性能影响。
LLVM 10.0昨天进入了功能冻结/代码分支,应该在2月底稳定发布。
原文来自:
本文地址://q13zd.cn/lvm-jcc-intel.html编辑:倪家兴,审核员:清蒸github
Linux大全:
Linux系统大全: