流水线(Pipeline)介绍综述

上传人:我** 文档编号:116600242 上传时间:2019-11-16 格式:PPT 页数:51 大小:1.49MB
返回 下载 相关 举报
流水线(Pipeline)介绍综述_第1页
第1页 / 共51页
流水线(Pipeline)介绍综述_第2页
第2页 / 共51页
流水线(Pipeline)介绍综述_第3页
第3页 / 共51页
流水线(Pipeline)介绍综述_第4页
第4页 / 共51页
流水线(Pipeline)介绍综述_第5页
第5页 / 共51页
点击查看更多>>
资源描述

《流水线(Pipeline)介绍综述》由会员分享,可在线阅读,更多相关《流水线(Pipeline)介绍综述(51页珍藏版)》请在金锄头文库上搜索。

1、处理器流水线相 关技术 报告人:Hardy 1 流水线技术 v1.流水线的概念 v2.流水线的冒险和冒险的解决办法 v3.多发射处理器 2 1.流水线的概念 v流水线技术: 把一个重复的过程分解为若干个子过程,每个子过 程由专门的功能部件来实现。将多个处理过程在时 间上错开,依次通过各功能段,这样,每个子过程 就可以与其他子过程并行进行。 v流水线的描述:最常用的方法是时间-空间图 横坐标:表示时间,即各个任务在流水线中所 经过的时间 纵坐标:表示空间,即流水线的各个子过程, 也称为级、流水线深度(Stage) 3 流水线时间空间图 4 v流水线技术应用到处理器中就是采用流水线 方式执行指令。

2、一个MIPS指令包包含五个处 理步骤: 1.取指令周期(IF) 2.指令译码/读寄存器周期(ID) 3.执行操作/计算地址(EX) 4.从数据存储器中读取操作数(MEM) 5.将结果写回寄存器堆(WB) 5 采用相同的功能模块,指令顺序执行和按照流水线 技术执行,在时间上可以看出流水线指令的执行速 度提高了4倍。 6 流水线的基本作用 流水线增大了CPU的指令吞吐量即单位时 间执行指令的条数,但是它未减少指令各自 的执行时间。实际上流水线技术要对流水线 附加一些控制,因而了增加开销,使单条指 令执行时间略有增加。吞吐量的增大意味着 程序运行的更快,总的执行时间变短,尽管 没有一条指令的执行变快

3、。 7 2.流水线的冒险 v尽管流水线可以带来处理器性能上的提高,但是不 是所有的指令就直接可以进行流水线操作,在指令 执行中的下一个周期中的下一条指令不能执行,这 种情况叫做冒险。有三类冒险: 1.结构冒险 2.数据冒险 3.控制冒险 流水线中的冒险会引起流水线停顿,部分指令就要延期执行 。 8 2.1 结构冒险 v结构冲突(资源冲突):流水线中多条指令在同一 时钟周期内争用同一功能部件的现象。即因硬件资 源满足不了指令重叠执行的要求而发生的冲突。 v常见的导致结构相关的原因: 功能部件不是完全流水或者资源不够用。 例如访存冲突 9 结构冒险 10 2.2 结构冒险的解决办法 vMIPS指令

4、集是为流水线设计的,在设计流水 线过程中能够很容易的避免结构冒险。 v但是流水结构中只有一个存储器时,两条指 令同时在一个存储器中预取指令就会发生结 构冒险。 11 为消除资源冲突而插入的流水线气泡 (Bubble) 12 解决办法二 设置相互独立的指令存储器和数据存储器或 设置相互独立的指令Cache和数据Cache。 13 2.3 数据冒险 v一条指令必须等到另一条指令的完成而造成 的流水线暂停的情况叫做数据冒险。形如: add $s0, $t0, $t0 sub $t2, $s0 $t3 加法指令需要到WB阶段后才写回结果,减法 指令此时才可以继续执行。在不任何干预的 情况下,流水线白白

