Definition
Static In-order Scheduling
Static in-order scheduling is a pipeline control strategy in which at most one instruction occupies the execute stage at any time.
When the execute stage is busy, the pipeline stalls and the stall back-propagates through earlier pipeline stages. The schedule is fixed by the pipeline control path — there is no dynamic issue logic.
Execute busy
A multi-cycle instruction in the execute stage blocks all later instructions even if they are independent. The execute stage is a shared resource, so an occupied functional unit creates a structural hazard.
The stall back-propagates: the decode stage cannot advance while execute is occupied, so the fetch stage also stalls.
Forwarding
Data hazards are resolved by forwarding. When an instruction produces a value, it is forwarded directly to a later instruction that needs it, without waiting for write-back.
A load-use hazard still stalls the pipeline because the loaded value arrives late from memory. Forwarding supplies the value once it is available, but earlier stages may already have been stalled.