La coherencia de la memoria es una propiedad de los sistemas informáticos que contienen más de un procesador o núcleo que tiene acceso a un área de memoria , que consiste en el hecho de que una celda de memoria cambiada por un núcleo/procesador adquiere un nuevo valor para otros núcleos/procesadores.
En los sistemas monoprocesador (más estrictamente de un solo núcleo ), la memoria es manejada por un solo nodo de procesador: solo un nodo puede leer datos de la memoria o escribir datos en la memoria. Después de escribir un nuevo valor en una ubicación de memoria disponible en alguna dirección, la lectura de datos de la misma ubicación recuperará el valor escrito (incluso si el almacenamiento en caché está presente ).
En los sistemas multiprocesador ( multinúcleo ), varios nodos de procesador funcionan simultáneamente y pueden acceder simultáneamente (en paralelo) a una ubicación de memoria (para leer o escribir). Los nodos pueden leer simultáneamente un valor desde una ubicación de memoria, pueden almacenar el valor de lectura en sus cachés. Tan pronto como uno de los nodos escribe un nuevo valor en la celda, los valores almacenados en la memoria local de otros nodos deben marcarse como obsoletos. Se necesita un mecanismo para notificar a todos los nodos que el valor almacenado en sus cachés está desactualizado; dicho mecanismo se denomina protocolo de coherencia de memoria . Si un sistema utiliza dicho protocolo, se dice que el sistema tiene " memoria coherente " ( ing. memoria coherente ).
La naturaleza exacta y el significado del mecanismo de coherencia están determinados por el modelo de coherencia/cohesión implementado en el protocolo. Para escribir programas "paralelos" correctos, los programadores deben saber exactamente qué modelo/método de consistencia/cohesión de caché se utiliza en sus sistemas.
Si el protocolo de coherencia/sincronización se implementa en el hardware, los programadores pueden usar el rastreo de bus para averiguar el modelo de coherencia/conectividad aplicado , pueden leer tablas especiales basadas en directorios . Un ejemplo de un protocolo de coherencia es el protocolo MSI ( ing. m odified, shared, i nvalid ) ( ing. ) y sus variantes ( MESI ( ing . ), MOSI ( ing. ), MOESI , MESIF ).