三章流水线技术.ppt

上传人:本田雅阁 文档编号:2626485 上传时间:2019-04-23 格式:PPT 页数:74 大小:1.82MB
返回 下载 相关 举报
三章流水线技术.ppt_第1页
第1页 / 共74页
三章流水线技术.ppt_第2页
第2页 / 共74页
三章流水线技术.ppt_第3页
第3页 / 共74页
三章流水线技术.ppt_第4页
第4页 / 共74页
三章流水线技术.ppt_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《三章流水线技术.ppt》由会员分享,可在线阅读,更多相关《三章流水线技术.ppt(74页珍藏版)》请在三一文库上搜索。

1、第三章 流水线技术,1,3.1 流水线的基本概念 3.2 流水线的时空图及性能分析 3.3 流水线的相关 3.4 MIPS R4000流水线计算机,Fallacy,Say,multiprocessors are a silver bullet.,2,The switch to multiple processors per chip around 2005 did not come from some breakthrough that dramatically simplified parallel programming or made it easy to build multicore

2、 computers. The reason the change occurred is that there was no other option due to the ILP walls and power walls. Multiple processors per chip do not guarantee,3,lower power, its certainly possible to design a multicore chip that uses more power. The potential is just that its possible to continue

3、to improve performance by replacing a high-clock-rate, inefficient core with several lower-clock-rate, efficient cores. As technology improves to shrink transistors, this can shrink both capacitance and the supply voltage a bit so that we can get a modest increase in the number of cores per generati

4、on. For example, for the last few years, Intel has been adding two cores per generation.,4,In fact, in nowadays, performance is now a programmers burden. The La-Z-Boy programmer era of relying on hardware designers to make their programs go faster without lifting a finger is officially over. If prog

5、rammers want their programs to go faster with each generation, they must make their programs more parallel.,3.1 流水线的基本概念,一指令的执行方式 1.一条指令执行的所需过程: 1)取指令: 根据PC(指令计数器)从M(存储器)取出指令送到IR(指令寄存器) 2)析指: 译出指令的操作性质、寻址方式,取操作数 3)执行:对操作数进行处理,主要涉及ALU(算术逻辑运算部件),存结果,5,3.1.1有关基本概念,2. 对指令执行的几种方式 1)串行执行 当前一条指令的各过程段全部完成后,

6、才从存储器取出下一条指令,6,问题?,3) 指令重叠执行:第i条指令的执行与第i+1条的析指及第i+2条的取指重叠。,7,注意:重叠解释并不能加快一条指令的实现, 但能加快一段程序的解释。,8,3. 重叠方式中所需时间表达式及所需时间计算 1)条件:设一条指令分为三个过程段,各过程段分别用t取、t析、t执表示。 执行n条指令,分别采用顺序执行、重叠执行。,2)分别列出上述两种执行方式所需时间表达式 串行执行 n*(t取+t析+t执) 重叠执行 t取+ ( t析, t取)max+(n-2) *(t取,t析,t执)max+( t执, t析)max+ t执,3) 例子 当n=200,t取=3t,t析

7、=4t,t执=5t时, 分别计算上述两种执行方式的时间。 串行执行: 200(3+4+5)=2400t 重叠: 3+4+(200-2)5+5+5=1007t,9,重叠方式需要解决的问题 问题1:为了实现取指、分析指令、执行指令同时进行,需要有对应的独立部件。 问题2:尽量缩短各个功能部件的运行速度,使得大致相等,避免在重叠中相互等待。 问题3:主存访问冲突。例如,取指令k+1时需访存,分析指令k时可能也需要取操作数访存。,10,解决访存冲突,主要有3种解决办法: 将主存分为两个独立编址的存储器:指令存储器和数据存储器,CPU可分别独立访问。 低位交叉存取方式:可并行访问不在同一个存储体中的指令

