CPU性能计算2、计算机系统设计的定量原理1)只加快经常性事件的速度:使经常性事件的速度尽可能处理快,而对不经常发生处理得慢也不会对系统性能有太大影响。2)Amdahl定律:系统中某一部件由于采用某种更快的执行方式后整个系统性能提高与这种执行方式的使用频率或总执行时间的比例有关。Fe=(改进前可改进部分占用的时间)/(改进前整个任务的执行时间),即改进部分所占比例。Se=(改进前改进部分的执行时间)/(改进后改进部分的执行时间),即改进部分的加速比则:1.改进后的整个任务的执行时间为:Tn=To(1-Fe+Fe/Se)其中,To为改进前的整个任务的执行时间2.改进后的整个系统加速比为:SP=To/Tn=1/[(1-Fe)+Fe/Se]例1假设将某系统的某一部件的处理度加快到10倍,但该部件的原处理时间仅为整个运行时间的40%,则采取加快措施后整个系统的性能提高多少?解:由题意知:Fe=0.4,Se=10,根据Amdahl定律,SP=1/(0.6+0.4/10)=1/0.64=1.56.Amdahl定律告诉我们:一项改进措施可以使整个系统的性能提高多少;为了改进性能价格比,如何合理分配系统资源.例2采用哪种实现技术来求浮点数平方根FPSQR操作对系统的性能影响较大.假设FPSQR操作占整个程序执行时间的20%.一种使采用FPSQR硬件,使FPSQR操作的速度加快到10倍.另一种是使所有浮点数据指令的速度加快,使FP指令的速度加快到2倍,还假设FP指令占整个执行时间的50%.请比较这两种方案.解:分别计算这两种设计方案所能得到的加速比:SFPSQR=1/[(1-0.2)+0.2/10]=1/0.82=1.22SFP=1/[(1-0.5)+0.5/2=1/0.75=1.33-------更好3)CPU性能公式CPU的性能取决于三个要素:①时钟频率f(或时钟周期t);②每条指令所花的时钟周期数CPI;③指令条数IC一个程序所花的CPU时间(T)可以表示:CPU时间(T)=CPU时钟周期数(CPI×IC)*时钟周期长(t)每条指令的平均时钟周期数:CPU时钟周期数=(CPIi*Ii)CPU时间(T)=时钟周期长度*(CPIi*Ii)CPI=(CPIi*Ii)/IC=(CPIi*Ii/IC)Ii是第i种指令的执行次数Ii/IC是第i种指令所占比例例3如果FP操作的比例为25%,FP操作的平均CPI=4.0,其它指令的平均CPI为1.33,STTffrpoeeee11T0Te1-fefefe/re)f()CPIIC(CPU)T(CPU频率时钟周期数时间ICCPUCPI时钟周期数目FPSQR操作的比例为2%,FPSQR的CPI为20。假设有两种设计方案,公别把FPSQR操作的CPI和所有FP操作的CPI减为2。试利用CPU性能公式比较这两种设计方案哪一个更好(只改变CPI而时钟频率和指令条数保持不变)。解:原系统的CPI=25%×4+75%×1.33=2方案1(使FPSQR操作的CPI为2)系统CPI=CPI原-2%×(20-2)=2-2%×18=1.64方案2(提高所有FP指令的处理速度)系统CPI=CPI原-25%×(4-2)=2-25%×2=1.5我们也可以根据以下公式计算出方案2系统的CPICPI=75%×1.33+25%×2=1.5显然,提高所有FP指令处理速度的方案要比提高FPSQR处理速度的方案要好。方案2的加速比=2/1.5=1.33例4假设这两台机器的指令系统中,执行条件转移指令需2个时钟周期,而其它指令只需1个时钟周期。CPUA:采用一条比较指令来设置相应的条件码,由紧随其后的一条转移指令对此条件码进行测试,以确定是否进行转移。显然实现一次条件转移要执行比较和测试两条指令。条件转移指令占总执行指令条数的20%。由于每条转移指令都需要一条比较指令,所以比较指令也将占20%。CPUB采用比较功能和判别是否实现转移功能合在一条指令的方法,这样实现一条件转移就只需一条指令就可以完成。由于CPUB在转移指令中包含了比较功能,因此它的时钟周期就比CPUA要慢25%。现在要问,采用不同转移指令方案的CPUA和CPUB,那个工作速度会更快些?解:CPIA=0.2×2+0.8×1=1.2TCPUA=ICA×1.2×tACPUB转移指令为20%÷80%=25%CPIB=0.25×2+0.75×1=1.25由于CPUB中没有比较指令,因此ICB=0.8×ICA。tB=1.25tATCPUB=ICB×CPIB×tB=0.8ICA×1.25×1.25tA=1.25ICA×tA可见TCPUA比TCPUB小,所以CPUA比CPUB运行得更快些。例5在例4中,如果CPUB的时钟周期只比CPUA的慢10%,那么哪一个CPU会工作得更快些?解:TCPUA=1.2ICA×tA,因tB=1.10tA,所以TCPUB=0.8ICA×1.25×1.10tA=1.10ICA×tA,由于CPUB所需时间较少,所以CPUB比CPUA运行得更快些。例6:用一台40MHz处理机执行标准测试程序,它含的混合指令数和相应所需的时钟周期数如下:指令类型指令数时钟周期数整数运算450001数据传送320002浮点150002控制传送80002求有效CPI,MIPS速率(百万条指令/秒)和程序的执行时间。解:CPI=(45000*1+32000*2+15000*2+8000*2)/(45000+32000+15000+8000)=1.55周期/指令MIPS速率=F/(CPI*106)=40*106/(1.55*106)=25.8MIPS程序执行时间T=(45000*1+32000*2+15000*2+8000*2)/(40*106)=3.875*10-3秒2.Flynn分类法1966年,Michael.J.Flynn提出根据指令流、数据流的多倍性(multiplicity)特征对计算机系统进行分类,定义如下。·指令流:机器执行的指令序列计算机体系结构·数据流:由指令流调用的数据序列,包括输入数据和中间结果·多倍性:在系统性能瓶颈部件上同时处于同一执行阶段的指令或数据的最大可能个数。Flynn根据不同的指令流-数据流组织方式把计算机系统分为4类。1·单指令流单数据流(SingleInstructionStreamSingleDataStream,SISD)SISD其实就是传统的顺序执行的单处理器计算机,其指令部件每次只对一条指令进行译码,并只对一个操作部件分配数据。2·单指令流多数据流(SingleInstructionStreamMultipleDataStream,SIMD)SIMD以并行处理机为代表,结构如图,并行处理机包括多个重复的处理单元PU1~PUn,由单一指令部件控制,按照同一指令流的要求为它们分配各自所需的不同的数据。3·多指令流单数据流(MultipleInstructionStreamSingleDataStream,MISD)MISD的结构,它具有n个处理单元,按n条不同指令的要求对同一数据流及其中间结果进行不同的处理。一个处理单元的输出又作为另一个处理单元的输入。4·多指令流多数据流(MultipleInstructionStreamMultipleDataStream,MIMD)MIMD的结构,它是指能实现作业、任务、指令等各级全面并行的多机系统,多处理机就属于MIMD。(2)冯式分类法1972年冯泽云提出用最大并行度来对计算机体系结构进行分类。所谓最大并行度Pm是指计算机系统在单位时间内能够处理的最大的二进制位数。设每一个时钟周期△ti内能处理的二进制位数为Pi,则T个时钟周期内平均并行度为Pa=(∑Pi)/T(其中i为1,2,…,T)。平均并行度取决于系统的运行程度,与应用程序无关,所以,系统在周期T内的平均利用率为μ=Pa/Pm=(∑Pi)/(T*Pm)。用最大并行度对计算机体系结构进行的分类。用平面直角坐标系中的一点表示一个计算机系统,横坐标表示字宽(N位),即在一个字中同时处理的二进制位数;纵坐标表示位片宽度(M位),即在一个位片中能同时处理的字数,则最大并行度Pm=N*M。由此得出四种不同的计算机结构:①字串行、位串行(简称WSBS)。其中N=1,M=1。②字并行、位串行(简称WPBS)。其中N=1,M1。③字串行、位并行(简称WSBP)。其中N1,M=1。④字并行、位并行(简称WPBP)。其中N1,M1。冯氏分类法1972年冯泽云提出用最大并行度对计算机系统结构进行分类.分为:①.字串位串WSBS②.字并位串WPBS③.字串位并WSBP④.字并位并WPBP另外还有HANDLER分类法:根据并行度和流水线提出的分类方法3.操作码优化采用Huffman编码法所得到的操作码的平均长度=0.45×1+0.30×2+0.15×3+0.05×4+0.03×5+0.01×6+0.01×6=1.97(位)采用最优Huffman编码法,操作码的最短平均长度=0.45×1.152+0.30×1.737+0.15×2.737+0.05×4.322+0.03×5.059+0.01×6.644+0.01×6.644=1.95(位)采用3位固定长操作码的信息冗余量为:Huffman编码法的信息冗余量仅为:与3位定长操作码的冗余量35%相比要小得多Huffman操作码的优点:平均长度最短,信息的冗余量最小;%35397.117log12HR%0.197.195.11R(2)等长扩展法为了便于实现分级译码,一般采用等长扩展法;根据不同的扩展标志,对于等长扩展法还可以有多种不同的扩展方法,衡量的标准主要看这种编码方法的操作码的平均长度是否最短,或信息量的冗余量是否最小;用码长表示:例如4-8-12法。这并不能说明具体编码方法,如下面两种编码方法都是4-8-12法。用码点数表示:例如15/15/15法,8/64/512法15/15/15法①每一种码长都有4位可编码位(前面可以有相同的扩展标识前缀),可产生16个码点(即编码组合);②使用其中15个来表示事件,留下1个或多个码点组合作为更长代码的扩展标识前缀;8/64/512法①每一种码长按4位分段②每一段中至少要留下1位或多位作为扩展标识,各段剩余的码位一起编码,所产生的码点用来对应被编码事件③每一段中的标识位指出后面还有没有后续段。(3)不等长编码法小结操作码优化的主要目的:尽可能地减少各种信息冗余,即:空间、时间少、短,尽可能不要跨断;要想程序占地空间小,则应使操作码尽可能短。第五章:时空图为了缩短运算时间,首先应考虑“最少切换算法”,即先执行完所有乘法(任务编号1-6)再执行加法(任务编号7-11),其次在加法中采用“最少相关算法”(即二叉树算法)。记c1=A1×B1,……,c6=A6×B6,下图(a)是加法的计算顺序二叉树,注意任务10应该用前一级最早完成的任务7和8的结果,如果用任务9的结果则要推迟1拍启动,使总时间增加1拍。根据时空图(b)得TP=11/(22Δt)=1/(2Δt)S=(6×4Δt+5×4Δt)/(22Δt)=2E=(6×4Δt+5×4Δt)/(6×22Δt)=1/3不等长操作码扩展编码法(4-6-10扩展编码)编码方法各种不同长度操作码的指令指令种类4位操作码6位操作码10位操作码15/3/1615316348/31/1683116558/30/3283032708/16/2568162562804/32/256432256292非线性流水线的调度技术非线性流水线的调度问题:在非线性流水线的输入端,究竟每间隔多少个时钟周期向流水线输入一个新任务才能使流水线的各个功能段都不发生冲突。非线性流水线的调度的任务:找出一个最小的循环周期,按照这个周期向流水线输入新任务,流水线的各个功能段都不会发生冲突,而且流水线的吞吐率和效率最高。以下首先介绍非线性流水线的表示方法,然后分析冲突