资源描述:
《流水线技术》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
第三章流水线技术3.1流水线的基本概念3.2DLX的基本流水线3.3流水线的相关3.4异常处理3.5DLX中多周期操作的处理3.6MIPSR4000流水线2022/7/151中国科学技术大学
1Review:性能评测平均CPI?每类指令的使用频度TypeCPIifortypeFrequencyCPIixfreqIiArith/Logic440%1.6Load530%1.5Store410%0.4branch320%0.6AverageCPI:4.12022/7/152中国科学技术大学
2是否可以使CPI<4.1?IdealMemoryWrAdrDinRAdr323232DoutMemWr32ALU3232ALUOpALUControl32IRWrInstructionReg32RegFileRaRwbusWRb5532busA32busBRegWrRsRtMux01RtRdPCWrALUSelAMux01RegDstMux0132PCMemtoRegExtendExtOpMux01320123416Imm32<<2ALUSelBMux1032ZeroZeroPCWrCondPCSrc32IorDMemDataRegALUOutBA在一条指令执行过程中下图有许多空闲部件可以让指令重叠执行??2022/7/153中国科学技术大学
3洗衣为例Ann,Brian,Cathy,Dave每人进行洗衣的动作:wash,dry,andfoldwasher需要30minutesDryer需要40minutes“Folder”需要20minutesABCD3.1流水线的基本概念2022/7/154中国科学技术大学
4SequentialLaundry顺序完成这些任务需要6小时如果采用流水作业,需要多长时间?ABCD3040203040203040203040206PM7891011MidnightTaskOrderTime2022/7/155中国科学技术大学
5流水线作业:尽可能让任务重叠进行流水作业完成四人的洗衣任务只需要3.5hoursABCD6PM7891011MidnightTaskOrderTime3040404040202022/7/156中国科学技术大学
6流水线技术要点流水线技术并不能提高单个任务的执行效率,它可以提高整个系统的吞吐率流水线中的瓶颈——最慢的那一段多个任务同时执行,但使用不同的资源其潜在的加速比=流水线的级数流水段所需时间不均衡将降低加速比流水线存在装入时间和排空时间,使得加速比降低由于存在相关问题,会导致流水线停顿2022/7/157中国科学技术大学
7指令流水线:CPU执行大量的指令,指令吞吐率非常重要DLX的指令格式3.2DLX的基本流水线Op312601516202125rsrtimmediateOp3126025Op312601516202125rsrtoffsetaddedtoPCrdRegister-Register(R-type)ADDR1,R2,R3561011Register-Immediate(I-type)SUBR1,R2,#3Jump/Call(J-type)JUMPendfunc(jump,jumpandlink,trapandreturnfromexception)所有指令相同长度在指令格式中寄存器位于同一位置只有Loads和Stores可以对存储器操作2022/7/158中国科学技术大学
8DLX数据通路一种简单实现MemoryAccessWriteBackInstructionFetchInstr.DecodeReg.FetchExecuteAddr.CalcLMDALUMUXMemoryRegFileMUXMUXDataMemoryMUXSignExtend4AdderZero?NextSEQPCAddressNextPCWBDataInstRDRS1RS2Imm2022/7/159中国科学技术大学
9基本操作(Step1&2)Step1-IFIR<--Mem[PC]---------fetchthenextinstructionfrommemoryNPC<--PC+4----------computethenewPCStep2-ID-instructiondecodeandregisterfetchstepA<--Regs[IR6..10]B<--Regs[IR11..16]可能读取的寄存器值没有用,但没有关系,译码后如果无用,以后操作就不用Imm((IR16)16##IR16-312022/7/1510中国科学技术大学
10基本操作-Step3,执行阶段根据译码的结果,有四种情况MemoryReferenceALUOutput<--A+(IR16)16##IR16..31---------effectiveaddressSMD<--B----------datatobewrittenifitisaSTORE--SMD(storememdata)=MDRRegister-RegisterALUinstructionALUOutput<--AopBRegister-ImmediateALUinstructionALUOutput<--Aop((IR16)16##IR16..31))Branch/JumpALUOutput<--NPC+(IR16)16##IR16..31cond<--Aop0---forconditionalbranchesA’svalueistheconditionbase(=forBEQZ)在简单的Load-Store机器中,不存在即需要计算存储器地址,指令地址,又要进行ALU运算的指令,因此可以将计算有效地址与执行合二为一,在一个流水段中进行。2022/7/1511中国科学技术大学
11Step4&Step5Step4MEM-memoryaccess/branchcompletionmemoryreferenceLMD<---Mem[ALUOutput]-------ifit’saload;LMD(loadmemorydata)=MDR或Mem[ALUOutput]<--SMDbranchif(cond)thenPC<--ALUOutputelsePC<--NPCforJumpstheconditionisalwaystrueStep5WB-writebackReg-RegALURegs[IR16..20]<--ALUOutputReg-ImmedALURegs[IR11..15]<--ALUOutputLoadRegs[IR11..15]<--LMD2022/7/1512中国科学技术大学
12这种结构是否可行模型是正确的,但没有优化还有其他选择指令和数据存储器是否可以分开采用一个长周期还是5个短周期实现2022/7/1513中国科学技术大学
13单周期和多周期控制多周期控制可实现指令重叠执行2022/7/1514中国科学技术大学
14DLX的基本流水线假设流水线周期为每步所花费的时间2022/7/1515中国科学技术大学
15为什么用流水线?假设执行100条指令单周期机器45ns/cyclex1CPIx100inst=4500ns多周期机器10ns/cyclex4.6CPI(duetoinstmix)x100inst=4600ns理想流水线机器10ns/cyclex(1CPIx100inst+4cycledrain)=1040ns2022/7/1516中国科学技术大学
16为什么用流水线(cont.)?-资源利用率高Instr.OrderTime(clockcycles)Inst0Inst1Inst2Inst4Inst3ALUImRegDmRegALUImRegDmRegALUImRegDmRegALUImRegDmRegALUImRegDmReg2022/7/1517中国科学技术大学
17流水线正常工作的基本条件各段间需要使用寄存器文件保存当前段传送到下一段的数据和控制信息存储器带宽是非流水的5倍2022/7/1518中国科学技术大学
18新的DLX数据通路(图3.12Page88)2022/7/1519中国科学技术大学
192022/7/1520中国科学技术大学
20Reviewlecture5流水线技术要点流水线技术并不能提高单个任务的执行效率,它可以提高整个系统的吞吐率流水线中的瓶颈——最慢的那一段多个任务同时执行,但使用不同的资源其潜在的加速比=流水线的级数流水段所需时间不均衡将降低加速比流水线存在装入时间和排空时间,使得加速比降低由于存在相关问题,会导致流水线停顿流水线正常工作的基本条件增加寄存器文件保存当前段传送到下一段的数据和控制信息存储器带宽是非流水的5倍2022/7/1521中国科学技术大学
21新的DLX数据通路(图3.12Page88)2022/7/1522中国科学技术大学
22在新的Datapath下各段的操作IFIF/ID.IR←Mem[PC];IF/ID.NPC,PC←(if((EX/MEM.opcode==branch)&EX/MEM.cond){EX/MEM.ALUOutput}else{PC+4});IDID/EX.A←Regs[IF/ID.IR[rs]];ID/EX.B←Regs[IF/ID.IR[rt]];ID/EX.NPC←IF/ID.NPC;ID/EX/IR←IF/ID.IR;ID/EX/Imm←sign-extend(IF/ID.IR[immediatefield]);EXALUinstructionEX/MEM.IR←ID/EX.IR;EX/MEM.ALUOutput←ID/EX.AfuncID/EX.B;orEX/MEM.ALUOoutput←ID/EX.AopID/EX.Imm;2022/7/1523中国科学技术大学
23LoadorstoreinstructionEX/MEM.IR←ID/EX.IREX/MEM.ALUOutput←ID/EX.A+ID/EX.ImmEX/MEM.B←ID/EX.BBranchinstructionEX/MEM.ALUOutput←ID/EX.NPC+(ID/EX.Imm<<2)EX/MEM.cond←(ID/EX.A==0);MEMALUInstructionMEM/WB.IR←EX/MEM.IRMEM/WB.ALUOutput←EX/MEM.ALUOutput;LoadorstoreinstructionMEM/WB.IR←EX/MEM.IR;MEM/WB.LMD←Mem[EX/MEM.ALUOutput];orMem[EX/MEM.ALUOutput]←EX/MEM.B;(store)2022/7/1524中国科学技术大学
24WBALUinstructionRegs[MEM/WB.IR[rd]]←MEM/WB.ALUOutput;orRegs[MEM/WB.IR[rt]]←MEM/WB.ALUOutput;ForloadonlyRegs[MEM/WB.IR[rt]]←MEM/WB.LMD2022/7/1525中国科学技术大学
25简化的Pipelining(图3.11Page87)Instr.OrderTime(clockcycles)RegALUDMemIfetchRegRegALUDMemIfetchRegRegALUDMemIfetchRegRegALUDMemIfetchRegCycle1Cycle2Cycle3Cycle4Cycle6Cycle7Cycle52022/7/1526中国科学技术大学
26流水线性能分析基本度量参数:吞吐率,加速比,效率吞吐率:单位时间内流水线所完成的任务数或输出结果数量最大吞吐率:流水线在连续流动达到稳定状态后所得到的吞吐率。S412345......n-1nS312345......n-1nS212345......n-1nS112345......n-1n2022/7/1527中国科学技术大学
27S4123..........nS3123..........nS2123…….nS1123n最大吞吐率取决于流水线中最慢的一段所需的时间最慢的一段是性能的瓶颈解决办法:串联:将最慢段进一步划分并联:增加部件2022/7/1528中国科学技术大学
28实际吞吐率:假设m段,完成n个任务,单位时间所实际完成的任务数。加速比:m段流水线的速度与等功能的非流水线的速度之比。效率:流水线的设备利用率。流水线性能分析举例例3.1p942022/7/1529中国科学技术大学
29例3.1时空图8765432112345678910111213141516171819202022/7/1530中国科学技术大学
302022/7/1531中国科学技术大学
31review:Pipelining指令流水线通过指令重叠减小CPI充分利用数据通路当前指令执行时,启动下一条指令其性能受限于花费时间最长的段检测和消除相关如何有利于流水线技术的应用所有的指令都等长只有很少的指令格式只用Load/Store来进行存储器访问2022/7/1532中国科学技术大学
32review流水线性能分析流水线技术应用的难度何在?:相关问题吞吐率、加速比、效率之间的关系2022/7/1533中国科学技术大学
333.3流水线的相关相关的基本概念结构相关数据相关控制相关2022/7/1534中国科学技术大学
34采用流水线技术带来的新的问题流水线相关结构相关:同一时间两种方式使用同一资源例如washer/dryer合在一起,IM和ID合在一起控制相关:试图在条件未评估之前,就做决定例如branchinstructions数据相关:在数据未准备好之前,就需要使用数据当前指令的执行需要上一条指令的结果使用等待策略总是可以解决相关流水线控制必须能检测相关,否则由软件设计来避免采用相应操作解决相关(or等待)2022/7/1535中国科学技术大学
35Mem单个存储器引起的结构相关Instr.OrderTime(clockcycles)LoadInstr1Instr2Instr3Instr4ALUMemRegMemRegALUMemRegMemRegALUMemRegMemRegALURegMemRegALUMemRegMemRegDetectioniseasyinthiscase!(righthalfhighlightmeansread,lefthalfwrite)2022/7/1536中国科学技术大学
36消除结构相关(图3.18Page98)Instr.OrderTime(clockcycles)LoadInstr1Instr2StallInstr3RegALUDMemIfetchRegRegALUDMemIfetchRegRegALUDMemIfetchRegCycle1Cycle2Cycle3Cycle4Cycle6Cycle7Cycle5RegALUDMemIfetchRegBubbleBubbleBubbleBubbleBubble2022/7/1537中国科学技术大学
37结构相关对性能的影响例如:如果每条指令平均访存1.3次,而每个时钟周期只能访存一次,那么在其他资源100%利用的前提下,平均CPI1.32022/7/1538中国科学技术大学
38流水线的加速比计算ForsimpleRISCpipeline,CPI=1:2022/7/1539中国科学技术大学
39例如:Dual-portvs.Single-port机器A:Dualportedmemory(“HarvardArchitecture”)机器B:Singleportedmemory,但其流水线实现时比非流水实现时钟频率快1.05倍IdealCPI=1forboth,Load指令CPI=2所执行的指令中Loads指令占40%SpeedUpA=PipelineDepth/(1+0)x(clockunpipe/clockpipe)=PipelineDepthCycleTimeunpipeb=1.05CycleTimepipeSpeedUpB=PipelineDepth/(1+0.4x1)x(cycleTimeunpipe/(cycletimepipe)=(PipelineDepth/1.4)x1.05=0.75xPipelineDepthSpeedUpA/SpeedUpB=PipelineDepth/(0.75xPipelineDepth)=1.33MachineA比MachineB快2022/7/1540中国科学技术大学
40Instr.Orderaddr1,r2,r3subr4,r1,r3andr6,r1,r7orr8,r1,r9xorr10,r1,r11RegALUDMemIfetchRegRegALUDMemIfetchRegRegALUDMemIfetchRegRegALUDMemIfetchRegRegALUDMemIfetchReg数据相关问题(图3.20Page100)Time(clockcycles)IFID/RFEXMEMWB2022/7/1541中国科学技术大学
41写后读相关(ReadAfterWrite(RAW))InstrJtriestoreadoperandbeforeInstrIwritesit由于实际的数据交换需求而引起的三种基本的数据相关I:addr1,r2,r3J:subr4,r1,r32022/7/1542中国科学技术大学
42读后写相关WriteAfterRead(WAR)InstrJwritesoperandbeforeInstrIreadsit编译器编写者称之为“anti-dependence”(反相关),是由于重复使用寄存器名“r1”引起的.DLX5段基本流水线不会有此类相关因为:所有的指令都是5段,并且读操作总是在第2段,而写操作在第5段I:subr4,r1,r3J:addr1,r2,r3K:mulr6,r1,r72022/7/1543中国科学技术大学
43写后写相关(WriteAfterWrite(WAW))InstrJwritesoperandbeforeInstrIwritesit.编译器编写者称之为“outputdependence”,也是由于重复使用寄存器名“r1”引起的.在DLX5段基本流水线中,也不会发生。因为所有指令都是5段,并且写操作都在第5段在后面的复杂的流水线中我们将会看到WAR和WAW相关I:subr1,r4,r3J:addr1,r2,r3K:mulr6,r1,r72022/7/1544中国科学技术大学
44Review-流水线技术要点流水线技术并不能提高单个任务的执行效率,它可以提高整个系统的吞吐率多个任务同时执行,但使用不同的资源流水线性能分析:吞吐率、加速比、效率流水线中的瓶颈——最慢的那一段其潜在的加速比=流水线的级数流水段所需时间不均衡将降低加速比流水线存在装入时间和排空时间,使得加速比降低由于存在相关问题,会导致流水线停顿结构相关、数据相关和控制相关2022/7/1545中国科学技术大学
45采用定向技术避免数据相关(图3.21Page102)Time(clockcycles)Instr.Orderaddr1,r2,r3subr4,r1,r3andr6,r1,r7orr8,r1,r9xorr10,r1,r11RegALUDMemIfetchRegRegALUDMemIfetchRegRegALUDMemIfetchRegRegALUDMemIfetchRegRegALUDMemIfetchReg2022/7/1546中国科学技术大学
46Instr.Orderlwr1,0(r2)subr4,r1,r6andr6,r1,r7orr8,r1,r9采用定向技术仍然存在相关(图3.23Page153)Time(clockcycles)RegALUDMemIfetchRegRegALUDMemIfetchRegRegALUDMemIfetchRegRegALUDMemIfetchReg2022/7/1547中国科学技术大学
47DMemTime(clockcycles)orr8,r1,r9Instr.Orderlwr1,0(r2)subr4,r1,r6andr6,r1,r7RegALUDMemIfetchRegRegIfetchALUDMemRegBubbleIfetchALUDMemRegBubbleRegIfetchALUBubbleReg2022/7/1548中国科学技术大学
48Tryproducingfastcodefora=b+c;d=e–f;assuminga,b,c,d,e,andfinmemory.Slowcode:LWRb,bLWRc,cADDRa,Rb,RcSWa,RaLWRe,eLWRf,fSUBRd,Re,RfSWd,Rd采用软件方法避免数据相关Fastcode:LWRb,bLWRc,cLWRe,eADDRa,Rb,RcLWRf,fSWa,RaSUBRd,Re,RfSWd,Rd2022/7/1549中国科学技术大学
49流水线相关检测部件能检测到的相关情况2022/7/1550中国科学技术大学
50review:Pipelining指令流水线通过指令重叠减小CPI充分利用数据通路当前指令执行时,启动下一条指令其性能受限于花费时间最长的段检测和消除相关如何有利于流水线技术的应用所有的指令都等长只有很少的指令格式只用Load/Store来进行存储器访问2022/7/1551中国科学技术大学
51review流水线性能分析流水线技术应用的难度何在?:相关问题吞吐率、加速比、效率之间的关系2022/7/1552中国科学技术大学
52Review-流水线技术要点流水线技术并不能提高单个任务的执行效率,它可以提高整个系统的吞吐率多个任务同时执行,但使用不同的资源流水线性能分析:吞吐率、加速比、效率流水线中的瓶颈——最慢的那一段其潜在的加速比=流水线的级数流水段所需时间不均衡将降低加速比流水线存在装入时间和排空时间,使得加速比降低由于存在相关问题,会导致流水线停顿结构相关、数据相关和控制相关2022/7/1553中国科学技术大学
53采用定向技术硬件所需做的修改MEM/WRID/EXEX/MEMDataMemoryALUmuxmuxRegistersNextPCImmediatemux2022/7/1554中国科学技术大学
54定向源为R-RALU操作的定向比较判断2022/7/1555中国科学技术大学
55定向源为ALU-imm操作的定向比较判断2022/7/1556中国科学技术大学
56定向源为Load操作的比较判定2022/7/1557中国科学技术大学
57reviewlecture6流水线技术应用的难度何在?:相关问题吞吐率、加速比、效率之间的关系2022/7/1558中国科学技术大学
58Reviewlecture6(cont.)结构相关概念:由于争用资源而引起的解决办法数据相关概念:由于存在对相同单元的读写引起的。解决办法硬件:定向技术(forwarding)软件:指令级调度控制相关概念:由于控制类指令引起的解决办法???2022/7/1559中国科学技术大学
59控制相关问题更复杂,分支需要解决两个问题分支目标地址(转移成功意谓着PC值不是PC+4)CC是否有效,这两点在DLX中都在流水线的靠后段中确定译码在ID段后,此时取进来的指令可能是错误的指令对于简单的DLX流水线-3cyclebranchpenalty有效地址在EX段才能确定条件是否为真在MEM段因此有3个stall流水线的时空图2022/7/1560中国科学技术大学
60回顾DLX数据通路2022/7/1561中国科学技术大学
61减少分支延时的方法修改数据通路使得目标地址和分支条件尽早确定,其中之一尽早确定是没有用的判断是否为0可以在ID段确定使用另一个加法器计算可以在ID段计算BTA(分支目标地址)即在ID段形成下一条指令地址,两种可能(BTA,PC+4)选择哪一个取决于ID段确定的CC必要时使用互锁机制来插入Stall•设计合适的ISAe.g.BNEZ,BEQZonDLX使得CC可以在ID段确定调度一些指令放入分支的延迟槽中统计分支成功和失败的情况,提高预测精度2022/7/1562中国科学技术大学
62新的DLX数据通路2022/7/1563中国科学技术大学
63改进后流水线的分支操作2022/7/1564中国科学技术大学
64四种可能的解决冲突的方法#1:Stall直到分支方向确定#2:预测分支失败直接执行后继指令如果分支实际情况为分支成功,则撤销流水线中的指令对流水线状态的更新DLX分支指令平均47%为分支失败由于PC+4已经计算出来,因此可以用它来取下一条指令#3:预测分支成功平均53%DLX分支为分支成功但分支目标地址在ID段才能计算出目标地址DLX还是有1个cyclebranchpenalty2022/7/1565中国科学技术大学
65四种可能的解决冲突的方法#4:延迟转移定义分支发生在一系列指令之后branchinstructionsequentialsuccessor1sequentialsuccessor2........sequentialsuccessornbranchtargetiftaken5级流水只需要一个延迟槽就可以确定目标地址和确定条件DLX使用这种方式Branchdelayoflengthn2022/7/1566中国科学技术大学
66延迟转移从何处选择指令来填充延迟槽?分支指令之前的指令:最好从分支目标地址处取:在分支成功可能性大时,这种策略较好从分支失败处调度:仅在分支失败时编译器可以有效的调度一个延迟槽如果提供取消分支时,编译器可以调度更多的指令填入延迟槽2022/7/1567中国科学技术大学
67评估减少分支策略的效果SchedulingBranchCPIspeedupv.speedupv.schemepenaltyunpipelinedstallStallpipeline31.423.51.0Predicttaken11.144.41.26Predictnottaken11.094.51.29Delayedbranch0.51.074.61.311.14=1+1*14%*100%1.09=1+1*14%*65%1.07=1+0.5*14%Conditional&Unconditional=14%,65%changePC2022/7/1568中国科学技术大学
68小结:Pipelining通过指令重叠减小CPI充分利用数据通路当前指令执行时,启动下一条指令其性能受限于花费时间最长的段检测和消除相关如何有利于流水线技术的应用所有的指令都等长只有很少的指令格式只用Load/Store来进行存储器访问难度何在?相关问题2022/7/1569中国科学技术大学
69Quiz流水线的成本(cost)可以用c+k*h估算,其中c为所有功能段本身的总成本,h为段间锁存器成本,k为段数。流水线的性价比可以定义为PCR=Throughput/(c+k*h),其中Throughput=1/t,t为t_{latch}+T/k,t_{latch}为锁存器的延迟时间,T为在非流水线的机器上采用顺序执行方式完成一个任务所花费的总时间。试推导出使得PCR最大化的最优段数k_opt的表达式。2022/7/1570中国科学技术大学
703.4异常处理流水线使得系统的吞吐率提高问题:由于相关会影响系统性能的发挥更严重的问题:异常Why?多级流水-》多周期指令异常可以发生在任何地方指令序与异常序可能不同必须按指令序处理异常采用何种策略取决于异常的类型2022/7/1571中国科学技术大学
71异常的类型I/OdevicerequestinvokinganOSservicefromauserprograme.g.viaanunimplementedinstructiononaMactracinginstructionexecutionbreakpointintegerorFParithmeticerrorsuchasoverflowpagefaultmisalignedmemoryaccessmemoryprotectionviolationundefinedinstructionhardwaremalfunction-likeparityorECCerrorpowerfailure2022/7/1572中国科学技术大学
72异常响应请求的种类Synchronousvs.Asynchronoussynchronouscausedbyaparticularinstructionasynchronous-externaldevicesandHWfailuresUserrequestedvs.CoercedrequestedispredictableandcanhappenaftertheinstructionUsermaskablevs.usernon-maskablee.g.arithmeticoverflowonsomemachinesisusermaskableWithinvs.Betweeninstructionswithin==>synchronous,keyisthatcompletionispreventedsomeasynchronousarealsowithinResumevs.Terminateprogramimplicationsforhowmuchstatemustbepreserved2022/7/1573中国科学技术大学
73例如2022/7/1574中国科学技术大学
74最困难的问题异常发生在指令中,并且要求恢复执行要求==>流水线必须安全地shutdownPC必须保存如果重新开始的是一条分支指令,它需要重新执行这意味着条件码状态必须没有改变在DLX中的处理步骤强制trap指令在下一个IF段进入流水线封锁引起故障的指令的所有写操作和流水线中后继指令的写操作让所有前序指令执行完(如果能)保存重新执行时的地址(PC)PC或PC+1调用OS处理异常2022/7/1575中国科学技术大学
75考虑延迟转移时,假设有两个延迟槽的分支IBranchInstr1I+1Delayinstr1I+2DelayInstr2I+3instI+4inst假设branch指令是好的第1个延迟指令引起缺页中断第2条指令封锁异常处理后,缺省的恢复点是第一条延迟指令不会有Branch指令因此需要保存的PC值不止一个,根据具体情况进行恢复2022/7/1576中国科学技术大学
76精确中断与非精确中断引起异常的指令前面的指令都已执行完,故障后的指令可以重新从故障点后执行理想情况,引起故障的指令没有改变机器的状态要正确的处理这类异常请求,必须保证故障指令不产生副作用在有些机器上,浮点数异常流水线段数多,在发现故障前,故障点后的指令就已经写了结果,在这种情况下,必须有办法处理。当今很多高性能计算机,Alpha21164,MIPSR10000等支持精确中断,但精确模式要慢10倍,一般用在代码调试时,很多系统要求精确中断模式,如IEEEFP标准处理程序,虚拟存储器等。精确中断对整数流水线而言,不是太难实现2022/7/1577中国科学技术大学
77DLX中的异常IFpagefault,misalignedaddress,memoryprotectionviolationIDundefinedorillegalopcodeEXarithmeticexceptionMEMpagefault,misalignedaddress,memoryprotectionviolationWBnone2022/7/1578中国科学技术大学
78Review控制相关概念:减少性能损失的基本方法冻结或排空流水线预测分支成功预测分支失败延迟转移异常异常的分类精确中断和非精确中断2022/7/1579中国科学技术大学
79Review-相关的处理结构相关概念:由于争用资源而引起的解决办法数据相关概念:由于存在实际的通信,而引起的解决办法:硬件:定向技术(forwarding)软件:指令级调度控制相关概念:由于控制类指令引起的解决办法???2022/7/1580中国科学技术大学
80Review(续)控制相关概念:减少性能损失的基本方法-转移地址,条件码静态处理:冻结或排空流水线预测分支成功预测分支失败延迟转移异常异常的分类精确中断和非精确中断2022/7/1581中国科学技术大学
813.5DLX中多周期操作的处理问题浮点操作在1~2个cycles完成是不现实的,一般要花费较长时间在DLX中如何处理在1到2个cycles时间内完成的处理方法采用较慢的时钟源,或在FP部件中延迟其EX段现假设FP指令与整数指令采用相同的流水线,那么EX段需要循环多次来完成FP操作,循环次数取决于操作类型有多个FP功能部件,如果发射出的指令导致结构或数据相关,需暂停2022/7/1582中国科学技术大学
82对DLX的扩充四个功能部件Integer部件处理:Loads,Store,IntegerALU操作和BranchFP/Integer乘法部件:处理浮点数和整数乘法FP加法器:处理FP加,减和类型转换FP/Integer除法部件:处理浮点数和整数除法这些功能部件未流水化2022/7/1583中国科学技术大学
83扩展的DLX流水线2022/7/1584中国科学技术大学
84Latency&RepeatInterval延时(Latency)定义为完成某一操作所需的cycle数定义为使用当前指令所产生结果的指令与当前指令间的最小间隔周期数循环间隔(Repeat/Initiationinterval)发射相同类型的操作所需的间隔周期数对于EX部件流水化的新的DLXFunctionUnitLatencyRepeatIntervalIntegerALU01DataMemory(IntegerandFPloads(1lessforstorelatency))11FPAdd31FPmultiply61FPDivide(alsointegerdivideandFPsqrt)24252022/7/1585中国科学技术大学
85将部分执行部件流水化后的DLX流水线2022/7/1586中国科学技术大学
86新的相关和定向问题结构冲突增多非流水的Divide部件,使得EX段增长24个cycles在一个周期内可能有多个寄存器写操作可能指令乱序完成(乱序到达WB段)有可能存在WAW由于在ID段读,还不会有WAR相关乱序完成导致异常处理复杂由于指令的延迟加大导致RAW相关的stall数增多需要付出更多的代价来增加定向路径2022/7/1587中国科学技术大学
87新的结构相关纵向检查指令所使用的资源第10个cycle,三条指令同时进入MEM,但由于MULTD和ADDD在MEM段没有实际动作,这种情况没有关系第11个cycle,三条指令同时进入WB段,存在结构相关2022/7/1588中国科学技术大学
88解决方法Option1在ID段跟踪写端口的使用情况,以便能暂停该指令的发射一旦发现冲突,暂停当前指令的发射Option2在进入MEM或WB段时,暂停冲突的指令,让有较长延时的指令先做,因为较长延时的指令,会更容易引起其他RAW相关,从而导致更多的stalls2022/7/1589中国科学技术大学
89关于数据相关较长延时的流水线,导致数据相关比例增多,stalls数增多2022/7/1590中国科学技术大学
90新的冲突源GPR与FPR间的数据传送造成的数据相关MOVI2FPandMOVFP2Iinstructions如果在ID段进行相关检测,指令发射前须做如下检测:结构相关循环间隔检测确定寄存器写端口是否可用RAW相关列表所有待写的目的寄存器不发射以待写寄存器做为源寄存器的指令,直到该寄存器值可用WAW相关仍然使用上述待写寄存器列表不发射那些目的寄存器在待写寄存器列表中的指令,直到对应的待写寄存器值可用(完成WB)。2022/7/1591中国科学技术大学
91精确中断与长流水线例如DIVFF0,F2,F4ADDFF10,F10,F8SUBFF12,F12,F14ADDF和SUBF都在DIVF前完成如果DIVF导致异常,会如何?非精确中断Ideas???2022/7/1592中国科学技术大学
92处理中断4种可能的办法方法1:忽略这种问题,当非精确处理原来的supercomputer的方法但现代计算机对IEEE浮点标准的异常处理,虚拟存储的异常处理要求必须是精确中断。方法2:缓存操作结果,直到早期发射的指令执行完。当指令运行时间较长时,Buffer区较大Futurefile(PowerPC620MIPSR10000)缓存执行结果,按指令序确认historyfile(CYBER180/990)尽快确认缓存区存放原来的操作数,如果异常发生,回卷到合适的状态2022/7/1593中国科学技术大学
93第3&4种方法以非精确方式处理,用软件来修正为软件修正保存足够的状态让软件仿真尚未执行完的指令的执行例如Instruction1–A执行时间较长,引起中断的指令Instruction2,instruction3,….instructionn-1未执行完的指令Instructionn已执行完的指令由于第n条指令已执行完,中断返回地址为第n+1条指令,如果我们保存所有的流水线的PC值,那么软件可以仿真Instruction1到Instructionn-1的执行暂停发射,直到确定先前的指令都可无异常的完成,再发射下面的指令。在EX段的前期确认(MIPS流水线在前三个周期中)MIPSR2KtoR4K以及Pentium使用这种方法2022/7/1594中国科学技术大学
94Reviewlecture7控制相关概念:减少性能损失的基本方法-转移地址,条件码静态处理:冻结或排空流水线预测分支成功预测分支失败延迟转移异常异常的分类精确中断和非精确中断DLX中多周期操作的处理对DLX的扩充——扩展的DLX流水线新的问题:冲突源增加,异常处理,……2022/7/1595中国科学技术大学
95DLX流水线的性能StallsperFPoperationforeachmajortypeofFPoperationfortheSPEC89FPbenchmarks2022/7/1596中国科学技术大学
96平均每条指令的stall数ThestallsoccurringfortheMIPSFPpipelineforfivefortheSPEC89FPbenchmarks.2022/7/1597中国科学技术大学
97MIPSR4000实际的64-bit机器主频100MHz~200MHz较深的流水线(级数较多)(有时也称为superpipelining)指令集与DLX非常类似2022/7/1598中国科学技术大学
98MIPSR4000的8级整数流水线IF–取指阶段的前半部分;选择PC值,初始化指令cache的访问IS–取指阶段的后半部分,主要完成访问指令cache的操作RF–指令译码,寄存器读取,相关检测以及指令cache命中检测EX–执行,包括:计算有效地址,进行ALU操作,计算分支目标地址和检测分支条件DF–取数据,访问数据cache的前半部分DS–访问数据cache的后半部分TC–tag检测,确定数据cache是否命中WB–Load操作和R-R操作的结果写回2022/7/1599中国科学技术大学
99需注意的问题在使用定向技术的情况下,Load延迟为2个cyclesLoad和与其相关的指令间必须有2条指令或两个bubbles原因:load的结果在DS结束时可用分支延迟3个cycles分支与目标指令间需要3条指令或3个bubbles原因:目标地址在EX段后才能知道R4000的流水线中,到ALU输入端有四个定向源EX/DF,DF/DS,DS/TC,TC/WB2022/7/15100中国科学技术大学
100图示IFISIFRFISIFEXRFISIFDFEXRFISIFDSDFEXRFISIFTCDSDFEXRFISIFWBTCDSDFEXRFISIFTWOCycleLoadLatencyIFISIFRFISIFEXRFISIFDFEXRFISIFDSDFEXRFISIFTCDSDFEXRFISIFWBTCDSDFEXRFISIFTHREECycleBranchLatency(conditionsevaluatedduringEXphase)DelayslotplustwostallsBranchlikelycancelsdelayslotifnottaken2022/7/15101中国科学技术大学
101MIPSR4000浮点数操作3个功能部件组成:FPAdder,FPMultiplier,FPDivider在乘/除操作的最后一步要使用FPAdderFP操作需要2(negate)-112个(squareroot)cycles8kindsofstagesinFPunits:StageFunctionalunitDescriptionAFPadderMantissaADDstageDFPdividerDividepipelinestageEFPmultiplierExceptionteststageMFPmultiplierFirststageofmultiplierNFPmultiplierSecondstageofmultiplierRFPadderRoundingstageSFPadderOperandshiftstageUUnpackFPnumbers2022/7/15102中国科学技术大学
102MIPSFP流水段FPInstr12345678…Add,SubtractUS+AA+RR+SMultiplyUE+MMMMNN+ARDivideUARD28…D+AD+R,D+R,D+A,D+R,A,RSquarerootUE(A+R)108…ARNegateUSAbsolutevalueUSFPcompareUARStages:MFirststageofmultiplierNSecondstageofmultiplierRRoundingstageSOperandshiftstageUUnpackFPnumbersAMantissaADDstageDDividepipelinestageEExceptionteststage2022/7/15103中国科学技术大学
103双精度浮点操作指令延迟、初始化间隔和流水段的使用情况2022/7/15104中国科学技术大学
104注:MultiplyIssueUMM->UE+MM2022/7/15105中国科学技术大学
105注:Multiply的第2拍的M-〉E+M2022/7/15106中国科学技术大学
1062022/7/15107中国科学技术大学
1072022/7/15108中国科学技术大学
108R4000性能(1)2022/7/15109中国科学技术大学
109R4000性能(2)2022/7/15110中国科学技术大学
110基本流水线小结流水线提高的是指令带宽(吞吐率),而不是单条指令的执行速度相关限制了流水线性能的发挥结构相关:需要更多的硬件资源数据相关:需要定向,编译器调度控制相关:尽早检测条件,计算目标地址,延迟转移,预测增加流水线的级数会增加相关产生的可能性异常,浮点运算使得流水线控制更加复杂编译器可降低数据相关和控制相关的开销Load延迟槽Branch延迟槽Branch预测2022/7/15111中国科学技术大学