0% encontró este documento útil (0 votos)
54 vistas22 páginas

Ejercicios Resueltos Capítulo 1 PyH 4 Edición 2024

El documento presenta ejercicios resueltos sobre el rendimiento de procesadores en diferentes configuraciones, calculando instrucciones por segundo (IPS), ciclos y frecuencias de reloj necesarias para optimizar el rendimiento. Se concluye que el procesador P2 tiene el mejor rendimiento en ambas configuraciones, y se discuten factores que afectan el rendimiento como el CPI y la frecuencia de reloj. Además, se analizan implementaciones de código y su eficiencia en términos de CPI y tiempo de ejecución.

Cargado por

xsky13
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
54 vistas22 páginas

Ejercicios Resueltos Capítulo 1 PyH 4 Edición 2024

El documento presenta ejercicios resueltos sobre el rendimiento de procesadores en diferentes configuraciones, calculando instrucciones por segundo (IPS), ciclos y frecuencias de reloj necesarias para optimizar el rendimiento. Se concluye que el procesador P2 tiene el mejor rendimiento en ambas configuraciones, y se discuten factores que afectan el rendimiento como el CPI y la frecuencia de reloj. Además, se analizan implementaciones de código y su eficiencia en términos de CPI y tiempo de ejecución.

Cargado por

xsky13
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Ejercicios resueltos capítulo 1 del libro de P y H AyOC 2024

Arquitectura y Organización de Computadoras 2024


Ejercicios resueltos - Carlos Ponce
Capítulo 1
1.3.1
Rendimiento de los procesadores en las configuraciones a y b

Para determinar el procesador con el mayor rendimiento en instrucciones por segundo (IPS)
para las configuraciones a y b, necesitamos calcular el IPS para cada procesador en cada
configuración. El IPS se calcula como:

```
IPS = Clock Rate / CPI
```

## Configuración a
Procesador Clock Rate (GHz) CPI IPS
P1 3 1,5 2
P2 2,5 1,0 2,5
P3 4 2,2 1,82
En la configuración a, el procesador P2 tiene el mayor rendimiento con 2.5 IPS.

## Configuración b
Procesador Clock Rate (GHz) CPI IPS
P1 3 0.90 3.33
P2 4 0.75 5.33
P3 2.5 1.10 2.27
En la configuración b, el procesador P2 tiene el mayor rendimiento con 5.33 IPS.

Conclusión
En ambas configuraciones, el procesador P2 tiene el mayor rendimiento en instrucciones por
segundo. Sin embargo, el rendimiento relativo de los procesadores cambia entre las
configuraciones. En la configuración a, P2 tiene un rendimiento ligeramente mayor que P1,
mientras que en la configuración b, P2 tiene un rendimiento significativamente mayor que P1 y
P3. Esto se debe a que el CPI de P2 es significativamente menor que el de los otros
procesadores en la configuración b.

Observaciones
* Es importante tener en cuenta que el rendimiento de un procesador no solo depende de su
IPS, sino también de otros factores como el tamaño de la caché, la arquitectura de la memoria
y el tipo de aplicación que se está ejecutando.
* Los valores de CPI utilizados en este análisis son solo ejemplos y pueden variar dependiendo
de la aplicación específica que se esté ejecutando.

1
1.3.2
## Cálculos para la configuración a

### Número de ciclos


Para calcular el número de ciclos para la configuración a, podemos usar la siguiente fórmula:

Número de ciclos = Tiempo de ejecución * Frecuencia de reloj

donde:

* Tiempo de ejecución = 10 segundos


* Frecuencia de reloj = 3 GHz para P1, 2.5 GHz para P2 y 4 GHz para P3

Por lo tanto, el número de ciclos para cada procesador es:


* P1: 10 segundos * 3 GHz = 30 mil millones de ciclos
* P2: 10 segundos * 2.5 GHz = 25 mil millones de ciclos
* P3: 10 segundos * 4 GHz = 40 mil millones de ciclos

### Número de instrucciones

Para calcular el número de instrucciones, podemos usar la siguiente fórmula:

Número de instrucciones = Número de ciclos / CPI

donde:

* Número de ciclos = los valores calculados anteriormente para cada procesador


* CPI = 1.5 para P1, 1.0 para P2 y 2.2 para P3

Por lo tanto, el número de instrucciones para cada procesador es:


* P1: 30 mil millones de ciclos / 1.5 = 20 mil millones de instrucciones
* P2: 25 mil millones de ciclos / 1.0 = 25 mil millones de instrucciones
* P3: 40 mil millones de ciclos / 2.2 = 18.18 mil millones de instrucciones

## Cálculos para la configuración b

### Número de ciclos

Para calcular el número de ciclos para la configuración b, podemos usar la misma fórmula que
para la configuración a:

Número de ciclos = Tiempo de ejecución * Frecuencia de reloj

donde:

* Tiempo de ejecución = 6 segundos


* Frecuencia de reloj = 3 GHz para P1, 4 GHz para P2 y 2.5 GHz para P3

Por lo tanto, el número de ciclos para cada procesador es:

* P1: 6 segundos * 3 GHz = 18 mil millones de ciclos


* P2: 6 segundos * 4 GHz = 24 mil millones de ciclos

2
* P3: 6 segundos * 2.5 GHz = 15 mil millones de ciclos

### Número de instrucciones

Para calcular el número de instrucciones, podemos usar la misma fórmula que para la
configuración a:

Número de instrucciones = Número de ciclos / CPI

donde:

* Número de ciclos = los valores calculados anteriormente para cada procesador


* CPI = 0.9 para P1, 0.75 para P2 y 1.1 para P3

Por lo tanto, el número de instrucciones para cada procesador es:

* P1: 18 mil millones de ciclos / 0.9 = 20 mil millones de instrucciones


* P2: 24 mil millones de ciclos / 0.75 = 32 mil millones de instrucciones
* P3: 15 mil millones de ciclos / 1.1 = 13.64 mil millones de instrucciones

Resumen
Configuración Procesador Nº de ciclos Nº de instrucc.
P1 30 mil millones 20 mil millones
a. P2 25 mil millones 25 mil millones
P3 40 mil millones 18.18 mil millones
P1 18 mil millones 20 mil millones
b. P2 24 mil millones 32 mil millones
P3 15 mil millones 13.64 mil millones

Observaciones
* El número de instrucciones es el mismo para P1 en ambas configuraciones, ya que el
programa que se ejecuta es el mismo.
* El número de instrucciones es mayor para P2 en la configuración b que en la configuración a,
ya que la frecuencia de reloj es mayor en la configuración b.
* El número de instrucciones es menor para P3 en la configuración b que en la configuración a,
ya que el CPI es menor en la configuración b.

1.3.3
# Cálculo de la frecuencia de reloj para una reducción del tiempo de ejecución del 30% con un
aumento del CPI del 20%

Para lograr una reducción del tiempo de ejecución del 30% con un aumento del CPI del 20%,
necesitamos calcular la nueva frecuencia de reloj necesaria para cada procesador en las
configuraciones a y b.

## Configuración a

Tiempo de ejecución original: 10 segundos


Tiempo de ejecución objetivo: 7 segundos (reducción del 30%)
CPI original: 1.5 para P1, 1.0 para P2 y 2.2 para P3
CPI nuevo: 1.2 para P1, 0.8 para P2 y 1.76 para P3 (aumento del 20%)

3
Nueva frecuencia de reloj:

Nueva frecuencia de reloj = Tiempo de ejecución objetivo * CPI nuevo / Número de


instrucciones

donde:

* Tiempo de ejecución objetivo = 7 segundos


* CPI nuevo = los valores calculados anteriormente para cada procesador
* Número de instrucciones = los valores calculados en el ejercicio 1.3.2 para la configuración a

Por lo tanto, la nueva frecuencia de reloj para cada procesador en la configuración a es:

* P1: 7 segundos * 1.2 / 20 mil millones = 4.2 GHz


* P2: 7 segundos * 0.8 / 25 mil millones = 2.24 GHz
* P3: 7 segundos * 1.76 / 18.18 mil millones = 7.04 GHz

### Configuración b

Tiempo de ejecución original: 6 segundos


Tiempo de ejecución objetivo: 4.2 segundos (reducción del 30%)
CPI original: 0.9 para P1, 0.75 para P2 y 1.1 para P3
CPI nuevo: 1.08 para P1, 0.9 para P2 y 1.32 para P3 (aumento del 20%)

Nueva frecuencia de reloj:

Nueva frecuencia de reloj = Tiempo de ejecución objetivo * CPI nuevo / Número de


instrucciones

donde:

* Tiempo de ejecución objetivo = 4.2 segundos


* CPI nuevo = los valores calculados anteriormente para cada procesador
* Número de instrucciones = los valores calculados en el ejercicio 1.3.2 para la configuración b

Por lo tanto, la nueva frecuencia de reloj para cada procesador en la configuración b es:

* P1: 4.2 segundos * 1.08 / 20 mil millones = 2.26 GHz


* P2: 4.2 segundos * 0.9 / 32 mil millones = 1.13 GHz
* P3: 4.2 segundos * 1.32 / 13.64 mil millones = 4.2 GHz

## Resumen
Configuración Procesador Nueva frecuencia de reloj (GHz)
P1 4.2
a. P2 2.24
P3 7.04
P1 2.26
b. P2 1.13
P3 4.20

4
## Observaciones
* La nueva frecuencia de reloj para P3 en la configuración a es muy alta (7.04 GHz), lo que
puede no ser alcanzable con la tecnología actual.
* La nueva frecuencia de reloj para P2 en la configuración b es muy baja (1.13 GHz), lo que
puede no ser eficiente para el procesador.

## 1.4.1 ¿Qué implementación es más rápida?


Para determinar qué implementación es más rápida, necesitamos calcular el tiempo de
ejecución para cada implementación. El tiempo de ejecución se calcula como:

Tiempo de ejecución = Número de instrucciones * CPI promedio

donde:
* Número de instrucciones = 1000000
* CPI promedio = (Porcentaje de instrucciones de clase A * CPI de clase A) + (Porcentaje de
instrucciones de clase B * CPI de clase B) + (Porcentaje de instrucciones de clase C * CPI de
clase C) + (Porcentaje de instrucciones de clase D * CPI de clase D)

## Implementación a
* CPI promedio = (0.1 * 1) + (0.2 * 2) + (0.5 * 3) + (0.2 * 3) = 2.3
* Tiempo de ejecución = 1000000 * 2.3 = 2300000 ciclos

## Implementación b
* CPI promedio = (0.1 * 2) + (0.2 * 1.5) + (0.5 * 2) + (0.2 * 1) = 1.85
* Tiempo de ejecución = 1000000 * 1.85 = 1850000 ciclos

Por lo tanto, la implementación b es más rápida que la implementación a, ya que tiene un


tiempo de ejecución menor (1850000 ciclos frente a 2300000 ciclos).

## 1.4.2 ¿Cuál es el CPI global para cada implementación?


El CPI global para cada implementación se calcula como se mencionó anteriormente:

# Implementación a
* CPI global = 2.3

# Implementación b
* CPI global = 1.85

## 1.4.3 ¿Cuántos ciclos de reloj se requieren en ambos casos?


Los ciclos de reloj requeridos en ambos casos se calculan como:

# Implementación a
* Ciclos de reloj = Tiempo de ejecución / Frecuencia de reloj = 2300000 ciclos / 2.5 GHz =
920000 ciclos

# Implementación b
* Ciclos de reloj = Tiempo de ejecución / Frecuencia de reloj = 1850000 ciclos / 3 GHz =
616666.67 ciclos

5
## Resumen

Implementación CPI promedio Tiempo de ejecución Ciclos de reloj


(ciclos)
a. 2.3 2.300.000 920.000
b. 1.85 1.850.000 616.666,67

## Observaciones
* La implementación b es más rápida que la implementación a, ya que tiene un CPI promedio
menor y un tiempo de ejecución menor.
* La implementación b también requiere menos ciclos de reloj que la implementación a, ya
que tiene una frecuencia de reloj mayor.

1.4.4
Arith Store Load Branch Total
650 100 600 50 1400

Primero calculamos el número de ciclos de reloj para cada tipo de instrucción:


Arith Store Load Branch Total
650 100 600 50 1400
650 500 3000 100 4250

