RENDIMIENTO DEL CPU Y SUS FACTORES
UC -2
Rendimiento
-
¿Cómo se puede definir el rendimiento de un sistema computacional?
-
Tiempo de respuesta (tiempo de ejecución): Tiempo entre que llega y sale una tarea.
-
Throughput: Cantidad de trabajo hecho en un tiempo dado.
-
-
Una disminución del tiempo de respuesta implica un aumento de throughput.
Pero, un aumento de throughput no siempre implica una disminución del tiempo de respuesta
Definiciones
Tiempo de respuesta (Tiempo de ejecución): Tiempo total requerido para ejecutar una tarea. Incluye los tiempos de disco, memoria, I/O, SO, CPU, etc. (Computadores personales e incrustados)
Ancho de banda (productividad): Número de tareas ejecutadas por unidad de tiempo (Servidores)
¿Qué mejoramos si:
-
¿Reemplazamos en una máquina un procesador por otro que ejecuta las mismas instrucciones en menor tiempo?
-
¿Aumentamos la cantidad de procesadores del computador?
Ejemplo
-
Reemplazar CPUs viejas por nuevas disminuye el tiempo de respuesta y aumenta el throughput (cantidad de trabajo hecho).
-
Aumentar el número de computadoras aumenta el throughput pero no disminuye el tiempo de respuesta.
-
A menos que hubiera colas. En este caso, el aumento en el número de computadoras aumenta el throughput y si disminuye el tiempo de respuesta.
Tiempo de respuesta vs productividad
Un tren de lavado de coches comienza un coche cada 30 segundos y en el tren existen simultáneamente 6 coches en distintas fases de lavado.
-
Tiempo de respuesta (usuario): 180 segundos
-
Productividad (sistema): 1 coche cada 30 segundos
Ejemplo:
La computadora A corre un programa en 10 segundos y la computadora B en 15 segundos
Conclusión: A es 1.5 veces más rápida que B.
Tiempo
-
Tiempo de respuesta. Tiempo total para realizar una tarea. Incluye:
-
Tiempo de espera en cola.
-
Accesos a disco.
-
Accesos a memoria.
-
Actividades de entrada y salida (I/O).
-
Overhead del sistema operativo.
Tiempo que el sistema operativo dedica a sus tareas propias y no al proceso que está ejecutando. Tiempo de carga, scheduling, recolección de basura, etc.
-
Tiempo de CPU: Tiempo que la CPU dedica a la tarea. No incluye tiempo dedicado a correr otras tareas.
Se puede dividir en:
-
Tiempo de CPU de usuario: Tiempo que la CPU dedica al código de la tarea.
-
Tiempo de CPU de sistema: Tiempo que la CPU dedica al sistema operativo cuando éste realiza actividades relacionadas con la tarea. Por ejemplo, tiempo para cargar la tarea en memoria.
En conclusión, se distinguen dos tiempos:
-
Rendimiento del sistema: Tiempo de respuesta en un sistema sin carga (sin otros usuarios).
-
Rendimiento de la CPU: Tiempo de CPU de usuario.
Las métricas que veremos se enfocan al rendimiento de la CPU pero pueden aplicarse también al rendimiento del sistema.
En general, se puede usar cualquier métrica, siempre y cuando se mida y compare consistentemente.
Reloj
El reloj del sistema determina cuando los eventos ocurren en el hardware.
-
Periodo de reloj: Tiempo en que ocurre un ciclo (pulso) de reloj Se mide en fracciones de segundo. Por ejemplo 0.25 nanosegundos.
-
Velocidad de reloj: Es el inverso del periodo. Se mide en ciclos por segundo. Por ejemplo, 4GHz (gigahertz)
Rendimiento de la CPU
El tiempo de ejecución de CPU de un programa:
Tiempo CPU = Ciclos de reloj para el programa x Periodo del reloj
Alternativamente
Tiempo CPU = Ciclos de reloj para el programa / Velocidad del reloj
El tiempo de CPU de un programa puede mejorar (disminuir) si:
-
El programa corre más rápido (usa menos ciclos de reloj).
-
El periodo de reloj de la CPU disminuye y por lo tanto, aumenta la velocidad del reloj.
Ejemplo:
Un programa tarda 10 segundos en correr en una computadora A que tiene una velocidad de reloj de 4 GHZ. Se desea construir una computadora B que corra el mismo programa en 6 segundos. Por problemas de diseño, B va a necesitar 1.2 veces más ciclos de reloj que A para hacer la misma tarea.
¿Cuál debe ser la velocidad de reloj de B para cumplir la meta?
Ejemplo:
Ciclos de reloj
En la ecuación
Tiempo CPU = Ciclos de reloj / Velocidad del reloj
Es tedioso contar el número de ciclos de reloj que usa un programa.
Otra opción:
Ciclos de reloj = Número de instrucciones x CPI
CPI = Promedio de ciclos de reloj por instrucción.
CPI
El CPI es útil para comparar dos implementaciones de un conjunto de instrucciones. Para esto, se comparan los tiempos de ejecución de un mismo programa en las dos implementaciones.
Ejemplo:
La computadora A tiene un periodo de reloj de 250 ps (pico segundo) y un CPI = 2 para cierto programa.
La computadora B tiene un periodo de reloj de 500 ps y un CPI = 1.2 para el mismo programa.
¿Qué computadora es más rápida y en cuánto?
Se usan las ecuaciones:
Rendimiento de la CPU
La ecuación de rendimiento de la CPU puede reescribirse como:
Tiempo CPU = Número de instrucciones x CPI x Periodo del reloj
Alternativamente
Tiempo CPU = (Número de instrucciones x CPI) / Velocidad del reloj
No es necesario contar el número de ciclos de reloj del programa.
Factores del rendimiento
-
Los factores son los elementos de la ecuación de rendimiento de la CPU.
-
Número de instrucciones del programa.
-
CPI (Número de ciclos por instrucción).
-
Periodo de reloj / velocidad del reloj.
-
-
En vez del número de instrucciones y el CPI se puede usar el número de ciclos del programa.
¿Cómo se obtiene cada elemento de la ecuación de rendimiento?
-
El tiempo de CPU se obtiene corriendo el programa.
-
La velocidad, y por lo tanto el periodo del reloj, es parte de la documentación de la computadora.
-
El número de instrucciones y el CPI pueden ser más complicados.
-
El número de instrucciones se puede obtener:
-
Contando las instrucciones (sin seudos) del programa.
-
Usando un simulador del ISA.
-
Usando un programa profiler.
-
Usando contadores de hardware (si están disponibles).
-
-
El CPI se puede obtener:
-
Usando un simulador de la implementación.
-
Usando contadores de hardware.
-
-
A veces es más fácil aproximar el número de ciclos como se verá más adelante.
Consideraciones
-
El número de instrucciones depende del conjunto de instrucciones (el ISA) y no de la implementación.
-
El CPI depende de la implementación porque depende de:
-
La estructura de la memoria.
-
La estructura del procesador.
-
Las instrucciones usadas en el programa.
-
-
Dos implementaciones de MIPS pueden tener distintos CPI.
Número de ciclos
-
El número de ciclos se puede aproximar usando: donde
Ejemplo:
-
Hay 3 clases de instrucciones: A, B y C, cada una con su propio CPI.
Ejemplo:
-
Hay dos secuencias de código, S1 y S2, que se quieren comparar.
-
Cada secuencia requiere el siguiente número de instrucciones de cada clase:
Ejemplo:
-
¿Qué secuencia ejecuta más instrucciones?
-
¿Qué secuencia es más rápida?
-
¿Cuál es el CPI de cada secuencia?
Ejemplo:
¿Qué secuencia ejecuta más instrucciones?
S1 ejecuta 2 + 1 + 2 = 5 instrucciones.
S2 ejecuta 4 + 1 + 1 = 6 instrucciones.
S1 ejecuta menos instrucciones que S2.
¿Qué secuencia es más rápida?
Es decir, ¿Qué secuencia ejecuta menos ciclos?
-
Se usa la ecuación:
Ciclos de S1 = (2 x 1) + (1 x 2) + (2 x 3) = 10 ciclos
Ciclos de S2 = (4 x 1) + (1 x 2) + (1 x 3) = 9 ciclos
-
S2 es más rápida que S1.
¿Cuál es el CPI de cada secuencia?
-
Se usa la ecuación:
CPI = Número de ciclos / Número de instrucciones.
-
Para S1 CPI = 10 / 5 = 2
-
Para S2 CPI = 9 / 6 = 1.5






