计算机组成原理(二)

指令格式举例


[]的意思为取出内存地址中对应的值

存储器的基本组成

指令和数据都是保存在存储器中的


存储体 ― 存储单元 – 存储元件 (0/1)
大楼 – 房间 - 床位 (无人/有人)

存储单元:存放一串二进制代码
存储字: 存储单元中二进制代码的组合
存储字长:存储单元中二进制代码的位置

按地址寻访

MAR(Memory Address Register):存储器地址寄存器,反映存储单元的个数
MDR(Memory Data Register):存储器数据寄存器,反映存储字长

再用个例子来说明下:
比如有32个存储单元,而存储单元的地址是用二进制来表示的,那么5位二进制数就可以32个存储单元。那么,MAR的位数就是5位。
在实际运用中,我们 知道了MAR的位数,存储单元的个数也可以知道了。

MDR 存放的是从存储元件读出,或者要写入某存储元件的数据(二进制数)。
如果 MDR=16,,每个存储单元进行访问的时候,数据是16位,那么存储字长就是16位。

运算器的基本组成及操作过程

ACC(Accumulator): 累加器,运算器中运算前存放操作数、运算后存放运算结果的寄存器;
ALU (Arithmetic and Logic Unit): 算术逻辑运算单元,运算器中完成算术逻辑运算的逻辑部件;
MQ (Multiplier-Quotient Register):乘商寄存器,乘法运算时存放乘数、除法时存放商的寄存器
X: 此字母没有专指的缩写含义,可以用作任一部件名,在此表示操作数寄存器,即运算器中工作寄存器之一,用来存放操作数;
参考:https://blog.csdn.net/qq_42712280/article/details/104969936

ACC MQ X
加法 被加数,和 加数
减法 被减数,差 减数
乘法 乘积高位 乘数,乘积低位 被乘数
除法 被除数,余数 除数

加法操作过程


加法操作指令由累加操作码和被加数的地址M构成

首先在加法操作之前,ACC 中已经保存了另一个加数,或者说之前运算得到的结果

加法操作其实是一个累加指令,即对 ACC 中已有的结果,累加地址M处的数据

执行加法操作时,将存储器地址为 M 处的数据取出放入 X寄存器 中,随后 ALU 执行加法操作将 ACC 和 X寄存器 中的数据累加,结果覆盖放入 ACC 中

减法操作过程


减法操作指令由累减操作码和被减数地址M组成

和加法操作一样,减法操作也是一个累减指令,即对ACC中已有的结果累减地址M处的数据

乘法操作过程


乘法操作由累乘操作码和乘数的地址M组成

乘法操作也是一个累乘过程,对ACC中已有的结果,累乘地址M处的数据

乘法操作是通过移位和累加完成的,累加保存结果的操作需要通过ACC实现,真正开始乘法之前,我们会将乘数读取到MQ中,之后将ACC中的已有结果给到X中,再对ACC清0(累加初始化)

并且由于积的位数会比乘数长,因而我们还需要MQ辅助保存乘积的低位结果

除法操作过程


除法操作由累除操作码和被除数的地址M组成

除法操作也是一个累除过程,对ACC中已有的结果,累除地址M处的数据

除法操作是通过位移和减法实现的,ACC中已有的结果作为被除数,除数被读取到X中,此时就需要MQ来保存商,我们会逐位试减决定每位上0或是上1,从而组合出商的结果,ACC中的被除数则会被累减变为余数

posted @ 2021-04-08 16:30  klvchen  阅读(154)  评论(0编辑  收藏  举报