El protocolo de coherencia caché 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 caché.
  • 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 MESI, aunque los superiores listados arriba están en orden IESMO.

Para cada par de cachés dada, los estados permitidos de una línea de caché 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 una línea especial de bus llamada Compartida o Shared. Todos los accesos a la memoria principal del bus son espiados por todas las cachés, que establecen la línea ha 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 caché local. No hay cambio de estado.
  • Fallo de lectura (Read miss): si hay alguna caché con una copia de la línea de caché, se indica con la línea compartida (Shared) y suministra el dato a la caché 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 caché 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 caché local cambia a sucio (Dirty).

Referencias

editar

Véase también

editar

📚 Artikel Terkait di Wikipedia

Arquitectura shared nothing

DataGrids, también conocido como memoria caché distribuida. Michael Stonebraker (UC Berkeley), The Case for Shared Nothing Architecture (PDF). Originally

Área Global del Sistema

Este caché también se administra mediante el algoritmo LRU. El tamaño del caché está gestionado internamente por el servidor, pero es parte del shared pool

Protocolo MESI

(Exclusivo): La línea de caché sólo se encuentra en la caché actual, pero está "limpia"; coincide con el valor de la memoria principal. S - Shared (Compartido):

Memoria compartida

Consultado el 6 de junio de 2013.  Shared Memory Functions in PHP-API Esta obra contiene una traducción derivada de «Shared_memory» de Wikipedia en inglés

NUMA

significa el incremento de memoria caché de alta velocidad y el uso de algoritmos más sofisticados para evitar los errores de caché, aunque el drástico aumento

Puntero inteligente

forma transparente al usuario. Sintaxis: boost::shared_ptr<MiClase> MiPuntero (new MiClase(1)); boost::shared_ptr<MiClase> OtroPuntero = MiPuntero; MiPuntero

Stanford DASH

Stanford DASH fue un multiprocesador coherente de caché desarrollado a fines de la década de 1980 por un grupo dirigido por Anoop Gupta, John L. Hennessy

Versant (software)

memoria: En memoria del cliente Object Cache: Mejora el acceso a objetos durante las transacciones Object Cache Table: Una tabla de apuntadores a todos