8、或数据。,11,3) 指令预取:在重叠操作中,当前一条指令在执行过程中就需要提前取出后面的指令进行相应处理,这种提前取出后继指令进行相应处理,称为先行(预取)。,PowerPC内核E200z3的结构如图所示。 Instruction fetch unit 将32或16位指令从存储单元预取到指令缓存单元。每一时钟Instruction fetch unit 将读取64位(即2条32位指令或4条16位指令)指令进入缓存buffer中等待解码单元处理。而这些buffer一共有六个,最多可以保存六条指令。,12,可能的问题:如果将执行的指令k是跳转指令,则指令k+1无效,需重新取指。,二、流水线定义,

9、指令流水线是由一系列串联的流水段(级)构成,每个流水段完成指令的一个操作步骤。各个流水段之间设置流水线寄存器以暂存上个流水段的处理结果。,若某个子过程所需时间较长,还可以继续细分为更 小的子过程。比如,浮点加法流水线 把流水线技术应用于运算的执行过程,就形成了运算操作流水线,也称为部件级流水线。 把浮点加法的全过程分解为求阶差、对阶、尾数相加、规格化4个子过程。 理想情况:速度提高4倍,13,3.1.2 流水线的分类,14,流水线可按不同的观点进行分类,一般来说流水线可以分为以下几个类型。,1、按各过程段用时是否相等分类 流水线按各过程段用时是否相等可分为均匀流水线和非均匀流水线两种。,1)

10、均匀流水线指的是各过程段用时全相等的流水线,2) 非均匀流水线指的是各过程段用时不全相等的流水线,15,2、按处理的数据类型,1) 标量流水线:用于对标量数据进行流水处理。如:IBM 360/91,AmDahl 470V/6 2) 向量流水线:用于对向量数据进行流水处理。 (向量很适合流水处理),如:STAR-100,CYBER-205,CRAY-1.,按处理的数据类型可分为标量流水处理机和向量流水处理机两种。,16,3.按流水线的规模 按流水线的规模可分为操作流水线、指令流水线和宏流水线。,1) 操作流水线是把处理机的算术逻辑部件分段,使得各种数据类型的操作能够进行流水,规模最小。,2) 指

11、令流水线则是把执行指令的过程按照流水方式处理。,3) 宏流水线它是指由两个以上的处理机串行地对同一数据流进行处理,每个处理机完成一项任务。,1) 单功能流水线:只能完成一种固定功能的流水线。例如,浮点加法器流水线专门完成浮点加法运算,浮点乘法器流水线专门完成浮点乘法运算。 2) 多功能流水线:流水线的各段可以进行不同的连接,以实现不同的功能。 例: ASC的多功能流水线,17,4.按功能分类 按流水线完成的功能是否单一,流水线可分为单功能流水线与多功能流水线两种。,18,19,5.按工作方式分类 流水线按工作方式可分为静态流水线和动态流水线两种。,1) 静态流水线:在同一时间内,多功能流水线中

12、的各段只能按同一种功能的连接方式工作。 对于静态流水线来说,只有当输入的是一串相同的运算任务时,流水的效率才能得到充分的发挥。,2) 动态流水线:在同一时间内,多功能流水线中的各段可以按照不同的方式连接,同时执行多种功能。 优点 灵活,能够提高流水线各段的使用率,从而提高处理速度。 缺点 控制复杂。,20,静、动态流水线时空图对比,21,6.按连接方式分类 按照流水线的各个功能段之间是否有反馈信号,可将流水线分为线性流水线和非线性流水线。,1) 线性流水线:流水线的各段串行连接,没有反馈回路。数据通过流水线中的各段时,每一个段最多只流过一次。 2) 非线性流水线:流水线中除了有串行的连接外,还

13、有反馈回路,22,23,7.其他分类 除上述几种外,流水线分类还有下述几种。,1)根据控制方式分成顺序流水线和乱序流水线。,2)在线性流水线中,根据控制方式还可以分成同步流水线和异步流水线。,3.1.3 流水线的特点,24,1.流水线处理的最好是连续任务,只有连续不断的任务才能充分发挥流水线的效率。 2.流水线依靠多个功能部件并行工作宋缩短程序的执行时间,实际上是把一个大的功能部件分解为多个子过程,如前述将浮点数加法器分解为4个子过程。 3.流水线中的每一功能部件后面都要有一个缓冲寄存器,即所谓的锁存器,以便平滑各个功能段延时时间的不一致。 4.流水线中各段时间应尽量相等,避免段延时过长引起的

