《4、流水线数据相关处理教学课件.pptx》由会员分享,可在线阅读,更多相关《4、流水线数据相关处理教学课件.pptx(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、流水线数据相关处理谭志虎1指令流水线的相关、冲突、冒险(hazard)n 资源相关p 争用主存:IF段取指令、ID段取操作数p 争用ALU:多周期方案中计算PC、分支地址,运算指令 p 解决方案:增加部件消除n 分支相关p 控制IF段进行分支跳转p 提前取出的指令作废,流水线清空n 数据相关p 指令操作数依赖于前一条指令的执行结果 ADD $s1, $s2, $s3p 引起流水线停顿直到数据写回 ADD $s4, $s1, $s32数据相关CLKCLKCLKIF/IDID/EXALUZeroResultADDADDR1#寄存器文件RD1DinR2#RD2W#MUX01符号扩展MUX01ADDR
2、指令存储器RD4PCEX/MEMMEM/WB左移2位ADDR数据存储器RDWD立即数Write Reg#1632CLKCLKCLKCLK指令MUX01ALU.ResultPC+4ALU.ResultRD1RD2add $3,$1,$2or $1,$1,$2lw $1,4($2)n ID段所需数据可能还未及时写回,涉及EX、MEM、WB段3条指令MEM.ReadData译码ID执行EX访存MEM写回WB取指令IFand $1,$1,$23数据相关处理机制u软件方法(编译器完成)u 插入空指令u 调整程序顺序,使相关性在流水线中消失u硬件方法u 插入气泡(空操作)p 向后段插入气泡(接口信号清零)
3、p 向前给出阻塞信号(流水线停顿)避免当前指令被新指令取代u 数据重定向bypass(数据旁路)u将后端处理后的数据(还没来得及写回)重定向u数据在哪就从哪送到运算器4ID段与WB段数据相关消除先写后读,寄存器文件下跳沿写入,流水接口上跳沿有效CLKCLKCLKIF/IDID/EXALUZeroResultADDADDR1#寄存器文件RD1DinR2#RD2W#MUX01符号扩展MUX01ADDR指令存储器RD4PCEX/MEMMEM/WB左移2位ADDR数据存储器RDWD立即数Write Reg#1632CLKCLKCLKCLK指令MUX01ALU.ResultPC+4ALU.ResultR
4、D1RD2add $3,$1,$2lw $1,4($2)MEM.ReadData译码ID执行EX访存MEM写回WB取指令IF5ID段与MEM段数据相关IF段,ID段暂停等待数据写回,EX段插入气泡CLKCLKCLKIF/IDID/EXALUZeroResultADDADDR1#寄存器文件RD1DinR2#RD2W#MUX01符号扩展MUX01ADDR指令存储器RD4PCEX/MEMMEM/WB左移2位ADDR数据存储器RDWD立即数Write Reg#1632CLKCLKCLKCLK指令MUX01ALU.ResultPC+4ALU.ResultRD1RD2add $3,$1,$2lw $2,4
5、($2)MEM.ReadData译码ID执行EX访存MEM写回WB取指令IFand $1,$1,$2or $3,$1,$2暂停stall插入气泡正确数据6ID段与MEM段数据相关下一时刻数据相关变成与WB段相关CLKCLKCLKIF/IDID/EXALUZeroResultADDADDR1#寄存器文件RD1DinR2#RD2W#MUX01符号扩展MUX01ADDR指令存储器RD4PCEX/MEMMEM/WB左移2位ADDR数据存储器RDWD立即数Write Reg#1632CLKCLKCLKCLK指令MUX01ALU.ResultPC+4ALU.ResultRD1RD2add $3,$1,$2
6、MEM.ReadData译码ID执行EX访存MEM写回WB取指令IFand $1,$1,$2or $3,$1,$2nop7ID段与EX段数据相关IF段,ID段暂停等待数据写回,EX段插入气泡CLKCLKCLKIF/IDID/EXALUZeroResultADDADDR1#寄存器文件RD1DinR2#RD2W#MUX01符号扩展MUX01ADDR指令存储器RD4PCEX/MEMMEM/WB左移2位ADDR数据存储器RDWD立即数Write Reg#1632CLKCLKCLKCLK指令MUX01ALU.ResultPC+4ALU.ResultRD1RD2add $3,$1,$2lw $2,4($2
7、)MEM.ReadData译码ID执行EX访存MEM写回WB取指令IFand $3,$1,$2or $1,$1,$2暂停stall插入气泡正确数据8ID段与EX段数据相关CLKCLKCLKIF/IDID/EXALUZeroResultADDADDR1#寄存器文件RD1DinR2#RD2W#MUX01符号扩展MUX01ADDR指令存储器RD4PCEX/MEMMEM/WB左移2位ADDR数据存储器RDWD立即数Write Reg#1632CLKCLKCLKCLK指令MUX01ALU.ResultPC+4ALU.ResultRD1RD2add $3,$1,$2MEM.ReadData译码ID执行EX
8、访存MEM写回WB取指令IFand $3,$1,$2or $1,$1,$2暂停stallnop下一时刻相关变成与MEM段相关插入气泡正确数据9ID段与EX段数据相关CLKCLKCLKIF/IDID/EXALUZeroResultADDADDR1#寄存器文件RD1DinR2#RD2W#MUX01符号扩展MUX01ADDR指令存储器RD4PCEX/MEMMEM/WB左移2位ADDR数据存储器RDWD立即数Write Reg#1632CLKCLKCLKCLK指令MUX01ALU.ResultPC+4ALU.ResultRD1RD2add $3,$1,$2MEM.ReadData译码ID执行EX访存M
9、EM写回WB取指令IFor $1,$1,$2nop再下一时刻相关变成与WB段相关nop10I4数据相关流水线时空图I1I2I3I4I5I5I5I6I7I1I2I3I4I5I6I1I2I4I5I1I2I4I1I2I3时间tIFIDEXMEM空间sWBI2I3流水线暂停两个时钟周期T2T3T4T5T6T7T8T9T0I4I3I3I1I7I6I5I4I8I411数据相关处理总结n ID段与WB段相关p 寄存器文件先写后读(下跳沿写入)n ID段与EX、MEM段数据相关p 在ID段增加数据相关检测逻辑p IF段,ID段暂停,应该给出PC和ID/EX的阻塞信号stall(低电平有效,流水线停顿)u控制P
10、C写使能,IF/ID流水接口写使能u需要增加IF/ID流水接口的写使能接口p ID向EX段插入一个气泡 (给出ID/EX接口同步清零信号)p 下一时刻如果相关解除,暂停信号,气泡信号也自然解除12数据相关检测逻辑n 相关检测逻辑p ID段当前指令读寄存器与后续2条指令写寄存器相同u(ID.ReadReg# = EX.WriteReg#) & ( EX.RegWrite=1)u(ID.ReadReg# = MEM.WriteReg#) & (MEM.RegWrite=1)u0号寄存器不考虑相关性n ID段包括02个源寄存器:R1,R2 是否使用标识:R1_Used,R2_Usedp R型指令u运
11、算指令2个源操作数R1#=rs, R2#=rtusyscall指令 2个源操作数 R1#=$v0, R2#=$a0uJr 指令1个源操作数 R1#=rsp I型指令 12两个源操作数 R1#=rs, R2#=rtn 不同类型指令包含写入01个写入寄存器13数据相关处理实验n 实现数据相关检测逻辑p 构建源寄存器使用情况子电路u输入:OP,Funct,输出:R1_Used, R2_Used,可利用控制器真值表自动生成p 构建数据相关检测逻辑子电路u输入:R1 _Used, R2 _Used,R1#,R2#,EX.WriteReg#, MEM.WriteReg#,RegWriteu输出:数据相关信号n 实现IF,ID段暂停逻辑p 利用数据相关信号控制对应部件写使能,低电平有效n 实现EX段插入气泡逻辑p 利用数据相关信号控制ID/EX接口的同步清零信号n 测试联调p 先测试数据相关测试程序.hex,最后测试benchmark,要求统计运行周期数等运行参数14数据相关测试程序15Benchmark运行结果与周期数统计p 指令条数 (流水充满时间 1)(分支跳转次数) * 预取深度 数据相关气泡数谭志虎下节课再见s t a n h u s t . e d u . c n