Appearance
题目
某计算机采用微程序控制器,共有 32 条指令,公共的取指令微程序包含 2 条微指令,各指令对应的微程序平均由 4 条微指令组成,采用断定法(下地址字段法)确定下条微指令地址,则微指令中下地址字段的位数至少是( )。
错因
A
把"32 条机器指令"的位数()当成下地址字段的位数。核心混淆:下地址要寻址的是"控制存储器中的微指令",不是机器指令。机器指令数 ≠ 微指令总数。
B
知道要按微指令总数算,但漏掉了公共取指部分,或把"4 条/指令"折半估到 64 这一档。,但实际微指令数是 ,6 位不够。
D
多算了一份冗余。把"公共取指 2 条"误以为是"每条机器指令前都要拼 2 条",得 ,再向上取整加保险一档到 。实际上"公共"意味着所有机器指令共享这 2 条微指令,只算一次。
总解析
第一步:算微指令的总条数
控制存储器要装下所有微指令,下地址字段必须能寻址其中任意一条。
| 微程序 | 条数 |
|---|---|
| 公共取指微程序 | 2 条(共享,只算一次) |
| 每条机器指令的微程序 | 平均 4 条 |
| 机器指令数 | 32 条 |
第二步:算下地址字段的最少位数
下地址字段必须能编码 0 ~ 129 共 130 个地址:
| 位数 | 够装 130 条吗? | |
|---|---|---|
| 6 | 64 | ✗ 不够 |
| 7 | 128 | ✗ 不够(差 2 条) |
| 8 | 256 | ✓ 够 |
| 9 | 512 | ✓(但不是"最少") |
关键边界:,所以 7 位不够——只差 2 条也不行;必须再升一位到 8 位。
最终答案是 C(8)。
记忆要点:
- "公共"或"共享"的微程序只算一次,不要乘上机器指令条数
- 微指令总数算出后,向上取整到 2 的下一个幂次的指数即为字段位数
- 卡在 128 () 和 256 () 之间,差一点也得进位——这种"边界压线"的数字是命题人最爱的设置
两个相关概念区分:
| 字段名 | 寻址对象 | 本题位数 |
|---|---|---|
| 操作码字段(机器指令里) | 机器指令类型 | |
| 下地址字段(微指令里) | 控存中的微指令 |
A 选项就是把这两个层次混了。