来看例题
图中所示为双总线结构机器的数据通路,各构成部件如图,线上标注有小圈表示有控制信号,未标字符的线为直通线。
“ADD R2,R0”指令完成(R0)+(R2)→R0的功能操作,画出其指令周期流程图,并列出相应的微操作控制信号序列
将ADD指令的执行过程用方框图语言来表示就是
首先来看取指周期,也就是取指令的过程
要想取指令,首先需要知道指令在内存中的位置,这就需要程序计数器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的输出就是指令译码器的输入,操作码一经译码后,即可向操作控制器发出具体操作的特定信号。
到这里完成了第三个方框中的内容(DR)——>IR
取指周期到这里就结束了
然后是执行周期
从寄存器R2中取出数据,放到ALU的操作数缓冲器Y中
也就是第四个方框中的(R2)——>Y
同理从寄存器R1中取出数据,放到X中
完成第五个方框中的(R0)——>X
最后在ALU中完成加法操作,第六个方框的(R0)+(R2)——>R0
加上图中的菱形符号,和图最后的“~”公操作符号,流程图结束