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:
- Ogni operazione di scrittura sembra avvenire istantaneamente.
- Tutti i processi vedono esattamente la stessa sequenza di modifiche dei valori per ogni operando separato.
- 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.