要想取指令,首先需要知道指令在内存中的位置,这就需要程序计数器PC
- 程序计数器PC:为了保证程序能够连续的执行下去,CPU必须具有某些手段来确定下一条指令的地址,PC正是起到这种作用。在程序开始之前,必须将它的起始地址,即程序的第一条指令所在的指存单元地址送入PC,PC的内容即是从指存提取的第一条指令的地址。当执行指令时,CPU会自动修改PC的内容,以便使其保持的总是将要指令的下一条指令的地址
简而言之,程序计数器PC里面保存着指令在内存中的地址,我们将这个地址取出来放到数据地址寄存器AR中,也就是流程图的第一个方块(PC)——>AR
这里需要注意一点容易被忽视的地方,是(PC)而不是PC,(PC)的意思是PC中的值,而不是指向PC本身。就比如A表示操作数地址,而(A)表示地址A中的数
- 数据地址寄存器AR:保存当前CPU所访问数据的内存单元地址
接下来要做的就是根据AR中的地址,找到内存中的指令,然后将其放到数据缓冲寄存器DR中
- 数据缓冲寄存器DR:用来暂时存放ALU的运算结果,或者由数据存储器读出的一个数据字,或者来自外部接口的一个数据字。也就是暂时存放CPU与外界传送的数据,可以是指令字或数据字。
这里也就完成了第二个方块中的内容(M)——>DR
最后将DR中的的指令放到指令寄存器IR中
- 指令寄存器IR:指令寄存器用来保存当前正在执行的一条指令。指令寄存器中操作码字段OP的输出就是指令译码器的输入&