驱动之家 21小时前
初代Zen的“性能毒瘤”被LLVM拔掉了!编译优化让老锐龙CPU回春
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_keji1.html

 

快科技 8 月 27 日消息,LLVM/Clang 编译器昨天合入了一项针对 AMD 初代 Zen 架构的重要优化补丁,专门解决了 Zen 1、Zen+ 及 Zen 2 处理器中 " 臭名昭著 " 的 PDEP/PEXT 指令性能问题。

编译工程师 Simon Pilgrim 基于对这些指令在实际运行中高昂成本的性能分析,重构了 znver1/znver2 目标下的指令调度逻辑。

PDEP(并行位存入)和 PEXT(并行位提取)是 BMI2 扩展指令集中的两条位操作指令,常用于数据库、加密算法以及国际象棋、数独等游戏场景。

问题在于,初代 Zen 架构采用微码方式实现这两条指令,性能表现远不如硬件原生实现的预期,不仅延迟极高(实测可达约 150 个时钟周期),还会占用大量 ALU 流水线和 uops 资源。

此前编译器仅用 "WriteMicrocoded" 标签简单标记,完全无法反映其对流水线的真实冲击。

随着 LLVM 即将开始生成 llvm.pdep/pext 内联函数并向量化相关实现,编译器社区必须为老平台做出更明智的调度决策。

Simon Pilgrim 根据 uops.info 和 Agner 的实测数据,取最坏情况的平均值作为调度依据,至少让调度器有了 " 可以工作的参考值 "。

目前该补丁已合并至 LLVM 主线。对于仍在用锐龙 1000/2000 系列处理器跑编译任务或高性能计算的老平台用户来说,这次编译器层面的优化意味着未来程序在执行位操作密集型任务时,将获得更合理的指令调度,避免因 PDEP/PEXT 的高延迟拖累整体性能。

【本文结束】如需转载请务必注明出处:快科技

责任编辑:红茶

宙世代

宙世代

ZAKER旗下Web3.0元宇宙平台

一起剪

一起剪

ZAKER旗下免费视频剪辑工具

相关标签

锐龙 amd 数据库 工程师
相关文章
评论
没有更多评论了
取消

登录后才可以发布评论哦

打开小程序可以发布评论哦

12 我来说两句…
打开 ZAKER 参与讨论