El paralelismo a nivel de instrucción (ILP) es una medida de cuántas operaciones en un sistema son ejecutables simultáneamente. La canalización de instrucciones, la ejecución fuera de orden, la ejecución especulativa y las arquitecturas superescalares permiten un alto nivel de paralelismo de instrucciones en un solo núcleo. Multiple processors and multithreading enable high instruction-level parallelism across multiple cores in a single system.
As an example, consider this code:
- s = a + b;
- t = c + d;
- u = s + t;
Here, the first two lines can be executed entirely in parallel. No hay dependencias de datos compartidos entre la primera línea y la segunda. Así, un procesador puede ser capaz de ejecutar las instrucciones en paralelo. La tercera línea, en cambio, depende de las dos primeras. No puede ser ejecutada hasta que se completen las dos primeras, ya que se necesitan los almacenamientos en s y t. Si cada línea tardara un ciclo de reloj y pudiéramos ejecutar las dos primeras líneas en paralelo, podríamos decir que tenemos una relación ILP de 3/2.
Conseguir una relación ILP alta requiere tanto la funcionalidad del procesador como las optimizaciones del compilador.