Está en la página 1de 5

S01

Ejercicio S01

Problema 1
Tenemos un programa P que se ejecuta en el procesador Mecca-V. El porcentaje de
instrucciones de cada tipo que se ejecutan es el siguiente:
• Instrucciones de coma flotante (que operan números reales en coma flotante):
o sumas: 15%
o productos: 10%
o divisiones: 5%
• Instrucciones de enteros: 70%
En la categoría de “instrucciones de enteros” se incluyen todas las instrucciones que operan
sobre números enteros y el resto de las instrucciones (ruptura de secuencia, movimiento y
otras) que no operan en coma flotante.
Se han hecho dos versiones del procesador Meca-V. La versión Mecca-V1 que implementa las
operaciones aritméticas en coma flotante directamente en hardware y la versión Mecca-V2 que
no dispone de instrucciones para operar con números en coma flotante. El juego de
instrucciones de enteros es exactamente el mismo para las dos versiones de procesador. Para
realizar una operación en coma flotante en el Meca-V2 se debe ejecutar una subrutina con
instrucciones de enteros (las únicas disponibles en el Meca-V2) que inserto en el código
máquina el compilador.
Los ciclos que tarda en ejecutarse cada tipo de instrucciones en el Mecca-V1 son:
• suma en coma flotante: 8 ciclos
• producto coma flotante: 8 ciclos
• división en coma flotante: 20 ciclos
• instrucción de enteros: 2 ciclos
En el Mecca-V2 una instrucción de enteros tarda en ejecutarse el mismo número de ciclos que
en el Mecca-V1. El número de instrucciones de enteros que requiere ejecutar el Mecca-V2 para
realizar cada operación con reales es el siguiente:
• sumas coma flotante: 10 instrucciones
• productos coma flotante: 15 instrucciones
• divisiones coma flotante: 30 instrucciones
Se pide:

a) Sabiendo que ambos procesadores funcionan a 1 GHz (1 Giga Hercio es igual a


10 9 Hercios), calculad los MIPS de ambos procesadores para el programa P.

Mecca-V1:
Sabemos los ciclos que tarda en ejecutarse una instrucción según el tipo al que pertenece
(suma CF, producto CF, ...) y sabemos la probabilidad (porcentaje/100) de que una instrucción
ejecutada pertenezca a un tipo determinado, por lo que podemos calcular los CPI:
CPI = 0,15 * 8 + 0,1 * 8 + 0,05 * 20 + 0,7 * 2 = 4,4
MIPS = Frecuencia / (CPI * 106) = 1*109 / (4,4 * 106) = 227,27

1 /5
S01

Mecca-V2:
En Mecca-V2 todas las instrucciones ejecutadas son sobre enteros, todas las instrucciones con
enteros se ejecutan en 2 ciclos, por lo que:
CPI = 2
MIPS = Frecuencia / (CPI * 106) = 1*109 / (2 * 106)= 500

b) Sabiendo que el programa P ejecuta 300 millones de instrucciones en el procesador Mecca-


V1, calculad el tiempo de ejecución de este programa en ambos procesadores.

Mecca-V1:
Si en Mecca-V1 se ejecutan 300 millones de instrucciones obtenemos las instrucciones de cada
tipo que se ejecutan y los ciclos que tardan en ejecutarse todas las instrucciones de cada tipo:
• 90 millones CF:
o 45 millones sumas * 8 ciclos: 300 * 106 * 0,15 * 8 = 360 * 106 ciclos
o 30 millones productos * 8 ciclos: 300 * 106 * 0,1 * 8 = 240 * 106 ciclos
o 15 millones divisiones * 20 ciclos: 300 * 106 * 0,05 * 20 = 300 * 106 ciclos
• 210 millones INT: 300 * 106 * 0,7 * 2 = 420 * 106 ciclos
El número de ciclos que tardan en ejecutarse los 300 millones de instrucciones en el Mecca-V1
es:
Ciclosucp = (360 + 240 + 300 + 420) * 106 = 1320 * 106
Tucp = Ciclosucp / Frecuencia = 1320 * 106 / 1 * 109 = 1,32 s

