Protocolos de Coherencia de Caché
Los protocolos de coherencia de caché mantienen la consistencia de las múltiples cachés privadas en un multiprocesador de memoria compartida, asegurando que cuando un núcleo escribe en una ubicación de memoria, otros núcleos no continúen leyendo copias obsoletas en caché.
Definition
Un protocolo de coherencia de caché es un mecanismo que mantiene una vista consistente de la memoria compartida a través de las cachés privadas de múltiples procesadores, rastreando el estado de cada bloque en caché y coordinando lecturas y escrituras para que una escritura se haga visible y no se utilicen copias antiguas.
Scope
Este tema cubre el problema de coherencia y sus soluciones: protocolos de invalidación versus actualización, protocolos de snooping en un bus compartido, protocolos basados en directorio para sistemas escalables, y las máquinas de estado canónicas como MSI y MESI. Trata cómo el hardware preserva una vista coherente de la memoria a través de las cachés. Excluye el ordenamiento de operaciones a través de direcciones (consistencia de memoria, bajo memoria-compartida-y-coherencia) y políticas de caché única (organización y políticas de caché).
Core questions
- ¿Qué significa que las cachés sean coherentes y por qué se necesita la coherencia?
- ¿En qué se diferencian los protocolos de invalidación y actualización?
- ¿Cómo utilizan los protocolos de snooping una interconexión compartida para mantener la coherencia?
- ¿Cómo escalan los protocolos de directorio la coherencia más allá de un bus compartido?
Key concepts
- problema de coherencia
- protocolos de invalidación vs actualización
- protocolos de snooping
- protocolos basados en directorio
- estados MSI y MESI
- bus e interconexión compartidos
- falso compartimiento
- serialización de escritura
Key theories
- Coherencia basada en estados (MSI/MESI)
- Cada bloque en caché se rastrea en un pequeño conjunto de estados (como Modificado, Exclusivo, Compartido, Inválido); las lecturas y escrituras desencadenan transiciones de estado y mensajes de coherencia que aseguran como máximo un escritor y que los lectores nunca vean datos obsoletos.
Mechanisms
Cada bloque de caché lleva un estado de coherencia. En los protocolos de snooping, cada caché observa (snoops) las transacciones del bus y actualiza o invalida sus copias en consecuencia; en los protocolos de directorio, un directorio registra qué cachés contienen cada bloque y envía mensajes de coherencia dirigidos. Una escritura en un bloque compartido primero invalida otras copias (en un protocolo de invalidación), otorgando al escritor la propiedad exclusiva antes de que modifique los datos.
Clinical relevance
La coherencia hace que el multiprocesamiento de memoria compartida sea programable: el software puede tratar la memoria como un único almacén compartido mientras el hardware oculta la existencia de múltiples cachés. Sin embargo, el tráfico de coherencia y efectos como el falso compartimiento pueden dominar el rendimiento en programas paralelos, por lo que la conciencia de la coherencia es importante para el software multihilo escalable.
History
Los protocolos de coherencia surgieron con los multiprocesadores basados en bus en la década de 1980, donde los esquemas de snooping como write-invalidate y la familia MESI se convirtieron en estándar. A medida que los sistemas escalaron más allá de un solo bus, se desarrollaron protocolos basados en directorio para la memoria compartida distribuida, y la coherencia sigue siendo un problema de diseño central en los procesadores multinúcleo.
Debates
- Coherencia por snooping versus por directorio
- El snooping es simple y rápido en sistemas pequeños de bus compartido, pero no escala, mientras que los directorios escalan a muchos núcleos a costa de la complejidad y el almacenamiento; los diseños grandes a menudo combinan enfoques jerárquicos o híbridos.
Key figures
- David E. Culler
- Mark D. Hill
- James R. Goodman
- John L. Hennessy
Related topics
Seminal works
- hennessy2019
- culler1999
Frequently asked questions
- ¿Cuál es la diferencia entre coherencia y consistencia?
- La coherencia se refiere a una única ubicación de memoria: todas las cachés deben eventualmente acordar su valor y ver las escrituras en ella en orden. La consistencia (el modelo de consistencia de memoria) se refiere al ordenamiento de las operaciones a través de diferentes ubicaciones según lo observado por diferentes procesadores. La coherencia es necesaria pero no suficiente para un modelo de consistencia bien definido.
- ¿Qué es el falso compartimiento?
- El falso compartimiento ocurre cuando variables independientes utilizadas por diferentes núcleos se encuentran en el mismo bloque de caché. Debido a que la coherencia opera a granularidad de bloque, las escrituras de un núcleo invalidan el bloque en otros, aunque toquen variables diferentes, causando tráfico de coherencia innecesario y ralentización.