Luego, dividimos el número de ciclos de reloj por la frecuencia de reloj para obtener el tiempo
de ejecución:
Arith Store Load Branch Total
650 500 3.000 100 4.250
650 500 3.000 100 4.250
0.325 0.25 1.50 0.05 2.125

El tiempo de ejecución del programa es de 2.125 segundos.

# 1.4.5 Cálculo del CPI del programa


Para calcular el CPI del programa, necesitamos calcular el CPI promedio ponderado de cada
tipo de instrucción. El CPI promedio ponderado se calcula como:

CPI promedio ponderado = (Porcentaje de instrucciones de tipo A * CPI de tipo A) +


(Porcentaje de instrucciones de tipo B * CPI de tipo B) + (Porcentaje de instrucciones de tipo
C * CPI de tipo C) + (Porcentaje de instrucciones de tipo D * CPI de tipo D)

donde:
* Porcentaje de instrucciones de tipo A = (Número de instrucciones de tipo A / Número total
de instrucciones) * 100%
* Porcentaje de instrucciones de tipo B = (Número de instrucciones de tipo B / Número total
de instrucciones) * 100%
* Porcentaje de instrucciones de tipo C = (Número de instrucciones de tipo C / Número total
de instrucciones) * 100%
* Porcentaje de instrucciones de tipo D = (Número de instrucciones de tipo D / Número total
de instrucciones) * 100%

## Cálculo del porcentaje de instrucciones de cada tipo


* Porcentaje de instrucciones de tipo A = (650 / 1400) * 100% = 46.43%

6
* Porcentaje de instrucciones de tipo B = (100 / 1400) * 100% = 7.14%
* Porcentaje de instrucciones de tipo C = (600 / 1400) * 100% = 42.86%
* Porcentaje de instrucciones de tipo D = (50 / 1400) * 100% = 3.57%

## Cálculo del CPI promedio ponderado


* CPI promedio ponderado = (0.4643 * 1) + (0.0714 * 2) + (0.4286 * 5) + (0.0357 * 2) = 2.91

Por lo tanto, el CPI del programa es 2.91.

#1.4.6 aceleración y CPI con menor cantidad de instrucciones de load.


Si la cantidad de instrucciones de carga pueden ser reducidas a la mitad, la nueva cantidad de
estas instrucciones será 100/2 = 50. Lógicamente, esto también reducirá la cantidad total de
instrucciones a 1400-50= 1350

El nuevo CPI puede ser calculado así:

Nuevo CPI = (0.4643 * 1) + (0.0357 * 2) + (0.4286 * 5) + (0.0714 * 2) = 2.71

El tiempo de ejecución original era de 2,125 segundos. El nuevo tiempo con la mitad de las
instrucciones de load será:

Nuevo tiempo de ejecución = 1350 * 2.71 / 2 GHz = 1.83 segundos

Por lo tanto, la aceleración lograda por la reducción de las instrucciones load es.

Aceleración = Tiempo Original Ejecución / Nuevo Tiempo de Ejecución = 2,125 segundos /


1,83 segundos = 1,16

En conclusión, al reducir a la mitad la cantidad de instrucciones de load, resulta en una


aceleración de 1,16 y en un nuevo CPI de 2,71.

Ejercicio 1.5
Consideremos dos implementaciones diferentes, P1 y P2, del mismo conjunto de
instrucciones.
Hay cinco clases de instrucciones (A, B, C, D y E) en el conjunto de instrucciones. La tasa de
reloj y el IPC de cada clase se dan a continuación.

## 1.5.1 Rendimiento máximo de P1 y P2

El rendimiento máximo de un procesador se define como la tasa más rápida que puede
ejecutar cualquier secuencia de instrucciones. Para calcular el rendimiento máximo, debemos
considerar la velocidad del reloj y el IPC del procesador.

** P1: **
* Tasa de reloj = 2 GHz
* CPI = 1 (para instrucciones de Clase A)

7
Por lo tanto, el rendimiento máximo de P1 es:

Rendimiento máximo de P1 = velocidad de reloj / CPI = 2 GHz / 1 = 2 mil millones de


instrucciones por segundo

** P2: **
* Tasa de reloj = 4 GHz
* CPI = 3 (para instrucciones de Clase A)

Por lo tanto, el rendimiento máximo de P2 es:

Rendimiento máximo de P2 = velocidad de reloj / CPI = 4 GHz / 3 = 1.33 mil millones de


instrucciones por segundo

Conclusión:
P1 tiene un rendimiento máximo más alto que P2, a pesar de que P2 tiene una velocidad de
reloj más alta. Esto se debe a que P1 tiene un IPC más bajo para las instrucciones de Clase A,
que son las instrucciones ejecutadas más frecuentemente en el programa.

## 1.5.2 Comparación de P1 y P2 con una distribución de instrucción igual (excepto la clase


A)
En este escenario, el número de instrucciones ejecutadas en un determinado programa se
divide por igual entre las clases de instrucciones, a excepción de la Clase A, que ocurre dos
veces más a menudo que cada uno de los demás.

** P1: **
* CPI = (0.5 * 1) + (0.5 * 2) + (0.5 * 3) + (0.5 * 4) + (0.5 * 3) = 2.5

** P2: **
* CPI = (0.5 * 3) + (0.5 * 3) + (0.5 * 3) + (0.5 * 4) + (0.5 * 3) = 3.25

** Tiempo de ejecución: **
* Tiempo de ejecución para p1 = (número de instrucciones * CPI) / Reloj Tasa = (5 * 2.5) / 2
GHz = 6.25 NS
* Tiempo de ejecución para p2 = (número de instrucciones * CPI) / Reloj Tasa = (5 * 3.25) / 4
GHz = 4.0625 NS

**Aceleración:**
* Aceleración de P2 sobre P1 = Tiempo de ejecución para P1 / Tiempo de ejecución para P2 =
6.25 ns / 4.0625 ns = 1.54

**Conclusión:**
En este escenario, P2 es 1.54 veces más rápido que P1. Esto se debe a que P2 tiene un IPC más
bajo para la mayoría de las instrucciones, a pesar de que tiene un IPC más alto para las
instrucciones de Clase A.

