- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
定向逻辑(有更多的情况要考虑)如果定向目标是ALU输入:(1) 比较的一头是ALU的两个输入,即ID/EX的 IR6..10 和 IR11..15(2) 定向源在EX段产生(R-R ALU, ALU立即值) ▲ 结果在WB段被写入目标寄存器 ▲ 随后的两条指令都可以通过定向获得该结果 ▲ 比较的另一头是EX/MEM和MEM/WB的IR11..15 (3) 定向源在MEM段产生(LOAD指令) ▲ 比较的另一头是MEM/WB的IR11..15 ◆ 所有的定向发生在: ALU或DM输出 → ALU输入,DM输入,“O”检测部件 3.3.3 流水线的控制相关 1. 分支指令的执行结果 一、分支引起的暂停及减少分支开销的方法 ◆ 转移失败:PC值加4◆ 转移成功:将PC值改变为转移目标地址 到MEM段的末尾才改变 一旦检测到分支指令(在ID段),就暂停执行其后的指令,直到分支指令到达MEM段,确定出新的PC值为止。 2. 处理分支指令最简单的方法 3. 减少分支开销的两种途径 在DLX流水线中,分支转移成功导致暂停3个时钟周期。 若分支指令的频度为30%,理想CPI=1, 则 实际CPI=1+30%×3≈2 ◆ 在流水线中尽早判断分支转移是否成功; ---在分支不成功时有利;◆ 转移成功时,尽早计算出转移目标地址。 ---在分支成功时有利; 对于DLX作如下改进:(1) 把“=0?”测试移至ID段; 二、程序中分支的行为特点 (2) 在ID段增设一个加法器,这样可以把分支 开销减少一拍。 改进后流水线的分支操作 (表3.6) 1.各种能改变PC值的指令的执行频度 (SPEC基准程序,DLX上执行)◆ 条件分支 整数程序:14%~15% 浮点程序:3%~12% ◆ 向前分支与向后分支的比: 3∶1 2.条件分支转移成功的概率 ◆ 无条件分支 绝大多数:≤4% ◆ 平均值 ▲ 整数程序 向前:13% 无条件:4% 向后:3% ▲ 浮点程序 向前:7% 无条件:1% 向右:3% 所有条件分支:67% 向前:60% 向后:85% (向后分支一般形成循环) 三、减少流水线分支损失的方法 (4种简单的静态方法) 1. “冻结”或“排空”流水线 在流水线中停住或删除分支后的指令, 直到知道转移目标地址。 优点:简单。 2.预测分支失败 ◆ 流水线继续照常流动,就像没发生什么似的。 ◆ 在知道分支结果之前,分支指令后的指令不 能改变机器状态,或者改变了之后能够回退。◆ 若分支失败,则照常执行;否则,从转移目 标处开始取指令执行。 DLX流水线的处理过程 3. 预测分支成功 ◆ 假设分支转移成功,并开始从分支目标地址 处取指令执行。 ◆ 起作用的前题:先知道分支目标地址,后知 道分支是否成功。 ◆ 对DLX流水线没有任何好处。 4. 延迟分支 (delayed branch) (1) 基本概念 把分支开销为n 的分支指令看成是延迟长 度为n 的分支指令,其后紧跟有n 个延迟槽。 流水线遇到分支指令时,按正常方式处理,顺 带执行延迟槽中的指令,从而减少分支开销。 延迟分支以及指令的执行顺序 (2) 具有一个分支延迟槽的DLX流水线的执行过程 分支延迟槽中的指令“掩盖”了流水线原来 必需插入的暂停周期。 (3) 分支延迟指令的调度(编译器) 任务:在延迟槽中放入有用的指令 ◆ 三种调度方法 ▲ 从前调度 (最好) ▲ 从目标处调度 ▲ 从失败处调度 ◆ 这三种方法的要求及效果 ◆ 延迟分支调度受到的限制 ▲ 对放入延迟槽的指令有限制 ▲ 编译器预测分支是否成功的能力 若条件不满足?---填入NOP指令 ◆ 进一步改进:引入“取消分支”(当三种调度的条件均不满足时,预测一个方向并填入指令) 若预测方向正确,正常执行延迟槽中的指令; 否则,将之变为no-op指令。 “预测成功-取消”分支的执行过程 四、各种分支处理方法的性能 1. 假设: 理想CPI=1 则流水线的加速比为: S= T非流水/T流水=D/(1+C)=D/(1+f×p分支) D ─
文档评论(0)