Abstract:此篇文章讲述的是计算机存储器、控制器、运算器的基本结构组成以及指令的具体执行顺序。  CPU包括运算器和控制器, 而主机主要包括CPU和存储器。

内容参考于:哈工大计算机组成原理(刘宏伟)


存储器的基本组成:

如下图所示: 主存由存储体、MAR和MDR组成。

存储 控制器架构设计 控制存储器的结构_数据

先来看几个概念

存储单元:存储数据的具体单位是存储单元,字节是目前计算机最基本的存储单位。 来自于什么是计算机的存储单元, 存储体由许多存储单元组成。每一个存储单元赋一个地址。可以按地址寻访。

存储字:存储单元中二进制代码组合。

存储字长:存储单元中二进制代码的位数。

MAR:存储器地址寄存器 - 保存存储单元地址。  MAR的位数与存储单元的个数相关。

MDR:存储器数据寄存器 - 反映存储字长。里面存储的数据来自三方面: 1、准备送往CPU的数据。 2、准备存入存储器的数据。 3、刚才存储体中取出来的数据。

例如:MAR = 4, MDR = 8. 说明存储单元个数为16个, 存储字长为 8.

运算器

存储 控制器架构设计 控制存储器的结构_数据_02

由上图很容易可以看出运算器的组成结构是:ALU(算数逻辑单元运算器)和三个寄存器。

其中ALU是一个组合电路, 特点是当输入数据撤销时, 输出也会跟着撤销;所以要在前面加相应的寄存器(ACC和X(数据寄存器))用来存储输入数据,即参与运算的值。

同时ACC也用于保存运算结果。 但是由于乘法操作的输出字长为输入字长的两倍;所以需要增加一个MQ寄存器来存放多余的数据。


下图是进行四则运算时各个寄存器的值

存储 控制器架构设计 控制存储器的结构_存储单元_03

下面是具体实现过程:

1, 加法操作过程:

此时的指令为:

存储 控制器架构设计 控制存储器的结构_寄存器_04

, 操作码是:加; 地址码是M。

首先在内存中取被加数于ACC中, 然后是执行加法指令。 从存储器之中取地址为M的数放在寄存器X中, 然后在ALU的操作下将ACC和X寄存器里面的值相加并将

结果放在ACC里面。

2, 减法操作过程:

此时指令为:

存储 控制器架构设计 控制存储器的结构_寄存器_05


这个过程和加法差不多, 就不啰嗦了。

3, 乘法操作过程:

此时指令为:

存储 控制器架构设计 控制存储器的结构_寄存器_06


首先在内存中取被乘数的值放入寄存器ACC中, 然后在内存中取 M地址对应的值放在X中, 然后将ACC寄存器里面的值放在寄存器X里面; 再将0放入ACC中(清

零)。 最后将寄存器 X 和 MQ 寄存器里面的值相乘结果的高位放在 ACC 中, 低位放在 MQ 中。这里要注意一点:计算机里面的乘法是通过累加和移位来实现的;

并不能直接实相乘。

4, 除法操作过程:

此时指令为:

存储 控制器架构设计 控制存储器的结构_数据_07


首先在内存中取被乘数的值放入寄存器ACC中, 然后取地址为 M 的值放在 X 寄存器之中。 然后将 ACC 寄存器和 X 寄存器里面的值相除放在 MQ 寄存器之中。

注意:以上操作都是在控制器的控制下进行的。

控制器的基本结构:

控制器的功能是:解释执行; 保证指令有序执行。

完成一条指令一般包含三部分: 取指令; 分析指令; 执行指令。

取指令需要PC寄存器, PC寄存器的作用是存放当前欲执行指令的地址; 并且具有计数功能:PC + 1 = PC。 其中 1 是由具体机器决定的。 一般指令都是放一块的。

分析指令:将操作码给需要控制单元。

执行指令:由控制单元控制执行这条指令所需要的单元; 主要是CU控制。


下面具体说明一条指令的执行过程:取数指令为例

存储 控制器架构设计 控制存储器的结构_存储单元_08

取值:首先指令地址是在PC中, 然后送入MAR中, 在控制器的作用下将MAR中指令地址下的那条指令取出来放在MDR中。 接着再送到IR中(IR的作用就是存储当前指令)

分析指令:将指令的操作码部分送给CU(上图中序号为5的箭头方向反了), 经过译码之后, 在CU上面会有很多信号, 然后由这些信号控制执行这个操作所需要的部件。

执行指令:因为是取数指令, 执行时就是在内存中取一个数到ACC中。 在控制器的控制下, 将取数指令的地址码送到MAR中, 然后从内存中取出该地址下的数据到MDR,

最后送到ACC中。 到此这条指令结束。

~ END ~