Ejercicios Tema 4 - Memorias Caché
Ejercicio 1
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úmero de líneas de la caché son →
- Tamaño de un bloque son 8 palabras →
- Tamaño de una palabra son 32-bits (4 Bytes)→
Tamaño de la etiqueta:
Etiqueta | Num. línea | Desp. palabra | Desp. byte |
12 | 3 | 3 | 2 |
Apartado B
Parámetros
Etiqueta | Num. línea | Desp. palabra | Desp. byte |
16 | 7 | 6 | 3 |
Apartado C
Parámetros
Etiqueta | Num. línea | Desp. palabra | Desp. byte |
10 | 5 | 1 | 0 |
Apartado D
Parámetros
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 →
- Tamaño de un bloque son 8 palabras →
- Tamaño de una palabra son 32-bits (4 Bytes)→
Tamaño de la etiqueta:
Etiqueta | Desp. palabra | Desp. byte |
15 | 3 | 2 |
Apartado B
Parámetros
Etiqueta | Desp. palabra | Desp. byte |
23 | 6 | 3 |
Apartado C
Parámetros
Etiqueta | Desp. palabra | Desp. byte |
15 | 1 | 0 |
Apartado D
Parámetros
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úmero de conjuntos de la caché son →
- Tamaño de un bloque son 8 palabras →
- Tamaño de una palabra son 32-bits (4 Bytes)→
Tamaño de la etiqueta:
Etiqueta | Num. conjunto | Desp. palabra | Desp. byte |
13 | 2 | 3 | 2 |
Apartado B
Parámetros
Etiqueta | Num. conjunto | Desp. palabra | Desp. byte |
19 | 4 | 6 | 3 |
Apartado C
Parámetros
Etiqueta | Num. conjunto | Desp. palabra | Desp. byte |
12 | 3 | 1 | 0 |
Apartado D
Parámetros
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
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 4 palabras
- 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 bytesAhora dividiremos el almacenamiento de la caché entre el tamaño de cada bloqueSi lo calculamos todo en una operación…Ahora calcularemos que
Etiqueta | Num. línea | Desp. palabra | Desp. byte |
20 | 8 | 2 | 2 |
Apartado B
El segundo computador tiene una caché totalmente asociativa
Parámetros
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
Para halla el número total de conjuntos, realizaremos las siguientes operacionesComo cada línea son 4 palabras y cada palabra son 4 Bytes, cada línes ocupa . Por lo que cada conjunto consta de
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
ó
Sabiendo que…
- Tiempo de acierto →
- Tasa de acierto →
- AMAT →
- Penalización →
Planteamos una ecuanción sustituyendo los datos en la segunda fórmulaPor lo que la tasa de acierto será:
Ejercicio 5 (ejercicio de examen)
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-back y write-allocate
- Cada línea posee un bit de validez y un bit de suciedad
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 →
- Bits para representar el total de líneas →
- Bits para representar las palabras de un bloque →
- Bits para representar los bytes de una palabra →
Tamaño de la etiqueta:
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é - Escribiremos la etiqueta en la línea
- Estableceremos el bit de valdez a
1
- Estableceremos el bit sucio a
0
- Escribiremos el bloque en la línea
Apartado B.2
0x340C656
/ Escritura1️⃣ Decodificación
HEX: 3 4 0 C 6 5 6
BIN: 0011 0100 0000 1100 0110 0101 0110
- Etiqueta →
0x340C6
- Línea →
1
- Desplazamiento de palabra →
5
- Desplazamiento de byte →
2
2️⃣ Búsqueda en la jerarquía de memoria
- Buscamos la línea
1
- 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
- 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
Etiqueta [11 bits] | Línea [2 bits] | Despl. Palabra [3 bits] | Despl. Byte [0 bits] |
- Deplazamiento Byte → Palabra 8 bits = 1 byte = bytes = 0 bits
- Desplazamiento Palabra → Bloque 8 palabras = palabras = 3 bits
- Líneas → 4 líneas = líneas = 2 bits
- Etiqueta → Total Dirección Memoria - (Total Campos) = 16 - (2 + 3 + 0) = 11 bits
Apartado B
Durante la ejecución de un programa se realiza una secuencia de accesos a memoria
- Indicar detalladamente si son aciertos o fallos de caché
- Explicar detalladamente cómo va cambiando la caché a lo largo del tiempo
- Explicar si se actualiza la memoria principal y cuál es el estado final de la memoria caché
0x8FAC (escritura)
0x524F (lectura)
0x0BAE (lectura)
0x8FA8 (escritura)
Apartado C
Calcular el porcentaje mínimo de aciertos para que el AMAT no exceda los 8ns
- El tiempo de acceso a la memoria caché es de 4 ns
- Se requieren 60 ns para llevar un bloque desde la memoria principal a la caché
- Redondear el porcentaje a un decimal