martes, 8 de enero de 2013

PRÁCTICA 4 - SIJEM vol. II

Esta practica es la continuación de la practica anterior (practica 3) y consta de un test para afianzar los conocimientos adquiridos con el programa y la teoría del tema tratado, con lo que no tiene una explicación formal del uso del programa, solo hay que responder a las preguntas de manera razonada (en este caso, pues se exige su explicación).

Desarrollo de la práctica:

Para la comodidad es esta práctica vamos a realizar primero el cuestionario tal cual, y mas tarde, junto a capturas de pantalla, explicaremos el por qué de esas soluciones.


CUESTIONARIO

P1.- (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
P2.- (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
P3.- (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
P4.- (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.
P5.- (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.
P6.- (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.
P7.- (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é).
P8.- (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
P9.- (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.
P10.- (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.
P11.- (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.
P12.- (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.
P13.- (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.
P14.- (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é.
P15-. (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.
P16.- (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.
P17.- (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.
P18.- (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.
P19.- (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.
P20.- (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.

ANEXO DE EXPLICACIONES


P1.- En la imagen podemos comprobar que son 256 bloques en la memoria caché L3, ya que al ser de tipo directa, se utiliza un bloque por cada línea.


P2.- En la imagen podemos comprobar que cada división posee 16 bloques, uno por línea al ser la caché de tipo directo, y además, al ser dividida y no en conjunto, cada división utiliza sus bloques para instrucciones o datos.
P3.- En la imagen comprobamos que utilizan 10 bits para el desplazamiento dentro de la página.
P4.- La división de la L1 es solo útil para comprobar y localizar cada página.

P5.- En la memoria de tipo directa, el bloque sólo puede ser emplazado en una posición de la caché, posición determinada por la dirección que tiene ese bloque en memoria principal y con su formula “índice = Dirección MOD nº de bloques”.

P6.- En la memoria de tipo asociativa, el bloque puede ser emplazado en cualquier posición de la caché por la propia ley de asociatividad (Diapositiva 14, T.2).

P7.-  Se coloca el bloque según la formula facilitada en los apuntes: “Índice = nº del bloque MOD nº de conjuntos”. (Diapositiva 22. T.2).

P8.- En la imagen podemos ver como los bloques forman conjuntos de 2 en 2, y así pues, queda respondida la pregunta visualmente.
P9.- Se selecciona un bloque al azar (como indica la selección de reemplazo) para albergar el nuevo bloque, ya que a sido dispuesto de esa forma. Otra forma podría haber sido del tipo LRU, en el cual hubiera sido sustituido el bloque que mas tiempo llevara en memoria y sin ser usado (Diapositivas 37-39 T.2).

P10.- El dato que primero entra es el que primero sale, de ahí sus siglas FIFO (first input first output). Podemos ver un ejemplo grafico en el siguiente diagrama.
Imagen fuente: Wikipedia

P11.- El bloque reemplazado es aquel que lleve mas tiempo en memoria pero sin ser usado, como bien indican sus siglas en este método de reemplazo (LRU, Least recently used). (Diapositiva 38, T.2).

P12.- El bloque que saldrá si la memoria estuviese llena seria el que, en un conteo de los bloques usados, fuese el menos utilizado. De ahí sus siglas, LFU Least frequently used. (Fuente: Wikipedia).

P13.- En el mapeado directo se sustituye el nuevo dato en la misma posición del dato que va a ser reemplazado, así que no es necesario utilizar ningún método de reemplazo, pues ambas comparten la misma dirección.

14.- Al igual que en la anterior respuesta, el mapeado directo obliga a sustituir en la misma dirección los datos tratados, con lo que, queda sobrescrito el existente previo.

P15.- En el caso de colocación asociativa de bloques no se necesita el uso de índices, ya que se colocan en cualquier posición de la caché, y mas tarde para su búsqueda, se acuden a sus “etiquetas”. (Diapositiva 20, T.2).

P16.- El índice en el caso de la asignación de tipo asociativa por conjuntos se utiliza para saber en cual de los conjuntos posibles con esa dirección puede ser colocado, ya que dentro del propio conjunto, se puede emplazar en cualquiera de sus posiciones. (Diapositiva 22. T.2).

P17.-  Cito los apuntes directamente ya que es trivial su solución: “El dato se escribe a la vez en caché y memoria principal.”(Diapositiva 40. T.2).

P18.- Cito los apuntes directamente ya que es trivial su solución: “El dato sólo se escribe en caché. La memoria principal se actualizará cuando se reemplace ese bloque.”(Diapositiva 40. T.2).

P19.- Se observa en la imagen que todos los campos se modifican según el bloque entrante sin importar el nivel de caché en el que se encontrara.

P20.- Se puede comprobar en el propio programa como es lo que sucede.

Mejoras/Errores:

- Posible errata/mejora en la pregunta 7, en al formula “indice=nº de bloque…” quizas quedaria mas claro utilizando la misma facilitada en los apuntes: “indice=dirección…”
- Como mejora se podría realizar un tutorial de uso básico del programa, además del manual completo como en cada práctica.
- Otra mejora podría ser un cambio de algunas preguntas. Algunas son de respuesta inmediata y a la hora de exponerlas no desarrolla ningún reto ya que viene citado de manera explicita en el temario.

 Adjuntamos pdf original para su consulta offline.

No hay comentarios:

Publicar un comentario