- 1、本文档共31页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
三种MIPS核心指令 1 算术逻辑运算指令(ALU instruction) 2 存储指令(load or store instruction) 3 分支指令(branch instruction) 1) 从存储器中读取指令。 2) 指令译码的同时读取寄存器。MIPS的指令格式允许指令译码和读取寄存器同时进行。 3)执行操作或地址计算。 4)在数据存储器中读取操作数。 5)将结果写回寄存器堆。 利用流水线实现MIPS指令 流水线 是一种可以降多条指令的执行过程相互重叠的实现技巧。 理想情况下,流水线化带来的加速比是流水线的级数。 流水线所带来的性能提升是通过提高指令的吞吐率来实现的,单挑指令的执行时间并没有减少。 流水线的三种冒险 结构冒险 即硬件不支持多条指令在同一时 钟周期内执行。 数据冒险 在一个操作必须等待另一个操作完成后才能进行时,流水线必须停顿,我们称这种情况为数据冒险。 控制冒险 处理器需要根据一条指令的结果做出决策,此时其他的指令可能仍在执行过程中。 五级流水线的数据通路 把指令划分为五个阶段意味着这是一个五级流水线,任意一周期内,最多五条指令在执行。 把数据通路也划分为五个部分,每部分用相应的阶段命名。 五级流水线的数据通路 1) IF:取指令。 2) ID:指令译码,读寄存器堆。 3) EX:指令执行或地址计算。 4) MEM:数据内存访问。 5) WB:写回。 五条指令对应的多时钟周期流水线图 传统表示方式下多周期流水线图 单周期数据通路图 引入流水线寄存器 从之前的流水线数据通路图可以看出,数据通路需要的值都是从上一级寄存器中流入下一级中。 我们用被这些寄存器分开的两个阶段来命名它们,如IF和ID阶段之间的流水线寄存器叫做IF/ID。 引入流水线寄存器图 流水线每级的工作 流水线中的控制 一共9条控制线,根据流水线的五个步骤将控制线分为五组: 1)取指令:读取指令内存和写PC的控制信号总是确定的,没特别需控制的。 2)指令译码/读取寄存器:每个时钟周期内这个步骤所完成的工作都是相同的,不需设置控制线。 3)指令执行/地址计算:设置的控制线有RegDst、ALUOp和ALUSrc。根据这些信号选择结果寄存器,确定ALU的操作,同时读取数据2或经过符号扩展后得到的立即数。 4)内存访问:设置的控制线有Branch、MemRead和MemWrite,这些控制信号分别由相等分支、取和存指令设定。除非控制信号指示这是一条分支指令同时ALU输出为0,将选择线性地址中的下一条指令作为PCSrc信号。 5)写回:两条控制线分别是MemtoReg和RegWrite,前者决定是将ALU结果还是将内存数据传送寄存器堆,后者记录所要写入的数据。 三种流水线冒险 结构冒险 如果由于资源争夺导致几条指令不能在同一时钟周期内执行,就称处理器中含有结构冒险。 阻塞(stall)也叫气泡(bubble),解决结构冒险的一种方式。 三种流水线冒险 数据冒险 一个操作必须等待另一个操作完成后才能进行时,流水线必须停顿,我们称这种情况为数据冒险。 转发(forward) 也叫旁路(bypass)。上一个操作的结果产生以后不必写回寄存器,直接转发给下一条指令。可以消除部分数据冒险。 阻塞(stall)当一条指令试图读取一个寄存器而它前一条指令是load指令,并且该load指令写入的是同一寄存器时,必须采用相应的机制阻塞流水线。 三种流水线冒险 分支冒险 也叫控制冒险。每周期都取指令,但对与分支指令,必须等到MEM阶段才能确定是否执行分支。这种为了确定预取正确的指令导致的延迟叫做分支冒险。 静态预测 阻塞直到分支发生完毕的速度实在太慢。比较普遍的提高分支阻塞速度的方法是假设分支不发生,继续执行;或者假定分支发生 ,跳到转移地址执行。可以将分支冒险的代价减半。 动态分支预测 查找指令的地址观察上一次执行该指令时分支是否发生,如果上次执行时分支发生就从上次分支发生的地方开始取指令。一种实现方法是采用分支预测缓存或分支历史表。 缩短分支的延迟 在流水线中提早分支指令的执行过程,就能减少需要清除的指令数,可以降低执行分支的代价。 异常 异常(exception) 是控制冒险的另一种形式。 MIPS流水线中可能发生的异常。 异常处理 可以采用与发生分支时同样的基址,清除异常后面的所有指令并且从一个新的地址开始预取指令。 许多异常要求我们最终完成那条产生异常的指令,就像没有异常一样。最简单的方法就是将这条指令消除掉,进而在异常处理的地方将这条指令重新执行一次。 异常处理的最后一步将导致异常的指令的地址保存到异常程序计数器(EPC)中。 Thanks~~ * * 经典的MIPS五级流水介绍 三种指令格式: funct sh
您可能关注的文档
最近下载
- MCN机构运营与管理模式优化方案.docx
- AOP30使用说明.pdf
- 剪映操作教程.ppt VIP
- 伦敦国际航运中心建设发展报告(2023年).docx VIP
- 天津华宁KTK101工作面及皮带使用说明书.pdf
- 8.2 重力势能 课件(共27张PPT)(含音频+视频).ppt VIP
- 中国心血管健康与疾病报告2023 .pdf
- TIA博图软件培训(内部资料).ppt VIP
- Unit 2 Looking into the Future Using Language Should we fight new technology 教学设计-2023-2024学年高中英语人教版(2019)选择性必修第一册.docx
- 中学生防拐防骗安全教育.pptx
文档评论(0)