Documente Academic
Documente Profesional
Documente Cultură
1. (2 puntos)
Un aplicacion tarda 100 segundos en ejecutarse en un sistema empotrado y esta compuesta por tres
subrutinas que se ejecutan secuencialmente. La primera de ellas lee una serie de datos desde la unidad
de almacenamiento, la segunda ejecuta un algoritmo de compresion sobre estos datos. Al finalizar, los
resultados de esta compresion son almacenados por la tercera subrutina.
Para cada una de estas subrutinas existe una optimizacion especfica. La optimizacion L aprovecha la
localidad espacial de los datos para acelerar su lectura, la optimizacion C utiliza un novedoso algoritmo
de compresion, mucho mas rapido. Por ultimo, la optimizacion E usa un buffer de escrituras para reducir
el tiempo de almacenamiento.
Las optimizaciones L y C mejoran la velocidad de ejecucion de cada una de sus respectivas rutinas en
un 60 %, mientras que la optimizacion E duplica la velocidad de almacenamiento.
Responda razonadamente a las siguientes cuestiones:
a) Se ha medido que cuando se aplica la optimizacion E el tiempo de ejecucion total pasa a ser 90
segundos. Cual es la fraccion de tiempo que se dedicaba a almacenar los resultados antes de aplicar
esta optimizacion?
b) Se ha observado que si se aplican a la vez las optimizaciones C y E el tiempo de ejecucion pasa
a ser 75 segundos. Cual es la fraccion de tiempo dedicada a la compresion de los datos antes de
aplicar esta optimizacion? Y a su lectura?
c) Debido a las limitaciones de memoria en el sistema empotrado, no es posible combinar mas de
dos optimizaciones a la vez. Teniendo en cuenta que si se combinan las optimizaciones L y E el
tiempo de ejecucion tambien es de 75 segundos, que combinacion o combinaciones ofrecen la
mayor aceleracion global? Que aceleracion ofrece u ofrecen?
Solucion:
...
; Subrutina sin parametros
sd r0, 0(r29) ; param 3
sd r1, -4(r29) ; param 2
...
sd r2, -8(r29) ; param 1
jal subrutina
addi r29, r29, -12 ; gest. puntero de pila
...
jal subrutina
addi r29, r29, 12 ; gest. puntero de pila
...
donde el numero de operaciones de apilar (sd rx, N(r29)) es igual al numero de parametros y las
operaciones aritmeticas de gestion del puntero de pila solo estaran presentes si hay que pasar uno o mas
parametros por la pila.
Se plantea el uso de un nuevo compilador que utiliza los registros del procesador para pasar hasta dos
parametros a la subrutina invocada, eliminando la necesidad de apilarlos. En caso necesario, el resto de
los parametros se seguiran pasando por la pila.
Se solicita:
a) Calcular el tiempo de ejecucion del programa P (en ciclos) cuando se utiliza el compilador original.
Supongase que el numero de instrucciones ejecutadas es n.
b) Mostrar una tabla indicando para cada numero de parametros de una funcion el numero de instruc-
ciones que se ahorran en la llamada de dicha funcion con el nuevo compilador y de que tipo son.
Rellenad la tabla adjunta.
c) Calcular el nuevo numero de instrucciones ejecutadas.
d) Calcular la nueva distribucion de instrucciones. Rellenad la tabla adjunta.
e) Calcular el CPI medio cuando se utiliza el nuevo compilador.
f ) Calcular el nuevo tiempo de ejecucion del programa P y la aceleracion obtenida con respecto al
codigo generado por el compilador original.
Solucion:
Tej = I CP I T
1 param. 2+ param.
z }| { z }| {
Dalmac = 0,15 0,025 (0,2 1 + 0,5 2) = 0,15 0,025 1,2 = 0,15 0,03 = 0,12
1 y 2 param.
z }| {
Darit = 0,5 0,025 0,4 2 = 0,5 0,02 = 0,48
Tipo Distribucion
Carga 25
Almacenamiento 12
Aritmeticas 48
Saltos 10
TOTAL 95
e) El nuevo CPI sera:
0,25 1,2 + 0,12 1 + 0,48 1,3 + 0,1 1,2
CP I 0 = =
0,95
0,3 + 0,12 + 0,624 + 0,12 1,164
CP I 0 = = = 1,2253
0,95 0,95
f ) Mejora obtenida con el nuevo compilador
1,164
Tej0 = I 0 CP I 0 T = 0,95 n ciclos = 1,164 n ciclos
0,95
Tej 1,22 n
S= 0
= = 1, 048 4,8 %
Tej 1,164 n