Appearance
题目
下列关于指令流水线数据通路的叙述中,错误的是( )。
错因
B
误以为 ALU 不属于数据通路。但 ALU 是数据通路的核心组件之一——所有的算术逻辑运算(ADD、SUB、AND、OR、SLT 等)都在 ALU 里完成,没有 ALU 数据通路就没法做"执行"段。把 ALU 排除是对数据通路构成的根本误解。
C
以为通用寄存器组或取指部件应当独立于数据通路。实际上:
- 通用寄存器组:流水线 ID 段读取操作数、WB 段写回结果都需要它,是数据通路的一员
- 取指部件:负责 IF 段(PC + 指令存储器 + IR),数据"指令字"从存储器流入 IR 也是流经数据通路的
两者都属于数据通路。
D
误以为数据通路只是组合逻辑("算")或只是时序逻辑("存")。实际上数据通路是两者的混合:
- 组合逻辑(操作元件):ALU、MUX、译码器、加法器等——无状态、立即响应
- 时序逻辑(状态元件):PC、IR、寄存器组、流水线段间锁存器(IF/ID、ID/EX 等)——保存状态、按时钟更新
D 是对的,把它当错就是没掌握"操作元件 + 状态元件 = 数据通路"这个标准定义(参见 2023 年第 18 题)。
总解析
核心区分:CPU 由两大部分组成——
| 大类 | 包含的部件 | 作用 |
|---|---|---|
| 数据通路(Datapath) | ALU、寄存器组、MUX、PC、IR、段间锁存器、取指部件、ALU、内存接口 | 数据流动和加工的硬件路径 |
| 控制部件(Control Unit) | 译码器、控制逻辑、微程序控制器或硬连线控制器 | 根据当前指令产生控制信号,告诉数据通路"现在该做什么" |
两者是并列关系,不是包含关系——控制部件不属于数据通路。
逐项判断:
| 选项 | 叙述 | 判断 | 理由 |
|---|---|---|---|
| A | 包含生成控制信号的控制部件 | ✗ 错 | 控制部件与数据通路是并列两部分,互相独立 |
| B | 包含 ALU | ✓ 对 | ALU 是数据通路的核心 |
| C | 包含通用寄存器组和取指部件 | ✓ 对 | 都是数据通路的组成 |
| D | 由组合逻辑和时序逻辑电路组合而成 | ✓ 对 | 操作元件(组合)+ 状态元件(时序)就是数据通路构成 |
最终答案是 A(错误的叙述)。
示意结构:
┌──────────────────────────┐
│ 控制部件 Control Unit │ ← 看着 IR 的内容生成控制信号
└──────────┬───────────────┘
│ 控制信号(写使能、ALU 操作码、MUX 选通等)
▼
┌─────────────────────────────────────────────────┐
│ 数据通路 Datapath │
│ │
│ PC → 取指部件 → IR → 寄存器组 → ALU → MEM → 寄存器组 │
│ ▲ │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────┘
↑ ↑
组合逻辑(ALU、MUX)+ 时序逻辑(PC、IR、寄存器、段间锁存器)控制信号从控制部件输入到数据通路,控制各操作元件的行为——但控制部件不是数据通路本身的组件。
易错点速查:
- 数据通路 ≠ CPU 的全部,CPU = 数据通路 + 控制部件
- ALU、寄存器组、PC、IR、取指部件全在数据通路里
- 控制信号"穿过"数据通路,但生成控制信号的电路在外面