《流水线技术演示.ppt》由会员分享,可在线阅读,更多相关《流水线技术演示.ppt(26页珍藏版)》请在三一办公上搜索。
1、流水线技术演示PPT,流水线简单介绍流水线主要障碍流水线冒险,流水线简单介绍,1.1 什么是流水线1.2 RISC指令系统的简单实现1.3 经典的5段流水线RISC处理器1.4 流水线的基本性能,1.1 什么是流水线,流水线是利用执行指令所需的操作之间的并行性,实现多条指令重叠执行的一种技术。流水线吞吐率取决于指令流出流水线的速度。指令沿流水线移动一次的时间间隔就是一个机器周期。由于所有的流水段同时工作,机器周期取决于最慢的流水段。流水线设计者的目标是平衡各个流水段的长度,如果每一步都得到了最佳平衡,那么每条指令在流水线上的平均时间在理想状况下等于非流水线机器一条指令的时间流水线机器段数,在这
2、种情况下,流水线的加速比等于流水线的段数,但是流水线的各段之间之间不会达到那么好的平衡,而且流水线需要开销,因此每条指令在流水线上的时间可以很接近最小时间,却不能达到。流水线可以减少指令的平均执行时间,可以认为是减少了每条指令的CPI,也可以认为是减少了时钟周期的长度。流水线是一种在连续指令流中开发指令集并行性的技术,对编程者是透明的。,1.2 RISC指令系统的简单实现,执行每条指令最多只要5个时钟周期:1.取指令周期(IF)2.指令译码/读寄存器周期(ID)3.执行/有效地址周期(EX)4.访问存储器(MEM)5.写回周期(WB),在取指周期,根据PC指示的地址从存储器中取指令并装入到IR
3、中,同时PC+4以获取下一条指令地址。在指令译码/读寄存器周期,对指令进行译码并访问寄存器堆以读出寄存器中的内容,对寄存器中的内容进行比较,判断是否是转移指令,计算下调指令的地址。在执行/有效地址周期(EX),对上一周期准备好的操作数进行运算,有三种指令:访问寄存器,寄存器-寄存器ALU指令,寄存器-立即数ALU指令。在访问存储器(MEM),load指令将根据上一周期得到的有效地址从存储器中读取数据,store指令则根据有效地址将第二个寄存器中的数据写入存储器。在写回周期,将结果写入寄存器堆。,1.3 经典的5段流水线RISC处理器,每一条指令经过5个时钟周期执行完成,在每一个时钟周期内,硬件
4、将启动一条新的指令并执行5条不同指令的某个阶段。,图中展现了各个周期所要用到的寄存器,确保流水线在不同段中的指令不会相互影响,在连续的流水段中引入流水线寄存器,在每个时钟周期结束后,该断所有的执行结果都保存在流水线寄存器中,1.4 流水线的基本性能问题,流水线增大了CPU的指令吞吐量即单位时间执行指令的条数,但是它未减少指令各自的执行时间。实际上流水线技术要对流水线附加一些控制,因而了增加开销,使单条指令执行时间略有增加。吞吐量的增大意味着程序运行的更快,总的执行时间变短,尽管没有一条指令的执行变快。,2.流水线的主要障碍流水线冒险,有时在流水线中存在一些冒险使得指令流的下一条指令无法在设计的
5、时钟周期内执行,这些冒险会降低流水线的性能。有三类冒险:1.结构冒险2.数据冒险3.控制冒险流水线中的冒险会引起流水线停顿,部分指令就要延期执行。,结构冒险,当处理器进行流水处理时,指令的重叠执行要求功能单元能够流水,而且资源重复设置,以便流水线中的指令能够自由组合。如果因为资源冲突而无法使用某种指令的组合,即多条指令进入流水线后在同一时钟周期争用同一个资源。某些流水线机器的指令和数据共享同一个存储器,结果是当一条指令包含有数据引用时,它将与下一条指令的取指令冲突,如下图所示:,为了消除这种冒险,当需要访问数据存储器时把流水线停顿一个时钟周期,停顿通常称气泡。,问题:有结构冒险的流水CPI会比
6、较大,为什么设计人员会允许结构冒险的存在呢?,数据冒险,流水线的一个主要影响就是通过重叠指令来改变指令的相对时间,但这种重叠会引起数据冒险和控制冒险。数据冒险产生的原因是流水线改变了读/写操作数的顺序,下面一段指令在流水线上的执行:DADDR1,R2,R3DSUBR4,R1,R5ANDR6,R1,R7ORR8,R1,R9XORR10,R1,R11流水如下图,除非采取措施,否则DSUB操作读出的将是错误的值并继续使用,AND操作也受该冒险的影响。,DADD操作的结果在后面三条指令中都使用,这就产生了数据冒险。,上述的数据冒险可以用一个简单的硬件技术直通(旁路)来解决。把DADD的结果从EX/ME
7、M寄存器移到DSUB需要的地方,即ALU输入锁存器,具体做法:1.从EX/MEM流水线寄存器送入到ALU的结果总是反馈到ALU的输入锁存器。2.如果直通硬件检测到前一次ALU操作写入的寄存器正好是当前ALU操作的数据来源,那么控制逻辑就选择直通结果作为ALU的输入。效果如下图,并不是所有的数据冒险都可以采用直通技术来解决,下面指令:LDR1,0(R2)DSUBR4,R1,R5ANDR6,R1,R7ORR8,R1,R9指令流图如下图所示:,Load指令不能只用直通就能消除延迟,需要添加流水线锁定器,流水线锁定器发现冒险后就停顿流水线,直至消除。,转移冒险,如果一条转移指令把PC改写成它的目标地址
8、,该转移就成为选中转移,否则称为选中转移,如果指令i是选中转移,通常要到ID段的末尾,完成地址计算和比较后才能改变PC。,减少流水线的转移代价介绍三种方法:1.冻结冲刷流水线,即在转移的目标地址确定之前保存或者删除所有紧随专一的指令,优点是硬件软件实现简单,但专一的开销是固定的,不可能通过软件来减少,2.对所有的转移按照未选中处理,直接取下一条指令,好像转移指令只是一条普通指令,流水线也没特殊之处,只要转移指令被选中,就需要空操作代替取来的指令(需清除IF/ID寄存器),并到目标地址重新取指令。,3.预测转移被选中,一旦完成转移指令的译码并计算出目标地址后,就假设转移被选中,到目标地址取指令。因为在5段流水线中总是先得到转移的结果,后得到目标的地址,所以不适用于5段流水。胆子某些流水线中,尤其是隐含条件码和更强功能转移条件的机器中,专一的目标地址比其结果更早产生,这时采用预测转移被选中的方法比较合适。,谢谢!,