REALIZACIÓN DE LA PRÁCTICA
Durante esta práctica haremos uso del programa SIJEM, se trata de un
simulador didáctico de jerarquías de memoria.Permite analizar el comportamiento de una jerarquía de memoria que incluye memoria virtual, memoria principal y varios niveles de memoria caché.
1.- Léase detenidamente el menú de ayuda para conocer la estructura y el manejo del programa.
Realizado.
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?
La caché de instrucciones de nivel 1 tiene 4 bloques al igual que la de datos aunque en esta simulación están vacíos.
La dirección de memoria principal tiene 20 bits (tamaño 1 MB). ¿Cómo se interpretan estos bits en la caché L1?
Tenemos 8 bits para el bloque que se distribuyen en 2 bits de Índice y 6 de etiqueta (TAG) además de 12 bits de desplazamiento.
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.
El no de aciertos en caché es de 41 y en MP de 49. El programa a utilizado 63835 ciclos.
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?
Tiene 8 bloques.
¿Cómo se interpretan los bits de dirección en la caché L2?
Utiliza para la etiqueta 5 bits y tres bits para indicar el índice del bloque.
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.
Memoria caché L1: 41 aciertos. Memoria caché L2: 33 aciertos.
Totales en memoria caché: 74 aciertos. Memoria principal: 16 aciertos.
No de ciclos: 70835.
El no de aciertos en caché es de 41 y en MP de 49. El programa a utilizado 63835 ciclos.
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?
Tiene 8 bloques.
¿Cómo se interpretan los bits de dirección en la caché L2?
Utiliza para la etiqueta 5 bits y tres bits para indicar el índice del bloque.
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.
Memoria caché L1: 41 aciertos. Memoria caché L2: 33 aciertos.
Totales en memoria caché: 74 aciertos. Memoria principal: 16 aciertos.
No de ciclos: 70835.
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:
Memoria caché L1: 47 aciertos. Memoria caché L2: 35 aciertos.
Totales en memoria caché: 82 aciertos. Memoria principal: 8 aciertos.
No de ciclos: 28245.
Asociativa por conjuntos de 2 vías: Memoria caché L1: 43 aciertos. Memoria caché L2: 37 aciertos.
Totales en memoria caché: 80 aciertos. Memoria principal: 10 aciertos.
No de ciclos: 31055.
Como podemos observar el no de ciclos siendo completamente asociativa es muchísimo inferior( 28245 ciclos frente a 70835 ciclos) a los ciclos utilizados en el ejercicio anterior e inferior también a la asociativa por conjuntos de dos vías. Esto es debido en parte a que el no de aciertos tanto en caché como en memoria principal es mayor que en los otros dos casos.
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?
Tiene 16 bloques.
¿Cómo se interpretan los bits de dirección en la caché L3?
La cache tiene 2^4 bloques, por tanto los cuatro bits menos significativos indican el índice del bloque.
Memoria caché L1: 47 aciertos. Memoria caché L2: 35 aciertos.
Totales en memoria caché: 82 aciertos. Memoria principal: 8 aciertos.
No de ciclos: 28245.
Asociativa por conjuntos de 2 vías: Memoria caché L1: 43 aciertos. Memoria caché L2: 37 aciertos.
Totales en memoria caché: 80 aciertos. Memoria principal: 10 aciertos.
No de ciclos: 31055.
Como podemos observar el no de ciclos siendo completamente asociativa es muchísimo inferior( 28245 ciclos frente a 70835 ciclos) a los ciclos utilizados en el ejercicio anterior e inferior también a la asociativa por conjuntos de dos vías. Esto es debido en parte a que el no de aciertos tanto en caché como en memoria principal es mayor que en los otros dos casos.
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?
Tiene 16 bloques.
¿Cómo se interpretan los bits de dirección en la caché L3?
La cache tiene 2^4 bloques, por tanto los cuatro bits menos significativos indican el índice del bloque.
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.
Memoria caché L1: 41 aciertos. Memoria caché L2: 33 aciertos. Memoria caché L3: 16 aciertos.
Totales en memoria caché: 90 aciertos. Memoria principal: 0 aciertos.
No de ciclos: 36435.
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 por cada algoritmo.
Para ambos casos hemos cogido el fichero craffy_a con las siguientes configuraciones: la memoria caché de L1 a 4KB, de L2 8KB y la de L3 16KB.
La primera prueba ha empleado 216655 ciclos de reloj y ha realizado 67 accesos a lectura de memoria y 33 accesos de escritura. Los aciertos han sido 8 para el L1, 3 para el L2, 5 para el L3 y 20 en memoria principal. Se han producido 64 fallos. El no de reemplazamientos para la caché L1D han sido de 88, para L2 de 81 y para L3 de 68.
La segunda prueba ha empleado 220015 ciclos de reloj y ha realizado 67 accesos a lectura de memoria y 33 accesos de escritura. Los aciertos han sido 9 para el L1, 5 para el L2, 0 para el L3 y 22 en memoria principal. Se han producido 64 fallos. El no de reemplazamientos para la caché L1D han sido de 87, para L2 de 78 y para L3 de 70.
Memoria caché L1: 41 aciertos. Memoria caché L2: 33 aciertos. Memoria caché L3: 16 aciertos.
Totales en memoria caché: 90 aciertos. Memoria principal: 0 aciertos.
No de ciclos: 36435.
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 por cada algoritmo.
Para ambos casos hemos cogido el fichero craffy_a con las siguientes configuraciones: la memoria caché de L1 a 4KB, de L2 8KB y la de L3 16KB.
La primera prueba ha empleado 216655 ciclos de reloj y ha realizado 67 accesos a lectura de memoria y 33 accesos de escritura. Los aciertos han sido 8 para el L1, 3 para el L2, 5 para el L3 y 20 en memoria principal. Se han producido 64 fallos. El no de reemplazamientos para la caché L1D han sido de 88, para L2 de 81 y para L3 de 68.
La segunda prueba ha empleado 220015 ciclos de reloj y ha realizado 67 accesos a lectura de memoria y 33 accesos de escritura. Los aciertos han sido 9 para el L1, 5 para el L2, 0 para el L3 y 22 en memoria principal. Se han producido 64 fallos. El no de reemplazamientos para la caché L1D han sido de 87, para L2 de 78 y para L3 de 70.
No hay comentarios:
Publicar un comentario