Mecca-V2:
En Mecca-V2 hemos de calcular cuantas instrucciones de enteros se ejecutan:
• 90 millones CF:
o 45 millones sumas * 10 instrucciones: 45 * 106 * 10 = 450*106 instruc. enteros
o 30 millones productos * 15 instrucciones: 30 * 106 * 15 = 450*106 instruc. enteros
o 15 millones divisiones * 30 instrucciones: 15 * 106 * 30 = 450*106 instruc. enteros
• 210 millones INT
Total de instrucciones ejecutadas: N=1560 * 106 instrucciones enteros
Ciclosucp = N * CPI = 1560 * 106 * 2 = 3120 * 106 ciclos
Tucp = Ciclosupc / Frecuencia = 3120 * 106 / 1 * 109 = 3,12 s

c) Calculad los MFLOPS de ambos procesadores para el programa P.

Como cada instrucción en coma flotante (CF) que se ejecuta en Mecca-V1 ejecuta una
operación en CF tenemos que el total de operaciones en CF (FLOPs) de P es de 90 * 106
(tanto en Mecca-V1 como en Mecca-V2)
MFLOPS (Mecca-V1) = FLOPs / Tupc * 106 = 90 * 106 /1,32 * 106 = 68,18
MFLOPS (Mecca-V2) = FLOPs / Tupc * 106 = 90 * 106 /3,12 * 106 = 28,84

2 /5
S01

Problema 2
Se dispone de un procesador, P1, que ejecuta instrucciones de un lenguaje máquina LM1. La
9
frecuencia de reloj del procesador es de 1.5 GHz (1 Giga Hercio es igual a 10 Hercios). El
procesador dispone de 10 contadores hardware para poder realizar estadísticas de las
prestaciones. Para realizar las cuentas se clasifican las instrucciones del lenguaje máquina LM1
en 5 tipos.
Instrucciones de:
1. enteros,
2. coma flotante (hay sólo 4 instrucciones: ADDF, SUBF, MULF y DIVF),
3. ruptura de secuencia,
4. carga y almacenamiento,
5. resto de instrucciones.
Hay 5 contadores que llamaremos CIk, para k=1..5, que cuentan el número de instrucciones
de tipo k que se han ejecutado. Hay otros 5 contadores que llamaremos CC k, para k=1..5, que
cuentan el número de ciclos que han tardado en ejecutarse las instrucciones de tipo k.
En este procesador se ejecuta una aplicación compleja de cálculo de estructuras. La ejecución
completa del código de la aplicación deja los contadores con los siguientes valores (antes de
empezar la ejecución de la aplicación se pusieron a 0 los contadores):
k CIk CCk
1 0.24 * 109 0.40 * 109
2 0.15 * 109 0.64 * 109
3 0.12 * 109 0.38 * 109
4 0.56 * 109 1.87 * 109
5 0.16 * 109 0.32 * 109

1. Calculad los siguientes parámetros para la ejecución de la aplicación en el procesador P1


(justificad la respuesta, no os limitéis a poner el número del resultado final):
a) Número total de instrucciones ejecutadas.
b) Tiempo total de ejecución.
c) CPI.
d) MIPS.
e) MFLOPS.

a)
Total de instrucciones ejecutadas:
N = (0,24+0,15+0,12+0,56+0,16) * 109 = 1,23 * 109

b)
Ciclosucp = (0,4+0,64+0,38+1,87+0,32) * 109 = 3,61 * 109

Tucp = Ciclosucp / Frecuencia = 3,61 * 109 / 1,5 * 109 = 2,406 s

3 /5
S01

c)
CPI = Ciclosucp / N = 3,61 * 109 / 1,23 * 109 = 2,935

