定长操作码指令格式
定长操作码的定义只有一句:所有指令的操作码位数相同、位置相同——固定占据指令字的最高
它的全部优点和全部缺点都从这一句里直接推出来,所以这一节短,但它是 4.1.4 的完整背景:扩展操作码之所以要被发明,就是因为定长操作码在这里遇到了一堵墙。
机制
编码容量:一个 的硬上界
一道标准题的五步
例 某机指令字长 16 位,采用定长操作码,指令系统共 12 条指令,全部为二地址指令,两个地址码等长。
- 定操作码位数:
位(4 位可编 16 条,够;3 位只能编 8 条,不够) - 定地址码位数:
位 - 地址码若是寄存器编号:最多
个通用寄存器 - 地址码若是主存直接地址:直接寻址范围
个存储单元 - 检查:
✅
第 3、4 步是同一个数字的两种读法——这个 6 位字段到底代表寄存器号还是主存地址,题目必须告诉你,格式本身看不出来(见 4.1.2 的边界讨论)。
定长操作码的代价:不可扩展
把上题改一个字:指令系统要扩充到 20 条。
位 - 地址码
位 ——不是整数
只能把地址码砍成 5 位(浪费 1 位)或把指令字长加到 18 位(破坏对齐)。多加 8 条指令,代价是每个操作数的直接寻址范围从 64 个单元掉到 32 个。
这就是定长操作码的墙:操作码位数被”最坏情况”绑架。 哪怕指令系统里只有 3 条指令真的需要两个地址,
为什么硬件仍然偏爱它
代价这么明显,为什么 MIPS、RISC-V 这些现代 ISA 反而坚持定长操作码?因为它的收益不在代码密度,而在时序:
graph LR subgraph 定长操作码 A1["取指完成"] --> B1["OP 位置已知<br/>直接送译码器"] --> C1["一级译码<br/>延迟固定"] end subgraph 变长操作码 A2["取指完成"] --> B2["先看前几位<br/>判断 OP 有多长"] --> C2["再取剩余 OP<br/>二级/多级译码"] --> D2["延迟不固定"] end classDef good fill:#d5e8d4,stroke:#82b366 classDef bad fill:#f8cecc,stroke:#b85450 class A1,B1,C1 good class A2,B2,C2,D2 bad
三条具体收益,每一条都在后面的章节兑现:
- 译码是一级组合逻辑——一个
译码器,延迟固定且最小。 - 地址字段的位置也固定,所以寄存器可以在译码还没出结果时就先读出来(反正位置就在那儿,读错了不用就是)。这是流水线 ID 段能把”译码”和”取寄存器”合并成一拍的前提,见 5.5 指令流水线(本地资料)。
- PC 增量是常数,取指部件不必等译码结果就能算下一条指令地址。
这三条合起来就是 RISC 选择定长指令字 + 定长操作码的全部理由,会在 4.4.2正式登场。“浪费空间换取时序的确定性”——这是第 2 章”面积换时间”之外,本书的另一条工程取舍主线。
边界
定长操作码 ≠ 定长指令字。 再强调一次这对名词(4.1.2 已辨析):定长操作码说的是 OP 字段,定长指令字说的是整条指令。统考题里”指令字长固定、操作码可扩展”是最常见的组合,一点也不矛盾。
操作码全 1 或全 0 有时被保留。 若题目明说”操作码 1111 留作扩展窗口”,可用编码就是
对照速查
| 已知 | 求 | 公式 |
|---|---|---|
| 操作码 | 最多几条指令 | |
| 指令 | 至少几位操作码 | |
| 每个地址字段位数 | ||
| 地址字段 | 最多几个通用寄存器 | |
| 地址字段 | 直接寻址范围 |
| 判断 | 对错 |
|---|---|
| 定长操作码的位置固定在指令最高位 | ✅ |
| 定长操作码译码只需一级组合逻辑 | ✅ |
| 定长操作码必然浪费编码空间 | ✅(按最坏情况定位数) |
| 定长操作码要求指令字长固定 | ❌ |
| ❌(是最多) | |
| 零地址指令不占用操作码编码 | ❌ |
| 定长操作码的优点是代码密度高 | ❌(反了,密度低) |
考点
- 定长操作码:位数固定、位置固定(最高
位) 位最多 条指令; 条指令至少需 位 - 地址字段位数
,进而定寄存器个数或直接寻址范围 - 缺点:操作码位数被指令总数绑架,扩展一条指令可能要牺牲全部指令的地址位
- 优点全在时序:一级译码、字段位置固定(可提前读寄存器)、PC 增量恒定 → 流水线友好
- 「浪费空间换时序确定性」,是 RISC 选择定长格式的根本理由
链接
- 🏠 返回总览:计算机组成原理第 4 章:指令系统总览
- ⬅️ 上一节:4.1.2 指令的基本格式
- ➡️ 下一节:4.1.4 扩展操作码指令格式
- 🔗 4.4.2 精简指令系统计算机(RISC)(定长格式的受益方)
- 🔗 5.5 指令流水线(本地资料)(定长格式为什么利于流水)
- 📖 名词库:第 4 章名词库