网站大量收购独家精品文档,联系QQ:2885784924

第7章 指令流水线.ppt

  1. 1、本文档共129页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第7章 指令流水线

Ch7: Instruction Pipeline 指令流水线 第一讲 流水线数据通路和控制 日常生活中的流水线处理例子:洗衣服 单周期处理器模型和流水线性能比较 什么样的指令集适合于流水线方式执行 如何设计流水线数据通路 以MIPS指令子集来说明 如何设计流水线控制逻辑 分析每条指令执行过程中的控制信号 给出控制器设计过程 流水线冒险的概念 复习:A Single Cycle Processor 复习:Multiple Cycle Processor MCP: 一个功能部件在一个指令周期中可以被使用多次。 复习:Timing Diagram of a Load Instruction 一个日常生活中的例子—洗衣服 Laundry Example Ann, Brian, Cathy, Dave each have one load of clothes to wash, dry, and fold Washer takes 30 minutes Dryer takes 40 minutes “Folder” takes 20 minutes Sequential Laundry(串行方式) 串行方式下, 4 批衣服需要花费 6 小时(4x(30+40+20)=360分钟) N批衣服,需花费的时间为Nx(30+40+20) = 90N 如果用流水线方式洗衣服,则花多少时间呢? Pipelined Laundry: (Start work ASAP) 串行为90分钟x4=6小时 N批则为90xN分钟 复习:Load指令的5个阶段 Ifetch (取指) : 取指令并计算PC+4 (用到哪些部件?) Reg/Dec (取数和译码) : 取数同时译码 (用到哪些部件?) Exec (执行) : 计算内存单元地址 (用到哪些部件?) Mem (读存储器) : 从数据存储器中读 (用到哪些部件?) Wr(写寄存器): 将数据写到寄存器中 (用到哪些部件?) 单周期指令模型与流水模型的性能比较 假定以下每步操作所花时间为: 取指:2ns 寄存器读:1ns ALU操作:2ns 存储器读:2ns 寄存器写:1ns 单周期模型 每条指令在一个时钟周期内完成 时钟周期等于最长的lw指令的执行时间,即:8ns 串行执行时,N条指令的执行时间为:8Nns 流水线性能 时钟周期等于最长阶段所花时间为:2ns 每条指令的执行时间为: 2nsx5=10ns N条指令的执行时间为:(4+N)x2ns 在N很大时,比串行方式提高约 4 倍 若各阶段操作均衡(例如,各阶段都是2ns),则提高倍数为5倍。 流水线指令集的设计 具有什么特征的指令集有利于流水线执行呢? 长度尽量一致,有利于简化取指令和指令译码操作 MIPS指令32位,下址计算方便: PC+4 X86指令从1字节到17字节不等,使取指部件极其复杂 格式少,且源寄存器位置相同,有利于在指令未知时就可取操作数 MIPS指令的rs和rt位置一定,在指令译码时就可读rs和rt的值 若位置随指令不同而不同,则需先确定指令类型才能取寄存器编号 load / Store指令才能访问存储器,有利于减少操作步骤,规整流水线 lw/sw指令的地址计算和运算指令的执行步骤规整在同一个周期 X86运算类指令操作数可为内存数据,需计算地址、访存、执行 内存中”对齐”存放,有利于减少访存次数和流水线的规整 总之,规整、简单和一致等特性有利于指令的流水线执行 Load指令的流水线 R-type指令的4个阶段 Ifetch: 取指令并计算PC+4 Reg/Dec: 从寄存器取数,同时指令在译码器进行译码 Exec: 在ALU中对操作数进行计算 Wr: ALU计算的结果写到寄存器 含R-type和 Load 指令的流水线 上述流水线有个问题: 两条指令试图同时写寄存器,因为 Load在第5阶段用寄存器写口 R-type在第4 阶段用寄存器写口 把一个功能部件同时被多条指令使用的现象称为结构冒险(Struture Hazard) 为了流水线能顺利工作,规定: 每个功能部件每条指令只能用一次(如:写口不能用两次或以上) 每个功能部件必须在相同的阶段被使用(如:写口总是在第五阶段被使用) R-type的Wr操作延后一个周期执行 加一个NOP阶段以延迟“写”操作: 把“写”操作安排在第5阶段, 这样使R-Type的Mem阶段为空NOP Store指令的四个阶段 Ifetch:取指令并计算PC+4 Reg/Dec: 从寄存器取数,同时指令在译码器进行译码 Exec:16位立即数符号扩展后与寄存器值相加,计算主存地址 Mem:将寄存器读出的数据写到主存 Beq的四个阶段 Ifetch: 取指令并计算PC

文档评论(0)

5500046 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档