2026年8月24日,AMD编译器工程师Venkataramanan Kumar向GNU编译器套件提交了一份仅含两行代码的补丁,将Zen 4与Zen 5架构处理器在分支预测失败时的成本参数上调3个单位。该调整在SPEC CPU 2017的544.nab_r基准测试中,使Zen 5处理器性能提升12%,Zen 4提升9%。
分支预测是现代处理器实现高吞吐执行的关键机制之一。CPU在运行过程中需预先判断条件分支的执行路径,并提前加载相应指令。若预测正确,可显著提升效率;若预测错误,则必须清空整个流水线,造成数十个时钟周期的延迟。随着Zen 4与Zen 5架构流水线深度持续增加,分支预测失败的实际开销已明显超出编译器原有成本模型中的预估值。
GCC内部维护一套指令执行成本表,用于量化各类操作的周期消耗,并据此决定是否将带分支的逻辑转换为无分支的条件传送形式。当成本表中对分支失败的估算偏低时,编译器倾向于保留更多分支结构,导致处理器频繁遭遇预测失误与流水线冲刷,影响整体性能。
此次补丁将Zen 4和Zen 5对应的成本参数由COSTS_N_INSNS(2)更新为COSTS_N_INSNS(2)+3,促使编译器在代码生成阶段更主动地消除分支,提升指令流的连续性与执行效率。
需要指出的是,这一优化思路并非首次出现。2026年6月,一位英特尔软件工程师在GCC通用x86平台调优中实施了完全相同的参数调整,同样上调3个单位。该修改为英特尔Granite Rapids处理器带来12.7%的性能提升,同时对Zen 5也产生了12.1%的增益效果。
目前该补丁正处于GCC邮件列表的技术审核阶段,预计将于2027年随GCC 17稳定版本正式发布,并有望回溯集成至GCC 16.3小版本中。

评论
更多评论