Compiler optimizations
Basic blocks are small. Difficult to find parallelism
- Loop unrolling
- Vector processing (it might make a come-back…)
Avoid dependencies (data, name, control) at the instruction level to increase ILP
- Data dependence translates into RAW
- load scheduling and code reorganization
- Name dependence (register allocation):
- anti-dependence ( WAR) and output dependence (WAW)
- Control dependence = branches (predicated execution)