Esta estrategia consiste en dividir la caché en grupos (conjuntos), y a cada bloque se le asigna uno de estos conjuntos donde puede ocupar cualquiera de las líneas del conjunto.
🟢 Ventajas
- Híbrido entre las estragias anteriores
- Cierta flexibilidad
🔴 Inconvenientes
- Cierta complejidad
Asignación de la línea a un bloque
Cada uno de los conjuntos de la memoria principal se hace corresponder con un conjunto de la caché usando el método de correspondencia directa, una vez asignada la correspondencia del conjunto, ahora cada bloque del conjunto (memoria) se hace corresponder con cada línea del conjunto (caché) usando la estrategia de correspondencia totalmente asociativa
Asignación de un bloque (memoria) a un conjunto de la caché
- → Número de conjunto (caché)
- → Número de bloque (memoria principal)
- → Número total de conjuntos (caché)
Los conjuntos comienzan desde
Consulta de un dato en base a su dirección
Para consultar una dirección, dividiremos esta en partes para saber: donde mirar en la caché (en qué conjunto), si el dato almacenado es efectivamente el que buscamos (etiqueta) y también en caso afirmativo, a partir de que word y byte queremos leer (desplazamientos de word y byte)
- Etiqueta → Se usa para comprobar si lo que está guardado en la línea es el bloque que buscamos, o es otro. Para lograr esto compararemos la etiqueta calculada a partir de la dirección con la etiqueta almacenada en la caché
- Índice de conjunto → Este parámetro nos indica en que conjunto de la caché debemos buscar nuestro dato
- Desplazamiento de palabra → En caso de encontrar el dato, qué palabra desamos extraer
- Desplazamiento de byte → En caso de encontrar el dato, a partir de que byte (de la palabra seleccionada) deseamos comenzar a leer
Distribución de los bits de una dirección entre los diferentes los diferentes parámetros
Para poder calcular la cantidad de bits que abarca cada parámetro debemos conocer las siguientes características del sistema
- Tamaño de las direcciones de memoria (en bits) →
- Número de conjuntos de la caché →
- Tamaño de los bloques (en words) →
- Tamaño de palabra (en bytes) →
Etiqueta | Índice de conjunto | Desplazamiento de palabra | Desplazamiento de palabra |
Ejemplo
Enunciado
Sabiendo que los parámetros de la memoria y la caché son:
- Caché con 64 conjuntos
- Bloques de 16 palabras
- Palabras de 4 bytes
- Direcciones de 32 bits
Hallar todos los parámetros a partir de la dirección
0x12345678
según la estrategia de correspondencia directaBits del desplazamiento de byteSabiendo que el tamaño de palabra es de 4 bytes
Bits del desplazamiento de palabraSabiendo que el tamaño de los bloques es de 16 palabras
Bits del índice de conjuntoSabiendo que la caché cuenta con 64 conjuntos
Bits de la etiquetaSabiendo que las direcciones son de 32-bits y tambien sabiendo , y
La distribución de los bits de la dirección sale así