Appearance
题目
某计算机的控制器采用微程序控制方式,微指令中的操作控制字段采用字段直接编码法,共有 33 个微命令,构成 5 个互斥类,分别包含 7、3、12、5 和 6 个微命令,则操作控制字段至少有( )。
错因
A
把"5 个互斥类"当成 5 个状态来编码—— 位(再粗暴加点变 5 位)。这是把"类的数量"和"类内微命令的数量"搞混了。字段直接编码法的精髓是"每个类对应一段位字段",而不是"用几位编码这 5 个类的索引"。
B
把题目当成最短编码法来做—— 位。最短编码法把所有 33 个微命令统一编号(含一个"空操作"),整段操作控制字段共用一段位串。
但题目明写"字段直接编码法"——必须按 5 个独立字段算位数再相加,不是合并成一段。
D
把题目当成直接控制法(也叫一码一位法)——给每个微命令分配独立的 1 位(1 = 发出该微命令,0 = 不发),所以 33 个微命令需要 33 位。
直接控制法实现简单(不需要译码器),但位数最多——和"字段直接编码法(少位数 + 加译码器)"刚好是两个极端。题目明确选了字段编码法,不该按直接控制法算。
总解析
核心公式:字段直接编码法每段位数
为什么要 +1?——每个类除了"发出某个微命令"的状态外,还要预留一个"该类不发出任何微命令"的状态(即全 0 编码),让微指令可以"只用某些类、其他类不动"。
逐类计算:
| 类号 | 类内微命令数 | +1 | 字段位数 | |
|---|---|---|---|---|
| 1 | 7 | 8 | 3 | |
| 2 | 3 | 4 | 2 | |
| 3 | 12 | 13 | 4 | |
| 4 | 5 | 6 | 3 | |
| 5 | 6 | 7 | 3 | |
| 总和 | 33 | — | — | 15 |
最终答案是 C(15 位)。
三种编码法对比:
| 方法 | 思路 | 位数(按本题) | 译码电路 |
|---|---|---|---|
| 直接控制法(一码一位) | 每个微命令独占 1 位 | 33 位 | 无需译码(最简单) |
| 字段直接编码法 | 互斥类分段,段内编码 | 15 位(本题答案) | 每段加一个译码器 |
| 最短编码法 | 所有微命令统一编号 | 位 | 大译码器(最复杂) |
判定要点:
- 看到"互斥类" → 字段直接编码法的标志,每类独立算位数再相加
- +1 是预留"空操作"——别忘加,5 个类一起就少 5 倍空间
- 要向上取整:,所以是 4 位不是 3 位