先决条件—— 执行、阶段和吞吐量
每个指令周期中涉及的寄存器:
- 内存地址寄存器(MAR) :它连接到系统总线的地址线。它为读或写操作指定内存中的地址。
- 内存缓冲寄存器(MBR) :它连接到系统总线的数据线。它包含要存储在内存中的值或从内存中读取的最后一个值。
- 程序计数器(PC) :保存要获取的下一条指令的地址。
- 指令寄存器(IR) :保存最后获取的指令。
指令周期——
指令周期的每个阶段都可以分解为一系列基本的微操作。在上面的例子中,每个序列都有一个 获取、间接、执行和中断周期 .
这个 间接循环 总是跟在后面的是 执行周期 这个 中断周期 总是跟在后面的是 取回周期 。对于获取和执行周期,下一个周期取决于系统的状态。
我们假设一个新的2位寄存器叫做 指令周期代码 (国际商会)。ICC根据其所处周期的哪个部分来指定处理器的状态:-
00:取回周期 01:间接循环 10:执行周期 11:中断周期
在每个周期结束时,适当设置ICC。上述流程图 指令周期 描述微操作的完整序列,仅取决于指令序列和中断模式(这是一个简化示例)。处理器的操作被描述为一系列微操作的性能。
不同的指令周期:
- 取回周期—— 在提取周期开始时,要执行的下一条指令的地址位于 程序计数器 (PC)。
- 步骤1:程序计数器中的地址被移动到内存地址寄存器(MAR),因为这是唯一连接到系统总线地址线的寄存器。
- 步骤2:MAR中的地址放在地址总线上,现在控制单元在控制总线上发出读取命令,结果显示在数据总线上,然后复制到内存缓冲寄存器(MBR)中。程序计数器递增1,为下一条指令做好准备。(这两个动作可以同时执行以节省时间)
- 步骤3:将MBR的内容移动到指令寄存器(IR)。
- 因此,一个简单的 取回周期 由三个步骤和四个微操作组成。象征性地,我们可以把这些事件的顺序写如下:-
- 这里的“I”是指令长度。符号(t1、t2、t3)表示连续的时间单位。我们假设一个时钟可以用于计时目的,并且它会发出规则间隔的时钟脉冲。每个时钟脉冲定义一个时间单位。因此,所有时间单位的持续时间都是相等的。每个微操作都可以在单个时间单位内执行。 第一时间单位:将电脑内容移动到MAR。 第二时间单位:将MAR指定的内存位置的内容移动到MBR。增加个人电脑的内容。 第三时间单位:将MBR的内容移动到IR。 注: 第二次和第三次微操作都发生在第二个时间单位。
- 间接循环——
提取指令后,下一步是提取源操作数。 源操作数 正在通过间接寻址获取(可以通过任何 寻址方式 ,这里是通过间接寻址完成的)。不需要提取基于寄存器的操作数。一旦操作码被执行,可能需要一个类似的过程来将结果存储在主存中。下列的 微操作 发生在:-
- 步骤1:指令的地址字段被传输到MAR。这用于获取操作数的地址。 步骤2:从MBR更新IR的地址字段。(因此它现在包含直接寻址而不是间接寻址) 步骤3:IR现在处于状态,好像没有发生间接寻址。
注: 现在,IR已经准备好执行循环,但是它跳过这个循环考虑一段时间。 中断周期 .
- 执行周期
其他三个周期( 获取、间接和中断 )简单且可预测。它们都需要简单、小而固定的微操作序列。在每种情况下,每次都重复相同的微操作。 执行周期与它们不同。比如,对于一台有N个不同操作码的机器,可能会发生N个不同的微操作序列。 让我们举一个假设的例子:- 考虑添加指令:
- 在此,该指令将位置X的内容添加到寄存器R中。相应的微操作为:-
- 我们从包含ADD指令的IR开始。 步骤1:IR的地址部分加载到MAR中。 第2步:从MBR更新IR的地址字段,从而读取参考内存位置。 步骤3:现在,由ALU添加R和MBR的内容。
让我们举一个复杂的例子:-
- 这里,位置X的内容增加1。如果结果为0,将跳过下一条指令。相应的微操作顺序为:-
- 这里,如果(MBR)=0,则PC增加。该测试(MBR是否等于零)和操作(PC增加1)可以作为一个微操作执行。 笔记 :此测试和动作微操作可在更新值MBR存储回内存的同一时间单元内执行。
- 中断周期 : 在执行周期结束时,进行测试以确定是否发生了任何启用的中断。如果发生了已启用的中断,则会发生中断周期。这种循环的性质因机器而异。 让我们进行一系列微操作:-
- 第一步:PC的内容被传输到MBR,这样它们就可以被保存以供返回。 第2步:MAR将加载电脑内容的保存地址。 PC机加载了中断处理程序的开始地址。 步骤3:MBR包含PC的旧值,存储在内存中。
注: 在步骤2中,两个动作作为一个微操作执行。然而,大多数处理器提供多种类型的中断,可能需要一个或多个微操作才能获得save_地址和例程_地址,然后才能分别传输到MAR和PC。