Definición
Un mecanismo y conjunto de reglas que garantizan que múltiples copias en caché de ubicaciones de memoria compartida en un sistema multiprocesador o multicore permanezcan mutuamente consistentes según el modelo de memoria y coherencia elegido, de modo que lecturas y escrituras se comporten de forma previsible entre cachés.

Principio

Principio
Los protocolos de coherencia imponen invariantes sobre la visibilidad de escrituras a la misma ubicación entre cachés: los enfoques comunes usan estados (p. ej. MESI: Modified, Exclusive, Shared, Invalid), transiciones en lecturas/escrituras y mensajes (snooping en un bus o basado en directorio) para implementar políticas write‑invalidate o write‑update. El protocolo debe interactuar con el modelo de consistencia de memoria y las garantías de ordenación del sistema.

Demostración

Demostración
Instancias concretas: familias MESI usadas en cachés con snooping en un bus; variantes MSI/MESIF; coherencia basada en directorio para máquinas NUMA/masivamente multicore; compensaciones write‑invalidate vs write‑update ilustradas por una variable compartida actualizada con frecuencia frente a un patrón de mucho lectura.

Aplicación incorrecta

Aplicación incorrecta
Confundir coherencia con modelos de consistencia de más alto nivel—la coherencia asegura la visibilidad coherente de actualizaciones de una ubicación, pero no garantiza por sí sola el orden global requerido por la consistencia secuencial. Suponer que la coherencia elimina la necesidad de sincronización: las condiciones de carrera y problemas de atomicidad persisten aun con un protocolo de coherencia correcto.

Consecuencia

Consecuencia
Un protocolo de coherencia correcto simplifica el razonamiento sobre actualizaciones de una sola ubicación y permite una programación de memoria compartida más intuitiva, pero impone costes en ancho de banda, latencia y escalabilidad y define el comportamiento de migración/evicción de líneas de caché que afecta al rendimiento.

Inversión

Inversión
Caches no coherentes o gestionados por software (p. ej. paso de mensajes explícito, arquitecturas distribuidas shared‑nothing) eliminan la coherencia automática por hardware: capas de software o protocolos deben garantizar coherencia a la granularidad de la aplicación, cambiando complejidad hardware por escalabilidad o control explícito.

Límite

Límite
Se aplica al hardware y software de bajo nivel que gestionan copias caché de memoria compartida en sistemas con espacio de direcciones compartido coherente; excluye coherencia de caches a nivel superior entre máquinas sin espacio de direcciones compartido (CDNs, caches web) y no define por sí mismo restricciones de ordenación más allá de la coherencia por ubicación.

Tensión semántica

Tensión semántica
Tensión entre coherencia (visibilidad por ubicación) y consistencia (ordenación global); otra tensión es entre write‑invalidate (menos tráfico para escritores) y write‑update (menor latencia para lectores), además de interacciones con modelos de memoria relajados y requisitos de rendimiento.

Síntesis

Síntesis
Un protocolo de coherencia de caché es el conjunto de reglas y la maquinaria de estados/mensajería que mantiene consistentes las copias en caché de las mismas ubicaciones de memoria entre procesadores, típicamente mediante autómatas de estado (MESI/MSI) y esquemas de snooping o directorio, equilibrando la corrección de visibilidad por ubicación con costes de ancho de banda y escalabilidad mientras coexiste con el modelo de consistencia del sistema.