【问题标题】:In what cases does out-of-order execution result in more efficient code在什么情况下乱序执行会产生更高效的代码
【发布时间】:2010-10-17 11:32:48
【问题描述】:

我试图了解Memory barrier 的工作原理、使用原因以及应在什么情况下使用。但是我不完全确定在什么情况下安排指令的顺序会更有效,谁能给我一个例子?

【问题讨论】:

    标签: compiler-construction cpu compiler-optimization


    【解决方案1】:

    它有用的一种情况是浮点计算 - 这些通常比“正常”指令花费更长的时间,因此 CPU 将这些指令在多条指令上运行到一侧很有用,而其他正常的程序指令发生在主 ALU 中。

    它还有助于保持所有流水线处于活动状态 - 一些 CPU 具有多个指令流水线(例如,一个专门用于分支,一对专门用于算术运算符,一对用于浮点和 SIMD 指令)。对指令重新排序可以让 CPU 保持所有流水线都是满的,而不是为几条指令留空,从而加快程序执行速度。

    即使对于单个流水线,重新排序指令也可以通过删除连续的相关指令来帮助保持流水线满 - 请参阅 http://en.wikipedia.org/wiki/Instruction_pipeline

    【讨论】:

    • 谢谢,管道对我来说很有意义
    猜你喜欢
    • 2021-12-25
    • 2011-07-08
    • 2019-03-26
    • 2014-08-23
    • 2012-09-07
    • 2017-03-25
    • 2020-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多