Ejercicios 1er parcial: Problema 1: Se está decidiendo entre dos posibles implementaciones de un procesador, que ejecutarán un programa que usando un simulador, se ha llegado a las siguientes características: Máquina A: tiene una frecuencia de reloj de 2.0 GHz Tipo de instrucción Ciclos de reloj Suma flotante 4 Multiplicacion flotante 8 Division flotante 15 Instrucciones enteras 2 Cargas y Almacenamientos 4 Para la otra máquina el mismo programa arroja: Frecuencia de ejecución 15% 10% 10% 40% 25% Máquina B: con una frecuencia de 2.2 GHz Tipo de instrucción Ciclos de reloj Frecuencia de ejecución Suma flotante 4 10% Multiplicacion flotante 10 15% Division flotante 20 15% Instrucciones enteras 2 40% Cargas y Almacenamientos 6 20% 1) Calcular el CPI para cada máquina 2) Cuál es la frecuencia MIPS para cada máquina 3) Suponga que el programa a ejecutar tiene 10 x109 millones de instrucciones, calcule el tiempo de ejecución y compare. 4) Compare el rendimiento de cada máquina, es decir por cuánto es más rápida una que la otra. 5) Calcule la frecuencia en MFLOP's para cada máquina y compare Problema 2: Suponga que una mejora en el compilador de último momento, ha arrojado una optimización sobre la cantidad de instrucciones de la siguiente manera: Tipo de instrucción Porcentaje de instrucciones Porcentaje de instrucciones ejecutadas ejecutadas frente al programa original frente al programa original en B en A Suma flotante 90% 90% Multiplicacion flotante 80% 80% Division flotante 90% 80% Instrucciones enteras 80% 90% Cargas y Almacenamientos 120% 110% ejemplo: si antes eran 100 instrucciones enteras, en el nuevo programa serán 80, etc. 1) 2) 3) 4) 5) Calcular el CPI para cada máquina Cuál es la frecuencia MIPS para cada máquina Suponga que el programa a ejecutar tiene 10 x109 millones de instrucciones, calcule el tiempo de ejecución y compare. Compare el rendimiento de cada máquina, es decir por cuánto es más rápida una que la otra. Calcule la frecuencia en MFLOP's para cada máquina y compare Problema 3: Coloque las instrucciones que están a la derecha, según su tipo de direccionamiento, sobre las líneas. Direccionamiento Direccionamiento Direccionamiento Direccionamiento Direccionamiento Pseudodirecto: _____________________________________________ por registros: ______________________________________________ inmediato: ________________________________________________ relativo al PC: _____________________________________________ base o por desplazamiento: ___________________________________ BEQ, SW, LW, BNE, JAL, J, ADD, SUB, ADDI, SLT, SLTI, LB, LH, SB, JR Problema 4: Se tiene el siguiente programa (izquierda), (a)en el lado derecho coloque el código máquina correspondiente, marque en un cuadro los bits que se usan en cada parte de la instrucción, y escriba en decimal los valores correspondientes Etiquetas FUNCT: Instrucción Addi $sp, $sp, -8 31 .. 26 25 .. 21 20 .. 16 15 .. 11 10 .. 6 5 .. 0 8 sw $a0, 0($sp) sw $ra, 4($sp) lb $t0, 0($a0) bne $t0, $zero, L1 add, $v0, $zero, $zero j FIN_FUNCT L1: addi $a0, $a0, 1 jal FUNCT addi $v0, $v0, 1 FIN_FUNCT: lw $a0, 0 ($sp) lw $ra, 4 ($sp) addi $sp, $sp, 8 jr $ra (b) ¿Qué hace el programa? __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ (c) ¿Es posible optimizar el código (reordenando) de tal forma que no siempre sea necesario modificar el Stack Pointer? en caso afirmativo, escriba el código correspondiente (explicándolo) Problema 5: Se tienen almacenados n números en un vector (de palabras) y se pretende colocar la suma de todos los números contenidos en el vector en el registro $v0, haga una función para solucionar dicho problema , antes escriba en C el código para dicho problema N valor 1 valor 2 ... Valor n $a0 Problema 6: Se tienen almacenados dos vectores (de palabras) de longitud N en $a1 y $a2 se necesita una función para calcular el producto punto de ambos vectores, el resultado debe quedar en registro $v0, haga una función para solucionar dicho problema , antes escriba en C el código para dicho problema N valor 1 valor 2 ... Valor n Valor 1 Valor 2 ... Valor n $a0 $a1 $a2 Problema 7: Para un programa X, un compilador generó la siguiente distribución de Instrucciones: El compilador se optimiza de manera que para el mismo programa descarta el 50% de las instrucciones de la ALU aunque no pueda reducir cargas, almacenamientos, ni saltos. Ignorando las prestaciones del sistema y suponiendo una duración del ciclo de reloj de 2-ns (frecuencia de reloj 500-MHz) ¿Cuál es la frecuencia en MIPS para el código optimizado frente al código sin optimizar? ¿Están los resultados en MIPS de acuerdo con los del tiempo de ejecución? Problema 8: Se plantea comparar dos sistemas diferentes: S1 y S2. El sistema S1 cuesta 10, 000 dólares y el sistema S2 15, 000. Se han realizado las siguientes medidas sobre estos sistemas: Tabla 1 Se dice que una máquina es más efectiva en coste que otra si la razón de rendimiento dividida por el coste es mayor. a. Un usuario sólo se interesa por el rendimiento del programa 1. ¿Qué máquina es más efectiva en coste para correr sólo el programa 1? ¿En cuánto? b. Otro usuario está preocupado por la productividad de los sistemas, cuando se midieron con una carga de trabajo igual de los programas 1 y 2. ¿Qué sistema tiene mejor rendimiento para esa carga de trabajo? ¿En cuánto? ¿Qué sistema es más efectivo en coste para esa carga de trabajo? ¿En cuánto? c. Sin embargo, otro usuario tiene los siguientes requerimientos para los sistemas: el programa 1 debe ejecutarse 200 veces cada hora. El tiempo restante puede utilizarse para correr el programa 2. Si el sistema tiene suficientes prestaciones para correr el programa 1 el número de veces requerido por hora, el rendimiento se mide por la productividad del programa 2. ¿Qué sistema es más rápido para esta carga de trabajo? ¿Qué sistema es más efectivo en coste? d. Considere que en los dos sistemas y programas se hicieron las siguientes medidas adicionales: Calcule la velocidad de ejecución de las instrucciones (instrucciones por segundo) para cada máquina cuando corre el programa 1. e. Si la frecuencia de reloj del sistema S1 es 20 MHz y la del reloj del sistema S2 es 30 MHz, encuentre los ciclos de reloj por instrucción (CPI) para el programa 1 en ambos sistemas, utilizando los datos de las dos tablas. f. Suponiendo que el CPI para el programa 2 en cada máquina es igual al CPI del programa 1 (calculado en el inciso e), encontrar el recuento de instrucciones para correr el programa 2 en cada máquina (utilice los tiempos de la tabla 1).