我最近了解了关于CPU指令重排序的有效性。但我无法理解CPU如何重新排序其指令。我的意思是编译时重新排序是可以想象的,因为编译器可以预见即将到来的代码。但对于一个按顺序读取指令的CPU,它如何看到即将到来的指令以便进行重新排序呢?
我最近了解了关于CPU指令重排序的有效性。但我无法理解CPU如何重新排序其指令。我的意思是编译时重新排序是可以想象的,因为编译器可以预见即将到来的代码。但对于一个按顺序读取指令的CPU,它如何看到即将到来的指令以便进行重新排序呢?
指令按程序顺序获取到指令队列中;从队列中解码并移动到保留站。这些保留站有效地进行重新排序:随着它们的参数可用,指令被分派到执行单元以进行执行,而所有参数可用的时间通常不对应于指令队列/内存中的顺序。
例如,使用Tomasulo算法,请参阅以下两个视频:
发射(和寄存器重命名): https://youtu.be/I2qMY0XvYHA?list=PLAwxTw4SYaPkNw98-MFodLzKgi6bYGjZs
Dispatch/reordering: https://youtu.be/bEB7sZTP8zc?list=PLAwxTw4SYaPkNw98-MFodLzKgi6bYGjZs