data cache caching computer-architecture cpu-architecture cpu-cache

caching - data - drupal 8 cache



¿Reescritura vs almacenamiento en caché de escritura? (5)

Según tengo entendido, 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 memoria caché de inmediato, mientras que en los datos de "reescritura" se escriben en un "último momento".

Todavía tenemos que esperar la memoria en el "último tiempo", entonces, ¿cuál es el beneficio de la "escritura directa"?


El beneficio de la escritura en la memoria principal es que simplifica el diseño del sistema informático. Con la escritura, 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 reescritura, 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 una memoria caché del procesador, entonces ese procesador debe evitar que la memoria principal responda a la solicitud de lectura, porque la memoria principal podría tener una copia obsoleta de los datos. Esto es más complicado que la escritura.

Además, la escritura puede simplificar el protocolo de coherencia de caché porque no necesita el estado Modificar . El estado Modificar registra que el caché debe reescribir la línea del caché antes de invalidar o expulsar la línea. En la escritura, 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 reescritura que escribe en registros de E / S mapeados en memoria, debe tomar medidas adicionales para asegurarse de que las escrituras se envíen inmediatamente desde el caché. De lo contrario, las escrituras no serán visibles fuera del núcleo hasta que la línea sea leída por otro procesador o la línea sea desalojada.


La reescritura 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.


La reescritura y la reescritura describen políticas cuando se produce una coincidencia de escritura , es decir, cuando el caché tiene la información solicitada. En estos ejemplos, suponemos que un único procesador está escribiendo en la memoria principal con un caché.

Escritura directa: la información se escribe en la memoria caché y la memoria, y la escritura finaliza cuando ambos han terminado. Esto tiene la ventaja de ser más sencillo de implementar, y la memoria principal siempre es coherente (sincronizada) con el caché (para el caso de un solo procesador, si algún otro dispositivo modifica la memoria principal, entonces esta política no es suficiente), y una falta de lectura nunca da como resultado escrituras en la memoria principal. La desventaja obvia es que cada hit de escritura tiene que hacer dos escrituras, una de las cuales accede a la memoria principal más lenta.

Reescritura: la información se escribe en un bloque en el 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 el bit sucio no está configurado, el bloque de caché está "limpio" y una falta de escritura no tiene que escribir el bloque en la memoria.

La ventaja es que las escrituras pueden ocurrir a la velocidad de la memoria 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 el caché, y las lecturas que resultan en reemplazo pueden causar escrituras de bloques sucios en la memoria principal.

Las políticas para una falta 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 esto, se requieren mecanismos de coherencia de caché más complicados. Las memorias caché de escritura directa tienen protocolos más simples ya que una escritura en la memoria caché se refleja inmediatamente en la memoria.

Buenos recursos:


Miremos esto con la ayuda de un ejemplo. Supongamos que tenemos un caché mapeado directo y se utiliza la política de reescritura. 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: escriba A (donde A se asigna a la primera línea del caché).

Lo que sucede es que los datos (A) del procesador se escriben en la primera línea de la memoria caché. Se establecen los bits válidos de bits y etiquetas. El bit sucio se establece en 1.

¡Un bit sucio simplemente indica que la línea de caché se ha escrito desde la última vez que se introdujo en el caché!

Ahora suponga que se realiza otra operación: lea E (donde E también se asigna a la primera línea de caché)

Dado que tenemos un caché mapeado directo, la primera línea simplemente puede ser reemplazada por el bloque E que será traído de la memoria. Pero dado que el último bloque escrito 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 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. bit sucio ahora se establece en 0.

Por lo 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, cada vez que la línea está a punto de ser reemplazada, se realiza una reescritura al principio.

Una política de escritura es todo lo contrario. De acuerdo con esto, la memoria siempre tendrá datos actualizados. Es decir, si se escribe el bloque de caché, la memoria también se escribirá en consecuencia. (sin uso de brocas sucias)


quizás este artículo pueda ayudarte a enlazar aquí

Escritura directa: la escritura se realiza de forma sincrónica tanto en la memoria caché como en el almacén de respaldo.

Reescritura (o reescritura): la escritura se realiza solo en el caché. Un bloque de caché modificado se vuelve a escribir en la tienda, justo antes de reemplazarlo.

Escritura: 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.

Reescritura: cuando los datos se actualizan, se escriben solo en el caché. Los datos modificados se escriben en el almacenamiento de fondo solo cuando los datos se eliminan de la memoria caché. Este modo tiene una velocidad de escritura de datos rápida, pero los datos se perderán si se produce un corte de energía antes de que los datos actualizados se escriban en el almacenamiento.