
最新在一个5段的流水线处理机上需经9t才能完成一个任务精品课件.ppt
112页在一个在一个5 5段的流水线处理机段的流水线处理机上需经上需经9t9t才能完成一个任才能完成一个任务务5.3 5.3 相关性分析技术相关性分析技术5.3.1 数据相关数据相关5.3.2 控制相关控制相关5.3.3 条件分支对流水线的影响条件分支对流水线的影响5.3.4 静态分支预测技术静态分支预测技术5.3.5 动态分支预测技术动态分支预测技术5.3.6 提前形成条件码提前形成条件码5.3.7 精确断点与不精确断点精确断点与不精确断点 解决通用寄存器数据相关的方法:解决通用寄存器数据相关的方法:方法一:方法一:把读操作数、写运算结果与指令执行合在一把读操作数、写运算结果与指令执行合在一个节拍 从数据从通用寄存器读出,在运算器中完成运算,结果写回通用寄存器的整个回路中,只有通用寄存器是时序逻辑在通用寄存器到运算器之间建立直接数据通路,即不设置缓冲寄存器或锁存器,则不会发生通用寄存器数据相关 这种情况下,实际上不需要分析周期,在一个节拍中就可以完成从通用寄存器中通过两个多路选择器分别读操作数到通用寄存器 方法二:方法二:建立建立相关专用通路相关专用通路(ByPass)(ByPass)由于发生寄存器数据相关的情况很普遍,一般计算机系统都采用专用数据通路。
把读通用寄存器、执行操作和写结果分为3个周期,或2个周期采用专用数据通路能够缩短1至2个周期变址相关:变址相关:在采用变址寻址方式的处理机中,由于变址量放在寄存器中,因此,可能发生与通用寄存器数据相关类似变址相关4. LOAD4. LOAD相关相关• LOAD操作的执行时间可能比较长 n: LOAD R1, A ;R1=(A) n+1: ADD R1, R2 ;R1=(R1) OP (R2)• 如果 R1(n)=R2(n+1),或 R1(n)=R1(n+1), 则发生LOAD数据相关• 解决方法:解决方法:方法一:方法一:由编译器在由编译器在LOADLOAD之后插入不发生数据相之后插入不发生数据相关的指令,关的指令,由于由于LOAD的执行时间不确定,不能根本解决问题方法二:方法二:由硬件自动插入空操作,直到由硬件自动插入空操作,直到LOADLOAD操作操作完成完成在单条流水线处理机中,也可以停止节拍发生器,直到数据从存储器中读出为止5.3.2 5.3.2 控制相关控制相关因程序的执行方向可能被改变而引起的相关,也称为全局相关全局相关。
主要包括:无条件转移、一般条件转移、复合条件转无条件转移、一般条件转移、复合条件转移、中断移、中断等1. 1. 无条件转移无条件转移在流水线处理机中,无条件转移指令不进入执行流水段,一般在指令译码阶段就实际执行完成如果在处理机中设置有指令先行缓冲栈,则要全部或部分作废先行指令缓冲栈中的指令如果转移目标指令如果转移目标指令L L不在先行指令缓冲栈中不在先行指令缓冲栈中,则要将先行指令缓冲栈中的所有指令全部作废,并等待取出转移目标指令L如果转移目标指令如果转移目标指令L L在先行指令缓冲栈中在先行指令缓冲栈中,只要作废先行指令,只要作废先行指令缓冲栈中的部分指令缓冲栈中的部分指令无条件转移指令一般对指令执行部件的工作不会造成影响为进一步减少无条件转移指令造成的影响,在先行指令缓冲栈在先行指令缓冲栈的入口处增设一个专门处理无条件转移指令的指令分析器的入口处增设一个专门处理无条件转移指令的指令分析器P270P2702.2.一般条件转移一般条件转移 k:…… ;置条件码CC k+1:JMP(CC) L ;如果CC为真转向L …… L:……• 当条件码是上一条指令产生时,相关最当条件码是上一条指令产生时,相关最严重严重P271P271无论转移是否成功,第k+1条转移指令都在指令分析阶段就已经执行完成。
无论转移不成功或不成功,指令分析器要停顿一段时间,无论转移不成功或不成功,指令分析器要停顿一段时间,等待条件码产生等待条件码产生如果转移成功:指令L已经在先行指令缓冲栈,指令分析器接着“分析L”,如果指令L不在先行指令缓冲栈,指令分析器要等待一个周期转移不成功,对程序执行影响不大,当转移成功时,不仅指令执行过程变成完全串行,而当转移成功时,不仅指令执行过程变成完全串行,而且要作废先行指令缓冲栈中的大量指令且要作废先行指令缓冲栈中的大量指令在采用流水线方式的处理机中,要通过软件与硬件的在采用流水线方式的处理机中,要通过软件与硬件的多种手段来近可能地降低转移成功的概率,减少转多种手段来近可能地降低转移成功的概率,减少转移成功造成的影响移成功造成的影响3.3.复合条件转移复合条件转移 k k::OP L ;OP L ;产生条件码,并决定是否转向产生条件码,并决定是否转向L L …… …… L L::…………如果转移不成功:不造成任何影响,就象普通的运算型指令一样如果转移成功:造成的影响比一般条件转移指令还要如果转移成功:造成的影响比一般条件转移指令还要大得多。
大得多全部或部分作废先行指令缓冲栈、先行操作栈、先行读数栈和指令分析器中的指令必须采取策略,减小转移成功造成的影响必须采取策略,减小转移成功造成的影响5.3.3 5.3.3 条件分支对流水线的影响条件分支对流水线的影响处理好条件转移和中断的关键问题有两个:要确保流水线能够正常工作要确保流水线能够正常工作减少因减少因““断流断流””引起的吞吐率和效率的下降引起的吞吐率和效率的下降1.1.条件分支的处理方法条件分支的处理方法条件转移指令对流水线的影响很大,必须采取措施来减少这种影响可能的措施有:(1)(1)延迟转移技术和指令取消技术延迟转移技术和指令取消技术只能用于单流水线处理机中,且流水线的级数不能太只能用于单流水线处理机中,且流水线的级数不能太多;多;据统计,据统计,编译器调度一条指令成功的概率在编译器调度一条指令成功的概率在90%以上,%以上,而调度两条指令成功的概率只有而调度两条指令成功的概率只有40%左右当没有合适的指令可调度时,编译器只能插入空操作2)(2)动态分支预测技术动态分支预测技术根据近期转移是否成功的记录来预测下一次转移的方根据近期转移是否成功的记录来预测下一次转移的方向。
向所有的动态转移预测方法都能够随程序的执行过程动所有的动态转移预测方法都能够随程序的执行过程动态地改变转移的预测方向态地改变转移的预测方向( (3 3) )静态分支预测技术静态分支预测技术转移预测的方向是确定的,或者预测转移不成功,或者预测转移成功,在程序实际执行过程中,转移预测的方向不能改变在程序实际执行过程中,转移预测的方向不能改变静态转移预测可以只用软件实现,也可用硬件来实现,还可以在转移的两个方向上都预取指令TI公司的SuperSPARC处理机采用了静态转移预测技术,而且设置有转移目标缓冲栈,在两个方向上都预取指令2.2.条件分支在流水线中的执行过程条件分支在流水线中的执行过程因为第i条指令所需要的条件码由第i-1条指令给出;在一条由k个功能段的流水线中,第i-1条指令要等到第i+k-2条指令进入流水线时才能形成条件码转移不成功,猜测正确,流水线的吞吐率和效率没有降低,转移成功,猜测错误,要先作废流水线中已经执行的转移成功,猜测错误,要先作废流水线中已经执行的i+1i+1、、i+2i+2、、…………、、i+k-2i+k-2指令;然后再从分支点开指令;然后再从分支点开始执行第始执行第P P、、p+1p+1、、…………指令。
一条指令一条k k段流水线有段流水线有k-2k-2个功能段是浪费的个功能段是浪费的• 条件分支指令在流水线中的执行过程条件分支指令在流水线中的执行过程当分支的执行方向猜测错误时,可能造成程序执行结当分支的执行方向猜测错误时,可能造成程序执行结果发生错误果发生错误 例如,若第i+1条指令是:(R1)+(R2)→R1,寄存器R1中内容就被破坏,整个程序执行的结果是错误的 目前的处理机有两种做法:目前的处理机有两种做法:一种方法是只进行指令译码和准备好运算所需要的操一种方法是只进行指令译码和准备好运算所需要的操作数,在转移条件没有形成之前不执行运算;作数,在转移条件没有形成之前不执行运算;另一种方法是一直执行到运算完成,但不送回运算结另一种方法是一直执行到运算完成,但不送回运算结果3. 3. 条件分支对流水线性能的影响条件分支对流水线性能的影响P313P313假设条件转移指令在一般程序中所占的比例为p,转移成功的概率为qn条指令的总的执行时间是:条指令的总的执行时间是: TK-IF=(n+k-1)t + npq(k-1)t有条件转移影响的流水线吞吐率为:有条件转移影响的流水线吞吐率为:有条件转移影响的流水线最大吞吐率为:有条件转移影响的流水线最大吞吐率为:流水线吞吐率下降的百分比为:流水线吞吐率下降的百分比为:在典型程序中,转移指令占的比例为p=20%,转移成功的概率为q=60%。
对于一条8功能段的指令流水线,由于条件转移指令的影响,流水线的最大吞吐率要下降:如果指令流水线的功能段数为10,由于条件转移指令的影响,流水线的最大吞吐率将下 降一半以下:%46) 18(60. 020. 01) 18(60. 020. 08=-+-××=D5.3.4 5.3.4 静态分支预测技术静态分支预测技术静态分支预测:静态分支预测: 在程序执行过程中转移预测方向不能改变在程序执行过程中转移预测方向不能改变动态分支预测:动态分支预测: 在程序执行过程中能够改变转移预测方向在程序执行过程中能够改变转移预测方向本节讲静态预测技术,下节讲动态预测技术1.1.软件软件““猜测法猜测法””目标:目标:通过编译器尽量降低转移成功的概率通过编译器尽量降低转移成功的概率例如:例如:对于循环程序,普通编译器生成的目标代码,转移成功的概率很高,不成功的只有一次这种编译结果对流水线极为不利P273• 软件软件““猜测法猜测法””:: 通过编译器降低转移成功的概率通过编译器降低转移成功的概率2.2.硬件硬件““猜测法猜测法””方法:方法:通过改变硬件结构来降低转移指令对流水线的通过改变硬件结构来降低转移指令对流水线的影响影响在先行指令缓冲栈的入口处设置一个简单的指令分析器,当检测到转移指令时,就把转移目标地址L送入先行程序计数器PC1中,同时保留当前PC1中的内容到另一寄存器中。
转移成功,猜测正确对转移指令对流水线不造成影响转移不成功,用保存下来的地址恢复PC1和PC软硬件共同配合,都往同一个方向去猜测软硬件共同配合,都往同一个方向去猜测3.3.两个先行指令缓冲栈两个先行指令缓冲栈向前条件转移,转移成功与不成功各50%在先行指令缓冲栈中增加一个先行目标缓冲栈增加一个先行目标缓冲栈按照转移成功的方向预取指令到先行目标缓冲栈中先行指令缓冲栈仍然按照转移不成功的方向继续预取指令如果转移不成功,则继续分析原来先行指令缓冲栈中指令如果转移成功,则分析新增设的先行目标缓冲栈中的指令5.3.5 5.3.5 动态分支预测技术动态分支预测技术动态转移预测技术的两个关键问题:动态转移预测技术的两个关键问题:如何记录转移历史信息如何记录转移历史信息如何根据记录的转移历史信息预测转移方向如何根据记录的转移历史信息预测转移方向记录转移历史信息的方法有三种:记录转移历史信息的方法有三种:(1)(1)最近一次或几次转移是否成功的信息记录在转移最近一次或几次转移是否成功的信息记录在转移指令中指令中(2)(2)用一个高速缓冲栈保存条件转移指令的转移目标用一个高速缓冲栈保存条件转移指令的转移目标地址地址(3)(3)用用CacheCache保存转移目标地址之后的保存转移目标地址之后的n n条指令条指令1. 1. 在指令在指令CacheCache中记录转移历史信息中记录转移历史信息在指令Cache中专门设置一个字段,称为“转移历史表”。
在执行转移指令时,把转移成功或不成功的信息记录在这个表中当下次再执行到这条指令时,转移预测逻辑根据“转移历史表”中记录的信息预测转移成功或不成功只记录最近一次转移是否成功的历史信息只记录最近一次转移是否成功的历史信息如果“转移历史表”中记录的内容是“T”,则预测转移成功,如果记录的是“N”,则按照转移不成功的方向继续取指令并用实际转移是否成功的信息来修改“转移历史表” 记录最近两次转移是否成功的历史信息记录最近两次转移是否成功的历史信息图中采用偏向成功的预测策略偏向成功的预测策略:只有历史上最近两次执行这条转移指令时转移都没有成功,本次才预测转移不成功也可以采用其他预测策略“转移历史表”的修改规则和转移预测规则可以有多种多样,记录转移预测是否成功的信息用最近预测是否成功的信息作为是否转移的依据当当““转移历史表转移历史表””是空白时是空白时,可以有两种做法:在“转移历史表”中预置转移历史信息根据指令本身的偏移字段的符号来预测转移的方向 如果偏移字段为负,则预测转移成功,否则预测转移不成功主要优点:不必专门设置转移缓冲栈,不必专门设置转移缓冲栈,所记录的转移历史信息比较少所记录的转移历史信息比较少。
例如:DEC公司的Alpha 21064处理机就采用了这种转移预测方法,在它的一级指令Cache中有一个专门的“转移历史表”字段2.2.设置转移目标地址缓冲栈设置转移目标地址缓冲栈用高速缓冲栈保存最近用高速缓冲栈保存最近k k条转移指令的条转移指令的““转移历史表转移历史表””和转移目标地址和转移目标地址当前指令地址与转移目标缓冲栈中的所有转移指令地址进行比较;如果发现有相等的,则根据所记录的历史信息预测本次转移方向根据某种规则修改“转移历史表”3.3.设置转移目标指令缓冲栈设置转移目标指令缓冲栈把上面方法中的“转移目标地址”字段改为存放转移字段改为存放转移目标地址之后的目标地址之后的n n条指令预测转移方向的规则和修改“转移历史表”的规则与上面的方法相同5.3.6 5.3.6 提前形成条件码提前形成条件码必要性:对提高流水线的性能非常有效可能性:可在运算开始或中间产生条件码可在运算开始或中间产生条件码对于乘除法,两个源操作数的符号相同结果为正,符号相反结果为负对于乘法,有一个操作数为0,则乘积为0被除数为0,商为0; 除数为0,除法结果溢出同号加或异号减,结果符号与第一操作数相同异号加或同号减,结果的符号与绝对值大的操作数相同溢出及是否为0可以通过一个比较器提前产生只要在一个时钟周期之内产生条件码,流水线就不会“断流”。
如Amdahl470V/6在运算部件的入口处设置有一个LOCK部件,提前形成条件码把产生条件码与使用条件码的指令分开把产生条件码与使用条件码的指令分开 LOAD R1,NUM ;循环次数初值装入R1 LOOP:…… ;循体开始 …… DEC R1 ;循环次数减“1” BNE LOOP ;测试循环是否则结束 HALT ;程序结束 NUM: n可以编译成如下程序:可以编译成如下程序: LOAD R1,NUM ;循环次数装入R1中 LOOP:LDEC R1 ; ;一条专用的一条专用的 ; ;循环次数减循环次数减1 1指令指令 …… ;循体开始 …… LBNE LOOP ; ;一条专用的测试循环一条专用的测试循环 ; ;是否结束的指令是否结束的指令 HALT ;程序结束 NUM: n ;循环次数指令指令LDECLDEC和和LBNELBNE使用专用的条件码寄存器使用专用的条件码寄存器5.3.7 5.3.7 精确断点与不精确断点精确断点与不精确断点对于输入输出设备的中断服务,实际上不需要有精确对于输入输出设备的中断服务,实际上不需要有精确断点。
断点比较简单的处理方法是:让已经进入流水线的所有指令都执行完成,断点就是最后进入流水线的那条指令的地址对于程序性错误和机器故障等引起的中断,它们出现对于程序性错误和机器故障等引起的中断,它们出现的概率很低,处理原则:的概率很低,处理原则:不在于缩短时间,关键是不在于缩短时间,关键是要正确保存现场和正确恢复断点要正确保存现场和正确恢复断点不精确断点不精确断点(Imprecise),流水线可以不断流流水线可以不断流需要的硬件比较少,控制逻辑比较简单需要的硬件比较少,控制逻辑比较简单中断响应时间加长中断响应时间加长 采用不精确断点法可能会发生如下两个问题:采用不精确断点法可能会发生如下两个问题:(1)(1)程序的调试困难程序的调试困难调试程序时要设置断点,程序员通过查看断点处的中间执行结果判断程序是否正确但由于不精确断点,程序不能准确中断,因此,难于调试早期的流水线处理机,多采用不精确断点法近期的流水线处理机一般都采用精确断点法(2)(2)程序执行的结果可能出错,例如:程序执行的结果可能出错,例如: i i::FADD R1, R2 FADD R1, R2 ;;(R1)(R1)++(R2)→R1(R2)→R1 i+1 i+1::FMUL R3, R1 FMUL R3, R1 ;;(R3)×(R1)→R3(R3)×(R1)→R3当第i条指令执行到S6段时发现浮点加法结果溢出,于是发出中断服务申请。
由于采用不精确断点法,已经进入流水线的第i+1条指令将执行完成;因为第i+1条指令使用了不正确的R1,所以浮点乘法的执行结果是不正确的采用精确断采用精确断(Precise)(Precise)点法,要设置一定数量的后援点法,要设置一定数量的后援寄存器寄存器,,把整个流水线中所有指令的执行结果和现场都保存下来5.4 5.4 动态调度技术动态调度技术5.4.1 顺序流动与乱序流动顺序流动与乱序流动5.4.2 乱序流动中的数据相关乱序流动中的数据相关5.4.3 数据重定向方法数据重定向方法5.4.4 Tomasulo动态调度算法动态调度算法实现方法:实现方法: 由硬件动态调整指令执行顺序,以减少数据相关造由硬件动态调整指令执行顺序,以减少数据相关造成的影响成的影响主要优点:主要优点:能够处理在编译时无法确定的相关,并简化编译器设计在其他流水线机器上编译的目标代码也能够高效运行用静态调度法生成的代码也能在动态调度法的机器中运行主要缺点:主要缺点:指令级并行度低,因为只能在比较小的范围内寻找并行性5.4.1 5.4.1 顺序流动与乱序流动顺序流动与乱序流动1.1.顺序流动方式:顺序流动方式:任务按顺序流入流水线任务按顺序流入流水线, ,也按顺序也按顺序流出流水线流出流水线把如下一段程序输入到这条流水线中: k: R0←(R1) k+1: …… k+2: R2←(R0)+(R3) k+3: …… k+4: …… k+5: ……指令指令k+2k+2无法继续执行,要在功能段无法继续执行,要在功能段S2中等待。
中等待后续的指令后续的指令k+4k+4、、k+5k+5、、…………等也不能进入流水线等也不能进入流水线功能段功能段S3、、S4、、S5将逐渐空闲将逐渐空闲缺点:缺点:吞吐率和效率降低吞吐率和效率降低优点:优点:流水线的控制逻辑比较简单流水线的控制逻辑比较简单流水线流水线““断流断流””,有些功能段,有些功能段““空闲空闲””2.2.乱序乱序(Out of order)流动方式:流动方式:指令流出流水线的顺序与流入指令流出流水线的顺序与流入流水线的顺序不同流水线的顺序不同又称为错序流动方式、无序流动方式、异步流动方式等5.4.2 5.4.2 乱序流动中的数据相关乱序流动中的数据相关在乱序流动方式中,可能发生三种数据相关在乱序流动方式中,可能发生三种数据相关 写写相关写写相关 k: LOAD F1, A ;F1(A) 写读相关写读相关 k+1:FADD F2, F1 ;F2(F2)+(F1) k+2:FMUL F1, F3 ;F1(F1)(F3) k+3:STORE F1, B ;B(F1)读写相关读写相关(1)写读相关:写读相关:指令k与指令k+1之间关于F1的相关,又称为数据相关、先写后读相关、流相关、数据相关、先写后读相关、流相关、WR相关、相关、RAW相关相关等。
(2)读写相关:读写相关:指令k+1与指令k+2之间关于F1的相关,变量名相关、先读后写相关、反相关、RW相关、WAR相关等3)写写相关:写写相关:指令k与指令k+2左边的F1之间的相关关系称为:输出相关、写写相关、WW相关、WAW相关或写后再写相关等有时把相关相关称为“冒险冒险”(hazard)、“竟争竟争” (competition)等在程序执行过程中,只有避免相关,执行结果才是正在程序执行过程中,只有避免相关,执行结果才是正确的 三种数据相关可以用下列关系式来表示:三种数据相关可以用下列关系式来表示: 对于写读相关 D(i) ∩ S(j) ≠ 对于读写相关 S(i) ∩ D(j) ≠ 对于写写相关 D(i) ∩ D(j) ≠ 5.4.3 5.4.3 数据重定向方法数据重定向方法1.1.三种数据相关的重定向三种数据相关的重定向 重定向之前,j只能在i之后执行 重定向之后,可以做到:(1)(1)写读相关,写读相关,j j与与i i可以同时执行可以同时执行 即专用数据通路即专用数据通路(2)(2)写写相关,写写相关,先后顺序无关先后顺序无关(3)(3)读写相关,读写相关,先后顺序无关先后顺序无关 后两种情况又称为后两种情况又称为““变量换名技术变量换名技术””2.2.变量换名技术变量换名技术用来自动消除读写数据相关读写数据相关和写写数据相关写写数据相关规则:一个变量只允许定值一次一个变量只允许定值一次在三种数据相关中,实际上只有写读数据相关必须依靠硬件、或采用软硬件结合的方法来解决 解决方法:推后处理推后处理或专用数据通路专用数据通路在上面的数据重定向图中,把B换成了B’,并在以后的都引用B’读写数据相关和写写数据相关就不存在了。
一个实际例子:Loop: LD F0, 0(R1) ADD F0, F2 SD 0(R1), F0 LD F0, -8(R1) ADD F0, F2 SD -8(R1), F0 LD F0, -16(R1) ADD F0, F2 SD -16(R1), F0 LD F0, -24(R1) ADD F0, F2 SD -24(R1), F0 SUBI R1, R1, #32 BNEZ R1, LoopLoop: LD F0, 0(R1) LD F4, -8(R1) LD F6, -16(R1) LD F8, -24(R1) ADD F0,F2 ADD F4,F2 ADD F6,F2 ADD F8,F2 SD 0(R1), F0 SD -8(R1), F4 SUBI R1, R1, #32 SD -16(R1), F6 BNEZ R1, Loop SD -24(R1), F83.3.一个简单的程序:一个简单的程序: k: LOAD F1, A k+1: FADD F1, F2 k+2: FMUL F1, F3 k+3: STORE F1, B专门设置:A→FADDA→FADD、FMUL→BFMUL→B、、FADD→FMULFADD→FMUL三条专用路径。
撤消:F1→FADD、F1→FMUL、FADD→F1 、A→F1的路径5.4.4 Tomasulo5.4.4 Tomasulo动态调度算法动态调度算法实用的动态调度算法主要有两种:(1)集中控制:CDC计分牌计分牌(scorebord)算法, 最先在CDC 6600大型机中采用2)分散控制:TomasuloTomasulo算法算法, , 公共数据总线公共数据总线法,令牌法等最早在大型机IBM 360/91的浮点处理部件中被采用以上面的一段程序为例说明TomasuloTomasulo算法算法k: LOAD F1, Ak+1: FADD F1, F2k+2: FMUL F1, F3k+3: STORE F1, B5.5 5.5 超标量处理机超标量处理机5.5.1 基本结构基本结构5.5.2 单发射与多发射单发射与多发射5.5.3 多流水线调度多流水线调度5.5.4 资源冲突资源冲突5.5.5 超标量处理机性能超标量处理机性能三种主流处理机:三种主流处理机: 超标量处理机超标量处理机 超流水线处理机超流水线处理机 超标量超流水线处理机超标量超流水线处理机5.5.1 5.5.1 基本结构基本结构普通标量流水线处理机:普通标量流水线处理机: 一条指令流水线一条指令流水线,一个多功能操作部件一个多功能操作部件, 每个时钟周期平均执行指令的条数小于1。
多操作部件标量处理机:多操作部件标量处理机: 一条指令流水线一条指令流水线,多个独立的操作部件,多个独立的操作部件, 指令级并行度小于1超标量处理机典型结构:超标量处理机典型结构: 多条并行工作的指令流水线多条并行工作的指令流水线,多个独立的操作部件,多个独立的操作部件, 指令级并行度(指令级并行度(ILP)大于)大于1 MotorolaMotorola公司的公司的MC88110MC88110有10个操作部件两个寄存器堆:整数部件通用寄存器堆,32个32位寄存器浮点部件扩展寄存器堆,32个80位寄存器缓冲深度为4的先行读数栈缓冲深度为3的后行写数栈两个独立的高速Cache中,各为8KB,采用两路组相联方式转移目标指令Cache,用于存放另一条分支上的指令5.5.2 5.5.2 单发射与多发射单发射与多发射1.1.单发射处理机:单发射处理机:每个周期只取一条指令、只译码一条指令,只执行一每个周期只取一条指令、只译码一条指令,只执行一条指令,只写回一个运算结果条指令,只写回一个运算结果取指令部件和指令译码部件各设置一套;只设置一个多功能操作部件或设置多个独立的操作部件;操作部件中可以采用流水线结构,也可以不采用流水线结构。
目标是每个时钟周期平均执行一条指令,ILP的期望值为12.2.多发射处理机:多发射处理机:每个周期同时取多条指令、同时译码多条指令,同时每个周期同时取多条指令、同时译码多条指令,同时执行多条指令,同时写回多个运算结果执行多条指令,同时写回多个运算结果多个取指令部件,多个指令译码部件和多个写结果部多个取指令部件,多个指令译码部件和多个写结果部件设置多个指令执行部件,设置多个指令执行部件,有些指令执行部件采用流水线结构目标是每个时钟周期平均执行多条指令,ILP的期望值大于13.3.超标量处理机:超标量处理机:有两条或两条以上能同时工作的指令流水线先行指令窗口先行指令窗口::能够从指令Cache中预取多条指令,能够对窗口内的指令进行数据相关性分析和功能部件冲突检测例如:例如:Intel公司的i860、i960、Pentium,Motolora公司的MC88110,IBM公司的Power 6000,TI公司生产SuperSPARC等操作部件的个数一般多于每个周期发射的指令条数通常为4 个至16个操作部件超标量处理机的指令级并行度:超标量处理机的指令级并行度:1<<ILP<<m5.5.3 5.5.3 多流水线调度多流水线调度顺序发射(in-order issue)与乱序发射(out-order issue):指令发射顺序是按照程序中指令排列顺序进行的指令发射顺序是按照程序中指令排列顺序进行的称为顺序发射称为顺序发射顺序完成(in-order completion)与乱序完成(out-order completion):指令完成顺序是按照程序中指令排列指令完成顺序是按照程序中指令排列顺序进行的称为顺序完成顺序进行的称为顺序完成多流水线的调度主要有三种方法:多流水线的调度主要有三种方法:顺序发射顺序完成顺序发射顺序完成顺序发射乱序完成顺序发射乱序完成乱序发射乱序完成乱序发射乱序完成以如下以如下6 6条指令组成的程序为例,说明这三种调度方条指令组成的程序为例,说明这三种调度方法法 I1:LOAD R1, A ;R1←(A) I2:FADD R2, R1 ;R2←(R2)+(R1) I3:FMUL R3, R4 ;R3←(R3)×(R4) I4:FADD R4, R5 ;R4←(R4)+(R5) I5:DEC R6 ;R6←(R6)-1 I6:FMUL R6, R7 ;R6←(R6)+(R7)6条指令中有4个数据相关,包括2个写读相关,1个读写相关和1个写写相关。
1.1.顺序发射顺序完成顺序发射顺序完成 共用共用1010个时钟周期完成个时钟周期完成 还有有8 8个空闲的时钟周期个空闲的时钟周期2.2.顺序发射乱序完成顺序发射乱序完成 总的执行时间为总的执行时间为9 9个时钟周期个时钟周期, 节省了一个时钟周期节省了一个时钟周期少了少了5 5个空闲时钟周期个空闲时钟周期3. 3. 乱序发射乱序完成乱序发射乱序完成没有空闲周期,功能部件得到充分利用没有空闲周期,功能部件得到充分利用 总的执行时间为总的执行时间为8个周期个周期,节省节省2个周期5.5.4 5.5.4 资源冲突资源冲突如果操作部件采用流水线结构,发生资源冲突的可能性很小;如果不采用流水线结构,发生资源冲突的可能性就比较大下面是一个由4条指令的程序例子: I1:FADD R0, R1 ;R0←(R0)+(R1) I2:FMUL R2, R3 ;R2←(R2)×(R3) I3:FADD R4, R5 ;R4←(R4)+(R5) I4:FMUL R6, R7 ;R6←(R6)+(R7)•操作部件不采用流水线:操作部件不采用流水线: 做完做完4 4条指令总共用了条指令总共用了1111个周期,个周期, 有有5 5个空闲周期个空闲周期。
操作部件采用流水线:操作部件采用流水线: 做完做完4 4条指令共用条指令共用8 8个周期,个周期, 少用少用3 3个周期操作部件采用流水线结构的原因分析操作部件采用流水线结构的原因分析假每个周期发射m条指令,操作部件的延迟时间为k个周期,如果操作部件不采用流水线结构,则使用同一个操作部件的两条指令应该至少相差至少相差m×k如果操作部件采用k段流水线结构,则使用同一个操作部件的两条指令只需相差只需相差m或或m以上以上指令流水线的段数k一般在4至10之间,每个时钟周期发射的指令条数m在2至4之间取中间值,k=7,m=3为了不发生资源冲突,如果操作部件不采用流水线结构, 两条使用同一个功能部件的指令序号必须相差两条使用同一个功能部件的指令序号必须相差21或或21以上如果操作部件采用流水线结构, 两条使用同一个功能部件的指令序号只需要相差两条使用同一个功能部件的指令序号只需要相差3或或3以上因此,在超标量处理机中,操作部件一般要采用流水线因此,在超标量处理机中,操作部件一般要采用流水线结构 如果由于某种原因,操作部件不能采用流水线结构,则必须设置多个相同种类的操作部件普通标量处理机,希望相同操作连续出现。
只有连续出现相同操作的指令序列时,流水线的效率才能得到充分发挥超标量处理机超标量处理机则正好相反,希望相同操作不要连续出希望相同操作不要连续出现现相同操作的指令序列连续出现时,会发生资源冲突;要求相同操作的指令能够相对均匀地分布在程序中超标量处理机的这种要求正好符合一般标量程序的特超标量处理机的这种要求正好符合一般标量程序的特点点5.5.5 5.5.5 超标量处理机性能超标量处理机性能单流水线普通标量处理机的指令级并行度记作(1, 1),超标量处理机的指令级并行度记作(m, 1),超流水线处理机的指令级并行度记作(1, n),而超标量超流水线处理机的指令级并行度记作(m, n)在理想情况下,N条指令在单流水线标量处理机上的执行时间为: T(1, 1)==(k++N--1) t在每个周期发射m条指令的超标量处理机上执行的时间为: 超标量处理机相对于单流水线标量处理机的加速比为:超标量处理机的加速比的最大值为:S( (m,1),1)MAX==m5.6 5.6 超流水线处理机超流水线处理机5.6.1 指令执行时序指令执行时序5.6.2 典型处理机结构典型处理机结构5.6.3 超流水线处理机性能超流水线处理机性能超流水线处理机的两种定义:超流水线处理机的两种定义:在一个周期内分时发射多条指令的处理机指令流水线的段数大于等于8的流水线处理机提高处理机性能的两种方法:提高处理机性能的两种方法:通过增加硬件资源来提高处理机性能通过各部分硬件的重叠工作来提高处理机性能两种不同并行性:两种不同并行性:超标量处理机采用的是空间并行性。
超标量处理机采用的是空间并行性超流水线处理机采用的是时间并行性超流水线处理机采用的是时间并行性5.6.1 5.6.1 指令执行时序指令执行时序每隔每隔1/n个时钟周期发射一条指令个时钟周期发射一条指令, 即处理机的流水线周期为1/n个时钟周期5.6.2 5.6.2 典型处理机结构典型处理机结构MIPS R4000MIPS R4000处理机:处理机: 每个时钟周期包含两个流水段每个时钟周期包含两个流水段是一种很标准的超流水线处理机结构指令流水线有8个流水段指令Cache和数据Cache的容量各8KB,每个时钟周期可以访问Cache两次,在一个时钟周期内可以从指令Cache中读出两条指令,从数据Cache中读出或写入两个数据主要运算部件有整数部件和浮点部件如果在LOAD指令之后的两条指令中,任何一条指令要在它的EX流水级使用这个数据,则指令流水线要暂停一个时钟周期5.6.3 5.6.3 超流水线处理机性能超流水线处理机性能指令级并行度为(1,n)的超流水线处理机,执行N条指令所的时间为:超流水线处理机相对于单流水线普通标量处理机的加速比为: 加速比的最大值为:S(1, n)MAX=n5.7 5.7 超标量超流水线处理机超标量超流水线处理机一个时钟周期发射一个时钟周期发射m次,每次发射次,每次发射n条指令条指令 5.7.1 指令执行时序指令执行时序5.7.2 典型处理机结构典型处理机结构5.7.3 超标量超流水线处理机性能超标量超流水线处理机性能5.7.4 三种处理机的性能比较三种处理机的性能比较5.7.1 5.7.1 指令执行时序指令执行时序5.7.2 5.7.2 典型处理机结构典型处理机结构DEC公司的Alpha处理机为典型的超标量超流水线结构超标量超流水线结构。
主要由四个功能部件和两个Cache组成:整数部件EBOX 浮点部件FBOX 地址部件ABOX 中央控制部件IBOX 指令Cache和数据Cache在EBOX内还有多条专用数据通路,可以把运算结果直接送到执行部件中央控制部件IBOX能够同时完成: 同时读出两条指令; 同时对两条指令进行译码,并作相关性检测; 如果资源和相关性允许,IBOX就把两条指令同时发射给EBOX、ABOX和FBOX三个执行部件中的两个指令流水线的控制方式: 采用顺序发射乱序完成顺序发射乱序完成在指令Cache中有一个转移历史表,实现条件转移的动态预测Alpha 21064Alpha 21064处理机共有处理机共有三条指令流水线:三条指令流水线:(1)(1)整数操作流水线为整数操作流水线为7 7个流水段个流水段,其中,取指令2个流水段、分析指令2个流水段、运算2个流水段、写结果1个流水段2)(2)访问存储器流水线为访问存储器流水线为7 7个流水段个流水段3)(3)浮点操作流水线分为浮点操作流水线分为1010个流水段个流水段,其中,浮点执行部件FBOX的延迟时间为6个流水段 三条指令流水线的平均段数为三条指令流水线的平均段数为(7+7+10)/3=8(7+7+10)/3=8,且每个时钟周期发射两条指令。
因此,Alpha 21064处理机为超标量超流水线处理机5.7.3 5.7.3 超标量超流水线处理机的性能超标量超流水线处理机的性能指令级并行度为(m,n)的超标量超流水线处理机,连续执行N条指令所需要的时间为:超标量超流水线处理机相对于单流水线标量处理机的加速比为:在理想情况下,超标量超流水线处理机加速比的最大值为: S(m,n)(m,n)MAX==m n5.7.4 5.7.4 三种标量处理机的性能比较三种标量处理机的性能比较 从三种标量处理机的性能曲线中,可以得出如下结从三种标量处理机的性能曲线中,可以得出如下结论:论:1.1.三种处理机的性能关系三种处理机的性能关系超标量处理机的相对性能最高,其次是超标量超流水超标量处理机的相对性能最高,其次是超标量超流水线处理机,超流水线处理机的相对性能最低,线处理机,超流水线处理机的相对性能最低,主要原因如下:(1)超标量处理机功能部件的冲突比超流水线处理机小在指令执行过程中的许多功能段,超标量处理机都重复设置有多个相同的指令执行部件,而超流水线处理机只是把同一个指令执行部件分解为多个流水级(2)条件转移等操作造成的损失,超流水线处理机要比超标量处理机大。
由于超流水线处理机采用深度流水线结构,对条件转移等操作比超标量处理机敏感3)超流水线处理机的启动延迟通常要比超标量处理机大 超标量处理机在每个时钟周期的一开始就同时发射多条指令, 超流水线处理机把一个时钟周期平均分成多个流水线周期,每个流水线周期只发射一条指令2.2.实际指令级并行度与理论指令级并行度的关系实际指令级并行度与理论指令级并行度的关系 当横坐标给出的理论指令级并行度比较低时,处理机的实际指令级并行度的提高比较快 当理论指令级并行度进一步增加时,处理机实际指令级并行度提高的速度越来越慢 在实际设计超标量、超流水线、超标量超流水线处理机的指令级并行度时要适当,否则,有可能造成花费了大量的硬件,但实际上处理机所能达到的指令级并行度并不高 目前,一般认为,目前,一般认为,m m 和和 n n 都不要超过都不要超过 4 43.3.最大指令级并行度最大指令级并行度 一个特定程序由于受到本身的数据相关和控制相关的限制,它的指令级并行度的最大值是有限的,是有个确定的值 最大指令级并行度由程序自身的语义决定,与这个程序运行在那一种处理机上及采用何种方法开发并行性无关。
对于某一个特定的程序,图中的三条曲线最终都要收拢到同一个点上 对于各个不同程序,这个收拢点的位置也是不同的本章重点:本章重点:1.1.线性流水线的性能分析及计算线性流水线的性能分析及计算2.2.非线性流水线的调度方法非线性流水线的调度方法3.3.数据相关的种类,发生的情况及解决的办法数据相关的种类,发生的情况及解决的办法4.4.分支预测技术分支预测技术5.5.乱序流动方式中的数据相关及解决办法乱序流动方式中的数据相关及解决办法6.6.单发射、多发射与先行指令窗口单发射、多发射与先行指令窗口7.7.超标量、超流水线处理机的结构及性能分析超标量、超流水线处理机的结构及性能分析 练习题练习题: :5.5 5.6 5.8 5.15 5.17 5.185.5 5.6 5.8 5.15 5.17 5.18。
