只改一行代码让 GCC 性能暴涨 12%,适用于现代英特尔与 AMD 处理器
It之家2小时前
IT之家 6 月 24 日消息,英特尔软件工程师 Lili Cui 发现,在 GNU 编译器套件(GCC)的通用 x86 调优代码中修改一行参数,即可为现代英特尔和 AMD 处理器带来可观的性能提升。该补丁已于今日被合并至 GCC Git 主线仓库中,预计将随 2027 年发布的 GCC 17 稳定版一同推出。此次修改的核心在于调整了编译器在通用调优模式下的分支预测错误成本(branch misprediction cost)参数。具体而言,该参数从 COSTS_N_INSNS (2) 增加至 COSTS_N_INSNS (2) + 3,将分支预测失败代价参数上调为原来的三倍。由于现代 CPU 的拥有更深的管线(pipeline),分支预测失败导致的管线停顿代价更为高昂,适当提高该参数有助于编译器在生成代码时更积极地进行分支优化,从而避免因预测失败引发的性能损失。这一改动主要惠及那些使用通用 x86 调优目标、而非通过 -march=native 等选项针对具体 CPU 微架构进行编译的场景。性能测试数据表明,在 SPEC CPU 2017 的 544.nab_r 基准测试中,仅此一项改动就使英特尔 Granite Rapids(至强 6)的性能提升 12.7%,AMD Zen 5 架构处理器的性能提升 12.1%。该补丁在提交过程中也经过了 AMD 方面的基准测试验证。GCC 是目前 Linux 生态系统中应用最为广泛的编译器之一,其通用调优目标服务于大量未针对特定 CPU 型号进行编译优化的软件。此次小幅调参带来的性能增益,意味着众多使用默认编译选项的应用程序有望在搭载现代英特尔至强或 AMD EPYC 处理器的服务器环境,以及配备酷睿 Ultra 或锐龙处理器的桌面与移动平台上获得免费性能提升,无需对软件本身做任何修改。