Hardware techniques to enhance ILP
At the ISA level
- Conditional or predicated instructions (eliminates branches)
Speculation
- Execute an instruction before knowing whether it is needed
- Can be done at the compiler level (move code across basic blocks)
- Can be done at the hardware level (branch prediction)
- Be sure to get the correct results and not to generate exceptions during the speculation
Register renaming
- Removes more WAR and WAW hazards