Me encontré con el siguiente problema:
Dadas las siguientes especificaciones para una memoria caché externa: conjunto asociativo de cuatro vías; tamaño de línea de dos palabras de 16 bits; capaz de acomodar un total de 4K palabras de 32 bits de la memoria principal; utilizado con un procesador de 16 bits que emite direcciones de 24 bits. Diseñe la estructura de caché con toda la información pertinente y muestre cómo interpreta las direcciones del procesador.
Intenté resolverlo de la siguiente manera:
- 4 líneas por conjunto
- Tamaño de palabra de la memoria principal: 32 bits = 2 4
- Tamaño de palabra de la memoria caché: 16 bits = 2 2
- Tamaño de la memoria principal: 4 \ times 2 10 = 2 12 palabras de 32 bits = 2 13 palabras de 16 bits
- La memoria caché debe adaptarse a la memoria principal completa. Por lo tanto, tamaño de la memoria caché = tamaño de la memoria principal = 2 13 palabras de 16 bits
- Tamaño de línea = dos palabras de 16 bits → Compensación de palabra = 1 bit
- Conjunto asociativo de cuatro direcciones → 4 = 2 2 líneas por conjunto
- Establecer tamaño = 2 2 líneas * 2 palabras por línea = 2 3 palabras de tamaño de 16 bits
- Número de conjuntos = 2 13 / 2 3 = 2 10
- Establecer tamaño de índice = 10 bits
- Tamaño de etiqueta = tamaño de dirección de 24 bits - índice de conjunto de 10 bits - desplazamiento de palabra de 1 bit = 13 bits
Dudas
- Me sorprende que se diga que el procesador de 16 bits genera direcciones de 24 bits. es posible? Nunca me encontré con tal problema.
- ¿Cómo la memoria caché y la memoria principal pueden tener diferentes tamaños de palabra? Aquí, el tamaño de la palabra de la memoria caché es de 16 bits y el tamaño de la palabra de la memoria principal es de 32 bits.
- Teniendo en cuenta los escenarios inusuales (supuestos que hice) explicados en los puntos 1 y 2 anteriores, ¿estoy en lo cierto con los cálculos anteriores?
- La respuesta solo da un diagrama (sin explicación) que dice 1 bit por palabra, 1 bit por direccionamiento de bytes y 12 bits por etiqueta. Entonces, ¿estoy equivocado?