计算机系统结构 流水线技术 3.2 DLX的基本流水线

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1/663.2DLX的基本流水线3.2.1DLX的一种简单实现首先讨论在不流水的情况下,如何实现DLX。1.实现DLX指令的一种简单数据通路第三章流水线技术项目调研与实践项目调研与实践3/662.一条DLX指令最多需要以下5个时钟周期:(1)取指令周期(IF)IR←Mem[PC]NPC←PC+4操作3.2DLX的基本流水线项目调研与实践项目调研与实践5/66(2)指令译码/读寄存器周期(ID)A←Regs[IR6..10]B←Regs[IR11..15]Imm←(IR16)16##IR16..31操作指令译码和读寄存器是并行进行的。之所以能做到这一点,是因为在DLX指令格式中,操作码在固定位置。这种技术也称为固定字段译码。3.2DLX的基本流水线项目调研与实践项目调研与实践7/66(3)执行/有效地址计算周期(EX)在这个周期,不同的指令有不同的操作。3.2DLX的基本流水线项目调研与实践◆存储器访问ALUOutput←A+Imm操作项目调研与实践◆寄存器―寄存器ALU操作ALUOutput←AopB操作项目调研与实践10/66◆寄存器―立即值ALU操作ALUOutput←AopImm操作3.2DLX的基本流水线项目调研与实践◆分支操作ALUOutput←NPC+ImmCond←(Aop0)操作项目调研与实践12/66(4)存储器访问/分支完成周期(MEM)在该周期处理的DLX指令只有Load、Store和分支指令。这里,将有效地址计算周期和执行周期合并为一个时钟周期,这是由DLX指令集结构本身的特点所允许的,因为在DLX指令集结构中,没有任何指令需要同时计算数据的存储器地址、计算分支指令的目标地址和进行数据处理。3.2DLX的基本流水线项目调研与实践13/66◆存储器访问LMD←Mem[ALUOutput]或Mem[ALUOutput]←B操作3.2DLX的基本流水线项目调研与实践项目调研与实践15/66◆分支操作if(cond)PC←ALUOutputelsePC←NPC操作项目调研与实践项目调研与实践17/66(5)写回周期(WB)不同指令在该周期完成的工作也不一样。◆寄存器―寄存器型ALU指令Regs[IR16..20]←ALUOutput操作◆寄存器―立即值型ALU指令Regs[IR11..15]←ALUOutput操作◆Load指令Regs[IR11..15]←LMD操作3.2DLX的基本流水线项目调研与实践寄存器―寄存器型ALU指令Regs[IR16..20]←ALUOutput项目调研与实践寄存器―立即值型ALU指令Regs[IR11..15]←ALUOutput项目调研与实践Load指令Regs[IR11..15]←LMD21/663.分支指令需要4个时钟周期,其它指令需要5个时钟周期假设分支指令占总指令数的12%,则:CPI=4.88上述实现无论在性能上,还是在硬件开销上,都不是优化的。3.2DLX的基本流水线22/663.2.2基本的DLX流水线我们可以把3.2.1中的数据通路流水化:每个时钟周期启动一条新的指令。这样,该数据通路中的每一个周期就成了一个流水段。1.一种简单的DLX流水线2.简单DLX流水线的流水过程第一种描述(类似于时空图)第二种描述(按时间错开的数据通路序列)3.2DLX的基本流水线23/663.2DLX的基本流水线按时间错开的数据通路序列25/663.采用流水技术还应解决好以下几个问题:上述简单DLX流水线中:◆指令存储器(IM)和数据存储器(DM)分开,避免了访存冲突。◆ID段和WB段都要访问同一寄存器文件。ID段:读WB段:写如何解决对同一寄存器的访问冲突?(1)应保证不会在同一个时钟周期内在同一数据通路资源上做不同的操作。例如,不能要求一个ALU同时既做有效地址计算,又做减法操作。3.2DLX的基本流水线26/66◆没有考虑PC问题流水线为了能够每个时钟周期启动一条新的指令,就必须在每个时钟周期进行PC值的加4操作,并保留新的PC值。这种操作必须在IF段完成,以便为取下一条指令做好准备。3.2DLX的基本流水线但分支指令也可能改变PC的值,而且是在MEM段进行,这会导致冲突。为解决问题,我们重新组织数据通路,把所有改变PC值的操作都放在IF段进行。但分支指令如何处理?30/66(2)每一流水段内的操作都必须在一个时钟周期内完成◆流水线各段之间需设置流水线寄存器(也称为锁存器)◆流水线寄存器组及其所含寄存器的命名例如,ID段和EX段之间的流水线寄存器组中的IR寄存器的名称为:ID/EX.IR◆流水线寄存器的作用把数据和控制信息从一个流水段传送到下一个流水段。(3)流水线寄存器(组)3.2DLX的基本流水线◆流水线寄存器的构成33/664.DLX流水线的操作对于流水线中的指令来说,在任一时刻,它仅在流水线中的某一段内执行操作。因此,只要知道每一流水段在各种指令下进行何种操作,就知道了整个流水线的操作。(表3.1)给出了DLX流水线各段的操作。3.2DLX的基本流水线流水段表3.1DLX流水线的每个流水段的操作任何指令类型ALU指令Load/Store指令分支指令IFIDEXIF/ID.IR←Mem[PC]IF/ID.NPC,PC←(ifEX/MEM.cond{EX/MEM.NPC}else{PC+4});ID/EX.A←Regs[IF/ID.IR6..10];ID/EX.B←Regs[IF/ID.IR11..15];ID/EX.NPC←IF/ID.NPC;ID/EX.IR←IF/ID.IR;ID/EX.Imm←(IR16)16##IR16..31;EX/MEM.IR←ID/EX.IR;EX/MEM.ALUOutput←ID/EX.AopID/EX.B或EX/MEM.ALUOutput←ID/EX.AopID/EX.Imm;EX/MEM.cond←0;EX/MEM.IR←ID/EX.IR;EX/MEM.ALUOutput←ID/EX.A+ID/EX.Imm;EX/MEM.ALUOutput←ID/EX.NPC+ID/EX.Imm;EX/MEM.cond←(ID/EX.Aop0);(动画演示)(动画演示)(动画演示)(动画演示)(动画演示)流水段任何指令类型ALU指令Load/Store指令分支指令MEMWBMEM/WB.IR←EX/MEM.IR;MEM/WB.ALUOutput←EX/MEM.ALUOutput;MEM/WB.IR←EX/MEM.IR;MEM/WB.LMD←Mem[EX/MEM.ALUOutput];或Mem[EX/MEM.ALUOutput]←EX/MEM.B;Regs[MEM/WB.IR16..20]←MEM/WB.ALUOutput;或Regs[MEM/WB.IR11..15]←MEM/WB.ALUOutput;Regs[MEM/WB.IR11..15]←MEM/WB.LMD;表3.1DLX流水线的每个流水段的操作(动画演示)(动画演示)(动画演示)(动画演示)5.DLX流水线的控制主要是确定如何控制那四个多路选择器。37/663.2.3流水线性能分析吞吐率是指单位时间内流水线所完成的任务数或输出结果的数量。1.吞吐率(1)最大吞吐率TPmax最大吞吐率是指流水线在连续流动达到稳定状态后所得到的吞吐率。◆若流水线各段的时间相等,均为△t0,则:TPmax=1/△t03.2DLX的基本流水线38/66◆若流水线各段的时间不等,则:◆最大吞吐率取决于流水线中最慢的一段所需的时间,这段就成了流水线的瓶颈。◆消除瓶颈的方法(举例)细分瓶颈段重复设置瓶颈段(时-空图)1max{△ti}TPmax=─────3.2DLX的基本流水线重复设置瓶颈段(时-空图举例)41/66◆第一种情况:各段时间相等(设为△t0)假设流水线由m段组成,完成n个任务。时空图完成n个任务所需的时间T流水=m△t0+(n-1)△t0(说明)(2)实际吞吐率TP流水线的实际吞吐率小于最大吞吐率。3.2DLX的基本流水线42/6643/66完成n个任务所需的时间44/66实际吞吐率TP=───=──────────T流水nm△t0+(n-1)△t0n(1+)△t0m-11TPmaxn=────────=─────1+nm-1TP<TPmax当nm时,TP≈TPmax◆第二种情况:各段时间不等时空图3.2DLX的基本流水线45/663.2DLX的基本流水线46/66完成n个任务所需的时间T流水=∑△ti+(n-1)△tj△tj=max{△ti}实际吞吐率TP=──────────∑△ti+(n-1)△tjmi=1ni=1m3.2DLX的基本流水线47/66加速比是指流水线的速度与等功能非流水线的速度之比。2.加速比SS=T非流水/T流水(其中T流水和T非流水分别为按流水和按非流水方式处理n个任务所需的时间)若流水线为m段,且各段时间相等,均为△t0,则:T非流水=nm△t0(解释)T流水=m△t0+(n-1)△t03.2DLX的基本流水线48/663.2DLX的基本流水线49/66可以看出:当nm时,S≈m想一想:n越大越好?效率是指流水线的设备利用率。(1)由于流水线有通过时间和排空时间,所以流水线的各段并不是一直满负荷地工作。故:E<1S=───=─────────T非流水T流水nm△t0m△t0+(n-1)△t0mnm+n-1mn1+m-1=────=────3.效率E3.2DLX的基本流水线50/663.2DLX的基本流水线51/66(2)若各段时间相等,则各段的效率ei相等,即e1=e2=e3==em=n△t0/T流水(解释)整个流水线的效率为:当nm时,E≈1E=───=────=─────n△t0T流水nm+n-11n1+m-1(3)从时-空图上看,效率实际上就是n个任务所占的时空区与m个段总的时空区之比,即:n个任务占用的时空区E=━━━━━━━━━━━━━(解释)m个段总的时空区……3.2DLX的基本流水线52/6653/66(4)提高流水线效率所采取的措施对于提高吞吐率也有好处。4.流水线性能分析举例例3.1在静态流水线上计算∑AiBi,求:吞吐率,加速比,效率。4i=13.2DLX的基本流水线54/663.2DLX的基本流水线55/66解:(1)确定适合于流水处理的计算过程(2)画时空图(3)计算性能吞吐率TP=7/(20△t)加速比S=(34△t)/(20△t)=1.7效率E=(4×4+3×6)/(8×20)=0.213.2DLX的基本流水线56/6657/6658/663.2DLX的基本流水线59/66可以看出,在求解此问题时,该流水线的效率不高。(原因)动态流水线的时-空图举例Ⅰ3.2DLX的基本流水线60/66举例Ⅱ:这样行不行?正确答案3.2DLX的基本流水线61/66例3.2假设前面DLX非流水线实现的时钟周期时间为10ns,ALU和分支指令需要4个时钟周期,访问存储器指令需5个时钟周期,上述指令在程序中出现的相对频率分别是:40%、20%和40%。在基本的DLX流水线中,假设由于时钟扭曲和寄存器建立延迟等原因,流水线要在其时钟周期时间上附加1ns的额外开销。现忽略任何其他延迟因素的影响,请问:相对于非流水实现而言,基本的DLX流水线执行指令的加速比是多少?3.2DLX的基本流水线62/66解:当非流水执行指令时,指令的平均执行时间为TPI非流水=10ns×((40%+20%)×4+40%×5)=10ns×4.4=44ns在流水实现中,指令执行的平均时间是最慢一段的执行时间加上额外开销,即TPI流水=10ns+1ns=11ns所以基本的DLX流水线执行指令的加速比为S=TPI非流水TPI流水44ns11ns==43.2DLX的基本流水线63/66例3.3假设在DLX的非流水实现和基本流水线中,5个功能单元的时间为:10,8,10,10,7(ns),流水额外开销为:1ns,求加速比S。解:T非流水=10+8+10+10+7=45

1 / 66
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功