Dynamic Scheduling
The idea:
Dynamic instruction scheduling attempts to exploit instruction
level parallelism by allowing instructions to execute as early
as possible when:
There is an available functional unit
-
to avoid sturctural hazards and WAW hazards
Source operands are available
- to avoid RAW hazards
And to write results when destination registers are no longer needed
- to avoid WAR hazards
We will look at two techniques:
Scoreboarding
Tomasulo Algorithm
Why did these techniques come about?
Consider:
divd f0,f2,f4
addd f10,f0,f8
subd f8,f8,f14
multd f6,f6,f12
to Overview.