【发布时间】:2016-12-27 23:25:18
【问题描述】:
我最近阅读了有关 CPU 指令重新排序以提高效率的文章。但我无法理解 CPU 如何重新排序其指令。我的意思是编译时重新排序是可以考虑的,因为编译器可以预见即将到来的代码。但是对于一个接一个读取指令的 CPU,它如何看待即将到来的指令来重新排序它们
【问题讨论】:
-
与阅读句子时看到即将出现的单词的方式相同:向前看一点。
-
它的读取速度比执行速度要快,因此它可以看到即将执行的指令窗口。有关详细信息,请参阅 x86 tag wiki 中的一些链接,例如 Agner Fog 的 microarch pdf,以及 David Kanter's writeup of Intel's Haswell design。当然,如果您只是简单地在 Google 上搜索“乱序执行”,您会找到 the wikipedia article,您应该阅读它。
-
我的意思是,我对汇编代码了解不多,但据我记得,每条指令基本上都在内存中,所以如果如上所述,CPU 的读取速度比它更快执行,它可以只是跟随指令的内存位置,并期待。这不是事实,这只是我的假设,我自己也没有想过。
-
我写了an answer on another question,详细介绍了像 Haswell 这样的现代 x86 CPU 内核如何发现和利用乱序执行的指令级并行性。
标签: multithreading assembly cpu