sábado, 29 de diciembre de 2012

Práctica 4 - Jerarquía de memoria SIJEM 2


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
 

Como vemos, la lista de bloques va desde 0 hasta 255, por tanto, la respuesta correcta es la opción “c”.

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".