ARQUITECTURA DE COMPUTADORES. 2º INGENIERÍA INFORMÁTICA. Exámenes de Gestión de Memoria. 1) (2002) Se quiere diseñar un panel informativo que muestre un mensaje por display o pantalla cada X segundos de forma intermitente. El mensaje aparecerá y desaparecerá durante un número limitado de veces. Cada vez que se muestra el mensaje en el display, transcurrido 1 segundo se borra automáticamente. El panel informativo es manejado mediante un microcontrolador que recibe a través de un bus de conexiones dos tramas consecutivas de datos: un mensaje de 20 caracteres y un número entero de 8 bits en binario puro que indica el número de veces que se ha de visualizar el mensaje. Esas dos tramas de datos se pueden recibir en cualquier momento haciendo que el panel deje de mostrar el mensaje anterior, si es que estaba mostrando algún mensaje. El diseñador del panel informativo tiene la posibilidad de escoger entre dos microcontroladores de la misma familia que se diferencian entre si sólo en la memoria caché que llevan incorporada. El microcontrolador 1 tiene una memoria caché totalmente asociativa de 8 líneas/bloques. El microcontrolador 2 tiene una memoria caché de correspondencia directa de 16 líneas/bloques. La memoria principal es de 1K. Los bloques son de dos palabras y cada palabra es un byte. La política de escritura es copy(write)-back con write-allocate y la política de sustitución de bloques es la LRU. El mensaje se deja entre las posiciones de memoria principal 50 hex y 63 hex inclusive (80 y 99 en decimal) del microcontrolador y el número de veces que se ha de visualizar el mensaje en la posición 64 hex (100 en decimal). En total 21 bytes. El código en C de la rutina que controla el mecanismo del panel informativo es el siguiente: # INTERVALO_PARPADEO 3000 // En milisegundos char *buffer; ... buffer = direct_malloc (21, 0x50); // Esta función de asignación de memoria tiene 2 parámetros: el // número de bytes de memoria que se van a asignar a la // variable y la posición inicial de memoria a partir de la // cual se reserva espacio en memoria. ... while (((int)buffer[20])--)>0) { // Mientras que se haya de visualizar el mensaje se itera. // En cada iteración se decrementa la variable de control. for (i=0; i<20; i++) fprintf (DISPLAY, buffer[i], 1); wait (INTERVALO_PARPADEO); } ... A) ¿Cómo se interpretan las direcciones físicas en la memoria caché en ambos microprocesadores? (Muestre un esquema en el que se vean todos los campos). ¿Cuál es el número total de bloques de memoria principal que se traen a la caché la primera vez que se muestra el mensaje por pantalla?. B) ¿Cuál de los dos microcontroladores es más eficiente para este programa?, es decir, ¿cuál de los dos microcontroladores va a hacer menos accesos a memoria principal a lo largo de todas las visualizaciones del mensaje? ¿cuál es el problema que presenta el microcontrolador menos eficiente para este programa? Razone la respuesta. C) Suponga que el mensaje mandado es el siguiente: “agur eta gero arte! 5”. El último byte indica, como ya se ha dicho antes, el número de veces que habrá de mostrarse el mensaje. Indique para el microprocesador más eficiente cómo se distribuirían los caracteres del mensaje y el número entero en la memoria caché después de mostrar por última vez el mensaje en el display (acabado el programa). (NOTA: recuerde que un carácter, aunque sea un espacio en blanco, ocupa un byte) 2) (Junio03)(3,0 puntos) En un sistema paginado se ejecutan simultáneamente 4 procesos de usuario A, B, C y D. Cada proceso en este caso va a tener (ocupar) 8 paginas. La memoria virtual es de 4 Mbytes y la memoria física o principal de 1 Mbytes. Las páginas ocupan 64 Kbytes. Los 4 primeros marcos o páginas físicas de memoria principal están ocupadas por procesos del sistema operativo que no pueden ser expulsados de memoria principal. Las siguientes 5 páginas físicas o marcos de la memoria principal están ocupadas por las 4 primeras páginas de un proceso X de igual prioridad y características que los anteriores procesos de usuario. El proceso X tiene en total 6 páginas. A) Indique los diferentes campos en que se divide cada dirección (Dirección física y dirección virtual) así como su longitud en bits. B) Las referencias virtuales de los procesos A, B, C y D descritas más abajo implican la carga de unas determinadas páginas de esos procesos en memoria principal. Si tras ejecutar todas las referencias virtuales indicadas se quedan en memoria principal todas esas páginas asociadas a los procesos A, B, C y D, indique un posible esquema del estado final de la memoria principal (tenga en cuenta que esto puede implicar que alguna página de algún proceso anterior sea expulsada para hacer hueco). Bastará indicar para cada marco de memoria principal la página que contiene (proceso y número de página si procede). Si el marco de página queda vacío indicar simplemente “VACIO”. Las referencias enviadas por el procesador son: - Proceso A: 0x070000 hasta 0x07A1B2 y 0x010001. - Proceso B: 0x023002 hasta 0x0230B4 - Proceso C: 0x019106, 0x039106, 0x043A00 y 0x054A00 - Proceso D: 0x001111 hasta 0x00F111 y 0x000001 C) Se tiene una TLB con capacidad para 32 líneas en total, asociativa por conjuntos de 4 vías y bits de validez. En función de cómo haya ubicado el proceso C en memoria principal en el apartado B), indicar la estructura y el contenido de la TLB una vez procesadas todas las referencias del proceso C. (NOTA: 0x ... quiere decir que el número está en hexadecimal) 3) (Sep03) (3,0 puntos) En un PC industrial diseñado para automatizar tareas industriales se dispone de una memoria caché de 4Ks de correspondencia directa y una memoria principal de 1M. La memoria caché sigue una política de escritura copy-back y write-allocate. Un bloque en memoria principal ocupa 32 bytes . El tiempo de acceso a la caché es de 2ms y tiempo de acceso a memoria principal para leer un bloque es de 60 ms. La caché está inicialmente vacía. Usted es el ingeniero encargado de diseñar un sistema de tiempo real y dispone de los dos siguientes programas o alternativas: // PROGRAMA 1: char mx[1024][1024]; int i,j; for (i=0; i<1024 ; i++) for (j=0; j<1024 ; j++) { if (mx[i][j] != 0 ) { enviar_alarma (m[i][j]); m[i][j] = 0; } } } // PROGRAMA 2: char mx[1024][1024]; int i,j; for (i=0; i<1024 ; i++) for (j=0; j<1024 ; j++) { if (mx[j][i] != 0 ) enviar_alarma (m[j][i]); m[j][i] = 0; } } } Los programas realizan la misma tarea pero no presentan tiempos de cómputo iguales. Tenga en cuenta además que: los datos de las matrices se almacenan en memoria en filas consecutivas y se ha demostrado empíricamente que la probabilidad de encontrar un elemento en la matriz igual a cero es aproximadamente 0,03125. A) Dados los dos programas anteriores analícelos e indique cuál de los dos resulta más eficiente. Calcule en ambos casos el tiempo medio de ejecución. Justifique su respuesta y su elección. B) Suponga ahora que dispone de un sistema paginado con memoria virtual de 2 Ms como máximo por proceso y marcos de páginas de 64Ks. Si el S.O. le va a dejar a este proceso como máximo 0,5 Ms ¿cómo afectará esto al rendimiento general en el programa 1? ¿Cuántos marcos de páginas se cargarán y cuantos se tendrán que expulsar a lo largo de toda la ejecución en el programa 1? (NOTACIÓN: Ms = Megabytes, Ks = Kilobytes, ms = milisegundos) 4) (Sep04) (0.5 punto) Imagínese un ordenador empotrado, con un sistema de memoria compuesto por una memoria EPROM (tiempo medio de acceso de 10μs), donde residen las instrucciones pertenecientes al único programa que ejecuta el microprocesador, y una pequeña memoria dinámica (tiempo medio de acceso de 60ns) que se utiliza para almacenar los datos intermedios, generados en la ejecución del programa. Sabiendo que el 60% de los accesos son a instrucciones y el 40% a datos, ¿cuál es el tiempo medio de acceso de la jerarquía de éste ordenador? (1 punto) Imagine que se quiere implementar un caché separado serie en dicho ordenador, y que el tiempo medio de acceso de caché para datos e instrucciones es de 5ns. Si la tasa de fallos para datos es del 10% y para instrucciones del 5%, ¿Cuál es ahora el tiempo medio de acceso de la jerarquía de memoria? (1 punto) Imagine ahora que para incrementar la velocidad del ordenador, se le dota a éste de una memoria dinámica mayor de manera que al arrancar, el programa se vuelque a memoria dinámica y a partir de ese momento se ejecute desde ésta. Suponiendo que no varían ni las tasas de fallos ni los tiempos de acceso citados, ¿cuál es el tiempo de acceso obtenido con esta mejora? (0.5 punto) Partiendo de la mejora del apartado anterior, suponga que la organización interna de cada una de las cachés es la siguiente: directamente mapeado, con 256 bloques de 4 bytes. El procesador maneja direcciones de 16 bits. El programa se vuelca a memoria en el rango de direcciones que va desde la 0000h hasta la 07FFh, y los datos se colocan desde la 17FFh hasta la FFFFh. Si la probabilidad de acceder a una dirección cualquiera de los rangos anteriormente mencionados es la misma para todas sus direcciones, ¿merecería la pena unificar el caché por un solo caché directamente mapeado de 256 bloques de 4 bytes? ¿Porqué? En caso de que las prestaciones fueran peores, ¿A qué tipo de error se debería este decremento en las prestaciones? En caso contrario, indique qué tipo de error es el que se evita con el caché unificado. 5) (Julio05) (1 punto) Enumere los niveles de la jerarquía de memoria de un computador cuyo tiempo de acceso medio a dicha jerarquía es de 44 ciclos, sabiendo que el tiempo de la memoria principal es 20 ciclos y el tiempo de transferencia es de 2 ciclos por palabra. Razone el porqué de la existencia de cada uno de los niveles de dicho sistema. (Considere que la Tabla de Página, en caso de que exista, no es cacheable). 6) (Julio05) (1 punto) Considere un computador con una memoria principal de capacidad 16MBytes que utiliza memoria virtual paginada, con páginas de 256KBytes. La tabla de páginas tiene un tamaño de 32KBytes. Cada entrada de la tabla de páginas contiene la siguiente información: bit Válido, bit Dirty, y nº de marco en memoria principal. a. Especifique el formato de la dirección virtual y dirección física, indicando el número de bits que ocupa cada uno de los campos. b. Dibuje el esquema de cómo se realiza el mecanismo de traducción. 7) (Sept05) Considere un sistema con memoria virtual en el que la dirección virtual se compone de un número de página de 8 bits y un desplazamiento de 16 bits. Dicho sistema posee una memoria física de 1 Gbyte y es direccionada por bytes. Cada entrada en la tabla de páginas tiene un tamaño de 4 bytes. En este sistema, el sistema operativo ocupa los 4 primeros Mbytes de memoria física y es en esta zona de memoria donde se almacenan las tablas de página de todos los procesos. Con estos datos determine: a. b. c. ¿Cuál es el espacio de direccionamiento virtual máximo de un proceso? ¿Cuál es el número máximo de procesos que pueden residir simultáneamente en memoria principal si cada uno ocupa el máximo espacio posible? ¿En las circunstancias del segundo apartado, qué tamaño ocupan todas las tablas de página de los distintos procesos? En el sistema anterior se emplea una memoria caché accedida por direcciones físicas con un tamaño de 256 Kbytes. Esta memoria caché está organizada en líneas de 32 bytes de longitud agrupadas en conjuntos de dos vías. En estas circunstancias, establezca: d. ¿Cómo se estructura la dirección que llega a la caché? e. ¿Es necesario vaciar la caché cada vez que se produce un cambio de contexto? ¿Por qué? 8) (2parcial-05) Se dispone de un sistema con una memoria de 64KB. El sistema tiene una caché externa asociativa por conjuntos de 2 vias, con 2KB de capacidad destinados a datos, 64 bytes por bloque, serie, unificada, con write-through, no write allocate, y con FIFO. c. Dibuje la conexión entre la CPU, la caché y la memoria principal. d. Describa cómo interpreta la caché una dirección de memoria, descomponiendo ésta en los campos correspondientes. Razone la respuesta. e. La caché tiene una tasa de aciertos del 97%, un tiempo de acierto de 2 ciclos de reloj. La memoria tiene un tiempo de acceso de 20 ciclos de reloj y un tiempo de transferencia de palabra de 2 ciclos de reloj. ¿Cuál es el tiempo de acceso medio de la jerarquía? Por otro lado, si la caché se eliminase del sistema, ¿Cuál sería el tiempo medio de acceso? Razone la respuesta. 9) (2parcial-05) En un sistema con memoria virtual, ¿qué campo no se utiliza en la tabla de páginas?: tache la que proceda. f. g. h. Válido Dirty o modificado. Etiqueta. 10) (2parcial-05) Dado un sistema dotado de memoria virtual, ¿porqué mejora cuando se le añade una TLB?¿Dónde se implementan y cuántas hay como máximo en el sistema? Razone la respuesta.