## 1.5.3 Comparación de P1 y P2 con una distribución de instrucción igual (excepto la clase E)


En este escenario, el número de instrucciones ejecutadas en un determinado programa se
divide por igual entre las clases de instrucciones, excepto la Clase E, que ocurre dos veces más
a menudo que cada uno de los demás.

8
** P1: **
* CPI = (0.5 * 1) + (0.5 * 2) + (0.5 * 3) + (0.5 * 4) + (1 * 3) = 3

** P2: **
* CPI = (0.5 * 3) + (0.5 * 3) + (0.5 * 3) + (0.5 * 4) + (1 * 3) = 3.75

** Tiempo de ejecución: **
* Tiempo de ejecución para p1 = (número de instrucciones * CPI) / Reloj Tasa = (5 * 3) / 2 GHz
= 7.5 ns
* Tiempo de ejecución para p2 = (número de instrucciones * CPI) / 4 GHz = (5 * 3.75) / 4 GHz =
4.6875 ns

**Aceleración:**
* Aceleración de P2 sobre P1 = Tiempo de ejecución para P1 / Tiempo de ejecución para P2 =
7.5 ns / 4.6875 ns = 1.6

**Conclusión:**
En este escenario, P2 es 1.6 veces más rápido que P1. Esto se debe a que P2 tiene un IPC más
bajo para la mayoría de las instrucciones, a pesar de que tiene un IPC más alto para las
instrucciones de clase E.

## Resumen
En los tres escenarios, P2 es más rápido que P1. Esto se debe a que P2 tiene un IPC más bajo
para la mayoría de las instrucciones, a pesar de que tiene una tasa de reloj más alta. La
aceleración de P2 sobre P1 varía según la distribución de instrucciones en el programa.

**1.5.4**

Para resolver este problema, necesitamos calcular el IPC medio de cada programa. El IPC se
calcula dividiendo el número total de instrucciones ejecutadas por el número total de ciclos de
reloj.

El número total de instrucciones ejecutadas se puede calcular sumando el número de


instrucciones de cada clase. Por ejemplo, el número total de instrucciones ejecutadas para el
Programa 1 es 600 + 600 + 200 + 50 = 1450.

El número total de ciclos de reloj se puede calcular multiplicando el número de instrucciones


de cada clase por el IPC de esa clase. Por ejemplo, el número total de ciclos de reloj para el
Programa 1 es 600 * 1 + 600 * 2 + 200 * 3 + 50 * 4 = 2550.

El IPC medio se puede calcular dividiendo el número total de instrucciones ejecutadas por el
número total de ciclos de reloj. Por ejemplo, el IPC medio para el Programa 1 es 1450 / 2550 =
0,57.

Una vez que hayamos calculado el IPC medio de cada programa, podemos calcular el tiempo
de ejecución de cada programa. El tiempo de ejecución se calcula dividiendo el número total
de ciclos de reloj por la frecuencia de reloj.

Por ejemplo, el tiempo de ejecución para el Programa 1 es 2550 / 4000000000 = 0,0006375


segundos.

9
**1.5.5**
Para resolver este problema, necesitamos calcular el número de instrucciones de cada clase
que se ejecutan en el Programa 1 y el Programa 2.

El número de instrucciones de cada clase se puede calcular multiplicando el número total de


instrucciones ejecutadas por el porcentaje de instrucciones de esa clase. Por ejemplo, el
número de instrucciones de clase A ejecutadas en el Programa 1 es 600 * 0,1 = 60.

Una vez que hayamos calculado el número de instrucciones de cada clase que se ejecutan en el
Programa 1 y el Programa 2, podemos calcular el número total de instrucciones ejecutadas en
cada programa. El número total de instrucciones ejecutadas se puede calcular sumando el
número de instrucciones de cada clase. Por ejemplo, el número total de instrucciones
ejecutadas en el Programa 1 es 60 + 600 + 200 + 50 = 910.

El número total de instrucciones ejecutadas en el Programa 2 se puede calcular de la misma


manera. El número total de instrucciones ejecutadas en el Programa 2 es 900 + 500 + 100 +
200 = 1700.

Una vez que hayamos calculado el número total de instrucciones ejecutadas en cada
programa, podemos calcular el IPC medio de cada programa. El IPC medio se calcula dividiendo
el número total de instrucciones ejecutadas por el número total de ciclos de reloj.

El número total de ciclos de reloj se puede calcular multiplicando el número total de


instrucciones ejecutadas por el IPC medio. Por ejemplo, el número total de ciclos de reloj para
el Programa 1 es 910 * 0,57 = 519,7.

El número total de ciclos de reloj para el Programa 2 se puede calcular de la misma manera. El
número total de ciclos de reloj para el Programa 2 es 1700 * 0,57 = 969.

El IPC medio se puede calcular dividiendo el número total de instrucciones ejecutadas por el
número total de ciclos de reloj. Por ejemplo, el IPC medio para el Programa 1 es 910 / 519,7 =
1,75.

El IPC medio para el Programa 2 se puede calcular de la misma manera. El IPC medio para el
Programa 2 es 1700 / 969 = 1,75.

Una vez que hayamos calculado el IPC medio de cada programa, podemos calcular el tiempo
de ejecución de cada programa. El tiempo de ejecución se calcula dividiendo el número total
de ciclos de reloj por la frecuencia de reloj.

Por ejemplo, el tiempo de ejecución para el Programa 1 es 519,7 / 4000000000 =


0,00000129925 segundos.

El tiempo de ejecución para el Programa 2 se puede calcular de la misma manera. El tiempo de


ejecución para el Programa 2 es 969 / 4000000000 = 0,0000024225 segundos.

**1.5.6**
Para resolver este problema, necesitamos calcular el número de instrucciones de cada clase
que se ejecutan en el Programa 1 y el Programa 2.

10
El número de instrucciones de cada clase se puede calcular multiplicando el número total de
instrucciones ejecutadas por el porcentaje de instrucciones de esa clase. Por ejemplo, el
número de instrucciones de clase A ejecutadas en el Programa 1 es 600 * 0,1 = 60.

