流水线的“hazard冒险”问题 结构相关:当指令在重叠执行的过程中,硬件资源 满足不了指令重叠执行的要求,发生资源冲突时将 产生结构相关。 数据相关:当一条指令需要用到前面指令的执行结 果,而这些指令均在流水线中重叠执行时,就可能 引起数据相关。 ·控制相关:当流水线遇到分支指令和其他会改变P℃ 值的指令时,会发生控制相关。 ·LP:资源confict,.数据dependency,控制penalty llxx@ustc.edu.cn 7
llxx@ustc.edu.cn 7 流水线的“hazard冒险”问题 • 结构相关:当指令在重叠执行的过程中,硬件资源 满足不了指令重叠执行的要求,发生资源冲突时将 产生结构相关。 • 数据相关:当一条指令需要用到前面指令的执行结 果,而这些指令均在流水线中重叠执行时,就可能 引起数据相关。 • 控制相关:当流水线遇到分支指令和其他会改变PC 值的指令时,会发生控制相关。 • ILP:资源confict,数据dependency,控制penalty
访存结构相关 ·假设单存储器 (单端口),则同一周期内并发取指 与读写数据存在冲突 C 4 C5 C6 C7 C8 Data Lines Control Lines ALU Address Lines LOAD 正 REG REG M Do Do : P 指令1 ALU REG REG Da-l Dol M M M 0 Ao Ao m e ALU 指令 正 REG E REG M r M Am-1 Am-1 y r 指令3 ALU 正 REG 正 REG RW M xI Clock Clock llxx@ustc.edu.cn 8
llxx@ustc.edu.cn 8 访存结构相关 • 假设单存储器(单端口),则同一周期内并发取指 与读写数据存在冲突
流水线stall(停顿,阻塞)语义 C C2 C3 C5 C6 LOAD MEM REG ALU MEM REG 指令1 REG ALU MEM MEM REG ALU MEM REG 指令2 MEM REG ALU MEM REG MEM REG 指令3 程序行为:等价于插入一条nop Time Clock cycle ppl行为:stretch&delay,使流水线停顿一拍 Load R2.(R3) D M W “freeze up&bubble down”:interlock F段停顿 Subtract R9.R2.#30 F D C M ·PC不变,重复取指:IFID清零=插入气泡(bubble) 9
9 流水线stall(停顿,阻塞)语义 • 程序行为:等价于插入一条nop • ppl行为:stretch & delay,使流水线停顿一拍 – “freeze up & bubble down”:interlock – IF段停顿 • PC不变,重复取指;IF/ID清零 = 插入气泡(bubble) MEM REG ALU MEM REG MEM REG ALU MEM REG MEM REG ALU MEM REG MEM REG ALU MEM REG C1 C2 C3 C4 C5 C6 C7 C8 LOAD 指令1 指令2 指令3
IF与MEM结构冲突消除:哈佛结构 F/D ID/EX EX/ME日M MEM/WB Add Su 51h e ag如r1 d Instructon ALU momory memory d由 Wrte dta Gon Load Ifetch Reg Exec Mem W wSw是否存在D$冲突? Store Ifetch Reg Exec Mem 10
llxx@ustc.edu.cn 10 IF与MEM结构冲突消除:哈佛结构 lw/sw是否存在D$冲突?
Iw-Rtype结构冲突(RF写端口冲突)消除 ·规定:R-type指令在WB段完成 Load Ifetch Reg Exec Mem W Load Ifetch Reg Exec Mem Wr R-type Ifetch Reg Exec Wr R-type Ifetch Reg Exec Mem Wr Store Ifetch Reg Exec Mem load Reg2,A WB Program Time (in clock cycles) F ID EX WB execution CC1 CC2 CC3 CC4 CC5 CC6 CC7 CC8 CC9 MEM order (in instructions) 1dx10,40x1j Register file ubx11.2.x3 mul Reg3,Reg4,Reg5 add x12.x3.x4 WB F D EX MEM WB 1dx13.48(x1) cycle time time add x14.x5.x6 RF“两读一写”,写端口冲突!
lw-Rtype结构冲突(RF写端口冲突)消除 • 规定:R-type指令在WB段完成 RF“两读一写”,写端口冲突!