5.2 指令周期

本文详细解析了计算机指令周期,包括取指、执行、不同类型的指令(如非访内、直接访内、间接访内和程序控制)及其对应周期,以及如何通过方框图表示。重点介绍了Z-80微型机中的实例和CPU内部操作过程,强调了指令周期在提升系统性能中的关键作用。
摘要由CSDN通过智能技术生成

5.2 指令周期

一、指令周期的基本概念

在计算机系统中,指令和数据均存放在内存中,它们的形式是二进制代码。对于人类而言,这些代码是否代表指令或数据可能难以直观识别,但中央处理器(CPU)具有识别这些二进制代码的能力。CPU不仅能区分哪些是指令字,哪些是数据字,还会将它们送往应处理的目标位置。本节中,我们将探讨在典型的指令周期中,CPU的各个部分如何协同工作,以加深我们对这一过程的理解。

1. 指令周期的定义

计算机的自动化工作依赖于CPU能够从存放程序的内存中取出指令并执行。这个从取指到执行的过程不断重复,形成了一个闭环的循环。这个循环会一直持续,除非遇到停机指令。每当CPU取出并执行一条指令,它都需要完成一系列操作,这个完成一条指令所需的时间被称为“指令周期”。简单地说,指令周期是从取出到执行一条指令所需的时间。

2. 指令周期的组成

由于不同的指令具有不同的操作复杂度,因此它们的指令周期也不相同。例如,访问内存的指令周期与非访问内存的指令周期就不同。通常,指令周期可以用若干个CPU周期来表示,而CPU周期也称为机器周期。CPU内部操作的速度远快于访问内存的速度,因此通常以读取内存中一个指令字的最短时间来定义一个CPU周期。

3. CPU周期与时钟周期

一个CPU周期通常包含多个时钟周期(也称为T周期,是处理操作的基本单位)。这些时钟周期的总和决定了一个CPU周期的时间宽度。例如,在Z-80微型机中,第一个CPU周期(取指周期)包含5个时钟周期,用于从内存取指令和CPU内部操作。

4. 不同长度的CPU周期

为了提高时间效率,许多机器采用了不定长的CPU周期。在执行阶段,可以跳过某些时钟周期,从而缩短指令周期。这种方法特别适用于执行阶段不需要访问内存的零地址指令。

5. 指令周期的实例分析

表5.1展示了一个由四条指令组成的简单程序,这些指令被有意安排来展示典型的指令周期。我们将通过CPU执行这个程序的过程,即通过分解每一条指令的取指阶段与执行阶段,来具体了解每一条指令的指令周期。

通过以上讨论,我们可以看到,指令周期是构成CPU操作的基本单位,它直接影响了计算机的执行效率和处理能力。理解并优化指令周期,对于提高计算机系统的整体性能有着重要意义。

二、非访内指令的指令周期

1. 取指令阶段

如图5.5所示,在取指令阶段,CPU完成以下步骤:

  1. 指令获取:程序计数器(PC)的内容被送入地址寄存器(AR),并且该内容指向内存中将要被执行的指令。
  2. 计数器递增:PC内容加1,为获取下一条指令做准备。
  3. 地址传输:AR的内容被放到地址总线上,选中对应的内存单元。
  4. 数据传输:选定的内存单元内容通过数据总线传输到数据缓冲寄存器(DR)。

这个阶段结束时,CPU已经准备好执行指令的操作码。

2. 执行指令阶段

如图5.6所示,在执行指令阶段,CPU按照取指令阶段中获取的操作码进行操作:

  1. 操作控制:操作控制器向算术逻辑单元(ALU)发送控制信号。
  2. 执行操作:ALU根据接收到的控制信号,执行相应的操作。对于CLA指令来说,这意味着清除累加器(AC)的内容。

这一阶段完成后,CLA指令的执行便告结束,CPU会继续取出下一条指令,并重复上述的周期。

以上就是非访内指令CLA的指令周期过程,展示了CPU如何取出并执行一条指令。这个过程是计算机运行任何程序的基本机制。每种指令的具体执行细节可能不同,但它们都遵循类似的基本指令周期结构。

 

三、直接访内指令的指令周期

直接访内指令,比如表5.1中的ADD指令,其指令周期比非访内指令复杂,因为它涉及到内存中数据的直接操作。ADD指令的指令周期通常由三个CPU周期组成,分别是:

  1. 取指令阶段:与CLA指令一致,完成指令的获取和准备工作。
  2. 送操作数地址阶段:将操作数的内存地址从指令寄存器送到地址寄存器。
  3. 取操作数并执行加法操作阶段:从内存获取操作数,并在ALU中执行加法运算。

1. 送操作数地址

在第二个CPU周期,CPU的主要任务是把指令寄存器中的地址码(操作数地址)送入地址寄存器。在您提供的图中,这一地址码是30,表示操作数存放在内存中的地址。

2. 取操作数相加

在第三个CPU周期,CPU完成以下操作:

  1. 操作数地址传输:将地址寄存器中的操作数地址送到地址总线。
  2. 操作数获取:从内存地址读出操作数,通过数据总线传送到数据缓冲寄存器。
  3. 加法执行:将数据缓冲寄存器中的操作数送到ALU的一个输入端,同时累加器中的操作数(由于CLA指令,此时累加器内容为零)送到另一个输入端。ALU执行两个操作数的加法运算,产生的结果(0+6=6)将被送回累加器,替代原来的内容。

