Consistenza sequenziale

Nei computer, la coerenza sequenziale è meglio definita dal suo inventore, Leslie Lamport, che ha dichiarato che un sistema multiprocessing aveva consistenza sequenziale se:

"... il risultato di qualsiasi esecuzione è lo stesso come se le operazioni di tutti i processori fossero eseguite in un certo ordine sequenziale e le operazioni di ogni singolo processore apparissero in questa sequenza nell'ordine specificato dal suo programma."

Questa definizione è stata una delle prime affermazioni su cosa costituisse un comportamento "corretto" per un sistema di multiprocessing simmetrico (SMP). È stato riformulato in varie forme, tra cui le seguenti:

La coerenza sequenziale richiede che un multiprocessore a memoria condivisa sembri essere un sistema monoprocessore multiprogrammazione per qualsiasi programma in esecuzione su di esso.

La coerenza sequenziale richiede che:

1. Tutte le istruzioni vengono eseguite in ordine.

2. Ogni operazione di scrittura diventa immediatamente visibile in tutto il sistema.

Implicito nella definizione di coerenza sequenziale era il riconoscimento che i sistemi SMP potevano non essere coerenti sequenzialmente. Le macchine dovrebbero essere sequenzialmente coerenti? Dal punto di vista di quasi vent'anni dopo, le risposte sono contrastanti. Alcuni dicono "sì", che le macchine dovrebbero nascondere le complessità di implementazione al fine di rendere le macchine il più facili da usare possibile. Altri dicono "no", che la violazione di SC consente alle macchine di aumentare considerevolmente le prestazioni mentre allo stesso tempo disturba solo un numero incredibilmente piccolo di programmatori.