Skip to content

多周期CPU数据通路

考情分析

多周期CPU是单周期到流水线的过渡概念,考研选择题会考"多周期相比单周期的优缺点""某阶段完成的操作"等。理解多周期有助于理解流水线冒险的根源。

多周期的基本思想

将每条指令的执行拆分为若干个步骤,每步占一个时钟周期。不同指令所需步骤数不同,简单指令(如 R 型)用较少周期,复杂指令(如 lw)用较多周期。

优点:时钟周期取决于最慢的单步操作(通常是一次 ALU 运算或一次访存),比单周期的时钟周期更短;各功能部件可在不同阶段复用。 缺点:需要增加中间寄存器保存阶段间的数据;控制逻辑变为时序逻辑(有限状态机)。

新增的中间寄存器

多周期在单周期数据通路基础上增加了以下暂存寄存器(程序员不可见):

寄存器存放内容
IR(指令寄存器)从内存取出的指令,保持整个执行过程
MDR(内存数据寄存器)从内存读出的数据或待写入内存的数据
A从寄存器堆读出的第一个操作数
B从寄存器堆读出的第二个操作数
ALUOutALU 运算结果,暂存供下一阶段使用

五个执行阶段

阶段1:取指(IF)

IRM[PC],ALUOutPC+4,PCPC+4
  • 从内存读取指令送入 IR
  • 利用 ALU 计算 PC+4(复用 ALU,不浪费)
  • PC 更新为 PC+4

阶段2:指令译码/读寄存器(ID)

AReg[IR25:21],BReg[IR20:16]ALUOutPC+(符号扩展(IR15:0)2)
  • 读取 rs 和 rt 对应的寄存器值到 A、B
  • 同时提前计算分支目标地址(即使还不知道是否分支)

阶段3:执行/地址计算(EX)

根据指令类型:

指令类型ALU 操作结果送入
R型A op B(由funct决定)ALUOut
lw/swA + 符号扩展(imm)ALUOut(有效地址)
beqA - B,检查 Zero直接更新 PC(若相等)

阶段4:访存/R型完成(MEM)

  • lwMDRM[ALUOut](读内存)
  • swM[ALUOut]B(写内存)
  • R型Reg[IR15:11]ALUOut(写回寄存器,R型在此阶段结束)

阶段5:写回(WB,仅 lw 需要)

Reg[IR20:16]MDR

将从内存读出的数据写入目标寄存器。

各指令所需周期数

指令类型所需周期阶段
R型(ADD/SUB等)4IF → ID → EX → MEM(写回)
lw5IF → ID → EX → MEM → WB
sw4IF → ID → EX → MEM
beq3IF → ID → EX
无条件跳转 j3IF → ID → EX

单周期 vs 多周期对比

对比项单周期多周期
时钟周期最慢指令决定最慢单步操作决定
CPI恒为 13~5(视指令类型)
硬件利用率低(部件闲置)高(部件复用)
存储器指令/数据存储器分开可用单一存储器
控制逻辑组合逻辑时序逻辑(状态机)
性能通常较低通常更高

交互可视化

加载可视化中...

例题

例1:在多周期CPU中,lw指令比R型指令多几个周期?分别是哪些阶段?

解:lw 需要 5 个周期(IF → ID → EX → MEM → WB),R型需要 4 个周期(IF → ID → EX → MEM,其中MEM阶段完成写回)。lw 多出的第5个周期是 WB 阶段,用于将 MDR 中从内存读出的数据写入目标寄存器。

例2:多周期CPU中,为什么需要IR寄存器而单周期不需要?

解:单周期中指令存储器的输出在整个时钟周期内保持不变(只取一次指令),不需要额外锁存。多周期中存储器在不同阶段被复用(IF阶段取指令,MEM阶段读写数据),指令信息会被覆盖,因此必须在IF阶段将指令锁存到IR中,供后续阶段使用。

例3:某程序指令构成为:R型 40%、lw 30%、sw 15%、beq 10%、j 5%。在多周期CPU上平均CPI是多少?

解:CPI=0.40×4+0.30×5+0.15×4+0.10×3+0.05×3=1.6+1.5+0.6+0.3+0.15=4.15

考点清单

  • 多周期 CPU 使用有限状态机实现控制逻辑,每个状态对应一个阶段
  • A、B、ALUOut、IR、MDR 是流水线寄存器的前身,流水线就是让多条指令同时处于不同阶段
  • beq 只需 3 个周期,是因为分支判断在 EX 阶段完成,不需要访存和写回
  • 多周期中存储器可以复用(取指和访存用同一个存储器,但在不同阶段)
  • 阶段2计算分支地址属于"投机执行":先算好,若不是分支指令则结果丢弃

真题练习

相关真题(2题)

2026Q20选择题2分

单周期、多周期、流水线数据通路与CPI的关系

2025Q19选择题2分

CPU数据通路与控制器结构辨析