以上步骤完成后,ADD指令的执行便完成了,累加器中的内容更新为运算结果。随后,CPU会进入下一个指令周期,取出并准备执行下一条指令。直接访内指令的指令周期包含对内存的访问,因此

 

四、间接访内指令的指令周期

间接访内指令“STA 131”涉及多个步骤,其指令周期由四个CPU周期组成,每个阶段的关键动作如下:

1. 地址指示器阶段

在执行阶段的第一个CPU周期,CPU执行的动作包括:

  • 将指令寄存器中的形式地址(此例中为31,即操作数地址的地址或指示器)装入地址寄存器。

数据通路与直接访内指令的送操作数地址阶段相同,不同之处在于,31号单元存储的不是操作数而是操作数的真实地址。

2. 取操作数地址阶段

在第二个CPU周期,CPU完成以下动作:

  • 将地址寄存器的内容(即操作数地址的地址,31)发送到地址总线上。
  • 从存储单元31读出操作数的真实地址(40),并将这个地址装入地址寄存器。

这个阶段结束时,操作数的真实地址(40)已经被加载到地址寄存器中,为接下来的操作做准备。

3. 存储和数阶段

在执行阶段的第三个CPU周期,CPU完成以下动作:

  • 累加器中的内容(比如前面例子中的数6)被传送到数据缓冲寄存器(DR)。
  • 将地址寄存器的内容(即操作数的真实地址,40)发送到地址总线上。
  • 将数据缓冲寄存器的内容(数6)发送到数据总线上,并写入所指定的存储单元(40号单元)。

这一系列动作完成之后,40号单元的内容更新为6,而累加器中的内容(和数6)保持不变。

间接访内指令的指令周期通过额外的内存读取步骤来确定操作数的真实位置,这使得其执行周期比直接访内指令更长。这一机制允许CPU执行更复杂的内存访问操作,例如结构体或数组元素的寻址。通过这种方式,指令可以以较小的操作码空间访问更大的地址空间,从而提高编程的灵活性和内存的利用效率。

 

五、程序控制指令的指令周期

对于程序控制指令“JMP 21”,其指令周期由两个CPU周期组成:

1. 取指令阶段

在第一个CPU周期,CPU执行以下动作:

  • 从程序计数器指向的内存单元(在此例中为23号单元)取出“JMP 21”指令。
  • 将程序计数器(PC)的内容增加1,预备取下一条指令。

2. 执行阶段

在第二个CPU周期,执行以下动作:

  • 将指令寄存器中的地址码(在此例中为21)传送至程序计数器PC。
  • 用新的地址码(21)替换PC中原先的内容(24),指定下一条指令将从内存单元21开始读取并执行。

这样,程序的执行顺序被改变,控制流转移到内存中21号单元指示的指令。

图5.13和图5.14提供了JMP指令执行阶段的数据通路图。当执行到JMP指令时,如果后面没有其他控制指令改变程序流程,则程序会进入到一个无限循环中。在本例中,由于转移地址设定为21,程序将不断循环执行从内存地址21开始的指令序列,除非有外部干预停止程序。

程序控制指令如JMP是非常关键的,因为它们使得程序能够根据条件跳转到不同的执行路径,使程序具备决策能力并响应不同的运行时情况。这是构成循环、条件执行和程序逻辑流控制的基础。

六、用方框图语言表示指令周期

在计算机设计和文档中,方框图是一种流行的方法来表述指令周期。它可以清晰地描述在不同阶段CPU需要执行的操作,包括数据通路操作和控制操作。在方框图中:

  • 方框(矩形) 表示一个CPU周期,并且描述在这个周期内发生的操作。
  • 菱形符号 表示判断或测试,通常与前面的方框关联,并不占用单独的CPU周期。

在图5.15中,指令周期被归纳为以下几类:

  • 取指令阶段 对所有指令来说都是相同的,并且占用一个CPU周期。
  • 执行阶段 根据指令的不同功能使用不同数量的CPU周期:
    • CLA 指令使用一个CPU周期。
    • JMP 指令可以使用一个CPU周期(直接寻址)或两个CPU周期(间接寻址)。
    • ADDSTA 指令在直接访问时使用两个CPU周期,在间接访问时使用三个CPU周期。

方框图还包括数据总线(DBUS)和地址总线(ABUS),以及内存读(RI)和写(WE)命令。此外,还有指令是否为间接寻址的标志位(I),以及公操作符号,表示CPU将进行下一个操作,比如处理中断或通道管理。

方框图提供了一个通用的表示法,使我们能够以标准化的方式理解和比较不同指令的指令周期。通过这种方式,可以简化计算机指令集的设计和优化,并有助于硬件设计师和软件开发者之间的沟通。

最后一个部分提出了两个例子,并要求以方框图的形式表示出“ADD R₂,R₃”和“SUB R₁,R₂”指令的指令周期流程图,并列出相应的微操作控制信号序列。这些示例强调了在具体的计算机架构和设计中应用方框图语言的实际情形。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏驰和徐策

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值