文章

计组笔记 04 指令系统

指令系统由操作码与地址码构成,通过不同寻址方式确定操作数位置,并在取指、译码和执行等阶段完成程序控制与数据处理。 其设计体现为 CISC 与 RISC 两种典型体系:前者强调功能复杂与指令丰富,后者强调结构简单与执行高效,以提升整体性能与流水线效率。

计组笔记 04 指令系统

第4章 指令系统

一、基本概念

  • 指令系统:计算机能识别和执行的全部指令集合。
  • 一条指令 = 操作码 (OPCODE) + 地址码
    • 操作码:规定要执行的操作(加、减、移位、逻辑、传送等)。
    • 地址码:给出操作数或操作数所在的存储单元/寄存器地址。
  • 指令系统设计原则:完整性(功能齐全)、高效性(程序空间小、执行快)、规整性(统一、便于编译)。
  • 指令执行周期
    取指 → 译码 → 取数 → 执行 → 写回 → 中断处理(若有)。

二、指令格式与分类

1. 按地址数分类

  • 零地址指令:只含操作码(OPCODE),常用于栈结构。
  • 一地址指令:OPCODE + A,A指示操作数地址或寄存器。
  • 二地址指令:OPCODE + A1 + A2(常见,源+目的)。
  • 三地址指令:OPCODE + A1 + A2 + A3(结果与源分开)。
  • 多地址指令:多操作数,现代计算机较少使用。

三、寻址方式

| 寻址方式 | 特征 | 公式 / 结果 | 优点 | 缺点 | | — | — | — | — | — | | 立即寻址 | 操作数直接在指令中给出 | EA = 操作数本身 | 快速,无访存 | 操作数范围有限 | | 直接寻址 | 地址码直接给出操作数在主存中的地址 | EA = A | 简单直观 | 访问速度慢 | | 隐含寻址 | 操作数隐含在寄存器(如 ACC)中 | EA = ACC | 指令短小 | 灵活性差 | | 间接寻址 | 地址码存放的是操作数地址的地址 | EA = (A) | 可扩展地址空间 | 需多次访存 | | 寄存器寻址 | 地址码指出寄存器号 | EA = Ri | 快速,节省指令长度 | 寄存器有限 | | 寄存器间接 | 地址码指出的寄存器中存放操作数地址 | EA = (Ri) | 节省指令长度 | 增加一次间接访存 | | 基址寻址 | 有专用基址寄存器,EA = BR + A | 程序可移动 | 需额外寄存器 | | | 变址寻址 | 有变址寄存器,EA = IX + A | 适合循环 | 灵活性差 | | | 相对寻址 | EA = (PC) + 偏移量disp | 实现转移 | 偏移量有限 | | | 堆栈寻址 | EA = (SP) 栈顶指针 | PUSH/POP 操作 | 结构简单,适合递归 | 访问不灵活 |


四、CISC 与 RISC 对比

| 特征 | CISC(复杂指令集) | RISC(精简指令集) | | — | — | — | | 指令数 | 多(200+) | 少(约100以内) | | 指令长度 | 不固定 | 固定(一般 32 位) | | 执行周期 | 多周期,不统一 | 单周期为主 | | 访存方式 | 允许多次访存 | 只允许 load/store | | 编译器依赖 | 较少 | 严重依赖 | | 优点 | 功能强大,程序短小 | 执行快、流水线效率高 | | 缺点 | 执行时间不规则,硬件复杂 | 程序长,占内存大 |


五、对比

  • 基址寻址 vs 相对寻址
    • 基址:EA = BR + A(基址寄存器固定,适合多程序环境)。
    • 相对:EA = PC + disp(随PC变化,常用于转移)。
  • 立即 vs 直接 vs 间接寻址
    • 立即:操作数在指令中。
    • 直接:地址码即操作数地址。
    • 间接:地址码指向一个存放操作数地址的单元。
  • 堆栈 PUSH vs POP
    • PUSH:SP = SP - 1,存数据入栈顶。
    • POP:取栈顶数据,SP = SP + 1。
  • CISC vs RISC
    • CISC:复杂指令、多周期,指令功能强大。
    • RISC:简单指令、单周期,流水线高效。

六、习题与考点

  1. 执行周期顺序:取指 → 译码 → 执行 → 写回。
  2. 立即、直接、间接寻址的速度排序:立即 > 直接 > 间接。
  3. 堆栈寻址结构:先进后出(FILO),用于子程序调用和中断。
  4. 相对寻址主要用于:转移指令。
  5. RISC 特点:单周期、load/store、指令少、流水线。
  6. CISC 缺点:指令多样,执行时间不规则,不利于流水线。

七、速记

  • 指令格式口诀:零一二三多,操作码带走。
  • 寻址方式口诀
    • 立即数内存快,
    • 直接访问最直观;
    • 间接层层找,
    • 寄存器快又短;
    • 基址程序能移动,
    • 变址循环最常见;
    • 相对寻址做转移,
    • 堆栈递归靠它行。
  • CISC vs RISC口诀
    • CISC:指令多,周期长,执行不规则;
    • RISC:指令少,周期短,流水线高效。
本文由作者按照 CC BY-NC 4.0. 进行授权
...

Comments

评论区

碎片之中

正在加载中...