Tengo entendido que la principal diferencia entre los dos métodos es que en el método de "escritura directa" los datos se escriben en la memoria principal a través de la caché inmediatamente, mientras que en la "escritura diferida" los datos se escriben en un "último tiempo".
Todavía tenemos que esperar la memoria en "último tiempo", entonces ¿Cuál es el beneficio de la "escritura directa"?
caching
cpu-architecture
cpu-cache
Naftaly
fuente
fuente
write back
tiene un mejor rendimiento.write back
tiene un mejor rendimiento, porque escribir en la memoria principal es mucho más lento que escribir en el caché de la CPU, y los datos pueden ser cortos durante (los medios pueden cambiar nuevamente antes y no es necesario poner la versión anterior en la memoria). Es complejo, pero más sofisticado, la mayor parte de la memoria en la CPU moderna utiliza esta política.Respuestas:
El beneficio de la escritura directa en la memoria principal es que simplifica el diseño del sistema informático. Con la escritura simultánea, la memoria principal siempre tiene una copia actualizada de la línea. Entonces, cuando se realiza una lectura, la memoria principal siempre puede responder con los datos solicitados.
Si se utiliza la escritura diferida, a veces los datos actualizados se encuentran en la memoria caché del procesador y, a veces, en la memoria principal. Si los datos están en la memoria caché de un procesador, entonces ese procesador debe evitar que la memoria principal responda a la solicitud de lectura, porque la memoria principal puede tener una copia obsoleta de los datos. Esto es más complicado que la escritura completa.
Además, la escritura directa puede simplificar el protocolo de coherencia de la caché porque no necesita el estado Modificar . El estado Modificar registra que la caché debe volver a escribir la línea de la caché antes de invalidar o desalojar la línea. En la escritura simultánea, una línea de caché siempre se puede invalidar sin volver a escribir, ya que la memoria ya tiene una copia actualizada de la línea.
Una cosa más: en un software de arquitectura de escritura diferida que escribe en registros de E / S asignados en memoria, se deben realizar pasos adicionales para asegurarse de que las escrituras se envíen inmediatamente fuera de la caché. De lo contrario, las escrituras no son visibles fuera del núcleo hasta que otro procesador lee la línea o la línea es expulsada.
fuente
Veamos esto con la ayuda de un ejemplo. Supongamos que tenemos un caché mapeado directamente y se usa la política de escritura. Entonces tenemos un bit válido, un bit sucio, una etiqueta y un campo de datos en una línea de caché. Supongamos que tenemos una operación: escribe A (donde A se asigna a la primera línea de la caché).
Lo que sucede es que los datos (A) del procesador se escriben en la primera línea de la caché. Se establecen los bits válidos de bit y tag. El bit sucio se establece en 1.
El bit sucio simplemente indica que la línea de caché se escribió desde la última vez que se introdujo en la caché.
Ahora suponga que se realiza otra operación: leer E (donde E también se asigna a la primera línea de caché)
Dado que tenemos caché mapeado directo, la primera línea puede simplemente ser reemplazada por el bloque E que se traerá de la memoria. Pero dado que el bloque escrito por última vez en la línea (bloque A) aún no está escrito en la memoria (indicado por el bit sucio), el controlador de caché primero emitirá una escritura de nuevo en la memoria para transferir el bloque A a la memoria, luego reemplazará la línea con el bloque E emitiendo una operación de lectura en la memoria. El bit sucio ahora se establece en 0.
Por tanto, la política de reescritura no garantiza que el bloque sea el mismo en la memoria y su línea de caché asociada. Sin embargo, siempre que la línea esté a punto de ser reemplazada, primero se realiza una escritura.
Una política de escritura completa es todo lo contrario. Según esto, la memoria siempre tendrá un dato actualizado. Es decir, si se escribe el bloque de caché, la memoria también se escribirá en consecuencia. (sin uso de trozos sucios)
fuente
tal vez este artículo pueda ayudarte a vincular aquí
Escritura simultánea: la escritura se realiza de forma sincrónica tanto en la memoria caché como en el almacén de respaldo.
Escritura no simultánea (o escritura diferida): la escritura se realiza solo en la caché. Un bloque de caché modificado se vuelve a escribir en la tienda, justo antes de reemplazarlo.
Escritura simultánea: cuando se actualizan los datos, se escriben tanto en la memoria caché como en el almacenamiento de fondo. Este modo es fácil de operar, pero es lento en la escritura de datos porque los datos deben escribirse tanto en la memoria caché como en el almacenamiento.
Escritura no simultánea: cuando se actualizan los datos, solo se escriben en la caché. Los datos modificados se escriben en el almacenamiento de fondo solo cuando los datos se eliminan de la caché. Este modo tiene una velocidad de escritura de datos rápida, pero los datos se perderán si ocurre un corte de energía antes de que los datos actualizados se escriban en el almacenamiento.
fuente
La escritura no simultánea y la escritura simultánea describen las políticas cuando se produce un acierto de escritura , es decir, cuando la memoria caché tiene la información solicitada. En estos ejemplos, asumimos que un solo procesador está escribiendo en la memoria principal con caché.
Escritura simultánea : la información se escribe en la memoria caché y en la memoria, y la escritura finaliza cuando ambos han terminado. Esto tiene la ventaja de ser más simple de implementar, y la memoria principal siempre es consistente (sincronizada) con la caché (para el caso de un procesador, si algún otro dispositivo modifica la memoria principal, entonces esta política no es suficiente), y un error de lectura nunca resulta en escrituras en la memoria principal. La desventaja obvia es que cada golpe de escritura tiene que realizar dos escrituras, una de las cuales accede a la memoria principal más lenta.
Escritura no simultánea: la información se escribe en un bloque de la caché. El bloque de caché modificado solo se escribe en la memoria cuando se reemplaza (en efecto, una escritura diferida ). Un bit especial para cada bloque de caché, el bit sucio , marca si el bloque de caché se ha modificado o no mientras estaba en el caché. Si no se establece el bit sucio, el bloque de caché está "limpio" y un error de escritura no tiene que escribir el bloque en la memoria.
La ventaja es que las escrituras pueden ocurrir a la velocidad de la caché, y si se escribe dentro del mismo bloque, solo se necesita una escritura en la memoria principal (cuando se reemplaza el bloque anterior). Las desventajas son que este protocolo es más difícil de implementar, la memoria principal puede no ser consistente (no sincronizada) con la caché, y las lecturas que resultan en reemplazo pueden causar escrituras de bloques sucios en la memoria principal.
Las políticas para un error de escritura se detallan en mi primer enlace.
Estos protocolos no se ocupan de los casos con múltiples procesadores y múltiples cachés, como es común en los procesadores modernos. Para ello, se requieren mecanismos de coherencia de caché más complicados . Los cachés de escritura directa tienen protocolos más simples, ya que una escritura en el caché se refleja inmediatamente en la memoria.
Buenos recursos:
fuente
La escritura diferida es más compleja y requiere un protocolo de coherencia de caché (MOESI) complicado, pero vale la pena, ya que hace que el sistema sea rápido y eficiente.
El único beneficio de Write-Through es que hace que la implementación sea extremadamente simple y no se requiere un protocolo de coherencia de caché complicado.
fuente