Coherencia de caché

Coherencia de caché

referencia

Coherencia de caché - Wikipedia

Espiar en el autobús - Wikipedia

Coherencia de caché basada en directorios - Wikipedia

Protocolos de coherencia de caché (ejemplos) - Wikipedia

Coherencia de caché: descripción general | Temas ScienceDirect

Descripción general

En un  sistema multiprocesador de memoria compartida  con una memoria caché separada para cada procesador, es posible tener muchas copias de los datos compartidos: una copia en la memoria principal y otra en la caché local de cada procesador que la solicitó. Cuando se cambia una de las copias de datos, las otras copias deben reflejar ese cambio. La coherencia de la caché es la disciplina que garantiza que los cambios en los valores de los operandos (datos) compartidos se propaguen por todo el sistema de manera oportuna. [1]

Los siguientes son los requisitos para la coherencia de la caché: [2]

Escritura de propagación

Los cambios en los datos de cualquier caché deben propagarse a otras copias (de esa línea de caché) en las cachés de pares.

Para la asignación de memoria compartible, si un núcleo la cambia, todos los núcleos/solicitantes deben ver este cambio.

Serialización de transacciones

Todos los procesadores deben ver las lecturas/escrituras en una única ubicación de memoria en el mismo orden.

Para la lectura y escritura de la misma ubicación de memoria compartible, el orden de lectura y escritura visto por todos los núcleos es el mismo. Al leer después de escribir, los datos leídos son los últimos datos escritos.

El siguiente párrafo presenta la propagación de escritura:

En un sistema multiprocesador, considere que más de un procesador ha almacenado en caché una copia de la ubicación de memoria X. Las siguientes condiciones son necesarias para lograr la coherencia de la caché: [ 4]

  1. En una lectura realizada por un procesador P en una ubicación X que sigue a una escritura realizada por el mismo procesador P en X, sin que se produzcan escrituras en X por parte de otro procesador entre las instrucciones de escritura y lectura realizadas por P, X siempre debe devolver el valor. escrito por p.
  2. En una lectura realizada por un procesador P1 en la ubicación X que sigue a una escritura realizada por otro procesador P2 en X, sin que ningún procesador realice otras escrituras en X entre los dos accesos y con la lectura y la escritura suficientemente separadas, X siempre debe devuelve el valor escrito por P2. Esta condición define el concepto de visión coherente de la memoria. La propagación de las escrituras a la ubicación de la memoria compartida garantiza que todos los cachés tengan una vista coherente de la memoria. Si el procesador P1 lee el antiguo valor de X, incluso después de la escritura de P2, podemos decir que la memoria es incoherente.

La coherencia es la premisa de la coherencia. La explicación es la siguiente:

Por lo tanto, para satisfacer la serialización de transacciones y, por lo tanto, lograr la coherencia de la caché, se debe cumplir la siguiente condición junto con las dos anteriores mencionadas en esta sección:

  • Las escrituras en la misma ubicación deben secuenciarse. En otras palabras, si la ubicación X recibió dos valores diferentes A y B, en este orden, de dos procesadores cualesquiera, los procesadores nunca podrán leer la ubicación X como B y luego leerla como A. La ubicación X debe verse con los valores A y B en ese orden. [

Mecanismos de coherencia

Los dos mecanismos más comunes para garantizar la coherencia son el espionaje  y  el basado en directorios , y cada uno tiene sus propias ventajas e inconvenientes. Los protocolos basados ​​en espionaje tienden a ser más rápidos, si hay suficiente  ancho de banda  está disponible, ya que todas las transacciones son una solicitud/respuesta vista por todos los procesadores. El inconveniente es que el espionaje no es escalable. Cada solicitud debe transmitirse a todos los nodos de un sistema, lo que significa que a medida que el sistema crece, el tamaño del bus (lógico o físico) y el ancho de banda que proporciona deben crecer. Los directorios, por otro lado, tienden a tener latencias más largas (con una solicitud/reenvío/respuesta de 3 saltos) pero utilizan mucho menos ancho de banda ya que los mensajes son punto a punto y no se transmiten. Por este motivo, muchos de los sistemas más grandes (>64 procesadores) utilizan este tipo de coherencia de caché.

Espiar [editar] Espiar en el autobús - Wikipedia

Artículo principal:  espionaje en autobuses  

Introducido por primera vez en 1983, [7]  el espionaje es un proceso en el que los cachés individuales monitorean las líneas de direcciones en busca de accesos a ubicaciones de memoria que han almacenado en caché . [4]  Los  protocolos de invalidación de escritura  y  los protocolos de actualización de escritura  utilizan este mecanismo.

Para el mecanismo de espionaje, un filtro de espionaje reduce el tráfico de espionaje manteniendo una pluralidad de entradas, cada una de las cuales representa una línea de caché que puede ser propiedad de uno o más nodos. Cuando se requiere el reemplazo de una de las entradas, el filtro snoop selecciona el reemplazo de la entrada que representa la línea o líneas de caché propiedad de la menor cantidad de nodos, según lo determinado a partir de un vector de presencia en cada una de las entradas. Se utiliza un algoritmo temporal o de otro tipo para refinar la selección si más de una línea de caché pertenece a la menor cantidad de nodos. [8]

Tipos de protocolos de espionaje [ editar ]

Existen dos tipos de protocolos de espionaje según la forma de gestionar una copia local de una operación de escritura:

Invalidar escritura [editar]

Cuando un procesador escribe en un bloque de caché compartido, todas las copias compartidas en los otros cachés se  invalidan  mediante la vigilancia del bus. Este método garantiza que un procesador solo pueda leer y escribir exclusivamente una copia de un dato. Todas las demás copias en otras cachés quedan invalidadas. Este es el protocolo de espionaje más utilizado. Los protocolos MSI MESI MOSI MOESI MESIF  pertenecen a esta categoría.

Actualización de escritura [editar]

Cuando un procesador escribe en un bloque de caché compartido, todas las copias compartidas de los otros cachés se actualizan mediante la vigilancia del bus. Este método transmite datos de escritura a todos los cachés de un bus. Incurre en un mayor tráfico de bus que el protocolo de invalidación de escritura. Por eso este método es poco común. Los protocolos Dragon  y  Firefly  pertenecen a esta categoría. [3]

Basado en directorio [editar]

Artículo principal:  coherencia de caché basada en directorios

En un sistema basado en directorios, los datos que se comparten se colocan en un directorio común que mantiene la coherencia entre las 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.

Un filtro de vigilancia determina si un espía necesita comprobar su etiqueta de caché o no . Un filtro de vigilancia es una estructura basada en directorios y monitorea todo el tráfico coherente para realizar un seguimiento de los estados de coherencia de los bloques de caché. Significa que el filtro snoop conoce los cachés que tienen una copia de un bloque de caché. Por lo tanto, puede evitar que los cachés que no tienen la copia de un bloque de caché realicen espionaje innecesario.. Hay tres tipos de filtros según la ubicación de los filtros de snoop. Uno es un filtro de origen que se ubica en el lado de la caché y realiza el filtrado antes de que el tráfico de coherencia llegue al bus compartido. Otro es un filtro de destino que se ubica en las cachés del receptor y evita búsquedas innecesarias de etiquetas de caché en el núcleo del receptor, pero este tipo de filtrado no logra evitar el mensaje de coherencia inicial desde la fuente. Por último, los filtros dentro de la red eliminan el tráfico de coherencia de forma dinámica dentro del bus compartido. [5] El filtro snoop también se clasifica en inclusivo y exclusivo. El filtro de vigilancia inclusivo realiza un seguimiento de la presencia de bloques de caché en las cachés. Sin embargo, el filtro snoop exclusivo monitorea la ausencia de bloques de caché en las cachés. En otras palabras, un acierto en el filtro de vigilancia inclusivo significa que el bloque de caché correspondiente está retenido por cachés. Por otro lado, un acierto en el filtro de snoop exclusivo significa que ningún caché tiene el bloque de caché solicitado.
 

en conclusión

La coherencia de la caché significa que los datos vistos por todos los núcleos son consistentes. Tiene dos aspectos: 1) los datos escritos por un núcleo deben ser vistos por otros núcleos; 2) el orden de lectura y escritura visto por todos los núcleos es el mismo.

Hay dos mecanismos de implementación: 1) snoop; 2) basado en directorio (filtro snoop) . De hecho, todos son espías, pero este último filtra el espía.

Hay dos tipos de snoop: 1) escritura no válida; 2) escritura de actualización. El primero es relativamente simple y se usa más.

Supongo que te gusta

Origin blog.csdn.net/m0_38037810/article/details/126448686
Recomendado
Clasificación