14、相互等待。 5.流水线需要有“装入时间”和“排空时间”。,3.2 流水线的时空图及性能分析,一、时空图 时空图从时间和空间两个方面描述了流水线的工作过程。时空图中,横坐标代表时间,纵坐标代表流水线的各个段。 4段指令流水线的时空图,25,3.2.1 流水线的时空图,吞吐率:在单位时间内流水线所完成的任务数量或输出结果的数量。,26,3.2.2 流水线的性能分析,一、 吞吐率,n:任务数 Tk:处理完成n个任务所用的时间,1、各段时间均相等的流水线 各段时间均相等的流水线时空图,27,流水线完成n个连续任务所需要的总时间为 (假设一条k段线性流水线) Tkkt(n-1)t(kn-1)t 流水线的

15、实际吞吐率,28,最大吞吐率,最大吞吐率与实际吞吐率的关系,29,流水线的实际吞吐率小于最大吞吐率,它除了与每个段的时间有关外,还与流水线的段数k以及输入到流水线中的任务数n有关。 只有当nk 时,才有TPTPmax。,2、各段时间不完全相等的流水线 各段时间不等的流水线及其时空图 一条4段的流水线 S1,S3,S4各段的时间:t S2的时间:3t (瓶颈段) 流水线中这种时间最长的段称为流水线的瓶颈段。,30,各段时间不等的流水线的实际吞吐率: ( ti为第i段的时间,共有k个段 ),31,流水线的最大吞吐率为,3、解决流水线瓶颈问题的常用方法 1)细分瓶颈段: 例如:对前面的4段流水线 把

16、瓶颈段S3细分为3个子流水线段:S3a,S3b,S3c,32,改进后的流水线的吞吐率 :,2)重复设置瓶颈段 缺点:控制逻辑比较复杂,所需的硬件增加了。 例如:对前面的4段流水线 重复设置瓶颈段S3:S3a,S3b,S3c,33,34,重复设置瓶颈段后的时空图,35,二、 加速比,流水线的加速比(Speedup,S)完成某个任务顺序执行所用时间与流水线执行所用时间之比。,假设:不使用流水线(即顺序执行)所用的时间为Ts,使用流水线后所用的时间为Tk,则该流水线的加速比为,1、流水线各段时间相等(都是t) 一条k段流水线完成n个连续任务 所需要的时间:Tk = (kn-1)t 顺序执行n个任务所

17、需要的时间: Ts = nkt 流水线的实际加速比为,最大加速比,36,2、流水线的各段时间不完全相等时 一条k段流水线完成n个连续任务的实际加速比为,37,三、 效率,流水线效率(Efficiency,E)是指流水线的设备利用率。在时空图上,流水线的效率定义为n个任务占用的时空区与k个功能段总的时空区之比,因此流水线的效率包含时间和空间两个方面的因素。,实际上,n个任务占用的时空区就是顺序执行n个任务的总的时间T0;而用一条k段流水线完成n个任务的总的时空区为K Tk ,其中Tk 是流水线完成n个任务所使用的总时间,则一条k段流水线的效率为:,各段时间均相等的流水线时空图,38,39,如果每

18、个流水段时间是t,且任务是连续的实际效率:,最大效率:,举例 计算:S=a0+a1+a2+a3+a4+a5+a6+a7 对相关算式要合理分解算式尽量分解为少相关算式: S0=a0+a1 S4=S0+S1 S1=a2+a3 S5=S2+S3 S2=a4+a5 S6=S4+S5 S3=a6+a7,40,41,吞吐率:TP=7/(18t) 效率:E=(作用区域面积)/(完成运算所需时间矩形面积) =(7*5t)/(18t*5)=7/18,例:假设是静态多功能流水线,计算 A*B=,42,1,2,3,4,5,ai bi,A.B,A+B,123-5 做加法 145 做乘法 解:分解算式 S1=a1.b1