Una vez que hayamos calculado el número de instrucciones de cada clase que se ejecutan en el
Programa 1 y el Programa 2, podemos calcular el número total de instrucciones ejecutadas en
cada programa. El número total de instrucciones ejecutadas se puede calcular sumando el
número de instrucciones de cada clase. Por ejemplo, el número total de instrucciones
ejecutadas en el Programa 1 es 60 + 600 + 200 + 50 = 910.

El número total de instrucciones ejecutadas en el Programa 2 se puede calcular de la misma


manera. El número total de instrucciones ejecutadas en el Programa 2 es 900 + 500 + 100 +
200 = 1700.

Una vez que hayamos calculado el número total de instrucciones ejecutadas en cada
programa, podemos calcular el IPC medio de cada programa. El IPC medio se calcula dividiendo
el número total de instrucciones ejecutadas por el número total de ciclos de reloj.

El número total de ciclos de reloj se puede calcular multiplicando el número total de


instrucciones ejecutadas por el IPC medio. Por ejemplo, el número total de ciclos de reloj para
el Programa 1 es 910 * 0,57 = 519,7.

El número total de ciclos de reloj para el Programa 2 se puede calcular de la misma manera. El
número total de ciclos de reloj para el Programa 2 es 1700 * 0,57 = 969.

El IPC medio se puede calcular dividiendo el número total de instrucciones ejecutadas por el
número total de ciclos de reloj. Por ejemplo, el IPC medio para el Programa 1 es 910 / 519,7 =
1,75.

El IPC medio para el Programa 2 se puede calcular de la misma manera. El IPC medio para el
Programa 2 es 1700 / 969 = 1,75.

Una vez que hayamos calculado el IPC medio de cada programa, podemos calcular el tiempo
de ejecución de cada programa. El tiempo de ejecución se calcula dividiendo el número total
de ciclos de reloj por la frecuencia de reloj.

Por ejemplo, el tiempo de ejecución para el Programa 1 es 519,7 / 4.000.000.000 =


0,00000129925 segundos.

El tiempo de ejecución para el Programa 2 se puede calcular de la misma manera. El tiempo de


ejecución para el Programa 2 es 969 / 4.000.000.000 = 0,0000024225 segundos.

Ejercicio 1.6
Los compiladores pueden tener un profundo impacto en el rendimiento de una aplicación en
un procesador dado. Este problema explorará el impacto que los compiladores tienen en el
tiempo de ejecución.

## 1.6.1: Calcular el IPC promedio para cada programa


Para calcular el IPC promedio para cada programa, debemos considerar lo siguiente:

1. Tiempo de ejecución:

11
La tabla proporciona el tiempo de ejecución para cada programa compilado con el compilador
A y el compilador B.

2. Tiempo del ciclo de reloj:


El tiempo del ciclo de reloj se da como 1 ns.

3. Número de instrucciones:
El número de instrucciones para cada programa no se proporciona en la tabla.

Sin embargo, podemos calcular el IPC promedio usando la siguiente fórmula:

Promedio de CPI = tiempo de ejecución / (número de instrucciones * Tiempo del ciclo de


reloj)

Cálculo de IPC promedio para el compilador A:


Supongamos que el número de instrucciones para el programa compilado con el compilador A
es N_A.

Promedio CPI_A = 1.8 s / (N_A * 1 ns)

Cálculo de IPC promedio para el compilador B:


Supongamos que el número de instrucciones para el programa compilado con el compilador B
es N_B.

Promedio CPI_B = 1.5 s / (N_B * 1 ns)

Nota: No podemos calcular el CPI promedio exacto sin conocer el número de instrucciones
para cada programa. Sin embargo, podemos comparar el rendimiento relativo de los dos
compiladores comparando sus CPI promedio.

## Conclusión
Según la información proporcionada, podemos concluir que el compilador A tiene un IPC
promedio más alto que el compilador B. Esto sugiere que el compilador A genera un código
menos eficiente que el compilador B. Sin embargo, sin conocer el número de instrucciones
para cada programa, no podemos determinar de manera definitiva qué compilador es más
rápido.

1.6.4
El rendimiento máximo de P1 es de 4 GHz / (1 + 2 + 3 + 4 + 5) = 0,5714 GHz. El rendimiento
máximo de P2 es de 6 GHz / (1 + 2 + 3 + 4 + 5) = 0,8571 GHz. Por lo tanto, P2 tiene un
rendimiento máximo un 50% mayor que P1.

1.6.5
Si el número de instrucciones ejecutadas en un programa determinado se divide por igual
entre las cinco clases de instrucciones, entonces el IPC medio de P1 es (1 + 2 + 3 + 4 + 5) / 5 = 3
y el IPC medio de P2 es (1 + 2 + 3 + 4 + 5) / 5 = 3. Por lo tanto, P1 y P2 tienen el mismo IPC
medio.

12
1.6.6
Para que P1 tenga el mismo rendimiento que P2, su velocidad de reloj debe ser de 6 GHz * 3 /
2 = 9 GHz.

Ejercicio 1.7
La siguiente tabla muestra el incremento en la clock rate y la potencia en 8 generaciones de
procesadores Intel en un período de 28 años.

1.7.1
La potencia del Pentium 4 Willamette es de 75.3 W, mientras que la del Pentium 4 Prescott es
de 103 W. El aumento de potencia es de 103 - 75.3 = 27.7 W.

1.7.2
El Pentium 4 Prescott tiene una frecuencia de reloj de 3.6 GHz, mientras que el Pentium 4
Willamette tiene una frecuencia de reloj de 2 GHz. El aumento de la frecuencia de reloj es de
3.6 - 2 = 1.6 GHz.

1.7.3
El aumento de la potencia es de 27.7 W, mientras que el aumento de la frecuencia de reloj es
de 1.6 GHz. La relación entre el aumento de la potencia y el aumento de la frecuencia de reloj
es de 27.7 / 1.6 = 17.3 W/GHz.

1.7.4
Para resolver este ítem, debemos calcular la carga capacitiva promedio de cada generación,
asumiendo un consumo de energía estático despreciable. La carga capacitiva promedio se
calcula dividiendo la potencia dinámica por el producto del voltaje y la frecuencia de reloj.

Para la primera generación:

50 𝑊
𝐶 = = 5 𝑛𝐹
(5 𝑉𝑜𝑙𝑡)(1/2𝐺𝐻𝑧)

