Il parallelismo a livello di istruzioni (ILP) è una misura di quante operazioni in un sistema sono eseguibili simultaneamente. Il pipelining delle istruzioni, l'esecuzione fuori ordine, l'esecuzione speculativa e le architetture superscalari permettono un alto parallelismo a livello di istruzioni in un singolo core. 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. Non ci sono dipendenze di dati condivisi tra la prima linea e la seconda linea. Così, un processore può essere in grado di eseguire le istruzioni in parallelo. La terza linea, al contrario, dipende dalle prime due. Non può essere eseguita fino a quando le prime due non sono completate, poiché sono necessarie le memorizzazioni in s e t. Se ogni linea richiedesse un ciclo di clock e fossimo in grado di eseguire le prime due linee in parallelo, potremmo dire di avere un rapporto ILP di 3/2.
Raggiungere un alto rapporto ILP richiede sia funzionalità del processore che ottimizzazioni del compilatore.