您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 计算机体系结构 week5 浙江大学 石教英 陈天洲(主讲)
计算机体系结构第5周第1节课授课教师:陈天洲课件下载流水线障碍——流水线竞争3.4数据竞争3.5控制竞争3.6流水线实现难点3.7多周期操作的指令流水线3.8指令集结构设计与指令流水线的关系3.9进一步开发指令级并行性3.1流水线基本概念一、什么是流水线例1“摩登时代”中的装配生产线例2浮点加法流水线二、流水线分类按处理级别操作级流水操作重叠指令级流水指令执行重叠处理器级(宏流水线)任务重叠按完成功能单功能流水线多功能流水线静态流水线、动态流水线按处理的数据类型标量流水线向量流水线按流水线结构线性流水线非线性流水线按流水方式顺序流水方式:指令流出顺序=指令流入顺序异步流水方式:指令流出顺序指令流入顺序1234567S1S2S3S4非线性流水线的调度策略预约表禁止表{3,4,6}状态图10110011111011011111111111011012521=.75=.75=.7三、指令流水线——是使得多条指令重叠执行的一种处理器实现技术图流水线的基本结构1、特点指令执行分成若干个阶段——流水级;每个流水级由各自独立的功能部件(流水功能部件)完成,任一时刻各流水级并行地对不同指令作不同阶段的操作;各流水级在同一时钟控制下在同一时刻将本级的输出数据(信号)送到下一流水级;两次传送时间间隔称为:机器周期;各流水级完成功能的时间不同,机器周期由最慢的流水级决定;一条指令按序经过各流水级,从最后一级流出才算执行完成。2、指令流水线的目的提高指令处理速度——提高吞吐率:单位时间内完成的指令数不用流水线技术程序执行时间Speedup=———————————————用流水线技术程序执行时间CPUtime=IC*CPI*CC平均每条指令的执行时间(CPI)ToldTold/流水级数时钟周期缩短(CC)CCold=ToldTold/流水级数=CCnew提高CPU内各功能部件的利用率3、指令流水线的描述流水状态图流水线时空图四、非流水线实现的DLX处理器每条指令可以在5个时钟周期内完成。1、取指令周期(IF)IRMem[PC]NPCPC+42、译码/读寄存器周期(ID)AReg[IR6..10]BReg[IR11..15]Imm((IR16)16##IR16..31)3、执行/有效地址计算(ALU)Load/Store:ALUoutputA+ImmR-RALU:ALUoutputAfuncBR-IALU:ALUoutputAopImmBranch:ALUoutputNPC+Imm;CondAop04、存储器访问/转移完成(MEM)Load/Store:LMDMem[ALUoutput]Mem[ALUoutput]BBranch:if(Cond)thenPCALUoutputelsePCNPC5、写回周期(WB)R-RALU:Regs[IR16..20]ALUoutputR-IALU:Regs[IR11..15]ALUoutputLoad:Regs[IR11..15]LMD(1)实现方案一:一条指令用多个时钟周期转移指令:(16%+8%)/2=12%4其他指令:88%5CPI=412%+588%=4.88改进1:ALU:4个时钟周期CPI=4(12%+44%)+544%=4.44改进2:减小硬件冗余度Add、ALU合用一个ALU指令memory与数据memory合用一个memory(2)实现方案二:一条指令用一个长时钟周期CPI=1CC2CC1临时寄存器可省去一般不采用的原因:低效率指令要执行的操作总量变化较大重复设置功能部件(方案一中可共享)3.2DLX基本指令流水线非流水线实现的DLX一条指令5个时钟周期一个流水级花一个时钟周期每个时钟周期启动一条指令关键:同一时钟周期里,不同指令不会使用同一数据通路资源IM与DM不能用单一memoryIM:指令CacheDM:数据Cache存储器带宽要提高5倍2次/5个时钟周期2次/1个时钟周期ID的读Reg与WB的写Reg2个Reg读+1个Reg写/时钟周期2个读口,一个写口Reg读=Reg写数据竞争PC非流水:IF读PC,MEM写PC流水:IF完成PC+4PC前面的Branch指令可能要写PC流水线锁存器(在两级之间传递值和控制信号)某一值在后续流水级中要用到,就必须送入Latch如:IF/ID中有IRID中要译码MEM/WB中有IRALU(IR16..20)或Load(IR11..15)的目的域段ID/EX中有IRALU:PC增值1个Adder算术逻辑部件ALU不访存有效地址计算访存指令不做ALU操作1个ALU控制信号(MUX)1.EX级的MUX:由指令类型控制是:NPCALU是Branch?否:IR6..10ALU是:IR11..15ALU是R-RALU指令?否:立即数/位移量ALU2.IF级的MUX:由Cond判断控制3.WB级的MUX:由指令类型控制(Load/ALU)4.ALU级的MUX:由指令类型控制ALUR-R(IR11..15)ALUR-I(IR16..20)五级流水线的每一级的具体操作(P136)二、流水线性能提高吞吐率,但不减少单条指令的执行时间程序执行快,总时间减少理想Speedup=流水级数流水级数的限制:流水线延时流水线开销(流水周期latch开销+时钟上升沿和下降沿)流水级间的不平衡性t=max{ti}Earlelatch:对时钟上升延敏感、latch延时是常数、可在latch中实现二级逻辑[例1]P137/140unpipeline:CC=10ns,ALU(40%)、Branch(20%)4CCLoad/Store(40%)5CCpipelineCC=(10+1)=11ns问:用流水线,执行速度提高几倍?单条指令执行时间=CC平均CPI=10(60%4+40%5)=44ns平均指令执行时间CCpipeline=11nsSpeedup=44/11=4[例2]P138/141已知CPI=1。设各流水级的执行时间分别为:IF:10ns;ID:8ns;ALU:10ns;MEM:10nsWB:7ns平均指令执行时间=10+8+10+10+7=45ns流水线时平均指令执行时间=11nsSpeedup=45/11=4.13.3流水线障碍——流水线竞争一、流水线竞争种类结构竞争:资源冲突(不支持某些指令组合)数据竞争:后续指令的执行依赖于前面指令的执行结果控制竞争:因转移或修改PC引起的竞争流水线停顿(stall):若i指令引起竞争,在I指令之前进入流水线的指令继续执行,而在I指令之后进入流水线或尚未进入流水线的指令停下来等待竞争消除二、考虑停顿时的流水线性能平均指令执行时间unpipelineSpeedup=----------------------------------------平均指令执行时间pipelineCPIun*CCun=----------------------CPIp*CCpCPIpipeline=CPIideal+流水线stall周期=1+流水线stall周期a.unpipeline时多时钟周期完成CCun=CCpCPIunCPIunSpeedup=-----------=-----------------------CPIp1+流水线stall周期最简单情况:所有指令的执行周期数相等,均为流水级数CPIun=流水级流水级Speedup=--------------------------------1+流水线stall周期b.unpipeline时单时钟周期完成CPIun=11CCunSpeedup=-------------------------*-----------1+流水线stall周期CCp若流水线各级完成时间均衡,且无其他开销,则CCun----------=流水级CCp流水级Speedup=--------------------------------1+流水线stall周期三、结构竞争——如果流水线因资源冲突不能支持某些指令组合的重叠执行,则称之为结构竞争。原因功能部件非完全流水硬件资源数量不足结构竞争例结构竞争解决办法[例1]结构竞争对性能的影响144/144已知CPIideal=1,数据访存占40%,CRhazard=1.05CRideal平均指令执行时间=IC*CPIhazard*CChazard=IC*(1+0.4*1)*CCideal/1.05=1.3*IC*CCidealCPIidealCPIhazard设计有hazard机器的原因:降低成本降低部件延时非流水不见延时不完全流水部件完全流水部件[例2]非流水线浮点部件对性能的影响很多机器都没有完全流水的浮点运算部件。设DLX的浮点乘法有5个时钟周期的延时,且未用流水线实现。已知测试程序mdljdp中浮点乘法的使用频度为14%。问因浮点乘法引起的结构竞争对程序执行性能影响大吗?一条要使用该条指令结果的指令需要隔多少时钟周期才能进入流水线,以保证得到正确的执行结果。或一条浮点乘法必须和前一条指令隔几个时钟周期才不会与前一条浮点乘法指令冲突(1)最好情况:完全均匀分布指令流水线最多能处理17%的浮点乘法17%14%(2)最坏情况:分布最不均匀因结构竞争造成CPI增加:14%*5=0.7(3)实测结果:用流水线实现仅使执行时间减少3%浮点乘法使用频度低因数据竞争引起的Stall避免了结构竞争
本文标题:计算机体系结构 week5 浙江大学 石教英 陈天洲(主讲)
链接地址:https://www.777doc.com/doc-3841897 .html