欢迎来到天天文库
浏览记录
ID:48348554
大小:679.00 KB
页数:31页
时间:2020-01-18
《经典MIPS五级流水介绍.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、经典的MIPS五级流水介绍三种MIPS核心指令1算术逻辑运算指令(ALUinstruction)2存储指令(loadorstoreinstruction)3分支指令(branchinstruction)三种指令格式:oprsrtrdshamtfunctR型I型oprsrtconstantoraddressJ型opaddress五种寻址模式:1)寄存器寻址,操作数是寄存器2)基址或偏移寻址,操作数在内存中,其地址是指令中基址寄存器和常数的和。3)立即数寻址,操作数是指令中的常数.4)PC相对寻址,地址是PC计数器和指令中常数的和。5)伪直接寻址,跳转地址是指令中26位和
2、PC计数器的高位相连而成五种MIPS寻址模式的图示:1.立即数寻址oprsrtimmediate2.寄存器寻址oprsrtrd…funct寄存器3.基址寻址oprsrtaddress+寄存器半字字内存字节五种MIPS寻址模式的图示:4.PC相对寻址oprsrtaddressPC+○字5.伪直接寻址opaddressPC..字内存通常,一条MIPS指令包含的五个处理步骤:1)从存储器中读取指令。2)指令译码的同时读取寄存器。MIPS的指令格式允许指令译码和读取寄存器同时进行。3)执行操作或地址计算。4)在数据存储器中读取操作数。5)将结果写回寄存器堆。利用流水线实现MI
3、PS指令流水线是一种可以降多条指令的执行过程相互重叠的实现技巧。理想情况下,流水线化带来的加速比是流水线的级数。流水线所带来的性能提升是通过提高指令的吞吐率来实现的,单挑指令的执行时间并没有减少。流水线的三种冒险结构冒险即硬件不支持多条指令在同一时钟周期内执行。数据冒险在一个操作必须等待另一个操作完成后才能进行时,流水线必须停顿,我们称这种情况为数据冒险。控制冒险处理器需要根据一条指令的结果做出决策,此时其他的指令可能仍在执行过程中。五级流水线的数据通路把指令划分为五个阶段意味着这是一个五级流水线,任意一周期内,最多五条指令在执行。把数据通路也划分为五个部分,每部分用
4、相应的阶段命名。1)IF:取指令。2)ID:指令译码,读寄存器堆。3)EX:指令执行或地址计算。4)MEM:数据内存访问。5)WB:写回。五级流水线的数据通路五条指令对应的多时钟周期流水线图传统表示方式下多周期流水线图单周期数据通路图引入流水线寄存器从之前的流水线数据通路图可以看出,数据通路需要的值都是从上一级寄存器中流入下一级中。我们用被这些寄存器分开的两个阶段来命名它们,如IF和ID阶段之间的流水线寄存器叫做IF/ID。引入流水线寄存器图流水线每级的工作流水线中的控制一共9条控制线,根据流水线的五个步骤将控制线分为五组:1)取指令:读取指令内存和写PC的控制信号总
5、是确定的,没特别需控制的。2)指令译码/读取寄存器:每个时钟周期内这个步骤所完成的工作都是相同的,不需设置控制线。3)指令执行/地址计算:设置的控制线有RegDst、ALUOp和ALUSrc。根据这些信号选择结果寄存器,确定ALU的操作,同时读取数据2或经过符号扩展后得到的立即数。4)内存访问:设置的控制线有Branch、MemRead和MemWrite,这些控制信号分别由相等分支、取和存指令设定。除非控制信号指示这是一条分支指令同时ALU输出为0,将选择线性地址中的下一条指令作为PCSrc信号。5)写回:两条控制线分别是MemtoReg和RegWrite,前者决定是
6、将ALU结果还是将内存数据传送寄存器堆,后者记录所要写入的数据。信号名称设为0时的效果设为1时的效果RegDst写入寄存器的目标编号来自rt字段(20:16)写入寄存器的目标号来自rd字段(15:11)egWrite无将写入数据的输入写入至写入寄存器输入对应的寄存器ALUSrcR第二个ALU操作数来自第二个寄存器堆的输出(读出数据2)第二个ALU操作数为已符号化扩展的指令低16位PCSrcPC的值替换为计算PC+4的加法器的输出PC的值置为计算分支目标地址的加法器的输出MemRead无输入地址对应的数据内存的内容放置到读出数据的输出MemWrite无输入地址对应的数据
7、内存的内容替换为写入数据的输入MemtoRegALU提供寄存器写数据的输入值数据内存提供寄存器写数据的输入值三种流水线冒险结构冒险如果由于资源争夺导致几条指令不能在同一时钟周期内执行,就称处理器中含有结构冒险。阻塞(stall)也叫气泡(bubble),解决结构冒险的一种方式。○三种流水线冒险数据冒险一个操作必须等待另一个操作完成后才能进行时,流水线必须停顿,我们称这种情况为数据冒险。转发(forward)也叫旁路(bypass)。上一个操作的结果产生以后不必写回寄存器,直接转发给下一条指令。可以消除部分数据冒险。阻塞(stall)当一条指令试图读取
此文档下载收益归作者所有