Skip to content

2017年 408 计算机组成原理 第 16 题

计算机组成原理2017年选择题2分

题目

某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令 29 条,二地址指令 107 条,每个地址字段为 6 位,则指令字长至少应该是( )。

错因

B

把"按字节编址 → 指令字长应是 8 的倍数"这一步漏掉。例如算出 a=5 位三地址操作码、b=11 位二地址操作码 → 指令字长 = 5 + 18 = 23 位(恰好够);或者算出"22 位/24 位"边界后,加几位补到 26。两种都没补到 8 的倍数。

C

操作码位数选得"过宽"——比如三地址操作码用 7 位、二地址用 9 位,导致字长 = 7 + 18 = 25 → 圆整到 28。本题 29 条三地址指令只需 5 位最小(),不必预留 7 位。常见原因是没掌握"扩展操作码"思想,按"每种指令独立编码"硬算。

D

直接套了"现代计算机字长一般 32 位"的常识,没真去推导。题面问的是"至少",应当按最紧凑设计算,不是按惯用值。

总解析

第一步:建立模型

设三地址操作码 位、二地址操作码 位(,因为二地址指令多需要更长操作码扩展)。

格式操作码地址字段总字长
三地址
二地址

指令字长固定

第二步:扩展操作码可编码数量约束

  • 三地址: 种编码,使用了 29 种 → 剩下 种作为"扩展前缀"
  • 二地址:用三地址留下的前缀的"扩展空间"

二地址可编码总数

要求:

第三步:取 算最小字长

第四步:考虑"按字节编址"约束

按字节编址时,指令字长必须是 8 的倍数——否则一条指令跨越字节会导致取指错位、地址计算复杂。

将 23 位向上圆整到 8 的倍数:

候选字长是否 ≥ 23是否 8 的倍数
16
24
32

最小满足两个约束的字长 = 24 位

最终答案是 A(24 位)

验证 a=5 的方案能装下指令编码

  • 三地址操作码:用 5 位编码 29 条 → 余 32 - 29 = 3 种前缀做扩展
  • 二地址操作码:每种扩展前缀 + 6 位扩展段 =

易错点速查

  1. "至少"= 按最紧凑设计算,不要预留太多操作码位
  2. 算出最小理论字长后,按字节编址要圆整到 8 的倍数
  3. 扩展操作码方法:(2^短 - 已用) × 2^(长-短) ≥ 长格式所需

最后更新:

🎬 可视化演示
加载中...

提示:可在可视化区直接操作播放、步进、修改参数