Coherencia basada en directorios


La coherencia basada en directorios es un mecanismo para manejar el problema de coherencia de la caché en la memoria compartida distribuida (DSM), también conocida como Acceso a memoria no uniforme (NUMA). Otra forma popular es utilizar un tipo especial de bus de computadora entre todos los nodos como un "bus compartido" (también conocido como bus del sistema ). [1] La coherencia basada en directorios utiliza un directorio especial para servir en lugar del bus compartido en los protocolos de coherencia basados ​​en bus. Ambos diseños utilizan el medio correspondiente (es decir, directorio o bus) como herramienta para facilitar la comunicación entre diferentes nodos., y garantizar que el protocolo de coherencia funcione correctamente en todos los nodos de comunicación. En la coherencia de caché basada en directorios, esto se hace utilizando este directorio para realizar un seguimiento del estado de todos los bloques de caché , el estado de cada bloque incluye en qué " estado " de coherencia de caché se encuentra ese bloque y qué nodos comparten ese bloque en ese time, que se puede utilizar para eliminar la necesidad de transmitir todas las señales a todos los nodos, y solo enviarlo a los nodos que están interesados ​​en este único bloque.

De acuerdo con la discusión anterior, está claro que el uso de sistemas basados ​​en bus parece más atractivo para sistemas relativamente pequeños. Sin embargo, los sistemas basados ​​en directorios se vuelven cruciales cuando el sistema se escala y aumenta la cantidad de nodos. Por lo tanto, existe una especie de compensación entre la simplicidad y la escalabilidad cuando se compara entre diseños de coherencia de caché basados ​​en bus y en directorio. [1]

La idea de los sistemas de coherencia de caché basados ​​en directorios comenzó hace mucho tiempo. La idea de DASH ( D irectorio A rchitecture para SH ared-memoria) fue propuesto por primera vez por CK Tang [2] en la década de 1970 mediados. Sin embargo, aplicarlo a la coherencia de la caché se propuso unos años más tarde, específicamente en 1978, cuando investigadores de la Universidad de Stanford propusieron la primera versión de este sistema de coherencia llamado Stanford DASH , en un artículo [3] que describía el sistema con las dificultades y mejoras. asociado con tales diseños. Además de este enfoque, se realizaron varios intentos para proporcionar sistemas escalables. Por ejemplo, BBN Butterfly [4]que se introdujo en 1985, e IBM PR3 [5] que se introdujo en 1987, son algunos ejemplos de sistemas multiprocesador escalables . Sin embargo, ambos sistemas tienen un inconveniente; Por ejemplo, BBN Butterfly no tiene cachés. De manera similar, IBM PR3 no proporciona coherencia de caché de hardware, lo que limita el rendimiento de ambos diseños, especialmente cuando se emplean procesadores de alto rendimiento. [6]

Las limitaciones de otros competidores facilitaron la elección de los sistemas basados ​​en DASH al diseñar sistemas de coherencia de caché y otros sistemas que necesitan escalabilidad en nodos basados ​​en caché. En 1985, James Archibald [7] y Jean-Loup Baer de la Universidad de Washington publicaron un artículo [8] que propone una variación más económica, expandible y modular del enfoque del "directorio global" en el término de uso de hardware en el diseño.

En 1992, Daniel Lenoski de la Universidad de Stanford publicó un artículo [9] proponiendo avances en los protocolos de coherencia de caché para sistemas basados ​​en directorios. En un artículo de 1996, [10] presentó el diseño de SGI Origin 2000 , una familia de servidores que emplean coherencia de caché basada en directorios. El posterior Origin 3000 [11] se introdujo en julio de 2000.


[12] Diagrama general del esquema de coherencia basado en directorios que muestra varios actores y mensajes.
Imagen 1: Diagrama de transición de estado para el protocolo basado en directorios