Compiler optimizations
Basic blocks are small. Difficult to find parallelism
- Loop unrolling
- Software pipelining
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)