计算机执行指令

1.示例

指令格式:ADD R0,[6]

指令功能:

ADD这是一条加法指令

通用寄存器R0的内容+地址为6存储单元的内容=运算结果(更新到R0)

2.过程

R0里面数为00000011十进制为3

地址为0110(6)存储单元内容为00000010十进制为2

也就是计算3+2=5并且把运算结果返回到R0

2.1取指

①控制器将指令的地址送往存储器。

②存储器按给定地址独处指令内容,送回控制器。

上图具体步骤

1.控制器发出控制信号将PC寄存器里面的地址通过内部总线传送到MAR寄存器里

2.MAR寄存器将地址送到地址总线上,与此同时控制电路会在控制总线上发出控制信号,并表示这次访问

存储器是读取数据。

3.存储器的MAR寄存器收到地址总线上的地址,并将其保存下来,存储器里面的控制逻辑也会收到

控制总线过来的控制信号,得知这次操作是读操作。

4.存储器通过地址译码器对应地址0001存储单元内容,并将该存储单元内容送到MDR寄存器中。

存储器的控制逻辑会通过控制总线向cpu反馈当前的传输已经主备好了。

5.同时MDR里面内容也送到数据总线上,随后,cpu控制电路检测到来自控制总线准备好Ready信号,得知

数据总线上准备好了数据。

6.因此cpu中的MDR寄存器将当前数据总线上传送来的数值保存下来,这就获得了我们要取的指令。

7.cpu中MDR寄存器的内容要传送到IR指令寄存器中,当指令进入IR中,取指这部分算是完成了吗?

8.PC寄存器更新为下一条指令的地址。0001变为0010,取指阶段到此完成

2.2译码

①控制器分析指令的操作性质

②控制器向有关部件发出指令所需控制信号

上图具体步骤

1.当前IR指令寄存器中的指令编码送到指令译码部件。

2.指令译码部件根据指令编码很快会发现这是一条加法指令,而且是吧R0

和存储器地址为6的单元内容相加,把结果存入R0中。控制电路据此产生控制信号发到相关部件中

译码阶段到此完成。

译码得到的指令:ADD R0,[6]

2.3执行

①控制器从通用寄存器或存储器取出操作数

②控制器命令运算器对操作数进行指令规定的运算

上图具体步骤

1.根据这条指令需要去取操作数,其中一个操作数在存储器中地址为6的单元,因此在MAR寄存器中放入要取的操作数地址0110(十进制的6)。

2.MAR寄存器将地址发送到地址总线,同时控制电路发送读取的信号到控制总线,存储器的控制逻辑和MRA寄存器会接收到相应的信号,然后

查找到对应地址0110里面的内容00000010,送到MDR寄存器,存储器控制逻辑向cpu反馈当前数据已经准备好的信号,MDR内容会被放到

地址总线上,cpu接收数据并放在MDR寄存器中。

3.cpu里面MDR寄存器数据要参与加法运算,cpu控制器会将MDR寄存器数据通过内部总线传送到ALU的输入Y寄存器中,这一个操作数已经准备好了。另一个操作数存放在R0寄存器中,因此控制器会将R0里面数据通过内部总线传送到ALU另一个输入端X寄存器。

4.现在两个操作数R0和6已经准备好了,在控制电路的控制下ALU就会进行运算将X和Y寄存器里面的内容进行加法运算。结果是00000101(十进制5)

到此执行阶段就结束了。

2.4回写

①将运算结果写入通用寄存器或存储器

1.现在运算结果还在ALU的输出端Z寄存器,控制电路会给出相应控制信号,将z寄存器内容传送到

R0寄存器中,R0里面原来的数据会被新的结果覆盖。这个加法运算的结果就保存到R0寄存器中

回写阶段到此完成。

3.CPU就会执行下一条指令

原文地址:https://www.cnblogs.com/cui0x01/p/6348083.html