Coherencia de caché

Requisito previo: memoria caché Coherencia de caché: en un sistema multiprocesador, la inconsistencia de datos puede ocurrir entre niveles adyacentes o dentro del mismo nivel de la jerarquía de memoria. En un multiprocesador de memoria compartida con una memoria caché separada para cada procesador, es posible tener muchas copias de cualquier operando de instrucción: una copia en la memoria principal y una en cada memoria caché. Cuando se cambia una copia de un operando, las otras copias del operando también deben cambiarse. Ejemplo: la caché y la memoria principal pueden tener copias inconsistentes del mismo objeto.

  

Supongamos que hay tres procesadores, cada uno con caché. Supongamos el siguiente escenario:-

  • El procesador 1 lee X: obtiene 24 de la memoria y lo almacena en caché.
  • El procesador 2 lee X: obtiene 24 de la memoria y lo almacena en caché.
  • Nuevamente, el procesador 1 escribe como X: 64, su copia en caché local se actualiza. Ahora, el procesador 3 lee X, ¿qué valor debería obtener?
  • La memoria y el procesador 2 creen que son 24 y el procesador 1 cree que son 64.

Dado que varios procesadores funcionan en paralelo y, de forma independiente, varias memorias caché pueden poseer diferentes copias del mismo bloque de memoria, esto crea un problema de coherencia de memoria caché. La coherencia de caché es la disciplina que garantiza que los cambios en los valores de los operandos compartidos se propaguen por todo el sistema de manera oportuna. Hay tres niveles distintos de coherencia de caché: –

  1. Cada operación de escritura parece ocurrir instantáneamente.
  2. Todos los procesadores ven exactamente la misma secuencia de cambios de valores para cada operando por separado.
  3. Diferentes procesadores pueden ver una operación y asumir diferentes secuencias de valores; esto se conoce como comportamiento no coherente.

Hay varios protocolos de coherencia de caché en el sistema multiprocesador. Estos son :-

  1. Protocolo MSI (Modificado, Compartido, Inválido)
  2. Protocolo MOSI (Modificado, Propietario, Compartido, Inválido)
  3. Protocolo MESI (Modificado, Exclusivo, Compartido, Inválido)
  4. Protocolo MOESI (Modificado, Propietario, Exclusivo, Compartido, Inválido)

Estos términos importantes se analizan de la siguiente manera:

  • Modificado: significa que el valor en el caché está sucio, es decir, el valor en el caché actual es diferente de la memoria principal.
  • Exclusivo: significa que el valor presente en el caché es el mismo que el presente en la memoria principal, es decir, el valor está limpio.
  • Compartido: significa que el valor del caché contiene la copia de datos más reciente y eso es lo que se comparte entre todo el caché y la memoria principal también.
  • Propiedad: significa que el caché actual contiene el bloque y ahora es el propietario de ese bloque, es decir, tiene todos los derechos sobre esos bloques en particular.
  • No válido: indica que el bloque de caché actual en sí mismo no es válido y se debe obtener de otra caché o memoria principal.

Para obtener detalles sobre el protocolo anterior, consulte: – Protocolo de coherencia de caché 

Mecanismos de coherencia: Hay tres tipos de coherencia:

  1. Basado en directorio: en un sistema basado en directorio, los datos que se comparten se colocan en un directorio común que mantiene la coherencia entre los cachés. El directorio actúa como un filtro a través del cual el procesador debe pedir permiso para cargar una entrada desde la memoria primaria a su caché. Cuando se cambia una entrada, el directorio actualiza o invalida las otras cachés con esa entrada.
  2. Snooping: introducido por primera vez en 1983, el snooping es un proceso en el que los cachés individuales monitorean las líneas de dirección para acceder a las ubicaciones de memoria que han almacenado en caché. Se llama protocolo de invalidación de escritura. Cuando se observa una operación de escritura en una ubicación de la que un caché tiene una copia y el controlador de caché invalida su propia copia de la ubicación de memoria indagada.
  3. Snarfing: es un mecanismo en el que un controlador de caché observa tanto la dirección como los datos en un intento de actualizar su propia copia de una ubicación de memoria cuando un segundo maestro modifica una ubicación en la memoria principal. Cuando se observa una operación de escritura en una ubicación en la que un caché tiene una copia del controlador de caché, actualiza su propia copia de la ubicación de memoria snarfed con los nuevos datos.

Publicación traducida automáticamente

Artículo escrito por cu16bcs3173 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *