周期是获取并执行指令的时间。一般由几个机器周期组成,也就是从取指令、分析指令到执行完成的全部时间。
指令周期类型包括非访存指令的指令周期、取指令的指令周期、存指令的指令周期、空操作指令的指令周期和分支指令的指令周期。
不同的指令需要不同的机器周期数。对于一些简单的单字节指令,在取指令周期中,指令取入指令寄存器后,立即解码执行,不需要其他机器周期。对于一些复杂的指令,如分支指令和乘法指令,需要两个或更多的机器周期。
从指令的执行速度来看,单字节和双字节指令一般是单机周期和双机周期,而三字节指令是双机周期,仅乘除指令就占用四个机器周期。
所以编程时,在完成同样工作的情况下,选择占用机器周期少的命令,会提高程序的执行率,尤其是在编写大型程序时,效果更明显。
指令周期的四个阶段是非访问指令的指令周期。
CLA是非访存指令,需要两个CPU周期,其中取指令阶段一个CPU周期,指令执行阶段一个CPU周期。
1、取指令阶段
(1)程序计数器PC的内容20(八进制)被装入地址寄存器ar;
(2)程序计数器的内容加1变成21,为下一条指令做准备;
(3)地址寄存器的内容被放在地址总线上;
(4)所选存储单元20的内容通过数据总线传送到数据缓冲寄存器DR;
(5)缓冲寄存器的内容被传送到指令寄存器IR;
(6)解码或测试指令寄存器中的操作码;
(7)7)CPU识别出是指令CLA,至此,取指令阶段结束。
2、执行指令阶段
(1)运算控制器向算术逻辑单元ALU发送控制信号;
(2)响应于控制信号,2)ALU清除累加寄存器AC的所有内容,从而执行CLA指令。
取指令1的指令周期。发送操作数地址
第二个CPU周期主要完成发送操作数地址。在这个阶段,CPU只有一个动作,就是将指令寄存器中的地址码部分(30)加载到地址寄存器中,其中30是存储在内存中的操作数的地址。
2.添加两个操作数。
在第三个CPU周期,取出操作数并执行加法运算。在此阶段,CPU完成以下操作:
(1)将地址寄存器中操作数的地址发送到地址总线。
(2)从存储单元30中读出操作数,并通过数据总线传送到缓冲寄存器。
(3)执行加法运算:可以将来自数据缓冲寄存器的操作数送到ALU的一个输入端,将一直在累加器中等待的另一个操作数(因为执行CLA指令后累加器内容为零)送到ALU的另一个输入端,这样ALU将两个数相加,得到的运算结果为0.6=6。这个结果被放回到累加器中,替换累加器中的原始数字0。
存储器指令STA指令的指令周期由三个CPU周期组成。
1.发送操作数地址
在执行阶段的第一个CPU周期中,CPU完成将指令寄存器中的地址码部分的形式地址40加载到地址寄存器中的动作。其中数字40是操作数地址。
2.存储和计数
在执行阶段的第二个CPU周期中,累加寄存器的内容被传送到缓冲寄存器,然后存储在选定的存储单元(40)中。CPU完成以下动作:
(1)累加器的内容被传送到数据缓冲寄存器dr;
(2)向地址总线发送地址寄存器的内容,即要存储的数据6的存储单元号;
(3)将缓冲寄存器的内容发送到数据总线;
(4)将数据总线上的数字写入选定的存储单元,即将数字6写入存储单元40。注意,在这个操作之后,和数6仍然保留在累加器中,而
空操作指令和分支指令的指令周期中的第四条指令是“NOP”指令,这是一条空操作指令。在第一个CPU周期中,CPU获取单元23的“NOP”指令并将其放入指令寄存器,然后在第二个CPU周期中执行它。因为解码器解释“NOP”指令,所以操作控制器在第二个CPU周期不发送任何控制信号。NOP指令可用于调试。
1.第一个CPU周期(取指令阶段)
取出CPU单元24的“JMP 21”指令放入指令寄存器,同时在程序计数器的内容上加1变成25,为下一条指令做好准备。
2.第二个CPU周期(执行阶段)
CPU的指令寄存器中的地址码部分21被发送到程序计数器,从而用新内容21替换PC的原始内容25。这样,下一条指令就不会从单元25读取,而是从内存中的单元21读取并执行,从而改变了程序原来的执行顺序。
注意,当执行“JMP 21”指令时,由这里给出的四条指令组成的程序进入无限循环。除非人工停止,否则该程序将无休止地运行,因此存储单元40中的和将总是变化的。当然,这里所说的分支地址21是任意的,只是为了说明分支指令可以改变程序的执行顺序。
标签:指令周期CPU