5、浪费了三个时钟周期。 14 AND,OR操作不会暂停,但是DSUB,XOR指 令需要等待DADD在WB阶段写回数据后才 可以执行。 15 2.4 数据冒险的解决办法 v根据指令中读写访问的顺序,可以将数据冒 险分为三类。分别是: v写后读(RAW) v写后写 (WAW) v读后写 (WAR) 16 写后读冒险(RAW: Read After Write) v在 i 写入之前,j 先去读。j 会错误的获取旧 值。 v这对应“真数据相关”,为了确保j可以得到正 确的i值,必须保持程序的顺序。 i: DSUB R1,R2,R3 j: DADD R4,R1,R3 17 写后写冲突(WAW: Write

6、 After Write) v在 i 写入之前,j 先写。最后写入的结果 i 是 错误的。 v这对应“输出相关”,寄存器换名技术可以消除 i: DSUB R1,R4,R3 j: DADD R1,R2,R3 k: DMUL R6,R1,R7 Cant happen in MIPS 5 stage pipeline because: - All instructions take 5 stages, and - Writes are always in stage 5 18 读后写冲突(WAR: Write After Read) v在 i 读之前,j 先写。i 读出的内容是错误的 ! v这对应“

7、反相关” ,寄存器换名技术可以消除 i: DSUB R4,R1,R3 j: DADD R1,R2,R3 k: DMUL R6,R1,R7 Cant happen in MIPS 5 stage pipeline because: - All instructions take 5 stages, and - Reads are always in stage 2, and - Writes are always in stage 5 读后读RAR不是数据冒险, 读操作不改变值 19 转发(旁路)方式解决数据冒险 形如:add $s0, $t0, $t0 sub $t2, $s0 $t3,减法指

8、令要等到加 法指令写回寄存器堆时才可以执行指令,浪 费了时间。转发技术:在加法指令在ALU运 算一结束就将结果送给减法指令的输入项。 这样从内部资源中直接提前得到缺少的运算 项的过程叫做转发。 20 在原始的数据通路中用流水线寄存器将流水线各部分分 开,这些寄存器可以存储所有穿过它的数据,寄存器的宽度 都足够大。目前流行的有128位,97位,64位。 有了流水线寄存器后,转发就变的简单了。在指令执行 的五个阶段中间各加了个寄存器记录流过的数据。 21 如图所示,加法指令后面的取字指令没有等到加法指令写 回R1后再执行,而是提前就获得了R1的数据,减少了等 待时间。 22 转发技术不能解决所有的

9、数据冒险 当一条指令试图读取一个由前一条装载指令读入的寄存器时, 就无法使用转发解决数据冒险问题了。 23 v对于装载指令的存在,我们采用了插入阻塞 (气泡,)方法解决问题。增加一个冒险检 测单元,一旦发现装载指令后就在其他需要 这个结果的指令前插入阻塞。直到可以使用 转发技术或指令可以得到结果为止。 24 编译器调度(静态调度) v插入阻塞对于流水线来说仍然是暂停了流水 线的执行。既然转发技术无法消除指令序列 中所包含的这种暂停,那么能否让编译器在 进行代码生成时就消除这些潜在的暂停呢? v实际上,编译器的确可以通过重新组织代码 顺序来消除这种暂停。通常称这种重新组织 代码顺序消除暂停的技术

10、为 指令调度( instruction scheduling)。 v原理:相关不一定引起阻塞,只要隔开足够 远在一个流水线上引起阻塞,在另一个流水 线上不一定引起阻塞,编译优化与机器有关 25 例1 请为下列表达式生成没有暂停的流水线 v 指令序列: v abc ; v def ; v 假设载入延迟为1个时钟周期。 两条ALU指令(ADD Ra, Rb,Rc 和 SUB Rd,Re, Rf)分别和两条Load指令 (LW Rc,c和LW Rf,f) 之间存在数据相关。为了保 证流水线正确执行调度前的 指令序列,必须在指令执行 过程中插入两个时钟周期的 暂停。但是考察调度后的指 令序列不难发现,

11、由于流水 线允许转发,就不必在指令 执行过程中插入任何暂停周 期。 26 LD Rb,BIFIDEXME M WB LD Rc,CIFIDEX MEM WB ADD Ra,Rb, Rc IFID 停EX MEM WB SD Ra,AIF 停IDEX MEM WB LD Re,EIFIDEX MEM WB LD Rf,FIFIDEX MEM WB SUB Rd,Re, Rf IFID停EX MEM WB SD Rd,D IF停IDEX MEM WB 调度前执行情况(采用了转发技术) 27 LD Rb,BIFIDEX MEM WB LD Rc,CIFIDEX MEM WB LD Re,EIFIDE

