Overview
ILP is a form of parallelism within a single thread of execution. Modern 'superscalar' processors use various hardware techniques to find and execute independent instructions at the same time.
Techniques to Increase ILP
- Pipelining: Overlapping the stages of instruction execution.
- Multiple Issue: Having multiple execution units (ALUs, FPUs).
- Out-of-Order Execution: Executing instructions as soon as their data is ready, regardless of program order.
- Speculative Execution: Guessing the outcome of branches to keep the pipeline full.
Limits
ILP is limited by data dependencies (one instruction needing the result of another) and control dependencies (branches).