计算机系统由硬件和软件两大部分组成:
现代计算机具有多级层次的结构:
从计算机系统的多级层次结构来看,可以将硬件研究的主要对象归结为传统机器 M_1,和微程序机器 M_0。软件的研究对象主要是操作系统级以上的各级虚拟机。
计算机体系结构:指那些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性。
计算机组成:指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是透明的硬件细节。
例:对于一个计算机来说,其具有乘法计算、除法计算等功能,这是其结构的组成部分,而对于乘法计算指令和除法计算指令实现的方式,则是计算机组成的问题。
1945 年,数学家冯·诺依曼(von Neumann)在研究 \text{EDVAC} 机时提出了存储程序的概念。以此概念为基础的各类计算机通称为冯·诺依曼机。它的特点可归结如下:
典型的冯·诺依曼计算机是以运算器为中心的:
现代的计算机已转化为以存储器为中心:
图中各部件的功能如下:
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
控制,用来完成相应的输入、输出操作。
在许多科学技术的实际问题中,往往会遇到许多复杂的数学方程组,而数字计算机通常只能执行加、减、乘、除四则运算,这就要求在上机解题前,先由人工完成一些必要的准备工作。
这些工作大致可归纳为:
I/O
设备最终将这些结果输出。
衡量一台计算机性能的优劣是根据多项技术指标综合确定的。其中,既包含硬件的各种性能指标,又包括软件的各种功能。这里主要讨论硬件的技术指标。
机器字长是指 CPU
一次能处理数据的位数,通常与 CPU
的寄存器位数有关。字长越长,数的表示范围越大,精度也越高。机器的字长也会影响机器的运算速度。若 CPU
字长较短,又要运算位数较多的数据,那么需要经过两次或多次的运算才能完成,这样势必影响机器的运算速度。
机器字长对硬件的造价也有较大的影响。它将直接影响加法器(或ALU)、数据总线以及存储字长的位数。所以机器字长的确定不能单从精度和数的表示范围来考虑。
存储器的容量应该包括主存容量和辅存容量。
主存容量是指主存中存放二进制代码的总位数。即:\text{存储容量二存储单元个数} \times \text{存储字长}。
现代计算机中常以字节数来描述容量的大小,因一个字节已被定义为 8
位二进制代码,故用字节数便能反映主存容量。辅存容量通常用字节数来表示。
计算机的运算速度与许多因素有关,如机器的主频、执行什么样的操作、主存本身的速度等都有关。
早期用完成一次加法或乘法所需的时间来衡量运算速度,即普通法,显然是很不合理的。后来采用吉普森(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,浮点运算次数每秒)来衡量运算速度。