Requisito previo: tipos de mapeo de caché: mapeo directo, mapeo asociativo y mapeo asociativo de conjunto
Caché:
la pequeña sección de memoria SRAM, agregada entre la memoria principal y el procesador (CPU) para acelerar el proceso de ejecución, se conoce como memoria caché. Incluye una pequeña cantidad de SRAM y más cantidad de DRAM. Es una memoria de alta velocidad y costosa.
Proporción de aciertos de caché : mide la eficacia con la que la caché cumple con la solicitud de obtener contenido.
Cache hit ratio = No of cache hits/ (No of cache hits + No. of cache Miss)
Si se han encontrado datos en la memoria caché, se trata de un acierto de la memoria caché; de lo contrario, se trata de una pérdida de la memoria caché.
Mapeo de caché:
el proceso/técnica de traer datos de los bloques de memoria principal al bloque de caché se conoce como mapeo de caché.
Las técnicas de mapeo se pueden clasificar en:
- Mapeo Directo
- De asociación
- Conjunto-asociativo
1. Mapeo directo:
cada bloque de la memoria principal tiene solo un lugar posible en la organización del caché en esta técnica.
Por ejemplo: cada bloque i de la memoria principal se puede mapear al bloque j del caché usando la fórmula:
j = i modulo m Where : i = main memory block number j = cache block number m = number of blocks in the cache
La dirección aquí se divide en 3 campos: Etiqueta, Bloque y Palabra.
Para asignar la dirección de memoria a la memoria caché :
el campo BLOQUE de la dirección se usa para acceder al BLOQUE de la memoria caché. Luego, los bits de la etiqueta en la dirección se comparan con la etiqueta del bloque. Para una coincidencia, se produce un acierto de caché cuando se encuentra la palabra requerida en el caché. De lo contrario, se produce un fallo de memoria caché y la palabra requerida debe traerse a la memoria caché desde la memoria principal. La palabra ahora se almacena en el caché junto con la nueva etiqueta (la etiqueta anterior se reemplaza).
Ejemplo:
si tenemos una memoria caché asignada completamente asociativa de 8 KB con un tamaño de bloque de 128 bytes y, por ejemplo, el tamaño de la memoria principal es de 64 KB. (Suponiendo tamaño de palabra = 1 byte) Entonces:
Número de bits para la dirección física = 16 bits (como tamaño de memoria = 64 KB = 2 6 × 2 10 = 2 16)
Número de bits para WORD = 7 bits (como tamaño de bloque = 128 bytes = 2 7 )
Número de bits de índice = 13 bits (como tamaño de caché = 8 KB = 2 3 × 2 10 = 2 13)
Número de bits de BLOQUE = Número de bits de índice – Número de bits para PALABRA = 13 – 7 = 6 bits
O
(Número de bloques de caché = Tamaño de caché/tamaño de bloque = 8 KB / 128 Bytes = 8 × 1024 Bytes/128 Bytes = 2 6 bloques → 6 bits)
Número de bits de ETIQUETA = Número de bits para la dirección física — Número de bits en Índice = 16-13 = 3 bits
2. Mapeo asociativo:
aquí el mapeo del bloque de memoria principal se puede hacer con cualquiera de los bloques de caché. La dirección de memoria tiene solo 2 campos aquí: palabra y etiqueta. Esta técnica se denomina mapeo de caché totalmente asociativo.
Ejemplo:
si tenemos una memoria caché asignada completamente asociativa de 8 KB con un tamaño de bloque de 128 bytes y, por ejemplo, el tamaño de la memoria principal es de 64 KB. Entonces:
Número de bits para la dirección física = 16 bits (como tamaño de memoria = 64 KB = 2 6 × 2 10 = 2 16)
Número de bits en desplazamiento de bloque = 7 bits (como tamaño de bloque = 128 bytes = 2 7 )
No de bits de etiqueta = Número de bits para la dirección física – Número de bits en desplazamiento de bloque = 16-7 = 9 bits
Número de bloques de caché = Tamaño de caché/tamaño de bloque = 8 KB / 128 Bytes = 8×1024 Bytes/128 Bytes = 2 6 bloques.
3. Conjunto – Mapeo asociativo:
es la combinación de las ventajas del mapeo directo y asociativo.
Aquí, el caché consta de conjuntos de números, cada uno de los cuales consta de una serie de bloques. Las relaciones son:
n = w * L i = j modulo w where i : cache set number j : main memory block number n : number of blocks in the cache w : number of sets L : number of lines in each set
Esto se conoce como mapeo asociativo de conjuntos L-way. El bloque Bj se puede traducir a cualquiera de los bloques del conjunto j usando este mapeo.
Para asignar la dirección de memoria a la memoria caché:
mediante el campo establecido en la dirección de memoria, accedemos al conjunto particular de la memoria caché. Luego, los bits de la etiqueta en la dirección se comparan con la etiqueta de todos los bloques L dentro de ese conjunto. Para una coincidencia, se produce un acierto de caché cuando se encuentra la palabra requerida en el caché. De lo contrario, se produce un fallo de memoria caché y la palabra requerida debe traerse a la memoria caché desde la memoria principal. De acuerdo con la política de reemplazo utilizada, se realiza un reemplazo si la memoria caché está llena.
Ejemplo: si tenemos una memoria caché mapeada completamente asociativa de 8 KB de tamaño con un tamaño de bloque = 128 bytes y, por ejemplo, el tamaño de la memoria principal es = 64 KB, y tenemos una asignación asociativa de conjunto «bidireccional» (supongamos que cada palabra tiene 8 bits). Después :
Número de bits para la dirección física = 16 bits (como tamaño de memoria = 64 KB = 2 6 * 2 10 = 2 16)
Número de bloques de caché = Tamaño de caché/tamaño de bloque = 8 KB / 128 Bytes = 8×1024 Bytes/128 Bytes = 2 6 bloques de caché.
Número de bloques de memoria principal = tamaño de MM/tamaño de bloque = 64 KB/128 bytes = 64 × 1024 bytes/128 bytes = 2 bloques de 9 MM.
N.º de conjuntos de tamaño 2 = N.º de bloques de caché/ L = 2 6 /2 = 2 5 conjuntos de caché (L = 2, ya que es un mapeo asociativo de conjuntos de 2 vías)
Diferencia entre mapeo directo, mapeo asociativo y mapeo asociativo por conjuntos:
Mapeo directo | Mapeo asociativo | Asignación asociativa de conjuntos | |
1. | Solo necesita una comparación debido al uso de una fórmula directa para obtener la dirección de caché efectiva. | Necesita comparación con todos los bits de etiqueta, es decir, la lógica de control de caché debe examinar la etiqueta de cada bloque en busca de una coincidencia al mismo tiempo para determinar si un bloque está en caché o no. | Necesita comparaciones iguales al número de bloques por conjunto, ya que el conjunto puede contener más de 1 bloque. |
2. | La dirección de la memoria principal se divide en 3 campos: ETIQUETA, BLOQUE Y PALABRA. El BLOQUE y la PALABRA juntos forman un índice. Los bits TAG menos significativos identifican una palabra única dentro de un bloque de memoria principal, los bits BLOCK especifican uno de los bloques y los bits Tag son los bits más significativos. | La dirección de la memoria principal se divide en 1 campo: ETIQUETA Y PALABRA. | La dirección de la memoria principal se divide en 3 campos: ETIQUETA, CONJUNTO Y PALABRA. |
3. | Hay una ubicación posible en la organización de caché para cada bloque de la memoria principal porque tenemos una fórmula fija. | La asignación del bloque de memoria principal se puede realizar con cualquiera de los bloques de caché. | El mapeo del bloque de memoria principal se puede hacer con un bloque de caché particular de cualquier caché de mapeo directo. |
4. | Si el procesador necesita acceder a la misma ubicación de memoria desde 2 páginas de memoria principal diferentes con frecuencia, la tasa de aciertos de caché disminuye. | Si el procesador necesita acceder a la misma ubicación de memoria desde 2 páginas de memoria principal diferentes con frecuencia, la proporción de aciertos de caché no tiene efecto. | En caso de acceder con frecuencia a dos páginas diferentes de la memoria principal si se reduce, la tasa de aciertos de caché se reduce. |
5. | El tiempo de búsqueda es menor aquí porque hay una ubicación posible en la organización de caché para cada bloque de la memoria principal. | El tiempo de búsqueda es mayor ya que la lógica de control de caché examina la etiqueta de cada bloque en busca de una coincidencia. | El tiempo de búsqueda aumenta con el número de bloques por conjunto. |
Publicación traducida automáticamente
Artículo escrito por sameekshakhandelwal1712 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA