Está en la página 1de 18

1.4 El papel del rendimiento Cuando se dice que una computadora es ms rpida que otra, qu se quiere decir?

El usuario de una computadora individual puede decir que sta es ms rpida cuando ejecuta un programa en menos tiempo, mientras que el director de un centro de clculo puede decir que una computadora es ms rpida cuando completa ms tareas en una hora. El usuario de la computadora est interesado en reducir el tiempo de respuesta el tiempo transcurrido entre el comienzo y el final de un evento - denominado tambin tiempo de ejecucin o latencia. El director del centro de clculo est interesado en incrementar la productividad (throughput) - la cantidad total de trabajo realizado en un tiempo determinado.

Ejemplo: Productividad y tiempo de respuesta. Los siguientes cambios en un sistema de cmputo, incrementan la productividad, decrementan el tiempo de respuesta, o ambas? 1. Reemplazar el procesador en una computadora con una versin ms rpida. 2. Agregar un procesador a un sistema que utiliza mltiples procesadores para tareas separadas por ejemplo, el manejo de un sistema de reservaciones en una aerolnea. Respuesta: Decrementar el tiempo de respuesta casi siempre mejora la productividad. Por lo tanto, en el caso 1, tanto la productividad como el tiempo de respuesta son mejorados. En el caso 2, ninguna tarea se realizar de manera mas rpida, de manera que solo se incrementa la productividad. Sin embargo, si la demanda para el procesamiento en el segundo caso fue al menos tan grande como la productividad, el sistema debe necesariamente requerir de una cola de tareas. En este caso, al incrementar la productividad podra tambin mejorar el tiempo de respuesta, dado que reducira el tiempo de espera en la cola. As, en muchos sistemas de cmputo reales, cambiar el tiempo de ejecucin afecta a la productividad y viceversa.

Cuando se comparan alternativas de diseo, con frecuencia se quiere relacionar el rendimiento de dos mquinas diferentes, por ejemplo X e Y. La frase X es ms rpida que Y se utiliza para indicar que el tiempo de respuesta o tiempo de ejecucin es inferior en X con respecto a Y para una tarea dada. En particular, X es en n veces ms rpida que Y significa Tiempo de ejecucin Y Tiempo de ejecucin X =n

El rendimiento mantiene una relacin inversa al tiempo de ejecucin, es decir, a un menor tiempo de ejecucin se tiene un mayor rendimiento; y viceversa. Por lo que se mantiene la siguiente relacin: Tiempo de Ejecucin Y n= Tiempo de Ejecucin X 1 Rendimiento X Rendimiento Y = = 1 Rendimiento Y Rendimiento X

La frase la productividad de X es en 1.4 veces superior que la de Y significa que el nmero de tareas completadas por unidad de tiempo en la mquina X es 1.4 veces el nmero de tareas completadas en la mquina Y. Como rendimiento y tiempo de ejecucin son recprocos, incrementar el rendimiento hace decrecer el tiempo de ejecucin. Para evitar confusiones entre los trminos incrementar y decrementar, habitualmente se dice mejorar el rendimiento o mejorar el tiempo de ejecucin para hacer referencia a un incremento del rendimiento y una disminucin del tiempo de ejecucin.

Ejemplo: Rendimiento relativo. Una mquina A ejecuta un programa en 10 segundos y una mquina B ejecuta el mismo programa en 15, Cunto es mas rpida A que B? Respuesta: Si A es n veces ms rpida que B significa que:

RENDIMIENT O A RENDIMIENT OB
o

TIEMPO _ DE _ EJECUCIN B TIEMPO _ DE _ EJECUCIN A

De manera que la razn de rendimiento es: 15/10 = 1.5, y A es por lo tanto, 1.5 veces ms rpida que B.

En resumen, el rendimiento permite la comparacin de dos computadoras; aunque aparentemente este tema cae fuera de contexto en un curso de arquitectura de computadoras, mas adelante se demuestra que no es as. Por que para una misma arquitectura se analizaran tres diferentes tipos de implementaciones, y el objetivo en cada nueva implementacin ser alcanzar un aumento en el rendimiento.

De hecho, desde 1985 la industria de computadoras alcanz un nuevo estilo de arquitectura, iniciando un perodo en el cual el rendimiento ha aumentado a una velocidad mucho ms rpida. Al concentrar los avances en la tecnologa de circuitos integrados, las mejoras en la tecnologa de compiladores y las nuevas ideas arquitectnicas, los diseadores pudieron crear una serie de mquinas que mejoraban el rendimiento, en un factor de casi 2, cada ao. Estas ideas estn ahora proporcionando una de las mejoras en rendimiento ms significativas que las sostenidas en los ltimos veinte aos. Estas mejoras han sido posibles al tomar en cuenta una serie de importantes avances tecnolgicos, junto a un mejor conocimiento emprico sobre la utilizacin de las computadoras. De esta fusin ha emergido un estilo de diseo de computadoras basado en datos empricos, experimentacin y simulacin.

