第八章 流水线技术.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
在处理机内部需要有独立的取指令、分析指令和执行指令的功能部件,将传统处理机中的指令控制器分解成为三个独立的控制器:存储控制器:负责流水线中各功能段对存储器的访问控制包括取指令、取操作数、写回运算结果指令控制器:完成取指令部件和分析指令部件的控制运算控制器:对运算器的执行加以控制 2. 动态调度在程序执行过程中,由硬件重新安排指令的执行顺序,以减少流水线停顿的方法。CDC记分牌法Tomasulo动态指令调度算法 分析下面的源代码:for (i=1;i=1000;i++)x[i]=x[i]+s 分析: 每一遍循环之间不存在相关,多遍循环可以同时执行 给变量分配寄存器 R1初值为向量中最高端地址元素的地址 F2用于保存常数S 假定最低端元素的地址为8 循环展开和指令调度时要注意: 保证正确性 注意有效性 使用不同的寄存器 尽可能减少循环控制中的测试指令和分支指令 注意对存储器数据的相关性分析 注意产生新的相关周期 LOOP: LDF0,0(R1)1LDF6,-8(R1)2LDF10,-16(R1)3LDF14,-24(R1)4ADDF4,F0,F25ADDD F8,F6,F26ADDD F12,F10,F27ADDD F16,F14,F28SD0(R1),F49SD-8(R1),F810SD-16(R1),F1211SUBR1,R1,#3212BJNE R1,LOOP13SD8(R1),F1614 展开循环体调度后: 说明:由于SUB指令中将R1内容减去32,因此最后的SD指令需偏移8,方可得到原来的-24 整个循环使用了14个时钟周期 8.4 流水线的调度 8.4 流水线的调度◆ 在ID段检测是否需要启动Load互锁需要进行三种比较 ◆ 当检测到相关后,控制部件必须在流水线中 插入暂停周期,并使IF和ID段中的指令停止 前进。 将ID/EX中的控制部分清“O”。 IF/ID内容回送到其自身入口。 定向逻辑◆ 有更多的情况要考虑◆ 关键思路:流水线寄存器不仅包含数据,而且包含源寄存器和目的寄存器地址(字段) 8.3 流水线中的相关 ◆ 所有的定向发生在:ALU或DM输出 →ALU输入,DM输入,“O”检测部件 (图示) 8.3.8 流水线的控制相关 1. 分支指令的执行结果 一、分支引起的暂停及减少分支开销的方法 ◆ 转移失败:PC值加4 ◆ 转移成功:将PC值改变为转移目标地址到MEM段的末尾才改变一旦检测到分支指令(在ID段),就暂停 执行其后的指令,直到分支指令到达MEM段, 确定出新的PC值为止。 2. 处理分支指令最简单的方法 8.3 流水线中的相关在DLX流水线中,分支转移成功导致暂停3个 时钟周期。若分支指令的频度为80%,理想CPI=1,则 实际CPI=1+80%×3≈2 3. 减少分支开销的两种途径 ◆ 在流水线中尽早判断分支转移是否成功; ◆ 转移成功时,尽早计算出转移目标地址。 两者应同时采用,缺一不可。   对于DLX作如下改进: (1) 把“=0?”测试移至ID段; 8.3 流水线中的相关 (2) 在ID段增设一个加法器,这样可以把分支开销减少一拍。   改进后流水线的分支操作  (表8.5) 8.3 流水线中的相关 流 水 段 分 支 指 令 操 作 IF ID EX IF/ID.IR ← Mem[PC]; IF/ID.NPC,PC ←(if ID/EX.cond {ID/EX.NPC} else {PC+4}); ID/EX.A ← Regs[IF/ID.IR6..10]; ID/EX.B ← Regs[IF/ID.IR11..15]; ID/EX.NPC ← IF/ID.NPC + (IR16)16##IR16..81; ID/EX.IR ← IF/ID.IR; ID/EX.cond ← (Regs[IF/ID.IR6..10] op 0; ID/EX.Imm ← (IR16)16##IR16..81; MEM WB 表 8.5 改进后流水线的分支操作 (动画演示) (动画演示) 二、程序中分支的行为特点 1. 各种能改变PC值的指令的执行频度 (SPEC基准程序,DLX上执行) ◆ 条件分支整数程序:14%~15%浮点程序:8%~12%向前分支与向后分支的比:8∶1◆ 无条件分支绝大多数:≤4% 8.3 流水线中的相关 2.条件分支转移成功的概率 ◆ 平均值整数程序向前:18%   无条件:4%向后:8%浮点程序向前:7%    无条件:1%向右:8% 所有条件分支:67% 向前:60%向后:85%  (向后分支一般形成循环) 8.3 流水线中的相关 8.3 流水线中的相关 三、减少流水线分支损失的方法 (4种简单的静态方法,

文档评论(0)

4411184 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档