En la literatura sobre protocolos de coherencia de caché , Write-Once fue el primer protocolo MESI definido. Tiene la optimización de ejecutar la escritura simultánea en la primera escritura y una escritura diferida en todas las escrituras posteriores, lo que reduce el tráfico general del bus en escrituras consecutivas en la memoria de la computadora . Fue descrito por primera vez por James R. Goodman en (1983). [1] Los protocolos de coherencia de caché son un tema importante en los sistemas de multiprocesamiento simétrico , donde cada CPU mantiene un caché de la memoria.
Estados
En este protocolo, cada bloque de la caché local se encuentra en uno de estos cuatro estados:
- No válido : este bloque tiene una copia incoherente de la memoria.
- Válido : este bloque tiene una copia coherente de la memoria. Es posible que los datos se compartan, pero su contenido no se modifica.
- Reservado : el bloque es la única copia de la memoria, pero sigue siendo coherente. No se necesita reescritura si se reemplaza el bloque.
- Sucio : El bloque es la única copia de la memoria y es incoherente. Esta copia se escribió una o más veces. Este es el único estado que genera una escritura diferida cuando el bloque se reemplaza en la caché.
Estos estados tienen exactamente el mismo significado que los cuatro estados del protocolo MESI (simplemente se enumeran en orden inverso), pero esta es una forma simplificada que evita la operación de lectura para propiedad. En cambio, toda la invalidación se realiza mediante escrituras en la memoria principal.
Para cualquier par de cachés, los estados permitidos de una línea de caché determinada son los siguientes (abreviados en el orden anterior):
I | V | R | D | |
---|---|---|---|---|
I | ||||
V | ||||
R | ||||
D |
Transiciones
El protocolo sigue algunas reglas de transición para cada evento:
- Acierto de lectura : la información la proporciona la caché actual. Sin cambio de estado.
- Error de lectura : los datos se leen de la memoria principal. La lectura es fisgoneada por otros cachés; si alguno de ellos tiene la línea en estado sucio , la lectura se interrumpe el tiempo suficiente para volver a escribir los datos en la memoria antes de que se le permita continuar. Todas las copias en los estados Sucio o Reservado se establecen en el estado Válido .
- Acierto de escritura : si la información en la caché está en estado sucio o reservado , la línea de caché se actualiza en su lugar y su estado se establece en sucio sin actualizar la memoria. Si la información está en estado válido , se ejecuta una operación de escritura completa actualizando el bloque y la memoria y el estado del bloque se cambia a Reservado . Otros cachés fisgonean la escritura y establecen sus copias en No válido .
- Error de escritura : una escritura de línea de caché parcial se maneja como un error de lectura (si es necesario para recuperar la parte no escrita de la línea de caché) seguida de un acierto de escritura. Esto deja todos los demás cachés en estado no válido y el caché actual en estado reservado .
Esta es una variante del protocolo MESI, pero no existe una operación explícita de lectura para propiedad o de invalidación de transmisión para llevar una línea a la caché en el estado Exclusivo sin realizar una escritura en la memoria principal. En cambio, la primera escritura en una línea de caché válida (también conocida como compartida ) realiza una escritura en la memoria, lo que invalida implícitamente otras cachés. Después de eso, la línea está en el estado Reservado ( Exclusivo ) y se pueden realizar más escrituras sin hacer referencia a la memoria principal, dejando la línea de caché en el estado Sucio ( Modificado ).
Referencias
- Archibald, J .; Baer, JL (noviembre de 1986). "Protocolos de coherencia de caché: Evaluación mediante un modelo de simulación multiprocesador". ACM Trans. Computación. Syst . 4 (4): 273-298. doi : 10.1145 / 6513.6514 .
- Goodman, JR (1983). "Uso de la memoria caché para reducir el tráfico de la memoria del procesador". Actas del décimo simposio internacional anual sobre arquitectura de computadoras - ISCA '83 . Simposio internacional sobre arquitectura de computadoras: Estocolmo, Suecia, 13-17 de junio de 1983. págs. 124-131. doi : 10.1145 / 800046.801647 . ISBN 0-89791-101-6.