Optimización del Rendimiento en Sistemas Informáticos: Análisis de Memoria Caché, DMA y Jerarquía de Memoria

TEST. 1. for (i=0..) a[i]=b[i]: Los accesos presentan localidad espacial pero no temporal. 2. Relativas a memoria principal es VERDADERA: El mapa de memoria … es la totalidad del espacio … 3. (1) Relativas a memoria caché es FALSA: El tratamiento de aciertos presenta problemas de control. 4. Relativas a memoria caché asociativas es VERDADERA: Los comparadores necesarios elevan el coste. 5. NO es un tipo de memoria: Memoria de acceso restringido. 6. Relativas a niveles de jerarquía es FALSA: El tiempo de acierto no incluye… 7. Sobre políticas de arbitraje es CORRECTA: El arbitraje distribuido por autoselección… 8. (1) Indique la CORRECTA: Por el bus de direcciones se envían … a localizar … periférico. 9. E/S mapeada en memoria es FALSA: Para acceder a los dispositivos… 10. (1) NO es esquema de arbitraje de bus: Arbitraje en serie por detección de colisión. 11. Un controlador DMA: Es capaz de obtener acceso al bus… 12. Un periférico con E/S por interrupciones: El procesador realiza la transferencia de datos. 13. (1) NO es un modo válido de DMA: Con memoria unipuerta centralizada. 14. (2) Relativas a memoria caché es VERDADERA: Un fallo por capacidad… 15. Sea un computador MIPS … TLB: La instrucción está en memoria principal y hace un cierto tiempo… 17. (3) Relativas a memoria caché multinivel es FALSA: La caché de segundo nivel tratará… 18. (4) Relativas a memoria caché asociativas es VERDADERA: Una celda de memoria almacena un bit. 19. Sea … 5,12,24,7,5,12,16: Ninguna de las … 20. (2) Indique la CORRECTA: Tanto los …


21. for I := 1 to n DO: No presentan ningún… 22. Sea un computador dotado: 19. 23. Sea un computador con memoria: 0x12345, 0x678 24. Dadas las siguientes dos columnas: Bus de datos -> Circulan, Bus de direcciones -> Localiza la ubicación, Bus de control -> Transmite las señales de control. 25. Un bus síncrono frente a uno asíncrono: Tiene problema de sesgo de reloj. 26. (2) NO es un esquema de arbitraje de bus: Arbitraje paralelo distribuido. 27. (2) NO es un modo válido de DMA: Con bus exclusivo. 28. La principal característica de un multiprocesador simétrico: Los procesadores acceden a memoria de manera uniforme. 29. Los algoritmos de coherencia de caché: En multiprocesadores de memoria compartida. 30. (3) Indique la CORRECTA: GPUs -> Ninguna de las restantes es correcta… 31. (5) Relativas a memoria caché es FALSA: Aumentar el grado … -> Ninguna de las anteriores 32. Chip SRAM: 64Kbytes. 33. (2) Relativas a memoria virtual es FALSA: El desplazamiento de página forma parte… 34. (4) Indique la CORRECTA: La TLB almacena direcciones físicas. 33. (3) Relativas a memoria virtual es FALSA: Es necesario el uso de etiquetas para comprobar… 16. (1) Relativas a memoria virtual es VERDADERA: En la tabla de páginas… -> Ninguna de las anteriores afirmaciones..


Ejercicios Prácticos

EJERCICIOS. 1. Se dispone de un computador capaz de ejecutar 100 MIPS. Se desea conectar… a) ¿Cuánto tiempo tarda el periférico en transmitir un bloque? El periférico suministra 200.000 bytes/seg, por lo que un byte se enviará cada 1/200.000 = 5 microSeg. Como los bloques son de 512 bytes, una operación de E/S durará: 5 microSeg * 512 = 2560 microSeg. b) ¿Cuántas instrucciones CPU? 2560 microSeg * 100 * 10 ^ 6 = 256.000. c) ¿Cuántas instrucciones … E/S programada … 8 instrucciones?: Al ser entrada – salida solo se ejecutarán instrucciones de dicha rutina, por lo que no será capaz de ejecutar ninguna otra instrucción de otro proceso. d) Se sabe que la rutina … E/S interrupciones … 25 instrucciones. La rutina de interrupción consta de 25 instrucciones. Al ser los bloques de 512 bytes ejecutaremos 25 * 512 = 12.800 instrucciones. Por lo tanto, el número de instrucciones que puede ejecutar de otros procesos es de 256.000 – 12.800 = 243.200. e) DMA por robo de ciclo. Para 512 bytes se tardará 35 ns * 512 bytes = 17.920 ns. Dado que el procesador ejecuta 100 MIPS, la CPU habrá ejecutado 1792 instrucciones. La CPU podrá ejecutar 256.000 – 1792.

