- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
流水线的性能 通过更加复杂的流水线和动态调度开发隐形(implicit)指令级并行性 乱序执行执行,同时保证: 真数据相关(RAW) 精确中断 通过寄存器换名,消除WAR和WAW冒险 重排序缓冲器(Reorder buffer)保存尚未提交(committing)但已完成的结果,以支持精确中断 频繁出现的转移指令会产生控制冒险,从而限制性能的改进 指令流水线的总体结构 控制流导致的性能损失 MIPS的转移和跳转 深度指令流水线中的转移损失 降低转移损失 转移预测 静态转移预测 动态转移预测learning based on past behavior 转移预测位Branch Prediction Bits 转移历史表Branch History Table 开采转移的空间关联Yeh and Patt, 1992 两级转移预测器 BHT局限性 转移目标缓冲器(Branch Target Buffer) 地址冲突(Address Collisions) BTB仅对控制指令有效 Branch Target Buffer (BTB) 在译码前查询BTB 合并BTB和BHT 相对BHT而言,BTB的表项的实现成本更高,但是可以在流水线较早的时候就对取指流进行重定向,并能够加速间接转移(JR) BHT可以包含更多的表项,并更加准确 跳转寄存器(JR)的使用 切换状态 (jump to address of matching case) 动态过程调用 (jump to run-time function address) 子程序返回 (jump to return address) 子程序返回栈(Subroutine Return Stack) 专设一个小的结构来加速针对子程序返回的JR处理,通常比BTBs会更加准确. 错误预测的恢复 按序执行机器: 假设在转移解决之前,没有该转移之后发射的指令会回写结果(write-back) 将错误预测转移之后的所有指令都删除 支持精确中断的按序提交 流水线中的转移错误预测 Recovering ROB/Renaming Table 双向推测执行 “Data in ROB” Design(HP PA8000, Pentium Pro, Core2Duo) Unified Physical Register File(MIPS R10K, Alpha 21264, Pentium 4) 物理寄存器的生命期 物理寄存器的管理 物理寄存器的管理 物理寄存器的管理 物理寄存器的管理 物理寄存器的管理 物理寄存器的管理 物理寄存器的管理 物理寄存器的管理 Reorder Buffer HoldsActive Instruction Window … ld r1, (r3) add r3, r1, r2 sub r6, r7, r9 add r3, r3, r6 ld r6, (r1) add r6, r6, r3 st r6, (r1) ld r6, (r1) … 超标量处理器的寄存器重命名 超标量处理器的寄存器重命名 存储器相关 st r1, (r2) ld r3, (r4) 何时能够执行load指令? 按序存储队列(In-Order Memory Queue) 按程序序执行所有的load和store操作 = 在之前的所有存储和装入指令完成之前,Load和store指令不能离开ROB执行 希望对Load和Store指令进行推测执行,并与其他指令乱序执行 保守的Load乱序执行 st r1, (r2) ld r3, (r4) 将Store指令的执行分解为两个阶段:地址计算、数据写入 如果地址已知,并可以确认r4 != r2,就可以在Store之前执行load指令 每个load地址都需要与所有之前未确认的STORE之前的地址进行比较(可以使用部分保守比较,例如地址的低12位) 如有之前的任何STORE指令有地址尚不确定,就不能执行 load (MIPS R10K, 16 entry address queue) 地址推测(Address Speculation) 猜设 r4 != r2 在store地址未知情况先,执行load指令 需要按程序序保存所有完成但未提交的load/store地址 如果后续发现 r4==r2,碾压掉load及后续所有的指令 = 如果地址猜测不准确,损失可能会很大! Memory Dependence Prediction(Alpha 21264) st r1, (r2) ld r3, (r4) Guess that r4 != r2 and execute load before store If later find
文档评论(0)