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


[up] to Overview.