Protocolo DRAGON

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda

El protocolo de coherencia cache Dragon es el esquema usado en la estación de trabajo multiprocesador Xerox Dragon, desarrollada por Xerox PARC. Este protocolo usa una política de postescritura.

Estados[editar]

En este protocolo, a cada bloque pueden asignarse los siguientes estados:

  • Invalido(I, Invalid): Sin datos en el bloque de cache.
  • Limpio (C, Clean): Limpio, sólo copia.
  • Compartido-Limpio (SC, Shared-Clean): Limpio, puede estar compartido.
  • Sucio (D, Dirty): Modificado, sólo copia.
  • Compartido-Sucio (SD, Shared-Dirty): Modificado, puede que compartido. Esto implica que puede haber otras copias actualizadas de los datos (en el estado Compartido-Limpio), pero la copia de memoria no está actualizada.

Esos cinco estados corresponden a los cinco estados del protocolo MOESI, aunque los superiores listados arriba están en orden IESMO.

Para cada par de caches dada, los estados permitidos de un línea de cache dada son los siguientes (los estados están abreviados en el orden superior):

 I   C   SC   D   SD 
 I  Sí  Sí  Sí  Sí  Sí 
 C  Sí  No No No No No No No No
 SC  Sí  No No Sí  No No Sí 
 D  Sí  No No No No No No No No
 SD  Sí  No No Sí  No No No No

Transiciones[editar]

Para identificar que transición debe hacerse, el protocolo detecta la compartición usando un línea especial de bus llamada Compartida o Shared. Todos los accesos a la memoria principal del bus son espiados por todas las caches, que establecen la línea a compartido (Shared) cuando ocurren un éxito en el espionaje. Las reglas siguientes se aplican a las transiciones:

  • Acierto de lectura (Read hit): el dato es suministrado por la cache local. No hay cambio de estado.
  • Fallo de lectura (Read miss): si hay alguna caché con una copia de la línea de cache, se indica con la línea compartida (Shared) y suministra el dato a la cache solicitante, que mantiene una copia en el estado compartido-limpio (Shared-Clean). La caché suministradora deja su copia de la línea en el estado compartido-sucio (Shared-Dirty) o el estado compartido-limpio (Shared-Clean), en su caso. De lo contrario coge el dato desde la memoria principal y marca la caché limpia (Clean).
  • Acierto de escritura (Write hit): si el estado del dato de la cache está en sucio (Dirty) o limpio (Clean), se actualiza el dato cacheado y se marca como sucio (Dirty). Si el estado es compartido-limpio (Shared-Clean) o compartido-sucio (Shared-Dirty) entonces actualiza las otras cachés. Si la línea compartida (Shared) está establecida, cambia la caché local a compartido-sucio (Shared-Dirty) y todas las otras a compartido-limpio (Shared-Clean), de lo contrario el estado de la caché local cambia a sucio (Dirty).
  • Fallo de escritura (Write miss): si hay alguna caché con una copia, esa caché suministra el dato. La escritora genera una difusión de escritura, la caché local cambia a compartido-sucio (Shared-Dirty) y todas las otras a compartido-limpio (Shared-Clean). De lo contrario, la memoria principal suministra el dato y el estado de la cache local cambia a sucio (Dirty).

Referencias[editar]

Véase también[editar]