miércoles, 9 de enero de 2013

Práctica 3. Jerarquía de memoria SIJEM 1

SIJEM es un simulador didáctico de jerarquías de memoria desarrollado como Proyecto Fin de Carrera en la Universidad de La Laguna.
Permite analizar el comportamiento de una jerarquía de memoria que incluye memoria virtual, memoria principal y varios niveles de memoria caché. A través de una interfaz gráfica podemos configurar la jerarquía de memoria y simular su comportamiento haciendo uso de ficheros de traza (el programa incorpora varios) procedentes de la ejecución de programas reales o inventados por el usuario.
En estas prácticas nos centraremos exclusivamente en el estudio de la memoria caché.
Ejercicio 1
En este comienzo se nos pide la lectura de la ayuda incorporada en el programa SIJEM.
Ejercicio 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? ¿Y la caché de datos? Cuatro en ambos casos.
La dirección de memoria principal tiene 20 bits (tamaño 1 MB). ¿Cómo se interpretan estos bits en la caché L1?
Bits destinados al índice: 2 bits (2^2)
Bits destinados a la etiqueta: 20 – 2 – 10 – 2 = 6 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.

Aciertos caché: 36
Aciertos MP: 42
Número de ciclos: 56.260
Ejercicio 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? 5 bits de dirección, 3 de índice y 12 de 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.
L1: 41 aciertos, L2: 33 aciertos, totales: 74, mem.principal: 16, ciclos:38335
El número de aciertos en L1 es el mismo, los de memoria principal se reducen de 49 a 16 y el número de ciclos se reduce casi a la mitad.
Ejercicio 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: L1: 43 aciertos, L2: 34 aciertos, totales: 77, mem.principal:13 aciertos, ciclos: 34580.
Asociativa por conjuntos de dos vías: L1: 42 , L2: 36 , totales: 78 , mem.principal: 12 , ciclos: 33520.
Ejercicio 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?
Bits índice: 4 bits (2^4)
Bits etiqueta: 20 – 4 – 12 – 2 = 2 bits
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.
Aciertos caché L1: 34
Aciertos caché L2: 25
Aciertos caché L3: 12
Aciertos MP: 0
Números de ciclos: 33.765
Ejercicio 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.
Ejem5.cfg
Ciclos: 218575
Fetch:0, Read: 67, Write: 33.
L1: 10 aciertos, L2: 1 acierto, L3: 4 aciertos, mem.principal: 21 aciertos, fallos: 64
Reemplazamientos: L1I:0, L1D:86, L2:81, L3:69
Ejem8.cfg
Ciclos: 242415
Fetch:0, Read: 67, Write: 33.
L1: 4 aciertos, L2: 1 acierto, L3: 0 aciertos, mem.principal: 31 aciertos, fallos: 64
Reemplazamientos: L1I:0, L1D:92, L2:87, L3:79
Los ejercicios han sido bastantes prácticos y didácticos. Tuve ciertos problemas para calcular el tamaño de la etiqueta ya que habíamos hecho pocos ejercicios en clase en ese momento y no comprendí demasiado bien su obtención. Por lo demás, veo perfecta la propuesta de ejercicios.