第3章流水线技术31流水线的基本概念32dlx的基本流水线内容摘要:

段流水线不会有此类相关因为 : • 所有的指令都是 5段 , 并且 • 读操作总是在第 2段,而 • 写操作在第 5段 I: sub r4,r1,r3 J: add r1,r2,r3 K: mul r6,r1,r7 计算机体系结构  写后写相关( Write After Write (WAW)) InstrJ writes operand before InstrI writes it.  编译器编写者称之为 “output dependence” , 也是由于重复使用寄存器名 “r1”引起的 .  在 DLX 5段流水线中,也不会发生。 因为 • 所有指令都是 5段,并且写操作都在第 5段  在后面的复杂的流水线中我们将会看到 WAR 和 WAW 相关 I: sub r1,r4,r3 J: add r1,r2,r3 K: mul r6,r1,r7 计算机体系结构 采用定向技术避免数据相关(图 Page 102) Time (clock cycles) I n s t r. O r d e r add r1,r2,r3 sub r4,r1,r3 and r6,r1,r7 or r8,r1,r9 xor r10,r1,r11 Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg 计算机体系结构 I n s t r. O r d e r lw r1, 0(r2) sub r4,r1,r6 and r6,r1,r7 or r8,r1,r9 采用定向技术仍然存在相关 (图 Page 153) Time (clock cycles) Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg Reg ALU DMem Ifetch Reg 计算机体系结构 DMem Time (clock cycles) or r8,r1,r9 I n s t r. O r d e r lw r1, 0(r2) sub r4,r1,r6 and r6,r1,r7 Reg ALU DMem Ifetch Reg Reg Ifetch ALU DMem Reg Bubble Ifetch ALU DMem Reg Bubble Reg Ifetch ALU Bubble Reg 计算机体系结构 Try producing fast code for a = b + c。 d = e – f。 assuming a, b, c, d ,e, and f in memory. Slow code: LW Rb,b LW Rc,c ADD Ra,Rb,Rc SW a,Ra LW Re,e LW Rf,f SUB Rd,Re,Rf SW d,Rd 采用软件方法避免数据相关 Fast code: LW Rb,b LW Rc,c LW Re,e ADD Ra,Rb,Rc LW Rf,f SW a,Ra SUB Rd,Re,Rf SW d,Rd 计算机体系结构 流水线相关检测部件可以检测到的相关情况 计算机体系结构 采用定向技术硬件所需做的修改 MEM/WR ID/EX EX/MEM Data Memory ALU mux mux Registers NextPC Immediate mux 计算机体系结构 定向源为 RR ALU操作的定向比较判断 计算机体系结构 定向源为 ALU- imm操作的定向比较判断 计算机体系结构 定向源为 Load操作的比较判定 计算机体系结构 控制相关 问题更复杂,分支需要解决两个问题 • 分支目标地址(转移成功意谓着 PC值不是 PC+4) • CC是否有效 CC, 这两点在 DLX中都在流水线的靠后段中确定 是否为分支指令是在 ID段后,此时取进来的指令可能是错误的指令 对于简单的 DLX流水线 3 cycle branch penalty • 有效地址在 EX段才能确定 • 条件是否为真在 MEM段才能知道 • 因此有 3个 stall 见 Page111 简单处理分支指令的方法及其流水线的时空图 计算机体系结构 回顾 DLX数据通路 计算机体系结构 减少分支延时的方法 修改数据通路 • 使得目标地址和分支条件尽早确定 • 使得其中之一尽早确定是没有用的,这点都可以在 ID段结束前确定 • 必要时使用互锁机制来插入 Stall• • 使用另一个加法器计算 可以在 ID段计算 BTA 即在 ID段形成下一条指令地址,两种可能( BTA, PC+4) 选择哪一个取决于 ID段确定的 CC 采用软件的方法 设计合适的 ISA • . BNEZ, BEQZ on DLX 使得 CC可以在 ID段确定 调度一些指令放入分支的延迟槽中 统计分支成功和失败的情况,提高预测精度 计算机体系结构 新的 DLX数据通路 •存在问题 :zero的输出应该直接送到 IF段的 MUX的控制端 计算机体系结构 四种可能的解决冲突的方法 1: Stall 直到分支方向确定 2: 预测分支失败 • 直接执行后继指令 • 如果分支实际情况为分支成功,则撤销流水线中的指令对流水线状态的更新 • DLX分支指令平均 47%为分支失败 • 由于 PC+4已经计算出来,因此可以用它来取下一条指令 3: 预测分支成功 • 平均 53% DLX 分支为分支成功 • 但分支目标地址在 ID段才能计算出目标地址 DLX 还是有 1个 cycle branch penalty 计算机体系结构 四种可能的解决冲突的方法 4: 延迟转移 • 定义分支发生在一系列指令之后 branch instruction sequential successor1 sequential successor2 ........ sequential successorn branch target if taken • 5级流水只需要一个延迟槽就可以确定目标地址和确定条件 • DLX 使用这种方式 Branch delay of length n 计算机体系结构 延迟转移 从何处选择指令来填充延迟槽。 • 分支指令之前的指令 Before branch instruction • 从分支目标地址处取 : 仅在分支成功时有用 • 从分支失败处调度:仅在分支失败时有用 编译器可以有效的调度一个延迟槽 • 如果提供取消分支时, 编译器可以调度更多的指令填入延迟槽 计算机体系结构 评估减少分支策略的效果 Scheduling Branch CPI speedup v. speedup v. scheme penalty unpipelined stall Stall pipeline 3 Predict taken 1 Predict not taken 1 Delayed branch = 1+1*14%*65% Conditional amp。 Unconditional = 14%, 65% change PC P i pe l i n e s pe e du p = P i pe l i n e de pt h1 + Br a nc h fr e qu e nc y  Br a nc h pe n a l t y计算机体系结构 小结 : Pipelining 通过指令重叠减小 CPI 充分利用数据通路 • 当前指令执行时,启动下一条指令 • 其性能受限于花费时间最长的段 • 检测和消除相关 如何有利于流水线技术的应用 • 所有的指令都等长 • 只有很少的指令格式 • 只用 Load/Store来进行存储器访问 难度何在 ? 相关问题 计算机体系结构 性能分析 基本度量参数 • 吞吐率 • 加速比 • 效率 吞吐率 • 衡量流水线速度的重要指标,指单位时间内流水线所完成的任务数或输出结果的数量 • 最大吞吐率:指流水线在连续流动达到稳定状态后所得到的吞吐率 如果流水线各段时间相等,则其为 Page 90 如果流水线各段时间不等。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。