Chapter1计算题需求筛选的依据是成本性能比直接实现一般指用硬件实现,而间接实现是指用软件实现软件和硬件要综合考虑,要以价格性能比高低为取舍原则。常用的基本功能或产量很大的功能才适宜于用硬件实现。设计者最终要用成本性能比作为软、硬件实现功能的取舍标准;消费者要用价格性能比作为选购计算机系统的取舍标准。设计人员的参考原则:考虑用户应用领域设计周期长的硬件不宜采用常用的功能尽量采用硬件实现实现功能的成本性能比(或价格性能比)要低超前设计某一计算机用于商业外贸的事务处理,有大量的字符串处理操作。由于这种商务处理很普遍,有较大的市场,故而设计人员决定在下一代计算机的CPU中加入字符串操作的功能。经测试应用软件调查发现,字符串操作的使用占整个程序运行时间的50%。而增加此功能如用软件(如微程序)实现,则快5倍,增加CPU成本1/5倍;如果用硬件实现,则快100倍,CPU成本增加到5倍。问设计人员提出增加此功能是否恰当?如恰当则此功能应该用软件实现还是用硬件实现?设CPU成本占整机成本的1/3解:首先来计算机在两种情况下提高的性能和成本性能比。设:S为CPU未增加字符串功能时的CPU平均速度,Told为此时运行程序的时间,Tnew为增加字符串功能后程序运行的时间,则Amdahl定律(性能递减规则)某部件应用越频繁,当提高该部件性能时,整机性能也提高的越多。但不管该部件性能提高多大,整机的性能加速不可能大于在原机器中除该部件外所有其它部件运行时间的百分比的倒数1/(1-F)计算机性能的改善程度受其采用的快速部件(被提高性能的部件)在原任务中使用所占的时间百分比的限制采用新器件使某一功能性能提高10倍,但该功能的使用只占原程序运行时间的40%。请计算新计算机性能改善了多少?高频事件高速处理(大概率事件优先的原则)局部性原理最重要的是90/10局部性规则时间局部性空间局部性适应计算机发展趋势在指令系统中指令的确定是属于计算机系统结构的,而指令操作的实现,如取指令、取操作数、运算、送结果等具体操作及排序方式是属于计算机组成的,而实现这些指令功能的具体电路、器件的设计及装配技术是计算机物理实现的计算机的性能是指在计算机上完成用户的应用任务所需的时间长短响应(实耗)时间是指计算机系统完成某一任务(程序)所花费的时间速度,即用响应时间的倒数用速度来评价性能,我们称“高”为性能好;如果用响应时间来评价性能,我们称“短”为性能好计算机整机性能分成两部分:一是CPU执行程序的时间,二是等待时间。提高计算机性能就是提高CPU性能和减少等待时间。CPU时间也包含两部分,即用户CPU时间(userCPUtime)和系统CPU时间(systemCPUtime)CPUtime=整个程序的总时钟数×时钟周期每条指令的平均时钟周期数(ClockcyclesPerInstruction),简称为CPI指令数×CPI代替总时钟数设条件转移指令的实现有两种方案可以选择。机器A:用两条指令完成。由比较指令建立条件码,再在转移指令中测试条件码。机器B:只用一条指令。比较和转移一起执行。对于这两种机器来说,条件转移指令用2个时钟,所有其它指令花费一个时钟。在机器A上有20%的执行指令是条件转移指令,因此每个转移都需要比较,有20%是比较指令。由于机器A在转移指令中没有比较功能,这样时钟频率比机器B快25%,问哪个机器快?解:忽略所有等待及系统时间,我们可以用CPU时间来比较机器的性能。机器A:CPIA=20%×2+80%×1=1.2CPUtimeA=指令数A×1.2×时钟周期A=1.2IAτA机器B:无比较指令,则指令数要比机器A少20%,只有机器A指令数的80%,即指令数B=80%指令数A。在机器A的指令中有20%指令是转移指令,它占机器B的指令数的百分比是20%/80%=25%。因此机器B的CPIB=25%×2+75%×1=1.25。同时A机器时钟比B机器快25%,故时钟周期τB=(1+25%)τA=1.25τACPUtimeB=指令数B×CPIB×时钟周期B=0.80IA×1.25×1.25τA=1.25IAτA从计算中我们看出机器A虽然比机器B多执行了20%的指令,但由于它的时钟周期短,同时CPI也小,反而比机器B快某台计算机的指令集原来进行存储器访问的指令只有Load/Store,其它指令只能在寄存器之间操作。这种机器我们称为Load/Store型机器。现测得这台Load/Store计算机指令的使用频率和时钟数如表1-5所示。在ALU操作中,有25%的操作数是由Load指令取得。现在ALU操作中使其有一个操作数可以在存储器内,即register-memory指令,这条指令执行的时钟数是2。假设扩展指令集后使转移指令增加1个时钟数,但不影响时钟周期,问这样改变后计算机性能是否提高?对于例1-6的计算机,我们采用优化编译来改善其性能。编译可以减少50%的ALU指令,但它不能减少Load,Store和Branch指令,忽略系统因素,并假设时钟周期是20ns(50MHz频率),请问优化编译后的MIPS和没有优化编译时的MIPS各为多少?MIPS的变化和执行时间的变化是否一致?基准程序的一般设计原则具有代表性不能对基准程序进行优化。复现性。可移植性。紧凑性。成本-效率要高性能报告相关参数的计算哈夫曼压缩的基本思想是:出现频率最大的事件用最少的位(或最短的时间)来表示(或处理),而频率较小的事件用较多的位(较长的时间)来表示(或处理),从而达到平均位数(或时间)缩短的目的操作码的信息源熵(entropy系统包含的平均信息量)公式H=-Σpilog2pi式中pi为事件出现的频率Chapter2计算机的三种机器结构堆栈优点:赋值表达式简单,指令长度较短,代码密度高;缺点:不能随机访问存储器,代码效率低。累加器优点:机器内部状态最少,指令长度最短(9bytes);缺点:仅一个暂存器,和存储器的通信频繁。通用寄存器优点:最一般的指令模型,第一类,寄存器利用率最高,代码长度MAX<15字节。第二类,和累加器形式相似,暂存器个数多;缺点:寄存器要显示说明,导致指令字较长。在ALU指令中不对内存进行操作的计算机称为载入-存储(Load-Store)或者寄存器-寄存器(register-register)机器。ALU指令中有一个内存操作数的指令称为寄存器-存储器(register-memory)指令。有多个内存操作数的指令称为存储器-存储器(memory-memory)指令。我们是在确定了计算机应有的功能后,并确定了哪些功能是由硬件来实现(直接提供指令),哪些功能是由软件实现(由基本指令组合实现)后,再来进行指令集的设计。最常用的指令操作:存储器访问(memoryreferences)、算术逻辑单元(ALUoperation)操作和转移指令(branch)操作三类。控制操作、算术操作和数据传输三大类指令是最常用的,可以认为也是各种计算机必不可少的指令。假定反向条件转移指令90%是成功的,用表2-4平均数计算正向条件转移的成功率。正向条件转移大部分是不成功的,它满足条件的概率较低在字单元地址内有两种字节排列次序:第一种为低位收尾(littleendian),其字节次序是低字节在最低位的排列;第二种为高位收尾(bigendian),其字节次序是高字节在最低位的排列假设访问的数据字节数是S,而访问的字节地址是A,那么AmodS=0,则称为地址A所访问的S字节是对齐的。只要是跨CPU字地址的寄存器总线访问一定要两个总线访问周期才能完成寄存器分配策略1.假设计算机具有无穷多个寄存器,根据需要分配寄存器的变量个数,以出现时间先后为序建立一个寄存器变量图。图中每个变量用小圆圈表示,圈内标上变量名,每个变量称为一个节点。2.用弧连接各相邻节点。连接的原则是可能同时出现的变量节点作为相邻节点,用弧连接起来。从变量角度来讲,线段连接的是时空上重叠出现的变量生存范围。此时称整个图为相干图。3.编译程序给相干图着色。着色的颜色数应小于等于能分配给变量的寄存器数,着色的条件是相邻节点不可以用同样的颜色。这种限制使两个同时出现的变量不会争用同一个寄存器。没有线段相连的节点,可以是同一种颜色,即允许不重叠出现的变量使用同一个寄存器。着色后每一种颜色对应一个活动变量或一个寄存器。根据相干图分配物理寄存器。RISC设计思想是:指令集设计时根据Amdahl定律选择使用概率高的指令构成指令集,这些大概率指令一般是简单指令,因此控制器可以设计的简单、高速,且占CPU集成电路芯片的面积少,空出较多的集成电路芯片面积用来增加寄存器数量。在编译的配合下减少访存次数,减少指令间的各种相关和竞争,尽可能得到最佳指令序列,从而提高计算机系统的整体性能。某应用程序,简单的基本指令占80%,而复杂指令占20%,在传统CISC计算机上运行,简单指令的CPI=4,复杂指令的CPI=8,而在RISC计算机上运行只有简单指令,其CPI=1,复杂指令用简单指令合成实现。假设平均每条复杂指令需14条基本指令组合,请比较个计算机系统运行该应用程序的性能。解:设CISC计算机的时钟周期为TCISC,RISC计算机的时钟周期为TRISC,则:CISC计算机的平均CPI=0.8×4+0.2×8=4.8RISC计算机的指令数增加为IRISC=0.8ICISC+0.2ICISC×14=3.6ICISC因CPUtime=I×CPI×T故CPUtime-CISC=ICISC×4.8×TCISC=4.8ICISC×TCISCCPUtime-RISC=IRISC×1×TRISC=3.6ICISC×TRISC若TCISC=TRISC,则RISC计算机比CISC计算机性能提高33%。实际上,减少TRISC比减少TCISC要来的容易。Chapter3画图题处理器可分为两部分数据通路控制器一条指令的执行分为以下五个步骤:1.取指令(instructionfetch)。2.指令译码/寄存器读出(instructiondecode/registerfetch)。3.执行/有效地址计算(execution/effectiveaddress)。a.访存指令(accessinstruction)b.ALU指令(ALUinstruction)c.无条件转移/条件转移指令(jumpinstruction/branch)4.存储器访问/完成转移(memoryaccess/branchcompletion)a.访存指令(accessinstruction)b.转移指令(branchinstruction)5.写回(write-back)。Chapter4计算题简答题流水线(pipeline)是指在程序执行时多条指令重叠进行的操作的一种准并行处理实现技术流水线的特点:一条流水线由多个流水级组成;每个流水级有专门的功能部件对指令进行某种加工;各流水级所需时间是一样的(同时);流水线工作阶段可分为建立、满载和排空三个阶段;单位时间内流出流水线的指令数即吞吐率。流水线设计最难的任务是确定每个流水级功能部件处理事件的时间每条指令平均执行时间=流水线深度是指流水线中总的流水级的数目。在这种条件下,流水线计算机的加速比(speedup)就等于流水级的深度。流水线只能减少每条指令的平均执行时间,一条指令的实际执行时间要经过所有流水级,其实际执行时间有可能比未流水时还要长流水线有多种分类方法按处理的级别分类操作部件级指令级处理器级按完成的功能分类单功能流水线多功能流水线按连接的方式分类静态流水线动态流水线静态流水线是指在同一个时间内,多功能结构只能按一种功能的连接方式工作,这对于大量数据进行相同处理来说,具有很好的效果。但是遇到不同功能交替处理时,流水线就失去了其优点,运算速度与顺序处理方