d)
MIPS = N / Tucp * 106 = 1,23 * 109 / 2,406 * 106 = 511,22

e)
Como cada instrucción en CF ejecuta una operación en CF los FLOPs ejecutados son los
mismos que el número de instrucciones en CF por lo que

FLOPs = 0,15 * 109


MFLOPS = FLOPs / Tucp * 106 = 0,15 * 109 / 2,406 * 106 = 62,34

Pasados dos años, el fabricante del procesador lanza al mercado un nuevo procesador (P2),
que ejecuta instrucciones del mismo lenguaje máquina (LM1) que ejecutaba el P1. Por ello, P2
puede ejecutar el mismo código ejecutable de la aplicación del cálculo de estructuras que antes
se ejecutaba en P1.

El fabricante dice que las características de P2 frente a P1, son las siguientes:
• La frecuencia del reloj se ha doblado.
• Ha disminuido en un 25% el número de ciclos que en media tarda en ejecutarse una
instrucción de tipo entero.
• Ha disminuido en un 50% el número de ciclos que en media tarda en ejecutarse una
instrucción de tipo ruptura de secuencia.
• El resto de las características son las mismas.

2. Suponiendo que las mejoras en la reducción del número de ciclos que tardan en ejecutarse
las instrucciones se aplican directamente a la ejecución de la aplicación de cálculo de
estructuras, calculad los siguientes parámetros para la ejecución de la aplicación en el
procesador P2 (justificad la respuesta, en especial los aspectos que sean nuevos respecto
al apartado anterior, no os limitéis a poner el número del resultado final):
a) Número total de instrucciones ejecutadas.
b) Tiempo total de ejecución.
c) CPI.
d) MIPS.
e) MFLOPS.

Frecuencia (P2): 3 GHz


Nuevos datos
k CIk CCk
1 0.24 * 109 0.30 * 109
2 0.15 * 109 0.64 * 109
3 0.12 * 109 0.19 * 109
4 0.56 * 109 1.87 * 109
5 0.16 * 109 0.32 * 109

a)
Total de instrucciones ejecutadas:
N = (0,24+0,15+0,12+0,56+0,16) * 109 = 1,23 * 109

b)
Ciclosucp = (0,3+0,64+0,19+1,87+0,32) * 109 = 3,32 * 109

Tucp = 3,32 * 109 / 3 * 109 = 1,106 s

4 /5
S01

c)
CPI = 3,32 * 109 / 1,23 * 109 = 2,699

d)
MIPS = 1,23 * 109 / 1,106 * 106 = 1112,11

e)
MFLOPS = 0,15 * 109 / 1,106 * 106 = 135,62

3. Cuál debería ser la frecuencia de P2 para que, manteniendo el resto de parámetros y


afirmaciones sobre P2, sea cierta la frase “P2 ejecuta el código de cálculo de estructuras a
un velocidad un 30% más rápida que P1”. Considerando que la velocidad de ejecutar un
programa es la inversa del tiempo de ejecución de este programa.

Poniendo en forma de fórmula la afirmación que tiene que ser cierta tenemos:

1/ Tucp(P2) = (1/ Tucp(P1) ) + (1/ Tucp(P1) )*30/100

Sabiendo que Tucp(P1) = 2,4 y despejando se obtiene que

Tucp(P2) = 2,4/1,3 = 1,846

Como el Tucp(P2) = Ciclosucp(P2) / Frecuencia(P2) tenemos que

Frecuencia(P2) = Ciclosucp(P2) /Tucp(P2)

Sustituyendo Ciclosucp(P2) = 3,32 * 109 que obtuvimos en el apartado 1.b y Tucp(P2) = 2,4/1,3 =
1,846 obtenemos

Frecuencia(P2) = Ciclosucp(P2) /Tucp(P2) =3,32 * 109 / 1,846 = 1,8 GHz

5 /5

También podría gustarte