计算机组织与结构:LEC05_动态调度.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 加法保留站 浮点寄存器 乘法保留站 DIV发射,F1, F2都准备好 MUL1发射,F0等待3号保留站的结果 ADD发射,F1, F2都准备好 MUL2发射,F0等待6号保留站的结果 浮点加/减法器 浮点乘/除法器 定点/访存 部件 指令队列 加法保留站 浮点寄存器 乘法保留站 DIV发射,F1, F2都准备好 MUL1发射,F0等待3号保留站的结果 ADD发射,F1, F2都准备好 MUL2发射,F0等待6号保留站的结果 ADD写回 浮点加/减法器 浮点乘/除法器 定点/访存 部件 指令队列 加法保留站 浮点寄存器 乘法保留站 DIV发射,F1, F2都准备好 MUL1发射,F0等待3号保留站的结果 ADD发射,F1, F2都准备好 MUL2发射,F0等待6号保留站的结果 ADD写回 DIV写回 浮点加/减法器 浮点乘/除法器 定点/访存 部件 指令队列 Tomasulo算法小结 通过动态调度缓解流水线阻塞 例如减少CACHE失效对性能的影响 保留站:重命名寄存器+缓存源操作数 避免寄存器成为瓶颈 避免WAW和WAR阻塞 缺点 硬件复杂性 结果总线成为瓶颈,多条结果总线增加硬件复杂度 在IBM 360/91后被广泛使用 动态调度、寄存器重命名等思想一直被使用:Pentium II; PowerPC 604; MIPS R10000; HP-PA 8000; Alpha 21264 动态流水线的例外处理 例外(Exception)与流水线 I/O请求:外部中断 指令例外:用户请求中断 系统调用、断点、跟踪调试指令 运算部件 整数运算溢出、浮点异常 存储管理部件 访存地址不对齐、用户访问系统空间、TLB失效、缺页、存储保护错(写只读页) 保留指令错:未实现指令 硬件错 等等 精确例外的要求: 在处理例外时,发生例外指令前面的所有指令都执行完,例外指令后面的所有指令还未执行. 非精确例外的原因: 在乱序执行时, 前面的指令发生中断时,后面的指令已经执行完并修改了寄存器或存储单元. 在下面的例子中,没有任何相关,ADDF和SUBF指令可以比DIVF先结束。如果在ADDF结束后DIVF发生例外,此时无法恢复例外现场 记分板和Tomasulo算法中都是非精确例外 只要保证后面指令修改机器状态时, 前面的指令都已经不会发生中断即可. DIVF f0,f2,f4 ADDF f10,f10,f8 SUBF f12,f12,f14 动态流水线的精确例外处理 实现精确例外处理的一个办法是把后面指令对机器状态的修改延迟到前面指令都已经执行完 有些指令在EX阶段也修改机器状态, 如运算指令修改结果状态 在执行阶段停止流水线会影响后面的指令执行 可以用一些缓冲器来临时保存执行结果, 当前面所有指令执行完后, 再把保存在缓冲器中的结果写回到寄存器或存储器 在流水线修改机器状态时(在执行或写回阶段)写到缓冲器 增加提交(Commit)阶段, 把缓冲器的内容写回到寄存器或存储器 提交阶段只有前面指令都结束后才能进行 有序提交:乱序执行, 有序结束 所用的缓冲器通常被称为Reorder Buffer(ROB) 在猜测执行中也用上述机制 都是在某些情况不确定的情况下先执行, 但留有反悔的余地 硬件支持动态流水线的精确例外处理 内容: 目标地址(存数地址或寄存器号)、 值、 操作类型 写回时写回到ROB, 因此后面指令有可能从ROB读操作数 使用ROB号作为重命名号(原来使用保留站号), 一条指令的结果寄存器被重命名为其结果ROB号 保留站重命名源寄存器号, ROB重命名结果寄存器号 提交时把结果写回寄存器或存储器 只要一条指令没有提交, 它就不会对寄存器或存储器的内容进行修改, 在一条指令没有提交之前很容易取消该指令(由于前面指令发生了例外或由于猜测执行不正确) ROB可以和Write Buffer合并 Reorder Buffer (ROB) 发射:把操作队列的指令根据操作类型送到保留站(如果保留站以及ROB有空),并在ROB中指定一项作为临时保存该指令结果之用;发射过程中读寄存器的值和结果状态域,如果结果状态域指出结果寄存器已被重命名到ROB,则读ROB 执行:如果所需的操作数都准备好,则执行,否则根据结果ROB号侦听结果总线并接收结果总线的值 写回:把结果送到结果总线,释放保留站;ROB根据结果总线修改相应项 提交:如果队列中第一条指令的结果已经写回且没有发生例外,把该指令的结果从ROB写

文档评论(0)

学习让人进步 + 关注
实名认证
文档贡献者

活到老,学到老!知识无价!

1亿VIP精品文档

相关文档