高等计算机体系结构高等计算机体系结构高等计算机体系结构高等计算机体系结构((((AdvancedComputerArchitectureAdvancedComputerArchitectureAdvancedComputerArchitectureAdvancedComputerArchitecture))))第第第第四四四四讲讲讲讲流水线技术流水线技术流水线技术流水线技术((((PipeliningPipeliningPipeliningPipelining))))李险峰(lixianfeng@pkusz.edu.cn)北京大学深圳研究生院2222提纲提纲提纲提纲�计算机性能评测�流水线技术3333性能(性能(性能(性能(performanceperformanceperformanceperformance))))哪一个性能更高?哪一个性能更高?哪一个性能更高?哪一个性能更高?4444响应时间响应时间响应时间响应时间vsvsvsvs吞吐率吞吐率吞吐率吞吐率�响应时间(responsetime)−任务完成的时间,又称为执行时间(executiontime),延迟(latency)�吞吐率(throughput)−单位时间内完成的任务数量,有些情况下又叫带宽(bandwidth)如果我们为一个计算机系统1.升级到更快的处理器2.增加处理器数量对系统响应时间和吞吐率分别有何影响?5555性能定义(性能定义(性能定义(性能定义(PerformancePerformancePerformancePerformance))))�在我们讨论单个处理器性能的时候,我们通常关心的是其执行时间(在涉及I/O设备或多处理器系统时,我们更关心吞吐率)�因此,对一个计算机设计X,此处其性能定义为:Performance(X)=1/Executiontime(X)�X比Y快n倍,意味着:Performance(X)/Performance(Y)=nX的执行时间是Y的1/n6666时钟周期数(时钟周期数(时钟周期数(时钟周期数(ClockCyclesClockCyclesClockCyclesClockCycles))))�我们常常以时钟周期数、而不是以秒为单位来统计执行时间,因为现代计算机都是以时钟为驱动的同步电路,任何事件或操作,都是经若干时钟周期完成的。只要知道了程序执行的时钟周期数,很容易换算为真实执行时间�时钟节拍(clockticks):对应一个时钟信号的起始和结束�时钟周期(cycletime)=timebetweenticks=secondspercycle�时钟频率(clockrate/frequency)=cyclespersecond(1Hz=1cycle/sec,1MHz=106cycles/sec�例:A200Mhz.clockhasacycletimesecondsprogram=cyclesprogram×secondscycletimetimetimetimecyclecyclecyclecycleticktickticktickticktickticktick1200×106×109=5nanoseconds7777性能公式(性能公式(性能公式(性能公式(IIII))))因此,为提高性能,我们可以采取的方法可以包括:−减少程序执行的时钟周期数,−降低时钟周期(提高时钟频率)secondsprogram=cyclesprogram×secondscycle等价于等价于等价于等价于CPUexecutiontimeforaprogram====CPUclockcyclesforaprogram××××Clockcycletime8888一个程序执行多少时钟周期?一个程序执行多少时钟周期?一个程序执行多少时钟周期?一个程序执行多少时钟周期?�是否可以假设#ofcycles=#ofinstructions?�但这个假设通常是不正确的!−不同的指令执行周期数不一样1stinstr2ndinstr3rdinstr4th5th6th...9999一个程序执行多少时钟周期?一个程序执行多少时钟周期?一个程序执行多少时钟周期?一个程序执行多少时钟周期?�乘法指令比加法需要更多的时钟周期�浮点运算比对应的整点计算需要更多时钟周期�访问内存数据比访问寄存器需要更多时钟周期�更复杂的情况。。。�改变处理器时钟周期?通常执行指令的时钟周期数也会发生变化,因为这意味着要改变硬件设计。10101010术语术语术语术语�一个程序的执行需要−执行一些指令−执行一些周期−执行一段时间(秒)�与此有关的术语−MIPS(millionsofinstructionspersecond)−cycletime(secondspercycle)−clockrate(cyclespersecond)−CPI(cyclesperinstruction)11111111性能测量性能测量性能测量性能测量�性能由执行时间决定�下面这些指标是否与性能等价?−#ofcyclestoexecuteprogram−#ofinstructionsinprogram−#ofcyclespersecond−average#ofcyclesperinstruction−average#ofinstructionspersecond�常见谬误:将以上某一个视为衡量性能的等价指标12121212性能公式(性能公式(性能公式(性能公式(IIIIIIII))))CPUexecutiontimeforaprogram====CPUclockcyclesforaprogram××××ClockcycletimeCPUexecutiontimeforaprogram====Instructioncountforaprogram××××avgCPI××××Clockcycletime(ET=IC(ET=IC(ET=IC(ET=IC××××CPICPICPICPI××××CT)CT)CT)CT)13131313CPUCPUCPUCPU性能的几个方面性能的几个方面性能的几个方面性能的几个方面CPUexecutiontimeforaprogram====Instructioncountforaprogram××××avgCPI××××Clockcycletime(x)xxISAxx编译器x工艺技术xx设计实现x程序14141414CPICPICPICPI指令总数时钟周期数指令总数时钟频率时间=×=CPUCPIj1jICPI××=∑=njCPU时钟周期时间时间指令总数其中jjj1jIFFCPI=×=∑=njCPI15151515示例:示例:示例:示例:TinyMIPSTinyMIPSTinyMIPSTinyMIPS7.4%0.45315%Branch0.151.12.42CPIj*Fj39.3%1220%Load32.8%450%ALU2.5%35%Jump18%1110%Store%时间周期频度指令6.16.16.16.1典型指令频度典型指令频度典型指令频度典型指令频度16161616CPICPICPICPI例一例一例一例一�对于一套指令系统ISA的两种具体实现,它们在执行某一程序P时:−处理器A的时钟周期为10ns,CPI为2.0−处理器B的时钟周期为20ns,CPI为1.2�对P来说,哪一种实现更快,快多少?�对于同一ISA的两款处理器实现来说,前面介绍的指标(时钟频率、CPI、执行时间、#ofinstr,MIPS)中,哪些总是相同的?17171717答案答案答案答案�CPUclockcycle(A)=I*2.0�CPUclockcycle(B)=I*1.2�CPUtime(A)=CPUclockcycle(A)*clockcycletime(A)=I*2.0*10ns=20ns*I�CPUtime(B)=I*1.2*20ns=24ns*I�Performance(A)/Performance(B)=Executiontime(B)/Executiontime(A)=(24ns*I)/(20ns*I)=1.2�因此,对程序P来说,处理器A是处理器B性能的1.2倍18181818CPICPICPICPI例二例二例二例二�编译器设计人员针对某一计算机进行编译优化,其中某一高级程序语言行(basicblock)有两种不同的指令序列实现方式−指令序列一(5条指令):2条A指令,1条B指令,2条C指令−指令序列二(6条指令):4条A指令,1条B指令,1条C指令−其中A、B、C分别需要1、2、3个时钟周期执行�哪一个序列执行更快?快多少?两个指令序列对应的平均CPI分别是多少?19191919PerformanceExpressedasaRatePerformanceExpressedasaRatePerformanceExpressedasaRatePerformanceExpressedasaRate�Ratesareperformancemeasuresexpressedinunitsofworkperunittime.�Examples−millionsofinstructions/sec(MIPS)−millionsoffloatingpointinstructions/sec(MFLOPS)−millionsofbytes/sec(MBytes/sec)−millionsofbits/sec(Mbits/sec)−images/sec−samples/sec−transactions/sec(TPS)20202020MIPSMIPSMIPSMIPS指标示例指标示例指标示例指标示例MIPS=(指令总数/时间)*10-62B1A3CCPIforthisclassInstructionclassInstructioncounts(inbillions)foreachinstructionclass105A11B1Compiler21Compiler1CCodefromclockrate=500MHz21212121MIPSMIPSMIPSMIPS指标示例指标示例指标示例指标示例22222222MIPSMIPSMIPSMIPS的问题的问题的问题的问题MeaninglessIndicatorofPerformanceofSystemMarketing’sInventiontoPromoteSales�Allinstructionsarenotequallypowerful�Dependsoncompiler�Dependsoninstructionmixandsequencing23232323AmdahlAmdahlAmdahlAmdahl法则法则法则法则�改进后的执行时间=未影响部分的执行时间+(受影响部分的执行时间/受影响部分加速比)Improvedpartofcode24242424AadahlAadahlAadahlAadahl法则(续)法则(续)法则(续)法则(续)1Speedup(E)=-------------------(1-F)+F/S未影响部分:(1-F):(1-F):(1-F):(1-F)受影响部分:F:F:F:F未影响部分:(1-F):(1-F):(1-F):(1-F)F/SF/SF/SF/SUnchangedUnchangedUnchangedUnchanged25252525例子例子例子例子1111�假设一个程序在一台机器上执行需100秒,其中乘法运算花费了80秒时间−如果我们想让执行速度快4倍,需要提高乘法运算多少?如果提高如果提高如果提高如果提高5555倍呢?倍呢?倍呢?倍呢?Principle:Makingthecommoncasefast.Principle:Makingthecommoncasefast.Principle:Makingthecommoncasefast.Principle:Makingthecommoncasefast.26262626例子例子例