Sei sulla pagina 1di 28

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.

Entrada

Control
Camino
de los
datos

Memoria
Salida

Procesador
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
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 ms rpida A que B?
Respuesta:
Si A es n veces ms rpida que B significa que:
RENDIMIENT O A
RENDIMIENT OB

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

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

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

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 =

CPI i
i 1

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 =

Duracin del ciclo de reloj

CPI i IC i
i 1

y el CPI global como:


n

CPI i

CPI =

IC i

i 1

Recuento de Instrucciones

ICi

CPI i

i 1

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

CPI i

IC i

i 1

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
43 %
21 %
12 %
24 %

Operaciones de ALU
Cargas
Almacenamientos
Saltos

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 =

CPI i IC i /Recuento de Instrucciones


i 1

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:
Rendimiento de la tarea con la mejora
Aceleracin de rendimiento =
Rendimiento de la tarea sin la mejora
Alternativamente:
Tiempo de ejecucin sin utilizar la mejora
Aceleracin de rendimiento =
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


Fraccinmejorada

1 Fraccinmejorada

Aceleracinmejorada

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

Tiempo de ejecucin antiguo


Aceleracin global =

1
=

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

Frequency
30%
50%
20%

Cycles
6 cycles
4 cycles
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) ?

Potrebbero piacerti anche