Dynamic scheduling
Implies possibility of:
- Out of order issue (and hence out of order execution)
- Out of order completion (also true but less frequent in static scheduling)
- Imprecise exceptions
- Example (different pipes for add/sub and divide)
R1 = R2/ R3 (long latency)
R2 = R1 + R5 (stall because of RAW on R1)
R6 = R7 - R8 (can be issued, executed and completed before the other 2)