Abstract:此篇文章讲述的是计算机存储器、控制器、运算器的基本结构组成以及指令的具体执行顺序。 CPU包括运算器和控制器, 而主机主要包括CPU和存储器。
内容参考于:哈工大计算机组成原理(刘宏伟)
存储器的基本组成:
如下图所示: 主存由存储体、MAR和MDR组成。
先来看几个概念
存储单元:存储数据的具体单位是存储单元,字节是目前计算机最基本的存储单位。 来自于什么是计算机的存储单元, 存储体由许多存储单元组成。每一个存储单元赋一个地址。可以按地址寻访。
存储字:存储单元中二进制代码组合。
存储字长:存储单元中二进制代码的位数。
MAR:存储器地址寄存器 - 保存存储单元地址。 MAR的位数与存储单元的个数相关。
MDR:存储器数据寄存器 - 反映存储字长。里面存储的数据来自三方面: 1、准备送往CPU的数据。 2、准备存入存储器的数据。 3、刚才存储体中取出来的数据。
例如:MAR = 4, MDR = 8. 说明存储单元个数为16个, 存储字长为 8.
运算器
由上图很容易可以看出运算器的组成结构是:ALU(算数逻辑单元运算器)和三个寄存器。
其中ALU是一个组合电路, 特点是当输入数据撤销时, 输出也会跟着撤销;所以要在前面加相应的寄存器(ACC和X(数据寄存器))用来存储输入数据,即参与运算的值。
同时ACC也用于保存运算结果。 但是由于乘法操作的输出字长为输入字长的两倍;所以需要增加一个MQ寄存器来存放多余的数据。
下图是进行四则运算时各个寄存器的值
下面是具体实现过程:
1, 加法操作过程:
此时的指令为:
, 操作码是:加; 地址码是M。
首先在内存中取被加数于ACC中, 然后是执行加法指令。 从存储器之中取地址为M的数放在寄存器X中, 然后在ALU的操作下将ACC和X寄存器里面的值相加并将
结果放在ACC里面。
2, 减法操作过程:
此时指令为:
。
这个过程和加法差不多, 就不啰嗦了。
3, 乘法操作过程:
此时指令为:
。
首先在内存中取被乘数的值放入寄存器ACC中, 然后在内存中取 M地址对应的值放在X中, 然后将ACC寄存器里面的值放在寄存器X里面; 再将0放入ACC中(清
零)。 最后将寄存器 X 和 MQ 寄存器里面的值相乘结果的高位放在 ACC 中, 低位放在 MQ 中。这里要注意一点:计算机里面的乘法是通过累加和移位来实现的;
并不能直接实相乘。
4, 除法操作过程:
此时指令为:
。
首先在内存中取被乘数的值放入寄存器ACC中, 然后取地址为 M 的值放在 X 寄存器之中。 然后将 ACC 寄存器和 X 寄存器里面的值相除放在 MQ 寄存器之中。
注意:以上操作都是在控制器的控制下进行的。
控制器的基本结构:
控制器的功能是:解释执行; 保证指令有序执行。
完成一条指令一般包含三部分: 取指令; 分析指令; 执行指令。
取指令需要PC寄存器, PC寄存器的作用是存放当前欲执行指令的地址; 并且具有计数功能:PC + 1 = PC。 其中 1 是由具体机器决定的。 一般指令都是放一块的。
分析指令:将操作码给需要控制单元。
执行指令:由控制单元控制执行这条指令所需要的单元; 主要是CU控制。
下面具体说明一条指令的执行过程:取数指令为例
取值:首先指令地址是在PC中, 然后送入MAR中, 在控制器的作用下将MAR中指令地址下的那条指令取出来放在MDR中。 接着再送到IR中(IR的作用就是存储当前指令)
分析指令:将指令的操作码部分送给CU(上图中序号为5的箭头方向反了), 经过译码之后, 在CU上面会有很多信号, 然后由这些信号控制执行这个操作所需要的部件。
执行指令:因为是取数指令, 执行时就是在内存中取一个数到ACC中。 在控制器的控制下, 将取数指令的地址码送到MAR中, 然后从内存中取出该地址下的数据到MDR,
最后送到ACC中。 到此这条指令结束。
~ END ~