4.10 流水线硬件结构
从SEQ到流水线
SEQ 处理器在每个周期完成一条指令的全部五个阶段。要实现流水线,需要对硬件结构做出两个关键更改。
SEQ+:重排序PC更新
SEQ+ 是向流水线迈出的第一步。它将 PC 更新逻辑从周期末尾移到周期最前面,使得在同一个周期的开始就能取下一条指令的地址。具体做法是用一个”PC选择”多路器,在周期开始时就确定下一个 PC 值。
SEQ+ 仍然不是真正的流水线——它仍是顺序执行,但这种重排为后续的流水线寄存器插入提供了基础。
PIPE-:插入流水线寄存器
PIPE- 在 SEQ+ 的基础上,在每两个阶段之间插入流水线寄存器(Pipeline Register):
取指 $→ [F$寄存器$] →$译码 $→ [D$寄存器$] →$执行 $→ [E$寄存器$] →$访存 $→ [M$寄存器$] →$写回
每个流水线寄存器保存前一阶段在周期内计算出的所有中间结果,供下一周期使用:
- F寄存器(取指/译码之间):PC 值、指令字节的预测结果
- D寄存器(译码/执行之间):icode、ifun、valC、valA、valB、dstE、dstM、srcA、srcB
- E寄存器(执行/访存之间):icode、ifun、valC、valA、valB、dstE、dstM、srcA、srcB
- M寄存器(访存/写回之间):icode、valE、valA、dstE、dstM、valM
反馈路径
流水线处理器面临的核心挑战是反馈路径(Feedback Paths):
- PC预测:取指阶段需要知道下一个 PC,但真正的下一条指令地址取决于当前仍在流水线中的指令
- 数据转发:写回阶段的结果可能被还在前段的指令需要,需要旁路路径
这些反馈路径使流水线控制逻辑变得复杂,但它们对正确性和性能至关重要。
相关笔记
链接到
- 上一个知识点:4.9 流水线概念与原理
- 下一个知识点:4.11 PC预测