目录
- 第一章 计算机系统概论
- 1.1 计算机系统简介
- 1.1.1 计算机的软硬件概念
- 1.1.2 计算机系统的层次结构
- 1.1.3 计算机组成和计算机体系结构
- 1.2 计算机的基本组成
- 1.2.1 冯 · 诺伊曼计算机的特点
- 1.2.2 计算机的硬件框图
- 1.2.3 计算机的工作过程
- 1.3 计算机硬件的主要技术指标
- 1.3.1 机器字长
- 1.3.2 运算速度
- 1.3.3 存储容量
第一章 计算机系统概论
1.1 计算机系统简介
1.1.1 计算机的软硬件概念
计算机系统是由 软件
和 硬件
两大部分组成的。
硬件
:指计算机的实体部分,它由看得见摸得着的各种电子元器件、各类光、电、机设备的实物组成,如主机、外设等等。软件
:它是看不见摸不着的,由人们事先编制成具有各类特殊功能的信息组成。通常把这些信息,诸如各类程序寄寓于各类媒体中,如 RAM、ROM、磁带、磁盘、光盘等。
计算机的软件通常又可分为两大类:系统软件
和应用软件
。
系统软件
:又称为系统程序,主要用来管理整个计算机系统,监视服务,使系统资源得到合理调度,确保高效运行。它包括:表中程序库、语言处理程序、操作系统、服务性程序、数据库管理系统、网络软件等等。应用软件
:又称为应用程序,它是用户根据任务需要所编制的各种程序。如科学计算程序、数据处理程序、过程控制程序、事务管理程序等等。
硬件是计算机的物理基础,它决定了计算机系统的瓶颈在哪,而软件又决定了可以将硬件的性能发挥到什么样的程度,所以,计算机性能的好坏取决于 “软”、“硬” 件功能的总和。
1.1.2 计算机系统的层次结构
计算机的解题过程:
现代计算机的解题过程通常是先由用户用高级语言编写程序(称作源程序),然后将它和数据一起送入计算机内,再由计算机将其翻译成机器能识别的机器语言程序(称作目标程序),机器自动运行该机器语言程序,并将计算结果输出。
早期只有机器语言
,用户编写的机器语言程序,直接在机器上执行,我们把直接执行机器语言的实际机器称 M1 。
20 世纪 50 年代开始出现了符号式的程序设计语言,即汇编语言
,它使程序员摆脱了繁杂而又易错的二进制代码编写程序,但是没有机器能直接识别这种汇编语言程序,必须先将汇编语言程序翻译成机器语言程序后,才能被机器接受并自动运行。我们把具有翻译功能的汇编程序的计算机看作一台 M2 机器。
两级层次结构的计算机系统:
20 世纪 60 年代开始出现了各种面向问题的高级语言
,如 FORTRAN、BASIC、Pascal、C 等等。这类高级语言对问题的描述十分接近人们的习惯,给程序员带来了极大的方便,当然,M1 机器本身是不能识别高级语言的,因此,在进入 M1 机器运行前,必须先将高级语言程序翻译成汇编语言程序,然后再将其翻译成机器语言程序。我们把将高级语言程序直接翻译成汇编或者机器语言程序的机器称为 M3 。
三级层次结构的计算机系统:
由于软件的发展,使实际机器 M1 向上延伸构成了各级虚拟机器。同理 M1 机器内部也可向下延伸而形成下一级的微程序机器 M0 。M0 机器是直接将 M1 机器中的每一条机器指令翻译成一组微指令
,即构成一个微程序。微程序机器 M0 可看作是对实际机器 M1 的分解,即用 M0 的微程序解释并执行 M1 的每一条机器指令。
四级层次结构的计算机系统:
实际上再实际机器 M1 与虚拟机器 M2 之间,还有一级虚拟机器,它是由操作系统
软件构成的。操作系统提供了在汇编语言和高级语言的使用和实现过程中所需的某些基本操作,还起到控制并管理系统硬件和软件全部资源的作用。
五级层次结构的计算机系统:
1.1.3 计算机组成和计算机体系结构
计算机体系结构
是指那些能够被程序员所见到的计算机系统的属性,即概念性的结构与功能特性
,通常是指用机器语言编程的程序员所看到的传统机器的属性,包括指令集、数据类型、存储器寻址技术、I/O 机理等等,大都属于抽象的属性。
计算机组成
是指如何实现计算机体系结构所体现的属性,它包含了许多对程序员来说是不知道的硬件细节。
1.2 计算机的基本组成
1.2.1 冯 · 诺伊曼计算机的特点
1945 年数学家 冯·诺依曼
等人,在研究 EDVAC 机时,提出了 “存储程序
” 的概念。以此概念为基础的各类计算机,统称为 冯·诺依曼机
。它的特点可归结为:
- 计算机由
运算器
、存储器
、控制器
和输入设备
、输出设备
五大部件组成 - 指令和数据以同等地位存放于
存储器
内,并可按地址寻访 - 指令和数据均以
二进制码
表示 - 指令由
操作码
和地址码
组成,操作码用来表示操作的性质,地址码用来表示操作数所在存储器中的位置 存储程序
,指令在存储器内按顺序存放- 机器
以运算器为中心
,输入输出设备与存储器的数据传送通过运算器
1.2.2 计算机的硬件框图
冯 · 诺伊曼计算机结构框图:
典型的冯·诺依曼计算机是以运算器
为中心的。其中,输入、输出设备与存储器之间的数据传送都需通过运算器。图中实线为数据线,虚线为控制线和反馈线。
各组件的功能:
- 运算器:完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内
- 存储器:用来存放数据和程序
- 控制器:用来控制、指挥程序和数据的输入、运行以及处理运算结果
- 输入设备:将信息转换成机器能识别的形式,比如键盘、鼠标等
- 输出设备:将结果转换成人民熟悉的形式,比如打印机输出,显示器输出等
这个结构存在两个问题:
- 以运算器为中心,导致运算器成为系统的瓶颈
- 不具有层次化的特征
以存储器为中心的计算机硬件框图:
以存储器为中心,实现输入和输出设备与存储器之间直接的信息交换,图中实现为控制线,虚线为反馈线,双线为数据线。
现代计算机硬件框图:
由于运算器
和控制器
在逻辑关系和电路结构土联系十分紧密,尤其在大规模集成电路制作工艺出现后,这两大部件往往制作在同一芯片上,因此,通常将它们合起来统称为中央处理器
(Central Processing Unit),简称 CPU
。把输入设备
与输出设备
简称为 IO设备
(Input/Output equipment)。
这样,现代计算机可认为由三大部分组成:CPU
、IO设备
及主存储器M.M
(Main Memory)。CPU
与 M.M
合起来又可称为主机
,IO设备
可叫作外部设备
。
主存储器 M.M
是存储器子系统中的一类,用来存放程序和数据,它可以直接与CPU
交换信息。另一类叫辅助存储器
,简称辅存
,又叫外存
。
ALU
(Arithmetic Logic Unit)叫做算术逻辑运算单元
(简称算逻部件
),用来完成算术逻辑运算。CU
(Control Unit)叫做控制单元
,用来解释存储器中的指令,并发出各种操作命令来执行指令。ALU
和 CU
是 CPU
的核心部件。
I/O设备
也受 CU
控制,用来完成相应的输入、输出操作。
可见,计算机有条不紊地自动工作,都是在控制器
统一指挥下完成的。
系统复杂性管理的方法(3Y):
- 层次化(Hierachy):将被设计的系统划分为多个模块或子模块
- 模块化(Modularity):有明确定义(well-defined)的功能和接口
- 规则化(Regularity):模块更容易被重用
1.2.3 计算机的工作过程
用计算机解决一个实际问题,通常包含两大过程:上机前的各种准备
和上机运行
。
- 上机前的准备
- (1)建立数学模型
- (2)确定计算方式
- (3)编制解题程序
- 计算机的解题过程
存储器的基本组成:
主存储器(简称主存
或内存
)包括存储体
、各种逻辑部件
及控制电路
等。存储体
由许多存储单元
组成,每个存储单元
又包含若干个存储元件
(或称存储基元、存储元),每个存储元件
能寄存一位二进制代码 “0
” 或者 “1
”。一个存储单元
可存储一串二进制代码,称这串二进制代码为一个存储字
,这串二进制代码的个数叫做存储字长
。
每个存储单元
会被赋予一个编号,叫做存储单元的地址号
。主存的工作方式就是按存储单元的地址号来实现对存储字各位的存、取。这种存取方式叫做按地址存取
,也即按地址访问存储器
(简称访存
)
为了能实现按地址访问的方式,主存中还必须配置两个寄存器 MAR
和 MDR
。
- MAR(Memory Address Register):
存储器地址寄存器
,用来存放欲访问的存储单元的地址,其位数对应存储单元的个数(如 MAR 为 10 位,则有 210=1024 个存储单元,记为 1K)。 - MDR(Memory Data Register):
存储器数据寄存器
,用来存放从存储体某单元取出的代码或者准备往某存储单元存入的代码,其位数与存储字长相等。
运算器的基本组成及操作过程:
运算器包括三个寄存器和一个算逻电路 ALU
。其中 ACC (Accumulator)
为累加器
,MQ (Multiplier-QuotientRegister)
为乘商寄存器
,X
为操作数寄存器
。这三个寄存器在完成不同运算时,所存放的操作数类别也各不相同。
不同机器的运算器结构可能不同。
以下简要分析这种结构的运算器其加、减、乘、除四则运算的操作:
设:M 表示存储器的任意地址号
[M] 表示对应 M 地址号单元中的内容
X 表示 X 寄存器
[X] 表示 X 寄存器中的内容
ACC 表示累加器
[ACC] 表示累加器中的内容
MQ 表示乘商寄存器
[MQ] 表示乘商寄存器中的内容
假设 ACC 中已存有前一时刻的运算结果,并作为下述运算中的一个操作数。则:
- 加法操作过程:
- [M] -> X
- [ACC] + [X] -> ACC
即将 [ACC] 看作被加数,先从内存中取一个存放在 M 地址号内的加数 [M],送至运算器的 X 寄存器中,然后将被加数 [ACC] 与加数 [X] 相加,其结果和保留在累加器 ACC 中。
- 减法操作过程:
- [M] -> X
- [ACC] - [X] -> ACC
即将 [ACC] 看作被减数,先取出减数 [M] 送入 X,再作 [ACC] - [X],其结果差保留在 ACC 中。
- 乘法操作过程:
- [M] -> MQ
- [ACC] -> X
- 0 -> ACC
[X]
×[MQ] -> ACC//MQ(ps:// 表示两个寄存器串联)
即把 [ACC] 看作被乘数,先把在 M 号单元中的乘数 [M] 送入乘商寄存器 MQ,再把被乘数送入 X 寄存器,并将寄存器 A 清 “0”,然后 [X] 和 [MQ] 相乘,其结果积的高位保留在 ACC 中,积的低位保留在 MQ 中。
- 除法操作过程:
- [M] -> X
- [ACC] ÷ [X] -> MQ
- 余数 R 在 ACC 中
即将 [ACC] 看作被除数,先将在 M 号单元内的除数 [M] 送至寄存器,然后 [ACC] 除以 [X],其结果商暂留于MQ,[ACC] 为余数 R。若需要将商保留在 ACC 中,只需做一步 [MQ] - ACC 即可。
控制器的基本结构:
控制器
是计算机组成的神经中枢,它指挥全机各部件自动、协调地工作,它的主要功能是解释指令
和保证指令的按序执行
。
完成一条指令操作由取指
、分析
和执行
三阶段组成。
- 取指阶段:命令存储器读出一条指令,这叫取指过程(也称取指阶段)
- 分析阶段:对取出来的指令进行分析,指出该指令要完成什么样的操作,并按寻址特征指明操作数的地址,这叫做分析过程(也称分析阶段)
- 执行阶段:根据操作数所在的地址,取出操作数并完成某种操作,这叫作执行过程(也称执行阶段)
控制器由程序计数器 PC(Program Counter)
,指令寄存器 IR(Instruction Register)
以及控制单元 CU
几部分组成。
- PC:用来存放当前欲执行指令的地址,它与主存的 MAR 之间有一条直接通路,且具有计数功能,即可自动形成下一条指令的地址。
- IR:用来存放当前的指令,内容来自主存的 MDR,用来分析指令
- CU:用来分析当前指令所需完成的操作,并发出各种微操作命令序列,用以控制所有被控对象
主机完成一条指令的过程:
- 以取数指令为例
- PC 将指令的地址送给 MAR
- 再由 MAR 送给存储体
- 在控制器的控制下,存储体把指令存储单元当中保存的那条取数指令取出来,送入 MDR 当中
- MDR 再将指令送到 IR ,IR 保存当前正在执行的这条指令,完成取指的操作
- 将指令寄存器 IR 当中的操作码部分送给 CU,CU 内部分析指令、译码
- 在控制器的控制之下,需要把指令当中的地址部分送给存储器,以便将数据从存储体当中取出来,因为 IR 保存了当前指令和当前指令操作数的地址,所以从 IR 的地址码部分,把地址取出,送入 MAR
- 然后由 MAR 将该地址送往存储体
- 在控制器的控制下,从存储体中将取数指令要取的数取出来存入到 MDR
- 最后送到 ACC ,完成取数的操作
- 以存数指令为例
- PC 将指令的地址送给 MAR
- 再由 MAR 送给存储体
- 在控制单元 CU 的控制下,从存储体指定的存储单元当中将指令取出来放入到 MDR 当中
- MDR 再将指令送到 IR,IR 保存当前正在执行的这条指令,完成取指的操作
- 将指令寄存器 IR 当中的操作码部分送给 CU,CU 内部分析指令、译码
- CU 控制,将 IR 当中地址码部分送到 MAR
- MAR 再送入到存储体
- 将 ACC 中的内容送到 MDR
- 将 MDR 中的数据保存到存储体中
I/O 的基本结构:
I/O 子系统包括各种外部设备及相应的接口。每一种设备都是由 I/O 接口与主机联系的,他接受 CU 发出的各种控制命令完成相应的操作。如键盘由键盘接口电路与主机联系;打印机由打印机接口电路与主机联系。
1.3 计算机硬件的主要技术指标
1.3.1 机器字长
机器字长
是指 CPU 一次能处理数据的位数
,通常与 CPU 的寄存器位数
有关。机器的字长会影响机器的运算速度,倘如 CPU 字长较短,又要运算位较多的数据,那么需要经过两次或多次的运算才能完成,这样势必会影响整机的运行速度。
1.3.2 运算速度
计算机的运算速度与许多因素有关,如:
- 主频
- 核数:每个核支持的线程数
- 吉普森法:综合考虑每条指令的执行时间以及它们在全部操作中所占的百分比
- CPI:执行一条指令所需时钟周期数
- MIPS:每秒执行百万条指令
- FLOPS:每秒浮点运算次数
1.3.3 存储容量
存储容量的大小可以用存放二进制信息的总位数
进行衡量。
存储器的容量包括主存容量
和赋存容量
。
- 主存容量:是指主存中存放二进制代码的总数
- 衡量方法
- 存储单元个数 × 存储字长
- 字节数
- 衡量方法
- 辅存容量
- 衡量方法
- 字节数
- 衡量方法