12、X MEM WB ADD Ra,Rb, Rc IFIDEX MEM WB LD Rf,FIFIDEX MEM WB SD Ra,AIFIDEX MEM WB SUB Rd,Re, Rf IFIDEX MEM WB SD Rd,D IFIDEX MEM WB 调度后执行情况(采用了转发技术) 28 动态调度 v有些信息在译码时难以确定,如是否发生异 常、访存操作需要多少周期等,静态调度就 不能完成。 v动态调度:硬件会重新安排指令的执行顺序 以减少停顿并同时保持数据流和异常行为。 v优点:有些相关编译无法检测、编译器更加 简单、程序性能对机器依赖少 29 动态调度的思想 v基本思想 :把相关的解

13、决尽量延迟到马上就会出错的时候 前面指令的stall不影响后面指令继续前进 v把译码分成两个阶段:发射和读操作数 发射:指令译码,检查结构相关 读操作数:检查操作数是否准备好,准备好就 读数,否则等待,当一条指令在读操作数阶段 等待时,后面指令的发射可以继续进行 v乱序执行: 指令进入是有序的 执行可以乱序,只要没有相关就可执行,多条 指令同时执行 结束可以乱序,也可以有序(主要是精确例外 的需要),乱序结束会导致WAR相关(静态 流水线中只有RAW和WAW相关) 30 Tomasulo算法 vIBM 360/91中首次使用,由Robert Tomasulo提出 的一种支持乱序执行的高级方案。

14、它会跟踪指令的 操作数何时可用,将RAW冒险降至最低,并在硬件 中引入寄存器重命名功能,将WAW和WAR冒险降 至最低。 v现代处理器使用了该算法的各种变体,但是核心都 是: 1.跟踪指令相关以允许在操作数可用时立即执行 指令。 2.重命名寄存器以避免WAR和WAW冒险。 31 32 Tomasulo算法的流水阶段 1.发射:把操作队列的指令根据操作类型送到 保留站(如果保留站有空),发射过程中读 寄存器的值和结果状态域 2.执行:如果所需的操作数都准备好,则执行 ,否则侦听结果总线并接收结果总线的值。 3.写回:把结果送到结果总线,释放保留站33 34 35 36 37 38 Tomasul

15、o算法小结 v通过动态调度缓解流水线阻塞:例如减少CACHE 失效对性能的影响 v保留站:重命名寄存器+缓存源操作数 避免寄存器成为瓶颈 避免WAW和WAR阻塞 v缺点: 硬件复杂性 结果总线成为瓶颈,多条结果总线增加硬 件复杂度 39 流水线技术一直是提高处理器速度的最有效 技术之一。但目前的在相关处插入阻塞,转发技 术,编译器调度都是尽量分离相关问题的指令, 使他们不会导致冲突,从而减少暂停的影响。虽 然都会相应的显著减少数据相关的次数提高流水 效率,但也会不可避免的增加硬件复杂度和编译 器的复杂性。 而动态调度则可以以硬件的方式调整指令执 行顺序,使不相关的后续指令得以不受暂停的影 响而

16、继续执行,可以在降低编译器复杂度的同时 处理一些编译阶段无法知道的相关,在出现数据 冒险是尽量避免出现流水暂停。 40 2.5 控制冒险 v也叫分支冒险,指因为程序的执行方向可能 被改变而引起的流水线暂停叫做控制冒险。 v执行分支指令,程序计数器PC值两种情况: PC值改变为目标地址(转移成功) PC值保持正常(转移失败,顺序执行),PC+4 。 vPC值不定,所以流水线需要暂停,直到确定 了新的PC值为止 41 由于分支指令在MEM阶段才确定是否执行分支,分 支后面的三个指令都要被取回并执行。 42 2.6 控制冒险的解决办法 v1. 处理分支指令最简单的方法: v一旦检测到分支指令(在ID段),就暂停 执行其后的指令,直到分支指令到达MEM段 ,确定出新的PC值为止。 v特点:简单但是速度非常慢。 43 v2.缩短分支延迟 v确定分支目标地址越早,需要清除的指令就 越少。将分支执行提前到ID级。 v首先计算分支目标地址:在IF/ID流水线寄存 器中就有了PC值和立即数,增加

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号