计算机体系结构-第4章-流水线技术.ppt
文本预览下载声明
3.5 流水线的实现 流水实现的数据通路 3.5 流水线的实现 寄存器的命名形式为:x.y 所包含的字段的命名形式为:x.y[s] 其中:x:流水寄存器名称 y:具体寄存器名称 s:字段名称 例如: ID/EX.IR:流水寄存器ID/EX中的子寄存器IR IRID/EX.IR[op]:该寄存器的op字段(即操作码字段) 流水寄存器的作用 将各段的工作隔开,使得它们不会互相干扰。 保存相应段的处理结果。 3.5 流水线的实现 例如: EX/MEM.ALUo:保存EX段ALU的运算结果 MEM/WB.LMD:保存MEM段从数据存储器读出的数据 向后传递后面将要用到的数据或者控制信息 所有有用的数据和控制信息每个时钟周期 会随着指令在流水线中的流动往后流动一段。 增加了向后传递IR和从MEM/WB.IR回送到通用寄存 器组的连接。 将对PC的修改移到了IF段,以便PC能及时地加 4,为取下一条指令做好准备。 3.5 流水线的实现 每一个流水段进行的操作 IR[rs]=IR6..10 IR[rt]=IR11..15 IR[rd]=IR16..20 流水段 流水线的每个流水段的操作 所有指令类型 ALU 指令 load/store 指令 分支指令 IF ID EX IF/ID.IR ← Mem[PC] IF/ID.NPC, PC ← (if(( EX/MEM.IR[op] == branch ) EX/MEM.cond){EX/MEM.ALUo} else {PC+4}); ID/EX.A ← Regs[IF/ID.IR[rs]];ID/EX.B ← Regs[IF/ID.IR[rt]]; ID/EX.NPC ← IF/ID.NPC;ID/EX.IR ←IF/ID.IR; ID/EX.Imm ← (IF/ID.IR16)16##IF/ID.IR16..31; EX/MEM.IR ← ID/EX.IR; EX/MEM.ALUo ← ID/EX.A func ID/EX.B 或 EX/MEM.ALUo ← ID/EX.A op ID/EX.Imm; EX/MEM.IR ← ID/EX.IR; EX/MEM.ALUo ← ID/EX.A + ID/EX.Imm; EX/MEM.B←ID/EX.B; EX/MEM.IR ← ID/EX.IR; EX/MEM.ALUo ← ID/EX.NPC + ID/EX.Imm2; EX/MEM.cond ← (ID/EX.A ==0); (动画演示) (动画演示) (动画演示) (动画演示) (动画演示) 流水段 任何指令类型 ALU 指令 load/store 指令 分支指令 MEM WB MEM/WB.IR ←EX/MEM.IR; MEM/WB.ALUo ← EX/MEM.ALUo; MEM/WB.IR ← EX/MEM.IR; MEM/WB.LMD ← Mem[EX/MEM.ALUo]; 或 Mem[EX/MEM.ALUo] ← EX/MEM.B; Regs[MEM/WB.IR[rd]] ← MEM/WB.ALUo; 或 Regs[MEM/WB.IR[rt]] ← MEM/WB.ALUo; Regs[MEM/WB.IR[rt]] ← MEM/WB.LMD; 流水线的每个流水段的操作 (动画演示) (动画演示) (动画演示) (动画演示) 3.5 流水线的实现 流水线的控制 主要是如何控制4个多路选择器。 MUX2:若ID/EX.IR中的指令是分支指令,则选择ID/EX.NPC,否则选ID/EX.A。 MUX3:若ID/EX.IR中的指令是寄存器-寄存器型ALU指令,则选ID/EX.B,否则选ID/EX.Imm。 MUX1:若EX/MEM.IR中的指令是分支指令,而且EX/MEM.cond为真,则选EX/MEM.ALUo,即分支目标地址,否则选PC+4。 MUX4:若MEM/WB.IR中的指令是load指令,则选MEM/WB.LMD,否则选MEM/WB.ALUo。 3.5 流水线的实现 第5个多路器:从MEM/WB回传至通用寄存器组的写入 地址应该是从MEM/WB.IR[rd] 和MEM/WB.IR[rt]中选 一个。 寄存器-寄存器型ALU指令:选择MEM/WB.IR[rd] ; 寄存器-立即数型ALU指令和load指令:选择MEM/WB.IR[rt] 。 解决数据冲突的问题 所有的数据冲突均可以在ID段检测到。 如果存在数据冲突,就在
显示全部