Sunteți pe pagina 1din 4

Arquitectura e Ingeniera de Computadores - 3er Curso. Sol.

del Ejercicios 1er parcial

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:

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?
100 1
= FE
FE = 0,2
90 1 FE + 2
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?
100 1
= FC 0,2 FC = 0,4 FL = 0,4
75 1 FC 0,2 + 1,6
+ 2

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 optimi-
zaciones 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?
1 100
SLC = 0,4 0,4 = 1,43 > = 1,33
1 0,4 0,4 + 1,6
+ 1,6
75
Por tanto, la combinacion LC es la mejor.
2. (4 puntos)
Un programa P compilado para un procesador de la familia MIPS contiene la siguiente distribucion de
instrucciones con sus correspondientes CPIs.
Tipo % CPI
Carga 25 1.2
Almacenamiento 15 1
Aritmeticas 50 1.3
Saltos 10 1.2
Analizando el codigo del programa y las instrucciones generadas por el compilador se observa que un
25 % de las instrucciones de salto son llamadas a subrutina (jal).
Ademas, se han obtenido las siguientes estadsticas sobre el numero de parametros utilizados en las
llamadas a subrutina.
No Parametros %
0 30
1 20
2 20
3 10
4 o mas 20
El codigo generado por el compilador para llamar a una subrutina tiene el siguiente aspecto:
; Subrutina con 3 parametros

...
; 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:

a) Tiempo de ejecucion original

Tej = I CP I T

CP I = 0,25 1,2 + 0,15 1 + 0,5 1,3 + 0,1 1,2 = 0, 3 + 0, 15 + 0, 65 + 0, 12 = 1, 22

Tej = 1,22 n ciclos


b) Resumen de las instrucciones ahorradas en la invocacion de subrutinas.
No Parametros % Variacion Aritmeticas Variacion Almacenamiento
0 30 0 0
1 20 -2 -1
2 20 -2 -2
3 10 0 -2
4 o mas 20 0 -2
c) El nuevo numero de instrucciones ejecutadas sera:

I 0 = I (1 0,1 0,25 (0,2 3 + 0,2 4 + 0,1 2 + 0,2 2))


|{z} | {z } | {z } | {z } | {z }
saltos 1 param. 2 param. 3 param. 4+ param.
| {z }
saltos a subrutina

I 0 = n (1 0,025 (0,6 + 0,8 + 0,2 + 0,4))

I 0 = n (1 0,025 2) = n (1 00 05) = 0,95 n


d) La nueva distribucion D de instrucciones sera:

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

S-ar putea să vă placă și