正文内容 评论(0)
快科技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的高延迟拖累整体性能。
- 热门文章
- 换一波
- 好物推荐
- 换一波
- 关注我们
-
微博:快科技官方
快科技官方微博 -
今日头条:快科技
带来硬件软件、手机数码最快资讯! -
抖音:kkjcn
科技快讯、手机开箱、产品体验、应用推荐...