2. b) Determinar el número de accesos. Continuación LOAD, STORE… De los 20 millones de accesos a memoria correspondientes a las instrucciones LOAD y STORE, el 75% corresponden a LOAD y 25% a STORE, por lo que 15 millones de accesos son de lectura y 5 de escritura. Es decir, se realizan 50 + 15 millones de accesos de lectura y 5 millones de escritura. Dado que el 5% producirá fallos de caché para las lecturas el nº de fallos es de 0,05 * 65 = 3,25 millones. Cada fallo de lectura de caché supone lectura de un bloque completo, que al ser de 8 palabras se producirán 8 * 3,25 = 26 millones de accesos a memoria principal. Por otro lado, se producen 5.000.000 * 0,05 fallos de caché para la escritura. Cuando se produce un fallo hay que considerar dos pasos, la resolución del fallo y la escritura en memoria principal de la palabra. Por lo que 4.750.000 + 250.000 * 8 + 250.000 = 7.000.000. Finalmente, en total se producirán 26 mill + 7 mill = 33.000.000 de accesos a memoria principal por segundo.


3. Un computador tiene una memoria principal de 64K palabras de 16/bits … (FIFO). a) Especificar el número de bits… El nº de bits necesarios para direccionar una palabra de memoria principal es de 64K palabras = 2^16. Se necesitan por tanto, 16 bits. La caché tiene 2K (2^11) palabras repartidas en bloques de 256 (2^8) palabras/bloque. 2^11 / 2^8 = 2^3 = 8 bloques. Un conjunto tiene dos bloques, por lo que: 8/2 = 4 conjuntos. Etiqueta = 6 bits. Observa los dos siguientes fragmentos de código. b) Analiza la evolución de la caché y calcula cuántos fallos CODIGO 1… Cada vector de 1024 elementos ocupará 4 bloques de 256 elementos. Los accesos a los primeros elementos de cada bloque darán fallos de caché. Por lo tanto, la ejecución del bucle 1 dará 8 fallos de caché y el segundo 4. Se remplazan los bloques del vector “a” ya que es FIFO por lo que los accesos a “b” no generarán fallos. Total = 8 + 4 = 12 fallos de caché. c) Analiza la evolución CODIGO 2… La primera iteración del bucle generará 3 fallos, puesto que no están ninguno de los bloques accedidos. El acceso al bloque del vector c implica que se remplaza el vector “a” por FIFO. d) Suponiendo que tienes posibilidad… Aumentar el grado de asociatividad.

4. Un computador tiene un CPI = 5 ciclos. Si el computador funciona a 15MHz… a) E/S programada… Nº de ciclos para transferir una palabra = 4 instrucciones * 5 CPI = 20 ciclos. Velocidad del computador = 15MHz = 15*10^6. Velocidad de transferencia máxima = 15*10^6 / 20 ciclos/palabra = 750.000 palabras/seg. b) DMA con transferencia por ráfagas. 5 ciclos -> instrucción i, 1 ciclo -> DMA, 1 ciclo -> DMA, … -> …, 5 ciclos -> instrucción i + 1, 5 ciclos -> instrucción i + 2. Velocidad de transferencia máxima = 15*10^6 / 1ciclo = 15 * 10^6 palabras/seg c) DMA con transferencia por robo de ciclo. 5 ciclos -> instrucción i, 1 ciclo -> DMA, 5 ciclos -> instrucción i + 1, 1 ciclo -> DMA, … Velocidad de transferencia máxima = 15 * 10^6 ciclos/seg / 6 ciclos/palabra = 2,5 * 10^6 palabras/seg


