Appearance
题目
下列给出的指令系统特点中,有利于实现指令流水线的是( )。
Ⅰ. 指令格式规整且长度一致
Ⅱ. 指令和数据按边界对齐存放
Ⅲ. 只有 Load/Store 指令才能对操作数进行存储访问
错因
A
漏掉了 Ⅲ。"只有 Load/Store 才能访存"是 RISC 的核心约束之一,也是流水线最关键的简化——把"算"和"访存"彻底分离,EX 阶段不会再插入访存动作,每条非访存指令的执行时间高度可预测。漏掉它说明只关注了"取指/译码"阶段的好处,没看到"执行"阶段的简化。
B
漏掉了 Ⅰ。"指令格式规整、长度一致"是流水线的前提——只有这样取指阶段才能在固定周期数内完成、译码电路才能并行化。CISC 那种 1~15 字节变长指令会让 IF/ID 拖时拖周期,根本没法做整齐的五段流水。
C
漏掉了 Ⅱ。边界对齐影响访存效率——若一条 4 字节指令跨越了字边界,IF 阶段就要做两次访存(外加拼接)才能取齐,等于给本应固定一拍的 IF 阶段引入不确定的延迟。流水线假设"每个阶段一拍完成",对齐就是为了让这个假设成立。
总解析
流水线对指令系统的"友好度"要求——核心是让每个流水阶段的工作量可预测、固定:
| 特征 | 解决的流水线问题 | 反例(CISC 代价) |
|---|---|---|
| Ⅰ. 指令格式规整、长度一致 | IF / ID 阶段在固定周期完成;译码逻辑可并行硬连线 | x86 变长指令(1~15 字节)需要顺序解码、长度难预测 |
| Ⅱ. 指令和数据按边界对齐 | 一次访存即可取齐一条指令 / 一个操作数 | 跨边界访存需 2 次访存 + 拼接,IF/MEM 阶段时序不固定 |
| Ⅲ. 只有 Load/Store 访存 | EX 阶段绝不访存,"算"和"取"严格分阶段 | 一条 ADD 指令带内存操作数 = EX 中夹访存,破坏五段流水 |
逐项判断:三条都直接对应流水线的某个阶段需要"固定时长",全部成立。
RISC 的设计哲学正是流水线友好——这道题的三条几乎是 RISC 设计准则的浓缩版:
RISC 五条核心准则:
- 简单的指令、固定长度(对应 Ⅰ)
- 数据 / 指令对齐访存(对应 Ⅱ)
- Load-Store 体系(对应 Ⅲ)
- 大量通用寄存器
- 硬连线控制器(无微程序)
判定口诀:流水线 = "每阶段定时定量"。任何让某阶段时长不确定的特征(变长指令、跨界访存、EX 中访存)都是流水线的敌人;反之则有利。
最终答案是 D(Ⅰ、Ⅱ、Ⅲ)。