版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向21世纪>高等学校计算机类专业系列教材
计算机系统结构
陈智勇
第乞电孑科技大孽出版社
目录
第1章基础知识
第2章指令系统
第3章存储系统设计
第4章流水线计算机设计技术
第5章并行处理技术
第6章向量处理机
第7章多处理机
第8章并行算法
第9章数据流计算机系统结构
第1章基础知识
L1计算机系统层次结构
L2计算机系统结构
L3计算机组成
L4计算机实现
L5计算机性能
1.6计算机系统的分类
习题1
1.1计算机系统层次结构
1.1.1按功能划分的多级层次结构
现代计算机是通过执行指令来解决问题的,它由
软件和硬件两大部分组成。描述一个任务如何实现的
指令序列称为程序,所有程序在执行前都必须转换成
计算机能识别以及直接执行的机器指令。这些机器指
令与机器硬件直接对应,并能被其直接识别和执行,
然而使用机器语言编程既不方便,也无法适应解题需
要和计算机应用范围的扩大。
这个问题可从两方面去解决,前提是都需要设计一个
比机器指令更方便使用或编程的指令集合,由它构成
新的语言,例如汇编语言。汇编语言是一种符号语
言,给程序员编程提供了方便,尽管每个语句仍基本
上与机器指令对应,却并不能被机器直接识别和执
行;用汇编语言开发的程序需要某种转换才能在实际
机器上执行。一种方式是翻译(translation),在执行汇
编语言源程序之前生成一个等价的机器语言指令序列
来替换它,生成的程序全部由机器指令组成,计算机
执行等效的机器语言源程序来代替原来的汇编语言源
程序。
即把源程序先转换成目标程序,而后再在机器上执行
目标程序以获得结果。另一种方式是解释
(interpretation),用机器指令写一个程序,将汇编语言
源程序作为输入数据,按顺序检查它的每条指令,然
后直接执行等效的机器指令序列来解决问题。
第2级虚拟机器M2
具有L2机器语言(汇编语言)
第1级实际机器Ml
具有L1机器语言(机器指令系统)
图1.1虚拟机器和实际机器层次
结构举例
汇编语言源程序可以在机器上运行并获得结果,
是因为有汇编程序的支持。在汇编语言程序设计者看
来,就好像有了一台用汇编语言作为机器语言的机器。
这里的机器是指能存储和执行程序的算法和数据结构
的集合体。我们把以软件为主实现的机器,称之为虚
拟机器,而把由硬件和固件实现的机器称为实际机器。
显然,虚拟机器的实现是构筑在实际机器之上的。图
1.1给出了虚拟机器与实际机器之间构成的一个简单的
层次结构。
语言与虚拟机之间存在着重要的对应关系,每种
机器都有由它能执行的指令组成的机器语言。同时,
语言也定义了机器,即机器要能执行这种语言所写的
程序。有n层不同的语言,就对应有n层不同的虚拟机。
在图1.2中我们给出了典型的现代计算机的多级层次结
构。例如,汇编语言(L3)是面向机器的一种符号语
言,其语法、语义结构仍然和二进制机器语言的基本
相同,但与解题所需的差别较大,于是进一步出现了
面向题目和过程的高级语言(L4);
在高级语言的基础上还出现了面向应用的应用语言
(L5),因此我们可以得到多个层次的虚拟机器;而对
于实际机器级若采用微程序(L0)控制,它又可分解成
传统机器级Ml和微程序级M0;虽然目前很多机器上
的操作系统(L2)已不再用汇编语言编写,而是用面向
系统软件的高级语言,如C语言,但从实质上看,操作
系统是传统机器的引伸,它要提供传统机器所没有但
为汇编语言和高级语言的使用和实现所需的某些基本
操作和数据结构,如文件管理、进程管理、中断管理、
作业控制、存储管理和输入输出等等,它们在许多机
器上是经机器语言程序解释实现的。因此,操作系统
级放在传统机器级之上,汇编语言级之下。
第5级
(虚拟机器)
第4级
(虚拟机器)
第3级
(虚拟机器)
第2级
(虚拟机器)
第1级
(实际机器)
第0级
(实际机器)
图1.2计算机系统的多级层次结构
把计算机系统按功能划分为多个层次结构后,对
各机器级的程序员而言,只要熟悉和遵守该级语言的
规范准则,所编写的程序总能在此机器级上运行并得
到结果,而不用了解该机器级是如何实现的。各机器
级的实现主要靠翻译或解释,或者是这两者的结合。
翻译是先用转换程序将高一级机器级上的程序整个地
变换成低一级机器级上可运行的等效程序,然后再在
低一级机器级上实现的技术。解释则是在低一级机器
级上用它的一串语句或指令来仿真高一级机器级上的
一条语句或指令的功能,通过对高一级程序中的每条
语句或指令逐条解释来实现的技术。
计算机系统采用何种实现方式,要从效率、速度、
价格、资源状况、可靠性等多方面因素全盘考虑,对
软件、硬件及固件的取舍进行综合平衡。
软件和硬件在逻辑功能上是等效的,同一逻辑功
能既可以用软件也可以用硬件或固件实现,从原理上
讲,软件实现的功能完全可以用硬件或固件完成,同
样,硬件实现的逻辑功能也可以由软件的模拟来完
成,只是性能、价格以及实现的难易程度不同而已。
例如,在计算机中实现十进制乘法这一功能,既
可以用硬件来实现,也可以用软件来完成。用硬件实
现,需设计十进制乘法机器指令,用硬件电路来实现
该指令,其特点是完成这一功能的速度快,但需要更
多的硬件。而用软件来实现这个功能,则要采用加法、
移位等指令通过编程来实现,其特点是实现的速度
慢,但不需增加硬件。
软、硬件的功能分配比例可以在很宽的范围内变
化,这种变化是动态的,如图1.3所示,软硬功能分配
的比例随不同时期以及同一时期的不同机器的变化而
变化。由于软、硬件是紧密相关的,软硬界面常常是
模糊不清的,在计算机系统的功能实现上,有时候很
难分清哪些功能是由硬件完成的,哪些功能是由软件
完成的。在满足应用的前提下,软硬功能分配比例的
确定,主要是看能否充分利用硬件、器件技术的现状
和进展,使计算机系统达到较高的性能价格比。对于
计算机系统的用户,还要考虑他所直接面对的应用语
言所对应的机器级的发展状况。
功能分配比例%
图1.3软硬件功能分配
从目前软硬件技术的发展速度及实现成本上看,
随着器件技术的高速发展,特别是半导体集成技术的
高速发展,以前由软件来实现的功能,越来越多的由
硬件来实现,总的来说,软件硬化是目前计算机系统
发展的主要趋势。
1.1.2按功能划分层次的好处
从概念和功能上把一个复杂的计算机系统看成是
由多个机器级构成的层次结构,可以有如下的好处:
首先,有利于理解软件、硬件和固件在系统中的地位
和作用;从系统层次的划分中,可以看出,微程序机
器级(M0)、传统机器级(Ml)、操作系统机器级
(M2)不是为应用程序员解题设计的,而是为运行支
持更高层次机器级程序所必须的解释程序和翻译程序
而设计的,以便能设计和实现新的虚拟机器级。
在这之上的机器级(M3〜M5级)则主要是为应用程序
设计人员解决各类实际应用问题而设计的。其次,系
统按层次进行划分,有利于理解各种语言的实质和实
现途径;计算机各层次的语言总是通过低一级的语言
翻译或解释来实现的,这就说明相邻机器级之间的语
义差别不能太大。再次,系统按层次进行划分,有利
于推动计算机系统结构的发展;例如,可以重新分配
软、硬件的比例,为虚拟机器的各个层次提供更多更
好的硬件支持,改变硬件及器件快速发展而软件却日
益复杂、开销过大的状况。
可以用硬件和固件来实现高级语言和操作系统而形成高
级语言机器和操作系统机器。再如,用真正的机器来
取代各级虚拟机,摆脱各级功能都在同一台实际机器
上实现的状况,发展多处理机系统、分布处理系统、
计算机网络等系统结构。最后,系统按层次进行划
分,有利于理解计算机系统结构的定义。把计算机按
功能划分成多个不同的层次结构,从各个层次的功能
划分和实现去了解计算机系统,有助于更深入的了解
系统结构的定义。
<Back4、
1.2计算机系统结构
“计算机系统结构”这个名词来源于英文computer
architecture,也译成“计算机体系结构"。architecture这
个词原来用在建筑领域,60年代这个名词被引入计算
机领域,“计算机系统结构”一词已经得到普遍应用,
它研究的内容不但涉及计算机硬件,也涉及计算机软
件,已经成为一门学科。
1.2.1计算机系统结构的定义
计算机系统结构这个词是Amdahl等人在1964年介绍
IBM360时提出的。他们把系统结构定义为由程序设计
者所看到的一个计算机系统的属性,即概念性结构和功
能特性。这实际上是计算机系统的外特性。按照计算机
层次结构,不同程序设计者所看到的计算机具有不同的
属性。在计算机技术中,—种本来是存在的事物或属
性,但从某种角度看却好象不存在,称为透明性。通
常,在一个计算机系统中,低层机器级的概念性结构和
功能特性,对高级语言程序员来说是透明的。
例如使用高级语言的程序员所看到的计算机属性
主要是软件子系统和固件子系统的属性,包括程序语
言以及操作系统、数据库管理系统、网络软件等用户
界面。例如,IBM370系列机的中央处理器都具有相同
的基本指令系统,指令的解释过程在不同档次机器中
的处理方式不相同,但对程序设计者而言,所看到的
数据形式都是相同的32位字长。
同样,对于其不同档次机器,在组成与实现时,数据
通路宽度(数据总线)可以分别采用8位、16位、32位
或64位,但对于程序员而言,数据总线宽度是透明
的,即在设计程序时不需要考虑数据总线宽度的位数。
Amdahl等人提出的系统结构定义中的程序设计者是指
机器语言或编译程序设计者所看到的计算机属性,是
硬件子系统的概念结构及其功能特性。
1.2.2计算机系统结构研究的内容
计算机系统结构研究的主要内容是计算机系统中
各级之间界面的定义及其上下的功能分配。在这里,
我们主要讨论传统机器级的系统结构,即从机器语言
程序员的角度所看到的计算机系统结构,如图1.4所示。
界面之上的功能由软件实现;界面之下的功能由
硬件/固件实现。所以本书是研究软、硬件功能的分配
以及对机器级界面的确定,即由机器语言设计者或编
译程序设计者所看到的机器物理系统的抽象或定义。
它是机器语言程序设计者或是编译程序生成系统为使
其所设计或生成的程序能在机器上正确运行,所需看
到和遵循的计算机属性。它不包括机器内部的数据流
和控制流、逻辑设计或器件设计等。
软件和硬件的交界面
软件/(从机器语言程序员的角度看)
硬件
图L4计算机系统软硬件交界面
对于目前的通用型机器,计算机系统结构(传统机
器程序员所看到的属性)一般包括:
(1)机器内的数据表示,包括硬件能直接识别和处
理的数据类型和格式等;
(2)寻址方式,包括最小寻址单位,寻址方式的种
类、表示和地址计算等;
(3)寄存器组织,包括操作数寄存器、变址寄存器、
控制寄存器及某些专用寄存器的定义、数量和使用约
定;
(4)指令系统,包括机器指令的操作类型和格式、
指令间的排序方式和控制机构等;
(5)存储系统,包括最小编址单位、编址方式、主
存容量和最大可编址空间等;
(6)中断机构,包括中断的类型、中断分级、中断
处理程序的功能和入口地址等;
(7)机器工作状态的定义及切换,如在管态,处理
机可以使用系统的全部指令和全部资源,而在目态,
处理机只能执行用户程序;
(8)输入输出机构,包括输入输出设备的连结方
式,处理机/存储器与输入输出设备间数据传送的方式
与格式、传送的数据量、以及输入输出操作的结束与
出错标志等;
(9)信息保护,包括信息保护方式和硬件对信息保
护的支持等。
<Back4、
—
1.3计算机组成
1.3.1计算机组成的定义
计算机组成(computerorganization,又称计算机设
计)是指计算机系统的逻辑实现。包括机器内部的数
据流和控制流的组成以及逻辑设计等。它着眼于机器
内各事件的排序方式与控制机构、各部件的功能以及
各部件间的联系。
计算机组成的设计是按所希望达到的性能价格比,
最佳、最合理的把各种设备和部件组成计算机,以实
现所确定的计算机系统结构。对传统机器程序员来
说,计算机组成的设计内容一般是透明的。
1.3.2计算机组成设计
计算机组成的任务是在计算机系统结构确定分配
给硬件子系统的功能及其概念结构之后,研究各组成
部分的内部构造和相互联系,以实现机器指令级的各
种功能和特性。这种相互联系包括各功能部件的配置、
相互连接和相互作用。各功能部件的性能参数相互匹
配是计算机组成合理的重要标志,因而相应地就有许
多计算机组织方法。例如,为了使存储器的容量大、
速度快,人们研究出存储体系。在存储体系中,又有
虚拟存储器、高速缓存、多模块交叉工作、多寄存器
组和堆栈等技术。
再如,为了使输入输出设备与处理机间的信息流量
达到平衡,人们研究出通道、外围处理机等方式。为
了提高处理机速度,人们研究出先行控制、流水线、
多执行部件等方式。在各功能部件的内部结构研究方
面,产生了许多组合逻辑、时序逻辑的高效设计方法
和结构。
一般来讲,计算机组成设计要确定的内容应包括:
(1)数据通路的宽度,指数据总线上一次能并行传送
的信息位数;
(2)专用部件的设置,包括设置哪些专用部件,如
乘除法专用部件、浮点运算部件、字符处理部件、地
址运算部件等,每种专用部件的个数等等,这些都决
于所需达到的机器速度、专用部件的使用频度及允许
的价格等;
(3)各种操作对部件的共享程度,若共享程度太
高,由于共享部件的分时使用将会降低操作的速度;
若对同一功能部件设置多个以降低共享度,但系统的
价格会随之升高。
(4)功能部件的并行度,如功能部件的控制和处理
方式是采用顺序串行方式,还是采用重叠、流水、分
布处理方式;
(5)控制机构的组成方式,如控制机构是采用硬连
线控制还是微程序控制,是采用单机处理还是多机处
理或功能分布处理;
(6)缓冲和排队技术,包括如何在部件间设置多大
容量的缓冲器来弥补它们的速度差异,对于等待要求
处理的事件如何排队,如随机、先进先出、先进后出、
优先级、循环队等不同方式;
(7)预估、预判技术,如采用何种原则来预测未来
的行为,以优化性能和优化处理;
(8)可靠性技术,如采用什么样的冗余技术和容错技
术来提高可靠性。
<Back4、
1.4计算机实现
1.4.1计算机实现的定义
计算机实现(computerimplementation)是指计算机
组成的物理实现。它包括处理机、主存等部件的物理
结构,器件的集成度和速度,信号传输,器件、模块、
插件、底板的划分与连接,专用器件的设计。电源、
冷却、装配等技术以及有关的制造技术和工艺等。它
着眼于器件技术和微组装技术。其中,器件技术在实
现技术中起着主导作用。
1.4.2器件技术研究的内容
器件技术研究的内容包括:处理机、主存等部件的
物理结构,器件的集成度和速度,专用器件的设计,
信号传输等。例如,集成电路采用TTL类型还是MOS
类型,最小光刻线条的尺寸,连线采用铝连线还是铜
连线,集成电路内部的电容、电阻的设计,集成电路
上的晶体管采用什么样的材料和工艺,如不同场合下
可以选用硅、硅铸合金、硅化钱等等,其带来的物理
特性、响应特性、功耗也各有不同。随着时间的推
移,芯片的封装技术已经历了好几代的变迁,从DIP、
QFP、PGA、BGA至UCSP,再到MCM等等。
计算机所用的基本器件已经从初期的电子管、晶
体管、中小规模集成电路、大规模集成电路,发展到
现在的超大规模集成电路,其生产工艺从上世纪70年
代的10微米发展到现在的0.09微米的水平,只用了不到
30年的时间。其所能达到的集成度可以在一个芯片上
集成上亿个晶体管。例如,在处理器方面,英特尔公
司的第一个CPU的集成度为2000多个晶体管,而在
1999年,英特尔公司推出的PentiumIII处理器的集成度
就达到2400万个晶体管,到了2000年,采用Willamette
核心,使用0.18微米生产工艺的Pentium4处理器的集
成度就达到3400万个晶体管;
而其后推出的采用Northwood核心,使用0.13微米生
产工艺的Pentium42.53GHz处理器其集成度达到5500
万个晶体管。同期,AMD公司的AthlonXP2600+处理
器的集成度也达到3760万个晶体管。其即将推出的代
号为Hammer的新一代微处理器集成度将达到1亿个晶
体管。
计算机所用的基本器件不仅由分立器件发展到集成
电路,其速度也有显著的提高。器件的发展是推动系统
结构和组成前进的关键因素和主要动力。随着生产工艺
以及材料工艺的进展,单个器件的尺寸可以越来越小,
单个晶体管的尺寸已经从微米级缩小到纳米级,响应速
度可以达到100GHz的量级,例如,IBM使用硅铸材料
制造的晶体管,速度达到350GHz,为CPU的主频达到
10G的水平提供了技术保障。器件技术的快速发展,使
单个器件或集成电路的性能越来越高,而价格则越来越
低;同时,也为各种新的系统结构和组成实现提供了硬
件支持,并使计算机的应用得到快速普及。
器件技术的发展还促进了算法、语言和软件的发
展。随着CPU性价比的迅速改善,加速了大规模高性
能并行处理机和通信网络的发展。由数百甚至上万个
微处理器组成的MPP系统促使人们不断研究新的并行
算法、并行语言及相关应用软件和操作系统,以使系
统的规模和处理速度能随结点处理器数的增加而显著
提高。在2002年全球高性能计算机500强的排行榜上,
位居榜首的是日本NEC研制,安置在横滨地球模拟研
究发展中心的EarthSimulator(地球模拟器),
它由日本政府资助,其实测运算速度可达到每秒
35.86TFLOPS,由5120个处理器构成。IBM公司研制的
由8192个处理器构成的“ASCIWhite-Pacific”超级计算
机,以7.3TFLOPS排名第二。由我国联想公司研制的
由512个xeon处理器组成的深腾1800的运算速度达到
1.027TFLOPS,排名第43。
1.4.3系统结构、组成、实现三者的关系和相互影响
计算机系统结构、计算机组成和计算机实现是三个
互不相同的概念,但它们是互相联系和相互影响的。
计算机系统结构是计算机系统的软、硬件分界面,是
机器语言程序设计者或是编译程序生成系统为使其设
计或生成的程序能在机器上运行所看到的计算机属
性;计算机组成是计算机系统结构的逻辑实现;计算
机实现是计算机组成的物理实现。
具有相同系统结构的计算机可以采用不同的组成。
例如,具有相同指令系统的计算机,指令的取出、译
码、取操作数、运算、存结果既可以采用顺序方式进
行解释,也可以采用流水方式让它们在时间上重叠进
行来提高速度。又如乘法指令可以利用专用乘法器来
实现,也可以通过加法器重复相加、移位来实现,这
主要取决于对速度的要求、乘法指令出现的频度和所
采用的乘法运算方法。显然,前一种方法可以有效的
提高乘法运算速度,而后一种方法则可以降低系统的
价格。
一种系统结构可以有多种计算机组成,同样,一种
计算机组成可以采用多种不同的计算机实现。例如,
在CPU的选择上,同一类型的CPU一般都有多个不同
的工作频率,从速度及价格等角度考虑,可以选择工
作频率较高的CPU,来实现较高的运算速度,也可以
选择工作频率较低的CPU,来保证系统的价格相对较
低。又如在主存器件的选择上,可以选择TTL型的器
件,也可以采用MOS型器件;即可以采用单片VLSI集
成电路,也可以采用多片LSI或MSI集成电路组成;
既可以选择响应时间速度较快的芯片,也可以选择响应
速度较慢的芯片。实际上,这也是在速度、价格等因
素之间进行选择;换句话说,采用什么样的实现技术
主要考虑所要达到的性能价格比及器件技术的现状。
反过来,计算机实现是计算机系统结构和计算机组
成的基础,其技术的发展对计算机系统结构有着很大
的影响,而计算机组成也会影响计算机系统结构。例
如器件的发展使系统结构由大型机下移到小型机及微
机的速度加快。早期用于大型机的各种数据表示、指
令系统、操作系统很快应用到小型机以及微机上。例
如,在目前的PC上使用的CPU,都普遍采用了在早期
大型机才使用的超标量技术,并引入了VLIW技术,有
些机器还使用了超流水线技术。
系统结构的设计必须结合应用考虑,为软件和算
法的实现提供更多更好的支持。同时,还要涉及到可
能采用和准备采用的组成技术。即计算机系统结构的
设计应考虑减少对各种组成及实现技术的使用限制,
在一种系统结构中,应允许有多种不同的组成和实现
技术。既能方便的在低档机器上用简单、低成本的组
成实现,也能在高档机器上以较高的成本、复杂的组
成实现。例如,在IBM370系列机中,由低到高有不同
档次的机器,它们的中央处理器都具有相同的基本指
令系统,
只是指令的分析、执行方式不同,在低档机器上用顺序
方式处理,在高档机器上用并行方式处理。又如,在
数据通路宽度的组成和实现上,不同档次机器可以分
别采用8位、16位、32位和64位。IBM370系列机采用
通道方式进行输入输出,其组成又可以分为在低档机
器中采用的结合型通道和在高档机器中采用的独立型
通道。
在不同时期,系统结构、组成和实现所包含的内容
会有所不同。在某些计算机系统中作为系统结构的内
容,在另一些计算机系统中可能是组成和实现的内容。
随着各种新技术的出现和发展,特别是器件技术的发
展,各种功能都集成到一个芯片上,使系统结构、组
成和实现融合于一体,系统结构、组成和实现三者之
间的界限越来越模糊。
<Back*
—
1.5计算机性能
计算机系统的性能指标,主要取决于计算机的本质
属性,即时空属性。各项指标都围绕着它的本质属性
来定义。时间是衡量计算机性能的标准。同样的工作
量,花费的时间越少速度就越快。衡量机器性能的唯
一固定而且可靠的标准就是真正执行程序的时间。
151性能因子CPI
CPU的工作是建立在一个固定的时钟节拍上的,这
个节拍有一定的时间长度Tc,我们称之为时钟周期
(clockcycles)o它是计算机内部操作的基本时间单位,
即计算机内部每一基本功能操作在一个或多个时钟周
期的时间内完成。时钟周期的单位通常使用纳秒
(ns),它的倒数则是时钟的频率,即CPU的主频,
通常使用MHz或GHz来表示。
一个程序在CPU上运行所需的时间TCPU可以用下述
公式表示:
(1.1)
TCPU=【N义CPIxTc
在式1.1中,表示要执行程序中的指令总数,CPI
表示执行每条指令所需的平均时钟周期数(Clock
cyclesperinstruction)。由此公式可见,程序运行的时
间取决于三个特征:时钟周期(或速率),每条指令
所需的时钟周期数以及程序中总的指令数。由式1.1可
得到CPI的表达式:
执行整个程序所需CPU时钟周期数般.
二程序中指令总数
在程序执行过程中,要用到不同类型的指令,令I表
示第i类指令在程序中执行次数,CP1表示执行一条第i
类指令所需的平均时钟周期数,n为程序中所有的指令
种类数。则式1.2可以改写为:
n
£cPIjXli
i=l
CPI=(1.3)
N
因为IN是一个常数,所以式L3可以改写为:
CPI=E(CPIiXl』N)(L4)
i=l
其中A表示第i类指令在程序中所占的比例。式
1.4说明平均CPI,或称有效CPI,是等于每类指令的平
均CPI和该类指令在整个程序中出现的百分比的乘积之
和。在这里,我们可以用CPU时间来评价CPU性能,
即
。尸。性能=(,NXCPIXTCY1=^4^5)
C
INxCPI
由式1.5可以看出,要改善CPU性能,可以通过改变
其中某一项或几项因素来实现。事实上,这三个因素
是相互关联的。时钟频率Q由硬件技术和组成技术决
定,CPI与组成和指令集有关,而指令数IN则与指令集
和编译技术有关。
1.5.2计算机性能常用指标MIPS和MFLOPS
1.MIPS(millioninstructionspersecond,每秒百万次
指令)
这是一个用来描述计算机性能的尺度。对于一个给定
的程序,MIPS定义为:
MIPS==—(1.6)
66
TCPUxlOCPZxlO
其中,森示时钟速率,它是时钟周期的倒数。
如果用TE代替来表示程序的执行时间,则由式
L6可得TE的表达式:
T=-----
MIPSxElO6(1.7)
例1.1已知PentiumII处理机的CPI=0.5,试计算
PentiumII450处理机的运算速度。
解:由于Pentium]1450处理机fc=450MHz,因
此,应用式1.6可求出:
fc450xlQ6
iMVlIiPlS二900MIPS
°Pentiumll45QCP/xlO60.5xlO6
BPPentiumll450处理机的运算速度为900MlpS。
显然,既然MIPS是单位时间内的执行次数,所以机
器工作频率越高,其MIPS愈高;同样,执行每条指令
所需的平均时钟周期数(CPI)越小,其MIPS值也越
高。MIPS从一定程度上反映了机器的性能。但是MIPS
有三个方面的缺陷:
(l)MIPS依赖于指令集,所以使用MIPS来衡量指令
集不同的机器的性能优劣时,其结果是很不准确的。
只适合于评价有相同指令集的机器。
(2)从式1.4和1.6可以看出,在同一台机器上,程序
不同,其CPI也会不同,其MIPS计算结果也会因为程
序不同而发生变化,有时其差异是很大的。
(3)MIPS可能与性能相反。典型例子就是具有可选硬
件浮点运算部件的机器。因为浮点运算远慢于整数运
算,所以很多机器提供了可选的硬件浮点运算部件,
但是软件实现浮点运算的MIPS高。然而硬件实现浮点
运算的时间少,这时MIPS与机器性能恰好相反。
在使用MIPS时应注意它的应用范围,它只适宜于评
估标量机,因为在标量机中执行一条指令,一般可得
到一个运算结果,而向量机中,执行一条向量指令通
常可得到多个运算结果。因此,用MIPS来衡量向量机
是不合适的。
2.MFLOPS(millionfloatingpointoperationsper
second,每秒百万次浮点运算)
MFLOPS可用如下公式表示:
1FN
MFLOPS=
6(1.8)
TExio
其中,*N表示程序中的浮点运算次数。
由于MFLOPS取决于机器和程序两个方面,因此
MFLOPS只能用来衡量机器浮点操作的性能,而不能
体现机器的整体性能。例如编译程序,不管机器的性
能有多好,它的MFLOPS不会太高。
MFLOPS测量单位比较适用于衡量向量机的性能,
因为MFLOPS是基于操作而非指令的,所以它可以用
来比较两种不同的机器。一般而言,同一程序运行在
不同计算机上时往往会执行不同的指令数,但所执行
的浮点数个数常常是相同的。采用MFLOPS作为衡量
单位时,应注意它的值不但会随整数、浮点数操作混
合比例的不同发生变化,而且也会随快速和慢速浮点
操作混合比例的变化而变化。例如,运行由100%浮点
加组成的程序所得到的MFLOPS值将比由100%浮点除
法组成的程序要高。
MFLOPS和MIPS两个衡量值之间的量值关系,没
有统一标准,一般认为在标量计算机中执行一次浮点
运算需要2〜5条指令,平均约需3条指令,故有
1MFLOPS^3MIPSo
例L2用一台40MHz处理机执行标准测试程序,程
序所含的混合指令数和每类指令的CPI如表1.1所示,
求有效CPI、MIPS速率和程序的执行时间。
解:总的指令数为:
45000+32000+15000+8000=100000条,因此各类指令所
占的比例分别是:整数运算为45%,数据传送为32%,
浮点操作为15%,控制传送为8%。
有效CPI、MIPS速率和程序的执行时间分别计算如下:
⑴有效CPI为:
1X0.45+2X0.32+2X0.15+2X0.08=1.55CPI
(2)MIPS速率为:1/1.55X40=25.8MIPS
(3)程序的执行时间为:
100000X1.55/(40X106)=0.003875s=3875us
—
表1.1标准测试程序的混合指令数和相应
所需的时钟周期数
指令类型整数运算数据传送浮点操作控制传送
指令数4500032000150008000
CPI1222
例L3假定你是一个计算机设计者,已设想了一个
优化的设计方案,它能减少过程调用和返回所需的取/
存指令次数。为了进行验证,对未加优化和已优化的
方案进行实验测试,其中假定所使用的是相同的优化
编译器。实验测得的结果如下:
▲优化方案的时钟周期比未优化的快15%;
▲未优化方案中的取/存指令数占总指令数的
30%;
—
▲优化方案中的取/存指令比未优化的少1/3。对于
其它指令,两种方案的动态执行数没有变化;
▲未优化方案的所有指令执行均只需1个时钟周
期,而优化方案只有取/存指令执行需要2个时钟周
期,其它指令执行也只需1个时钟周期。
试计算:
(1)优化方案的平均CPI;
(2)优化方案加速比。
解:(1)优化方案的平均CPI为:
0.2/0.9X2+0.7/0.9X171.22CPI
(2)由题意,因为未优化方案的所有指令执行均只需
1个时钟周期,因此其平均CPI为1CPI。根据题意,有:
(■未优化工优化)工未优化二0・15
解之,得:,优化=0.85,未优化
优化方案的加速比为:
Sp=未优化方案程序的执行时间/已优化方案程序的执行
时间
二(1N未优化XC叫优化x1未优化)/(1优化xCPI优化XTc优化)
二(1N未优化X1X1未优化)/(0・91未优化X1.22X0.85Tc未优化)
心1.075
3.用基准程序来评价计算机性能
基准程序(benchmark)是性能测试程序,并假设它
能刻划某一类应用问题的处理和数据移动特征。基准
程序用来测量和预测计算机系统的性能,并能提示它
们的体系结构的弱点和优点。基准程序组(benchmark
suite)是一套基准程序的控制测试条件及过程的一组特
定规则,包括输入数据、输出结果以及性能指标。基
准程序系列(benchmarkfamily)则是一套基准程序组。
基准程序可分为宏基准程序和微基准程序两大类。
宏基准程序用来测量一个计算机系统的总体性能,而
微基准程序则是用来测量一个计算机系统某一特定方
面的性能,如CPU速度、存储器速度、I/O速度、操作
系统性能及网络性能等等。表1.2示出了几个具有代表
性的微基准程序组和宏基准程序组。
SPEC(StandardPerformanceEvaluationCorporation)
最初是由30个左右世界知名计算机大厂商所支持的非
盈利的合作组织,成员包括:IBM、AT&T、BULL、
Compaq>CDC、DG、DEC、Fujitsu>HP、英特尔、
MIPS、SGLSUN、Unisys等;SPEC基准测试程序能
够全面反映机器的性能,具有很高的参考价值,已成
为事实上的工业标准。随着因特网的快速发展,各种
各样的新技术的应用,SPEC也不断变化和增加其测试
的范围和内容。
SPEC已经从早期只进行CPU性能测试发展到电子
商务、万维网服务、电子邮件服务、高性能机群计算
机等等多方面应用的测试。例如,
SPECjAppServer2002应用于JAVA应用服务器性能测
试,SPECMAIL2001提供电子邮件服务器性能测试,
SPECweb99则是用来评估万维网服务器性能的测试。
表1.2几个具有代表性的微基准程序组和宏基
准程序组
类型名称测试范围
微基准程序UNPACK数值计算(线性代数)
LMBENCHunix中的系统调用和数据移动
STREAM存储器带宽
宏基准程序NAS并行计算(CFD)
PARKBENCH并行计算
SPEC混合基准程序系列
Splash并行计算
STAP信号处理
TPC商业应用
在1989年10月,SPEC发布了第一个基准测试程
序,包含10个测试程序,程序量超过15万行,4个定点
程序,6个浮点程序;其测试结果用SPECint89和
SPECfp89表示。1992年,又增加10个测试程序,共有6
个定点程序和14个浮点程序,测试结果用SPECint92和
SPECfp92表示o1995年推出SPECint95和SPECfp95。
到了1999年,发布了测试标准为SPECCPU2000的第一
个版本V1.0,2001年推出了SPECCPU2000的Vl.2版本。
SPECCPU2000由CINT2000和CFP2000组成,其中
CINT2000由12个基准测试程序(H个由C语言编写,1
个由C++语言编写)组成,分别是gzip、vpr>gcc>
mcf、crafty、parser、eon、perlbmk、gap、vortex、
bzip2和twolf,程序说明见表1.3;CINT2000主要完成
在各种不同应用环境下计算机的整数运算能力的测
试,其结果用SPECint2000表示。
—
表1.3CINT2000的基准测试程序
基准测试程序编程语言设计者基准时间说明
gzipANSICJean-LoupGailly1400数据压缩
vprANSICVaughnBetz1400FPGA电路布线
gccANSIC1100C优化编译器
mcfANSICAndreasLoebel1800组合优化(交通运输调度)
craftyANSICRobertHyatt1000国际象棋游戏
parserANSICDannySleator,Davy1800字处理
Temperley
eonC++PeterShirley,KenChiu,1300计算机可视化
et.al.
perlbmkANSICLarryWall,et.al.1800Perl程序设计语言
gapANSICMartinSchoenert1100群论、解释程序
vortexANSICPeterR.Homan1900面向对象的数据库
bzip2ANSICJulianSeward1500数据压缩
twolfANSICBillSwartz3000布线布局模型
CFP2000由14个浮点测试程序(6个由Fortran-77编
写,4个由Fortran-90编写,4个由C语言编写)组成,
分另U是wupwise、swim、mgrid、applu>mesa>galgel>
art>equake>facerec>ammp>lucas>fma3d>sixtrack
和apsi,程序说明见表1.4。CFP2000主要完成在不同应
用环境下计算机的浮点运算能力测试,其结果用
SPECfp2000表示。
表1.4CFP2000的基准测试程序
测试程序编程语言设计者基准时说明
间
wupwiseFortran77BjoernMedeke1600量子色动力学
swimFortran77PaulN.Swarztrauber3100浅水区建模
mgridFortran77EricBarszcz,PaulO.Frederickson18003D势场
appluFortran77SisiraWeeratunga2100抛物线/椭圆型偏微
分方程
mesaCBrianE.Paul14003D图形库
galgelFortran90AlexanderGelfgat2900计算机流体力学
artcCharlesRoberson&MaxDomeika2600图象识别/神经网络
equakecDavidR.O'HallaronandLoukasF.1300模拟地震波在水库
Kallivokas中的传播
facerecFortran90JanC.Vorbrueggen1900图象处理
ammpCRobertW.Harrison2200计算化学
lucasFortran90ErnstMayer2000数论:原始测试
fma3dFortran90SamuelW.Key2100有限元法碰撞仿真
sixtrackFortran77FrankSchmidt1100高能核物理加速器
设计
apsiFortran77ZaphirisD.Christidis2600污染物分布(气象
学)
从表1.3和表1.4中,也可以看出,SPECCPU2000基
准测试程序包含了不同领域间的应用,如天气预报、
流体力学、数据压缩、数据库、编译、物理、化学、
人工智能、图象处理等方面,能更好的反映计算机的
性能。表1.5给出了2000年到2003年间一些常用CPU的
测试结果。
SPECCPU2000基准测试程序选择SunUltra5_10I
作站性能作为参考性能,此工作站具有300MHzSun
SPARC微处理器,带有256MB主存。表1.5中的
SPECint2000值是对CINT2000基准程序组中12个基准
程序速率与SunUltra5_10工作站速率之比取几何平均
值得到的。同样,SPECfp2000值是对CFP2000基准程
序组中14个基准程序速率与SunUltra5_10工作站速率
之比取几何平均值得到的。
1.5.3计算机系统结构的性能评价标准
关于计算机的性能评价,通常用峰值性能(peak
performance)及持续性能(sustainedperformance)两个指
标。峰值性能是指在理想情况下计算机系统可获得的
最高理论性能值,它不能反映系统的实际性能。实际
性能又称持续性能,它的值往往只有峰值性能的5%到
35%(因算法而异)。
持续性能的表示常用算术平均值、调和平均值和
几何平均值三种方法,这三种性能值(运算速率)的
计算公式表示如下:
1.算术性能平均值Am
以程序执行的速率Ri来进行性能评价,则有
+,+・..+」
(1.9)
〃日n曰TnT】
Tn
其中Tj是第i个程序的执行时间,式1.9得到的结果是
n个程序的平均执行速率。若根据执行时间进行评价,
则平均执行时间是各执行时间的算术平均值。式1.9则
改写为:
]n
4=—X*(1」。)
这时的Am表示的是n个程序的平均执行时间。
—
表1.5SPECCPU2000测试结果
CPU工作频率(MHz)SPECint2000SPECfp2000测试时间
Alpha21264A8335336442000.1
PowerPC604e250105842000.4
RI20004003474072000.4
PA-86005504224142000.10
AMDAthlon12004584172000.11
UltraSPARC-IIe5001741822001.2
RS64IV7504393762001.7
SPARC64GP6004064032001.8
PentiumIII10004082642001.8
POWER3-II4503184332001.9
Pentium4(2.0AGHz)20007597732002.5
Pentium4(3.06GHz)3067110710912002.8
RI40006005005292002.8
AMDAthlon(TM)MP20007666932002.11
2400+
Alpha21264C125087713652002.11
UltraSPARCIIICu120071211062003.3
AMDOpteron1441800110011542003.4
POWER4+1700111316782003.4
AMDAthlon(TM)XP220010809822003.5
3200+
SPARC64V110068210302003.5
IntelItanium21500107720552003.6
IntelXeon3066125811842003.6
2.调和性能平均值Hm
调和性能平均值Hm的表达式为:
Hnnn
emnn(1.11)
£1学Tl+小
由式i.n可以看出,Hm的值与运行所有程序所需时
间的总和成反比关系,从执行时间是衡量性能指标的
唯一标准这一点来看,用Hm值来衡量计算机系统性能
是较为精确的。
3.几何性能平均值Gm
对性能的评价的第三种方法是使用几何平均值,
其表达式如下:
(1.12)
使用Gm有一个很好的特性:G/X,)/G”区)=Gm(XjYi)
,即几何平均值之比与比的几何平均值是相等的,因
此在对各种机器性能比较而进行性能规格化(即以某
台机器性能作参考标准,其它机器性能除以该参考标
准所得到的值)过程中,不论取哪一台作参考机,Gm
均能保持比较结果的一致性,Am和Hm由于没有这样的
特性,因而在作比较时,就不如仃皿那样方便。下面我
们通过一个例子来说明这一点。
例1.4已知四个程序在三台计算机上的执行时间
如表1.6所示,假设四个程序中每一个都有100000000
条指令要执行,计算这三台计算机中每台机器上每个
程序的MIPS速率。根据这些速率值,能否得出有关三
台计算机相对性能的明确结论?能否找到一种将它们
统计排序的方法,试说明理由。
—
表1.6四个程序在三台计算机上的执行时间
执行时间(s)
程序计算机A计算机B计算机C
程序111020
程序2100010020
程序3500100050
程序4100800100
—
解:(1)这三台计算机中每台机器上每个程序的
MIPS速率如表1.7所示。
表1.7四个程序在三台计算机上的MIPS速率
MIPS速率(MIPS)
程序计算机A计算机B计算机C
程序1100105
程序20.115
程序30.20.12
程序410.1251
(2)以A机为标准的规格化测试值和Gm/GmA值如表1.8所示。
表1.8以A机为标准的规格化测试值和Gm/GmA值
执行速率Ri(MIPS)
程序计算机A计算机B计算机C
程序1100(1)10(0.1)5(0.05)
程序20.1(1)1(10)5(50)
程序30.2(1)0.1(0.5)2(10)
程序41(1)0.125(0.125)1(1)
Gm/GmA机狄).0625场
GmC>mA>GmB
:.三台计算机相对来说,C的性能最好,A的性能次
之,B的性能最差。
如果考虑工作负载中各程序不会以相等的比例出
现这一情况,就需要对各程序的执行速率或执行时间
加上相应的权值。例如,一个任务由三个程序完成,
程序1的比例占10%,程序2的比例占35%,程序3的比
例占55%,那么它们的权值分别为0.1、0.35和0.55,将
其与对应程序的执行速率或执行时间相乘,再累加求
和,即可得到加权算术平均值。
同理,可以得到加权几何平均值和加权调和平均
值。在这里,用Wi来表示第i个程序的权值,则对应表
达式如下:
加权算术平均值:
nnTTZ
(1.13)
i=\i-l1i
加权调和平均值:
.屋
%=少工尸(1.14)
i=li-lKi
加权几何平均值:
n
Wix(7?2)%X…x(&)w〃(1.15)
Gm=Yl^=(R1产
i=\
1.5.4计算机系统设计的定量原理
这里将讨论在计算机系统设计中应遵循的一些重要
定量原理和应注意的现象。
1.只加速使用频率高的部件
这是最重要也是最广泛采用的计算机设计准则。
因为加快处理频繁出现事件对系统的影响远比加速处
理很少出现事件的影响要大。使经常性事件的处理速
度加快能明显提高整个系统的性能。一般说来,经常
性事件的处理比较简单,因此比不经常出现的事件处
理起来要快。
例如,在CPU中两个数进行相加运算时,相加结
果可能出现溢出现象,也可能无溢出发生,显然经常
出现的事件是不发生溢出的情况,而溢出是偶然发生
的事件。因此,在设计时应优化不发生溢出的情况,
使这个经常性事件的处理速度尽可能快。而对溢出处
理则不必过多考虑优化。因为发生溢出的概率很小,
即使发生了,处理得慢一些也不会对系统性能产生很
大的影响。
在计算机设计过程中经常会遇到上述情况,如何
确定经常性事件以及如何加快处理它的速度,这就是
下面介绍的Amdahl定律要解决的问题。
2.阿姆达尔(Amdahl)定律
阿姆达尔定律是1967年由IBM360系列机的主要设计
者阿姆达尔首先提出来的。阿姆达尔定律是指:系统
中对某一部件采用某种更快执行方式所能获得的系统
性能改进程度,取决于这种执行方式被使用的频率,
或所占总执行时间的比例。Amdahl定律实际上定义了
采取增强(加速)某部分功能处理后可获得的性能改
进或执行时间的加速比。
若用T0】d表示不采用任何增强功能措施完成某一任
务的时间,用丁.卬表示采用某种增强功能措施后计算
机完成同一任务所需时间。以二卬表示可采取增强功能
措施的部分所占百分比(显然,OW/ewWl),而以
%w表示采用增强功能措施比不采用增强功能可加快执
行的倍数,则性能(或时间)加速比Sp可用如下公式
表不:
T
cold1
bp一~(1.16)
new(1—fnew)+fnew/^new
该公式分母中的(>fnew)表示不可增强性能部分
的百分比,显然:
(1)当£ew为0时,即没有可增强性部分时,Sp=l;
(2)当一^8时,分母中fne/Zw项变为°,此时
Sp=l/(l£ew)。由此可以看出,可获得性能改善的极
限值受值的约束。
例L5若考虑将系统中某一功能的处理速度加快10
倍,但该功能的处理使用时间仅为整个系统运行时间
的40%,则采用此增强功能方法后,能使整个系统的
性能提高多少?
解:由题可知:%亚=1。,fnew=04根据公式,有:
S=______i______=_i—=156
P(1-0.4)+0.4/100.64.
即采用此增强功能方法后,能使整个系统的性能
提高为原来的1.56倍。
例1.6如果某一计算任务用向量方式求解比用标
量方式求解要快20倍,称可用向量方式求解部分所花
费时间占总的时间的百分比为可向量化百分比。
(1)请写出加速比Sp与可向量化比例x之间的关系表
达式。
(2)为达到加速比2,可向量化的百分比应为多
少?
(3)为获得采用向量方式最大加速比半值(即10)
时,所需可量化的百分比为多少?
解:(1)根据公式,得:
]
P(1-x)+x/201-0.95%
(2)由题意:
解此方程,可得到x=0.526,即为达到加速比2,可
向量化的百分比应为52.6%o
(3)由题意:
解此方程,可推出x=0.947,即为获得采用向量方
式最大加速比半值时,所需可量化的百分比为94.7%。
3.程序访问的局部性规律
所谓程序访问局部性是指程序执行中,呈现出频
繁重新使用那些最近已被使用过的数据和指令的规律。
统计表明一个程序执行时间中的90%是花费在10%程序
代码上,而另外90%的指令的使用率合起来也只有
10%,有的指令的使用率连1%也不到。这为我们设计
指令系统时提供了指导,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论