1.5 Mtricas para determinar el rendimiento 1.5.1 El tiempo de ejecucin El tiempo es la medida del rendimiento de la computadora: la computadora que realiza la misma cantidad de trabajo en menos tiempo es la ms rpida. El tiempo de ejecucin de un programa se mide en segundos por programa. El tiempo se puede definir de formas distintas dependiendo de lo que se quiera contar. La definicin ms directa de tiempo se denomina tiempo de reloj (wall-clock time), tiempo de respuesta (response time), o tiempo transcurrido (elapsed time). Esta es la latencia para completar una tarea, incluyendo accesos a disco, accesos a memoria, actividades de entrada/salida, gastos del sistema operativo - todo. Actualmente las computadoras trabajan a tiempo compartido, de manera que un procesador puede trabajar sobre diferentes programas. En tal caso, los sistemas intentan mejorar la productividad en lugar de intentar disminuir el tiempo transcurrido para un programa individual. Por lo que es conveniente distinguir entre el tiempo transcurrido y el tiempo en que el procesador est trabajando al servicio de un programa. Con el tiempo de CPU debe reconocerse esta distincin, por lo que se debe medir el tiempo que el CPU est computando una tarea sin incluir el tiempo de espera para las E/S o para ejecutar otros programas. (Obviamente, el tiempo de respuesta visto por el usuario es el tiempo transcurrido del programa, no el tiempo de CPU). Adems, el tiempo de CPU puede dividirse en: el tiempo empleado por el CPU en el programa tiempo de CPU del usuario, y el tiempo empleado por el sistema operativo realizando tareas requeridas por el programa tiempo de CPU del sistema. Estas distinciones las refleja el comando time de UNIX, que devuelve lo siguiente: 90,7u 12,9s 2:39 65% El tiempo de CPU del usuario es de 90,7 segundos, el tiempo de CPU del sistema es de 12,9 segundos, el tiempo transcurrido es de 2 minutos y 39 segundos (159 segundos), y el porcentaje de tiempo transcurrido que es el tiempo de CPU es

90.7 12.9 159

0.65 65%

En este ejemplo, ms de un tercio del tiempo transcurrido se gast esperando las E/S o ejecutando otros programas, o ambas cosas. En ocasiones no se considera al tiempo de CPU del sistema debido a la poca precisin de los sistemas operativos para obtenerlo, por lo que resultar poco realista considerar el tiempo de CPU del sistema cuando se comparan rendimientos entre mquinas con sistemas operativos diferentes. Por otro lado, el cdigo del sistema de algunas mquinas est incluido en el cdigo del usuario, en otras; y ningn programa corre sin que se ejecute el sistema operativo sobre el hardware, lo que es un argumento a favor de utilizar la suma del tiempo de CPU del usuario y del tiempo de CPU del sistema como la medida del tiempo de ejecucin de un programa. 1.5.2 Rendimiento del CPU La mayora de las computadoras se construyen utilizando un reloj que funciona a una frecuencia constante. Estos eventos discretos de tiempo se denominan pulsos, pulsos de reloj, perodos de reloj, relojes, ciclos o ciclos de reloj. Los diseadores de computadoras referencian el tiempo de un perodo de reloj por su duracin (por ejemplo, 10 ns) o por su frecuencia (por ejemplo, 100 MHz). El tiempo de CPU para un programa puede expresarse entonces de dos formas: Tiempo de CPU = Ciclos de reloj de CPU para un programa x Duracin del ciclo de reloj O Tiempo de CPU = Ciclos de reloj de CPU para un programa Frecuencia de reloj

En esta ltima expresin queda claro que el diseador de hardware puede mejorar el rendimiento disminuyendo la duracin del ciclo de reloj o el nmero de ciclos de reloj requeridos por un programa.

Ejemplo: Mejorando el Rendimiento. Un programa X se ejecuta en 10 segundos en una mquina A, la cual es de 400 MHz. Se intentar ayudarle al diseador de hardware para que realice una mquina B, que ejecutar ese programa en 6 segundos. El diseador ha determinado que es posible un incremento sustancial de la frecuencia de reloj, sin embargo, este incremento afectar al resto del CPU ocasionando que la mquina B requiera 1.2 veces la cantidad de ciclos de reloj que utilizaba la mquina A para este programa. Cul sera la frecuencia de reloj de la mquina B?

