记分牌控制的四阶段(1/2) 1 issue.指令译码,检测结构相关 如果当前指令所使用的功能部件空闲,并且没有其他活动 的指令使用相同的目的寄存(WAW),记分牌发射该指令到 功能部件,并更新记分牌内部数据,如果有结构相关或wAW 相关,则该指令的发射暂停,并且也不发射后继指令,直到 相关解除 2. Read operands一没有数据相关时,读操作数 如果先前已发射的正在运行的指令不对当前指令的源操作数 寄存器进行写操作,或者一个正在工作的功能部件已经完成 了对该寄存器的写操作,则该操作数有效。操作数有效时, 记分牌控制功能部件读操作数,准备执行。 记分牌在这一步动态地解决了RAW相关,指令可能会乱序执 行 计算机体系结构
2021/2/7 计算机体系结构 37 记分牌控制的四阶段(1/2) • 1.Issue—指令译码,检测结构相关 – 如果当前指令所使用的功能部件空闲,并且没有其他活动 的指令使用相同的目的寄存器(WAW), 记分牌发射该指令到 功能部件,并更新记分牌内部数据,如果有结构相关或WAW 相关,则该指令的发射暂停,并且也不发射后继指令,直到 相关解除. • 2. Read operands—没有数据相关时,读操作数 – 如果先前已发射的正在运行的指令不对当前指令的源操作数 寄存器进行写操作,或者一个正在工作的功能部件已经完成 了对该寄存器的写操作,则该操作数有效。操作数有效时, 记分牌控制功能部件读操作数,准备执行。 – 记分牌在这一步动态地解决了RAW相关,指令可能会乱序执 行
记分牌控制的四阶段(2/2) 3 Execution-取到操作数后执行(EX 接收长料潮作数,功生于热的出结果 4. Write result--finish execution WB) 旦记分牌得到功能部件执行完毕的信息后,记分牌 检测MAR相关,如果没有WAR相关,就写结果,如果有 WAR相关,则暂停该条指令。 Example: DIVD FO F2.F4 ADDD F10.F0 F8 SUBD F8. F8. F14 CDC6600 scoreboard将暂停SUBD直到ADDD读取操 作数后,才进入WR段处理。 计算机体系结构
2021/2/7 计算机体系结构 38 记分牌控制的四阶段(2/2) • 3.Execution—取到操作数后执行 (EX) – 接收到操作数后,功能部件开始执行. 当计算出结果 后,它通知记分牌,可以结束该条指令的执行. • 4.Write result—finish execution (WB) – 一旦记分牌得到功能部件执行完毕的信息后,记分牌 检测WAR相关,如果没有WAR相关,就写结果,如果有 WAR 相关,则暂停该条指令。 – Example: DIVD F0,F2,F4 ADDD F10,F0,F8 SUBD F8,F8,F14 – CDC 6600 scoreboard 将暂停 SUBD 直到ADDD 读取操 作数后,才进入WR段处理
记分牌的结构 1 nstruction status记录正在执行的各条指令所处的状态步 2 Functional unit status-记录功能部件(FU的状态。用9个域 记录每个功能部件的9个参量: Busy指示该部件是否空闲 0p-该部件所完成的操作 F其目的寄存器编号 F,Fk-源寄存器编号 Q,Qk-产生源操作数F,Fk的功能部件 R,Rk-标识源操作数F,Fk是否就绪的标志 3 Register result status-如果存在功能部件对某一寄存器进行 写操作,指示具体是哪个功能部件对该寄存器进行写操作 如果没有指令对该寄存器进行写操作,则该域为B|ank 计算机体系结构
1.Instruction status—记录正在执行的各条指令所处的状态步 2.Functional unit status—记录功能部件(FU)的状态。用9个域 记录每个功能部件的9个参量: Busy—指示该部件是否空闲 Op—该部件所完成的操作 Fi—其目的寄存器编号 Fj, Fk—源寄存器编号 Qj, Qk—产生源操作数Fj, Fk的功能部件 Rj, Rk—标识源操作数Fj, Fk是否就绪的标志 3.Register result status—如果存在功能部件对某一寄存器进行 写操作,指示具体是哪个功能部件对该寄存器进行写操作。 如果没有指令对该寄存器进行写操作,则该域 为Blank 2021/2/7 计算机体系结构 39 记分牌的结构
记分牌流水线控制 Instruction status Wait until Bookkeeping Busy(FU)←yes;Op(FU←-op; Issue Not busy(FU) and Fi(FU)←D;Fj(FU←`S1 not result(D) Fk(U)<S2: Qj< Result(S1) Qk←- Result(S2);R← not Qj; Rk←- not Qk; Result(oD)←FU Read Ri and Rk operands 网j←-No;RkNo ExecutionFunctional unit complete done Vf(Fj(f*Fi(FU) Write result or Rj(f=No)& Vf(if Qj(f=FU then rj(f< Yes) (Fk()tFi(FU)or Vf(if Qk(f=FU then rk(f<Yes Rk( f=Non Result(Fi(F∪)←-0;Busy(FU∈-No 计算机体系结构
Read operands Execution complete Instruction status Write result Issue Bookkeeping Rj No; Rk No f(if Qj(f)=FU then Rj(f) Yes); f(if Qk(f)=FU then Rk(f) Yes); Result(Fi(FU)) 0; Busy(FU) No Busy(FU) yes; Op(FU) op; Fi(FU) `D’; Fj(FU) `S1’; Fk(FU) `S2’; Qj Result(‘S1’); Qk Result(`S2’); Rj not Qj; Rk not Qk; Result(‘D’) FU; Rj and Rk Functional unit done Wait until f((Fj( f )≠Fi(FU) or Rj( f )=No) & (Fk( f ) ≠Fi(FU) or Rk( f )=No)) Not busy (FU) and not result(D) * 2021/2/7 计算机体系结构 40 记分牌流水线控制
Scoreboard Example Instruction status Read Executi Write Instruction j k Issue operand complet Result LD F6 34+ R2 LD F2 45+ R3 MULTIFO F2 F4 SUBD F8 F6 F2 DⅣDF10F0F6 ADDD F6 F8 F2 Functional unit status dest S1 S2 FU forj FU for k Fj? Fk? Time Name Busy O Qk Rk Integer No Mult1 No Add Divide No Register result status Clock F0 F2 F4 F6 F8 F10 F12 F30 FU 计算机体系结构 41
Instruction status Read ExecutionWrite Instruction j k Issue operandscompleteResult LD F6 34+ R2 LD F2 45+ R3 MULTDF0 F2 F4 SUBD F8 F6 F2 DIVD F10 F0 F6 ADDD F6 F8 F2 Functional unit status dest S1 S2 FU for j FU for k Fj? Fk? Time Name Busy Op Fi Fj Fk Qj Qk Rj Rk Integer No Mult1 No Mult2 No Add No Divide No Register result status Clock F0 F2 F4 F6 F8 F10 F12 ... F30 FU 2021/2/7 计算机体系结构 41 Scoreboard Example