Sea una memoria caché de correspondencia directa. Suponiendo siempre que la unidad direccionable de la memoria es el byte, realizar la división en campos de una dirección de memoria en los siguientes casos
Apartado A
Parámetros
Tamaño de las direcciones de memoria son 20-bits → n=20
Número de líneas de la caché son 8 → r=3=log28
Tamaño de un bloque son 8 palabras → q=3=log28
Tamaño de una palabra son 32-bits (4 Bytes)→ q=2=log24
Tamaño de la etiqueta: e=12=n−r−q−p
Etiqueta
Num. línea
Desp. palabra
Desp. byte
12
3
3
2
Apartado B
Parámetros
n=32
r=7
q=6
p=3
Etiqueta
Num. línea
Desp. palabra
Desp. byte
16
7
6
3
Apartado C
Parámetros
n=16
r=5
q=1
p=0
Etiqueta
Num. línea
Desp. palabra
Desp. byte
10
5
1
0
Apartado D
Parámetros
n=36
r=10
q=7
p=1
Etiqueta
Num. línea
Desp. palabra
Desp. byte
18
10
7
1
Ejercicio 2
🎯
Sea una memoria caché de correspondencia totalmete asociativa. Suponiendo siempre que la unidad direccionable de la memoria es el byte, realizar la división en campos de una dirección de memoria en los siguientes casos
Apartado A
Parámetros
Tamaño de las direcciones de memoria son 20-bits → n=20
Tamaño de un bloque son 8 palabras → q=3=log28
Tamaño de una palabra son 32-bits (4 Bytes)→ q=2=log24
Tamaño de la etiqueta: e=15=n−q−p
Etiqueta
Desp. palabra
Desp. byte
15
3
2
Apartado B
Parámetros
n=32
q=6
p=3
Etiqueta
Desp. palabra
Desp. byte
23
6
3
Apartado C
Parámetros
n=16
q=1
p=0
Etiqueta
Desp. palabra
Desp. byte
15
1
0
Apartado D
Parámetros
n=36
q=7
p=1
Etiqueta
Desp. palabra
Desp. byte
28
7
1
Ejercicio 3
🎯
Sea una memoria caché de correspondencia asociativa por conjuntos. Suponiendo siempre que la unidad direccionable de la memoria es el byte, realizar la división en campos de una dirección de memoria en los siguientes casos
Apartado A
Parámetros
Tamaño de las direcciones de memoria son 20-bits → n=20
Número de conjuntos de la caché son 4 → s=2=log24
Tamaño de un bloque son 8 palabras → q=3=log28
Tamaño de una palabra son 32-bits (4 Bytes)→ q=2=log24
Tamaño de la etiqueta: e=13=n−s−q−p
Etiqueta
Num. conjunto
Desp. palabra
Desp. byte
13
2
3
2
Apartado B
Parámetros
n=32
s=4
q=6
p=3
Etiqueta
Num. conjunto
Desp. palabra
Desp. byte
19
4
6
3
Apartado C
Parámetros
n=16
s=3
q=1
p=0
Etiqueta
Num. conjunto
Desp. palabra
Desp. byte
12
3
1
0
Apartado D
Parámetros
n=36
s=6
q=7
p=1
Etiqueta
Num. conjunto
Desp. palabra
Desp. byte
22
6
7
1
Ejercicio 4 (ejercicio de examen)
🎯
Tres computadores disponen del mismo procesador, que tiene un bus de datos de 32 bits y un bus de direcciones también de 32 bits. Cada uno de ellos tiene una memoria caché con capacidad para 4 kB (sin contar etiquetas ni bits de control) y todos ellos realizan transferencias entre caché y memoria principal mediante bloques de 4 palabras.
Se pide indicar en qué campos se divide una dirección de memoria, en qué orden se encuentra cada uno, así como su tamaño en bits. En los tres casos habrá que realizar un dibujo explicativo de la división en campos de la dirección.
Apartado A
🎯
El primer computador posee de una memoria caché de correspondencia directa
Parámetros
n=32
💡
Para calcular el número de líneas de la caché, debemos realizar unos cálculos a partir de la siguiente información
Cada líneas almacena un bloque, cada bloque ocupa 4palabras
La caché tiene 4kB de almacenamiento (sin contar las etiquetas ni los bits de metadatos)
Por lo que si cada bloque ocupa 4 palabras y cada palabra ocupa 32-bits ó 4 Bytes entonces cada bloque ocupa 4×4=16bytes
Ahora dividiremos el almacenamiento de la caché entre el tamaño de cada bloque
El segundo computador tiene una caché totalmente asociativa
Parámetros
n=32
q=2
p=2
Etiqueta
Desp. palabra
Desp. byte
28
2
2
Apartado C
🎯
El tercer computador tiene una caché asociativa por conjuntos de 8 vías
Parámetros
n=32
💡
Para halla el número total de conjuntos, realizaremos las siguientes operaciones
taman~o_conjunto=taman~o_linea×n_vias
Como cada línea son 4 palabras y cada palabra son 4 Bytes, cada línes ocupa 16bytes. Por lo que cada conjunto consta de 16×8=128bytes
n_conjuntos=1284⋅210=32conjuntos
s=5
q=2
p=2
Etiqueta
Num. conjunto
Desp. palabra
Desp. byte
23
5
2
2
Apartado D
🎯
Si el tiempo de acceso al nivel superior de la jerarquía de memoria es de 2,4 ns y al inferior es de 40 ns, ¿cuál debe ser la tasa de aciertos de la caché para conseguir un tiempo medio de acceso a la memoria de 5 ns?
💡
Sabiendo que el tiempo medio de acceso a memoria (AMAT) sigue la siguiente fórmula
Sea un computador dotado con una jerarquía de memoria que incluye memoria caché y memoria principal. El ancho de palabra es de 32 bits y las direcciones de memoria son de 26 bits, con unidad direccionable el byte. Los detalles de la memoria caché son los siguientes:
Correspondencia directa
Caché de 4 líneas
Bloques de 16 palabras
Política de escritura write-backywrite-allocate
Cada línea posee un bit de validez(V) y un bit de suciedad(D)
Apartado A
🎯
Indicar detalladamente los campos en los que se divide una dirección de memoria.
Parámetros
Ancho de la dirección de memoria → n=26
Bits para representar el total de líneas → r=2
Bits para representar las palabras de un bloque → q=4
Bits para representar los bytes de una palabra → p=2
Tamaño de la etiqueta: e=18=n−r−q−p
Etiqueta
Num. línea
Desp. palabra
Desp. byte
18
2
4
2
Apartado B
🎯
Durante la ejecución de un programa se realiza la siguiente secuencia ordenada de accesos a memoria (direcciones en hexadecimal). Considerar que cada cambio en la caché afecta a los accesos siguientes. Indicar detalladamente si son aciertos o fallos de caché, explicar detalladamente cómo va cambiando la caché a lo largo del tiempo, si se actualiza la memoria principal y cuál es el estado final de la memoria caché
Apartado B.1
*️⃣
0x2E16D29 / Lectura1️⃣ Decodificación
HEX: 2 E 1 6 D 2 9
BIN: 0010 1110 0001 0110 1101 0010 1001
Etiqueta → 0x2E16D
Línea → 0
Desplazamiento de palabra → 10
Desplazamiento de byte → 1
2️⃣ Búsqueda en la jerarquía de memoria
Buscamos la línea 0
Comprobamos si el bit de validez está activado → 0 (sin usar) → FALLO
🔴 Fallo, traer dato de la memoria
Como ha fallado, debemos buscar en memoria principal el bloque, y traerlo a la línea 0 de la caché
Comprobamos si el bit de validez está activado → 1 (en uso)
Comprobamos si la etiqueta coincide ( 340c6=1d728 ) → FALLO
🔴 Fallo, write-back
Como ha fallado, debemos comprobar si hace falta guardar el dato actual en la memoria. Bit sucio → 1 . Por lo que hace falta volcar el valor actual de la línea en la dirección correspondiente en memoria
A continuación buscaremos en la memoria la dirección que queremos consultar, la traeremos a la caché, y haremos la modificación ahí (write-allocate) a en el siguiente paso
Escribimos la etiqueta calculada
Activamos el bit de validez
Desactivamos el bit sucio D
Escribimos el bloque en la caché (sin modificar)
Finalmente, escribimos en la caché como si hubiera un acierto
Activamos el bit sucio
Ejercicio 15
🎯
Sea un computador dotado con una jerarquía de memoria que incluye memoria caché y memoria principal. El ancho de palabra es de 8 bits y las direcciones de memoria son de 16 bits.
🔎
Los detalles de la memoria caché son los siguientes:
La caché es de correspondencia directa con 4 líneas
La transferencia entre la memoria y la caché se realiza mediante bloques de 8 palabras
La política de escritura es write-back y write-allocate
Aparte de etiquetas y datos, la caché posee para cada línea un bit de validez (V) y un bit de suciedad (D)
El contenido de la caché en un momento de dado es el siguiente:
Línea
V
D
Etiquetas
Datos
0
1
1
0x7A0
………………………
1
1
0
0x47D
………………………
2
1
1
0x1CB
………………………
3
1
1
0x65E
………………………
Apartado A
📚
Indicar detalladamente los campos en los que se divide una dirección de memoria