En esta práctica
aprenderemos el funcionamiento de la memoria caché y sus
propiedades.
Dicha práctica consiste en
una serie de preguntas tipo test (20 preguntas), acerca de dicho
tema. Para ellos usamos el simulador SIJEM. Sin embargo, no es
necesario el uso de este programa para responder algunas preguntas,
ya porque la explicación sea trivial o se pueda resolver acudiendo a
los conocimientos teóricos directamente.
La versión de SIJEM usada no es la proporcionada por el campus virtual de la UCA, ya que dicha versión solo funciona en equipos de 32 bits, por tanto, usamos una versión portable.
En cada pregunta se nos
indica entre paréntesis los archivos de configuracion de los
parámetros(.cfg) y de direcciones (.trd) que hay que usar.
Ejercicio 1
(Ejem4.cfg
y crafty_d.trd)
Si el tamaño de la memoria caché de nivel 3 es de 256KB y el tamaño
de bloque es de 1KB, ¿Cuántos bloques puede almacenar la caché de
nivel 3?
a.
32
b.
64
c.
256
Ejercicio 2
(Ejem4.cfg
y crafty_a.trd)
Si el tamaño de la memoria caché de nivel 1 es de 16KB y el tamaño
de bloque es de 1KB, y teniendo en cuenta que está dividida en
instrucciones y datos, ¿Cuántos bloques puede almacenar cada una de
las divisiones de la caché de nivel 1?
a.
4
b.
8
c.
16
Como vemos, la lista de bloques va desde 0 hasta 15, por tanto, la respuesta correcta es la opción “c”.
Ejercicio 3
(Ejem4.cfg
y crafty_a.trd)
Si el tamaño del bloque de memoria caché es de
1024
Bytes ¿Cuántos bits son necesarios para representar el
desplazamiento dentro del bloque?
a.
4
b.
8
c.
10
Viendo la parte de D.Caché, veremos que se divide en dos partes, cada una de 10 bits, por tanto, la
respuesta correcta es la opción “c”.
Ejercicio 4
(Ejem4.cfg
y crafty_a.trd)
¿Qué ventajas aporta que la memoria caché de nivel 1 esté
dividida en dos?
a.
No aporta ventaja, sólo permite ordenar mejor las páginas.
b.
Aumenta el tamaño de la caché de nivel 1.
c.
Aprovecha mejor el principio de localidad.
Probando con L1 dividido y no dividido, obtenemos simpre el mismo resultado (vease imágen), por tanto llego a la conclusión de que la respuesta correcta es la opción "a".
Ejercicio 5
(Ejem4.cfg
y crafty_a.trd)
¿En qué posición se coloca un nuevo bloque dentro de la memoria
caché sabiendo que estamos utilizando una estrategia de colocación
de mapeado directo?
a.
En la posición dada por la fórmula (Número de bloque) MOD (Número
de bloques de caché).
b.
En la posición dada por la fórmula (Identificador) MOD (Número de
bloques de caché).
c.
En cualquier posición libre que se encuentre.
Atendiendo a la formula, vemos que los operandos coinciden con el Número de bloque y el Número de bloques de caché, por tanto, la
respuesta correcta es la
opción “a”.
Ejercicio 6
(Ejem5.cfg
y crafty_a.trd)
¿En qué posición se coloca un nuevo bloque dentro de la memoria
caché sabiendo que estamos utilizando una estrategia de colocación
completamente asociativa?
a.
En la posición dada por la fórmula (Número de bloque) MOD (Número
de bloques de caché)
b.
En la posición dada por la fórmula (Identificador) MOD (Número de
bloques de caché)
c.
En cualquier posición libre que se encuentre.
En
ningun nivel vemos ninguna formula, por tanto la correcta es la opción "c".
Ejercicio 7
(Ejem11.cfg
y crafty_a.trd)
¿En qué posición se coloca un nuevo bloque dentro de la memoria
caché sabiendo que estamos utilizando una estrategia de colocación
asociativa por conjuntos?
a.
En la posición dada por la fórmula (Número de bloque) MOD (Número
de bloques de caché).
b.
En la posición dada por la fórmula (Identificador) MOD (Número de
bloques de caché).
c.
En cualquier posición del conjunto dado por la fórmula (Número de
bloque) MOD (Número de conjuntos de la caché).
En
la imagen vemos que que hay bloques con el mismo numero, por lo cual, interpreto que estos consituyen un mismo conjunto, por tanto, la respuesta correcta es la opción "c".
Ejercicio 8
(Ejem11.cfg
y crafty_a.trd)
¿Cuál es el tamaño del conjunto de una memoria asociativa por
conjuntos de 2 vías?
a.
1 bloque
b.
2 bloques
c.
4 bloques
La
respuesta correcta es la
opción “b”. No requiere mayor explicación, el número de vías es igual al número de bloques por conjunto.
Ejercicio 9
(Ejem5.cfg
y crafty_a.trd)
¿Qué ocurre cuando no existe ninguna posición en la memoria caché
a la que copiar un nuevo bloque, y hemos elegido una política de
sustitución al azar?
a.
Se elige un bloque cualquiera para sustituir con el nuevo bloque.
b.
El nuevo bloque no se escribe en la memoria caché.
c.
Se elige el primer bloque de la memoria para sustituirlo con el nuevo
bloque.
La
respuesta correcta es la
opción “a”. Al ser una pólitica de sustitución al azar, como su propio nombre indica, el bloque será sustituido en cualquier lugar.
Ejercicio 10
(Ejem6.cfg
y crafty_a.trd)
¿Qué bloque de caché se reemplaza cuando elegimos una política de
sustitución FIFO?
a.
Un bloque cualquiera elegido al azar.
b.
El bloque que lleva más tiempo en memoria.
c.
Se reemplaza aquel bloque que lleva más tiempo en memoria sin ser
usado.
FIFO = First In First Out = Primero en entrar, primero en salir
La
respuesta correcta es la
opción “b”.
Ejercicio 11
(Ejem7.cfg
y crafty_a.trd)
¿Qué bloque se reemplaza cuando elegimos una política de
sustitución LRU?
a.
Un bloque cualquiera elegido al azar.
b.
El bloque que lleva más tiempo en memoria.
c.
Se reemplaza aquel bloque que lleva más tiempo en memoria sin ser
usado.
LRU = Least Recently Used = Último usado recientemente
La
respuesta correcta es la
opción “c”.
Ejercicio 12
(Ejem9.cfg
y crafty_a.trd)
¿Qué bloque se reemplaza cuando elegimos una política de
sustitución LFU?
a.
Un bloque cualquiera elegido al azar.
b.
El bloque que lleva más tiempo en memoria.
c.
Se
reemplaza aquel bloque que haya sido usado el menor número de veces.
LFU = Least Frequently Used = Menor frecuencia de uso
La
respuesta correcta es la
opción “c”.
Ejercicio 13
(Ejem4.cfg
y crafty_a.trd)
¿Por qué no es necesaria una política de sustitución utilizando
mapeado directo?
a.
Porque nunca se reemplaza una página.
b.
Porque la página a reemplazar ya está determinada.
c.
Porque la página a reemplazar siempre se elige al azar.
La página a reemplazar ya está determinada por la fórmula, como podemos ver en la imágen, por tanto, la
respuesta correcta es la
opción “b”.
Ejercicio 14
(Ejem4.cfg
y crafty_a.trd)
¿Qué ocurre cuando la posición de la memoria caché a la que
debemos copiar la nueva página procedente de memoria principal no
está vacía sabiendo que estamos utilizando una estrategia de
mapeado directo?
a.
La página de esa posición de memoria caché se sobrescribe con la
nueva.
b.
Se busca una nueva posición que esté libre.
c.
La nueva página no se escribe en la memoria caché.
En la imágen se puede ver como directamente el bloque se sobrescribe con el nuevo valor, por tanto, la
respuesta correcta es la
opción “a”.
Ejercicio 15
(Ejem5.cfg
y crafty_a.trd)
¿Por qué no es necesaria la parte de índice en la dirección del
bloque utilizando una estrategia de colocación completamente
asociativa?
a.
Porque la posición dentro de memoria caché no está definida, el
bloque puede colocarse en cualquier posición.
b.
Porque el identificador determina la posición dentro de memoria
caché.
c.
Porque la memoria caché nunca se llena.
Por definición, la colocación completamente asociativa coloca los bloques en cualquier posición, por tanto, la
respuesta correcta es la
opción “a”.
Ejercicio 16
(Ejem11.cfg
y crafty_a.trd)
¿Para qué se utiliza la parte de índice en la dirección del
bloque utilizando una estrategia de colocación asociativa por
conjuntos?
a.
Para obtener el conjunto donde colocar el bloque.
b.
Para obtener la posición donde colocar el bloque.
c.
Para obtener la posición del conjunto donde colocar el bloque.
Como vemos en la imágen, el número del campo "Ind"(Índice), no se refiere al número del bloque sino al del conjunto (hay bloques con el mismo número),por tanto, la
respuesta correcta es la
opción “a”.
Ejercicio 17
(Ejem4.cfg
y crafty_a.trd)
Cuando se utiliza escritura directa (write-through):
a.
La información se escribe en la caché y en la memoria principal.
b.
La información se escribe sólo en la caché.
c.
La información se escribe en la caché, en la memoria principal y en
la memoria secundaria.
No
soy capaz de averiguar la respuesta mediante el programa, por tanto,
me baso en la teoría para responder. La respuesta correcta es la
opción “a”.
Ejercicio 18
(Ejem4.cfg
y crafty_a.trd)
Cuando se utiliza escritura retardada (write-back):
a.
La información se escribe en la caché y en la memoria principal.
b.
La información se escribe sólo en la caché.
c.
La información se escribe en la caché, en la memoria principal y en
la memoria secundaria.
No
soy capaz de averiguar la respuesta mediante el programa, por tanto,
me baso en la teoría para responder. La respuesta correcta es la
opción “b”.
Ejercicio 19
(Ejem4.cfg
y crafty_a.trd)
¿Para qué se utiliza el bit de modificación de la memoria caché?
a.
Indica si el bloque se ha modificado mientras se encontraba cargado
en ese nivel de caché.
b.
Indica si el bloque se ha modificado mientras se encontraba cargado
en cualquier nivel de caché.
c.
Indica que el bloque correspondiente a ese bloque en memoria
principal se ha modificado.
Cada vez que el programa accede a un bloque de cualquier nivel de la caché ya ocupado, el bit de modificación en todos los niveles cambiaba de 0 a 1, por tanto, la
respuesta correcta es la
opción “b”.
Ejercicio 20
(Ejem4.cfg
y Crafty_a.trd)
Ejecuta algunas líneas del programa y contesta, ¿Cuándo se
actualiza el bit de modificación del bloque?
a.
Cuando se produce una escritura en memoria.
b.
Cuando se produce una lectura de memoria.
c.
Cuando hay una instrucción.
El bit de modificación del bloque se acualiza cada vez que el tipo de instrucción es MEMWRITE, es decir, escritura en memoria, por tanto, la opción correcta es la "a".










