Medidas de rendimiento - stefano-sosac/arquitectura-de-computadoras GitHub Wiki
Un ciclo de reloj
Un oscilador de cristal crea una señal de reloj estable y periódica utilizada para sincronizar operaciones del procesador. Cada periodo generado se considera un ciclo de reloj. La velocidad a la que un reloj oscila se mide en hertz (Hz). Actualmente, los procesadores suelen oscilar en el rango de los gigahertz (GHz).
Ciclos por instrucción (CPI)
Toda instrucción ejecutada por un computador toma una determinada cantidad de ciclos de reloj. La cantidad de ciclos dependerá del tipo de la arquitectura y del tipo de operación que se realice. Una de las primeras alternativas para saber cuánto tiempo toma un programa es hallando la cantidad de ciclos por instrucción. Para programas que incluyen un conjunto amplio de instrucciones, se suele utilizar la métrica del CPI promedio. Este valor se calcula de la siguiente manera:
En la ecuación, el $CPI_i$ es el CPI correspondiente a la instrucción i-ésima mientras que $I_i$ es la cantidad de instrucciones i-ésimas. Finalmente, $I_t$ es la cantidad de instrucciones totales
Tiempo de ejecución
Idealmente, el tiempo de ejecución se puede hallar usando la siguiente ecuación:
Donde $I_t$ es el total de instrucciones de un programa, $CPI_p$ es el CPI promedio y $P$ es el periodo del ciclo del reloj (o la inversa de la velocidad del procesador).
Más adelante, se mencionarán las limitaciones de reducir el cálculo a solo esta operación.
Millions of instructions per second (MIPS)
Es otro indicador para evaluar el rendimiento del procesador. Esta basado en la cantidad de instrucciones ejecutadas en un segundo. La fórmula es la siguiente:
Donde $I_t$ es el total de instrucciones, $T$ el tiempo de ejecución, $f$ la velocidad del procesador (Hz) y $CPI_p$ el CPI promedio.
Floating Point Operations Per Second (FLOPS)
Es la métrica que permite evaluar la capacidad del procesador para ejecutar operaciones en punto flotante en un segundo.
En donde, $N_{FP}$ es la cantidad de operaciones (instrucciones) en punto flotante y $T$ es el tiempo de ejecución. Actualmente, se suele hablar de GFLOPS o de TFLOPS. Esto debido a que los procesadores actuales ejecutan muchas operaciones por segundo.
Ejercicios de aplicación
A continuación, se dará un conjunto de ejercicios relacionados a la explicación del tema.
Ejercicio 1
Se requiere hacer una comparación entre la computadora A y B. Se sabe que ambas comparten el mismo número de instrucciones y que cuentan con los siguientes datos:
Computadora | Tiempo de un ciclo de reloj (ps) | CPI promedio |
---|---|---|
A | 250 | 2.0 |
B | 500 | 1.2 |
a) ¿Qué computadora es más rápida?
b) Según lo respondido anteriormente, ¿cuántas veces más rápido es una con respecto a otra?
Ejercicio 2
Se tiene 4 procesadores que van a ejecutar el mismo set de instrucciones. Se pide elegir cuál es el mejor escenario. Justificar su respuesta en función al cálculo de las métricas de rendimiento.
- Procesador 1: 1.0 GHz, 1.2 CPI promedio.
- Procesador 2: 1.5 GHz, 1.2 CPI promedio.
- Procesador 3: 2.0 GHz, 2.0 CPI promedio.
- Procesador 4: 2.2 GHz, 2.0 CPI promedio.
Ejercicio 3
Se tiene un computador que opera a 1 GHz y que debe ejecutar un programa "A". El compilador arroja 30 millones de instrucciones con un esquema de instrucciones en lenguaje ensamblador presentado a continuación:
Instrucción | Operación | Instrucciones (%) | CPI |
---|---|---|---|
LDI | Rd ← Cte | 13 | 1 |
LDS | Rd ← [Mem] | 16 | 2 |
STS | [Mem] ← Rd | 12 | 2 |
MOV | Rd ← Rr | 10 | 1 |
STI | [Mem] ← Cte | 15 | 2 |
Aritméticas | 11 | 1 | |
Lógicas | 9 | 1 | |
Salto condicional | 7 | 4 | |
Salto incondicional | 7 | 3 |
a) Calcular el tiempo de ejecución del programa "A"
b) Calcular los MIPS del procesador ejecutando el programa "A"
c) Se decide probar otro procesador de la misma familia pero que no cuenta con la instrucción STI, por lo que cuando se requiere realizar esta operación ([Mem] ← Cte) se debe utilizar otra u otras instrucciones. ¿En qué computadora se ejecutará más rápido el programa A y por cuánto?
Ejercicio 4
Un procesador opera a 2GHz. El programa P1 tiene instrucciones en punto flotante (FP), con enteros (INT), de carga (load) y almacenamiento (store) (L/S) y de saltos condicionales (Branch). La distribución específica de la cantidad de instrucciones y sus respectivos CPI se encuentra en la siguiente tabla:
FP | Int | L/S | Branch | CPI(FP) | CPI(INT) | CPI(L/S) | CPI(Branch) | |
---|---|---|---|---|---|---|---|---|
P1 | 560x10^6 | 2000x10^6 | 1280x10^6 | 256x10^6 | 1 | 1 | 4 | 2 |
Se le pide:
a) ¿Cuánto debería mejorar/cambiar el CPI de las instrucciones de FP si queremos que el programa se ejecute en la mitad del tiempo original?
b) Si los CPI de las instrucciones INT y FP se reducen en 40% y el CPI de L/S y Branch se reduce en un 30%, ¿en cuánto mejora el tiempo de ejecución?
Ejercicio 5
Dos procesadores tienen diferentes arquitecturas pero trabajan a una frecuencia de reloj de 3 GHz. Cada sistema tiene su propio CPI para instrucciones lógicas, en aritmética flotante y de salto condicional. Estos procesadores han generado diferentes formas de ejecutar un programa según se detalla en la tabla adjunta.
# inst. | Inst. Lógicas | Inst. Punto Flotante | Inst. Salto | CPI Lógicas | CPI Punto flotante | CPI Salto | |
---|---|---|---|---|---|---|---|
a. | 10^6 | 50% | 40% | 10% | 0.75 | 1 | 1.5 |
b. | 2x10^6 | 40% | 40% | 20% | 1.25 | 0.70 | 1.25 |
Se le pide:
a) Calcular los MFLOPS de ambos programas. Determinar cuál muestra mejor rendimiento para operaciones en punto flotante,
b) Calcular los MIPS de cada programa. Determinar cuál muestra mejor rendimiento general.
c) Tomando en cuenta a) y b), ¿se puede concluir qué procesador es mejor?