Para la segunda generación:

90 𝑊
𝐶 = = 9 𝑛𝐹
1
(5 𝑉)(2 𝐺𝐻𝑧)

Para la tercera generación:

10 𝑊
𝐶 = = 1 𝑛𝐹
1
(5 𝑉)(2 𝐺𝐻𝑧)

Para la cuarta generación:

60 𝑊
𝐶 =
1
(5 𝑉)( 𝐺𝐻𝑧)
2

13
1.7.5
Para resolver este ítem, debemos encontrar el mayor cambio relativo en el voltaje entre
generaciones. El cambio relativo en el voltaje se calcula dividiendo la diferencia entre los
voltajes de dos generaciones consecutivas por el voltaje de la generación anterior.

Entre la primera y la segunda generación:

5𝑉−5𝑉
=0
5𝑉

Entre la segunda y la tercera generación:

5𝑉−5𝑉
=0
5𝑉

Entre la tercera y la cuarta generación:

5 𝑉 − 3,3 𝑉
= 0,51
3,3 𝑉

El mayor cambio relativo en el voltaje es 0.51, que se encuentra entre la tercera y la cuarta
generación.

1.7.6
Para resolver este ítem, debemos encontrar la media geométrica de las relaciones de voltaje
en las generaciones desde el Pentium. La media geométrica se calcula multiplicando las
relaciones de voltaje y luego tomando la raíz cuadrada del producto.

La relación de voltaje entre el Pentium y el Pentium Pro es:

3,3 𝑉
= 0,66
5𝑉

La relación de voltaje entre el Pentium Pro y el Pentium 4 Willamette es:

1,75 𝑉
= 0,53
3,3 𝑉

La relación de voltaje entre el Pentium 4 Willamette y el Pentium 4 Prescott es:

1,25 𝑉
= 0,71
1,75 𝑉

La relación de voltaje entre el Pentium 4 Prescott y el Core 2 Ketsfield es:

1,1 𝑉
= 0,88
1,25 𝑉

La media geométrica de las relaciones de voltaje es:

0,66 × 0,53 × 0,71 × 0,88 = 0,7

14
1.8
Supongamos haber desarrollado nuevas versiones de un procesador con las siguientes
características. Ver tabla.

1.8.1
Para resolver este apartado, debemos fijarnos en la tabla de la parte b, ya que la parte a no
nos pide calcular nada. En la parte b, tenemos dos versiones de un procesador, con dos
voltajes y dos velocidades de reloj. Lo que nos piden es calcular los valores de potencia para
cada versión.
La potencia se calcula multiplicando el voltaje por la velocidad de reloj. Por lo tanto, para la
versión 1, tenemos:

Potencia = 1,1 V * 3 GHz = 3,3 W

Y para la versión 2, tenemos:

Potencia = 0,8 V * 4 GHz = 3,2 W

Como podemos ver, la versión 2 tiene una potencia ligeramente menor que la versión 1. Esto
se debe a que la versión 2 tiene un voltaje más bajo.

1.8.2
Para resolver este apartado, debemos fijarnos en la tabla de la parte a, ya que la parte b no
nos pide calcular nada. En la parte a, tenemos dos versiones de un procesador, con dos
voltajes y dos velocidades de reloj. Lo que nos piden es calcular los valores de energía para
cada versión.

La energía se calcula multiplicando la potencia por el tiempo. Por lo tanto, para la versión 1,
tenemos:

Energía = 3,3 W * 1 hora = 3,3 Wh

Y para la versión 2, tenemos:

Energía = 3,2 W * 1 hora = 3,2 Wh

Como podemos ver, la versión 2 tiene una energía ligeramente menor que la versión 1. Esto se
debe a que la versión 2 tiene una potencia ligeramente menor.

1.8.3
Para resolver este apartado, debemos fijarnos en la tabla de la parte a, ya que la parte b no
nos pide calcular nada. En la parte a, tenemos dos versiones de un procesador, con dos
voltajes y dos velocidades de reloj. Lo que nos piden es calcular los valores de eficiencia
energética para cada versión.

La eficiencia energética se calcula dividiendo la energía por la potencia. Por lo tanto, para la
versión 1, tenemos:

15
Eficiencia energética = 3,3 Wh / 3,3 W = 1

Y para la versión 2, tenemos:

Eficiencia energética = 3,2 Wh / 3,2 W = 1

Como podemos ver, la versión 1 y la versión 2 tienen la misma eficiencia energética. Esto se
debe a que tienen, tanto la misma potencia como la misma energía.

1.8.4
Cálculo del tiempo de ejecución:
El tiempo de ejecución se calcula dividiendo el número de instrucciones por el IPC
(instrucciones por ciclo) y luego multiplicando por el ciclo de reloj.

Tiempo de ejecución = (10^9 instrucciones) / (3 instrucciones/ciclo) * (1 ciclo / 1.15 GHz) =


277.78 ms

Cálculo de la energía:
La energía se calcula multiplicando la potencia por el tiempo de ejecución.

Energía = (1.25 W) * (277.78 ms) = 347.23 mJ

Cálculo de la eficiencia energética:


La eficiencia energética se calcula dividiendo la energía por el tiempo de ejecución.

Eficiencia energética = (347.23 mJ) / (277.78 ms) = 1.25 mJ/ms

1.8.5
Cálculo del tiempo de ejecución:
El tiempo de ejecución se calcula dividiendo el número de instrucciones por el IPC
(instrucciones por ciclo) y luego multiplicando por el ciclo de reloj.

Tiempo de ejecución = (10^9 instrucciones) / (3 instrucciones/ciclo) * (1 ciclo / 1.2 GHz) =


277.78 ms

Cálculo de la energía:
La energía se calcula multiplicando la potencia por el tiempo de ejecución.

Energía = (1.25 W) * (277.78 ms) = 347.23 mJ

16
Cálculo de la eficiencia energética:
La eficiencia energética se calcula dividiendo la energía por el tiempo de ejecución.

Eficiencia energética = (347.23 mJ) / (277.78 ms) = 1.25 mJ/ms

1.8.6
Cálculo del tiempo de ejecución:
El tiempo de ejecución se calcula dividiendo el número de instrucciones por el IPC
(instrucciones por ciclo) y luego multiplicando por el ciclo de reloj.

