通过仅仅调整编译器中分支预测成本设置的 3 个单位,现代 CPU 的运算性能最高提升了 12%。
想象一下。每天早晨上班路上,你都想寻找最快的捷径,但由于无法预测路况,总是误入拥堵路段,导致每次都迟到 10 分钟。我们计算机的大脑——CPU 也面临类似的情况。CPU 会预先预测接下来需要什么计算结果并提前准备,但如果预测错误(分支预测错误,Branch Misprediction),就必须丢弃已经准备好的工作并从头开始计算,从而浪费大量时间。
最近,仅仅两行代码的修改让计算机能够更聪明地选择“捷径”,这在全世界的开发者中引发了热议。令人惊讶的是,仅凭这一微小的调整,现代 CPU 的运算性能就提升了 12%。这究竟发生了什么?
为什么这很重要?
这一消息给普通用户带来了希望:即便不购买新的硬件,仅通过软件优化也能使系统性能最大化。 出处 3 特别是对于执行高性能任务的专家或服务器运营商来说,无需升级硬件即可获得性能提升,是一个非常令人高兴的消息。
同时,这也清晰地表明,无论硬件(CPU)如何发展,如果作为软件的编译器(将源代码翻译成 CPU 可理解语言的工具)不能正确理解其结构,就无法发挥出应有的性能。这一案例是硬件和软件必须紧密沟通的一个绝佳例证。 出处 4
易懂解释:厨师的食材准备与分支预测
前文提到的编译器(GNU Compiler Collection,简称 GCC)的作用是预先给出指南,防止 CPU 在运算中迷路。
其中,“分支预测”是 CPU 预先猜测下一步将执行哪条指令的工作。如果把它比作烹饪就很容易理解了。这就像厨师在做菜时,预先拿出下一步可能需要的食材一样。但是,如果下一道菜与预期不符,就必须收起已经准备好的食材,重新开始!这就是分支预测错误。
长期以来,GCC 对 CPU 分支预测错误的“惩罚(成本)”设定得太低了。这就像厨师错误地认为收起食材重新整理的时间非常短一样。 出处 7
AMD 的工程师将这一惩罚数值提高了 3 个单位。 出处 6 现在,编译器会判断:“嗯,如果走这条路出错,代价太大,还是走另一条更有效的方法吧。” 出处 3 结果,系统选择了更稳妥、更快捷的路径。 出处 5
当前状况
该补丁证明了在 AMD Zen 5 架构上性能提升了 12%,在 Zen 4 架构上提升了 9%。 出处 1, 出处 2 特别是在名为 SPEC CPU 544.nab_r 的复杂运算任务中效果显著。 出处 7, 出处 8
但是,这并不意味着你的电脑今天就会变快。此项变更预计将正式包含在 GCC 17 版本中,计划于 2027 年发布。 出处 3
未来趋势
随着计算机结构每年变得越来越深、越来越复杂(流水线变长),未来软件如何准确反映硬件的微妙差异将成为性能的核心。 出处 7 像这次这样通过硬件工程师与软件编译器团队合作来提升性能的案例,预计将会越来越多。
MindTickleBytes AI 记者的视角
无需制造巨大的新芯片就能提升计算机性能,这一点非常有趣。有时,最聪明的解决方案不是添加新东西,而是从纠正现有系统的误解开始。通过微小的调整汇聚成巨大差异的技术世界,总是令人着迷。
参考资料
- GCC Patch Adjusting AMD Zen 5 Misprediction Cost Nets 12% Win In Benchmark - Phoronix
-
[News - [Phoronix] GCC Patch Adjusting AMD Zen 5 Misprediction Cost Nets 12% Win In Benchmark Linux.org](https://www.linux.org/threads/phoronix-gcc-patch-adjusting-amd-zen-5-misprediction-cost-nets-12-win-in-benchmark.70482/) - Someone changed one line in the GCC compiler and scored a 12% improvement on modern Intel and AMD chips
- One Line x86 Change To GCC Compiler Nets +12% Benchmark Win For Modern Intel/AMD CPUs - NewsBreak
-
[Minor GCC tweak yields double-digit performance boost on Intel and AMD processors Noah Intelligence](https://noah-news.com/minor-gcc-tweak-yields-double-digit-performance-boost-on-intel-and-amd-processor/) - A new GCC compiler patch has increased the performance of AMD…
- GCC’s Zen 5 Branch Misprediction Cost Was Too Low, and Fixing It…
-
[GCC-патч от AMD: +12% к производительности Zen 5 за… AIKraft](https://aikraft.ru/news/gcc-patch-adjusting-amd-zen-5-misprediction-cost-nets-12-win-in-benchm)
- 强制上调 CPU 时钟频率
- 将分支预测错误成本修正为符合实际结构的现实数值
- 删除操作系统内核
- SPEC CPU 544.nab_r
- 3D 游戏帧数测试
- 网页浏览器速度测试
- 已向所有用户发布
- 计划在 2027 年发布的 GCC 17 版本中包含
- 即刻起立即更新