Rendimiento de Computadoras ARQUITECTURA RENDIMIENTO DE COMPUTADORAS 1 Costo, rendimiento y costo / rendimiento Una gran cantidad de trabajo en arquitectura de computadoras trata con los métodos para mejorar el rendimiento de máquina. En este sentido, todas las decisiones de diseño al construir computadoras, desde el diseño de conjunto de instrucciones hasta el uso de técnicas de implementación como predicción de decisiones, memorias caché y paralelismo, si no principalmente están motivadas por el mejoramiento del rendimiento, al menos se hacen con ese propósito. De acuerdo con lo anterior, es importante tener una definición operativa precisa para el concepto rendimiento, conocer sus relaciones con otros aspectos de la calidad y utilidad de las computadoras, y aprender cómo se puede cuantificar con propósitos de comparación y decisiones de comercialización. 1 Rendimiento de Computadoras ARQUITECTURA Un segundo atributo clave de un sistema de cómputo es su costo. En cualquier año específico, probablemente se pueda diseñar y construir una computadora que sea más rápida que la más rápida de las computadoras actuales disponibles en el mercado. Sin embargo, el costo podría ser tan inalcanzable que quizá esta última máquina nunca se construya o se fabrique en cantidades muy pequeñas por agencias que estén interesadas en avanzar el estado del arte y no les importe gastar una cantidad exorbitante para lograr esa meta. Por lo tanto, la máquina de mayor rendimiento que sea tecnológicamente factible puede nunca materializarse porque es ineficaz en costo (tiene una razón costo/rendimiento inaceptable debido a su alto costo). Sería simplista igualar el costo de una computadora con su precio de compra. En vez de ello, se debería intentar evaluar su costo de ciclo de vida, que incluye actualizaciones, mantenimiento, uso y otros costos recurrentes. Observe que una computadora que se compra por dos mil dólares tiene diferentes costos. Puede haberle costado 1 500 dólares al fabricante (por componentes de hardware, licencias de software, mano de obra, embarque, publicidad), y los 500 dólares restantes cubran comisiones de ventas y 2 Rendimiento de Computadoras ARQUITECTURA rentabilidad. En este contexto, podría llegar a costar cuatro mil dólares durante su tiempo de vida una vez agregado servicio, seguro, software adicional, actualizaciones de hardware, etcétera. Con la intensión de aumentar el rendimiento de una computadora, se considera que al sustituir un procesador de computadora con uno más rápido no tendrá un impacto significativo en el rendimiento porque éste se encuentra limitado por la memoria principal o el ancho de banda I/O existente. 3 Rendimiento de Computadoras ARQUITECTURA 2 Definición de rendimiento de computadora Como usuarios, uno espera que una computadora de mayor rendimiento corra más rápido los programas de aplicaciones. De hecho, el tiempo de ejecución de los programas, ya sean cálculos de largo procesamiento o comandos simples a los que la computadora debe reaccionar de inmediato, es un indicador de rendimiento universalmente aceptado. En virtud de que un tiempo de ejecución más largo implica rendimiento más bajo, se puede escribir: Rendimiento = 1/tiempo de ejecución De este modo, el hecho de que una computadora ejecute un programa en la mitad del tiempo que le toma a otra máquina significa que tiene el doble de rendimiento. Todos los otros indicadores representan aproximaciones al rendimiento que se usan porque uno no puede medir o predecir los tiempos de ejecución para programas reales. Las posibles razones incluyen falta de conocimiento acerca de exactamente cuáles programas correrán en la máquina, el costo de transferir programas a un sistema nuevo por el solo 4 Rendimiento de Computadoras ARQUITECTURA propósito de evaluación comparativa, y la necesidad de valorar una computadora que todavía no se ha construido o de algún otro modo no está disponible para experimentación. Un usuario puede estar preocupado no con el tiempo de ejecución del programa, sino con el tiempo de respuesta o el tiempo de retorno total, que incluye latencia adicional atribuible a decisiones de calendarización, interrupciones de trabajo, retardos por cola I/O, etc. A veces a esto se le refiere como tiempo de reloj de pared, porque se puede medir al echar un vistazo al reloj de pared al comenzar y al terminar una tarea. Para filtrar los efectos de tales factores enormemente variables y difíciles de cuantificar, en ocasiones se usa el tiempo de ejecución de CPU para definir el rendimiento percibido por el usuario: Rendimiento = 1/tiempo de ejecución de CPU 5 Rendimiento de Computadoras ARQUITECTURA Este concepto vuelve la evaluación mucho más manejable en casos que conllevan métodos de evaluación analíticos, más que experimentales. Tal visión no conduce a imprecisión alguna para tareas de cálculo intenso que no involucran mucha I/O. Para tales tareas acotadas por CPU, la potencia de procesamiento representa el problema. Las tareas acotadas por I/O serán mal atendidas si sólo se toma en cuenta el tiempo de ejecución de CPU. Para un sistema balanceado sin problemas, no se erraría demasiado si se considera sólo el tiempo de ejecución de CPU en la evaluación del rendimiento. 6 Rendimiento de Computadoras ARQUITECTURA Observe que el equilibrio del sistema es esencial. Si uno sustituye el procesador de una máquina con un modelo que ofrece el doble de rendimiento, ello no duplicará el rendimiento global del sistema a menos que se realicen mejoras correspondientes en otras partes del sistema (memoria, bus del sistema, I/O, etc.). Duplicar el rendimiento del procesador no significa sustituir un procesador de x GHz con uno de 2x GHz; Cuando uno compara dos máquinas M1 y M2, la noción de rendimiento relativo entra en juego. (rendimiento de M1)/(rendimiento de M2) = aceleración de M1 sobre M2 = (tiempo de ejecución de M2)/(tiempo de ejecución de M1) 7 Rendimiento de Computadoras ARQUITECTURA La medición de rendimiento comparativo como 1.5 o 0.8, indica que la máquina M1 ofrece x veces el rendimiento, o es x veces más rápido que la máquina M2. Cuando x > 1, el rendimiento relativo se puede expresar en una de dos formas equivalentes: M1 es x veces más rápido que M2 (por ejemplo, 1.5 veces más rápida) M1 es 100(x - 1)% más rápida que M2 (por ejemplo, 50% más rápida). Una máquina que es 200% más rápida no es el doble de rápida sino tres veces más rápida. De manera más general: y% más rápido significa 1 + y/100 veces más rápida. 8 Rendimiento de Computadoras ARQUITECTURA Cada vez que se corre un programa específico, se ejecuta un número de instrucciones de máquina. Con frecuencia, este número es diferente de una corrida a otra, pero suponga que se conoce el número promedio de instrucciones que se ejecutan durante muchas corridas del programa. Observe que ese número puede tener poca relación con el número de instrucciones en el código del programa. Esto último es el contador de instrucción estática, mientras que aquí se está interesado en el contador de instrucción dinámica, que usualmente es mucho mayor que el contador estático debido a los ciclos y llamadas repetidas a ciertos procedimientos. La ejecución de cada instrucción toma cierto número de ciclos de reloj. De nuevo, el número es diferente para varias instrucciones y de hecho puede depender no sólo de la instrucción sino también del contexto (las instrucciones que se ejecutan antes y después de una instrucción específica). 9 Rendimiento de Computadoras ARQUITECTURA Suponer que también se tiene un valor promedio para este parámetro. Finalmente, cada ciclo de reloj representa una duración fija de tiempo. Por ejemplo, el tiempo del ciclo de un reloj de 2 GHz es de 0.5 ns. El producto de estos tres factores produce una estimación del tiempo de ejecución de CPU para el programa: tiempo de ejecución de CPU = instrucciones × (ciclos por instrucción) × (segundos por ciclo) = instrucciones × CPI/(tasa de reloj) donde CPI significa “ciclos por instrucción” y la tasa de reloj, expresada en ciclos por segundo, es el inverso de “segundos por ciclo”. El contador de instrucción de los tres parámetros, CPI y tasa de reloj no son completamente independientes, de modo que mejorar uno por un factor 10 Rendimiento de Computadoras ARQUITECTURA específico puede no conducir a una mejora global en el tiempo de ejecución por el mismo factor. La cuenta de instrucción depende de la arquitectura del conjunto de instrucciones (cuáles instrucciones están disponibles) y cuán efectivamente las usa el programador o compilador. CPI depende de la arquitectura del conjunto de instrucciones y de la organización del hardware. La tasa de reloj depende de la organización de hardware y de la tecnología de implementación. 11 Rendimiento de Computadoras ARQUITECTURA 3. Mejora del rendimiento y ley de Amdahl Gene Amdahl, un arquitecto de las primeras computadoras IBM que después fundó la compañía que lleva su nombre, formuló su famosa ley para señalar algunas limitaciones del procesamiento paralelo. Él afirmó que los programas contenían ciertos cálculos que eran inherentemente secuenciales y, por tanto, no se podían acelerar mediante procesamiento paralelo. Si f representa la fracción del tiempo de corrida de un programa debido a tales cálculos no paralelizables, incluso suponiendo que el resto del programa disfrute la aceleración perfecta de p cuando corre en p procesadores, la aceleración global sería: 12 Rendimiento de Computadoras ARQUITECTURA El número 1 en el numerador representa el tiempo de corrida original del programa y f + ( 1 − f )/p constituye el tiempo de ejecución mejorado del programa con p procesadores. Lo último es la suma del tiempo de ejecución para la fracción f no paralelizable y la fracción restante 1 - f, que ahora corre p veces más rápido. Observe que la aceleración s no puede superar p (aceleración lineal lograda por f = 0) o 1/f (máxima aceleración para p = ∞). 13 Rendimiento de Computadoras ARQUITECTURA Para f = 0.05, nunca se podrá esperar lograr una aceleración mayor que 20, sin importar cuántos procesadores se usen. A pesar de su formulación original en términos de la aceleración que es posible con p procesadores, la ley de Amdahl es mucho más general y se puede aplicar a cualquier situación que no involucre cambios en el tiempo de ejecución para una fracción f de un programa y mejora por un factor p (no necesariamente un entero) para la parte restante. Esta interpretación general sugiere que si se deja una parte de un programa que represente una fracción f de su tiempo de ejecución invariable, ninguna cantidad de mejora para la fracción restante 1 - f producirá una aceleración mayor que 1/f. Por ejemplo, si la aritmética de punto flotante representa 1/3 del tiempo de ejecución de un programa y se mejora sólo la unidad de punto flotante (es decir, f = 2/3), la aceleración global no puede superar 1.5, sin importar cuánto más rápido se vuelva la aritmética de punto flotante. 14 Rendimiento de Computadoras ARQUITECTURA 4 Medición del rendimiento contra modelado El método más seguro y confiable de evaluar el rendimiento es correr programas reales de interés en máquinas candidatas y medir los tiempos de ejecución o de CPU. Se muestra un ejemplo con tres máquinas diferentes que se evalúan en seis programas. 15 Rendimiento de Computadoras ARQUITECTURA Con base en los datos de evaluación que se muestran, la máquina 3 claramente queda a la cabeza porque tiene el tiempo de ejecución más corto para los seis programas. El resultado no es tan claro, como es el caso entre las máquinas 1 y 2. La máquina 1 es más rápida que la máquina 2 para dos de los programas y más lenta para los otros cuatro. Si tuviese que elegir entre las máquinas 1 y 2 (por decir, porque la máquina 3 es mucho más cara o no satisface algún otro requisito importante), podría agregar pesos a los programas y elegir la máquina para que la suma ponderada de tiempos de ejecución sea más pequeña. El peso para un programa podría ser el número de veces que se ejecuta por mes (con base en datos recopilados o una predicción). Si, por ejemplo, los seis programas se ejecutan el mismo número de veces, y, por tanto, tienen pesos iguales, la máquina 2 tendría una ligera ventaja sobre la máquina 1. 16 Rendimiento de Computadoras ARQUITECTURA Si, por otra parte, los programas B o E constituyen la mayor parte de la carga de trabajo, la máquina 1 probablemente prevalecerá. La experimentación con programas reales en máquinas reales no siempre es factible o económicamente viable. En tales casos, la evaluación puede basarse en programas de prueba (benchmarking) o en modelado analítico. Benchmarking Los benchmarks son programas reales o sintéticos que se seleccionan o diseñan para evaluación comparativa del rendimiento de una máquina. Una suite benchmark representa una colección de tales programas que tiene la intención de representar toda clase de aplicaciones y hacer fracasar cualquier intento por diseñar hardware que tendría buen desempeño en un 17 Rendimiento de Computadoras ARQUITECTURA programa benchmark específico más limitado (a esto último se le conoce como diseño de benchmarks). Los resultados del benchmarking sólo son relevantes para el usuario si los programas en la suite recuerdan los programas que el usuario correrá. Los benchmarks facilitan la comparación a través de diferentes plataformas y clases de computadoras. También hacen posible que los vendedores de computadoras y empresas independientes evalúen muchas máquinas antes de su entrada al mercado y publicar los resultados del benchmarking para beneficio de los usuarios. De esta forma, el usuario no necesitará realizar benchmarking. 18 Rendimiento de Computadoras ARQUITECTURA Estimación de rendimiento Es posible estimar el rendimiento de máquina sin hacer uso de observación directa del comportamiento de programas reales o benchmarks ejecutados en hardware real. Los métodos varían desde las estimaciones simplistas hasta el uso de modelos muy detallados que capturan los efectos de las características del diseño en hardware y software. Los modelos de rendimiento son de dos tipos: Modelos analíticos y modelos de simulación. Los primeros usan formulaciones matemáticas para relacionar el rendimiento con algunos parámetros claves, observables y cuantificables del sistema o la aplicación. Los segundos básicamente imitan el comportamiento del sistema, con frecuencia a un nivel de abstracción superior para conservar bajo observación el tamaño del modelo y su tiempo de procesamiento. 19 Rendimiento de Computadoras ARQUITECTURA Los resultados obtenidos por cualquier modelo sólo son tan buenos como la confiabilidad del modelo para representar capacidades, limitaciones e interacciones del mundo real. Es un error pensar que un modelo más detallado necesariamente ofrece una estimación de rendimiento más precisa. De hecho, la complejidad del modelo a veces oculta la comprensión y, por, lo tanto conduce a una incapacidad para ver cómo el efecto de la imprecisión en la estimación de los parámetros del modelo puede afectar los resultados finales. El modelo de estimación de rendimiento más simple es aquel que produce el rendimiento pico del sistema, se denomina así porque representa el nivel de rendimiento absoluto más elevado que uno puede esperar extraer del sistema. El rendimiento pico de una computadora es como la rapidez máxima de un automóvil y puede ser tan insignificante como un coeficiente de mérito para propósitos de comparación. 20 Rendimiento de Computadoras ARQUITECTURA Con frecuencia, el rendimiento pico se expresa en unidades de instrucciones por segundo o IPS, y se prefieren MIPS y GIPS para mantener los números pequeños. La ventaja del rendimiento pico es que es fácil de determinar y notificar. Para aplicaciones científicas y de ingeniería que involucran principalmente cálculos en punto flotante, se usan como unidad las operaciones de punto flotante por segundo (FLOPS), de nuevo con megaflops (MFLOPS) y gigaflops (GFLOPS) como los favoritos. 21 Rendimiento de Computadoras ARQUITECTURA 5 Búsqueda de mayor rendimiento El estado de potencia computacional disponible a la vuelta del siglo xxi se puede resumir del modo siguiente: Gigaflops en las computadoras de escritorio. Teraflops en el centro de supercomputadoras. Petaflops en la mesa de dibujo. Dado el crecimiento exponencial en el rendimiento de computadoras, en 1015 años se atestiguará un cambio de G, T y P hacia T, P y E . A través de los años, lograr hitos de rendimiento, como teraflops y petaflos, ha sido una de las principales fuerzas conductoras en la arquitectura y tecnología de computadoras. 22 Rendimiento de Computadoras ARQUITECTURA Para asegurar que el progreso en el rendimiento de supercomputadoras no se frena por el alto costo de investigación y desarrollo de tales máquinas, el Departamento de Energía de Estados Unidos patrocina el programa 23 Rendimiento de Computadoras ARQUITECTURA Accelerated Strategic Computing Initiative (ASCI, Iniciativa de Computación Estratégica Acelerada), descrito como la Advanced Simulation and Computing Initiative (Iniciativa de Simulación y Computación Avanzada), que tiene como meta el desarrollo de supercomputadoras que marquen límites del rendimiento: de 1 TFLOPS en 1997 a 100 TFLOPS en 2003. Aun cuando estos números corresponden a rendimiento pico, existe esperanza de que los aumentos en la potencia computacional pico significarán avances impresionantes en rendimiento sostenido para aplicaciones reales. 24 Rendimiento de Computadoras ARQUITECTURA 25 Rendimiento de Computadoras ARQUITECTURA En lo futuro se espera que el rendimiento tanto de microprocesadores como de supercomputadoras crezca al ritmo actual. Sin embargo, más allá de ello, el panorama es mucho menos claro. El problema es que se está llegando a ciertos límites físicos fundamentales que puede ser difícil, o incluso imposible, de superar. Una preocupación es que la reducción del tamaño característico de los circuitos integrados, que es un importante contribuyente a las mejorías en rapidez, se está acercando cada vez más a dimensiones atómicas. Otro conflicto es que la rapidez de la propagación de señal en los conectores entre elementos de chip es inherentemente limitada; en la actualidad es una fracción de la rapidez de la luz y nunca podrá superar la última (aproximadamente 30 cm/ns). 26 Rendimiento de Computadoras ARQUITECTURA Por ejemplo, si un chip de memoria está a 3 cm del chip procesador, nunca se podrá esperar enviar datos de uno al otro en un tiempo más corto que 0.1 ns. En consecuencia, es necesario más trabajo en técnicas arquitectónicas que obvien la necesidad de frecuente comunicación a larga distancia entre elementos de circuito. El procesamiento paralelo por sí mismo no resuelve el dilema de la “velocidad de la luz”; los procesadores múltiples todavía necesitan comunicarse entre ellos. 27