一方面,维基百科介绍了乱序执行的步骤:
另一方面,已知现代CPU可以重新排序内存操作以加速性能(例如,两个相邻的独立加载指令可以被重新排序)。维基百科在这里写了相关内容。
您能否解释一下这种差异?
- 指令获取。
- 指令分派到指令队列(也称为指令缓冲区或保留站)。
- 指令在队列中等待其输入操作数可用。然后允许该指令在早于它的、更老的指令之前离开队列。
- 将指令发出到适当的功能单元,并由该单元执行。
- 结果排队等待。
- 只有在所有更老的 指令将其结果写回寄存器文件之后,才会将此结果写回寄存器文件。这被称为毕业或退休阶段。
类似的信息可以在《计算机组成与设计》书中找到:
据我了解,即使指令执行是按照乱序方式进行的,它们的执行结果也会被保存在重新排序缓冲区中,然后按照确定的顺序提交到内存/寄存器中。为了使程序表现得好像它们在简单的按顺序管道上运行一样,指令获取和解码单元需要按顺序发布指令,这允许跟踪依赖关系,而提交单元需要按程序获取顺序将结果写入寄存器和内存。这种保守模式称为按顺序提交... 今天,所有动态调度的管道都使用按顺序提交。
另一方面,已知现代CPU可以重新排序内存操作以加速性能(例如,两个相邻的独立加载指令可以被重新排序)。维基百科在这里写了相关内容。
您能否解释一下这种差异?