计算机组成原理自学笔记
第一章 计算机系统概论
现代计算机系统由哪两部分组成?
1.1 计算机系统简介
1.1.1 计算机的软硬件概念
计算机性能的好坏取决于软硬件功能的总和
计算机的软件又可以分为两类:系统软件和应用软件
1.1.2 计算机系统的层次结构
系统复杂性管理的方法
- 抽象 : 对于一个过程或者一件制品的某些细节又目的的隐藏,以便把其他方面、细节或者结构表达得更加清楚—百度百科
- 抽象:指高级的模型,和低级的实体相对—*
翻译程序:分为两种。
- 编译程序:将用户编写的高级语言程序一次全部翻译成机器语言程序,而后再执行机器语言程序。只要源程序不变,就无需再翻译。
- 解释程序:将源程序逐句翻译成机器语言程序,翻译一句执行一句。下次需要运行源程序时需要重新翻译。
硬件研究的主要对象为传统机器
M
1
M_1
M1和微程序机器
M
0
M_0
M0.
软件的研究对象主要是操作系统级以上的各级虚拟机。
- M 1 M_1 M1,直接执行机器指令的机器。
- M 0 M_0 M0,将每一条机器指令翻译成多条微指令,即一个微程序,每执行完一条机器指令,即执行完成一个微程序。微程序机器 M 0 M_0 M0可以看作是实际机器 M 1 M_1 M1的分解。
- M 3 M_3 M3,执行汇编语言程序的机器,但实际上汇编语言程序无法直接被机器执行,需要借助机器系统软件中的汇编程序进行翻译,转换为机器语言后,才能执行。所以 M 2 M_2 M2并不是一台实际的机器,是一台具有翻译功能的虚拟机。
- M 4 M_4 M4,执行高级语言程序的机器,实际上也是使用翻译程序的虚拟机。
- M 2 M_2 M2,由操作系统软件构成,提供了在汇编语言与高级语言的使用和实现过程中所需的某些基本操作,起到控制并管理计算机系统全部硬件和软件资源的作用,操作系统的功能通过其控制语言实现。
1.1.3 计算机组成和计算机体系结构
计算机组成与计算机体系结构从研究内容上来说有什么区别呢?
计算机体系结构主要研究:程序员所见到的计算机系统的属性,概念性的结构与功能特性,包括指令集、数据类型、存储器寻址技术、I/O机理等抽象的属性。即研究计算机应该采取什么样的结构以及具有什么样的功能。
计算机组成主要研究:如何具体实现这些提出的结构和功能,即如何实现计算机体系结构所体现的属性。
例如,一台机器是否具有乘法指令的功能,这是一个结构问题,而实现乘法指令采用什么样的方式,则是一个组成问题。
1.2 计算机的基本组成
1.2.1 冯·诺依曼计算机的特点
- 计算机由五大部件组成,运算器、存储器、控制器、输入设备和输出设备。
- 指令和数据以同等地位存于存储器,可按地址寻访。
- 指令和数据均用二进制表示。
- 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置。
- 存储程序????
- 机器以运算器为中心,输入输出设备与存储器间的数据传送通过运算器完成。
1.2.2 计算机的硬件框图
典型的冯·诺依曼计算机是以运算器为中心的
各部件的功能:
- 运算器用来完成算术运算和逻辑运算,并将运算的中间结果暂存在运算器内。
- 存储器用来存放数据和程序。
- 控制器用来控制、指挥程序和数据的输入、运行以及处理运算结果。
- 输入设备用来将人们熟悉的信息形式转换为机器能识别的信息形式,常见的有键盘、鼠标等。
- 输出设备可将机器运算结果转换为人们熟悉的信息形式,如打印机输出、显示器输出等。
因为运算器和控制器在逻辑关系和电路结构上十分紧密,这两大部件往往集成在同一芯片上,即*处理器(Central Processing Unit, CPU)。
把输入与输出设备简称为I/O设备(Input/Output Equipment)。
这样,现代计算机可认为由三大部分组成:CPU、I/O设备及主存储器(Main Memory, MM)。CPU与主存储器可称为主机,I/O设备可称为外部设备。
1.2.3 计算机的硬件框图
系统复杂性管理的方法
- 层次化(Hierachy):将被设计的系统划分为多个模块或子模块。
- 模块化(Modularity):有明确定义(well-defined)的功能接口。
- 规则性(regularity):模块更容易被重用。
-
上机前的准备
- 建立数学模型
找到一系列反应研究对象关系的数学方程组,建立数学模型。 - 确定计算方法
例如计算 s i n x sinx sinx
因为计算机内部没有直接完成三角函数运算的部件,只能采用近似计算的方法,使结果达到精度要求。
s i n x = x − x 3 3 ! + x 5 5 ! − x 7 7 ! + x 9 9 ! − ⋅ ⋅ ⋅ sinx=x-\frac{x^3}{3!}+\frac{x^5}{5!}-\frac{x^7}{7!}+\frac{x^9}{9!}-··· sinx=x−3!x3+5!x5−7!x7+9!x9−⋅⋅⋅
又例如,计算机不能直接求解开方,但可以用迭代公式,通过多次迭代,求解相应精度的 x \sqrt{x} x
y n + 1 = x = 1 2 ( y n + x y n ) ( n = 0 , 1 , 2 , ⋅ ⋅ ⋅ ) y_{n+1}=\sqrt{x}=\frac{1}{2}\left(y_n+\frac{x}{y_n}\right) (n=0,1,2,···) yn+1=x =21(yn+ynx)(n=0,1,2,⋅⋅⋅) - 编制解题程序
程序——运算的全部步骤
指令——每一个步骤
编制解题程序就是将运算步骤用一一对应的机器指令描述
例如:
计算 a x 2 + b x + c ax^2+bx+c ax2+bx+c
取 x x x 至运算器中
乘以 x x x 在运算器中 //运算器中为 x 2 x^2 x2
乘以 a a a 在运算器中 //运算器中为 a x 2 ax^2 ax2
存 a x 2 ax^2 ax2 至存储器中
取 b b b 至运算器中
乘以 x x x 在运算器中 //运算器中为 b x bx bx
加 a x 2 ax^2 ax2 在运算器中 //运算器中为 a x 2 + b x ax^2+bx ax2+bx
加 c c c 在运算器中 //运算器中为 a x 2 + b x + c ax^2+bx+c ax2+bx+c
如果将 a x 2 + b x + c ax^2+bx+c ax2+bx+c化为 ( a x + b ) x + c \left(ax+b\right)x+c (ax+b)x+c
则上述步骤可简化为:
取 x x x 至运算器中
乘以 a a a 在运算器中
加 b b b 在运算器中
乘以 x x x 在运算器中
加 c c c 在运算器中
求解 a x 2 + b x + c ax^2+bx+c ax2+bx+c 的程序清单
取数:000001
存数:000010
加:000011
乘:000100
打印:000101
停机:000110
指令和数据以同等地位存于存储器中,可按址寻访。计算机按顺序执行指令。指令由操作码和地址码组成。
- 建立数学模型
-
计算机的工作过程
-
存储器的基本组成
存储体(大楼)-- 存储单元(房间)-- 存储元件01(床位)
存储元件用于存储一个二进制位
存储单元用于存储一串二进制代码,这串二进制代码称为存储字,二进制代码的长度称为存储字长。
存储字长可以是8位,16位,32位等,一个存储字可以代表一个二进制数,也可以代表一串字符。
床位有人相当于’1’,床位无人相当于’0’,每个房间的床位数相当于存储字长。每个房间都有房间编号,即存储单元的地址。
主存的工作方式就是按存储单元的地址号来实现对存储字各位的存、取。
MAR:存储器地址寄存器,存储将要访问的存储单元地址,能够反应存储单元的地址个数。
MDR:存储器数据寄存器,用来存放从存储体中某单元取出的数据或者存放待写入存储体的数据,反应存储字长。 -
运算器的基本组成及操作过程
运算器最少包括三个寄存器:ACC(Accumulator)累加器、MQ(Multiplier-Quotient Register)乘商寄存器、X操作数寄存器,和一个算术逻辑单元ALU(Arithmetic and Logic Unit)。ALU用于实现多组算术运算和逻辑运算的组合逻辑电路。- 加法的操作过程
[X]:表示寄存器X中的内容
[ACC]:表示累加器ACC中的内容
[MQ]:表示乘商寄存器中的内容
被加数已在ACC中
指令:加 M
[M] -> X
[ACC] + [X] -> ACC - 减法的操作过程
被减数已在ACC中
指令:减 M
[M] -> X
[ACC] - [X] -> ACC - 乘法的操作过程
初态:被乘数在ACC中
指令:乘 M
[M] -> MQ
[ACC] -> X
0 -> ACC
[X] × [MQ] -> ACC//MQ
积的高位存在ACC中,低位存在MQ中 - 除法的操作过程
初态:被除数在ACC中
[M] -> X
[ACC] ÷ [X] -> MQ
余数在ACC中,商在MQ中
- 加法的操作过程
-
控制器的基本组成
控制器是计算机的神经中枢,它指挥各部件自动、协调地工作。
控制器由程序计数器(Program Counter, PC)、指令寄存器(Instruction Register, IR)以及控制单元(CU)组成。
控制器完成一条指令的过程:
PC中存放将要执行的指令地址,执行完后PC自动指向下一条指令的地址,即 PC+1 -> PC. IR存放当前将要执行的指令,IR的内容来自主存的MDR. -
I/O
I/O子系统包括各种设备及其相应的接口。每一种I/O设备都由I/O接口于主机联系,它接收CU发出的各种控制命令,并完成相应的操作。
-
-
主机完成一条指令的全过程
以取数指令为例
取数指令以二进制的形式存储在存储体中,要想执行取数指令,首先要将存储在存储体中的取数指令从存储体中取出,控制器将取数指令所在的存储单元地址赋给PC。
1)PC将取数指令的地址传给MAR,2)再由MAR送给存储体。存储体收到MAR传来的地址后,3)在控制器的控制下,存储体将指定地址的存储单元中保存的取数指令传给MDR,4)MDR将取数指令传给IR,即IR保存当前正在执行的指令,取数指令。
以上为从存储单元中取出指令的过程,接下来是分析指令的过程。
5)分析指令就是把取出指令的操作码交给CU,大量的分析操作在CU内部执行。
剩下取数指令中的地址码,该地址码表示取数指令要取的数据在存储体中的地址。接下来的操作就是把取数指令要取的数据从存储体中取出,保存到ACC中。
6)在控制器的控制下,IR将取数指令的地址码部分中操作数的地址传给MAR,7)MAR将操作数的地址传给存储体,8)在控制器的控制下,存储体将地址所对应的操作数取出,即取数指令要取的那个数,传给MDR,9)MDR将取出的操作数传给ACC。
以存数指令为例:
控制器将存数指令的地址保存到PC中,1)PC将存数指令的地址传给MAR,2)MAR将存数指令的地址传给存储体,3)在控制器的控制下,存储体根据MAR传来的地址将存数指令传给MDR,4)在控制器的控制下,MDR将存数指令传给IR,5)IR将得到的存数指令的操作码传给CU进行分析,6)在控制器的控制下,IR将存数指令的地址码,即要存数的存储单元的地址传给MAR,7)MAR将所得的地址传给存储体,8)将ACC中的数据传给MDR,9)在控制器的控制下,MDR将所得的数据传给存储体。
a x 2 + b x + c ax^2+bx+c ax2+bx+c的执行过程:
1)将程序通过输入设备送至计算机
2)程序首地址 -> PC
3)启动程序运行
4)取指令 PC -> MAR -> M -> MDR -> IR,PC + 1 -> PC
5)分析指令OP(IR) -> CU
6)执行指令Ad(IR) -> MAR -> M -> MDR -> ACC
……
n-1)打印结果
n)停机
M为存储体,OP为操作码,Ad为地址码
1.3 计算机硬件的主要技术指标
1.3.1 机器字长
CPU一次能处理的数据位数,与CPU中的寄存器位数有关。
就是电脑的位数,32位,64位。
字长越长,数的表示范围越大,精度越高。
1.3.2 存储容量
存放二进制信息的总位数