Estaba resolviendo el ejercicio del libro de William Stallings en el capítulo de la memoria caché. El problema era:
Considere un caché con un tamaño de línea de 64 bytes. Supongamos que en promedio el 30% de las líneas en el caché están sucias. Una palabra consta de 8 bytes. Supongamos que hay una tasa de fallos del 3% (proporción de aciertos de 0,97). Calcule la cantidad de tráfico de la memoria principal, en términos de bytes por instrucción para las políticas de escritura directa y de devolución. La memoria se lee en caché una línea a la vez. Sin embargo, para la escritura posterior, se puede escribir una sola palabra desde el caché a la memoria principal.
La solución dada fue:
Considera la ejecución de 100 instrucciones. Bajo escritura, esto crea 200 referencias de caché (168 referencias de lectura y 32 referencias de escritura). De media, las referencias de lectura dan como resultado (0.03) × 168 = 5.04 lecturas perdidas. Para cada lectura se pierda, se debe leer una línea de memoria, generando 5.04 × 8 = 40.32 palabras físicas de tráfico. Para errores de escritura, una sola palabra se escribe de nuevo, generando 32 palabras de tráfico. Tráfico total: 72.32 palabras. Para escribir, 100 instrucciones crear 200. referencias de caché y por lo tanto 6 faltan caché Suponiendo que el 30% de las líneas están sucias, en el promedio de 1.8 de estas fallas requiere una línea escrita antes de una línea leída. Así, total el tráfico es (6 + 1.8) × 8 = 62.4 palabras. La tasa de tráfico:
Escritura mediante = 0.7232 byte / instrucción
Escriba atrás = 0.624 bytes / instrucción
Entiendo que en la memoria caché "de escritura", todas las actualizaciones se realizan tanto en la memoria caché como en la memoria y en la memoria caché de "escritura de respuesta", solo líneas de caché actualizadas / sucias (cada línea está formada por varias palabras y una línea denominada bloque es transferidos ay desde la memoria principal y la memoria caché) se vuelven a escribir en la memoria principal cuando esa línea de la memoria caché se va a reemplazar por otra.
Sin embargo, la solución del libro fue muy confusa y tiene muchas dudas:
-
¿Por qué decir "En escritura directa, esto crea 200 referencias de caché (168 referencias de lectura y 32 referencias de escritura)"? No obtuve los tres números: ¿cómo 100 instrucciones llevan a 200 referencias de caché? ¿Y cómo se ha ideado 168 y 32?
-
De manera similar, ¿por qué "para la escritura, 100 instrucciones crean 200 referencias de caché"?
-
Por qué calcula el 30% de las líneas sucias de las que dieron como resultado la falta de memoria caché, es decir 6. Según tengo entendido, las líneas sucias son las que se modifican y, por lo tanto, tienen un bloque de memoria principal correspondiente inconsistente / no actualizado. Pero no tiene sentido decir que el 30% de las líneas sucias no se encuentran en la memoria caché. ¿Qué significa eso?
Parece que aquí me estoy perdiendo algo básico. ¿Alguien puede exponer?