代码之家  ›  专栏  ›  技术社区  ›  TomHastjarjanto

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

  •  4
  • TomHastjarjanto  · 技术社区  · 16 年前

    我试着理解 Memory barrier 有效,为什么要使用它,在什么情况下应该使用它。然而,我不完全确定在什么情况下安排指令的顺序会更有效,有人能给我举个例子吗?

    1 回复  |  直到 16 年前
        1
  •  5
  •   thecoop    16 年前

    其中一个很有用的例子是浮点运算——这些运算通常比“普通”指令要花更长的时间,因此CPU可以将这些指令运行到多个指令的一边,而其他普通程序指令则发生在主ALU中。

    它还可以帮助保持所有管道的活动状态—一些CPU具有多条指令管道(例如,一条专门用于分支,一对专门用于算术运算符,一对专门用于浮点和SIMD指令)。重新排序指令允许CPU保持所有的管道满,而不是让一个空的用于几个指令,这样可以加快程序的执行速度。

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