Caché directo vs. caché asociativa

0

Intentando resolver este problema donde la caché directa superaría a la asociativa:

Proponga que tiene un caché con un tamaño de línea de L palabras de 32 bits, S número de conjuntos, W formas y direcciones están formadas por A bits. Supongamos que la memoria caché está direccionada por palabra, es decir, los dos bits bajos de la dirección siempre son 0.

Cree una secuencia de direcciones para un procesador MIPS para el cual un caché de mapa directo de palabras de tamaño 16 y 4 palabras de tamaño de línea supera a un caché totalmente asociativo con el mismo tamaño de línea, utilizando el reemplazo de LRU.

Lo que he reunido:

  • La caché asignada directa significa que un bloque de memoria se asigna directamente a la línea de caché
  • MIPS usa Fetch, Decode, Execute, Encode, Memory (esto podría ser irrelevante aquí)
  • Reemplazo de LRU: el más antiguo usado se reemplaza
  • Las palabras son los bits menos significativos que representan la dirección de la memoria principal

    Cache structure:
    Tag   |   Line   |   Word 
    
    Word represents least significant bits
    Tag represents the unique identifier for that 
    Size 16 words would be 2^4 bytes 
    
    number of lines would be cache capacity / line size =     ? / 2^4
    

No estoy seguro de cómo redactar este caché. Si tenemos 16 palabras, 4 por línea, eso significaría 4 filas totales. No espero una respuesta completa, pero se agradecería enormemente una indicación sobre cómo redactar la memoria caché asignada directamente y crear una secuencia.

ACTUALIZACIÓN:

Adjunté una imagen con un caché que tiene 8 direcciones de memoria asignadas a 4 líneas. . Con esto, una secuencia de

  1234567824136857 
  direct mapped:  MMMMMMMMHHMMHHMM (4 Hits)
  f. associative: MMMMMMMMMMMMMMMM (0 Hits)

Sin embargo, no puedo calcular cuántas líneas debe haber (16 palabras, tamaño de línea 4 palabras). ¿Cuántas direcciones de memoria se asignarán a cuántas líneas en el caché? Mi imagen tiene de 8 a 4. ¿Necesito 16 direcciones asignadas a 4 líneas en el caché?

    
pregunta John

1 respuesta

4

No se atasque con detalles irrelevantes sobre el tamaño de las líneas, las arquitecturas de la CPU, etc. La pregunta clave es: ¿qué condiciones harían que una memoria caché completamente asociativa reemplace una línea cuando una memoria caché asignada directamente no lo haría?

Tome un ejemplo trivial: un par de cachés que contienen solo dos líneas cada uno, y tres direcciones, A, B y C, que no caen en las mismas líneas en la memoria. Pero supongamos que B y C se asignan a la misma línea en el caché de asignación directa.

Ahora, tome la secuencia de direccionamiento A, B, C, A, B, C, A, ...

El caché completamente asociativo se tomará una falta en cada acceso, ya que siempre reemplaza la entrada más antigua con la nueva entrada.

Sin embargo, el caché de asignación directa cargará A solo una vez, y luego solo sufrirá fallas en B y C, ya que ninguno de ellos reemplazará a A.

    
respondido por el Dave Tweed

Lea otras preguntas en las etiquetas