码上焚香

Yahocen

计算机指令

4
2024-10-28

指令的组成

计算机的指令通常由两部分组成:

  • 操作码(Opcode):指定要执行的操作类型

    • 定义:操作码是指令中的一个字段,它指定了要执行的操作类型。例如,加法、减法、跳转等。

    • 作用:操作码告诉处理器具体要执行哪种操作。每个操作码对应一种特定的操作或功能。

  • 操作数(Operand):提供给操作码所需的数据或数据的位置

    • 定义:操作数是指令中用于操作的数据或数据地址。它可以是一个立即数(直接包含在指令中的数值)、寄存器中的值、内存地址等。

    • 作用:操作数提供给操作码所需的数据或数据的位置。根据指令的不同,操作数的数量和类型也会有所不同。

假设我们有一个简单的指令 ADD R1, R2,意思是将寄存器R1和寄存器R2中的值相加,并将结果存储在R1中。

  • 操作码ADD(表示加法操作)

  • 操作数R1, R2(表示参与加法操作的两个寄存器)

指令和操作数的存储

  1. 指令存储

    • 主存(内存):程序的指令以二进制形式存储在主存中。当程序开始执行时,操作系统将程序代码从磁盘或其他存储介质加载到主存中。

    • 程序计数器(PC):程序计数器(PC)指向当前要执行的指令的地址。CPU通过PC从主存中读取指令。

  2. 操作数存储

    • 寄存器:寄存器是CPU内部的小容量、高速存储单元。操作数可以直接存储在寄存器中,这样访问速度非常快。

    • 缓存:缓存是一种位于CPU和主存之间的高速存储器,用于临时存储频繁访问的数据。如果操作数最近被访问过,可能会存储在缓存中,从而加快访问速度。

    • 主存(内存):操作数也可以直接存储在主存中。在这种情况下,CPU需要通过地址总线访问主存来获取操作数。

指令执行过程

通常称为取指-译码-执行(Fetch-Decode-Execute)循环

  1. 取指令(Fetch):从内存中读取指令并存入指令寄存器(IR)

    • 程序计数器(PC):程序计数器中存储了下一条要执行的指令的地址

    • 地址总线:CPU将程序计数器中的地址通过地址总线发送到内存。

    • 读取指令:内存根据地址总线上的地址,将对应的指令内容通过数据总线发送回CPU。

    • 指令寄存器(IR):CPU将从内存中读取的指令内容存入指令寄存器(IR)。

  2. 分析指令(Decode):指令译码器解析指令,分离出操作码和操作数

    • 指令译码器:指令译码器对指令寄存器中的指令进行解析,分离出操作码和操作数。

    • 操作码:操作码部分被送到控制单元,控制单元根据操作码确定需要执行的操作类型。

    • 操作数:操作数部分可能包含立即数、寄存器编号或内存地址。这些信息用于后续的执行阶段。

  3. 执行指令(Execute):根据操作码和操作数执行相应的操作,并更新程序计数器(PC)

    • 操作数获取:如果操作数是内存地址,CPU会再次访问内存以获取实际的操作数。

    • 执行操作

      :根据操作码和操作数,CPU执行相应的操作。例如:

      • 如果操作码是 ADD,则将两个操作数相加并将结果存入指定的位置。

      • 如果操作码是 MOV,则将一个操作数的值复制到另一个位置。

      • 如果操作码是 JMP,则更新程序计数器(PC),使其指向新的指令地址。

    • 更新程序计数器:在大多数情况下,执行完一条指令后,程序计数器(PC)会自动递增,指向下一个指令的地址。对于跳转指令(如 JMP),程序计数器会被设置为新的地址。

指令寻址方式

  • 顺序寻址:程序计数器(PC)自动递增,指向下一个连续的指令地址。

  • 跳跃寻址:程序计数器(PC)被上一次执行的指令设置为一个新的地址,从而改变程序的执行流程。

操作数寻址方式

  • 立即寻址:操作数不是指向地址,而是操作数本身

  • 直接寻址:操作数地址直接指向操作数在主存中的地址

  • 间接寻址:操作数地址指向的主存的位置所储存的内容指向了另一个地址

  • 寄存器寻址:操作数的地址指向寄存器编号

指令体系

  • 复杂指令系统(CISC)

    • 特点:指令繁多、长度可变、兼容性强。

    • 实现:由微程序控制技术实现

    • 适用场景:适合处理复杂的任务,如科学计算、图形处理等。

  • 精简指令系统(RISC)

    • 特点:指令少、使用频率接近、主要依靠硬件实现。

    • 实现使用通用寄存器和硬布线逻辑控制,适合采用流水线技术

    • 适用场景:适合高性能计算、嵌入式系统等,能够提供更高的执行效率和吞吐量。