Práctica 3


PRÁCTICA 3: sijem (1)

- Por Carlos Jesús Jiménez Ureba - 




En esta práctica vamos a utilizar un simulador de jerarquías de memoria llamado SIJEM, analizaremos y estudiaremos exclusivamente la memoria caché, aunque el simulador también incluye memoria virtual y memoria principal para su estudio. Configuraremos la jerarquía de memoria y simularemos su comportamiento haciendo uso de los ficheros de traza que incluye el programa.

Para la realización de la práctica se nos facilita un manual de manejo y uso del programa, bajo mi punto de vista este es el punto donde se podría mejorar un poco la práctica, en el manual se nos explica cómo usarlo pero yo hubiera añadido un ejemplo de un ejercicio en ejecución del programa acompañado de sus imágenes, para poder saber que es y donde encontrar cada cosa, como por ejemplo localizar el número de bloques de una caché o donde se encuentran los aciertos y fallos de la memoria, aunque esto no supone gran dificultad ya que si nos fijamos un poco lo encontramos fácilmente, también hubiera añadido al principio de la práctica que significan las palabras FETCH MEMREAD y MEMWRITE que se explican al final de la práctica, pero si da la casualidad que no la leemos primero, al ejecutar el programa por primera vez nos encontramos con esas palabras y podemos no saber a qué están haciendo referencia.

Además de eso, hubiera añadido que el programa no corre sobre Windows 7, ni siquiera cambiando la compatibilidad del programa, hubiera añadido una solución, como instalar virtual box (es un software de virtualización para arquitecturas x86), para poder instalar XP en la máquina virtual así como los
enlaces donde poder descargarlos, aquí los dejo: 
https://www.virtualbox.org xp:
http://pokoxemo.blogspot.com.es/2012/11/descarga-windows-xp-professional-y-
home.html. 

Posteriormente os dejo la práctica resuelta:

1.- Léase detenidamente el menú de ayuda para conocer la estructura y el manejo del programa.

2.- Utilizando el asistente de configuración, cargue el fichero Ejem4.cgf y deseleccione los niveles 2 y 3 de la memoria caché, cambiando el tamaño del bloque a 4096 bytes en la pantalla del nivel L3. En la pantalla de la caché de nivel 1, cambie el tamaño de la misma a 16 KB y seleccione en el recuadro de organización la opción “Mapeado directo”. Deje el resto de los datos de configuración tal como aparecen por defecto.

Pulsando siguiente se visualiza un resumen de la configuración del sistema. Pulsando en finalizar, elegimos un programa para simular. Marque “Fichero de direcciones” y seleccione el fichero “crafty_d.trd” localizado
en el directorio de Ejemplos. Pulse de nuevo en finalizar, marque la opción búsqueda de páginas y pulse comenzar. Ejecute completamente el programa mediante los controles de simulación y responda a las siguientes cuestiones:

¿Cuántos bloques tiene la caché de instrucciones de nivel 1?

4 bloques.

¿Y la caché de datos?

4 bloques.

La dirección de memoria principal tiene 20 bits (tamaño 1 MB). ¿Cómo se interpretan estos bits en la caché L1?

Se dividen en 8 y 12 bits.

Anote el número de aciertos en la memoria caché y en la memoria principal, respectivamente, así como el número de ciclos empleados por el programa.

Número de aciertos en caché: 41.

Número de aciertos en memoria principal: 49.

Número de ciclos empleados por el programa: 62760 -> 63835

3.- Añada un nivel 2 a la caché de 32 KB de tamaño, manteniendo el resto de la configuración sin cambios. Ejecute de nuevo el mismo programa y responda a las siguientes cuestiones:

¿Cuántos bloques tiene la caché de nivel 2?

8 bloques.

¿Cómo se interpretan los bits de dirección en la caché L2?

Etiqueta y palabra.

Anote el número de aciertos en la memoria caché (aciertos en L1, aciertos en L2 y aciertos totales) y en la memoria principal, respectivamente, así como el número de ciclos empleados por el programa. Compare los resultados con los obtenidos anteriormente.

Número de aciertos en caché L1: 41.

Número de aciertos en caché L2: 33.

Número de aciertos en memoria principal: 16.

Número de ciclos empleados por el programa: 38210 -> 38335

La diferencia con el programa anterior es que la caché de nivel uno sigue haciendo los mismos aciertos pero ahora al introducir el nivel dos de caché se producen aquí 33 de los 49 aciertos que se hacían en memoria principal. Además de que el programa necesita menos ciclos para ejecutarse.

4.- Manteniendo esta última configuración con dos niveles de caché, cambie la organización a "Completamente asociativa” y, posteriormente, a “Asociativa por conjuntos de 2 vías”. Compare los resultados con los obtenidos en los apartados anteriores.

