La coerenza della memoria è un problema che si verifica in un computer quando un processore tenta di esaminare un settore di memoria. Questo problema si verifica solo su sistemi multicore o computer che dispongono di più unità di elaborazione centrale (CPU). Quando più processori esaminano lo stesso settore di memoria e uno aggiorna il settore, l’altro potrebbe rimanere con una vecchia versione della memoria del computer. Per risolvere questo problema, vengono utilizzate regole di coerenza per garantire che i processori non accedano alla stessa memoria o che gli aggiornamenti siano coerenti tra loro. Esistono diversi modelli di coerenza, quindi i programmatori e gli sviluppatori di computer devono conoscere il modello esatto utilizzato.
Il problema della coerenza della memoria si verifica solo su computer che utilizzano almeno due CPU a causa del modo in cui accedono alla memoria. Quando una CPU accede a un settore di memoria, è in grado di prendere, utilizzare e alterare la memoria senza alcun conflitto, perché non ci sono altri componenti hardware in competizione per la memoria. Se vengono utilizzate due CPU, le due CPU possono acquisire lo stesso settore di memoria. Sebbene non ci siano problemi con le due CPU che condividono la memoria, si verifica un problema se una CPU aggiorna la memoria. Ciò lascia la seconda CPU con memoria obsoleta che, se lasciata deselezionata, può far sì che l’intero computer abbia due versioni separate e in conflitto di memoria del computer.
Esistono schemi di programmazione realizzati appositamente per correggere la coerenza della memoria, che può essere un grosso problema. Sono note collettivamente come regole di consistenza della memoria e ne esistono molte versioni. Nel complesso, ogni versione dice alle CPU multiple come condividere correttamente la memoria del computer senza causare il problema di coerenza della memoria. Questo può essere fatto aggiornando entrambe le versioni della memoria quando una versione viene modificata o impedendo alle CPU di accedere alla stessa memoria contemporaneamente.
Sebbene l’utilizzo delle regole di coerenza aiuti a evitare il problema della coerenza della memoria, ne deriva un altro problema. Ogni set di coerenza ha una programmazione diversa e regole diverse, quindi i programmatori che creano programmi o scrivono codice che si occupano direttamente delle CPU dovranno adattare la codifica alle regole di coerenza esatte. In caso contrario, ciò può sovrascrivere la coerenza o causare un grave conflitto tra la codifica del programmatore e le regole di coerenza e il computer potrebbe smettere di funzionare.