计算机组成原理(二)

在这里插入图片描述

ACC(累加器):

用于存储高位部分

MQ(乘数-商寄存器):

用于存储低位部分。在除法中保存商,在乘法中保存乘数,所以也叫乘商寄存器

左移 8 位(相当于乘以 256)2^8
左移 16 位(相当于乘以 65536)2^16

加法:
被加数在ACC中,从内存单元取出加数放到X寄存器中,然后通过ALU运算器得出和,最后将和放到ACC累加器中

减法:
被减数在ACC中,从内存单元取出减数放到X寄存器中,然后通过ALU运算器得出差,最后将差放到ACC累加器中

乘法:
被乘数在ACC中,从内存单元取出乘数放到MQ寄存器中,将ACC中的被乘数传到X寄存器中,将0赋给ACC,然后通过ALU运算器得出乘积,乘积高位放到ACC中,乘积低位放到MQ中(这些先后操作顺序由控制器控制)

除法:
被除数在ACC中,从内存单元取出除数放到X寄存器中,然后通过ALU运算器得出商和余数,商保存在MQ中,余数保存在ACC累加器中

控制器

1、解释指令(从取址、到分析、取操作数、到真正的去执行指令、一直到保存结果)
2、保证指令的有序执行

PC和IR都是寄存器
PC(程序计数器)存储的是存储单元的地址。
在这里插入图片描述
(要完成取数指令,要先完成取指令,“取数”指令(即从内存中读取数据的指令))

取指令的过程:

1、程序计数器 PC 把指令地址传给 MAR:

程序计数器(PC)保存了下一条指令的地址。这个地址被传送到 MAR(Memory Address Register),即内存地址寄存器。

2、MAR 将指令地址传给存储体:

MAR 中的地址通过地址总线传输到存储体(内存),以便指定要访问的内存单元。

3、在控制器的控制下,存储体把指定存储单元中的指令取出,送入 MDR:

控制单元发送一个“读”信号到内存,指示内存读取 MAR 中指定地址的内容。
内存控制器在接收到读信号后,从指定的地址读取指令,并将该指令加载到 MDR(Memory Data Register)中。

4、MDR 将暂存的指令送入 IR:

MDR 中的指令通过数据总线传输到 IR(Instruction Register),即指令寄存器。

IR 保存当前正在执行的指令,取指令完成:

IR 接收到指令后,暂存该指令,并准备进行指令解码和执行。

分析指令的过程:(取数指令——主要是将内存单元中的数据M取到ACC寄存器中)

5、IR 中的操作码被发送到控制单元(CU),控制单元解码操作码以确定接下来要执行的操作。
6、IR 中包含的地址码(操作数的地址)被提取并送入 MAR 中,以便访问具体的数据。
7、MAR 中(操作数的)地址通过地址总线再次传输到存储体。
8、在控制器的控制下,从存储体当中,把取数指令要取的数取出,存入MDR
9、MDR 中的数据通过数据总线传输到累加器(ACC)寄存器中。
完成取数操作

存数指令

8、将 ACC 中的内容传输到 MDR:

在控制器的控制下,将累加器(ACC)中的数据传输到内存数据寄存器(MDR)。这个步骤确保了要存储的数据被准备好,并放置在将要写入内存的寄存器中。

9、将 MDR 中的数据保存到存储器中:

控制器指导存储体将内存数据寄存器(MDR)中的数据保存到内存中的指定位置。这个步骤实际上完成了将数据从 CPU 移动到内存的过程,数据现在已经存储在内存中的指定位置。

在这里插入图片描述
PC + 1:在当前指令周期结束后,PC 加一,指向下一条指令的地址。
这种自动加一的过程确保了程序能够按照顺序执行,除非在执行过程中出现了跳转或分支指令,否则程序会顺序执行每一条指令。

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值