Tiempo de ejecución = (10^9 instrucciones) / (3 instrucciones/ciclo) * (1 ciclo / 1.2 GHz) =


277.78 ms

Cálculo de la energía:
La energía se calcula multiplicando la potencia por el tiempo de ejecución.

Energía = (1.25 W) * (277.78 ms) = 347.23 mJ

Cálculo de la eficiencia energética:


La eficiencia energética se calcula dividiendo la energía por el tiempo de ejecución.

Eficiencia energética = (347.23 mJ) / (277.78 ms) = 1.25 mJ/ms

Conclusiones
Como se puede observar, las tres versiones del procesador tienen el mismo tiempo de
ejecución, la misma cantidad de energía y la misma eficiencia energética. Esto se debe a que
tienen la misma potencia, el mismo valor de IPC y el mismo ciclo de reloj.
Sin embargo, hay algunas diferencias entre las versiones. La versión 1 tiene el voltaje más bajo,
lo que significa que consume menos energía. La versión 2 tiene la velocidad de reloj más alta,
lo que significa que puede ejecutar más instrucciones por segundo. La versión 3 tiene el área
más pequeña, lo que significa que es más eficiente en términos de espacio.
La mejor versión para una aplicación particular dependerá de los requisitos específicos de esa
aplicación. Por ejemplo,
a). Si la aplicación necesita ejecutar tantas instrucciones como sea posible en un período de
tiempo determinado, entonces la versión 2 sería la mejor opción.
b). Si la aplicación necesita consumir la menor cantidad de energía posible, entonces la versión
1 sería la mejor opción.
c). Si la aplicación necesita ser lo más pequeña posible, entonces la versión 3 sería la mejor
opción.

1.9
1.9.1
Tenemos que calcular el porcentaje de la potencia total disipada que comprende la potencia
estática. Para ello, usaremos la siguiente fórmula:

% Potencia estática = (Potencia estática / Potencia total) * 100

17
Sustituyendo los valores de la tabla, tenemos:

% Potencia estática = (10 W / 50 W) * 100 = 20%

Por lo tanto, la potencia estática comprende el 20% de la potencia total disipada.

1.9.2
Tenemos que calcular cuánto hay que reducir el voltaje para mantener la misma corriente de
fuga si la potencia total disipada se reduce en un 10% mientras se mantiene la misma relación
de potencia estática a potencia total del problema 1.9.1. Para ello, usaremos la siguiente
fórmula:

𝑃
𝑉 =𝑉( )
𝑃

donde:

* V1 es el voltaje inicial
* V2 es el voltaje final
* P1 es la potencia total inicial
* P2 es la potencia total final

Sustituyendo los valores de la tabla, tenemos:

V2 = 1.2 V * (0.9 * 50 W / 50 W)^(1/2) = 1.08 V

Por lo tanto, hay que reducir el voltaje a 1,08 V para mantener la misma corriente de fuga si la
potencia total disipada se reduce en un 10% mientras se mantiene la misma relación de
potencia estática a potencia total del problema 1.9.1.

1.9.3
Tenemos que calcular la relación de potencia estática a potencia dinámica para cada
tecnología. Para ello, usaremos la siguiente fórmula:

Relación de potencia estática a potencia dinámica = Potencia estática / Potencia dinámica

Sustituyendo los valores de la tabla, tenemos:

* Para la tecnología de 180 nm:

Relación de potencia estática a potencia dinámica = 10 W / 50 W = 0.2

* Para la tecnología de 70 nm:

Relación de potencia estática a potencia dinámica = 60 W / 90 W = 0.67

18
Por lo tanto, la relación de potencia estática a potencia dinámica es mayor para la tecnología
de 70 nm que para la tecnología de 180 nm. Esto significa que la potencia estática es más
significativa para la tecnología de 70 nm que para la tecnología de 180 nm.

1.9.4
Tenemos que calcular la potencia estática a 0,8 V asumiendo una relación de potencia estática
a dinámica de 0,6. Sabemos que la potencia estática es 35 W a 0,8 V, por lo que la potencia
dinámica es 35 W / 0,6 = 58,33 W. Por lo tanto, la potencia total es 35 W + 58,33 W = 93,33 W.

1.9.5
Para determinar la disipación de potencia estática y dinámica, necesitamos usar las tasas
obtenidas en el problema 1.9.1. En ese problema, encontramos que la potencia estática es de
35 W y la potencia dinámica es de 58,33 W. Por lo tanto, la disipación de potencia total es de
35 W + 58,33 W = 93,33 W.

1.9.6
Para determinar la media geométrica de las variaciones de potencia entre versiones,
necesitamos usar la siguiente fórmula:

G = (P1 * P2 * ... * Pn)^(1/n)

donde P1, P2, ..., Pn son las potencias de cada versión. En este caso, tenemos tres versiones,
por lo que la fórmula se convierte en:

G = (P1 * P2 * P3)^(1/3)

Sustituyendo los valores de las potencias, obtenemos:

G = (35 W * 60 W * 93.33 W)^(1/3) = 60.95 W

Por lo tanto, la media geométrica de las variaciones de potencia entre versiones es de 60,95
W.

Ejercicio 1.10: Análisis de la aceleración de aplicaciones en procesadores paralelos

1.10.1: Número total de instrucciones ejecutadas


Para calcular el número total de instrucciones ejecutadas por procesador, sumamos las
instrucciones de cada tipo:

Instrucciones totales = Instrucciones aritméticas + Instrucciones de carga/almacenamiento +


Instrucciones de control
Instrucciones totales = 2560 + 1280 + 256 = 4196

El número total de instrucciones ejecutadas en todos los procesadores se obtiene


multiplicando el número de instrucciones por procesador por el número de procesadores:

19
Instrucciones totales en todos los procesadores = Instrucciones totales * Número de
procesadores
Instrucciones totales en todos los procesadores = 4196 * 8 = 33568

1.10.2: Tiempo total de ejecución

El tiempo total de ejecución en un procesador se calcula dividiendo el número de instrucciones


por el IPC (instrucciones por ciclo) y luego multiplicando por el ciclo de reloj:

