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

Tom*_*nto 4 compiler-construction cpu compiler-optimization

我试图了解内存屏障是如何工作的,为什么使用它以及在什么情况下应该使用它.但是我不完全确定在什么情况下安排指令顺序会更有效率,有人能给我一个例子吗?

the*_*oop 5

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

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

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