gpt4 book ai didi

optimization - 如果处理器支持乱序执行,那么优化数据危害是否有意义?

转载 作者:行者123 更新时间:2023-12-03 17:31:33 26 4
gpt4 key购买 nike

程序员是否仍有可能为支持完整 out-of-order executionn 的处理器优化数据危害? ?

最佳答案

能够乱序执行的处理器不一定能够消除任何数据危害。乱序执行实现可能不包括寄存器重命名,因此 WAW 和 WAR 危险将导致管道停顿。

然而,大多数现代 OoOE 处理器都实现了寄存器重命名,从而消除了 WAW 和 WAR 危害,而不是 RAW 危害。如果浮点除法指令后跟一系列需要除法结果的指令,则流水线可能会停顿很长时间。另一个示例是分支指令依赖于导致页面错误的加载指令。无论该分支的预测是否正确,重新排序缓冲区都可能变满或几乎满,可能导致停顿。如果分支被错误预测,惩罚会更高。因此,您通常不必担心注册 WAW 和 WAR 危害,但 RAW 危害很重要。

有一些技术可用于减少 RAW 危害的影响:

  • SIMD 指令可用于完全重叠多个数据元素的 WAR 依赖关系的延迟。
  • 融合包含相互独立的依赖链的循环,以便这些链可以在超标量 CPU 中并行执行。这增加了可用执行单元的利用率。
  • 使用延迟较低的指令。例如,可以用左移指令代替乘以 2 的幂的指令。

  • 通常,优化编译器能够执行这些优化,尽管它可能仍会产生次优的机器代码。

    内存依赖性也很重要。特别是,如果由于某些结构限制而无法将存储结果转发给加载,则内存 RAW 依赖项将受到惩罚。内存 WAW 和 WAR 危害没有惩罚,因为大多数处理器按程序顺序退出指令。也就是说,在具有强大内存排序模型(例如 x86)的体系结构中,通常所有存储都必须按程序顺序执行,而与 WAW 依赖关系无关。

    还有许多其他可能的性能问题。您可以引用您正在开发的处理器和/或架构的优化指南。

    关于optimization - 如果处理器支持乱序执行,那么优化数据危害是否有意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30017403/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com