单周期与多周期的比较指令流水线.ppt

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

第一讲 流水线数据通路和控制 日常生活中的流水线处理例子:洗衣服 单周期处理器模型和流水线性能比较 什么样的指令集适合于流水线方式执行 如何设计流水线数据通路 以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) 串行方式为6小时,N批则为90N分钟 复习: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) 为了流水线能顺利工作,规定: 每个功能部件每条指令只能用一次(如:写口不能用两次或以上) 每个功能部件必须在相同的阶段被使用(如:写口总是在第五阶段被使用) 解决方案1: 在流水线中插入“Bubble”(气泡) 插入“Bubble”到流水线中,以禁止同一周期有两次写寄存器。缺点: 控制逻辑复杂 第5周期没有指令被完成(CPI不是1,而实际上是2) 解

文档评论(0)

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

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

1亿VIP精品文档

相关文档