5 级流水线 CPU 具有以下阶段序列:
IF——从指令存储器中取指令。
RD——指令解码和寄存器读取。
EX – 执行:用于数据和地址计算的 ALU 操作。
MA – 数据存储器访问 – 对于写访问,使用在 RD 状态下读取的寄存器。
WB——寄存器回写。
考虑以下指令序列:
I1: L R0, loc 1 ; R0 <=M[loc1]
I2: A R0, R0 1 ; R0 <= R0 + R0
I3: S R2, R0 1 ; R2 <= R2 - R0
让每个阶段占用一个时钟周期。从 I1 的取指开始,完成上述指令序列所需的时钟周期数是多少?
所以这是我的解决方案。
1 2 3 4 5 6 7 8 9 10 11 12 13
I1: IF RD EX MA WB
I2: IF - - - RD EX MA WB
I3: IF - - - - - - RD EX MA WB
通过这种方式,我总共获得了 13 个周期。我假设由于问题中没有明确提到操作数转发。因此注册将仅在 WB 阶段后可用。但选项如下:
- A. 8
- B. 10
- C. 12
- D. 15