What is it
The pipeline control unit defines global behavior for the pipeline, ensuring that instructions are either bubbled or stalled when necessary.
Events
A boolean value that indicates that a certain hazard condition is imminent
Def-use and non-back-to-back load-use cases are handled using forwarding, so the PCU doesn’t have to get involved.
Remaining situations
- Back-to-back load-use
X_out-op == OP_LDUR && ((X_out->dst == src1) || (X_out->dst == src2))
- Mis-predicted conditional branch
X_out->op == OP_B_COND && !M_in->cond_holds
- Handing
ret
D_out->op == OP_RET
Actions
Back-to-back load-use (bubble for stalling)
- (F, D, X, M, W) = (Stall, Stall, Bubble, Normal, Normal)
Mis-predicted conditional branch (bubble for squashing)
- (F, D, X, M, W) = (Normal, Bubble, Bubble, Normal, Normal)
Handling ret
(bubble for stalling)
- (F, D, X, M, W) = (Stall, Bubble, Normal, Normal, Normal)