1、计算机系统结构计算机系统结构(jigu)的基本概念的基本概念 第一页,共152页。1.1 计算机系统层次结构计算机系统层次结构1.1.1按功能划分的多级层次结构现代计算机是通过执行指令来解决问题的,它由软件和硬件两大部分组成。描述一个任务如何实现的指令序列称为程序,所有程序在执行前都必须转换成计算机能识别以及直接执行的机器指令。这些机器指令与机器硬件直接对应,并能被其直接识别和执行,然而使用机器语言编程既不方便,也无法适应解题(jit)需要和计算机应用范围的扩大。第二页,共152页。这个问题可从两方面去解决,前提是都需要设计一个比机器指令更方便(fngbin)使用或编程的指令集合,由它构成新的
2、语言,例如汇编语言。汇编语言是一种符号语言,给程序员编程提供了方便(fngbin),尽管每个语句仍基本上与机器指令对应,却并不能被机器直接识别和执行;用汇编语言开发的程序需要某种转换才能在实际机器上执行。转换的方式有以下两种:第三页,共152页。翻译(translation):在执行汇编语言源程序之前生成一个等价的机器语言指令序列来替换它,生成的程序全部由机器指令组成,计算机执行等效的机器语言源程序来代替(dit)原来的汇编语言源程序。即把源程序先转换成目标程序,而后再在机器上执行目标程序以获得结果。解释(interpretation):用机器指令写一个程序,将汇编语言源程序作为输入数据,按顺
3、序检查它的每条指令,然后直接执行等效的机器指令序列来解决问题。第四页,共152页。汇编语言源程序可以在机器上运行并获得结果,是因为有汇编程序的支持。在汇编语言程序设计者看来,就好像有了一台用汇编语言作为机器语言的机器。这里的机器是指能存储和执行程序的算法和数据结构的集合体。我们把以软件(Software)为主实现的机器,称之为虚拟(xn)机器,而把由硬件(Hardware)和固件(Firmware)实现的机器称为实际机器。显然,虚拟(xn)机器的实现是构筑在实际机器之上的。下图给出了虚拟(xn)机器与实际机器之间构成的一个简单的层次结构。第五页,共152页。图1.1虚拟(xn)机器和实际机器层
4、次结构举例第六页,共152页。语言与虚拟机之间存在着重要的对应关系,每种机器都有由它能执行的指令(zhlng)组成的机器语言。同时,语言也定义了机器,即机器要能执行这种语言所写的程序。有n层不同的语言,就对应有n层不同的虚拟机。在图1.2中我们给出了典型的现代计算机的多级层次结构。例如,汇编语言(L3)是面向机器的一种符号语言,其语法、语义结构仍然和二进制机器语言的基本相同,但与解题所需的差别较大,于是进一步出现了面向题目和过程的高级语言(L4);第七页,共152页。在高级语言的基础上还出现了面向应用的应用语言(L5),因此我们可以得到多个层次的虚拟机器;而对于实际机器级若采用微程序(chng
5、x)(L0)控制,它又可分解成传统机器级M1和微程序(chngx)级M0;虽然目前很多机器上的操作系统(L2)已不再用汇编语言编写,而是用面向系统软件的高级语言,如C语言,但从实质上看,操作系统是传统机器的引伸,它要提供传统机器所没有但为汇编语言和高级语言的使用和实现所需的某些基本操作和数据结构,如文件管理、进程管理、中断管理、作业控制、存储管理和输入输出等等,它们在许多机器上是经机器语言程序(chngx)解释实现的。因此,操作系统级放在传统机器级之上,汇编语言级之下。第八页,共152页。图1.2计算机系统的多级层次结构第九页,共152页。把计算机系统按功能划分为多个层次结构后,对各机器级的程
6、序员而言,只要熟悉和遵守该级语言的规范准则,所编写的程序总能在此机器级上运行并得到结果,而不用了解该机器级是如何实现的。各机器级的实现主要靠翻译或解释,或者是这两者的结合。翻译是先用转换程序将高一级机器级上的程序整个地变换成低一级机器级上可运行的等效(dnxio)程序,然后再在低一级机器级上实现的技术。解释则是在低一级机器级上用它的一串语句或指令来仿真高一级机器级上的一条语句或指令的功能,通过对高一级程序中的每条语句或指令逐条解释来实现的技术。第十页,共152页。计算机系统采用何种实现方式,要从效率、速度、价格、资源状况、可靠性等多方面因素全盘考虑,对软件、硬件及固件的取舍进行综合平衡。软件和
7、硬件在逻辑功能上是等效的,同一逻辑功能既可以用软件也可以用硬件或固件实现,从原理上讲,软件实现的功能完全可以用硬件或固件完成(wnchng),同样,硬件实现的逻辑功能也可以由软件的模拟来完成(wnchng),只是性能、价格以及实现的难易程度不同而已。第十一页,共152页。例如(lr),在计算机中实现十进制乘法这一功能,既可以用硬件来实现,也可以用软件来完成。用硬件实现,需设计十进制乘法机器指令,用硬件电路来实现该指令,其特点是完成这一功能的速度快,但需要更多的硬件。而用软件来实现这个功能,则要采用加法、移位等指令通过编程来实现,其特点是实现的速度慢,但不需增加硬件。第十二页,共152页。软软、
8、硬硬件件的的功功能能分分配配比比例例可可以以在在很很宽宽的的范范围围内内变变化化,这这种种变变化化是是动动态态的的,如如图图1.3 所所示示,软软硬硬功功能能分分配配的的比比例例随随不不同同时时期期以以及及同同一一时时期期的的不不同同机机器器的的变变化化而而变变化化。由由于于软软、硬硬件件是是紧紧密密相相关关的的,软软硬硬界界面面常常常常是是模模糊糊不不清清的的,在在计计算算机机系系统统的的功功能能实实现现上上,有有时时候候很很难难分分清清哪哪些些功功能能是是由由硬硬件件完完成成的的,哪哪些些功功能能是是由由软软件件完完成成的的。在在满满足足应应用用的的前前提提下下,软软硬硬功功能能分分配配比
9、比例例的的确确定定,主主要要是是看看能能否否充充分分利利用用硬硬件件、器器件件技技术术(jsh)的的现现状状和和进进展展,使使计计算算机机系系统统达达到到较较高高的的性性能能价价格格比比。对对于于计计算算机机系系统统的的用用户户,还还要要考考虑虑他他所所直直接接面面对对的的应应用语言所对应的机器级的发展状况。用语言所对应的机器级的发展状况。第十三页,共152页。图1.3软硬件功能(gngnng)分配第十四页,共152页。从目前软硬件技术(jsh)的发展速度及实现成本上看,随着器件技术(jsh)的高速发展,特别是半导体集成技术(jsh)的高速发展,以前由软件来实现的功能,越来越多的由硬件来实现,
10、总的来说,软件硬化是目前计算机系统发展的主要趋势。第十五页,共152页。1.1.2按功能划分层次的好处从概念和功能上把一个复杂的计算机系统看成是由多个机器级构成的层次结构,可以有如下的好处:首先,有利于理解软件、硬件和固件在系统中的地位(dwi)和作用;从系统层次的划分中,可以看出,微程序机器级(M0)、传统机器级(M1)、操作系统机器级(M2)不是为应用程序员解题设计的,而是为运行支持更高层次机器级程序所必须的解释程序和翻译程序而设计的,以便能设计和实现新的虚拟机器级。第十六页,共152页。在这之上的机器级(M3M5级)则主要是为应用程序设计人员解决各类实际应用问题而设计的。其次,系统按层次
11、进行划分,有利于理解各种语言的实质和实现途径;计算机各层次的语言总是通过低一级的语言翻译或解释来实现的,这就说明相邻机器级之间的语义差别不能太大。再次,系统按层次进行划分,有利于推动计算机系统结构的发展;例如,可以重新分配软、硬件的比例,为虚拟机器的各个层次提供更多更好的硬件支持,改变硬件及器件快速(kuis)发展而软件却日益复杂、开销过大的状况。第十七页,共152页。可以用硬件和固件来实现高级语言和操作系统而形成高级语言机器和操作系统机器。再如,用真正的机器来取代各级虚拟机,摆脱各级功能都在同一台实际机器上实现的状况(zhungkung),发展多处理机系统、分布处理系统、计算机网络等系统结构
12、。最后,系统按层次进行划分,有利于理解计算机系统结构的定义。把计算机按功能划分成多个不同的层次结构,从各个层次的功能划分和实现去了解计算机系统,有助于更深入的了解系统结构的定义。第十八页,共152页。1.2 计算机系统结构计算机系统结构(jigu)“计算机系统结构”这个名词来源于英文ComputerArchitecture,也译成“计算机体系结构”。architecture这个词原来用在建筑领域(lny),原意“建筑、建筑学”,60年代这个名词被引入计算机领域(lny),“计算机系统结构”一词已经得到普遍应用,它研究的内容不但涉及计算机硬件,也涉及计算机软件,已经成为一门学科。第十九页,共15
13、2页。1.2.1计算机系统结构的定义计算机系统结构这个词是Amdahl(Gene.Amdahl吉恩.阿姆达尔)等人在1964年介绍IBM360时提出的。他们把系统结构定义为由程序设计者所看到的一个计算机系统的属性,即概念性结构和功能特性。这实际上是计算机系统的外特性。按照计算机层次结构,不同程序设计者所看到的计算机具有不同的属性。在计算机技术中,一种本来是存在的事物或属性,但从某种角度看却好象不存在,称为透明性。通常,在一个计算机系统中,低层机器级的概念性结构和功能特性,对高级(goj)语言程序员来说是透明的。第二十页,共152页。概念性结构(jigu)指的是计算机系统中所有部件之间的逻辑连接
14、结构(jigu)功能特性主要指的是计算机系统的如下功能:数据表示,寻址方式,寄存器组织,指令系统,存储系统,中断机构,I/O结构(jigu)第二十一页,共152页。例如使用高级语言的程序员所看到的计算机属性主要是软件子系统和固件子系统的属性,包括(boku)程序语言以及操作系统、数据库管理系统、网络软件等用户界面。例如,IBM370系列机的中央处理器都具有相同的基本指令系统,指令的解释过程在不同档次机器中的处理方式不相同,但对程序设计者而言,所看到的数据形式都是相同的32位字长。第二十二页,共152页。同样,对于其不同档次机器,在组成与实现时,数据通路宽度(数据总线)可以(ky)分别采用8位、
15、16位、32位或64位,但对于程序员而言,数据总线宽度是透明的,即在设计程序时不需要考虑数据总线宽度的位数。Amdahl等人提出的系统结构定义中的程序设计者是指机器语言或编译程序设计者所看到的计算机属性,是硬件子系统的概念结构及其功能特性。第二十三页,共152页。1.2.2计算机系统结构研究的内容计算机系统结构研究的主要内容是计算机系统中各级(j)之间界面的定义及其上下的功能分配。在这里,我们主要讨论传统机器级的系统结构,即从机器语言程序员的角度所看到的计算机系统结构,如图1.4所示。第二十四页,共152页。图1.4计算机系统软硬件交界面第二十五页,共152页。界面之上的功能由软件实现;界面之
16、下的功能由硬件/固件实现。所以本书是研究(ynji)软、硬件功能的分配以及对机器级界面的确定,即由机器语言设计者或编译程序设计者所看到的机器物理系统的抽象或定义。它是机器语言程序设计者或是编译程序生成系统为使其所设计或生成的程序能在机器上正确运行,所需看到和遵循的计算机属性。它不包括机器内部的数据流和控制流、逻辑设计或器件设计等。第二十六页,共152页。因此,计算机系统结构因此,计算机系统结构 研究的是软、硬件之间的功能分配以及研究的是软、硬件之间的功能分配以及对传统机器级界面的确定,提供机器语言、对传统机器级界面的确定,提供机器语言、汇编语言程序设计者或编译程序生成系统为汇编语言程序设计者或
17、编译程序生成系统为使其所设计或生成的程序能在机器上正确运使其所设计或生成的程序能在机器上正确运行,应看到和遵循行,应看到和遵循(zn xn)的计算机属性。的计算机属性。第二十七页,共152页。对于目前的通用型机器,计算机系统结构(传统机器程序员所看到的属性)一般包括:(1)机器内的数据表示,包括硬件能直接识别和处理的数据类型和格式等;(2)寻址方式,包括最小寻址单位,寻址方式的种类、表示和地址计算等;(3)寄存器组织,包括操作数寄存器、变址寄存器、控制寄存器及某些专用(zhunyng)寄存器的定义、数量和使用约定;第二十八页,共152页。(4)指令系统,包括机器指令的操作类型和格式、指令间的排
18、序方式和控制机构等;(5)存储系统,包括最小编址单位、编址方式、主存容量和最大可编址空间等;(6)中断机构,包括中断的类型、中断分级、中断处理程序的功能和入口地址等;(7)机器工作状态的定义及切换,如在管态,处理机可以使用系统的全部指令和全部资源(zyun),而在目态,处理机只能执行用户程序;第二十九页,共152页。(8)输入输出机构,包括(boku)输入输出设备的连结方式,处理机/存储器与输入输出设备间数据传送的方式与格式、传送的数据量、以及输入输出操作的结束与出错标志等;(9)信息保护,包括(boku)信息保护方式和硬件对信息保护的支持等。第三十页,共152页。1.3 计算机组成计算机组成
19、(z chn)1.3.1计算机组成的定义计算机组成(ComputerOrganization,又称计算机设计)是指计算机系统的逻辑(luj)实现。包括机器内部的数据流和控制流的组成以及逻辑(luj)设计等。它着眼于机器内各事件的排序方式与控制机构、各部件的功能以及各部件间的联系。第三十一页,共152页。计 算 机 组 成 的 设 计 是 按 所 希 望 达 到 的 性 能(xngnng)价格比,最佳、最合理的把各种设备和部件组成计算机,以实现所确定的计算机系统结构。对传统机器程序员来说,计算机组成的设计内容一般是透明的。第三十二页,共152页。1.3.2计算机组成设计计算机组成的任务是在计算机
20、系统结构确定分配给硬件子系统的功能及其概念结构之后,研究各组成部分的内部构造和相互联系,以实现机器指令级的各种功能和特性。这种相互联系包括各功能部件的配置、相互连接和相互作用。各功能部件的性能参数相互匹配是计算机组成合理(hl)的重要标志,因而相应地就有许多计算机组织方法。例如,为了使存储器的容量大、速度快,人们研究出存储体系。在存储体系中,又有虚拟存储器、高速缓存、多模块交叉工作、多寄存器组和堆栈等技术。第三十三页,共152页。再如,为了使输入输出设备与处理机间的信息流量(liling)达到平衡,人们研究出通道、外围处理机等方式。为了提高处理机速度,人们研究出先行控制、流水线、多执行部件等方
21、式。在各功能部件的内部结构研究方面,产生了许多组合逻辑、时序逻辑的高效设计方法和结构。第三十四页,共152页。一般来讲,计算机组成设计要确定的内容应包括:(1)数据通路的宽度,指数据总线上一次能并行传送的信息位数;(2)专用部件(bjin)的设置,包括设置哪些专用部件(bjin),如乘除法专用部件(bjin)、浮点运算部件(bjin)、字符处理部件(bjin)、地址运算部件(bjin)等,每种专用部件(bjin)的个数等等,这些都决于所需达到的机器速度、专用部件(bjin)的使用频度及允许的价格等;第三十五页,共152页。(3)各种操作对部件的共享程度,若共享程度太高,由于共享部件的分时使用将
22、会降低操作的速度;若对同一功能部件设置多个以降低共享度,但系统的价格会随之升高。(4)功能部件的并行度,如功能部件的控制和处理方式是采用顺序串行方式,还是(hishi)采用重叠、流水、分布处理方式;(5)控制机构的组成方式,如控制机构是采用硬连线控制还是(hishi)微程序控制,是采用单机处理还是(hishi)多机处理或功能分布处理;第三十六页,共152页。(6)缓冲和排队技术,包括如何在部件间设置多大容量的缓冲器来弥补它们的速度差异,对于等待要求处理(chl)的事件如何排队,如随机、先进先出、先进后出、优先级、循环队等不同方式;(7)预估、预判技术,如采用何种原则来预测未来的行为,以优化性能
23、和优化处理(chl);(8)可靠性技术,如采用什么样的冗余技术和容错技术来提高可靠性。第三十七页,共152页。1.4 计算机实现计算机实现(shxin)1.4.1计算机实现的定义计算机实现(ComputerImplementation)是指计算机组成的物理实现。它包括处理机、主存等部件的物理结构,器件的集成度和速度,信号传输,器件、模块、插件、底板的划分与连接,专用(zhunyng)器件的设计。电源、冷却、装配等技术以及有关的制造技术和工艺等。它着眼于器件技术和微组装技术。其中,器件技术在实现技术中起着主导作用。第三十八页,共152页。1.4.2器件(qjin)技术研究的内容器件(qjin)技
24、术研究的内容包括:处理机、主存等部件的物理结构,器件(qjin)的集成度和速度,专用器件(qjin)的设计,信号传输等。例如,集成电路采用TTL类型还是MOS类型,最小光刻线条的尺寸,连线采用铝连线还是铜连线,集成电路内部的电容、电阻的设计,集成电路上的晶体管采用什么样的材料和工艺,如不同场合下可以选用硅、硅锗合金、砷化镓等等,其带来的物理特性、响应特性、功耗也各有不同。随着时间的推移,芯片的封装技术已经历了好几代的变迁,从DIP、QFP、PGA、BGA到CSP,再到MCM等等。第三十九页,共152页。计算机所用的基本器件已经(yjing)从初期的电子管、晶体管、中小规模集成电路、大规模集成电
25、路,发展到现在的超大规模集成电路(VLSI),其生产工艺从上世纪70年代的10微米发展到现在的0.09微米的水平,只用了不到30年的时间。其所能达到的集成度可以在一个芯片上集成上亿个晶体管。例如,在处理器方面,英特尔公司的第一个CPU的集成度为2000多个晶体管,而在1999年,英特尔公司推出的PentiumIII处理器的集成度就达到2400万个晶体管,到了2000年,采用Willamette核心,使用0.18微米生产工艺的Pentium4处理器的集成度就达到3400万个晶体管;第四十页,共152页。而其后推出的采用Northwood核心,使用0.13微米(wim)生产工艺的Pentium42
26、.53GHz处理器其集成度达到5500万个晶体管,最新的PentiumEE955处理器更是集成了3.76亿个晶体管。并且,AMD公司的Athlon64X2处理器的集成度也达到2.33亿个晶体管。第四十一页,共152页。计算机所用的基本器件不仅由分立器件发展到集成电路,其速度也有显著的提高。器件的发展是推动系统结构和组成前进的关键因素和主要动力。随着生产工艺以及材料工艺的进展,单个器件的尺寸可以越来越小,单个晶体管的尺寸已经从微米级缩小到纳米级,响应速度可以达到100GHz的量级,例如,IBM使用硅锗材料制造的晶体管,速度达到350GHz,为CPU的主频达到10G的水平(shupng)提供了技术
27、保障。器件技术的快速发展,使单个器件或集成电路的性能越来越高,而价格则越来越低;同时,也为各种新的系统结构和组成实现提供了硬件支持,并使计算机的应用得到快速普及。第四十二页,共152页。器件技术的发展还促进了算法、语言和软件的发展。随着CPU性价比的迅速改善,加速了大规模高性能并行处理机和通信网络的发展。由数百甚至(shnzh)上万个微处理器组成的MPP(MassivelyParallelProcessor大量信息并行处理机)系统促使人们不断研究新的并行算法、并行语言及相关应用软件和操作系统,以使系统的规模和处理速度能随结点处理器数的增加而显著提高。在2005年全球高性能计算机500强的排行榜
28、上,位居榜首的是美国国际商用机器公司(IBM)研制的“蓝色基因L”,运算速度高达每秒280.6万亿次浮点运算,目前部署在美国劳伦斯-利弗莫尔国家实验室中。第四十三页,共152页。位于IBM公司(ns)托马斯沃森研究中心的一台“蓝色基因”超级计算机名列第二,运算速度为每秒91.2万亿次。中国上海超级计算中心的“曙光4000A”名列第41位,运算速度为11万亿次,在中国研制的超级计算机中排名最高。第四十四页,共152页。1.4.3系统结构、组成(zchn)、实现三者的关系和相互影响计算机系统结构、计算机组成(zchn)和计算机实现是三个互不相同的概念,但它们是互相联系和相互影响的。计算机系统结构是
29、计算机系统的软、硬件分界面,是机器语言程序设计者或是编译程序生成系统为使其设计或生成的程序能在机器上运行所看到的计算机属性;计算机组成(zchn)是计算机系统结构的逻辑实现;计算机实现是计算机组成(zchn)的物理实现。第四十五页,共152页。具有相同系统结构的计算机可以采用不同的组成。例如,具有相同指令系统的计算机,指令的取出、译码、取操作数、运算、存结果既可以采用顺序方式进行(jnxng)解释,也可以采用流水方式让它们在时间上重叠进行(jnxng)来提高速度。又如乘法指令可以利用专用乘法器来实现,也可以通过加法器重复相加、移位来实现,这主要取决于对速度的要求、乘法指令出现的频度和所采用的乘
30、法运算方法。显然,前一种方法可以有效的提高乘法运算速度,而后一种方法则可以降低系统的价格。第四十六页,共152页。一种系统结构可以有多种计算机组成,同样,一种计算机组成可以采用多种不同的计算机实现。例如(lr),在CPU的选择上,同一类型的CPU一般都有多个不同的工作频率,从速度及价格等角度考虑,可以选择工作频率较高的CPU,来实现较高的运算速度,也可以选择工作频率较低的CPU,来保证系统的价格相对较低。又如在主存器件的选择上,可以选择TTL型的器件,也可以采用MOS型器件;即可以采用单片VLSI集成电路,也可以采用多片LSI或MSI集成电路组成;第四十七页,共152页。既可以(ky)选择响应
31、时间速度较快的芯片,也可以(ky)选择响应速度较慢的芯片。实际上,这也是在速度、价格等因素之间进行选择;换句话说,采用什么样的实现技术主要考虑所要达到的性能价格比及器件技术的现状。第四十八页,共152页。反过来,计算机实现(shxin)是计算机系统结构和计算机组成的基础,其技术的发展对计算机系统结构有着很大的影响,而计算机组成也会影响计算机系统结构。例如器件的发展使系统结构由大型机下移到小型机及微机的速度加快。早期用于大型机的各种数据表示、指令系统、操作系统很快应用到小型机以及微机上。例如,在目前的PC上使用的CPU,都普遍采用了在早期大型机才使用的超标量技术,并引入了VLIW(VeryLon
32、gInstructionWord超长指令集架构)技术,有些机器还使用了超流水线技术。第四十九页,共152页。系统结构的设计必须结合应用考虑,为软件和算法的实现提供更多更好的支持。同时,还要涉及到可能采用和准备采用的组成技术。即计算机系统结构的设计应考虑减少对各种组成及实现技术的使用限制,在一种系统结构中,应允许有多种不同的组成和实现技术。既能方便的在低档机器上用简单、低成本的组成实现,也能在高档机器上以较高的成本、复杂的组成实现。例如,在IBM370系列机中,由低到高有不同档次的机器,它们(tmen)的中央处理器都具有相同的基本指令系统,第五十页,共152页。只是指令的分析、执行方式不同,在低
33、档机器上用顺序方式处理,在高档机器上用并行方式处理。又如,在数据通路宽度的组成和实现上,不同档次机器可以分别采用8位、16位、32位和64位。IBM370系列机采用通道方式进行输入输出,其组成又可以分为(fnwi)在低档机器中采用的结合型通道和在高档机器中采用的独立型通道。第五十一页,共152页。在不同时期,系统结构、组成和实现所包含的内容会有所不同。在某些计算机系统中作为系统结构的内容,在另一些计算机系统中可能是组成和实现的内容。随着各种新技术的出现和发展,特别是器件技术的发展,各种功能都集成到一个芯片上,使系统结构、组成和实现融合(rngh)于一体,系统结构、组成和实现三者之间的界限越来越
34、模糊。第五十二页,共152页。1.5 计算机性能计算机性能(xngnng)计算机系统的性能指标(zhbio),主要取决于计算机的本质属性,即时空属性。各项指标(zhbio)都围绕着它的本质属性来定义。时间是衡量计算机性能的标准。同样的工作量,花费的时间越少速度就越快。衡量机器性能的唯一固定而且可靠的标准就是真正执行程序的时间。第五十三页,共152页。1.5.1性能因子CPICPU的工作是建立在一个固定的时钟节拍上的,这个节拍有一定的时间长度Tc,我们称之为时钟周期(zhuq)(clockcycles)。它是计算机内部操作的基本时间单位,即计算机内部每一基本功能操作在一个或多个时钟周期(zhuq
35、)的时间内完成。时钟周期(zhuq)的单位通常使用纳秒(ns),它的倒数则是时钟的频率,即CPU的主频,通常使用MHz或GHz来表示。第五十四页,共152页。定义:表示要执行程序中的指令总数,CPI表示执行每条指令所需的平均时钟周期(zhuq)数(clockcyclesperinstruction)。则有,一个程序在CPU上运行所需的时间TCPU可以用下述公式表示:(1.1)第五十五页,共152页。由此公式可见,程序运行的时间(shjin)取决于三个特征:时钟周期(或速率),每条指令所需的时钟周期数以及程序中总的指令数。由式1.1可得到CPI的表达式:(1.2)第五十六页,共152页。在程序执
36、行过程中,要用到不同类型的指令,令Ii表示(biosh)第i类指令在程序中执行次数,CPIi表示(biosh)执行一条第i类指令所需的平均时钟周期数,n为程序中所有的指令种类数。则式1.2可以改写为:(1.3)第五十七页,共152页。因为IN是一个常数,所以(suy)式1.3可以改写为:(1.4)第五十八页,共152页。其中表示第i类指令在程序中所占的比例(bl)。式1.4说明平均CPI,或称有效CPI,是等于每类指令的平均CPI和该类指令在整个程序中出现的百分比的乘积之和。在这里,我们可以用CPU时间来评价CPU性能,即(1.5)第五十九页,共152页。由式1.5可以看出,要改善CPU性能,
37、可以通过改变(gibin)其中某一项或几项因素来实现。事实上,这三个因素是相互关联的。时钟频率fC由硬件技术和组成技术决定,CPI与组成和指令集有关,而指令数IN则与指令集和编译技术有关。第六十页,共152页。1.5.2计算机性能常用指标MIPS和MFLOPS1.MIPS(millioninstructionspersecond,每秒百万次指令)这是一个用来描述计算机性能的尺度。对于一个给定的程序(chngx),MIPS定义为:(1.6)第六十一页,共152页。其中,表示时钟速率,它是时钟周期(zhuq)的倒数。如果用TE代替来表示程序的执行时间,则由式1.6可得TE的表达式:(1.7)第六十
38、二页,共152页。例例1.1 已知已知Pentium II处理机的处理机的CPI=0.5,试计算,试计算Pentium II 450处理机的运算速度处理机的运算速度(sd)。解:由于解:由于Pentium II 450处理机处理机fc450MHz,因此,应用式因此,应用式1.6可求出:可求出:第六十三页,共152页。即PentiumII450处理机的运算速度为900MIPS。显然,既然MIPS是单位时间内的执行次数,所以机器工作频率越高,其MIPS愈高;同样,执行每条指令所需的平均时钟周期数(CPI)越小,其MIPS值也越高。MIPS从一定(ydng)程度上反映了机器的性能。但是MIPS有三个
39、方面的缺陷:第六十四页,共152页。(1)MIPS依赖于指令集,所以使用MIPS来衡量(hngling)指令集不同的机器的性能优劣时,其结果是很不准确的。只适合于评价有相同指令集的机器。(2)从式1.4和1.6可以看出,在同一台机器上,程序不同,其CPI也会不同,其MIPS计算结果也会因为程序不同而发生变化,有时其差异是很大的。第六十五页,共152页。(3)MIPS可能与性能相反。典型例子就是具有可选硬件浮点运算部件的机器。因为浮点运算远慢于整数运算,所以很多机器提供了可选的硬件浮点运算部件,但是软件实现浮点运算的MIPS高。然而硬件实现浮点运算的时间少,这时MIPS与机器性能恰好相反(为什么
40、?)。在使用MIPS时应注意它的应用范围,它只适宜于评估标量机,因为在标量机中执行一条指令,一般可得到一个运算结果(jigu),而向量机中,执行一条向量指令通常可得到多个运算结果(jigu)。因此,用MIPS来衡量向量机是不合适的。第六十六页,共152页。2.MFLOPS(million floating point operations persecond,每秒百万次浮点运算)MFLOPS可用如下公式(gngsh)表示:(1.8)其中,IFN表示程序(chngx)中的浮点运算次数。第六十七页,共152页。由于MFLOPS取决于机器和程序两个方面,因此MFLOPS只能(zhnn)用来衡量机器浮
41、点操作的性能,而不能体现机器的整体性能。例如编译程序,不管机器的性能有多好,它的MFLOPS不会太高。第六十八页,共152页。MFLOPS测量单位比较适用于衡量向量机的性能,因为MFLOPS是基于操作而非指令的,所以它可以用来比较两种不同的机器。一般而言,同一程序运行在不同计算机上时往往会执行(zhxng)不同的指令数,但所执行(zhxng)的浮点数个数常常是相同的。采用MFLOPS作为衡量单位时,应注意它的值不但会随整数、浮点数操作混合比例的不同发生变化,而且也会随快速和慢速浮点操作混合比例的变化而变化。例如,运行由100%浮点加组成的程序所得到的MFLOPS值将比由100%浮点除法组成的程
42、序要高。第六十九页,共152页。MFLOPS和MIPS两个衡量值之间的量值关系,没有统一标准,一般认为在标量计算机中执行一次浮点运算需要25条指令,平均约需3条指令,故有1MFLOPS3MIPS。例1.2用一台40MHZ处理机执行标准测试程序,程序所含的混合指令数和每类指令的CPI如表1.1所示,求有效(yuxio)CPI、MIPS速率和程序的执行时间。第七十页,共152页。表1.1标准测试程序的混合(hnh)指令数和相应所需的时钟周期数指令类型整数运算数据传送浮点操作控制传送指令数4500032000150008000CPI1222第七十一页,共152页。解:总的指令数为:45000+320
43、00+15000+8000=100000条,因此各类指令所占的比例分别是:整数运算为45%,数据传送为32%,浮点操作为15%,控制传送为8%有效CPI、MIPS速率和程序(chngx)的执行时间分别计算如下:(1)有效CPI为:10.45+20.32+20.15+20.08=1.55CPI(2)MIPS速率为:1/1.5540=25.8MIPS(3)程序(chngx)的执行时间为:1000001.55/(40106)=0.003875s=3875us第七十二页,共152页。例例1.3 假定你是一个计算机设计者,已设想了一个优假定你是一个计算机设计者,已设想了一个优化的设计方案化的设计方案(f
44、ng n),它能减少过程调用和返回所,它能减少过程调用和返回所需的取需的取/存指令次数。为了进行验证,对未加优化和已存指令次数。为了进行验证,对未加优化和已优化的方案优化的方案(fng n)进行实验测试,其中假定所使用进行实验测试,其中假定所使用的是相同的优化编译器。实验测得的结果如下:的是相同的优化编译器。实验测得的结果如下:优化方案优化方案(fng n)的时钟周期比未优化的快的时钟周期比未优化的快15%;未优化方案未优化方案(fng n)中的取中的取/存指令数占总指令存指令数占总指令数的数的30%;第七十三页,共152页。优化方案中的取/存指令比未优化的少1/3。对于其它指令,两种方案的动
45、态执行数没有变化;未优化方案的所有指令执行均只需1个时钟(shzhng)周期,而优化方案只有取/存指令执行需要2个时钟(shzhng)周期,其它指令执行也只需1个时钟(shzhng)周期。试计算:(1)优化方案的平均CPI;(2)优化方案加速比。第七十四页,共152页。解:(1)优化方案(fngn)的平均CPI为:0.2/0.92+0.7/0.911.22CPI第七十五页,共152页。(2)由题意,因为(ynwi)未优化方案的所有指令执行均只需1个时钟周期,因此其平均CPI为1CPI。根据题意,有:(Tc未优化-Tc优化)/Tc未优化=0.15解之,得:Tc优化=0.85Tc未优化第七十六页,
46、共152页。优化方案(fngn)的加速比为:Sp=未优化方案(fngn)程序的执行时间/已优化方案(fngn)程序的执行时间=(IN未优化CPI未优化Tc未优化)/(IN优化CPI优化Tc优化)=(IN未优化1Tc未优化)/(0.9IN未优化1.220.85Tc未优化)1.075第七十七页,共152页。3.用基准程序来评价计算机性能基准程序(benchmark)是性能测试程序,并假设它能刻划某一类应用问题的处理和数据移动特征。基准程序用来测量和预测计算机系统的性能,并能提示它们的体系结构的弱点和优点(yudin)。基准程序组(benchmarksuite)是一套基准程序的控制测试条件及过程的一
47、组特定规则,包括输入数据、输出结果以及性能指标。基准程序系列(benchmarkfamily)则是一套基准程序组。第七十八页,共152页。基准程序可分为宏基准程序和微基准程序两大类。宏基准程序用来测量一个计算机系统的总体性能,而微基准程序则是用来测量一个计算机系统某一特定(tdng)方面的性能,如CPU速度、存储器速度、I/O速度、操作系统性能及网络性能等等。表1.2示出了几个具有代表性的微基准程序组和宏基准程序组。第七十九页,共152页。SPEC(StandardPerformanceEvaluationCorporation)最初是由30个左右世界知名计算机大厂商所支持的非盈利的合作组织,
48、成员包括:IBM、AT&T、BULL、Compaq、CDC、DG、DEC、Fujitsu、HP、Intel、MIPS、SGI、SUN、Unisys等;SPEC基准测试程序能够全面反映机器的性能,具有很高的参考价值,已成为事实上的工业标准。随着因特网的快速发展,各种各样的新技术的应用,SPEC也不断变化(binhu)和增加其测试的范围和内容。第八十页,共152页。SPEC已经(yjing)从早期只进行CPU性能测试发展到电子商务、万维网服务、电子邮件服务、高性能机群计算机等等多方面应用的测试。例如,SPECjAppServer2002应用于JAVA应用服务器性能测试,SPECMAIL2001提供
49、电子邮件服务器性能测试,SPECweb99则是用来评估万维网服务器性能的测试。第八十一页,共152页。表1.2几个具有(jyu)代表性的微基准程序组和宏基准程序组类型名称测试范围微基准程序LINPACK数值计算(线性代数)LMBENCHUnix中的系统调用和数据移动STREAM存储器带宽宏基准程序NAS并行计算(CFD)PARKBENCH并行计算SPEC混合基准程序系列Splash并行计算STAP信号处理TPC商业应用第八十二页,共152页。在1989年10月,SPEC发布了第一个基准测试程序,包含(bohn)10个测试程序,程序量超过15万行,4个定点程序,6个浮点程序;其测试结果用SPEC
50、int89和SPECfp89表示。1992年,又增加10个测试程序,共有6个定点程序和14个浮点程序,测试结果用SPECint92和SPECfp92表示。1995年推出SPECint95和SPECfp95。到了1999年,发布了测试标准为SPECCPU2000的第一个版本V1.0,2001年推出了SPECCPU2000的V1.2版本。第八十三页,共152页。SPEC CPU2000由CINT2000 和CFP2000组成,其中CINT2000由12个基准测试程序(chngx)(11个由C语言编写,1个由C+语言编写)组成,分别是gzip、vpr、gcc、mcf、crafty、parser、eo