PARTE A SOLUCIONES Pregunta 1. Suponer que se dispone de un procesador altamente segmentado para el que se implementa un "branch-target buffer (BTB)" sólo para los saltos condicionales. Suponer que la penalización por fallo en la predicción del salto es siempre de 4 ciclos y la penalización por fallo del buffer es siempre de 2 ciclos. Suponer que se tiene una tasa de acierto del 80% y una precisión del 90%, y una frecuencia de instrucciones de saltos condicionales del 20%. ¿Cuánto más rápido es el procesador que dispone de un buffer BTB en relación a otro procesador sin BTB que tiene una penalización fija de ciclos en los saltos?. Suponer que se produce una penalización de 3 ciclos de reloj por dependencias de control en el procesador que no tiene BTB. Suponer un CPI ideal sin paradas por saltos de 1. Marca la respuesta correcta. __ 10% __ 20% __25% __ 30% __ 35% X__ 40% __ 45% __ 50% __ 60% __ 65% __ 80% Pregunta 2. En este ejercicio se analiza cómo un bucle vectorial se ejecuta en la versión del procesador DLX monoescalar, con planificación dinámica de instrucciones utilizando el algoritmo de Tomasulo. Este es su código DLX, suponiendo que el inmediato done y los registros R1, R2, y F0 se han inicializado antes de comenzar a ejecutarse el bucle: ini: LD F2,0(R1) MULTD F4,F2,F0 LD F6,0(R2) ADDD F6,F4,F6 SD 0(R2),F6 ADDI R1,R1,#8 ADDI R2,R2,#8 SGTI R3,R1,done BEQZ R3,ini Suponer que se dispone de una unidad funcional de enteros (denominada “E”), una para cargas (denominada “C”), y otras para almacenamientos (denominada “A”). Todas ellas tardan 1 ciclo de reloj en terminar la operación desde que los operandos están disponibles. Adicionalmente, existe una unidad funcional que realiza las operaciones de multiplicación en punto flotante (denominada “M”) que tarda 4 ciclos de reloj, y una unidad funcional que realiza las sumas en punto flotante (denominada “S”) que tarda 3 ciclos de reloj. Los saltos se resuelven en la unidad de enteros. Suponer que en cada una de las estaciones de reserva de las unidades funcionales se pueden alojar hasta 3 instrucciones. Suponer que las unidades funcionales pueden empezar a ejecutar la operación correspondiente tan pronto como se disponga de los datos en la estación de reserva o se estén transmitiendo por el CDB. Rellena la siguiente tabla, mostrando el estado de las estaciones de reserva que estén ocupadas cuando la instrucción SGTI escribe por primera vez el resultado en el CDB. Estación de reserva E1 E2 E3 S1 S2 S3 A1 A2 y A3 C1, C2, C3 M1,M2,M3 Ocupada? Operación Si No Si No Si No Si No No No Vj Vk BEQZ R3 Ini SGTI R1 Done ADDD F4 F6 SD R2 Qj Qk F6 PARTE B SOLUCIONES Pregunta 1. Un multiprocesador tiene 6 CPUs conectadas a 5 módulos de memoria mediante un bus común, implementando un modelo de computación de memoria compartida. El bus es síncrono y su funcionamiento es de ciclo partido. Esto significa que el acceso a memoria se divide en fases: una fase de direccionamiento, una fase de acceso de la memoria, y una fase de datos. El tiempo de acceso de cada módulo de memoria es de 2 µs y el tiempo de ciclo de cada CPU es de 400 ns. Cada bloque de memoria es bloqueante, es decir, no acepta nuevas peticiones de acceso a memoria si no ha resuelto las anteriores. El número de ciclos de utilización del bus para hacer los intercambios de información entre la memoria y las CPUs son los siguientes: Operación de Lectura. Envío de la dirección: 1 ciclo; Lectura del dato: 1 ciclo Operación de Escritura. Envío conjunto de la dirección y dato: 1 ciclo (a) Sabiendo que de cada 3 operaciones en memoria que se realizan indistintamente por las diferentes CPUs, 2 son de lectura y 1 de escritura, ¿cuál es el número máximo de operaciones por segundo que permite ejecutar cada módulo de memoria? (marca la respuesta correcta, la cual está expresada en operaciones/segundo): __ 100000 __ 350000 X__ 375000 __ 200000 __225000 __150000 (b) Calcular el número máximo de operaciones que permiten ejecutar todos los módulos de memoria, así como el número de ciclos de ocupación del bus para esa cantidad de operaciones, y responder a la siguiente pregunta: ¿dónde está el cuello de botella? (marca la respuesta correcta): El cuello de botella está en: X__ el bus __ la memoria (c) Calcular el número máximo de operaciones que realmente se pueden ejecutar en toda la memoria en 1 segundo considerando tanto la memoria como el bus compartido (marca la respuesta correcta, la cual está expresada en operaciones/segundo): X__ 1.5 106 __ 4.2 105 __ 7.0 103 __ 2.5 106 __ 10 __ 3.9 102 Pregunta 2. Suponer que en una memoria cache pseudo-asociativa se requieren 2 ciclos extra para encontrar la dirección demandada en la segunda mitad que también es una cache de correspondencia directa. Suponer que el tiempo de acierto en la primera mitad es de 1 ciclo, y que la penalización es de 50 ciclos. Usando los parámetros que aparecen a continuación, Tipo de Cache Frecuencia de fallos 2K – 1 vía 9.8% 2K – 2 vías 7.6% 128KB – 1 vía 1% 128 KB – 2 vías 0.7% (a) ¿Cuál es el tiempo de acceso promedio (AMAT) de una cache pseudoasociativa de 2 KB? (marca la respuesta correcta, la cual está expresada en ciclos): __ 3.05 X__ 4.84 __ 4.48 __ 3.57 __8.43 __ 2.89 (b) ¿Cuál es el tiempo de acceso promedio (AMAT) de una cache pseudoasociativa de 128 KB? (marca la respuesta correcta, la cual está expresada en ciclos): __ 2.66 __ 1.05 __ 1.26 X__ 1.36 __ 3.21 __ 2.12