Throughput
Rendimiento se refiere a la relación entre el resultado obtenido y los medios utilizados para un fin. En orden de cuantificar el rendimiento de un computador, necesitamos definir el concepto de Throughput1, una medida de cúantas tareas puede ejecutar un computador en una cierta cantidad de tiempo.
El rendimiento de una máquina está asociado al tiempo de ejecución que utiliza para una tarea.
Por ende, si queremos comparar el rendimiento de una máquina respecto a otra, dividimos entre , para obtener una tasa N que representa cuántas veces mejor es el Rendimiento de una máquina que el de la otra.
El Tiempo de Ejecución es una de las medidas con las que comunmente cuantificamos el Rendimiento de una máquina. Existen distintas formas de medir este tiempo, ya que medirlo de manera fidedigna no es una tarea precisamente trivial.
Tiempo de reloj
Con reloj, nos referimos más precisamente al modulo CLK de la máquina, que mide en ciclos (osea, Hercios) el tiempo real para la maquina. El reloj del procesador entiende el tiempo con ticks, o pulsos, ciclos con un periodo fijo, periodo que esta denotado por la frecuencia (Hz) del procesador.
- Periodo de reloj: Duración, en términos de tiempo, de un solo ciclo. Lo llamaremos más comumente Tiempo de Reloj.
- Tasa o Frecuencia de reloj: Cantidad de ciclos en una determinada unidad de tiempo.
Rendimiento en Ciclos de Reloj
Debemos saber relacionar correctamente el Tiempo de CPU con los Ciclos de Reloj. Podemos describir cuanto tarda una tarea con el tiempo que demora, o bien, con la cantidad de ciclos que demora.
- Tiempo de CPU: Tiempo que la CPU gasta en realizar una tarea específica, su tiempo de ejecución.
- Tiempo de Reloj: Duración de un solo ciclo, bajo una cierta frecuencia determinada.
Entonces, si sabemos:
- Cuántos ciclos demora una tarea ( )2
- Cuanto tiempo demora un solo ciclo ( ) Podemos saber cúanto tiempo toma en ejecutarse la tarea completa:
Por otro lado, si solo conociéramos la Frecuencia a la que opera, debemos recordar que la frecuencia es el inverso del tiempo.
Y por supuesto, ya que el Tiempo de Reloj no es más que el tiempo que tarda en ejecutarse un solo ciclo, podemos reemplazar esto en la fórmula para obtenerlo.
Eventualmente, son solo distintas formas de reescribir la relación entre la Frecuencia de reloj, el Tiempo de CPU (o de ejecucion) y la Cantidad de Ciclos.
Rendimiento considerando Instrucciones
Un compilador genera instrucciones (mas sobre Instrucciones en el capitulo de RISC-V) que la máquina debe ejecutar. Entre mas instrucciones, mayor es el tiempo de ejecución, pero no todas las instrucciones se demoran lo mismo. Cada tipo de instrucción requiere una cierta cantidad de ciclos.
Por ende, para describir el rendimiento de la máquina teniendo en cuenta teniendo en cuenta esta salvedad respecto a las instrucciones, podemos establecer un CPI: un promedio de Ciclos Por Instruccion.
Así, si recordamos la fórmula , podemos calcular el tiempo de CPU teniendo en consideración el promedio de Ciclos Por Instrucción; solo debemos considerar que para calcular los Ciclos de Reloj, hay que multiplicar:
- : Cuántos ciclos me demoro, en promedio, en ejecutar una instrucción.
- Cuántas instrucciones debo ejecutar en total.
Despejando de la fórmula (4), una forma de obtener el CPI es:
OBSERVACION
La razón para integrar este reemplazo es simplemente dar cuenta de que debemos aplicar estas fórmulas de la forma que más nos convenga. Al hacer un ejercicio, debemos revisar qué datos tenemos disponibles, ya que el reemplazo necesario para poder aplicar la fórmula puede no ser tan intuitivo como parece. En este caso, por ejemplo, calculamos el CPI sin los Ciclos de Reloj, imaginando una situación en la que no conocemos los ciclos de reloj, pero sí el Tiempo de Reloj y el Tiempo de Ejecución.
Otra forma de calcular el CPI, si es que llegásemos a tener instrucciones con CPIs distintos.
Eventualmente, el propósito de expresar el rendimiento en función de cuánto demoran sus instrucciones es poder comparar distintas implementaciones de un set de Instrucciones.
Benchmarks
Ya que distintas maquinas performan de distinta forma en distintas tareas, utilizamos benchmarks con propositos especificos, que nos muestran en cuanto tiempo de ejecucion podemos completar una tarea especifica. Un conjunto de benchmarks estandarizado es el SPEC, una serie de 43 Benchmarks multiproposito que nos dan una metrica de cuantas veces mejor es la maquina, en comparacion a una máquina piloto.
Ley de Ahmdal
Propone que la mejora obtenida en el rendimiento de un sistema debido a la alteracion de un componente esta limitada por la fraccion de tiempo que se utiliza dicho componente. Dicho de forma simple, el factor de speedup no es siempre equivalente al factor de mejora.