Architettura dei computer: Cos’è il parallelismo a livello di istruzioni (ILP)?

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:

  1. s = a + b; 
  2. t = c + d; 
  3. 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.