1.1 计算机系统简介
1.1.1 计算机软硬件概念
计算机系统由硬件和软件两大部分组成:
-
硬件:是指计算机的实体部分,它由看得见摸得着的各种电子元器件,各类光、电、机设备的实物组成,如主机、外部设备等。
-
软件:由人们事先编制的具有各类特殊功能的程序组成,通常存放在计算机的主存或辅存内。
计算机性能的好坏取决于软、硬件功能的总和。
计算机的软件通常又可以分为两大类:系统软件和应用软件:
-
系统软件又称为系统程序,主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度,高效运行。它包括:标准程序库、语言处理程序、操作系统、服务程序、数据库管理系统、网络软件等。
-
应用软件又称为应用程序,它是用户根据任务需要所编制的各种程序,如科学计算程序、数据处理程序、过程控制程序、事务管理程序等。
1.1.2 计算机的层次
现代计算机具有多级层次的结构:
从计算机系统的多级层次结构来看,可以将硬件研究的主要对象归结为传统机器 $M_1$,和微程序机器 $M_0$。软件的研究对象主要是操作系统级以上的各级虚拟机。
1.1.3计算机组成和计算机体系结构
计算机体系结构:指那些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性。
计算机组成:指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是透明的硬件细节。
例:对于一个计算机来说,其具有乘法计算、除法计算等功能,这是其结构的组成部分,而对于乘法计算指令和除法计算指令实现的方式,则是计算机组成的问题。
1.2 计算机的基本组成
1.2.1 冯·诺伊曼计算机的特点
1945
年,数学家冯·诺依曼(von Neumann)在研究 $\text{EDVAC}$ 机时提出了存储程序的概念。以此概念为基础的各类计算机通称为冯·诺依曼机。它的特点可归结如下:
- 计算机由运算器、存储器、控制器、输入设备和输出设备五大部件组成。
- 指令和数据以同等地位存放于存储器内,并可按地址寻访。
- 指令和数据均用二进制数表示。
- 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。
- 指令在存储器内按顺序存放。通常,指令是顺序执行的,在特定条件下,可根据运算结果或根据设定的条件改变执行顺序。
- 机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。
1.2.2 计算机的硬件框图
典型的冯·诺依曼计算机是以运算器为中心的:
现代的计算机已转化为以存储器为中心:
图中各部件的功能如下:
- 运算器:完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内。
- 存储器:存放数据和程序。·控制器用来控制、指挥程序和数据的输入、运行以及处理运算结果。
- 输入设备:将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等。
-
输出设备:将机器运算结果转换为人们熟悉的信息形式,如打印机输出、显示器输出等。
由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,通常将它们合起来统称为中央处理器(Central Processing Unit,CPU)。把输入设备与输出设备简称为
I/O
设备(Input/Output Equipment)这样,现代计算机可认为由三大部分组成:CPU
,I/O
设备及主存储器(Main Memory,MM);CPU
与主存储器合起来又可称为主机,I/O
设备又可称为外部设备。
算术逻辑单元(Arithmetic Logic Unit,ALU):简称算逻部件,用来完成算术逻辑运算。
控制单元(Control Unit,CU):用来解释存储器中的指令,并发出各种操作命令来执行指令。
ALU
和 CU
是 CPU
的核心部件。I/O
设备也受 CU
控制,用来完成相应的输入、输出操作。
1.2.3 计算机的工作步骤
在许多科学技术的实际问题中,往往会遇到许多复杂的数学方程组,而数字计算机通常只能执行加、减、乘、除四则运算,这就要求在上机解题前,先由人工完成一些必要的准备工作。
这些工作大致可归纳为:
-
建立数学模型:找到一系列反映研究对象变化规律的数学方程组。
-
确定计算方法:针对数学模型对应有计算机可行的计算方法。
-
编制解题程序:编写相应的计算程序使可以通过计算机运行得到结果。
具体到计算机硬件部分:
-
主存储器存储计算程序及计算所需和产生的所有数据;
-
运算器读取主存储器的数据进行计算,并将中间结果存入主存储器;
-
控制器对这些指令进行分析来控制存储和运算的操作;
-
I/O
设备最终将这些结果输出。
1.3 计算机硬件的主要技术指标
衡量一台计算机性能的优劣是根据多项技术指标综合确定的。其中,既包含硬件的各种性能指标,又包括软件的各种功能。这里主要讨论硬件的技术指标。
1.3.1 机器字长
机器字长是指 CPU
一次能处理数据的位数,通常与 CPU
的寄存器位数有关。字长越长,数的表示范围越大,精度也越高。机器的字长也会影响机器的运算速度。若 CPU
字长较短,又要运算位数较多的数据,那么需要经过两次或多次的运算才能完成,这样势必影响机器的运算速度。
机器字长对硬件的造价也有较大的影响。它将直接影响加法器(或ALU)、数据总线以及存储字长的位数。所以机器字长的确定不能单从精度和数的表示范围来考虑。
1.3.2 存储容量
存储器的容量应该包括主存容量和辅存容量。
主存容量是指主存中存放二进制代码的总位数。即:$\text{存储容量二存储单元个数} \times \text{存储字长}$。
现代计算机中常以字节数来描述容量的大小,因一个字节已被定义为 8
位二进制代码,故用字节数便能反映主存容量。辅存容量通常用字节数来表示。
1.3.3 运算速度
计算机的运算速度与许多因素有关,如机器的主频、执行什么样的操作、主存本身的速度等都有关。
早期用完成一次加法或乘法所需的时间来衡量运算速度,即普通法,显然是很不合理的。后来采用吉普森(Gibson)法,它综合考虑每条指令的执行时间以及它们在全部操作中所占的百分比,即:
T_{\text{M}} = \sum^{n}_{i = 1}{f_i t_i}
其中,T_{\text{M}} 为机器运行速度;$f_i$ 为第 $i$ 种指令占全部操作的百分比数;$t_i$ 为第 $i$ 种指令的执行时间。
现在机器的运算速度普遍采用单位时间内执行指令的平均条数来衡量,并用 MIPS
(Million Instruction Per Second,百万条指令每秒)作为计量单位。例如,某机每秒能执行 200
万条指令,则记作 2 MIPS
。也可以用 CPI
(Cycle Per Instruction)即执行一条指令所需的时钟周期(机器主频的倒数),或用 FLOPS
(Floating Point Operation Per Second,浮点运算次数每秒)来衡量运算速度。