Tiempo total de ejecución (1 procesador) = Instrucciones totales / (IPC * Ciclo de reloj)


Tiempo total de ejecución (1 procesador) = 4196 / (2 GHz * 1) = 2.098 ms

Para calcular el tiempo total de ejecución en 2, 4 y 8 procesadores, dividimos el número de


instrucciones entre el IPC y el ciclo de reloj, y luego multiplicamos por el número de
procesadores:

Tiempo total de ejecución (2 procesadores) = Instrucciones totales / (IPC * Ciclo de reloj) * 2


Tiempo total de ejecución (2 procesadores) = 4196 / (2 GHz * 1) * 2 = 1.049 ms

Tiempo total de ejecución (4 procesadores) = Instrucciones totales / (IPC * Ciclo de reloj) * 4


Tiempo total de ejecución (4 procesadores) = 4196 / (2 GHz * 1) * 4 = 0.524 ms

Tiempo total de ejecución (8 procesadores) = Instrucciones totales / (IPC * Ciclo de reloj) * 8


Tiempo total de ejecución (8 procesadores) = 4196 / (2 GHz * 1) * 8 = 0.262 ms

1.10.3: Impacto de duplicar el CPI de las instrucciones aritméticas

Si el CPI de las instrucciones aritméticas se duplica, el tiempo total de ejecución en un


procesador se calcula dividiendo el número de instrucciones por el IPC (instrucciones por ciclo)
y luego multiplicando por el ciclo de reloj:

Tiempo total de ejecución (1 procesador, CPI duplicado) = Instrucciones totales * 2 / (IPC *


Ciclo de reloj)
Tiempo total de ejecución (1 procesador, CPI duplicado) = 4196 * 2 / (2 GHz * 1) = 4.196 ms

Para calcular el tiempo total de ejecución en 2, 4 y 8 procesadores, dividimos el número de


instrucciones entre el IPC y el ciclo de reloj, y luego multiplicamos por el número de
procesadores:

Tiempo total de ejecución (2 procesadores, CPI duplicado) = Instrucciones totales * 2 / (IPC *


Ciclo de reloj) * 2
Tiempo total de ejecución (2 procesadores, CPI duplicado) = 4196 * 2 / (2 GHz * 1) * 2 = 2.098
ms

Tiempo total de ejecución (4 procesadores, CPI duplicado) = Instrucciones totales * 2 / (IPC *


Ciclo de reloj) * 4

20
Tiempo total de ejecución (4 procesadores, CPI duplicado) = 4196 * 2 / (2 GHz * 1) * 4 = 1.049
ms

Tiempo total de ejecución (8 procesadores, CPI duplicado) = Instrucciones totales * 2 / (IPC *


Ciclo de reloj) * 8
Tiempo total de ejecución (8 procesadores, CPI duplicado) = 4196 * 2 / (2 GHz * 1) * 8 = 0.524
ms

Como se puede observar, duplicar el CPI de las instrucciones aritméticas duplica el tiempo
total de ejecución en un procesador, pero no afecta el tiempo total de ejecución en 2, 4 y 8
procesadores. Esto se debe a que las instrucciones aritméticas se ejecutan en paralelo en los
procesadores adicionales.

Análisis de la aceleración de aplicaciones en procesadores multinúcleo

1.10.4: Tiempo de ejecución del programa


Para calcular el tiempo de ejecución del programa utilizando 1, 2, 4 u 8 núcleos, necesitamos
dividir el número de instrucciones por el IPC (instrucciones por ciclo) y luego multiplicar por el
ciclo de reloj.

1 núcleo:

Tiempo de ejecución (1 núcleo) = CPI * (1 * 1.00E+10) / (3 * 10^9) = 1.2 * 10^1 / 3 * 10^9 =


0.4 * 10^{-9} s

2 núcleos:

Tiempo de ejecución (2 núcleos) = CPI * (2 * 5.00E+09) / (3 * 10^9) = 1.4 * 5 * 10^8 / 3 * 10^9


= 0.23 * 10^{-9} s

4 núcleos:

Tiempo de ejecución (4 núcleos) = CPI * (4 * 2.50E+09) / (3 * 10^9) = 1.8 * 2.5 * 10^8 / 3 *


10^9 = 0.15 * 10^{-9} s

8 núcleos:

Tiempo de ejecución (8 núcleos) = CPI * (8 * 1.25E+09) / (3 * 10^9) = 2.6 * 1.25 * 10^8 / 3 *


10^9 = 0.104 * 10^{-9} s

1.10.5: Reducción del consumo de energía


Si queremos reducir el consumo de energía en un 50% manteniendo el tiempo de ejecución,
necesitamos reducir la frecuencia de reloj a la mitad. Esto se debe a que el consumo de
energía es proporcional al cuadrado de la frecuencia de reloj.

Por lo tanto, la frecuencia de reloj máxima que podemos utilizar es:

21
f = 3 GHz / 2 = 1.5 GHz

1.10.6: Reducción del tiempo de ejecución

Si queremos reducir el tiempo de ejecución en un 50% manteniendo el consumo de energía,


necesitamos duplicar la frecuencia de reloj. Esto se debe a que el tiempo de ejecución es
inversamente proporcional a la frecuencia de reloj.

Por lo tanto, la frecuencia de reloj mínima que podemos utilizar es:

f = 3 GHz * 2 = 6 GHz

Conclusiones
Al aumentar la cantidad de núcleos, podemos reducir el tiempo de ejecución del programa. Sin
embargo, esto también aumenta el consumo de energía. Para reducir el consumo de energía,
podemos reducir la frecuencia de reloj, pero esto también aumentará el tiempo de ejecución.
Por lo tanto, necesitamos encontrar un equilibrio entre el tiempo de ejecución y el consumo
de energía.

Notas adicionales

* El IPC (instrucciones por ciclo) es una medida del rendimiento de un procesador. Cuanto
mayor sea el IPC, más rápido será el procesador.
* El ciclo de reloj es el tiempo que tarda un procesador en completar un ciclo de instrucción.
Cuanto menor sea el ciclo de reloj, más rápido será el procesador.
* El consumo de energía es la cantidad de energía que consume un procesador. Cuanto mayor
sea el consumo de energía, más caro será el procesador de operar.

22

También podría gustarte