Respuesta: El nmero de ciclos que utilizara la mquina A para el programa X es: Ciclos de Reloj de CPUA Tiempo de CPUA = Frecuencia de RelojA Ciclos de Reloj de CPUA 10 segundos = 400 x 106 ciclos/segundo Ciclos de Reloj de CPUA = 4000 x 106 ciclos Para la mquina B, utilizando la misma ecuacin: 1.2 x Ciclos de Reloj de CPUA Tiempo de CPUB = Frecuencia de RelojB 1.2 x 4000x106 Ciclos 6 segundos = Frecuencia de RelojB De donde se obtiene: Frecuencia de RelojB = 800 MHz, es decir, el doble de la Frecuencia de Reloj de la mquina A.

El ejemplo anterior ilustra que al duplicar la frecuencia de reloj, por lo general, no reduce a la mitad el tiempo de ejecucin, por que se afecta a otras etapas en el diseo del procesador, ocasionando que se requiera de una mayor cantidad de ciclos de reloj.

1.5.3 Ciclos por Instruccin (CPI) Adems del nmero de ciclos de reloj para ejecutar un programa, tambin se puede contar el nmero de instrucciones ejecutadas - la longitud del camino de instrucciones o el recuento de instrucciones (IC, instruction count). Si se conoce el nmero de ciclos de reloj y el recuento de instrucciones, es posible calcular el nmero medio de ciclos de reloj por instruccin (CPI): Esta medida del rendimiento del CPU proporciona una nueva percepcin en diferentes estilos de repertorios de instrucciones e implementaciones. Al transponer el IC en la

frmula anterior, los ciclos de reloj pueden definirse como ICxCPI. Esto permite utilizar al CPI en la frmula del tiempo de ejecucin: Tiempo de CPU = IC x CPI x Duracin del ciclo de reloj O Tiempo de CPU = IC x CPI Frecuencia de reloj

Como demuestra esta frmula, el rendimiento del CPU depende de tres caractersticas: ciclo de reloj (o frecuencia), ciclos de reloj por instruccin (CPI), y recuento de instrucciones (IC). No se puede cambiar ninguna de ellas sin tener en cuenta las dems, ya que las tecnologas bsicas involucradas al cambiar una caracterstica tambin son interdependientes: Frecuencia de reloj - Tecnologa hardware y organizacin (Implementacin); CPI - Organizacin y arquitectura a nivel lenguaje mquina; IC - Arquitectura al nivel lenguaje mquina y tecnologa de compiladores.

Ejemplo: Usando la ecuacin del rendimiento. Suponga que se tienen dos implementaciones de la misma arquitectura. La mquina A tiene un tiempo de ciclo de 1 ns y un CPI de 2.0 para algn programa, y la mquina B tiene un tiempo de ciclo de 2 ns y un CPI de 1.2 para el mismo programa. Cul mquina es ms rpida para este programa y por cuanto? Respuesta: Puesto que ambas mquinas ejecutan la misma cantidad de instrucciones, sea I el recuento de Instrucciones. Por lo que se puede calcular el tiempo de CPU para cada mquina: Tiempo de CPU = IC x CPI x Duracin del ciclo de reloj Tiempo de CPUA = I x 2.0 x 1 ns = 2 x I ns Tiempo de CPUB = I x 1.2 x 2 ns = 2.4 x I ns Puede verse que la mquina A es ms rpida. La cantidad de rapidez se encuentra con la razn de tiempos de ejecucin:

RENDIMIENT OA RENDIMIENT OB

TIEMPO _ DE _ EJECUCIN B TIEMPO _ DE _ EJECUCIN A

2.4 I 2 I

1.2

Se concluye que la mquina A es 1.2 veces ms rpida que la mquina B para este programa.

A veces es til calcular el nmero total de ciclos de reloj de la CPU como:


n

Ciclos de reloj de CPU =


i 1

CPI i

IC i

Donde ICi representa el nmero de veces que se ejecuta alguna clase de instruccin i en un programa y CPI i representa el nmero medio de ciclos de reloj para la instruccin i. Esta forma puede utilizarse para expresar el tiempo de CPU como:
n

Tiempo de CPU =
i 1

CPI i IC i

Duracin del ciclo de reloj

y el CPI global como:


n

CPI i
CPI =
i 1

IC i
=

ICi
CPI i

