Fai*_*lde 5 cpu assembly multithreading
我最近读到了关于CPU指令重新排序的效率.但我无法理解CPU如何重新调整其指令.我的意思是编译时重新排序是可以想象的,因为编译器可以预见即将到来的代码.但对于一个接一个地读取指令的CPU,它如何看待即将重新排序的指令
指令按顺序解码,但它们随后进入“进行中”指令的集合。如果满足它们的依赖关系,指令可以向前推进。
例如,假设指令是:
可能是最后两条指令同时进行,如果寄存器 B 的内存读取首先完成(可能它已经在 L1 缓存中),那么寄存器 B 的增量将在寄存器增量之前发生A.(当然,在该指令被解码之后。)
指令以程序顺序提取到指令队列中; 从队列中解码并移动到保留站.这些保留站有效地进行重新排序:当它们的参数变得可用时,指令被分派用于执行到执行单元,并且所有参数变得可用的时间通常不对应于指令队列/存储器中的顺序.
例如,使用Tomasulo算法,请参阅以下两个视频:
问题(和注册重命名):https: //youtu.be/I2qMY0XvYHA?list = PLAwxTw4SYaPkNw98-MFodLzKgi6bYGjZs
调度/重新排序:https://youtu.be/bEB7sZTP8zc? list = PLAwxTw4SYaPkNw98 -MFodLzKgi6bYGjZs
归档时间: |
|
查看次数: |
705 次 |
最近记录: |