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:

  1. Cuántos ciclos demora una tarea ( )2
  2. Cuanto tiempo demora un solo ciclo ( ) Podemos saber cúanto tiempo toma en ejecutarse la tarea completa:
\large TiempoCPU[s] = \#CiclosReloj \cdot TiempoReloj[s] \tag{1}$$ Por otro lado, si solo conociéramos la **Frecuencia** a la que opera, debemos recordar que *la frecuencia es el inverso del tiempo*. $$\large TiempoCPU[s] = \frac{\#Ciclos\mathrm{Re}loj}{FrecuenciaReloj[Hz]} \tag{2}

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 Frecuencia, Tiempo de CPU

Pendiente

  • Insertar ejemplo resuelto de conversiones, un par donde faltan distintos datos, y una que enfatice las magnitudes y conecte a un anexo de magnitudes.
  • Insertar anexo de magnitudes, prefijos y sufijos
  • Anexo de conversión de sistemas numericos

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:

PLACEHOLDER

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.

Pendiente

  • Insertar ejemplos

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.

Footnotes

  1. Cantidad de trabajo, datos, o productos que un sistema procesa o entrega de manera exitosa, en un periodo de tiempo determinado ↩

  2. Entiéndase que # se refiere a cantidad de ciclos de reloj. Esta convención se mantendra a lo largo del apunte. ↩