第 1 章 计算机系统概论
1.2 计算机的基本组成。
1.2.2 计算机的硬件框图
我们并不需要去记住有关冯诺依曼的特点。只需要知晓两大特点。
- 数据与程序的存储地位相同,且都放在存储器内。
- 运算器是整个计算机的中心。
不过现代计算机为了速度,中心已经改变为存储器。
下面两张图分别表示他们的特点。
对于上述的区别我们只需要知晓以下几点。
- 控制器可以控制所有设备,并且所有设备都可以反馈到控制器
- 区别两者的只有存储器和运算器的位置
- 在现代计算机框图种,存储器可以将数据输入到控制器中
最后,我们可以用以下的图片来简单描述计算机的结构.
1.2.3 计算机的工作步骤
对于一个计算 $a\times b$ 我们可能需要以下几个计算过程。
- 取 $a$ 至运算器中
- 乘以 $b$ 存于运算器中
- 将 $ab$ 送至存储器中
- 停机
如果我们将上述的过程写为机器指令就完成了运算程序的编写。
假如机器指令字长为 16 位,操作码占 6 位,地址码占 10 位。
我们的每次操作都有两个部分组成,操作+地址。
我们假如有如下的操作码。
操作码 | 性质 | 内容 |
---|---|---|
000001 | 取数 | 将地址中的数取到累加器(AAC)中 |
000010 | 存数 | 将AAC 中的数据存储到主存中 |
000100 | 乘 | 将AAC中的数乘上对应的地址单元中 |
000101 | 打印 | 将对应地址单元中的数据打印出来 |
000110 | 停机 |
那么我们就可以这么的计算
为了方便书写,我将操作码简化为3位数。地质单元简化为4位。
首先,从上述计算机架构可知,数据和程序都放在存储单元中。
因此我们依照这个表格的顺序捋下来直到停机位置就是我们一般计算机运行的过程了。
地址 | 指令 | 注释 |
---|---|---|
000 | 001 | 101 | 取出 a 到 AAC 中 |
001 | 100 | 110 | 将AAC中的数字乘上 b |
010 | 010 | 111 | 将AAC中的数存到主存中 |
011 | 101 | 111 | 打印 ab |
100 | 110 | 停机 |
101 | a | 原始数据 |
110 | b | 原始数据 |
111 | ab | 结果 |
主存储器
主存储器器可以分为三个部分。
- 存储体 M ,所有东西放的地方,每个存储单位都有两个值,内容和地址。
- MAR(Memory Address Register) 存储器地址的寄存器,里面存放需要访问的地址单元。
- MDR(Memory Data Register) 存储器数据的的寄存器表示,欲存入和取出的数据。
在现代计算机,主存一般都是大规模集成电路,另外 MAR 和 MDR 一般都集成在 CPU 中了。
运算器
运算其中至少有三个寄存器和一个算术逻辑单元(ALU)。
其中 ACC 为累加器,MQ 为乘商寄存器,X为操作数寄存器。
简要了解加减乘除的操作过程。
和书上一至。
[M]
表示地址M
中的内容[x]
表示X
寄存器中的内容[ACC]
表示AAC
寄存器中的内容。[MQ]
表示MQ
寄存器中的内容。
-
加法
[M] --> X [ACC] + [X] --> ACC
-
减法
[M] --> X [AAC] - [X] --> AAC
-
乘法
[M] --> MQ [ACC] --> X 0 --> AAC [x] × [MQ] --> AAC // MQ
-
除法
[M] --> X [AAC] ÷ [X] --> MQ
控制器
控制器的工作流程,可分为三个阶段。取址 – 分析 – 执行。
控制器通常由 程序计数器PC(Program Counter)、指令寄存器IR(Instruction Register)和 控制单元(CU) 组成。
还记得上面的执行过程吗?程序计数器存储的是当前执行的指令地址,每次操作完自动迭代+1,因为其存放的内容仅仅为地址,因此部件和MAR之间有一条直接的通路。
指令寄存器中通常存放的是当前的指令,IR 中的内容来自MDR。
IR会将其中的操作码送至 CU 中。
CU 会分析当前的指令并发出操作序列。
最后如下图所示的结构
❗[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nmaXxqMn-1648113540951)(第 1 章 计算机系统概论.assets/Untitled-2022-03-24-1529.svg)]
R之间有一条直接的通路。
指令寄存器中通常存放的是当前的指令,IR 中的内容来自MDR。
IR会将其中的操作码送至 CU 中。
CU 会分析当前的指令并发出操作序列。
最后如下图所示的结构