¿El número de asociatividad para cachés por fila?

0

Si una memoria caché tiene asociatividad 4, entonces significa que la memoria tiene "4 bloques por juego", pero ¿cómo la visualizo? Es "4 bloques por conjunto" igual que "4 bloques por fila", de modo que una memoria caché con asociatividad 4 y 10 conjuntos tendrá 40 bloques, 4 por fila o ¿lo malinterpreto?

    

1 respuesta

2

En un caché mapeado directo, cada unidad de memoria está vinculada a un bloque de caché específico (a.k.a línea de caché). Se toman algunos bits de la dirección y determinan el número del bloque de caché. Si hay una falla de caché, ese bloque de caché se evacua y se reemplaza con el bloque al que se accede. Este es un caché barato para implementar.

En un caché totalmente asociativo, la memoria no está vinculada a un bloque de caché específico. Cuando hay una falta de caché, se busca en todo el caché un buen bloque para evacuar y reemplazar. Este es el tipo de caché "de lujo".

Establecer asociación es una compensación de costo / rendimiento entre los dos. Una dirección dada en la memoria no es elegible para ser plantada en ningún lugar de la memoria caché completa, pero está vinculada numéricamente a un conjunto específico: algunos bits de una dirección determinan el número de conjunto al que se asigna. En ese conjunto, hay más de una línea de caché que se puede seleccionar para el reemplazo de acuerdo con una estrategia como la que se usó menos recientemente.

La asignación directa es como la asociación de conjuntos, donde el tamaño del conjunto es 1: hay tantos conjuntos como bloques de caché. La asociación completa es como la asociación de conjuntos, donde hay un gran conjunto que contiene todos los bloques de caché.

La asignación a un conjunto es directa: los bits de la dirección identifican el conjunto. La asignación dentro del conjunto es asociativa: algunos otros bits de la dirección constituyen una etiqueta, y se debe buscar en el conjunto para encontrar la entrada con esa etiqueta.

Un caché con asociatividad 4 y 10 conjuntos tendría 40 bloques. Sin embargo, en la práctica, 10 series no se producirán porque no es una potencia de dos. El número de conjuntos será una potencia de dos, indexada por un rango de bits desde la dirección. La asociatividad se expresa como "N-way". Si hay cuatro líneas de caché en un conjunto, es "asociativo de cuatro vías". Se pueden almacenar en caché y acceder a cuatro rangos separados de memoria que chocan con el mismo conjunto sin evacuación.

    
respondido por el Kaz

Lea otras preguntas en las etiquetas