8月24日消息,AMD编译器工程师Venkataramanan Kumar近日向GCC(GNU编译器套件)提交了一则仅两行代码的补丁,将Zen 4和Zen 5处理器的分支预测错误成本参数上调了3个单位。
这一微调在SPEC CPU 2017的544.nab_r基准测试中,为Zen 5带来了12%的性能提升,Zen 4也获得了9%的增益。
分支预测是现代CPU实现高速运行的核心技术之一。CPU在执行指令时,会提前猜测条件分支(如if语句)的走向并预先加载指令,若猜对则效率极高。
但若猜错,整个流水线将被清空,造成数十个时钟周期的性能损失。随着Zen 4和Zen 5的流水线越来越深,分支预测错误的实际代价远高于GCC成本表中的预设值。
编译器如何应对这一差异?实际上,GCC编译器内部维护着一张“成本表”,用以评估不同指令操作的周期消耗,并据此决定是否将分支代码转换为无分支的条件传送指令。
若表中设定的分支预测错误成本过低,编译器会保留过多本应被优化的分支,导致CPU频繁因预测失误而清空流水线。
此次补丁将Zen 4和Zen 5成本表中的分支预测错误成本参数从COSTS_N_INSNS(2)调整为COSTS_N_INSNS(2)+3,使编译器在生成代码时更积极地消除分支。
值得注意的是,此次优化并非AMD独创思路。2026年6月,英特尔软件工程师Lili Cui曾在GCC通用x86调优中做过完全相同的修改,同样上调了3个单位,为英特尔Granite Rapids带来了12.7%的性能提升,Zen 5也获得了12.1%的增益。
该补丁目前仍在GCC邮件列表审核中,预计将纳入明年发布的GCC 17稳定版,并可能反向移植到GCC 16.3小版本。
【本文来源:快•科技】
