miércoles, 19 de diciembre de 2007

2.3 MFLOPS

Otra alternativa para medir el rendimiento de un sistema computador son los MFLOPS, que son:

"Millones de operaciones de punto flotante por segundo."

Dije operaciones y no instrucciones, es decir: divisiones en punto flotante, multiplicaciones en punto flotante, raíz cuadrada en punto flotante, ésto porque una operación de raíz cuadrada en punto flotante en un procesador podría requerir varias decenas de instrucciones, y en otro procesador podría ocupar una única instrucción.

Debe quedar claro que los MFLOPS es una métrica en cuanto a ejecución en punto flotante, y debe ser usado únicamente en este contexto.

Los MFLOPS no son un medida consistente del rendimiento del un computador, les recuerdo que el tiempo de ejecución es la medida mas fiable.

lunes, 17 de diciembre de 2007

2.2 MIPS

La mejor manera de medir el rendimiento es a través del tiempo de ejecución de las aplicaciones reales, pero otra alternativa son los MIPS, o millones de instrucciones por segundo. Es muy usual que se especifique esta métrica como medida del rendimiento en artículos periodísticos de poco valor científico, esto porque los MIPS tienen serias deficiencias, la peor de ellas es que los MIPS pueden variar inversamente proporcional al rendimiento. Si así es. Un sistema computador con un repertorio de instrucciones sencillo, de rápida ejecución, ejecutará mas instrucciones por segundo que un repertorio de instrucciones largas y complejas, pudiendo, éste último, tener un menor tiempo de ejecución.

sábado, 15 de diciembre de 2007

2.1 Rendimiento de la CPU

Podemos medir el rendimiento usando la siguiente ecuación:

Image Hosted by ImageShack.us

Donde CPI son los ciclos por instrucción, RI el recuento de instrucciones y T el periodo de ciclo de reloj.

2.0 Rendimiento

El tiempo transcurrido es el tiempo entre el inicio de un programa y su finalización, sin embargo es importante aclarar que ésta definición incluye gastos del sistema operativo, acceso a memoria, acceso a disco, actividades de entrada y salida, entre otras cosas; recordemos además que la CPU trabaja a ratos en un programa, y luego trabaja en otro, así que no todo el tiempo transcurrido la CPU está trabajando en el programa en cuestión. Es por esa razón que se hace una distinción entre tiempo de CPU y tiempo transcurrido. El tiempo de CPU es el tiempo de cálculo usado en la ejecución de la tarea sin incluir el tiempo que la CPU está ejecutando otros programas o esperando entrada y salida. El tiempo de CPU se divide también entre tiempo de CPU del usuario, que es el tiempo que la CPU está ejecutando el código de la aplicación, y tiempo de CPU del sistema que es el tiempo que la CPU está ejecutando código del sistema operativo para esa aplicación. Ésto se puede entender a través de la siguiente figura:

Image Hosted by ImageShack.us

Entonces hay varios enfoques en la medición del rendimiento. De ahora en adelante el rendimiento de la CPU hará referencia al tiempo de CPU de usuario.

1.2 Acelerar el caso común

Para explicar ésto supongamos el siguiente escenario:

Usted es arquitecto de computadores y trabaja para Intel, y tiene que elegir entre dos mejoras en el Pentium 4, una mejora es en la unidad de decodificación de instrucciones, ésta mejora duplica la velocidad del procesador, ya que la unidad de decodificación es usada el 100% del tiempo, y otra en la unidad de ejecución de instrucciones de punto flotante, éste mejora eleva por 10 el rendimiento del computador, y se puede usar tan solo el 50% del tiempo. Ambas mejoras tiene el mismo costo, se le pide a usted que determine cual alternativa tendrá mas efecto en el rendimiento del computador.

En el primer caso la aceleración global es 2. En el caso de la mejora de la unidad de punto flotante, que se puede usar tan solo el 50% del tiempo la aceleración global es de:

Image Hosted by ImageShack.us

La primera alternativa (mejora en la unidad de decodificación) resulta en una mayor aceleración del rendimiento del procesador en relación con la segunda (mejora en la unidad de punto flotante), ésto porque la mejora en la unidad de decodificación favorece el caso más frecuente.

De aquí podemos deducir una regla cualitativa en el diseño de computadores:

"Favorecer el caso común sobre el caso menos común"

lunes, 20 de agosto de 2007

1.1 Ley de Amdahl

Supongamos que se tienen dos computadores idénticos A y B, excepto por una pequeña mejora en A. La ley de Amdahl afirma que la mejora obtenida en el rendimiento de A está limitada por la fracción de tiempo que se pueda usar esa mejora. Muy simple. Ahora vamos a la parte cuantitativa. Podemos calcular la aceleración en el rendimiento (speedup) de la siguiente forma:

Image Hosted by ImageShack.us

Donde Ag es la aceleración global, es decir la aceleración del sistema como un todo, Fm la fracción mejorada del sistema, y Am la aceleración mejorada.

1.0 ¿Cuando un sistema computador es mas rápido?

Hay dos puntos de vista. Cuando se ejecuta un programa en menos tiempo o cuando se realizan mas tareas en un determinado lapso de tiempo, en el primer caso estamos interesados en reducir el tiempo de respuesta (speed) y el segundo estamos interesado en incrementar la productividad (throughput).

Si tenemos un sistema computador encargado de realizar transacciones bancarias, estamos interesados en que el sistema complete una gran cantidad de transacciones en determinado lapso de tiempo, en éste caso nos interesa la productividad. Pero si tenemos un computador ejecutando un modelo atmosférico, estamos muy interesados en que el modelo atmosférico se ejecute rápidamente, para así tener disponible el pronóstico lo antes posible. En éste caso nos interesa el tiempo de respuesta.

Para comparar alternativas de diseño, se hace la afirmación, la máquina A es n por ciento más rápida que la máquina B, lo cual implica lo siguiente en relación al tiempo de ejecución de las dos máquinas:

Image Hosted by ImageShack.us

Esto es para tener certeza de que estamos diciendo cuando hacemos una afirmación como ésta:

El procesador A es 80% más rápido que el procesador B.