Appearance
题目
下列给出的处理器类型中理想情况下 CPI 为 1 的是( )。
I、单周期 CPU; II、多周期 CPU; III、基本流水线 CPU; IV、超标量流水线 CPU
错因
A
把多周期 CPU 当成 CPI = 1。但多周期的定义就是"一条指令分多个周期完成"——CPI > 1 是多周期的本质特征,不可能 = 1。如果一条指令真的 1 周期搞定,那就是单周期不是多周期。
C
完全反了:把多周期当 CPI=1(错),把超标量也当 CPI=1(错)。超标量理想情况下每个周期能发射 > 1 条指令(如 4-way 超标量 = 4 条/周期),等价 CPI < 1(如 0.25),不是 = 1。
D
把超标量当成 CPI = 1。同 C 的错——超标量 CPI < 1。理想情况比基本流水线还快。
总解析
CPI 定义:每条指令平均所需的时钟周期数。
逐项判断:
| 类型 | 一条指令所需周期 | 一周期能完成几条 | CPI | 判断 |
|---|---|---|---|---|
| Ⅰ 单周期 | 1 | 1 | 1 | ✓ |
| Ⅱ 多周期 | 多个(如 5 个,每段 1 周期) | 0~1 / 5 | >1(典型 3~5) | ✗ |
| Ⅲ 基本流水线 | 多个周期完成(如 5 段 5 周期),但吞吐为每周期 1 条 | 1(理想) | 1 | ✓ |
| Ⅳ 超标量流水线 | 多周期完成,吞吐 > 1 条/周期 | >1(如 2~4) | <1 | ✗ |
逐个理解:
Ⅰ 单周期 CPU:每条指令在 1 个时钟周期内完成全部阶段(取指 → 译码 → 执行 → 访存 → 写回)。CPI = 1(定义)。代价是周期非常长。
Ⅱ 多周期 CPU:把指令拆成多个段,每段一个周期。一条指令要 3~5 个周期才完成,CPI > 1(同时周期较短作为补偿)。
Ⅲ 基本流水线 CPU:单条指令仍要 5 个周期完成,但指令重叠——理想情况每个周期都能完成一条指令的"写回段"(同时新指令的 IF 段开始)。吞吐 = 1 条 / 周期 → CPI = 1。
Ⅳ 超标量流水线 CPU:每个周期可同时发射多条指令(如 2-way 超标量每周期可启动 2 条)。吞吐 > 1 条 / 周期 → CPI < 1。
最终答案是 B(Ⅰ、Ⅲ)。
速记示意图:
单周期: |─── I1 ───|─── I2 ───|─── I3 ───| CPI = 1
(1周期/指令)
多周期: |I1段1|I1段2|I1段3|I1段4|I1段5| ... CPI = 5
(5周期/指令)
流水线(理想):|I1段1|I1段2|I1段3|I1段4|I1段5|... 每个周期一条指令完成
|I2段1|I2段2|I2段3|I2段4|I2段5| → CPI = 1
|I3段1|I3段2|I3段3|I3段4|
超标量2-way: 每周期 2 条指令并行发射 CPI = 0.5易错点速查:
- CPI = 1 的两个场景:单周期(定义)+ 理想流水线(吞吐意义上)
- 多周期 CPI = 段数(远大于 1)
- 超标量 CPI < 1(每周期 > 1 条),不是 = 1
- "CPI = 1" 在流水线场景指的是吞吐率,不是单条指令的延迟