Files
final-exam/计算机系统结构/复习文档/指令系统设计.md
T

3.9 KiB
Raw Blame History

tags, create time
tags create time
计算机系统结构
复习
指令系统
2026-06-15 10:00

指令系统设计

概述

本文档讲解指令系统(ISA)的设计原则与编码技术,包括指令格式设计、操作码编码(定长/扩展)、RISC vs CISC 的核心差异。指令系统是软硬件的分界面,其设计直接影响计算机的性能和可编程性。

[!tip] 考试重点 扩展操作码的指令格式设计是分析题高频考点,需掌握定长操作码与等长扩展码的计算方法。RISC 原则常以选择题形式出现。

正文

一、指令格式设计

一条指令通常由操作码和地址码组成:

┌──────────┬──────────┬──────────┬──────────┐
│  操作码   │  地址1   │  地址2   │  地址3   │
└──────────┴──────────┴──────────┴──────────┘

指令字长 = 操作码位数 + 各地址码位数之和

[!question] 为什么指令格式设计需要权衡? 操作码越长,可表示的指令种类越多,但地址码空间被压缩;地址码越多,寻址能力越强,但指令字长增加,取指开销增大。

二、操作码编码方式

2.1 定长操作码

所有指令的操作码位数相同,格式规整,译码简单。

例:指令字长 16 位,地址字段 6 位,双地址指令需 16 - 6 \times 2 = 4 位操作码 → 最多 2^4 = 16 条指令。

2.2 扩展操作码(变长操作码)

通过在操作码中设置扩展标志位,使不同类型的指令拥有不同长度的操作码,从而在固定指令字长下支持更多指令。

设计原则:

  1. 使用频率高的指令分配短操作码
  2. 使用频率低的指令分配长操作码
  3. 短操作码不能是长操作码的前缀

[!example] 例:12 位指令字长,3 位地址字段

类型 操作码 地址数 可用编码空间
三地址 3 位 3 $2^3 = 8$(用 4 个)
二地址 6 位 2 余下 4 个 × $2^3 = 32$(用 8 个)
单地址 9 位 1 余下编码 × 2^3 = 190 条

三、RISC vs CISC

特性 RISC CISC
指令数量 少(< 200) 多(数百~上千)
指令长度 等长(通常 32 位) 变长
寻址方式 少(2~3 种) 多(十几种)
执行周期 单周期为主 多周期
访存方式 Load-Store(仅 load/store 访存) 任意指令可访存
控制方式 硬连线(速度快) 微程序(灵活)
寄存器 多(32+ 通用寄存器) 少
编译器 依赖编译器优化 硬件承担更多

[!warning] RISC 的常见误解

  • RISC 不是"指令功能简单",而是"指令数量少、格式规整"
  • RISC 的单周期是指理想情况,Cache 不命中等仍会导致多周期
  • RISC 使用 Load-Store 架构,ALU 操作只在寄存器间进行

[!question] 为什么 RISC 采用 Load-Store 架构? 将访存操作限制在专用的 load/store 指令中,使得其他所有指令都只访问寄存器,速度更快、时序更简单,有利于流水线实现。同时,编译器可以更方便地调度指令顺序来隐藏访存延迟。

四、寻址方式

寻址方式 有效地址 适用场景
立即寻址 操作数在指令中 常量赋值
寄存器寻址 EA = R 高速操作
直接寻址 EA = A 全局变量
间接寻址 EA = (A) 指针
基址寻址 EA = R + A 数组基址
变址寻址 EA = A + R 数组下标

关联笔记