Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Caches Ejemplo 1 PDF

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 3

1. Considerar un caché 4-way de 32 KB con bloques de 16 palabras.

a) ¿Cuántos conjuntos y cuántos bloques tiene el caché?


La capacidad del caché para guardar datos es de 32 KB = 32768 bytes.
Cada bloque es de 16 palabras, es decir de 64 bytes.
El número de bloques del caché se obtiene dividiendo la capacidad del
caché entre el tamaño de bloque, cuidando que las unidades sean las
mismas.
Número de bloques = 32768 / 64 = 512 bloques.
El número de conjuntos del caché se obtiene dividiendo el número de
bloques entre la asociatividad (es decir, el número de bloques por conjunto)
del caché. El caché de este ejercicio es 4-way, esto significa que cada
conjunto tiene 4 bloques.
Número de conjuntos = 512 / 4 = 128 conjuntos.

b) Si las direcciones tienen 32 bits, ¿cuántos bits se usan para el offset, el


índice (index) y la etiqueta?
El tamaño del offset es el logaritmo base 2 del tamaño del bloque en bytes.
Tamaño del offset = log2(64) = 6 bits para el offset. Recordar que el offset
ocupa los bits más bajos de la dirección. En este caso son los bits [5:0].
En un caché n-way, el tamaño del index es el logaritmo base 2 del número
de conjuntos del caché.
Tamaño del index = log2(128) = 7 bits para el index. En este caso son los
bits [12:6].
El tamaño de la etiqueta son los bits que no se usaron para el offset ni para
el index.
Tamaño de la etiqueta = 32 – (7 + 6) = 19 bits para la etiqueta. En este
caso son los bits [31:13].

c) ¿Cuántos bits ocupa el caché en total?


El caché guarda 32 KB de datos, pero las etiquetas y los bits válidos
también ocupan espacio. Cada bloque guarda 64 byts de datos, que
convertidos a bits son 512 bits. Además, cada bloque utiliza 19 bits para la
etiqueta y un bit para el bit válido. Entonces, en total cada bloque utiliza 512
+ 19 + 1 = 532 bits. Arriba se calculó que el caché tiene 512 bloques. Por lo
tanto, el caché en total ocupa 532 * 512 = 272384 bits.

d) ¿Cuál es el porcentaje de overhead del caché?


Se utiliza el segundo método de los apuntes para calcular el overhead.
Overhead = ((19 + 1) / 512) * 100 = 3.9% de overhead.
1
e) Suponiendo que el caché está vacío y que se solicita la dirección 491
(1111010112), ¿en qué conjunto queda esa dirección?
Se utiliza el método de separar la dirección.
Arriba se vio que el offset ocupa los 6 bits más bajos, el índice los
siguientes 7 bits y la etiqueta los 19 bits más altos.
La dirección 491 en binario queda separada así: 0…0-0000111-101011.
Es decir, el offset vale 1010112; el indice vale 00001112 = 710; la etiqueta
vale 0.
Esto indica que el dato con dirección 491 se carga en el conjunto 7 del
caché. Cómo es un caché 4-way (cada conjunto tiene 4 bloques) el dato se
guarda en alguno de los 4 bloques del conjunto 7 (no sabemos en cuál) y
se pone un 0 en la etiqueta.

f) Si luego se solicita la dirección 510 (1111111102) ¿se produce un éxito o


una falla? Explicar brevemente la razón.
Se separa la dirección como en el ejercicio anterior.
La dirección 510 en binario queda separada así: 0…0-0000111-111110.
Lo importante es notar que el índice también es 7. Por lo tanto el dato con
dirección 510 ya está en el caché (se cargó cuando se cargó el bloque que
contiene también el dato con dirección 491) y entonces se produce un éxito.
Como ejercicio pueden calcular cuáles direcciones se cargaron cuandó se
cargó el bloque que contiene la dirección 491, teniendo en cuenta que los
bloques son de 64 bytes.

2. Considerar un caché de 4 KB con bloques de 4 palabras.

Antes, conviene indicar el tamaño del bloque y del caché en bytes.


Tamaño del bloque: 4 palabras x 4 = 16 bytes.
Tamaño del caché: 4 KB x 1024 = 4096 bytes.

En este ejercicio se usa el método de las fórmulas.

a) ¿Qué bloque le corresponde a la dirección de memoria 25000 si el caché es


de mapeo directo?
Número de bloques del caché = 4096 / 16 = 256
d = 25000 div 16 = 1562
b = 1562 mod 256 = 26

Le toca el bloque 26.

b) ¿Qué conjunto le toca si el caché es 4-way?


Número de conjuntos del caché = 256 / 4 = 64

2
d = 25000 div 16 = 1562
b = 1562 mod 64 = 26

Le toca el conjunto 26. Hay 4 bloques dentro de ese conjunto para escoger.

c) ¿Y si es 8-way?
Número de conjuntos del caché = 256 / 8 = 32
d = 25000 div 16 = 1562
b = 1562 mod 32 = 26

Le toca el conjunto 26. Hay 8 bloques dentro de ese conjunto para escoger.

Nota: Es coincidencia que en los tres incisos el resultado sea 26. Si se aplica el
método de separar la dirección se puede entender la razón de este resultado.
Además, hay que fijarse que aunque el resultado sea el mismo, el bloque con
dirección 25000 se guarda en lugares totalmente distintos.

También podría gustarte