我最近读到了关于CPU指令重新排序的效率。但我无法理解CPU如何重新调整其指令。我的意思是编译时重新排序是可以想象的,因为编译器可以预见即将到来的代码。但对于一个接一个地读取指令的CPU,它如何看待即将重新排序的指令
答案 0 :(得分:5)
以程序顺序将指令提取到指令队列中;从队列中解码并移入预订站。这些保留站有效地进行重新排序:当执行单元的参数可用时,指令被分派执行单元执行,所有参数变为可用的时间通常与指令队列/内存中的顺序不对应。
例如,使用Tomasulo Algorithm,请参阅以下两个视频:
问题(和注册重命名): https://youtu.be/I2qMY0XvYHA?list=PLAwxTw4SYaPkNw98-MFodLzKgi6bYGjZs
调度/重排序: https://youtu.be/bEB7sZTP8zc?list=PLAwxTw4SYaPkNw98-MFodLzKgi6bYGjZs
答案 1 :(得分:4)
指令按顺序解码,但它们会进入正在进行的"正在进行的处理"说明。如果满足其依赖性,说明可以向前推进。
例如,说明说明是:
可能是最后两条指令同时进行,如果寄存器B的存储器读取先完成(可能已经在L1高速缓存中),则寄存器B的增量将在寄存器A的增量。(当然,在该指令被解码之后。)