您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 公司方案 > 计算机组成chap07_2.
西安电子科技大学计算机学院2019年12月17日01:38:11计算机组成与体系结构第7章流水线技术与指令级并行27.5指令流水线的性能提高结构相关数据相关控制相关7.6指令级并行概念7.7提高指令级并行的技术乱序执行、寄存器重命名推测执行7.8多发射处理器超标量处理器超长指令字处理器7.9指令级并行的限制西安电子科技大学计算机学院2019年12月17日01:38:12计算机组成与体系结构第7章流水线技术与指令级并行7.5指令流水线的性能提高47.5.1流水线的基本性能问题限制指令流水线性能提高的因素:流水线的深度受限于流水线的延迟、流水线段的时间不均衡和流水线的额外开销。指令执行时可能存在的相关(dependence)或“冒险(hazard)”问题。相关:相邻或相近的两条指令因存在某种关联,后一条指令不能在原指定的时钟周期开始执行。相关或冒险有3类:结构(structural)相关:资源冲突数据(data)相关:一条指令需要用到前面某条指令的结果控制(control)相关:分支等转移类指令/其他能够改变PC值的指令全局性相关局部性相关57.5.1流水线的基本性能问题有停顿的流水线的CPI为:CPI=理想流水线CPI+(结构相关停顿+数据相关停顿+控制相关停顿)/指令数有停顿的流水线的加速比为:消除相关、减少停顿是提高已有流水线性能最重要的手段。周期每条指令的流水线停顿流水线深度加速比167.5.2结构相关有两种情形会导致结构相关:部分功能单元没有充分流水。解决办法:将流水线设计的更合理。资源冲突(resourceconflicts):当两个以上流水线段需要同时使用同一个硬件资源时,发生冲突。解决方法:增加资源副本:存储器冲突:哈佛结构两个ALU:取指令-地址加法器改变资源以便它们能并发的使用。不相关的数据尽量使用不同的寄存器寄存器重命名通过延迟(或暂停)流水线的冲突段或在冲突段插入流水线气泡(气泡在流水线中只占资源不做实际操作),使各段“轮流”使用资源。77.5.3数据相关指令在流水线中的重叠执行有可能改变指令读/写操作数的顺序。当一条指令的结果还未有效生成,该结果就被作为后续指令的操作数时,数据相关出现。87.5.3数据相关相关类型:先写后读(ReadAfterWrite)先读后写(WriteAfterRead)写-写(WriteAfterWrite)【例】4级指令流水线,各级分别为取指IF、读数RD、执行EX和写结果WB。简单指令(第1、2、4、6条指令)在EX1段执行,需1个时钟周期;复杂指令(第3、5条指令)在EX2段执行,需3个时钟周期。异步流水线带来的问题。97.5.3数据相关指令12345678910相关类型1.R1+R2→R0IFRDEX1WBRAW2.R0-R3→R4IFRDEX1WB3.R0→10H(R5)IFRDEX2-1EX2-2EX2-3WBWAR4.R6→R0IFRDEX1WB5.R1×R2→R0IFRDEX2-1EX2-2EX2-3WBWAW6.R1+R2→R0IFRDEXWB相关造成指令2、3和6的结果错误。图7.21典型的数据相关类型107.5.3数据相关解决办法:采用直通(forwarding)技术(相关直接通路)将运算结果经相关直接通路直接送入所需部件。增加专用硬件(推后法)增加流水线互锁(pipelineinterlock)硬件。互锁硬件先要检测流水线中指令的数据相关性,当互锁硬件发现数据相关时,使流水线工作停顿下来,直到相关消失为止。利用编译器流水线调度/指令调度:编译器可以对指令重新排序或插入空操作指令,使得加载任何冲突数据的操作被延迟,但对程序逻辑或输出不受影响。117.5.3数据相关解决办法:采用直通(forwarding)技术(相关直接通路)图7.22采用直通技术的流水线IMRDMRALU注:虚线为直通专用通路,IM为指令储存器,R为寄存器组,ALU为运算器,DM为数据储存器指令储存器寄存器组寄存器组数据储存器127.5.3数据相关解决办法:采用直通(forwarding)技术(相关直接通路)k:R0←(R1)k+1:……k+2:R2←(R0)+(R3)k+3:……k+4:……k+5:…………S1S2S3S4S5S6寄存器R0输入输出读写k+5k+3k+3k+3k+3k+4S1k+4k+3k+2k+1k正常流动功能段titi+1ti+2ti+3ti+4k+2k+1kk-1k-2S2S3S4S5S6k+2k+2k+2k+3k+1kk-1k+1kk+1k+2空闲空闲空闲空闲空闲空闲空闲空闲空闲时钟周期t功能段S137.5.3数据相关解决办法:采用直通(forwarding)技术(相关直接通路)k:R0←(R1)k+1:……k+2:R2←(R0)+(R3)k+3:……k+4:……k+5:…………S1S2S3S4S5S6寄存器R0输入输出相关专用通路读写k+3k+3k+4k+5S1功能段titi+1ti+2ti+3k+2k+1kk-1k-2S2S3S4S5S6k+2k+2k+2k+1kk-1空闲时钟周期t功能段Skk+3k+4k+3空闲空闲k+1k+1147.5.3数据相关解决办法:采用直通(forwarding)技术(相关直接通路)k:R0←(R1)k+1:……k+2:R2←(R0)+(R3)k+3:……k+4:……k+5:…………S1S2S3S4S5S6寄存器R0输入输出读写k+5k+2S1k+4k+3k+2k+1kk-3kk-1k-2S2S3S4S5S6k+1时钟周期t功能段S正常流动功能段titi+1ti+2ti+3ti+4ti+5k+3(k+2)kk-1k-2k+1k+4kk-1k+1k+3k+4(k+2)k+5kk+1k+3k+4k+5(k+2)k+6k+1k+3k+4k+5(k+6)k+2k+7k+3k+4k+5k+2(k+7)k+6k+8157.5.3数据相关解决办法:采用直通(forwarding)技术(相关直接通路)异步流动方式引起:“写-写相关”“先读后写相关”k:R0←R1×R4k+1:R6←R5+1k+2:R2←R0×R3k+3:R3←R4-1k+4:R2←R5k+5:…………167.5.4控制相关使程序执行顺序发生改变的转移指令有两类:无条件转移指令(如无条件跳转、调用、返回指令等)某些CPU(如UltraSPARCIII):紧跟在无条件转移指令之后的指令必须执行。另一些CPU:采取相对复杂的方法,如提前计算出转移目标地址。条件分支转移指令(为零跳转、循环控制指令等)不仅需要延迟槽,而且一直到流水线的深处,取指单元才能知道到哪里去取下一条指令。条件分支指令对流水线性能的影响远比无条件转移指令要大。分支延迟槽(branchdelayslot):程序中位于转移指令后面的存储单元位置。对条件分支指令的处理方法:177.5.4控制相关-对条件分支指令的处理方法1.冻结流水线2.预取分支目标3.多流4.循环缓冲器5.分支预测①静态分支预测预测分支不会发生预测分支总是发生由编译器预测测试法②动态分支预测分支历史表分支历史移位寄存器6.延迟分支7.加快和提前生成条件码187.5.4控制相关-对条件分支指令的处理方法一旦在指令译码段检测到分支指令,就在转移目标地址确定之前保存或删除所有紧随分支指令之后的指令,当分支指令从执行段流出、确定出新的PC值时,流水线才继续依据新PC值填充流水线。会严重地影响流水线的性能。早期的CPU。方法1:冻结(freeze)流水线B0B1B2基本块两路的条件分支197.5.4控制相关-对条件分支指令的处理方法当条件分支指令被识别时,除了紧随其后的指令外,分支目标也被预取,并保存到分支指令被执行。如果分支跳转发生,已预取到的目标指令可立刻执行。IBM360/91采用这种方法。方法2:预取分支目标(prefetchbranchtarget)207.5.4控制相关-对条件分支指令的处理方法在条件分支的两路上同时启动取指令操作,并将指令保存到分支指令被实际执行时。分支指令执行时,“真”的执行通路即刻可以获得。是对预取分支目标的发展。在IBM370/168和IBM3033中采用。方法3:多流(multiplestreams)217.5.4控制相关-对条件分支指令的处理方法将短循环程序整个装入指令缓冲器中,并暂停指令的预取操作,减少不必要的访存次数。同时,让流水时的循环出口恒猜选循环分支。IBM360/91:“向后8条”检查、循环方式工作状态方法4:循环缓冲器(loopbuffer)227.5.4控制相关-对条件分支指令的处理方法循环缓冲器是一个小的、非常高速的存储器,保存着最近获取的n条顺序的指令。如果分支发生,硬件首先检查分支目标是否在缓冲器中。如果在,下一条指令从缓冲器中获取。循环缓冲器有以下好处:当分支未发生时,顺序获取的指令已在缓冲器中。如果循环缓冲器有一定的容量,且目标地址仅仅是在分支指令之后的几个单元处,则当分支发生时,目标将已在缓冲器中。对常见的if-then和if-then-else语句有利。如果循环缓冲器大到足以容纳一个循环中的全部指令,则循环中的指令仅需从内存中读出一次。CDC的Star-100、6600、7600和CRAY-1。方法4:循环缓冲器(loopbuffer)237.5.4控制相关-对条件分支指令的处理方法方法5:分支预测(branchprediction)条件分支在流水线中的执行过程:因为第i条指令所需要的条件码由第i-1条指令给出;在一条由k个功能段的流水线中,第i-1条指令要等到第i+k-2条指令进入流水线时才能形成条件码。转移不成功,猜测正确,流水线的吞吐率和效率没有降低;转移成功,猜测错误,要先作废流水线中已经执行的i+1、i+2、……、i+k-2指令;然后再从分支点开始执行第p、p+1、……指令。一条k段流水线有k-2个功能段是浪费的。247.5.4控制相关-对条件分支指令的处理方法方法5:分支预测(branchprediction)猜选i+1和p中的一个分支继续流入流水线。时间ti+1i+2…i+k-3i+k-2i-1ipp+1…p+k-4p+k-3形成条件码的指令条件转移指令形成转移条件转移成功转移不成功指令的执行顺序指令在流水线中的流动方向257.5.4控制相关-对条件分支指令的处理方法可以采用的预测方法:预测分支不会发生(predictnevertaken)“出错检测处理”预测分支总是发生(predictalwaystaken)“循环”由编译器预测测试法(profiling)实际运行该程序(一般是在模拟器上),然后将有关信息送给编译器。方法5:分支预测(branchprediction)1.静态分支预测(staticbranchprediction)267.5.4控制相关-对条件分支指令的处理方法如果两个分支概率相近,选i+1、i+2、……不成功转移分支。转移的两个分支概率不均等,则猜选高概率的分支。如:软件猜测法,通过编译器尽量降低转移成功的概率。方法5:分支预测(branchprediction)1.静态分支预测(staticbranchprediction)277.5.4控制相关-对条件分支指令的处理方法方法5:分支预测(branchprediction)1.静态分支预测(staticbranchprediction)软件“猜测法”:通过编译器降低转移成功的概率。i←ni←ni←n循环体i≤0Yi←i-1Ni←i-1循环体i≤0YNYi>0i←i-1循环体N(a)原来程序(b)一般条件转移(c)复合型条件转移287.5.4控制相关-对条件分支指令的处理方法要保证猜错时可恢复分支点处原来的现场,3种方法:①只译码和准备好操作数,在转移条件码出现之前不运算。如:IBM360/91②执行,但不送回运算结果。
本文标题:计算机组成chap07_2.
链接地址:https://www.777doc.com/doc-2043929 .html