La esencia del del problema de la coherencia de cache se basa en que pueden existir varias copias del mismo dato simultáneamente en cachés diferentes, y si los procesadores actualizan sus copias, puede producirse una visión inconsistente de la memoria.
Para evitarlo, se debe avisar a los otros procesadores de que se ha producido una actualización de memoria. Este problema se conoce como problema de coherencia de caché, que es resuelto típicamente por el hardware más que por el sistema operativo
El objetivo de un protocolo de coherencia de caché es situar las variables locales utilizadas recientemente en la caché apropiada y mantenerlas allí para las distintas escrituras y lecturas, al mismo tiempo que se mantiene la consistencia de las variables compartidas que pudieran encontrarse en varias cachés al mismo tiempo.
El enfoque más sencillo consiste en impedir que cualquier dato compartido pase a caché.
Dentro de las soluciones por hardware tenemos 3 protocolos distintos para implementar
Los protocolos de directorio recogen y mantienen la información acerca de dónde residen las copias de las líneas.
Se han explorado dos enfoques básicos del protocolo de sondeo: invalidar-si-escritura (write-invalidate) y actualizar-si-escritura, o difundir-escritura (write-update o write-broadcast).
Con el protocolo MESI, la caché de datos incluye dos bits de estado en la marca, puesto que cada línea puede estar en uno de estos cuatro estados: