Static vs. dynamic scheduling
Assumptions (for now):
- 1 instruction issue / cycle
- Ideal CPI still 1, but real CPI will be closer to 1
- Same techniques will be used when we look at multiple issue
- Several pipelines with a common IF and ID
Static scheduling (optimized by compiler)
- When there is a stall (hazard) no further issue of instructions
- Of course, the stall has to be enforced by the hardware
Dynamic scheduling (enforced by hardware)
- Instructions following the one that stalls can issue if they do not produce structural hazards or dependencies