CPU中的指令周期:如何获取,解码和执行工作

CPU中的指令周期
真是太棒了 中央处理器 只是执行位于内存中的程序的指令。 但是,您知道它们都遵循相同的一般规则吗? 它们都遵循相同的指令周期,分为三个不同的阶段,分别称为“获取”,“解码”和“执行”,将其翻译为“获取”,“解码”和“执行”。 我们将解释这些阶段如何工作以及如何组织。

为了简化和使本文中解释的概念更容易理解,我们决定描述一种当前时间非常简单的处理器,因此在本文中,您将以通用的方式来解释什么指令周期是可以应用的。从最初的8位处理器到当今最复杂的处理器

可视化指令周期

CicloInstrucciónUnidad Control

从某种角度来说,处理器与内燃机没有什么不同,内燃机始终在不同阶段执行连续的燃料爆炸过程,无论是2冲程还是4冲程。 这样做的原因是,处理器在其最简单的版本中可以分为三个不同的阶段工作:

  • 获取或捕获: 从RAM中捕获指令并将其复制到处理器中。
  • 解码或解码: 其中先前捕获的指令被解码并发送到执行单元
  • 执行: 解析指令并将结果写入处理器的内部寄存器或RAM的存储器地址的位置

每个处理器都完成了这三个阶段。 第四个阶段是Write-Back,这是执行单元将结果写入的时间,但这通常在指令周期的执行阶段进行计数。

指令周期的第一阶段:获取

提取过程

指令周期的第一阶段负责捕获指令中的指令。 内存 通过以下一系列单元和寄存器分配给处理器的内存:

  1. 程序计数器或程序计数器: 它指向下一条处理器指令所在的下一条存储线。 每次完成一个完整的指令周期或当一条跳转指令更改程序计数器的值时,其值就会增加1。
  2. 内存地址寄存器: MAR复制PC的内容,然后通过CPU的寻址引脚将其发送到RAM,该寻址引脚与RAM本身的寻址引脚相连。
  3. 内存数据寄存器或内存数据寄存器 :如果CPU必须执行内存读取,则MDR所做的是将内存地址的内容复制到CPU的内部寄存器,该寄存器是一个临时通过寄存器,然后将其内容复制到指令寄存器。 MDR与MAR不同,它连接到RAM的数据引脚而不是寻址引脚,并且在写指令的情况下,要写入RAM的内容也写在MDR中
  4. 指令寄存器: 提取阶段的最后一部分是将指令写入指令寄存器,处理器控制单元将从中复制指令周期第二阶段的内容。

这4个子阶段出现在所有处理器中,无论它们的实用程序,体系结构和二进制兼容性如何,或者我们称之为ISA。

控制单元

控制单元

控制单元是处理器中存在的最复杂的部分,其任务如下:

  • 他们负责协调处理器内部和外部的数据移动和顺序,以及负责该处理器的不同子单元。
  • 通常,认为捕获级或Fetch的单元是我们称为控制单元的硬件的一部分,并且该硬件也称为处理器的前端。
  • 它解释指令并将它们发送到与其连接的不同执行单元。
  • 它被传达给不同的处理器的执行单元和执行单元
  • 它负责捕获和解码指令,还负责将结果写入寄存器,高速缓存或RAM的相应地址中。

操作码模式地址

控制单元所做的是对指令进行解码,并且这样做是因为每个指令实际上都是一种句子,在该句子中,动词首先出现,然后是直接对象或要对其执行操作的对象。 该主题最终被计算机的这种内部语言所淘汰,原因是可以理解,是计算机本身执行该事实,所以每个位数都是一个句子,其中前1和0对应于动作,而接下来是数据或要处理的数据的位置。

第二阶段:解码

癸二烯酮

指令的类型不同,而且并非所有指令都一样,因此,根据指令的类型,我们需要知道将向哪个执行单元发送指令,最经典的执行方式是通过我们称为解码器的指令,它接受每条指令,根据操作码或指令以及其所在的数据或存储器地址在内部对其进行划分。

例如,在上图中,我们有一个只有8条指令的处理器图,这些指令只能以3位编码。 每条指令一旦解码,就被发送到将解决它们的不同执行单元。

该指令周期是最复杂的周期,也是定义体系结构类型的周期。 取决于我们是减少指令集还是复杂指令集,这将影响控制单元的性质,具体取决于指令格式或解码阶段同时处理了多少指令,因此控制单元将具有不同的性质。 其他。

可视化发生情况的最简单方法是将指令想像成火车在复杂的铁路网络中穿行,控制单元将其引导至终点站,终点站是负责解决指令的执行单元。

第三阶段:执行

1位ALU

最后一步是指令的执行,在这一阶段中,指令被解析,但并非所有类型的指令都以相同的方式解析,因为使用硬件的方式将取决于每个指令的功能。 通常,我们有四种类型的指令:

  • 钻头运动说明: 操纵包含数据的位的顺序。
  • 算术指令: 在进行数学和逻辑运算的地方,这些问题可以通过所谓的ALU或算术逻辑单元解决
  • 跳转说明: 通过更改程序计数器的下一个值,可以递归使用代码。
  • 记忆说明: 处理器使用它们通过它们从系统内存读取和写入信息。

另一点是指令格式,因为指令可以同时应用于数据,标量或多个数据(我们称为SIMD)。 最后,根据数据格式,有多种类型的ALU用于执行算术指令,例如,今天我们有整数和浮点单元作为微分单元。

指令完成后,将结果写入特定的存储器地址,然后执行下一个。 一些指令不操纵存储器值,而是操纵某些寄存器。 因此,程序计数器寄存器由跳转指令修改,如果我们要读取或写入数据,则将对MAR和MDR寄存器进行操作。