【计算机组成原理】计算机系统概述
1.1 计算机系统简介
1.1.1 计算机的软硬件概念
计算机系统由“硬件”和“软件”两大部分组成。
由于“软件”的发展不仅可以充分发挥极其的“硬件”功能,提高机器的工作效率,而且已经发展到能局部模拟人类的思维活动,因此在整个计算机系统内,“软件”的地位和作用已经成为评价计算机系统性能好坏的重要标志。
计算机的软件可以分为两大类:系统软件和应用软件。
系统软件有成为系统程序,主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度,高效运行。它包括标准程序库,语言处理程序、操作系统、服务程序等。
1.1.2 计算机系统的层次结构
汇编语言摆脱不了实际机器的指令系统,因此汇编语言没有通用性。
编译程序是将用户编写的高级语言程序的全部语句一次全部翻译成机器语言程序,然后在执行机器语言程序。
解释程序是将原程序的一条语句翻译成对应于机器语言的一条语句,并且立即执行这条语句,接着翻译源程序的下一条语句,并执行这条语句,如此反复直至完成源程序的全部翻译任务。
微程序机器直接将每一条机器指令翻译成一组微指令,构成一个微程序。
体系结构:
虚拟机器M4(高级语言机器)用编译程序翻译成汇编语言程序
虚拟机器M3(汇编语言机器)用汇编程序翻译成机器语言程序
虚拟机器M2(操作系统机器)用机器语言解释操作系统
传统机器M1(机器语言机器)用微程序解释机器指令
微程序机器M0(微指令系统)由硬件直接执行微指令
1.1.3 计算机组成和计算机体系结构
组成和结构的区别:例如,指令集中有哪些命令是结构问题,至于每个命令是如何实现的则是组成问题。
1.2 计算机的基本组成
1.2.1 冯诺依曼计算机的特点
- 计算机由运算器、存储器、控制器、输入设备、输出设备五大部件构成;
- 指令和数据以同等地位存放在存储器中,并可按地址访问;
- 指令和数据均用二进制数表示;
- 指令有操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置;
- 机器以运算器为中心,输入输出设备与存储器间的数据传输通过运算器完成。
1.2.2 计算机的硬件框图
典型的冯诺依曼计算机是以运算器为中心的,现代的计算机则是以存储器为中心。
各部件的功能:
- 运算器用来完成算术运算和逻辑运算,并将结果的中间结果暂存在运算器中;
- 存储器用来存放数据和程序;
- 控制器用来控制、指挥程序和数据的输入、运行以及处理运算结果;
- 输入设备用来将人们熟悉的信息形式转化为机器能识别的信息形式;
- 输出设备将机器运算结果转化为人们熟悉的信息形式。
计算机的五大部件(五大子系统)在控制器的统一指挥下,有条不紊地自动工作。
由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,往往将这两大部件集成在同一芯片上,通常将他们合起来统称为中央处理器(Central Processing Unit, CPU),输入和输出设备简称为I/O设备。于是现代计算机可认为由三大部分组成:CPU、I/O设备及主存储器。CPU和主存储器成为主机,I/O设备称为外部设备。
算术逻辑单元用来完成算术逻辑运算,控制单元用来解释存储器中的指令,并发出各种操作命令来执行。
存储器分为主存储器和辅存(外存,硬盘?)。其中主存储器直接与CPU交换信息。
1.2.3 计算机的工作
主存储器
主存储器由存储体、MDR(Memory Data Register,它的位数与存储字长相等)、MAR(Memory Address Register)以及各种逻辑部件及控制电路等组成,其中MDR存储的是要操作存储体中存储单元的地址,MAR是要写入或读出的数据。
一个存储体由若干个存储单元构成,每个存储单元由若干个存储元件构成,一个存储元件能存储一个二进制数字。
一个存储单元可以存储一串二进制代码,称这串二进制代码为一个存储字,这串二进制代码的位数成为存储字长。每个存储单元都会被分配一个编号称为存储单元的地址号。
主存的工作方式是按照存储单元的地址号来实现对存储字各位的写、读,成为按地址存取方式。
运算器
运算器应至少包含三个存储器:ACC(累加器)、MQ(乘商寄存器)、X(操作数寄存器)以及一个算术逻辑单元。
寄存器\操作数\运算 | 加法 | 减法 | 乘法 | 除法 |
---|---|---|---|---|
ACC | 被加数及和 | 被减数及差 | 乘积高位 | 被除数及余数 |
MQ | 乘数及乘积低位 | 商 | ||
X | 加数 | 减数 | 被乘数 | 除数 |
控制器
控制器由程序计数器(PC)、指令寄存器(IR,Instruction Register)、控制单元(CU)组成。
各部件的作用:
- PC与主存的MAR之间有一条直接通路,且具有自动加一的功能。
- IR用来存放当前的指令,IR的内容来自主存的MDR。
- IR中的操作码(OP(IR))送至CU,用来分析指令。
- IR中的地址码作为操作数的地址送至存储器的MAR。
控制器是计算机的神经中枢,由他指挥各部件自动、协调地工作。
流程:
- 命令存储器读出一条指令,称为取指过程;
- 对这条指令进行分析,指出该指令要完成什么样的操作,并按寻址特征指明操作数的地址,称为分析过程;
- 根据操作数所在的地址以及指令的操作码完成某种操作,称为执行过程。
1.3 计算机硬件的主要技术指标
机器字长
机器字长是指CPU一次能处理数据的位数,通常与CPU的寄存器位数有关,字长越长数的表示范围越大,精度也越高。(现在主流语言最高只支持int64是因为这个吗?)
存储容量
存储器的容量包括主存容量和辅存容量。
主存容量为主存中存放二进制代码的总位数:存储容量=存储单元个数*存储字长。
运算速度
早期用完成一次加法或乘法所需时间衡量机器运算速度。
之后采用吉布森(Gibson)法,综合考虑每条指令的执行时间(加权):\(T_M = \sum_{i=1}^n f_i t_i\).
其中\(T_m\)为机器运行速度;\(f_i\)为第i种指令占全部操作的百分比数;\(t_i\)为第i种指令的执行时间。
现在普遍采用单位时间内执行指令的平均条数来衡量。用MIPS(Million Instruction Per Second)作为计量单位,例如某个机器每秒能执行200w条指令,则为2MIPS;或用FLOPS(Floating Point Operation Per Second,浮点运算次数每秒)来衡量运算速度。