在什么情况下,无序执行会导致更高效的代码

时间:2010-10-17 11:32:48

标签: compiler-construction cpu compiler-optimization

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

1 个答案:

答案 0 :(得分:5)

其中一个有用的情况是浮点计算 - 这些通常需要比'普通'指令花费更长的时间,因此CPU通过多条指令将这些指令运行到一侧非常有用,而其他正常程序指令则发生在主要的ALU。

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

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