第1章 计算机系统结构的基本概念
1.1 引 言
-
第一台通用电子计算机诞生于1946年——ENIAC
-
计算机技术的飞速发展得益于两个方面
- 计算机制造技术的发展
- 计算机系统结构的创新
-
计算机技术经历了4个发展过程
时 间 | 原 因 | 每年性能增长 |
---|---|---|
1946年起的25年 | 两种因素都起着主要的作用 | 25% |
20世纪70年代末-80年代初 | 大规模集成电路和微处理器出现,以集成电路为代表的制造技术的发展 | 约35% |
20世纪80年代中开始 | RISC结构的出现,系统结构不断更新和变革,制造技术不断发展 | 50%以上 维持了约16年 |
2002年以来 | 1.功耗问题(已经很大) 2.可以进一步有效开发的指令级并行性已经很少 3.存储器访问速度的提高缓慢。 |
约20% |
系统结构的重大转折:
- 从单纯依靠指令级并行转向开发线程级并行和数据级并行
- 计算机系统结构在计算机的发展中有着极其重要的作用
1.2 计算机系统结构的概念
1.2.1 计算机系统的层次结构
-
计算机系统=硬件/固件+软件
-
计算机语言从低级向高级发展
- 微程序→机器语言→汇编语言→高级语言→应用语言
- 高一级语言的语句相对于低一级语言来说功能更强,更便于应用,但又都以低级语言为基础
-
从计算机语言的角度,把计算机系统按功能划分成多级层次结构
- 每一层以一种语言为特征
- 每一层以一种语言为特征
-
虚拟机:由软件实现的机器
-
语言实现的两种基本技术
-
翻译:先把N+1级程序全部转换成N级程序后,再去执行新产生的N级程序,在执行过程中N+1级程序不再被访问。
-
解释:每当一条N+1级指令被译码后,就直接去执行一串等效的N级指令,然后再去取下一条N+1级的指令,依此重复进行。
-
解释执行比编译后再执行所花的时间多,但占用的存储空间较少。
1.2.2 计算机系统结构的定义
-
计算机系统结构的经典定义
-
程序员所看到的计算机属性(即概念性结构与功能特性)。
-
程序员:系统程序员(包括:汇编语言、机器语言、编译程序、操作系统)
-
看到的:编写出能在机器上正确运行的程序所必须了解的
-
计算机属性:指令系统、数据表示、寻址方式
-
-
-
按照计算机系统的多级层次结构,不同级程序员所看到的计算机具有不同的属性。
-
透明性:把本来存在的事物或属性,从某种角度看似乎不存在
-
Amdahl提出的系统结构
- 传统机器语言级程序员所看到的计算机属性
-
广义的系统结构定义:指令集结构、组成、硬件(计算机设计的3个方面)
-
对于通用寄存器型机器来说,这些属性主要是指:
- 指令系统
- 数据表示
- 寻址规则
- 寄存器定义
- 中断系统
- 机器工作状态的定义和切换
- 存储系统
- 信息保护
- I/O结构
-
计算机系统结构概念的实质:
- 确定计算机系统中软、硬件的界面,界面之上是软件实现的功能,界面之下是硬件和固件实现的功能。
-
计算机系统由软件、硬件和固件组成,它们在功能上是等价的。
- 同一种功能可以用硬件实现,也可以用软件或固件实现。
- 不同的实现只是性能和价格不同,他们的系统结构是相同的。
1.2.3 计算机组成和计算机实现
-
计算机系统结构:计算机系统的软、硬件的界面
- 即机器语言程序员所看到的传统机器级所具有的属性。
-
计算机组成:计算机系统结构的逻辑实现
-
从内部研究计算机系统。包含物理机器级中的数据流和控制流的组成以及逻辑设计等。
-
计算机组成是指计算机主要部件的类型、数量、组成方式、控制方式和信息流动方式及其相互连接构成的系统。
-
着眼于:物理机器级内各事件的排序方式与控制方式、各部件的功能以及各部件之间的联系。
-
计算机组成主要研究数据和指令的组织,基本运算的算法,数据的存取、传送和加工处理,数据流和指令流的控制方式等
-
-
计算机实现:计算机组成的物理实现
- 包括:处理机、主存等部件的物理结构,器件的集成度和速度,专用器件的设计,模块、插件、底板的划分与连接,信号传输技术,电源、冷却及整机装配技术,制造工艺及技术等。
- 着眼于:器件技术(起主导作用)、微组装技术。
-
一种体系结构可以有多种组成
-
一种组成可以有多种物理实现
-
系列机
- 由同一厂家生产的具有相同系统结构、但具有不同组成和实现的一系列不同型号的计算机
1.2.4 计算机系统结构的分类
-
冯氏分类法
-
用系统的最大并行度对计算机进行分类。
-
最大并行度:计算机系统在单位时间内能够处理的最大的二进制位数。
-
用平面直角坐标系中的一个点代表一个计算机系统,其横坐标表示字宽(n位),纵坐标表示一次能同时处理的字数(m字)。m×n就表示了其最大并行度。
- 字串位串WSBS(Word Serial and Bit Serial)
- 串行计算机; m=1,n=1
- 字并位串WPBS(Word Parallel and Bit Serial):
- 位片处理并行计算机、MPP、相联计算机;m=1,n>1;
- 字串位并WSBP(Word Serial and Bit Parallel):字片处理
- 传统单处理机;m > 1,n=1
- 字并位并WPBP(Word Parallel and Bit Parallel)
- 全并行计算机;m > 1, n > 1
- 字串位串WSBS(Word Serial and Bit Serial)
-
主要缺点: 仅考虑数据并行,没有考虑指令, 任务, 作业的并行
-
-
Flynn分类法
-
按照指令流和数据流的多倍性进行分类。
-
指令流:计算机执行的指令序列。
-
数据流:由指令流调用的数据序列。
-
多倍性:在系统受限的部件上,同时处于同一执行阶段的指令或数据的最大数目。
-
Flynn分类法把计算机系统的结构分为4类:
-
单指令流单数据流(SISD)
-
单指令流多数据流(SIMD)
-
多指令流单数据流(MISD)
-
多指令流多数据流(MIMD)
-
-
1.3 定量分析技术
1.3.1 计算机系统设计的定量原理
4个定量原理:
-
以经常性事件为重点
-
对经常发生的情况采用优化方法的原则进行选择,以得到更多的总体上的改进。
-
优化是指分配更多的资源、达到更高的性能或者分配更多的电能等。
-
-
Amdahl定律
- 加快某部件执行速度所能获得的系统性能加速比,受限于该部件的执行时间占系统中总执行时间的百分比。
- 系统性能加速比:
-
加速比依赖于两个因素:
- 可改进比例:在改进前的系统中,可改进部分的执行时间在总的执行时间中所占的比例。
- 它总是小于等于1。
-
部件加速比:可改进部分改进以后性能提高的倍数。
-
它是改进前所需的执行时间与改进后执行时间的比。
-
一般情况下部件加速比是大于1的。
-
-
改进后程序的总执行时间
- 系统加速比为改进前与改进后总执行时间之比
-
一种性能改进的递减规则
-
如果仅仅对计算任务中的一部分做性能改进,则改进得越多,所得到的总体性能的提升就越有限。
-
如果只针对整个任务的一部分进行改进和优化,那么所获得的加速比不超过
1/(1-可改进比例)
-
-
CPU性能公式
-
执行一个程序所需的CPU时间
-
CPU时间 = 执行程序所需的时钟周期数×时钟周期时间
- 其中,时钟周期时间是系统时钟频率的倒数。
-
每条指令执行的平均时钟周期数CPI
- CPI = 执行程序所需的时钟周期数/IC
- IC:所执行的指令条数
-
程序执行的CPU时间可以写成
- CPU时间 = IC ×CPI ×时钟周期时间
-
CPU的性能取决于3个参数
-
时钟周期时间:取决于硬件实现技术和计算机组成。
-
CPI:取决于计算机组成和指令集结构。
-
IC:取决于指令集结构和编译技术。
-
-
对CPU性能公式进行进一步细化
- 假设:计算机系统有n种指令;
- CPIi :第i种指令的处理时间;
- ICi :在程序中第i种指令出现的次数;
- 则CPU时钟周期数 = ∑(CPIi * ICi)
- CPU时间 = 执行程序所需的时钟周期数×时钟周期时间
= ∑(CPIi * ICi)×时钟周期时间
-
-
程序的局部性原理
-
程序执行时所访问的存储器地址分布不是随机的,而是相对地簇聚。
-
常用的一个经验规则
- 程序执行时间的90%都是在执行程序中10%的代码。
-
程序的时间局部性
- 程序即将用到的信息很可能就是目前正在使用的信息。
-
程序的空间局部性
- 程序即将用到的信息很可能与目前正在使用的信息在空间上相邻或者临近。
-
1.3.2 计算机系统的性能评测
-
执行时间和吞吐率
- 如何评测一台计算机的性能,与测试者看问题的角度有关。
- 用户关心的是:单个程序的执行时间(执行单个程序所花的时间很少)
- 数据处理中心的管理员关心的是:吞吐率(在单位时间里能够完成的任务很多 )
- 假设两台计算机为X和Y,X比Y快的意思是:
- 对于给定任务,X的执行时间比Y的执行时间少
- X的性能是Y的n倍,而执行时间与性能成反比
- 执行时间可以有多种定义:
- 计算机完成某一任务所花费的全部时间,包括磁盘访问、存储器访问、输入/输出、操作系统开销等。
- CPU时间:CPU执行所给定的程序所花费的时间,不包含I/O等待时间以及运行其他程序的时间。
- 用户CPU时间:用户程序所耗费的CPU时间。
- 系统CPU时间:用户程序运行期间操作系统耗费的CPU时间。
-
基准测试程序
-
用于测试和比较性能的基准测试程序的最佳选择是真实应用程序。(例如编译器)
-
以前常采用简化了的程序,例如:
- 核心测试程序:从真实程序中选出的关键代码段构成的小程序。
- 小测试程序:简单的只有几十行的小程序。
- 合成的测试程序:人工合成出来的程序。
-
Whetstone与Dhrystone是最流行的合成测试程序。
-
Whetstone是用FORTRAN语言编写的综合性测试程序,主要由执行浮点运算、整数算术运算、功能调用、数组变址、条件转移和超越函数的程序组成。
-
Dhrystone是测试处理器整型运算性能的最常见基准程序之一
-
从测试性能的角度来看,上述测试程序就不可信了。
-
原因:
-
这些程序比较小,具有片面性;
-
系统结构设计者和编译器的设计者可以“合谋”把他们的计算机面向这些测试程序进行优化设计,使得该计算机显得性能更高。峰值性能
-
-
性能测试的结果除了和采用什么测试程序有关以外,还和在什么条件下进行测试有关。
-
基准测试程序设计者对制造商的要求
- 采用同一种编译器;
- 对同一种语言的程序都采用相同的一组编译标志。
-
一个问题:是否允许修改测试程序的源程序的三种不同的处理方法:
-
不允许修改。
-
允许修改,但因测试程序很复杂或者很大,几乎是无法修改。
-
允许修改,只要保证最后输出的结果相同。
-
-
基准测试程序套件(Benchmark):由各种不同的真实应用程序构成。
-
(能比较全面地反映计算机在各个方面的处理性能 )
-
SPEC系列:最成功和最常见的测试程序套件
-
(美国的标准性能评估公司开发)
-
事务处理(TP)性能测试基准程序:
- 用于测试计算机在事务处理方面的能力,包括数据库访问和更新等。
-
-
性能比较
- 总执行时间:计算机执行所有测试程序的总时间
- 平均执行时间:各测试程序执行时间的算术平均值
- 加权执行时间:各测试程序执行时间的加权平均值
1.4 计算机系统结构的发展
1.4.1 冯·诺依曼结构
-
存储程序原理的基本点:指令驱动
- 程序和数据预先存放在计算机存储器中,计算机一旦启动,就能按照程序指定的逻辑顺序执行这些程序,自动完成由程序所描述的处理工作。
-
冯·诺依曼结构的主要特点
- 以运算器为中心。
- 在存储器中,指令和数据同等对待。
- 指令和数据一样可以进行运算,即由指令组成的程序是可以修改的。
- 存储器是按地址访问、按顺序线性编址的一维结构,每个单元的位数是固定的。
- 指令的执行是顺序的
- 一般是按照指令在存储器中存放的顺序执行。
- 程序的分支由转移指令实现。
- 由指令计数器PC指明当前正在执行的指令在存储器中的地址。
- 指令由操作码和地址码组成
- 指令和数据均以二进制编码表示,采用二进制运算
-
对系统结构进行的改进
- 输入输出方式的改进
- 采用并行处理技术
- 存储器组织结构的发展
- 指令集的发展
- 复杂指令集计算机(CISC)
- 精减指令集计算机(RISC)
1.4.2 软件对系统结构的影响
-
软件的可移植性:一个软件可以不经修改或者只需少量修改就可以由一台计算机移植到另一台计算机上正确地运行。差别只是执行时间的不同。我们称这两台计算机是软件兼容的。
-
实现软件移植性的常用方法:
- 采用系列机
- 模拟与仿真
- 统一高级语言
-
系列机
-
由同一厂家生产的具有相同的系统结构,但具有不同组成和实现的一系列不同型号的机器。较好地解决软件开发要求系统结构相对稳定与器件、硬件技术迅速发展的矛盾。
-
软件兼容
- 向上(下)兼容:按某档机器编制的程序,不加修改就能运行于比它高(低)档的机器。
- 向前(后)兼容:按某个时期投入市场的某种型号机器编制的程序,不加修改地就能运行于在它之前(后)投入市场的机器。
- 向后兼容是系列机的根本特征,必须做到。
- 向上兼容尽量做到。
- 向前兼容和向下兼容,可以不考虑。
- 兼容机:由不同公司厂家生产的具有相同系统结 构的计算机
-
模拟和仿真
-
使软件能在具有不同系统结构的机器之间相互移植。
- 在一种系统结构上实现另一种系统结构。
- 从指令集的角度来看,就是要在一种机器上实现另一种机器的指令集。
-
模拟:用软件的方法在一台现有的机器(称为宿主机)上实现另一台机器(称为虚拟机)的指令集。
- 通常用解释的方法来实现。
- 运行速度较慢,性能较差。
-
仿真:用一台现有机器(宿主机)上的微程序去解释实现另一台机器(目标机)的指令集
- 运行速度比模拟方法的快
- 仿真只能在系统结构差距不大的机器之间使用
-
-
统一高级语言
- 实现软件移植的一种理想的方法
- 较难实现
-
1.4.3 器件发展对系统结构的影响
- 摩尔定律
- 集成电路芯片上集成的晶体管数目每隔18个月翻一番。
- 计算机的分代主要以器件作为划分标准。
- 它们在器件、系统结构和软件技术等方面都有各自的特征。
1.4.4 应用对系统结构的影响
- 不同的应用对计算机系统结构的设计提出了不同的要求
- 应用需求是促使计算机系统结构发展的最根本的动力
- 一些特殊领域:需要高性能的系统结构
- 计算机性能随时间下移
1.4.5 系统结构的生命周期
- 系统结构的生命周期:从诞生、发展、成熟到消亡
- 从硬件成熟到系统软件成熟大约需要5~7年的时间
- 从系统软件成熟到应用软件成熟,大约也需要5~7年时间。
- 再过5~7年的时间,这种系统结构就不会作为主流系统结构存在了。
1.5 计算机系统结构中并行性的发展
1.5.1 并行性的概念
-
并行性:计算机系统在同一时刻或者同一时间间隔内进行多种运算或操作。
- 只要在时间上相互重叠,就存在并行性。
-
同时性:两个或两个以上的事件在同一时刻发生。
-
并发性:两个或两个以上的事件在同一时间间隔内发生。
-
并行处理:挖掘计算过程中的并行事件,并使并行性达到较高的级别。
-
从处理数据的角度来看,并行性等级从低到高可分为:
- 字串位串:每次只对一个字的一位进行处理。
- 最基本的串行处理方式,不存在并行性。
- 字串位并:同时对一个字的全部位进行处理,不同字之间是串行的。
- 开始出现并行性。
- 字并位串:同时对许多字的同一位(称为位片)进行处理。
- 具有较高的并行性。
- 全并行:同时对许多字的全部位或部分位进行处理。
- 最高一级的并行。
- 字串位串:每次只对一个字的一位进行处理。
-
从执行程序的角度来看,并行性等级从低到高可分为:
-
指令内部并行:单条指令中各微操作之间的并行。
-
指令级并行:并行执行两条或两条以上的指令。
-
线程级并行:并行执行两个或两个以上的线程。
- 通常是以一个进程内派生的多个线程为调度单位。
-
任务级或过程级并行:并行执行两个或两个以上的过程或任务(程序段)
- 以子程序或进程为调度单元。
-
作业或程序级并行:并行执行两个或两个以上的作业或程序。
-
1.5.2 提高并行性的技术途径
- 三种途径:
- 时间重叠:引入时间因素
- 让多个处理过程在时间上相互错开,轮流重叠地使用同一套硬件设备的各个部分,以加快硬件周转而赢得速度。
- 资源重复:引入空间因素,以数量取胜
- 通过重复设置硬件资源,大幅度地提高计算机系统的性能。
- 资源共享:这是一种软件方法,它使多个任务按一定时间顺序轮流使用同一套硬件设备。
- 时间重叠:引入时间因素
1.5.3 单机系统中并行性的发展
-
在发展高性能单处理机过程中,起主导作用的是时间重叠原理。
- 实现时间重叠的基础:部件功能专用化
- 把一件工作按功能分割为若干相互联系的部分;
- 把每一部分指定给专门的部件完成;
- 按时间重叠原理把各部分的执行过程在时间上重叠起来,使所有部件依次分工完成一组同样的工作。
- 实现时间重叠的基础:部件功能专用化
-
在单处理机中,资源重复原理的运用也已经十分普遍。
-
多体存储器
-
多操作部件
- 通用部件被分解成若干个专用部件,如加法部件、乘法部件、除法部件、逻辑运算部件等,而且同一种部件也可以重复设置多个。
- 只要指令所需的操作部件空闲,就可以开始执行这条指令(如果操作数已准备好)。
- 这实现了指令级并行。
-
阵列处理机(并行处理机)
- 更进一步,设置许多相同的处理单元,让它们在同一个控制器的指挥下,按照同一条指令的要求,对向量或数组的各元素同时进行同一操作,就形成了阵列处理机 。
-
-
在单处理机中,资源共享的概念实质上是用单处理机模拟多处理机的功能,形成所谓虚拟机的概念。
- 分时系统
1.5.4 多机系统中并行性的发展
-
多机系统遵循时间重叠、资源重复、资源共享原理,发展为3种不同的多处理机:
- 异构型多处理机、同构型多处理机、分布式系统
-
耦合度
- 反映多机系统中各机器之间物理连接的紧密程度和交互作用能力的强弱。
- 紧密耦合系统(直接耦合系统):在这种系统中,计算机之间的物理连接的频带较高,一般通过总线或高速开关互连,可以共享主存。
- 松散耦合系统(间接耦合系统):一般通过通道或通信线路实现计算机之间的互连,可以共享外存设备(磁盘、磁带等)。机器之间的相互作用是在文件或数据集一级上进行的。
-
功能专用化(实现时间重叠)
- 专用外围处理机
- 专用处理机
- 异构型多处理机系统
-
机间互连
-
容错系统:保证系统的可靠性。
-
可重构系统
- 对计算机之间互连网络的性能提出了更高的要求。高带宽、低延迟、低开销的机间互连网络是高效实现程序或任务一级并行处理的前提条件。
-
同构型多处理机系统:各处理机具有相同的功能
系统中并行性的发展
-
-
多机系统遵循时间重叠、资源重复、资源共享原理,发展为3种不同的多处理机:
- 异构型多处理机、同构型多处理机、分布式系统
-
耦合度
- 反映多机系统中各机器之间物理连接的紧密程度和交互作用能力的强弱。
- 紧密耦合系统(直接耦合系统):在这种系统中,计算机之间的物理连接的频带较高,一般通过总线或高速开关互连,可以共享主存。
- 松散耦合系统(间接耦合系统):一般通过通道或通信线路实现计算机之间的互连,可以共享外存设备(磁盘、磁带等)。机器之间的相互作用是在文件或数据集一级上进行的。
-
功能专用化(实现时间重叠)
- 专用外围处理机
- 专用处理机
- 异构型多处理机系统
-
机间互连
-
容错系统:保证系统的可靠性。
-
可重构系统
- 对计算机之间互连网络的性能提出了更高的要求。高带宽、低延迟、低开销的机间互连网络是高效实现程序或任务一级并行处理的前提条件。
-
同构型多处理机系统:各处理机具有相同的功能
- 由多个同类型或至少担负同等功能的处理机组成,它们同时处理同一作业中能并行执行的多个任务。
-