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.
De clases anteriores se definieron dos políticas de escritura usuales:
Una política de post-escritura puede ocasionar inconsistencia. Si dos cachés contienen la misma línea, y la línea se actualiza en una caché, la otra caché tendrá un valor no válido. Las lecturas siguientes a dicha línea producirán resultados no válidos. Incluso con la política de escritura directa puede existir inconsistencia, a no ser que las otras cachés comprueben los accesos a la memoria principal o reciban algún tipo de notificación directa de la escritura realizada
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.
Los esquemas software de coherencia de caché intentan evitar la necesidad de circuitería y lógica hardware adicional dejando que el compilador y el sistema operativo se encarguen del problema. Las propuestas software son atractivas porque transfieren el costo de la detección de posibles problemas desde el hardware al software.
Por otra parte, en el momento de la compilación, el software generalmente debe tomar ciertas decisiones conservadoras que pueden ocasionar una utilización ineficiente de la caché.
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