19、 s2=a2.b2 s3=a3.b3 s4=a4.b4 s5=s1+s2 s6=s3+s4 s7=s5+s6,43,44,5 4 3 2 1,0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16,时间,吞吐率 7(15) 效率(3*4+4*3)/(5*15),3.3 流水线中的相关,45,3.3.1 什么是流水线相关,如果要执行算式S=a/b+c,要通过下列四条指令来执行。 LD R , A DIV R , B ADD R , C;要等DIV结果 ST R , S;存结果,第2条指令需要第1条指令的结果才能执行;第3条指令需要第2条指令的结果才能执行。这就出现了指令

20、因等待前面结果,使后面没指令无法继续执行下去的现象,即相关。,46,流水线中的相关主要分为以下3种类型,1.结构相关,2.数据相关,3.控制相关,47,3.3.2 流水线中的结构相关(资源相关),如果某些指令组合在流水线中重叠执行时产生了资源冲突,那么我们称该流水线有结构相关。,由于访问同一个存储器而引起的结构冲突,48,对于这种冲突,通常有以下两种解决方法,解决办法(1): 插入暂停周期,即让流水线在完成前一条指令对数据的存储器访问时,暂停取后一条指令的操作,为消除结构冲突而插入的流水线气泡,M,M,49,解决方法(2): 设置相互独立的指令存储器和数据存储器或设置相互独立的指令Cache和

21、数据Cache,50,51,3.3.3 流水线中的数据相关,如果下面的条件之一成立,则指令j与指令i数据相关: (1)指令j使用指令i产生的结果 (2)指令j与指令k数据相关,指令k与指令i数据相关,则指令j与指令i数据相关。,第2个条件指出,如果两条指令之间存在类似上述的传递关系,则它们之间也是相关的。这条相关链甚至可以贯穿整个程序。,例如:下面这一段代码存在数据相关。,52,Loop: L.D F0,0(R1) / F0为数组元素 ADD.D F4,F0,F2 / 加上F2中的值 S.D F4,0(R1) / 保存结果 DADDIU R1,R1,8 / 数组指针递减8个字节 BNE R1,

22、R2,Loop / 如果R1R2,则分支,解决数据相关的一般方式: * 暂停流水线; * 使用相关专用数据通路; * 编译优化调度(静态调度); * 动态调度。,53,54,3.3.4 流水线的控制相关,控制相关是指因为程序的执行方向可能被改变而引起的相关。可能改变程序执行方向的指令通常有无条件转移、条件转移、子程序调用、中断、异常等。,无条件转移指令在程序中的使用情况一般如下 k: k1: JMP L k2: ADD R1, R2, R3 L: SUB,例如,有条件转移指令的程序:,55,MOV R1,NUM LOOP: DEC R1 JGE LOOP ;=0转移 SUB,从相关的角度看,转

23、移指令或断点指令与后续指令之存在着一种相关,使后续指令不能同时进入流水线执行,意味着前者控制了后者,故称为控制相关或全局相关。 数据相关也称为局部相关。,56,* 延迟转移技术 例如: PUSH BX MOV DX ,8 ADD AX ,CX JG L L: MOV,将前面1条指令调到转移指令的后面执行,同时也计算转移地址。 无论成功与否,上面的1条指令都不需取消。,解决控制相关的一般方式:,57,SUN 公司的SPARC 使用上述技术,分支指令格式中有一位a位。 a位用于延迟转移控制,当a0时,跟在转移指令下面的指令总是被执行;当a=1时,只在条件转移指令转移成功时,跟在转移指令下面的指令才

24、被执行。 一般用于单流水线标量处理机中。据统计,编译器调度一条指令成功的概率可达90%以上。,* 静态转移预测技术-处理器的硬件与软件设计好后,条件转移预测的方向已经确定了,或者预测为转移成功方向,或者预测为转移不成功方向。 * 动态转移预测技术:根据近期转移是否成功的历史记录来预测下一次转移的方向。,58,* 提前形成条件码 a在流水线中提前形成条件码(硬件) 从上一节的分析可以看出,条件转移造成流水线断流的一个原因是:条件码形成太晚。 实际上,在大多数情况下,可以在运算实际开始以前或者在运算中间就能产生条件码,不必等到运算完成后。,59,例如: MUL AX ,BX JS L 即只要比较两

