U1_Introduccion

download U1_Introduccion

of 28

description

Introduccion a conceptos fundamentales de la arquitectura de computadores

Transcript of U1_Introduccion

  • UNIDAD 1: Introduccin a la arquitectura de computadoras.

    1.1 Introduccin

    La tecnologa de computadoras ha progresado increblemente en los ltimos cincuenta

    aos. En 1945 no haba computadoras con programa almacenado. Hoy, con menos de mil

    dlares es posible comprar una computadora personal con ms prestaciones, ms memoria

    principal y ms memoria en disco que una computadora que en 1965 costaba un milln de

    dlares.

    Desde 1985 ha habido una media-docena de nuevas mquinas cuya introduccin aparentaba

    revolucionar la industria de la informtica; sin embargo estas revoluciones slo fueron

    ilusorias, porque alguien ms construy una computadora con un mejor rendimiento.

    Los avances en la industria de la computacin han producido una nueva revolucin, la

    revolucin de la informacin que se sita a la par con la revolucin industrial o con la

    revolucin agrcola.

    Si la industria del transporte hubiera evolucionado al paso que la industria de la

    computacin, por ejemplo, hoy podramos viajar de costa a costa en 5 segundos por 50

    centavos.

    Algunas aplicaciones que hace algunas dcadas resultaban como parte de la ficcin, hoy en

    da forman parte de nuestra vida diaria, por ejemplo:

    Cajeros automticos: Una computadora puesta en las paredes de los bancos, para distribuir y colectar efectivo, era un concepto ridculo en los 1950s, cuando la computadora ms barata costaba al menos $500, 000.00 dlares y era del tamao de un

    automvil.

    Computadoras en los automviles: El control por computadora en los automviles fue absurdo hasta la dcada de los 1980s, cuando los microprocesadores mejoraron dramticamente en precio y rendimiento. Actualmente, las computadoras reducen la

    contaminacin y mejoran la eficiencia del combustible a travs del control de inyectores

    e incrementan la seguridad por medio de los controles de velocidad y el inflado de

    bolsas de aire que protegen a los ocupantes en caso de accidentes.

    Computadoras porttiles: Esto slo poda ocurrir en sueos, sin embargo los avances en los sistemas de cmputo permiten llevar las computadoras prcticamente a cualquier

    sitio.

    El proyecto del genoma humano: El costo del equipo de cmputo necesario para monitorear las secuencias de DNA humano fue de algunos millones de dlares. Es poco

    probable que alguien hubiera considerado este proyecto si el costo fuera de 10 a 100

    veces ms alto, como ocurra hace 15 o 25 aos.

  • Internet: Actualmente el Internet esta transformando nuestra sociedad, entre sus usos estn la distribucin de noticias, compras en lnea, planeacin de vacaciones, envo de

    regalos, operaciones bancarias, encontrar a otros que compartan los mismos intereses,

    etc.

    Claramente los avances en la tecnologa de las computadoras afectan casi todos los

    aspectos de nuestra sociedad. Los avances en hardware han permitido a los programadores

    crear software increblemente til. Algunas aplicaciones que son ficcin para el maana

    son: La sociedad sin efectivo, autopistas inteligentes y el cmputo autnticamente ubicuo:

    no llevar computadoras por que ellas estarn disponibles en donde sea.

    En la dcada de los 1960s y 1970s, una restriccin primaria sobre el rendimiento del cmputo fue el tamao de la memoria de las computadoras. Los programadores obedecan a

    un credo simple: Al minimizar el espacio de memoria se hacen programas ms rpidos. En

    la ltima dcada, los avances en el diseo de las computadoras y en la tecnologa de las

    memorias han reducido la importancia de la memoria pequea.

    Los programadores interesados en el rendimiento ahora necesitan entender los tpicos que

    han reemplazado al modelo simple de memoria de los 1960s: La naturaleza jerrquica de las memorias y la naturaleza paralela de los procesadores. Los programadores que busquen

    construir versiones competitivas de compiladores, sistemas operativos, bases de datos, etc.,

    debern contar con conocimientos de la organizacin de las computadoras.

    1.2 Abstracciones en software

    Tanto en Hardware como en software encontramos abstracciones, es decir, un conjunto de

    capas jerrquicas donde la capa de un nivel mas bajo oculta detalles a la capa siguiente.

    El principio de abstraccin es la forma en que los diseadores de hardware y software se las

    arreglan con la complejidad de los sistemas de cmputo.

    Para entender las abstracciones existentes en software, primeramente explicaremos lo que

    hay debajo de un programa.

    Para hablarle a una mquina electrnica, sera necesario enviarle seales elctricas. Las seales que las mquinas entienden fcilmente son encendido y apagado, de modo que el alfabeto de las mquinas solo se forma por dos letras. As como las 27 letras del alfabeto

    espaol no nos limitan cuanto puede ser escrito, con las dos letras del alfabeto de las

    computadoras no les establece un lmite de lo que se puede hacer con ellas. Los dos

    smbolos para estas dos letras son los nmeros 0 y 1, por lo que comnmente consideramos

    como el lenguaje de las mquinas a los nmeros en base 2, o nmeros binarios. A cada

    letra la referimos como un dgito binario o bit.

    Las computadoras obedecen nuestros comandos; y el nombre de un comando individual se

    denomina instruccin. Las instrucciones son una secuencia de bits que la computadora

    entiende, pueden ser pensadas como nmeros. Por ejemplo, los bits:

  • 1000110010100000

    Le dicen a una computadora que sume dos nmeros. Un fundamento del cmputo es el uso

    de nmeros para instrucciones y datos, esto se revisar con mayor detalle en la Unidad 2.

    La programacin de computadoras con nmeros binarios es bastante tediosa y expuesta a

    errores, por lo que fue necesaria la invencin de nuevas notaciones ms cercanas a la forma

    de pensar de los humanos. Las primeras notaciones se traducan a mano, pero los pioneros

    de la computacin se preguntaron Por qu no utilizar a la mquina para programar a la

    mquina?, Pronto se crearon programas encargados de traducir de notacin simblica a

    binario. Al primero de estos programas se le denomin ensamblador. Por ejemplo, para

    sumar dos nmeros el programador escriba en notacin simblica:

    add A, B

    y el ensamblador lo trasladara a

    1000110010100000

    El nombre acuado para este lenguaje simblico, an usado actualmente, es lenguaje

    ensamblador.

    Sin embargo el lenguaje ensamblador an se encuentra lejos de la forma de pensamiento

    humano, y aunque es fcilmente entendible para los profesionistas dedicados a la

    computacin, no es un lenguaje que permita a los fsicos expresar el comportamiento de un

    fluido o a los contadores organizar sus libros de balances. El lenguaje ensamblador requiere

    que el programador escriba una lnea por cada instruccin que la mquina ejecutar,

    forzando al programador a pensar como la mquina.

    Una simple pregunta se hicieron los pioneros de la computacin: Si fue posible construir un

    programa que traslade de notacin simblica a instrucciones binarias, para simplificar la

    programacin Qu impide la creacin de un programa que traduzca de un lenguaje ms

    cercano al pensamiento humano a lenguaje ensamblador?, la respuesta fue: Nada. A estos

    programas se les conoce como compiladores y a los lenguajes que ellos compilan se les

    conoce como lenguajes de programacin de alto nivel. En un lenguaje de alto nivel el

    programador escribira la expresin:

    A + B

    El compilador debera compilar la instruccin a lenguaje ensamblador:

    add A, B

    Y el ensamblador lo traducira a :

    1000110010100000

  • En la figura 1 se muestra la relacin entre estos programas y lenguajes.

    Fig. 1 Programa en C compilado al Lenguaje ensamblador y despus ensamblado a lenguaje de mquina binaria.

    Los lenguajes de programacin de alto nivel ofrecen diferentes beneficios: Primero,

    permiten al programador pensar en un lenguaje ms natural, usando palabras en ingles y

    notacin algebraica. Ms an, los lenguajes se han diseado de acuerdo a su uso inherente,

    as Fortran fue creado para cmputo cientfico, Cobol para procesamiento de datos de

    negocios, Lisp para manipulacin simblica, etc.

  • La segunda ventaja es que se mejora la productividad del programador, por que para

    expresar una idea se escriben menos lneas en un lenguaje de alto nivel, en lugar de

    expresar la idea en lenguaje ensamblador.

    La ventaja final es que estos lenguajes de programacin permiten a los programas ser

    independientes de la computadora en la cual fueron escritos, dado que los compiladores y

    ensambladores pueden trasladar los programas en lenguajes de alto nivel a instrucciones

    binarias de cualquier mquina.

    Estas tres ventajas son tan fuertes que actualmente poca programacin se escribe en

    lenguaje ensamblador. Cuando un programador escribe un programa en un lenguaje de alto

    nivel, puede olvidarse de lo que hay por debajo, es decir, puede ignorar la notacin del

    lenguaje ensamblador, y mejor an, puede ignorar el cdigo binario, en otras palabras, esta

    utilizando una abstraccin.

    Como era natural, los programadores notaron que el reutilizar al software es ms eficiente

    que iniciar con un programa desde cero. Por ello los programadores hacen uso de varias

    rutinas que se encuentran en diferentes libreras. Una de las primeras libreras contena

    rutinas de entrada y salida de datos, la cual inclua, por ejemplo, rutinas para controlar

    impresoras, que aseguraban que la impresora tuviera papel antes de iniciar la impresin. Tal

    software controlaba dispositivos de entrada y salida como discos magnticos, cintas

    magnticas y pantallas de video.

    Pronto se descubri que los programas se ejecutaban en forma eficiente si exista otro

    programa encargado de supervisar su ejecucin. Cuando terminaba una tarea, el programa

    supervisor iniciaba con la siguiente, evitando prdidas de tiempo. Estos programas

    supervisores tambin incluan libreras con rutinas de entrada/salida, y son la base de los

    sistemas operativos actuales. Los sistemas operativos son programas que administran los

    recursos de una computadora para el beneficio de los programas que corren en esa

    mquina.

    Puede notarse que desde el momento que se carga al sistema operativo, el usuario de

    computadoras trabaja sobre una abstraccin, puesto que todos sus programas trabajan sobre

    una plataforma establecida, de la cual el programador puede ignorar los detalles que hay

    por debajo.

    Otra abstraccin la encontramos en la clasificacin del software. El software se clasifica

    por su uso, al software que proporciona servicios que son comnmente tiles se le llama

    Software de Sistema, los sistemas operativos, compiladores y ensambladores son ejemplos

    de software de sistemas; son programas de inters para los programadores. En contraste, al

    software dedicado a resolver problemas especficos de los usuarios se le denomina Software

    de Aplicacin. Por ejemplo, editores de textos, programas de dibujos, etc. En la figura 2 se

    muestra al software organizado como capas jerrquicas, mostrando el mbito donde cada

    capa se desenvuelve. El usuario de computadoras slo se concreta en aplicaciones e ignora

    al software del sistema. Mientras que el programador puede abarcar las dos capas ms altas

    e ignorar lo que hay en el hardware. Por lo tanto, nuevamente tenemos abstracciones.

  • Fig. 2 Una vista simplificada del Hardware y Software como capas jerrquicas

    Fig. 3 Un ejemplo de la clasificacin del Software.

    La vista simplificada del software por capas genera algunos conflictos, por ejemplo en el

    caso de los compiladores, los compiladores son utilizados para producir programas, tanto

    aplicaciones como software de sistema. Sin embargo, cuando una aplicacin se esta

    ejecutando, ya no requiere del compilador. Por lo que el software de aplicaciones no puede

    estar como una capa monoltica ubicada sobre el software de sistemas. Para ello se han

    dado otro tipo de clasificaciones, como la que se muestra en la figura 3, no obstante, en esta

    nueva clasificacin para el software tambin se encuentran abstracciones.

  • 1.3 Abstracciones en hardware

    En hardware tambin encontramos abstracciones, un usuario de computadoras se olvida de

    las partes que componen a la computadora y la utiliza como un sistema conjunto, como una

    herramienta que le ayudar a resolver problemas diversos. En la figura 4 mostramos a una

    computadora tpica de escritorio con sus diferentes elementos: Teclado, ratn, pantalla,

    bocinas y el gabinete, que internamente contiene ms hardware.

    Fig. 4 Computadora tpica de escritorio.

    Sin embargo, usuarios ms avanzados podran abrir el gabinete, para encontrar mas

    elementos de hardware: La tarjeta madre (una tarjeta verde con diferentes elementos

    conectados), el disco duro, la unidad de disco flexible, la unidad de disco compacto, la

    fuente de alimentacin y los cables de conexiones.

    El ensamblador de computadoras puede olvidarse de lo que contiene cada uno de estos

    elementos y utilizarlos para ensamblar una computadora, es decir, el ensamblador de

    computadoras trabaja sobre otro conjunto de abstracciones.

    Pero podramos ir observando con mayor detalle a los elementos que estn dentro del

    gabinete, por ejemplo a la tarjeta madre, sta contiene diferentes elementos: Al procesador

    (o CPU), la DRAM, la ROM, puertos, etc. En la figura 5 se muestra la organizacin tpica

    de una tarjeta madre de una PC.

  • Fig. 5 Tarjeta madre de una PC.

    El procesador es la parte activa de la tarjeta madre, sigue las instrucciones de un programa

    al pie de la letra. Suma nmeros, prueba nmeros, activa seales de dispositivos de I/O, etc.

    Los programas se almacenan en memoria secundaria (disco magntico o disco compacto) y

    para su ejecucin deben ser transferidos a memoria principal (la DRAM).

    No es el objetivo de esta seccin explicar detalladamente el funcionamiento de los

    elementos que integran a la tarjeta madre, pero basta explorar un poco para encontrar mas

    detalles de funcionamiento, es decir, revisar un nivel jerrquico mas bajo.

    Como muestra, exploremos un poco al procesador (tpicamente conocido como CPU). El

    procesador Pentium de Intel contiene las unidades funcionales siguientes: El camino de los

    datos -para enteros y punto flotante-, el control, la memoria cach para instrucciones y datos-, y el control de los saltos. En la figura 6 se muestra la distribucin es estos bloques

    funcionales.

    El rea del chip es de 91 mm2 y contiene cerca de 3.3 millones de transistores; la memoria

    cach ocupa al menos 1 milln de transistores.

    Es conveniente notar que al hacer referencia a los bloques funcionales y no a las

    compuertas lgicas, o directamente al nmero de transistores, se estn utilizando ms

    abstracciones.

    Los circuitos integrados son una de las abstracciones ms importantes de la electrnica, por

    debajo de un circuito integrado se oculta todo el proceso que requiere para su fabricacin,

    desde que se toma una barra de silicio hasta que se empaquetan los chips. En la figura 7 se

    muestra en forma representativa el proceso de manufactura de los chips. Proceso que los

    ingenieros en electrnica pueden ignorar en el momento en que desarrollan aplicaciones.

  • Fig. 6 Dentro del procesador Intel Pentium.

    Y an llegando al silicio encontramos algunas abstracciones que nos ocultan las

    propiedades fsicas de este elemento o bien de las impurezas que se le agregan para formar

    los diferentes materiales.

    Fig. 7 Proceso de manufactura de los circuitos integrados.

  • En conclusin, el desarrollo de hardware y software est lleno de abstracciones; y entre

    todas ellas existe una que es de inters para este curso (y en general para los desarrolladores

    de computadoras). La abstraccin de inters es aquella en la que el hardware se relaciona

    con el software de bajo nivel y se denomina: Arquitectura de un repertorio de instrucciones

    o simplemente Arquitectura de una computadora.

    La arquitectura establece los principios sobre los cuales se disea una computadora: Su

    repertorio de instrucciones, el tamao de los datos, el nmero de registros, etc. Comprende

    los aspectos que el programador debe conocer al momento de desarrollar aplicaciones.

    A la forma en que se implementar una arquitectura se le conoce como Organizacin. Ante

    una misma Arquitectura se pueden tener diferentes estilos de organizacin, que pueden

    variar en costo y rendimiento. Con ellas se forma una familia de computadoras.

    Un problema de arquitectura sera determinar si se incluye o no una instruccin de

    multiplicacin. Un problema de organizacin sera determinar si una instruccin de

    multiplicacin se realiza por hardware o con una rutina de software basada en sumas.

    En particular en este curso se revisar una arquitectura, la arquitectura MIPS y sobre ella se

    revisarn tres implementaciones diferentes y se revisar como estas implementaciones

    varan en rendimiento, pero ejecutan el mismo software.

    Como una abstraccin se representa a la computadora con cinco componentes clsicos:

    Entradas, salidas, memoria, camino de los datos y control, los ltimos dos componentes se

    combinan y se les conoce como procesador. Esta representacin se muestra en la figura 8 y

    es una representacin estndar, independientemente de la tecnologa. Los diferentes

    elementos de una computadora actual o del pasado, caen dentro de alguna de estas

    categoras. El curso se enfocar hacia el procesador, buscando entender la relacin que

    existe entre la organizacin y el rendimiento.

    Memoria

    Entrada

    Salida

    Procesador

    Control

    Caminode losdatos

    Fig. 8 Cinco componentes clsicos de una computadora.

  • TAREA 1

    1.- Si la industria del transporte hubiera evolucionado al paso que la industria de la

    computacin Cul sera el costo aproximado de un automvil y cual sera su velocidad

    mxima?

    Investigar el costo y velocidad aproximada del primer automvil y de la primera

    computadora electrnica (en la computadora consideremos el nmero de instrucciones por

    segundo) y de acuerdo a las caractersticas de las nuevas computadoras estimar las

    caractersticas que debera tener el automvil, asumiendo la misma evolucin.

    2.- Explica con tus propias palabras que es una abstraccin, y en un par de objetos de la

    vida diaria (automvil, casa, televisin, etc.), explica el uso de abstracciones.

    3. Describe la diferencia entre Arquitectura y Organizacin, investigue cual sera un

    problema de arquitectura y como se reflejara en un problema de organizacin.

    4. Indique a que trmino se refiere cada una de las siguientes descripciones:

    ________________: Parte activa de una computadora que sigue las instrucciones de un

    programa al pie de la letra: suma nmeros, examina nmeros, etc.

    ________________: Refiere a un sistema formado por capas jerrquicas, en las que cada

    capa de nivel inferior oculta detalles de la capa de nivel superior. Aplicable en HW y

    SW.

    ________________: Coleccin de implementaciones de la misma arquitectura del

    repertorio de instrucciones que estn disponibles a la vez y varan en precio y

    rendimiento.

    ________________: Localizacin de los programas cuando se estn ejecutando, tambin

    contiene los datos que necesitan.

    ________________: Programa que gestiona los recursos del computador en beneficio de

    los programas que corren en esa mquina.

    ________________: Programa que traduce una versin simblica de una instruccin a la

    versin binaria.

    ________________: Programa que traduce una notacin de ms alto nivel al lenguaje

    ensamblador.

    ________________: Oculta todo un proceso de manufactura y son una de las principales

    abstracciones en Hardware.

    5. Realice un resumen de caractersticas en las diferentes generaciones de computadoras

    haciendo referencia al hardware y software.

  • 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 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:

    En el caso 1 se reduce el tiempo de respuesta y con ello es posible realizar ms tareas en

    menos tiempo, por lo tanto, tambin se puede mejorar la productividad.

    En el caso 2, ninguna tarea se realizar de manera ms rpida, de manera que solo se

    incrementa la productividad. Sin embargo, si la demanda para el procesamiento es tan

    grande como para que el sistema requiera de una cola de tareas, tambin podra 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 y 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 n veces ms rpida que Y

    significa

    Tiempo de ejecucin Y = n

    Tiempo de ejecucin X

  • 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:

    n =

    Tiempo de Ejecucin Y =

    1

    =

    Rendimiento X Rendimiento Y

    Tiempo de Ejecucin X 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 ms rpida A que B?

    Respuesta:

    Si A es n veces ms rpida que B significa que:

    nORENDIMIENT

    ORENDIMIENT

    B

    A

    o

    nEJECUCINDETIEMPO

    EJECUCINDETIEMPO

    A

    B

    __

    __

    De manera que la razn de rendimiento es: 15/10 = 1.5, y por lo tanto, A es 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, ms adelante se ver que no es as. Porque para una misma arquitectura se

    analizaran tres diferentes tipos de implementaciones, y el objetivo en cada nueva

    implementacin ser incrementar 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 la 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 la 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

  • %6565.0159

    9.127.90

    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 Tiempo de 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, perodo 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:

    2.12

    4.2

    __

    __

    I

    I

    EJECUCINDETIEMPO

    EJECUCINDETIEMPO

    ORENDIMIENT

    ORENDIMIENT

    A

    B

    B

    A

    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:

    Ciclos de reloj de CPU = n

    i

    ii ICCPI1

  • 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:

    Tiempo de CPU = n

    i

    ii ICCPI1

    Duracin del ciclo de reloj

    y el CPI global como:

    CPI =

    n

    i

    ii ICCPI1

    = n

    i

    iCPI1

    (

    ICi

    )

    Recuento de Instrucciones Recuento de instrucciones

    La ltima forma del clculo de CPI multiplica cada CPIi individual por la fraccin de

    ocurrencias en un programa. Para resultados ms reales, el CPIi debera 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:

  • Ciclos de reloj de CPU = n

    i

    ii ICCPI1

    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 se definen como:

    MIPS = Recuento de Instrucciones

    = Frecuencia de reloj

    Tiempo de ejecucin x 106

    CPI x 106

    Algunos encuentran adecuada la frmula de 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. Se emplean ms ciclos de reloj por instruccin en

    punto flotante que por instruccin entera. Si un programa realiza las operaciones de punto

    flotante por hardware, emplear menos tiempo que otro que utiliza rutinas basadas en

    enteros, pero tendr una menor frecuencia de MIPS. Las instrucciones que operan en

    enteros son ms simples, dando como resultado una mayor frecuencia de MIPS, aunque su

    tiempo global de ejecucin sea mayor.

    Estas anomalas pueden verse 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 Frecuencia de una

    instruccin

    Ciclos de reloj por

    instruccin (CPI)

    Operaciones de ALU 43 % 1

    Cargas 21 % 2

    Almacenamientos 12 % 2

    Saltos 24 % 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:

    CPI = n

    i

    ii ICCPI1

    /Recuento de Instrucciones

  • Aunque se desconoce el total de instrucciones, esto no importa porque 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 = Tiempo referencia

    x MIPS referencia Tiempo M

    Donde:

    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 ms 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 si, las ediciones ms modernas del compilador y sistema operativo

    deberan ejecutarse en la mquina ms antigua, o si este software deba 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

    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. Por ello, los MFLOPS no son una medida til para todos los

    programas.

    El trmino MFLOPS est basado en operaciones en lugar de instrucciones, esto para que

    sea 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 de datos, 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 especificar las

    entradas o salidas, sin describir las versiones de los sistemas operativos y compiladores.

  • 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 un 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 (Coleccin de SPEC)

    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.

    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

    Ms 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 con la mejora

    Rendimiento de la tarea sin la mejora

    Alternativamente:

    Aceleracin de rendimiento =

    Tiempo de ejecucin sin utilizar la mejora

    Tiempo de ejecucin utilizando la mejora

    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:

    Fraccinmejorada: La fraccin del tiempo en que se puede 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 es siempre menor o igual a 1.

    Aceleracinmejorada: La optimizacin lograda con el modo de ejecucin mejorado; es decir, cunto ms rpido se ejecutara la tarea si solamente se utilizase el modo

    mejorado. Es la relacin del tiempo del modo original con respecto al tiempo del modo

  • mejorado, si para una porcin de un programa el modo mejorado toma 2 segundos,

    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.

    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

    mejorada

    mejorada

    mejoradanAceleraci

    FraccinFraccin1

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

    Aceleracin global =

    Tiempo de ejecucin antiguo

    =

    1

    Tiempo de ejecucin nuevo mejorada

    mejorada

    mejoradanAceleraci

    FraccinFraccin1

    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 Tiempo en S1 Tiempo en S2

    1 10 segundos 5 segundos

    2 3 segundos 4 segundos

    Se dice que una mquina es ms efectiva en costo que otra si la razn rendimiento/costo

    es mayor.

    a. Un usuario slo se interesa por el rendimiento del programa 1. Qu mquina es ms efectiva en costo para correr slo el programa 1? En cunto?

    b. Otro usuario est preocupado por la productividad de los sistemas 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 costo 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 Instrucciones ejecutadas en S1 Instrucciones ejecutadas en S2

    1 20 x 106 16 x 10

    6

    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 Frequency Cycles

    Loads & Stores 30% 6 cycles

    Arithmetic instructions 50% 4 cycles

    All others 20% 3 cycles

    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) ?