( Recuento de instrucciones

Recuento de Instrucciones

i 1

La ltima forma del clculo de CPI multiplica cada CPI i individual por la fraccin de ocurrencias en un programa. Para resultados mas reales, el CPIi debe medirse, y no obtenerse de la tabla del manual de referencia, ya que debe incluir fallos de cach y dems ineficiencias del sistema de memoria.

Ejemplo: Comparando secuencias de cdigo. Un diseador de compiladores est tratando de decidir entre dos secuencias de cdigo para una mquina particular. El diseador de hardware le ha informado los siguientes hechos: La clase de Instruccin A requiere de un CPI de 1 La clase de Instruccin B requiere de un CPI de 2 La clase de Instruccin C requiere de un CPI de 3 Para una expresin de alto nivel, el escritor del compilador est considerando dos secuencias que requieren las siguientes instrucciones: Secuencia 1: 2 instrucciones de la Clase A, 1 de la clase B y 2 de la clase C. Secuencia 2: 4 instrucciones de la Clase A, 1 de la clase B y 1 de la clase C. Cul secuencia ejecuta mas instrucciones? Cul ser ms rpida? Cul es el CPI para cada secuencia?

Respuesta: La secuencia 1 ejecuta 2 + 1 + 2 = 5 instrucciones. La secuencia 2 ejecuta 4 + 1 + 1 = 6 instrucciones. De manera que la secuencia 2 es la que ejecuta ms instrucciones. La secuencia ms rpida es la que requiere de una menor cantidad de ciclos de reloj, los ciclos de reloj son obtenidos con la expresin:
n

Ciclos de reloj de CPU =


i 1

CPI i

IC i

Ciclos de reloj de CPU1 = (1 x 2) + (2 x 1) + (3 x 2) = 10 ciclos Ciclos de reloj de CPU2 = (1 x 4) + (2 x 1) + (3 x 1) = 9 ciclos De manera que la secuencia 2 es ms rpida. Finalmente, el CPI en cada caso se obtendr dividiendo los ciclos requeridos por cada secuencia entre el nmero de instrucciones en cada secuencia: CPI1 = 10/5 = 2 CPI2 = 9/6 = 1.5

1.5.4 MIPS y errores de utilizacin Hasta el momento se ha visto que la nica medida fiable y consistente del rendimiento es el tiempo de ejecucin de los programas reales, en esta seccin se analizan otras alternativas al tiempo, propuestas como mtricas para los programas reales, que presentndose como items medidos han conducido, eventualmente, a afirmaciones errneas o incluso a errores en el diseo de las computadoras. Una de estas alternativas son los MIPS, o millones de instrucciones por segundo. Para un programa dado, los MIPS son sencillamente MIPS = Recuento de Instrucciones Frecuencia de reloj = Tiempo de ejecucin x 106 CPI x 106

Algunos encuentran adecuada la frmula de ms a la derecha, ya que la frecuencia de reloj es fija para una mquina y el CPI, habitualmente, es un nmero pequeo, de forma distinta a la cuenta de instrucciones o al tiempo de ejecucin. La relacin de los MIPS con el tiempo es: Tiempo de ejecucin = Recuento de instrucciones MIPS x 106

Como los MIPS son una frecuencia de operaciones por unidad de tiempo, el rendimiento puede especificarse como el inverso del tiempo de ejecucin, de forma que mquinas ms rpidas tendrn una mayor frecuencia de MIPS. La buena noticia sobre los MIPS es que son fciles de comprender, especialmente por un cliente, y mquinas ms rpidas significan un mayor nmero de MIPS, lo cual coincide con la intuicin. El problema, cuando se utilizan los MIPS como medida para hacer comparaciones, es triple: Los MIPS son dependientes del repertorio de instrucciones, lo cual hace difcil la comparacin de los MIPS de computadoras con diferentes repertorios de instrucciones; Los MIPS varan entre programas en la misma computadora; Los MIPS pueden variar inversamente al rendimiento. El ejemplo clsico, del ltimo caso, es la variacin de los MIPS en una mquina con hardware opcional de punto flotante. Como, generalmente, se emplean ms ciclos de reloj por instruccin en punto flotante que por instruccin entera, los programas en punto flotante que utilizan el hardware opcional en lugar de las rutinas software de punto flotante emplean menos tiempo, pero tienen una menor frecuencia de MIPS. El software de punto flotante ejecuta instrucciones ms simples, dando como resultado una mayor frecuencia de MIPS, pero se ejecuta tantas veces que el tiempo global de ejecucin es mayor. Incluso es posible ver tales anomalas con compiladores optimizados.

Ejemplo: Error en la aplicacin de MIPS Para un programa X, un compilador gener la siguiente distribucin de Instrucciones:

Tipo de instruccin Operaciones de ALU Cargas Almacenamientos Saltos

Frecuencia de una instruccin 43 % 21 % 12 % 24 %

Ciclos de reloj por instruccin (CPI) 1 2 2 2

Tabla 1.1 Distribucin de Instrucciones para el programa X

El compilador se optimiza de manera que para el mismo programa descarta el 50% de las instrucciones de la ALU aunque no pueda reducir cargas, almacenamientos, ni saltos. Ignorando las prestaciones del sistema y suponiendo una duracin del ciclo de reloj de 2-ns (frecuencia de reloj 500-MHz) Cul es la frecuencia en MIPS para el cdigo optimizado frente al cdigo sin optimizar? Estn los resultados en MIPS de acuerdo con los del tiempo de ejecucin?

Respuesta: Puesto que ya se conoce la frecuencia del reloj, para encontrar el valor de MIPS se requiere encontrar los CPIs del cdigo sin optimizar y del cdigo optimizado. Para ello es posible usar la expresin:
n

CPI =
i 1

CPI i IC i /Recuento de Instrucciones

Aunque se desconoce el total de instrucciones, esto no importa por que este valor se eliminar. Por simplicidad, se asumir que el programa sin optimizar est formado por 100 instrucciones, de manera que: CPI sin optimizar = {(43x1) + (21x2) + (12x2) + (24x2)} / 100 = 1.57 entonces MIPS sin optimizar = (500MHz)/(1.57x106) = 318.5 Para el cdigo optimizado: CPI optimizado = {((43/2)x1) + (21x2) + (12x2) + (24x2)} / (100 - 43/2) = 1.73 ya que la mitad de las instrucciones de la ALU estn descartadas y el total de instrucciones se reduce por las instrucciones que faltan de la ALU. Entonces MIPS optimizado = 500MHz/(1.73x106) = 289.0 Es evidente que el cdigo optimizado requiere de un tiempo menor por que se ejecutan menos instrucciones (considerando al tiempo de ejecucin, puede deducirse que el cdigo optimizado es 1.5 veces ms rpido que el cdigo sin optimizar), sin embargo su frecuencia en MIPS es inferior: 289 contra 318.5

Ejemplos como ste muestran que los MIPS pueden fallar al dar una visin verdadera del rendimiento, ya que no reflejan el tiempo de ejecucin. Para compensar esta carencia, otra alternativa al tiempo de ejecucin es utilizar una mquina particular, con una estimacin convenida sobre los MIPS, como punto de referencia. Los MIPS Relativos para una mquina M se definen con base en una mquina de referencia como sigue: MIPSM = Donde: Tiempo referencia x MIPS referencia Tiempo M

Tiempo referencia - es el tiempo de ejecucin de un programa en la mquina de referencia; Tiempo M - es el tiempo de ejecucin del mismo programa en la mquina que se va a medir; MIPS referencia - es la estimacin convenida sobre los MIPS de la mquina de referencia. En los aos ochenta, la mquina de referencia dominante era la VAX-11/780, que se denomin mquina de 1-MIPS. Si una mquina era mas rpida que la mquina 1-MIPS en la ejecucin una programa por 5 veces - esta mquina tena 5 MIPS Relativos. La duda que surgi fue que si, en la mquina ms antigua deberan ejecutarse las ediciones ms modernas del compilador y sistema operativo, o si este software debe fijarse para que la mquina de referencia no sea ms rpida a lo largo del tiempo. Existe tambin la tentacin de generalizar de una estimacin de los MIPS relativos utilizando un benchmark a tiempo de ejecucin relativo (un benchmark es un programa de evaluacin desarrollado para la comparacin del rendimiento de computadoras, en relacin con el tiempo que se requiere para su ejecucin), an cuando pueda haber amplias variaciones en el rendimiento relativo. 1.5.5 MFLOPS y errores de utilizacin Otra alternativa popular al tiempo de ejecucin son los millones de operaciones en punto flotante por segundo, abreviadamente megaFLOPS o MFLOPS, pero siempre pronunciado megaflops. La frmula de los MFLOPS es simplemente la definicin del acrnimo: MFLOPS = Nmero de operaciones de punto flotante de un programa Tiempo de ejecucin x 106

Evidentemente, una estimacin en MFLOPS depende de la mquina y del programa. Como los MFLOPS se pensaron para medir el rendimiento en punto flotante, no son aplicables fuera de ese rango. Como ejemplo extremo, los compiladores, tienen una estimacin de MFLOPS prxima a cero sin que importe lo rpida que sea la mquina, ya que raramente utilizan aritmtica en punto flotante. El trmino MFLOPS est basado en las operaciones en lugar de las instrucciones, y se pens para que fuera una comparacin buena entre diferentes mquinas. La creencia es que el mismo programa corriendo en computadoras diferentes debe ejecutar un nmero diferente de instrucciones, pero el mismo nmero de operaciones en punto flotante. Desgraciadamente, los MFLOPS no son fiables, porque el conjunto de operaciones en punto flotante no es consistente con las mquinas. Por ejemplo, el CRAY C90 no tiene instruccin de dividir, mientras que Pentium de Intel tiene divisin, raz cuadrada, seno y coseno. Otro problema observado es que la estimacin en MFLOPS cambia no slo en la mezcla de operaciones de enteros y punto flotante sino tambin en la mezcla de operaciones rpidas y lentas de punto flotante. Por ejemplo, un programa con el 100% de sumas en punto flotante tendr una estimacin mayor que un programa con el 100% de divisiones en punto flotante.

Adems, como cualquier otra medida de rendimiento, la estimacin en MFLOPS para un nico programa no puede generalizarse para establecer una mtrica nica de rendimiento para una computadora. Como los MFLOPS normalizados representan realmente una constante dividida por el tiempo de ejecucin para un programa especfico y entrada especfica, los MFLOPS son redundantes con el tiempo de ejecucin, la principal medida de rendimiento. De manera distinta al tiempo de ejecucin, es tentador caracterizar una mquina con una nica estimacin en MIPS o MFLOPS sin nombrar un programa, sin especificacin la entrada/salida, sin descripcin las versiones de los sistemas operativos y compiladores. Finalmente, los MFLOPS no son una medida til para todos los programas.

1.6 Otros tpicos relacionados con el rendimiento 1.6.1 Programas para evaluar el rendimiento Un usuario de computadoras que ejecuta los mismos programas da tras da sera el candidato perfecto para evaluar una nueva computadora. Para evaluar un nuevo sistema simplemente comparara el tiempo de ejecucin de su carga de trabajo habitual (workload) - la mezcla de programas y rdenes del sistema operativo que los usuarios ejecutan en una mquina. Sin embargo, pocas veces ocurre esta feliz situacin. La mayora de veces se debe confiar en otros mtodos para evaluar las mquinas, y con frecuencia, en otros evaluadores, esperando que estos mtodos predigan el rendimiento de la nueva mquina. Hay cuatro niveles de programas utilizados en estas circunstancias, listados a continuacin en orden decreciente de precisin. 1. Programas reales (Real programs). - Aunque el comprador puede no conocer qu fraccin de tiempo se emplea en estos programas, sabe que algunos usuarios los ejecutarn para resolver problemas reales. Ejemplos son compiladores de C, software de tratamiento de textos como TeX, y herramientas CAD como Spice. Los programas reales tienen entradas, salidas y opciones que un usuario puede seleccionar cuando est ejecutando el programa. 2. Ncleos (Kernels). - Se han hecho algunos intentos para extraer pequeas piezas claves de programas reales y utilizarlas para evaluar el rendimiento. Livermore Loops y Linpack son los ejemplos mejor conocidos. De forma distinta a los programas reales, ningn usuario puede correr los programas ncleo; nicamente se emplean para evaluar el rendimiento. Los ncleos son adecuados para aislar el rendimiento de las caractersticas individuales de una mquina para explicar las razones de las diferencias en los rendimientos de programas reales. 3. Benchmarks reducidos (Toy benchmarks). - Los benchmarks reducidos, normalmente, tienen entre 10 y 100 lneas de cdigo y producen un resultado que el usuario conoce antes de ejecutarlos. Programas como la Criba de Eratstenes, Puzzles, y Ordenamiento Rpido (Quicksort) son populares porque son pequeos, fciles de introducir y de ejecutar casi en cualquier computadora.

4. Benchmarks Sintticos.- Anlogos en filosofa a los ncleos, los benchmarks sintticos intentan determinar la frecuencia media de operaciones y operandos de un gran conjunto de programas. Whetstone y Dhrystone son benchmarks sintticos populares. Igual que ocurre con los neleos, ningn usuario ejecuta los benchmarks sintticos porque no calculan nada que ningn usuario pueda utilizar. Los benchmarks sintticos estn, en efecto, an ms lejos de la realidad porque el cdigo de los ncleos se extrae de programas reales, mientras que el cdigo sinttico se crea artificialmente para determinar un perfil medio de ejecucin. Los benchmarks sintticos no son parte de programas reales, mientras que los dems pueden serlo. 1.6.2 Conjuntos de benchmarks Recientemente ha llegado a ser popular juntar una coleccin de benchmarks para intentar comparar el rendimiento de computadoras con una variedad de aplicaciones. Por supuesto, tales conjuntos son tan buenos como los benchmarks individuales que los constituyen. No obstante, una ventaja dominante de tales conjuntos es que la debilidad de algn programa de prueba es disminuida por la presencia de otros benchmarks. El conjunto ms popular y comprensivo de los benchmarks es la coleccin de SPEC (System Performance Evaluation Cooperative). La SPEC fue creada por un grupo de compaas de computadoras en 1989 para definir, crear y mantener un conjunto de programas que permitan evaluar el rendimiento de las computadoras modernas. En lo que refiere a CPUs, la coleccin ms nueva de SPEC se denomina CPU2006. Es una coleccin diseada para proporcionar medidas del rendimiento que puedan ser usadas para comparar cargas de trabajo de cmputo intensivo en diferentes sistemas de cmputo. SPEC CPU2006 contiene dos suites de benchmarks: CINT2006 para medir y comparar el rendimiento de cmputo intensivo con enteros, y CFP2006 para medir y comparar el rendimiento de cmputo intensivo con nmeros en punto flotante. Existe otra coleccin denominada SPEC CPU2002, y aunque actualmente an se dispone de los benchmarks con sus correspondientes resultados, SPEC plantea retirarla en el 2007. Colecciones que han sido retiradas son CPU95 y CPU92. Adems de la evaluacin del rendimiento de la CPU, SPEC organiza otras colecciones de benchmarks en funcin de las aplicaciones que se vayan a ejecutar en alguna mquina particular, as se tienen colecciones para: Aplicaciones con grficos Cmputo de alto rendimiento Clientes/Servidor en Java Servidores de Correo Electrnico Sistemas de archivos en red Rendimiento en la potencia

Servidores WEB Mas informacin de la organizacin SPEC se encuentra en: http://www.specbench.org

1.6.3 Principio cuantitativo para aumentar el rendimiento: Acelerar el caso comn Quiz el principio ms importante y generalizado del diseo de computadoras sea acelerar el caso comn: al realizar un diseo, favorecer el caso frecuente sobre el infrecuente. Este principio tambin se aplica cuando se determina cmo emplear recursos, ya que el impacto de hacer alguna ocurrencia ms rpida es mucho mayor si la ocurrencia es frecuente. Mejorar el evento frecuente en lugar del evento raro, evidentemente, tambin ayudar a aumentar el rendimiento. Adems, el caso frecuente es, a menudo, ms simple y puede realizarse de forma ms rpida que el caso infrecuente. Por ejemplo, cuando se suman dos nmeros en la CPU, es natural esperar que el desbordamiento sea una circunstancia infrecuente y, por tanto, es factible mejorar el rendimiento optimizando el caso ms comn de ausencia de desbordamiento. Este hecho puede alentar la situacin en la que se presente un desbordamiento, pero si este caso es infrecuente, el rendimiento global mejorar al optimizar el caso normal. Al aplicar este sencillo principio, se deber evaluar que casos son frecuentes y cmo se puede mejorar el rendimiento hacindolos ms rpidos. Una ley fundamental, denominada Ley de Amdahl, puede utilizarse para cuantificar este principio. 1.6.4 Ley de Amdahl El aumento de rendimiento que puede obtenerse al mejorar alguna parte de una computadora puede calcularse utilizando la Ley de Amdahl. La Ley de Amdahl establece que la mejora obtenida en el rendimiento al utilizar algn modo de ejecucin ms rpido est limitada por la fraccin de tiempo que se pueda utilizar ese modo ms rpido. La Ley de Amdahl define la ganancia de rendimiento o aceleracin (speedup) que puede lograrse al utilizar una caracterstica particular. Si para una mquina es posible realizar una mejora que, cuando se utilice, aumente su rendimiento. La aceleracin est dada por la relacin:

Aceleracin de rendimiento =

Rendimiento de la tarea completa utilizando la mejora cuando sea posible Rendimiento de la tarea completa sin utilizar la mejora

Alternativamente: Tiempo de ejecucin de la tarea sin utilizar la mejora Aceleracin de rendimiento = Tiempo de ejecucin de la tarea completa utilizando la mejora cuando sea posible

La aceleracin indica la rapidez con que se realizar una tarea utilizando una mquina con la mejora con respecto a la mquina original. La Ley de Amdahl da una forma rpida de calcular la aceleracin, que depende de dos factores: La fraccin del tiempo que pueda utilizarse para aprovechar la mejora. Por el ejemplo, si en un programa que tarda 60 segundos, durante 20 segundos puede utilizarse la mejora, la fraccin ser 20 /60. Este valor, que se llama Fraccin mejorada, es siempre menor o igual que 1. La optimizacin lograda por el modo de ejecucin mejorado; es decir, cunto ms rpido se ejecutara la tarea si solamente se utilizase el modo mejorado. Este valor es el tiempo del modo original con respecto al tiempo del modo mejorado. Si el modo mejorado toma 2 segundos para alguna porcin de programa que puede usar el modo completamente mientras que el modo original tomaba 5 segundos para la misma porcin de programa, la mejora es 5/2. Este valor es siempre mayor que 1 y se llama Aceleracin mejorada. El tiempo de ejecucin utilizando la mquina original con el modo mejorado ser el tiempo empleado utilizando la parte no mejorada de la mquina ms el tiempo empleado utilizando la parte mejorada.

Tiempo de ejecucin nuevo = Tiempo de ejecucin antiguo x


1 Fraccinmejorada Fraccinmejorada Aceleracinmejorada

La aceleracin global es la relacin de los tiempos de ejecucin:

Tiempo de ejecucin antiguo Aceleracin global = Tiempo de ejecucin nuevo =

1 Fraccinmejorada

Fraccinmejorada Aceleracinmejorada

Ejemplo: Aplicacin de la Ley de Amdahl Se tiene una mquina en la cual se hicieron arreglos en hardware para alcanzar una mejora que se ejecuta diez veces ms rpida que la mquina original, pero slo es utilizable el 40% del tiempo. Cul es la aceleracin global lograda al incorporar la mejora? Respuesta Fraccin mejorada = 0.4 Aceleracin mejorada = 10 Aceleracin global = 1/( 0.6 + 0.4/10) = 1.5625

Un corolario importante de la Ley de Amdahl es que si una mejora slo es utilizable por una fraccin de una tarea, no es posible aumentar la velocidad de la tarea ms que el recproco de 1 menos esa fraccin. Un error comn al aplicar la Ley de Amdahl es confundir la fraccin de tiempo para utilizar una mejora con la fraccin de tiempo despus de que se utiliza la mejora. Si, en lugar de medir el tiempo que podra utilizar la mejora en un clculo, midisemos el tiempo despus que se ha utilizado la mejora, los resultados seran incorrectos. La Ley de Amdahl puede servir como gua para ver cmo una mejora aumenta el rendimiento y cmo distribuir los recursos para mejorar la relacin costo/rendimiento. El objetivo, claramente, es emplear recursos de forma proporcional al tiempo que se requiere en cada parte.

TAREA 2 1. Se plantea comparar dos sistemas diferentes: S1 y S2. El sistema S1 cuesta 10, 000 dlares y el sistema S2 15, 000. Se han realizado las siguientes medidas sobre estos sistemas: Programa 1 2 Tiempo en S1 10 segundos 3 segundos Tiempo en S2 5 segundos 4 segundos

Se dice que una mquina es ms efectiva en coste que otra si la razn de rendimiento dividida por el coste es mayor. a. Un usuario slo se interesa por el rendimiento del programa 1. Qu mquina es ms efectiva en coste para correr slo el programa 1? En cunto? b. Otro usuario est preocupado por la productividad de los sistemas, cuando se midieron con una carga de trabajo igual de los programas 1 y 2. Qu sistema tiene mejor rendimiento para esa carga de trabajo? En cunto? Qu sistema es ms efectivo en coste para esa carga de trabajo? En cunto? c. Sin embargo, otro usuario tiene los siguientes requerimientos para los sistemas: el programa 1 debe ejecutarse 200 veces cada hora. El tiempo restante puede utilizarse para correr el programa 2. Si el sistema tiene suficientes prestaciones para correr el programa 1 el nmero de veces requerido por hora, el rendimiento se mide por la productividad del programa 2. Qu sistema es ms rpido para esta carga de trabajo? Qu sistema es ms efectivo en coste? d. Considere que en los dos sistemas y programas se hicieron las siguientes medidas adicionales: Programa 1 Instrucciones ejecutadas en S1 20 x 106 Instrucciones ejecutadas en S2 16 x 106

Calcule la velocidad de ejecucin de las instrucciones (instrucciones por segundo) para cada mquina cuando corre el programa 1. e. Si la frecuencia de reloj del sistema S1 es 20 MHz y la del reloj del sistema S2 es 30 MHz, encuentre los ciclos de reloj por instruccin (CPI) para el programa 1 en ambos sistemas, utilizando los datos de las dos tablas. f. Suponiendo que el CPI para el programa 2 en cada mquina es igual al CPI del programa 1 (calculado en el inciso e), encontrar el recuento de instrucciones para correr el programa 2 en cada mquina (utilice los tiempos de la tabla 1).

2. Suppose that when Program A is running, the user CPU time is 3 seconds, the elapsed wallclock time is 4 seconds, and the system performance is 10 MFLOP/sec. Assume that there are no other processes taking any significant amount of time, and the computer is either doing calculations in the CPU or doing I/O, but it can't do both at the same time. We now replace the processor with one that runs six times faster, but doesn't affect the I/O speed. What will the user CPU time, the wallclock time, and the MFLOP/sec performance be now? 3. You are on the design team for a new processor. The clock of the processor runs at 200 MHz. The following table gives instruction frequencies for Benchmark B, as well as how many cycles the instructions take, for the different classes of instructions. For this problem, we assume that (unlike many of today's computers) the processor only executes one instruction at a time. Instruction type Loads & Stores Arithmetic instructions All others a. Calculate the CPI for Benchmark B. b. The CPU execution time on the benchmark is exactly 11 seconds. What is the native MIPS processor speed for the benchmark in millions of instructions per second? c. The hardware expert says that if you double the number of registers, the cycle time must be increased by 20%. What would the new clock speed be (in MHz)? d. The compiler expert says that if you double the number of registers, then the compiler will generate code that requires only half the number of Loads & Stores. What would the new CPI be on the benchmark? e. How many CPU seconds will the benchmark take if we double the number of registers (taking into account both changes described above) ? Frequency 30% 50% 20% Cycles 6 cycles 4 cycles 3 cycles

También podría gustarte