记分牌
- 记分板是一种硬件机制,它通过在操作数可用且没有危险条件阻止的情况下立即执行指令来维持每周期一条指令的执行速率。
- 它用四个阶段:ID1,ID2,EX,WB代替ID,EX,WB
- 每个指令都要经过记分板,在记分板上构建数据依赖关系的记录(对应于指令发布)。
- 假设具有记分板的系统具有多个功能单元,其状态信息报告给记分板。
- 如果记分板确定一条指令不能立即执行,它将执行另一条等待指令,并继续监视硬件单元的状态,并决定该指令何时可以继续执行。
- 记分板还决定指令何时可以将其结果写入寄存器(危险检测和解决集中在记分板中)。
记分牌结构
指令执行过程
- Issue(ID1):如果用于该指令的一个功能单元是空闲的,并且没有其他活动指令具有相同的目的寄存器,则记分板向该功能单元发出该指令并更新其内部数据结构。这里解决了结构和WAW的危害。(这取代了传统MIPS流水线中ID级的一部分)。
- Read operands(ID2):记分板监视源操作数的可用性。当没有较早的活动指令写入源操作数时,源操作数是可用的。当所有源操作数可用时,记分板告诉功能单元从寄存器中读取所有操作数(不支持转发)并开始执行(此处动态解决原始危险)。这就完成了ID。
- Execution(EX):功能单元在接收到操作数时开始执行。当结果准备就绪时,它通知记分板(取代MIPS中的EX,MEM)。
- Write result(WB):一旦记分板感测到某个功能单元完成了执行,它就检查WAR危险,并在需要时停止完成指令,否则写回就完成了。
记分牌的构成
-
指令状态:指令处于4个步骤中的哪一个。
-
功能单元状态:表示功能单元(FU)的状态。
每个职能单位有九个字段:
-Busy:指示单元是否忙
-Op:在单元中执行的操作(例如,+、-)
-Fi:目标寄存器
-Fj,Fk源寄存器编号
-Qj,Qk产生源寄存器Fj,Fk的功能单元
-Rj,Rk指示Fj,Fk就绪时间的Rj,Rk标志
(在操作数可读取后设置为“是”) -
寄存器结果状态:指示哪个功能单元将写入每个寄存器,如果存在一个。当没有挂起的指令将写入该寄存器为空。