caché asociativa de conjunto de tres vías con reemplazo de LRU

1

Así que estoy realizando un ejercicio de tarea y no estoy entendiendo la solución al problema. Se nos da una secuencia de referencias de memoria y debemos usar un conjunto de tres vías de caché asociativa con bloques de dos palabras y un tamaño total de 24 palabras. (Para consultar la pregunta aquí ). Según su solución, el desplazamiento es de 1 bit, el índice es de dos bits y la etiqueta son los bits restantes.

Primero, para asegurarme de que entiendo, hay cuatro conjuntos porque cada conjunto contiene 3 bloques (conjunto asociativo de tres vías), y hay un total de 12 referencias de memoria, por lo que 12/3 = 4 conjuntos, por lo que los índices en binario sería 00, 01, 10 y 11, cada uno con tres "ranuras" para datos.

En segundo lugar, las referencias de memoria provienen de otro problema donde se indica que las referencias se dan como "direcciones de palabras". ¿Significa esto que son palabras direccionables, no bytes direccionables? Si es así, pensé que, dado que el caché tiene dos bloques de palabras (8 bytes), el desplazamiento sería de 3 bits (2 ^ 3)? ¿Cuál es el significado de tener bloques de dos palabras o de una sola palabra?

Mi principal dificultad es comprender cómo se calculan los bits de desplazamiento en diferentes asignaciones de caché. Entiendo el método de reemplazo en el sentido de que el último elemento usado recientemente es el que se reemplazará por un elemento entrante.

    
pregunta spearman008

1 respuesta

1

Si bien el problema no lo dice específicamente, por lo general puede asumir una memoria direccionable por palabra cuando se trata de este tipo de problema de caché. Por lo tanto, para calcular el tamaño del desplazamiento, necesita saber el tamaño de un bloque en palabras, que en este caso se da como 2. Por lo tanto, necesita 1 bit (clog2 [block_size_in_words]) para determinar cuál de los 2 palabras en un bloque al que se dirige, según lo que usa la solución del problema.

Su análisis para el número de conjuntos parece preciso, pero solo para ser claro: como sabemos, el tamaño total de la memoria caché es de 12 bloques (24 palabras / 2 palabras por bloque) y hay 3 bloques por conjunto, debe Ser 4 juegos (12 bloques / 3 bloques por juego). Por lo tanto, necesita 2 bits (clog2 [número_de_conjuntos]) para indexar los conjuntos.

Es importante tener en cuenta que el tamaño de una palabra depende de la arquitectura. Una palabra puede tener cualquier número de bits, normalmente 8, 16, 24, 32 o 64, según el procesador (consulte: enlace ). El problema no define el tamaño de una palabra, por lo que no puede determinar el tamaño de los bloques en bytes. Como usted dijo, podrían ser de 8 bytes con una palabra de 32 bits, pero podrían ser de 4 bytes con una palabra de 16 bits. Como el problema no especificó el tamaño de la palabra, no puede asumir que lo sabe a menos que se especifique en otro lugar que se aplique al problema (es decir, el profesor dice que siempre debe asumir un tamaño de palabra de 32 bits en esta clase / en esta prueba ).

    
respondido por el Unn

Lea otras preguntas en las etiquetas