- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态调度 (Cont), 推断执行和ILP Review Tomasulo 引入动态调度的动机 在没有专用编译器的情况下,提高系统性能 解决编译时无法判定的部分相关问题 Scoreboard 和Tomasula Tomasula 主要贡献 Dynamic scheduling Register renaming---消除了WAW,WAR相关 Load/store disambiguation 算法的主要缺陷 复杂 要求高速CDB 性能受限于Common Data Bus 为什么顺序发射? 顺序发射使我们可以进行程序的数据流分析 我们可以知道某条指令的结果会流向哪些指令 如果我们乱序发射,可能会混淆RAW和WAR相关 每一周期发射多条指令也使用该原则将会正确地工作: 需要多端口的 “rename table” ,以便同时对一组指令所用的寄存器重命名 需要在单周期内发射到多个RS中. 寄存器文件需要有2x 个读端口和x个写端口. 关于异常处理??? 乱序完成加大了实现精确中断的难度 在前面指令还没有完成时,寄存器文件中可能会有后面指令的运行结果. 如果这些前面的指令执行时有中断产生,怎么办? 例如: DIVD F10, F0, F2 SUBD F4, F6, F8 ADDD F12, F14, F16 需要“rollback” 寄存器文件到原来的状态: 精确中断的含义是其返回地址为: 该地址之前的所有指令都已完成 其后的指令还都没有完成 实现精确中断的技术:顺序完成(或提交) 即提交指令完成的顺序必须与指令发射的顺序相同 进行循环重叠执行需要尽快解决分支问题! 在循环展开的例子中,我们假设整数部件可以快速解决分支问题,以便进行循环重叠执行! Loop: LD F0 0 R1 MULTD F4 F0 F2 SD F4 0 R1 SUBI R1 R1 #8 BNEZ R1 Loop 如果分支依赖于multd,怎么办?? 需要能预测分支方向 如果分支成功,我们就可以重叠执行循环 对于superscalar机器这一问题更加突出 控制相关的动态解决技术 控制相关:由条件转移或程序中断引起的相关,也称全局相关。控制相关对流水线的吞吐率和效率影响相对于数据相关要大得多 条件指令在一般程序中所占的比例相当大 中断虽然在程序中所占的比例不大,但中断发生在程序中的哪一条指令,发生在一条指令执行过程中的哪一个功能段都是不确定的 处理好条件转移和中断引起的控制相关是很重要的。 关键问题: 要确保流水线能够正常工作 减少因断流引起的吞吐率和效率的下降 分支对性能的影响 假设在一条有K段的流水线中,在最后一段才能确定目标地址 条件转移指令对流水线性能的影响 假设对于一条有K段的流水线,由于条件分支的影响,在最坏情况下,每次条件转移将造成k-1个时钟周期的断流。假设条件分支在一般程序中所占的比例为p, 条件成功的概率为q。试分析分支对流水线的影响。 结论:条件转移指令对流水线的影响很大,必须采取相关措施来减少这种影响。 预测可以是静态预测“Static” (at compile time) 或动态预测 “Dynamic” (at runtime) 动态分支预测 vs. 静态分支预测,哪个好? Dynamic Branch Prediction 动态分支预测:预测分支的方向在程序运行时刻动态确定 需解决的关键问题是: 如何记录转移历史信息 如何根据所记录的转移历史信息,预测转移的方向 主要方法 基于BPB(Branch Prediction Buffer)或BHT(Branch History Table)的方法 1-bit BHT和2-bit BHT Correlating Branch Predictors Tournament Predictors: Adaptively Combining Local and Global Predictors High Performance Instruction Delivery BTB Integrated Instruction Fetch Units Return Address Predictors Performance = ?(accuracy, cost of misprediction) Misprediction ? Flush Reorder Buffer 1-bit BHT Branch History Table: 分支指令的PC的低位索引1-bit BHT 该表记录上一次转移是否成功 不做地址检查 例题:一个循环供循环10次,它将分支成功9次,1次不成功,假设此分支的预测位始终在缓冲区中,那么分支预测的准确性是多少? 静态预测 vs. 动态预测
原创力文档


文档评论(0)