★超标量处理器的很多地方用到了重排序缓存,但是我对它不是很了解,所以我整理一下重排序缓存的知识点。
重排序缓存(ROB)在确保乱序执行的指令能够正确地完成和提交(Commit),也可以用来寄存器重命名。
ROB是一个先进先出的表,每个项是ROB表项,可以记录指令执行的信息。
ROB表项的字段
(1)Complete: 标志位,用来标记指令是否已经完成执行阶段。当指令的所有操作(包括计算、访存等)都完成,标志就会被置为“是”,指令准备好进入退休阶段。
(2)Areg:指令在程序代码中指定的目的寄存器(逻辑寄存器)。
(3)Preg:物理寄存器的编号,经过寄存器重命名后指令实际使用的物理寄存器。
(4)OPreg:Old Physical Register,记录Areg在被重命名到当前Preg之前所对应的物理寄存器编号。在指令因异常需要回滚恢复状态时,OPreg用于指向应该恢复的物理寄存器状态,确保异常处理后的状态正确。
(5)PC:指令的程序计数器(PC)值。当指令执行过程中遇到中断时,保存这个PC能够从正确的点重新开始执行程序。
(6)Exception:如果指令执行中触发了异常,字段会记录异常的类型。指令即将退休时&