Coerenza della cache

In un multiprocessore a memoria condivisa con una memoria cache separata per ogni processore, è possibile avere molte copie di qualsiasi operando di istruzione: una copia nella memoria principale e una in ciascuna memoria cache. Quando una copia di un operando viene modificata, anche le altre copie dell'operando devono essere modificate. La coerenza della cache è la disciplina che garantisce che le modifiche ai valori degli operandi condivisi vengano propagate in tutto il sistema in modo tempestivo.

Esistono tre livelli distinti di coerenza della cache:

  1. Ogni operazione di scrittura sembra avvenire istantaneamente.
  2. Tutti i processi vedono esattamente la stessa sequenza di modifiche dei valori per ogni operando separato.
  3. Processi diversi possono vedere un operando assumere sequenze di valori diverse. (Questo è considerato un comportamento non coerente.)

Sia nel comportamento di livello 2 che in quello di livello 3, un programma può osservare dati non aggiornati. Recentemente, i progettisti di computer si sono resi conto che la disciplina di programmazione richiesta per affrontare il comportamento di livello 2 è sufficiente per trattare anche il comportamento di livello 3. Pertanto, a un certo punto nelle macchine si vedrà solo il comportamento di livello 1 e 3.