25、个操作数的符号就可形成条件码,而不必等到指令完成(积结果产生)。 方法是:在运算器的入口处设置一个比较器,提前形成结果的符号,即是否为“负“条件码。 Amdahl 470V/6计算机中采用该方法。,60,b将产生条件码的指令提前执行 在某些情况下,通过编译器,再设置一个专门的条件码寄存器,解决循环控制问题: 例如,有下面的程序: MOV R1,NUM LOOP: DEC R1 JGZ LOOP ;=0转移 HALT,61,首先,编译器发现DEC R1 指令,并把它上移,同时用LDEC R1来替代它。 其次,用LJGZ LOOP 代替 JGZ LOOP 指令:,MOV R1 ,NUM LOOP:

26、 LDEC R1 ;测试R1,产生的条件码保存在专用 的条件码寄存器 CCL 中 LJGZ LOOP ;根据条件码CCL决定是否转移 HALT,62,3.4 MIPS R4000 流水线计算机,MIPS(Microprocessor without Interlocked Piped Stages)4000处理机属于超流水线处理机。,3.4.1 MIPS R4000流水线计算机基本结构和工作原理,R4000处理器是64位机,指令系统是32位长度的典型RISC指令集。,63,SGI公司生产的超流水线处理器MIPS R4000(RISC):, 两个Cache:指令Cache 和数据Cache,容量

27、均为64KB, 数据通路宽度为64位。每个主时钟周期可以 访问Cache两次。, 整数部件:32个64位通用寄存器,一个ALU,一个专用 乘/除法部件。负责取指令,整数操作译码和 执行,LOAD和STORE操作的执行。有相关专用 数据通路。, 浮点部件:16个64位或32个32位的通用寄存器。 乘法部件、除法部件、加法/转换/求平方根部件, 三个部件可并行操作,一、基本结构,64,65,MIPS R4000的流水线有8级,流水线操作如下图:,指令Cache:采用直接映像方式。从Cache中读出的区号要与 存储器物理地址比较,相等即命中。对命中的 非存储器操作指令,结果在EX末尾得到。,二、工作

28、原理,8个流水段的功能:,取指令前一半IF:指令虚拟地址IVA交指令cache和TLB 取指令后一半IS:指令cache送出指令和TLB生成物理地址 寄存器堆RF:指令译码、相关检查,指令cache标志检查,从寄存器取操作数 指令执行EX:如是RR指令,ALU完成操作;如是load或store指令,计算数虚拟地址;如是转移指令,计算转移目标虚拟地址和检查转移条件 数据cache前一半DF:数据虚拟地址DVA交数据cache和TLB 数据cache后一半DS:数据cache输出数据和TLB生成物理地址 标志检查TC:为load/store指令完成标志检查 写回WB:指令结果写回寄存器堆,66,6

29、7,68,MIPS R4000正常指令流水工作时序,流水线充满时:有8条指令同时执行,且一个时钟周期分时发射2条指令,或完成两条指令,超流水线方式。,69,3.4.2 MIPS R4000流水线,指令序列在MIPS R4000流水线中重叠执行情况如图所示 :,70,从上图可以看出,由于从存储器中读入的数据在DS段的末尾才会有效,所以其载人延迟是2个时钟周期,如下图所示:,71,指令序列在R4000流水线中的执行时空图,72,对R4000的流水线来说,定向(数据相关专用通路)是十分重要的。,在R4000的流水线中,ALU输入端的定向源有4个:EX/DF、DF/DS、DS/T和TC/WB,如图所示。,73,R4000流水线的基本分支延迟为3个时钟周期,74,基于单周期延迟分支方法,R4000流水线处理分支指令的时空图,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1