在执行周期中(解码)是什么意思

Ste*_*eve 7 cpu computer-architecture

在一个典型的指令周期中,取、译码、执行共同构成一个周期。我的问题是关于解码步骤:解码的部分是什么,它是指令的操作码吗?如果是这样,那么为什么要对其进行编码?

事实上,我理解这里的解码方式与在安全领域给定密钥的情况下解码消息的方式类似,这让我有点困惑。

inf*_*xed 7

除了操作码之外,汇编指令通常具有指示寄存器和寻址模式(绝对、相对、自动递增等)的位域。

解码是解释操作码和那些其他位域以确定指令将对其进行操作或以其他方式进行操作的循环。

摘要:它计算出指令的可选细节

示例: 0x90 ( 10010000 binary ) 通常被认为是NOP8086 指令集,没有操作。

但是有一条XCHG指令,表示为二进制 10010reg (reg=3 bits), (0x90 + reg) 是一个 16 位交换寄存器与AX指令。表示为“reg”的 3 位定义了要交换的寄存器。

二进制 000 的“reg”,表示“带寄存器AX”。所以 0x90 解码为“AX与”交换AX,这没什么用,AKA No OperationNOP


Law*_*ceC 6

指令和寻址模式是解码的内容。指令 + 寻址模式由操作码和操作码后面的任何立即数数据(操作数)组成。

如果是这样,那么为什么要对其进行编码?

因为我们使用 RAM 中的值来“代表”指令和寻址模式。必须存在一种方案,其中 X = 任何指令 + 任何寻址模式。类似于 ASCII/Unicode 是一种“代表”数字、字母和终端控制代码的方案。

如果您有一台机器,每个可能的指令都有 1 个开关,则不需要解码步骤。这个“RAM 等效”将是 8 位(或其他)字节中每位 1 条指令,如果有多个位,则所有指令(是的,您将被限制为 8 个)将“触发”那一步。我相信 60 年代末/ 70 年代初的 PDP 组装与此相去不远。

事实上,我理解这里的解码方式与在安全领域给定密钥的情况下解码消息的方式类似,这让我有点困惑。

不,这更像是将 MPEG 数据解码为原始视频数据 - 原始 MPEG 数据不能直接绘制在屏幕上,必须对其进行处理和“解包”以找出其确切含义。


bwD*_*aco 3

解码是指解析指令以确定其含义。

一条典型的指令由一个操作码和(通常)一个或多个参数组成。这些参数可以指特定的寄存器或存储器地址,也可以是在执行期间直接使用的立即值。此外,某些指令可能具有改变其功能的前缀(例如LOCK在 x86 中)或功能代码(例如funct某些 MIPS 指令的字段)。

在解码过程中,处理器需要:

  • 确定操作码代表什么指令,以便可以将指令发送到正确的执行单元并执行正确的操作
  • 正确解释附加到指令的参数、前缀和其他值,并将相关信息传递给相关电路
  • (在大多数现代处理器设计中)将指令分解为其相应的微操作

对于现代处理器,这可能是一项复杂的操作,需要管道中的多个阶段。为了加速这个过程,可以使用专用高速缓存来存储频繁执行的指令的微操作。

有关用于在现代处理器中提供高性能的技术的更多信息,您可能需要阅读此答案