好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Tomasulo详细教程.doc

11页
  • 卖家[上传人]:M****1
  • 文档编号:418410905
  • 上传时间:2022-10-20
  • 文档格式:DOC
  • 文档大小:408.50KB
  • / 11 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 选自快乐飞翔 的百度空间,是一份很好的总结,这里打成 pdf,希望能起到更好的学术交流作用 flyi ng00001/blog/item/bfc2e682c469dbb46c81193c.html一流水线的静态调度与动态调度提高流水线的效率指令流水线的执行方式会产生流水线的冲突和保护1对寄存器访问的竞争是影响流水线保护和延迟的主要原因如果出现要对某寄存器读取/写入的时候, 前一指令对该寄存器的写操作/读操作还未完成的情况,就会造成流水线保护和延迟2对存储器访问的竞争也是影响流水线保护和延迟的重要原因3指令缓冲队列也有可能造成流水线保护和延迟 ,流水线的竞争定义:流水线竞争是流水线中造成下一条指令不能在指令时钟周期被执行的情 况.流水线竞争的后果----造成流水线停顿几个周期,从而降低流水线效率.流水线竞争种类结构竞争:资源冲突(不支持某些指令组合)数据竞争:后续指令的执行依赖于前面指令的执行结果控制竞争:因转移或修改 PC引起的竞争流水线的动态调度有许多优势1能调度在编译时不可能知道的竞争情况2符合程序执行的实际情况3具有更高的效率和准确性 4简化编译程序设计5 代码的移植性强 缺点就是控制硬件比较复杂二 动态调度静态调度的缺点虽然可以通过旁路控制机构, 编译技术调度指令序列, 分开具有相关性的指令来 使竞争数目和性能损失减小到最低程度。

      但是不可避免的数据相关是不可能完全 消除的竞争还会存在所以需要使用流水线的动态调度动态调度的一大优势就是: 能够在数据相关时,避免暂停流水线动态调度的重要点就是:流水线的乱序执行, 指令的发射是乱序的, 指令的完成 也有可能是乱序的由于流水线允许多条指令在同一时刻执行 所以流水线结构需要改变,功能单元 也需要改变了静态调度与动态调度 :静态调度: 根据软件的行为特征进行优化来编译调度指令代码次序, 主要依据程 序未执行时的行为特征和统计数据进行的调度策略动态调度: 通过硬件在程序执行时重新安排代码的执行序列来减少竞争引起的流 水线停顿时间动态调度流水线具备以下功能:(1) 允许按序取多条指令和发射多条指令 取指 (IF) 流水级允许按顺序取多条指令进入单口暂存器 (single-entry latch) 或队列 (queue), 指令然后从 latch或 queue 取出,进入 ID 节拍2) 能检查并消除 hazards 将 ID 流水级分为独立的两级: Issue 级和 Readoperand 级:Issue 级功能 指令译码,检查是否存在结构竞争 ( 即在这一流水级解决结构竞争问题);Read operands 级功能----等到无数据竞争(RAW)后,读出操作数,即在这一流水级解决数据竞争问题记分牌动态调度算法 记分牌是一集中控制部件, 其功能是控制数据寄存器与处理部件之间的数据传送。

      在记分牌中保存有与各个处理部件相联系的寄存器中的数据装载情况 当一个处 理部件所要求的数据都已就绪(装载完毕),记分牌允许处理部件开始执行当 执行完成后, 处理部件通知记分牌释放相关资源 所以在记分牌中记录了数据寄 存器和多个处理部件状态的变化情况,通过它来检测和消除或减少数据相关性, 加快程序执行速度目的:在无资源竞争的前提下保持每一个时钟周期执行一条指令的速率思想方法:尽可能提早指令的执行 当一条指令暂停执行时, 如果其他后继指令与暂停指令 及已发射的指令无任何相关,则仍然可以发射,执行记分牌的功能指令发射和执行竞争检测和消除每一条指令都要经过记分牌 (记录在“指令状态表”中) ,即发射到记分牌数据 结构中; 纪录数据相关性,把源和目的操作数记录在“功能单元状态表”中; 决 定指令何时可读出操作数(检测是否有 RAW竞争)决定指令何时可以开始执行(一旦操作数就绪,立即开始执行);若某条指令不能立即执行, 则由记分牌监控硬件的每一变化, 并决定何时才能开 始执行;控制指令何时能将结果写入目的寄存器(即检测是否有 WAR竞争)任务:控制指令的发射和执行在 RISC 处理器中,记分牌主要针对的是浮点操作。

      因此将指令的执行分为 4 级:1 发射级指令的功能部件没有结构竞争和没有 WAV竞争的时候,则这条指令可以发射将 会把指令发射到相应的功能部件, 同时修改记分牌的内部数据结构 如果存在结 构竞争或者是存在 VAV竞争时候,指令暂停发射2读操作数记分牌监控源操作数是否就绪一个源操作数就绪的条件为:早前发射的活动指令对该操作数不进行写入操作(即无 RAW竞争)含有操作数之一的寄存器,就是该活动功能单元即将写入的寄存器, 如SUBDF8,F8, F14.(即也不会出现 RAW竞争)记分牌在这一步解决了 RAW竞争问题当源操作数准备就绪,记分牌通知功能单元读出操作数,并开始执行检测RAW,若有,则停顿该指令,但是在动态调度时,有多条指令并行操作,所 以可能有另外指令满足条件,则继续执行下去,从而消除了停顿的损失3执行功能单元开始对操作数执行操作 当得到“结果”后,功能单元通知记分牌该操作已执行完毕4写结果检查是否有 WARS争,如果存在,则暂停指令否则就写入寄存器记分牌在各执行步骤中需检测和记录的事件折令fl流水Si的功腌■礦 WK的審hzd杠 曲皿心lUn闵竹的出式化描述如El箪怜囲迩聚忙SfifllL ~曲 tXrS fl F U> Hnd0j>y|Fu)< Yn: Opl^U? < -C0.FiffUJ lF FiQFU) 13(1 *32 . QH 尺輕Ok< RcMitt'S?), Ri -r not C3]OR; Rb«uII[ U~> -Ni>_ hl® Ob Oi Q1 i-

      器改名就很容易了虚拟寄存器集在 Tomasulo方法中由每一功能单元所带的保留站( reservationstation) 和取数缓冲区(Load buffers )和存数缓冲区(Store buffers )组成取数缓冲区( Load buffers ) 保存被访问的存储单元的数据和地址浮点寄存器( FP registers ) 通过一对总线( operand buses )与每一功能单元相连接,这一对总线分别对应两个操作数通过一条总线与存数缓冲区( Store buffer )相连接,功能单元的输出和 Load Buffer 的输出汇总在 CDB 与浮点寄存器( FP register 的输入相连接公共数据总线 Common data bus(CDB) CDB 与 FP registers, reservationstations 和 Store buffers 等输入相连,唯一无连接关系的是 Load buffers 的 输入 ( 实际上是正常数据通路 +forwarding path)保留站和所有 Buffers 都含有标识域, 用来消除竞争 (标识域代表虚拟寄存器号)Tomasulo 方法在每一流水级的功能 :1. 发射级( Issue )若是一条 FP 操作指令,如果保留站有空,则将其送往保留站;如果该指令的操 作数已在 FP 寄存器,将操作数的值送往保留站。

      若是一条 Load 或 Store 指令,如果 buffer 有空,将其送往相应的 Buffer ,若 保留站或 buffers 不空,则存在结构竞争, 停顿该指令直到对应保留站或 buffer 有空为止本流水级同时完成寄存器改名过程,因为保留站中的操作数不再使用寄存器号2. 执行级( Execute )若有一个或几个操作数未就绪,等待计算该操作数,同时监控 CDB一旦操作数就绪,立即存入相应的保留站;若两个操作数均已就绪,则执行该操作 本步同时检查是否存在 RAW竞争3. 写结果级( Write Result )当结果算出后,将其写入CDB,并从CDB写入目的寄存器以及等待此结果的相应 保留站当连续写同一寄存器时,只有最后一次才能写入Tomasulo 方法中指令在不同流水级的功能的形式化描述:rstv■出■ —— ―—L ■」.O%忧WT州戒ll(Pegi34«|SljQ*^0){RSjrJ q ^-Reflt&terlST] 0" 创释St 何jD);if{口帥* gz Fl呦朋菲釧①} «

      当指令开始操作时, 不必再从浮点寄存器中读取操作数的值那些未就绪的操作数称为挂起操作数, 挂起操作数的寄存器号在保留站中采用将要提供该操作数的保留站名,或取数缓冲区名来表示这个过程称为 registerren ami ng (寄存器换名),由issue logic (发射逻辑硬件)完成一旦被挂起 操作数由某功能单元算出后, 或在取数缓冲区就绪后, 可通过CDB立即送往需要的保留站当出现对某寄存器进行相继写入操作时, 只允许最后一次写操作可以更新该。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.