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