云计算百科
云计算领域专业知识百科平台

计算机组成原理第四章 指令系统

课程脉络前置说明

  • 第二章:运算器,加减乘除、移位运算硬件实现
  • 第三章:存储器,数据存储、CPU 访存原理
  • 第四章:指令系统(本章)—— 控制器如何解析指令、指令格式分类、扩展操作码、指令寻址
  • 第五章:控制器硬件工作原理
  • 程序运行逻辑:高级语言→编译→机器指令 + 数据存入主存→CPU 逐条执行机器指令;控制器核心功能:解析指令、调度计算机各部件协同工作。

    一、指令基础概念
    1.指令、指令系统(指令集)

  • 机器指令:指示计算机执行操作的命令,程序运行最小功能单元。
  • 指令系统 / 指令集:一台计算机全部指令的集合。
  • 架构差异:不同 CPU 架构指令集不兼容
    ○x86(英特尔 PC)、ARM(手机、新款苹果电脑);PC 软件无法直接在手机运行,根源是指令集不同。
  • 指令逻辑组成:操作码 OP + 地址码 A
    ○操作码 OP:指明执行什么操作(乘法、停机、取数等)
    ○地址码 A:指明操作的数据存在哪个存储单元
    ○特例:停机指令仅需操作码,无地址码
  • 2. 符号约定
    (A):地址 A 对应的存储单元内的数据,类似 C 语言指针取值。

    二、按地址码数量分类指令(0~4 地址指令)
    (一)0 地址指令(仅 OP,无地址码)
    两种使用场景:

  • 无操作数指令:停机、关中断、空操作(NOP),不需要数据参与运算。
  • 堆栈型计算机运算指令:操作数隐含存放在栈顶、次栈顶
    ○运算逻辑:扫描后缀表达式,读到数字压栈;读到 0 地址运算指令,弹出栈顶两数运算,结果压回栈顶。
    ○特点:指令不显式写出操作数地址。
  • (二)1 地址指令(OP A1,单地址指令)
    两种场景:
    场景 1:一元运算(仅 1 个操作数,求反、自增、求补)
    执行流程(3 次访存):
    1.访存取本条指令;2. 访存读出 (A1);3. 运算后写回 A1
    运算公式:OP (A1) → A1

    场景 2:二元运算,一个操作数隐含在累加器 ACC(高频考点)
    运算公式:(ACC) OP (A1) → ACC
    执行流程(仅 2 次访存):
    1.访存取指令;2. 访存读取 (A1);结果存入 ACC,无需写内存。

    (三)2 地址指令(OP A1 A2)
    适用:加减乘除等二元运算,两个操作数分别存于 A1、A2
    运算规则:(A1) OP (A2) → A1(结果覆盖 A1 原值)
    访存次数:4 次
    1.取指令;2. 读 A1;3. 读 A2;4. 结果写回 A1

    (四)3 地址指令(OP A1 A2 A3)
    运算规则:(A1) OP (A2) → A3
    优势:单独地址存放结果,不会覆盖原始操作数;
    访存:取指令、读 A1、读 A2、写 A3,共 4 次访存。

    (五)4 地址指令(OP A1 A2 A3 A4)
    1.运算逻辑:同 3 地址:(A1) OP (A2) → A3
    2.新增 A4 功能:指明下一条指令地址,执行完本条指令直接将 PC 修改为 A4,实现跳转,替代 PC 自增。
    补充:地址码位数影响
    指令总长度固定时,地址码数量越多,单个地址码占用比特越少,寻址范围2N越小,寻址能力变弱。

    三、按指令总长度(指令字长)分类
    1.三大字长区分(易混对比)

  • 机器字长:CPU 固定属性,通用寄存器位数,CPU 单次处理数据宽度
  • 存储字长:主存固定属性,一个存储单元二进制位数,等于 MDR 位数
  • 指令字长:单条指令总比特长度,同一台机器可长可短(可变)
  • 2. 指令长度命名
    以机器字长为基准划分:半字长指令、单字长指令、双字长指令

    例:机器字长 16bit,存储字长 16bit;双字长指令 32bit,取指需要2 次访存,取指速度更慢。

    3. 两种指令字结构

  • 定长指令字结构:全部指令长度完全相等;取指逻辑简单,硬件易实现。
  • 变长指令字结构:不同指令长度不同;硬件译码复杂,但空间利用率高。
  • 四、按操作码长度分类
    1.定长操作码

  • 所有指令 OP 比特数固定;N 位 OP 最多支持2N条指令。
  • 优点:控制器译码电路简单;缺点:指令拓展灵活性差。
  • 2. 可变长操作码
    操作码位数随指令地址数变化;典型应用:扩展操作码指令格式。

    •特点:定长指令字 + 可变长度 OP;在有限指令总长度下,容纳 0/1/2/3 地址多种指令。

    五、扩展操作码(重难点,计算题核心)
    1.核心定义
    指令总比特固定,不额外增加指令长度;短地址指令让出地址位扩充操作码,实现多类型指令共存。

    2. 设计两大硬性规则(必背)

  • 短操作码不能是长操作码的前缀(防止译码歧义,类比哈夫曼前缀编码);
  • 所有指令操作码不能重复。
  • 3. 设计优化技巧
    使用频率高的指令分配更短操作码,缩短译码时间,提升 CPU 运行效率。

    4. 基础计算逻辑
    设每个地址码占 N 比特,上层预留 M 个扩展状态,则下一层最多可扩展 M×2N 条指令。
    标准举例:指令字长 16 位,每个地址 4bit

  • 3 地址指令:3 个地址占 12bit,OP 仅 4bit,共24=16种;预留1111作为扩展位,最多 15 条 3 地址指令。
  • 2 地址指令:前 4 位固定1111,剩余 4bit 做 OP;共 16 种状态,预留全 1 状态继续扩展。
  • 1 地址指令:前 8 位固定全 1,剩余 4bit 做 OP;预留全 1 状态。
  • 0 地址指令:前 12 位全 1,最后 4 位全部用作 OP,无后续扩展,最多 16 条。
  • 5. 优缺点
    ✅优点:固定指令长度下,支持丰富多类型指令;空间利用率高
    ❌缺点:操作码长度不统一,译码电路复杂,控制器硬件设计难度上升

    六、按指令操作类型分类(四大类)
    1.数据传送类
    主存 ↔ CPU 寄存器数据搬运;例:LOD 取数(内存→寄存器)、存数指令(寄存器→内存)。

    2.运算类
    •算术运算:加减乘除;
    •逻辑运算:与、或、非、异或;
    •移位运算:算术移位、逻辑移位、循环移位(第二章知识点)。

    3.程序控制类(转移指令)
    改变程序执行顺序,本质修改 PC(程序计数器)的值;
    包含:无条件跳转 JMP、条件转移、函数调用 / 返回、Trap 陷入指令。

    4.输入输出 (I/O) 类
    实现 CPU 寄存器与 IO 端口之间的数据交换,外设交互专用。

    七、指令寻址(确定下一条指令地址)
    基础硬件:PC 程序计数器
    PC 永远存放下一条待执行指令的主存地址;每次取完一条指令,PC 自动自增(自增量不固定)。

    两类寻址方式
    1.顺序寻址(默认执行方式)
    程序逐条连续执行,取指后 PC 自动增加固定长度,增量由两个条件决定:
    1)编址方式(按字编址 / 按字节编址);2)指令字长(定长 / 变长)

    •场景 1:按字编址、定长指令 = 存储字长:PC 每次 + 1
    •场景 2:按字节编址、定长指令占 2 字节:PC 每次 + 2
    •场景 3:按字节编址、变长指令:CPU 先读取指令首字,解析操作码判断本条指令总字节 N,PC += N

    2. 跳跃寻址(转移指令触发)
    遇到程序控制类指令(JMP、CALL 等),直接手动修改 PC 的值,跳过中间指令,改变执行流。

    示例:执行 JMP 7,取指令后 PC 原本自增为 4,执行跳转指令后强制 PC=7,下一条执行地址 7 的指令。

    关键易错总结
    1.PC 存放下一条指令地址,不是当前正在执行的指令;
    2.“PC+1” 是简写,代表加上一条指令的总长度,数值不一定是 1;
    3.顺序寻址靠硬件自动自增 PC;跳跃寻址靠指令主动改写 PC。

    八、全章节易混考点汇总
    1.单地址指令 ≠ 单字长指令
    ○单地址:指令地址码数量;单字长:指令占用机器字个数,两个维度互不绑定。
    2.机器字长固定,指令字长可变;
    3.扩展操作码核心限制:短码不能为长码前缀;
    4.访存次数记忆:0 地址堆栈运算无额外访存;单地址一元运算 3 次访存、二元 ACC 运算 2 次访存;二地址 4 次访存;
    5.地址码位数 N,寻址范围 =2N;指令总长固定时,地址越多,寻址范围越小。
    6.架构不兼容根源:x86 与 ARM 指令集完全不同。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » 计算机组成原理第四章 指令系统
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!