5. Sea un computador de 32 bits que direcciona la memoria por bytes, considere el siguiente fragmento de código donde a y b son vectores de 2^11. a) Deduzca razonadamente qué partes de los vectores quedan en la memoria caché. El tamaño de la memoria caché es justo el tamaño de uno de los vectores 2^11 * 4 bytes (32 bits). De este modo, tras la ejecución de la mitad de las iteraciones del bucle, la memoria caché se llenará. A partir de la iteración 2^10 se comienzan a desalojar. Como es LRU se desalojarán los recientemente utilizados por lo que solo permanecerán en caché la segunda mitad de los elementos de a y b. En cuanto a los aciertos, como al principio la caché está vacía se produce fallo forzoso a uno de cada dos elementos. Esto implica un 50% de tasa de aciertos. b) Inmediatamente tras la ejecución del código 1… La ejecución de este código provocará que se acierte en los accesos al vector “a” entre los elementos 2^11 y 2^10, mientras que los elementos del vector 0 provocarán accesos cada 2 y remplazarán los elementos de a y b que quedaron en caché tras la ejecución del código 1. Debido a esto se irán remplazando los elementos de ambos vectores hasta quedar en caché la primera mitad de cada uno de los vectores. En cuanto a los fallos, se producen fallos a 1/4 de los elementos de “a” y la mitad de c, por lo que la tasa de fallos es de 37,5%, por lo que la tasa de aciertos es del 62,5%. c) Inmediatamente tras la ejecución del código 2… Dado que el código 3 presenta una división por 0, podemos suponer y afirmar que el bucle no se ejecutaría, justo antes de bloquearse se accede a la posición b[0], provocando fallo, por lo que la tasa de aciertos sería del 0%.

6. Sea un computador con las siguientes características: · Ancho de palabra … a) Indica el formato de dirección… La dirección virtual se divide en 2 campos: Nº de página virtual y page offset. Puesto que el tamaño de página es de 2KB, serán necesarios 11 bits para codificar el page offset. OPCIONAL: Dado que cada sector puede contener 512 bytes, un fichero de 127,5kb ocupará 512/127,5 = 255 sectores. Sabiendo que el disco duro tiene 255 platos, y que las cabezas lectoras se mueven de manera simultánea, la mejor estrategia sería realizar la escritura de 1 sector en 1 plato, ya que los otros 254 se hacen de forma simultánea.


Dado que la dirección virtual tiene 32 bits nos quedan 32 – 11 = 21 bits para codificar el nº de página virtual. b) Indica la secuencia de páginas… Cada uno de los tres vectores ocuparán un total de 2K de palabras de 4 bytes. Teniendo en cuenta que el tamaño de página es de 2kb, cada uno de los vectores ocupará 4 páginas. En total 12 páginas para los 3 vectores. Como el proceso solo tiene asignado 8 marcos de página, necesariamente se darán fallos de página durante la ejecución. El vector “a” ocupará las 4 primeras páginas, p0, p1, p2 y p3, el “b” las 4 siguientes y lo mismo con “c”. · Primer bucle, solo accede a elementos de “a” p0 (512 veces), p1 (512 veces)… · Segundo bucle a “a” y “b”, p0 y p4 (512) … y el tercero a “a” y “c” p0 y p8 (512)… c) Indica los fallos de página que se producen. En el primer bucle, se producirá 1 fallo por cada acceso debido a que la memoria está vacía. Se producirán por tanto 4 fallos. Los 4 primeros marcos estarán llenos, mientras que el resto está vacío. En el segundo bucle, los accesos a elementos de las páginas p0, p1, p2 y p3, no producen fallo, sin embargo, sí generará fallos el primer acceso de las páginas de b. 1 cada una, haciendo un total de 4. En este punto los marcos de página están completos. Marco 0 -> p0, Marco 1 -> p1. En el tercer bucle, el primer acceso a p0 no produce fallo. El primer acceso de “c” al igual que el resto anteriormente, sí producirá fallo, pero además, como no hay marcos disponibles se debe aplicar el remplazamiento FIFO. Se sustituirán las páginas del vector “a”, ya que fueron los primeros en alojarse, por lo tanto p0 generará fallo de página, ya que su lugar lo habría ocupado p8, y así continuamente, esto hace que los marcos queden de manera salteada, Marco 0 -> p8, Marco 1-> p0, Marco 2 -> p9, Marco 3, -> p1… Por lo tanto se producen 4 + 4 + 8 fallos d) LRU. Los dos primeros bucles no cambian. 4 fallos cada uno. En el tercer bucle sí se producen remplazamientos, P0 no producirá fallos, pero sí lo hará p8, sin embargo, con LRU, la página menos recientemente utilizada es P4, después p5, p6, y p7, por lo que se remplazarán dichas páginas dando lugar a 4 fallos del primer acceso del vector “c”. Por lo tanto, 4+4+4 = 12.