内容提要 。流水线技术原理:4.5 。RV的五级流水线实现:4.6 。Hazard问题:4.5.2 一结构冲突:哈佛结构 -数据依赖:4.7 ·编译技术:插入nop,指令重排,寄存器重命名 ·forwarding技术:RAW 。Interlock技术:Stall -控制相关:4.8 ·编译技术:延迟分支 ·硬件优化:提前完成,投机,预测 。多发射技术:4.10 ·硬件多线程:6.4
内容提要 • 流水线技术原理:4.5 • RV的五级流水线实现:4.6 • Hazard问题:4.5.2 – 结构冲突:哈佛结构 – 数据依赖:4.7 • 编译技术:插入nop,指令重排,寄存器重命名 • forwarding技术:RAW • Interlock技术:Stall – 控制相关:4.8 • 编译技术:延迟分支 • 硬件优化:提前完成,投机,预测 • 多发射技术:4.10 • 硬件多线程:6.4
Scep R-Type Bw/ow 成,Memg PC=PC+4 D A=ReI25-21 B=e2H2015 beq指令完成时间? ALUOut .PC+(SEDR[15-0]1 <<2) EX ALUCut=Aop B ALLOu If (A==B)PC=PC[31-28] A+5夏15-0D PCAL0t时25-02 MEM Reg IR|15-111= MDR=Mem[ALUOut] ALUO九u MemALUOut■B wB RegfiR[20-16]]=MDR 以哪一条指令为基址? ·能否在EXE完成? IF/D ID/EX EX/MEM MEM/WB ALU ALU memory d u memory 6 图4-39
beq指令完成时间? • 以哪一条指令为基址? • 能否在EXE完成? 图4-39
beg branch hazard:stall? Program Time (in clock cycles) execution CC 1 CC2 CC3 CC 5 CC 6 CC 7 CC 8 CC9 order (in instructions) taken/not taken 40beq$1,$3,72 Reg 延迟槽(delay slot)=3 排空(flush) 44and$12,$2,$5 Reg M Reg 480r$13,s6,$2 M Reg 52add$14,s2,$2 IM Reg 72Iw$4,50(s7) 图4-59 R 1 “相对于数据相关,分支频率低,没有好方案”! llxx@ustc.edu.cn 4
llxx@ustc.edu.cn 4 beq branch hazard:stall? R e g R e g C C 1 T im e (in c lo c k c y c le s ) 4 0 b e q $ 1 , $ 3 , 72 P ro g ra m e x e c u tio n o rd e r (in in s tru c tio n s ) IM R e g IM D M IM D M IM D M D M D M R e g R e g R e g R e g R e g IM R e g 4 4 a n d $ 1 2 , $ 2 , $ 5 4 8 o r $ 1 3 , $ 6 , $ 2 5 2 a d d $ 1 4 , $ 2 , $ 2 7 2 lw $ 4 , 5 0 ($ 7 ) C C 2 C C 3 C C 4 C C 5 C C 6 C C 7 C C 8 C C 9 R e g taken/not taken 延迟槽(delay slot)= 3 排空(flush) “相对于数据相关,分支频率低,没有好方案”! 图4-59
beq:not taken与taken taken:flush Clear UP bubble down PCSre EX/MEM Control MEMMB EX IFAD Shin Branch left 1 ALUSre 图4-49 Address Instruction ALU ALU Read memory Reaister Address Write result data u Data memory Write data Instruction 31-0 32 Flushed Continued 64 MemRead ALU add $r1.$r2,$r3 sw Sr1,0($r2) sub $r1,$r2.Sr3 Beg Sr2,Sr5,0x08 sit Sr1,$r2,Sr3 D141 Instruction ALUOp IF ID EX MEM WB 111-7刀 Instruction flow
5 beq:not taken与taken 图4-49 taken:flush = Clear UP bubble down!
减小beq损失:单周期分支 Flushed Continued add Sr1.5r2,5r3 sw1,0r2) sUb51,5r2,33 hw Sr1,0(Sr2) slt Sr1,5r2.$r3 Flushed Continued IF ID EX MEM WB add Sr1.$r2.Sr3 Beq Sr2.Sr5.0x08 sw Sr1,0(Sr2) sub Sr1,Sr2.Sr3 sit Sr1.Sr2,Sr3 ←---Flushed---- Add Sr1,$r2,Sr4 Add Sr2 Sr2,Sr3 Beq Sr2.Sr5 Lw Sr2.0x04(Sr0)Lw Sr4.Ox0d(Sro) IF EX MEM WB IF ID EX MEM WB Instruction flow Instruction flow Program execution 200 400 600 800 1000 1200 1400 Time order (in instructions) 图4-29 add x4,x5,x6 Instruction Reg ALU Data fetch access Reg 只需Stall-一个cc! beq x1,x0,40 Instruction Data 200ps fetch Reg ALU access Reg bubble bubble bubble bubble bubble 0 or x7,x8,x9 Instruction 400ps Reg ALU Data fetch access Reg
减小beq损失:单周期分支 图4-29 只需Stall一个cc!