COMPLETAMENTE ASOCIATIVA

Número de aciertos en caché L1: 41.

Número de aciertos en caché L2: 44.

Número de aciertos en memoria principal: 5.

Número de ciclos empleados por el programa: 25285 -> 25410

ASOCIATIVA POR CONJUNTOS DE DOS VÍAS

Número de aciertos en caché L1: 41.

Número de aciertos en caché L2: 34.

Número de aciertos en memoria principal: 15.

Número de ciclos empleados por el programa: 35860 -> 37160

La diferencia con el ejercicio anterior es que en estos dos casos se consiguen más aciertos en la caché de nivel dos, como podemos ver 10 más en la completamente asociativa que en la asociativa por conjuntos de dos vías.

5.- Añada un tercer nivel de caché L3 de 64 KB, manteniendo el resto de la configuración sin cambios. Ejecute de nuevo el mismo programa y responda a las siguientes cuestiones (considere sólo el caso de mapeado directo):

¿Cuántos bloques tiene la caché de nivel 3?

16 bloques.

¿Cómo se interpretan los bits de dirección en la caché L3?

Se interpreta como una etiqueta y una palabra.

- Anote el número de aciertos en la memoria caché (aciertos en L1, aciertos en L2, aciertos en L3 y aciertos totales) y en la memoria principal, respectivamente, así como el número de ciclos empleados por el programa. Compare los resultados con los obtenidos anteriormente

Número de aciertos en caché L1: 41.

Número de aciertos en caché L2: 33.

Número de aciertos en caché L3: 16.

Número de aciertos en memoria principal: 0.

Número de aciertos totales: 90.

Número de ciclos empleados por el programa: 36310 -> 36435

En este caso la diferencia la principal diferencia es que al introducir la caché de nivel 3 no es necesario ir a memoria principal ya que los aciertos que antes se hacían ahí ahora se producen en el nuevo nivel.

6.- Probar dos de los siguientes ejemplos Ejem5.cfg, Ejem6.cfg, Ejem7.cfg, Ejem8.cfg, Ejem9.cfg y Ejem10.cfg con algunos de los ficheros de traza acabados en a (32bits de direcciones – 4GB memoria) y observar las diferencias entre los diferentes algoritmos de sustitución. Anote en cada ejemplo la configuración de la memoria, el fichero de trazas utilizado y los resultados obtenidos(1) por cada algoritmo. Comente los resultados.

(1) RESULTADOS.
En cada caso debe anotar fundamentalmente los siguientes datos:

Número total de ciclos necesarios para completar el programa.

Ejemplo 5 con el fichero de instrucciones crafty a

Ciclos: 214105 --> 216655

Ejemplo 6 con el fichero de instrucciones crafty a

Ciclos: 217350 --> 219900

Número de accesos de cada tipo:
Búsqueda de instrucciones (FETCH)
Lectura de datos (MEMREAD)
Escritura de datos (MEMWRITE)

Ejemplo 5 con el fichero de instrucciones crafty a
FETCH: 0.

MEMREAD: 67.

MEMWRITE: 33.

Ejemplo 6 con el fichero de instrucciones crafty a

FETCH: 0.

MEMREAD: 67.

MEMWRITE: 33.

Número de veces que la información se ha encontrado en la caché de nivel 1 (L1), de nivel 2 (L2), de nivel 3 (L3), en memoria principal (MemPpal), así como el número de fallos, es decir, el número de veces que ha sido necesario acceder a la memoria secundaria para cargar la información en la memoria principal.

Ejemplo 5 con el fichero de instrucciones crafty a

Caché L1: 8.
Caché L2: 3.
Caché L3: 5.
Memoria Principal: 20.
Fallos: 64.

Ejemplo 6 con el fichero de instrucciones crafty a

Caché L1: 10.
Caché L2: 4.
Caché L3: 0.
Memoria Principal: 22.
Fallos: 64.

Número de reemplazamientos realizados en la caché de instrucciones de nivel 1 (LI1), en la caché de datos de nivel 1 (LD1), en la caché de nivel 2 (L2) y en la caché de nivel 3 (L3).

Ejemplo 5 con el fichero de instrucciones crafty a

Caché de instrucciones de nivel 1 L1L: 0.

Caché de datos de nivel 1 L1D: 88.

Caché de nivel 2 L2: 81.

Caché de nivel 3 L3: 68.

Ejemplo 6 con el fichero de instrucciones crafty a

Caché de instrucciones de nivel 1 L1L: 0.

Caché de datos de nivel 1 L1D: 86.

Caché de nivel 2 L2: 78.

Caché de nivel 3 L3: 70.

No hay comentarios:

Publicar un comentario