Sei sulla pagina 1di 19

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

1 PARALELISMO Y MEJORA DEL RENDIMIENTO


1.1 EVALUACION DEL DESEMPEO
El poder valorar el desempeo de un sistema de cmputo es necesario, en diferentes escenarios, para poder tomar decisiones. Por ejemplo, podramos querer determinar si un sistema existente es apto o cubre las necesidades de poder de cmputo de una aplicacin especfica. O podramos querer determinar si se requiere actualizar o ampliar sus capacidades. A nivel de diseo o de actualizacin de un sistema, es importante poder predecir el rendimiento que tendr el resultado final y as poder determinar si su ste ser adecuado para el objetivo previsto. De este anlisis se podrn tomar decisiones acerca de la vialidad del proyecto. As mismo, es indispensable poder comparar rendimientos de diferentes opciones al momento de seleccionar el mejor sistema de cmputo. Asimismo la evaluacin del desempeo nos permite analizar el rendimiento de un sistema y tomar acciones para su afinamiento. Para poder evaluar el desempeo de un computador y as poder compararlo respecto a otro necesitamos poder definir y medir su rendimiento. Pero, Qu queremos decir con rendimiento?, En base a qu parmetros podemos expresar o medir el rendimiento?, Cmo podemos establecer un mecanismo que me permita comparar dos computadoras? En esta unidad daremos respuesta a estas preguntas y definiremos un marco conceptual que nos permita en trminos generales evaluar el desempeo de los equipos de cmputo. Para poder cuantificar el rendimiento, necesitamos determinar los factores que influyen en el desempeo del equipo de cmputo e identificar cul de estos es el determinante en el desempeo. Estos factores, por tanto deben ser medibles, directa o indirectamente. Es decir, deben representar magnitudes. Se denomina medida al valor de una magnitud obtenido mediante un instrumento de medicin confiable. Las magnitudes cuyas medidas se pueden considerar estndares para definir el desempeo se denominan mtricas. En muchos casos, pueden existir diferentes medidas de inters que pueden usarse para determinar el rendimiento. A manera de ejemplo, veamos algunas medidas de rendimiento de ciertos aviones:
Tabla 1.1. Cuadro comparativos de algunos aviones.

Aeroplano Boeing 737 - 100 Boeing 747 BAC/Sub Concord Douglas DC-8-50

Capacidad [Pasajeros]

Alcance [Millas]

Velocidad [M.p.h.]

Productividad [Pasajeros X Mph]

101 470 132 146

630 4,150 4,000 8,720

598 610 1,350 544

60,398 286,700 178,200 79,424

De esta tabla podemos concluir que el avin con ms velocidad es el Concord, el de mayor alcance es el Douglas DC-8 y que el Boeing 747 es el de mayor capacidad. As por ejemplo, para un pasajero adinerado que quiere transportarse de un lugar a otro distanciado 4,000 millas del primero, el Concord es el ms rpido. Pero si queremos movilizar 450 personas de una zona a otra distante las mismas 4,000 millas, entonces, el ms rpido es el Boeing 747. De manera anloga, el desempeo de un computador puede tener diferentes medidas de eleccin para diferentes usuarios. Para un usuario individual que est ejecutando un nico programa, la computadora con mayor rendimiento es aquella que complete la ejecucin de su programa en menor tiempo. Sin

Pgina 1

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

embargo, para el administrador de un centro de cmputos, que tiene mltiples tareas que realizar a la vez, la de mayor rendimiento es la que le realice ms tareas en menor tiempo. Como elemento comn, sin embargo, se evidencia que la medida del rendimiento del computador es el tiempo. La computadora que ejecute los programas en menor tiempo es la que tiene mejor rendimiento.

1.1.1

Medida de rendimiento

La medida del rendimiento de inters en la computadora es el tiempo. Sin embargo, podemos identificar diferentes medidas de tiempo. Por ejemplo, el tiempo de ejecucin de programas por parte del CPU, puede descomponerse en tiempos de usuario (en que ejecuta los programas de los usuarios) y el tiempo de sistema operativo. Tambin podemos identificar otros tiempos que estn ligados con los otros componentes del sistema de cmputo: el tiempo requerido para realizar intercambio de datos con la memoria o con diferentes dispositivos de entrada-salida que tienen muy diversas velocidades. Dadas las diferencias e inexactitudes que considerar todos los tiempos posibles, puede acarrear, se toma como la medida de rendimiento ms adecuada del computador al tiempo de ejecucin t de un programa por parte del CPU.

1.1.2

Mtricas de desempeo

Para poder evaluar el desempeo de un sistema de cmputo y poder comparar dos sistemas en funcin de su rendimiento, necesitamos establecer mtricas que nos permitan estandarizar las medidas que emplearemos para tales fines. Una mtrica es un criterio para evaluar el desempeo de un sistema de cmputo de forma general, de manera que mediante el valor de tal mtrica podamos comparar dos sistemas dismiles. Todas las mtricas de desempeo estn basadas en el comportamiento del sistema durante el tiempo, dado que el tiempo es la medida bsica de rendimiento. Existen tres clases de mtricas que pueden denominarse externas, pues pueden percibirse por un usuario o entidad externa al sistema medido: Latencia o tiempo de respuesta. Productividad Disponibilidad

Existe una cuarta clase de mtrica de tipo interna o que se percibe desde dentro del sistema. Es la mtrica de utilizacin. Esta ltima es de vital importancia para entender el sistema y predecir su desempeo en condiciones especficas. La latencia es una medida del tiempo que el sistema tarda en producir resultados. Esta mtrica puede conducir a diferentes medidas de tiempo en dependencia del contexto, por ejemplo, en la evaluacin del desempeo del CPU, tenemos los ciclos de reloj requeridos para completar un programa, el ancho del pulso o perodo del reloj del CPU, etc. En la evaluacin del rendimiento de la memoria, tenemos como mtrica el tiempo de acceso a una celda. La productividad o throughput () como mtrica de rendimiento, es la cantidad de trabajos o tareas completadas por unidad de tiempo. A diferencia del tiempo de ejecucin que mide directamente el rendimiento del CPU, la productividad depende de diferentes factores externos y circunstanciales (acceso a disco, algoritmo de scheduling, entre otros) y mide un rendimiento ms global del sistema.

Pgina 2

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

La disponibilidad mide cunto tiempo un sistema se mantiene en operacin normal del tiempo total requerido. La utilizacin es el fragmento de tiempo que un componente del sistema (CPU, disco, memoria, etc) est activo para su utilizacin o contribuye al trabajo. La utilizacin se tasa en el rango entre 0 y 1 o como porcentaje. La productividad mxima de un sistema se alcanza cuando el componente ms ocupado logra una utilizacin de 1 100%. Aunque las mtricas nos permiten contar con un criterio de comparacin genrico, muchas veces es difcil definir mtricas que sean efectivas 100% o estn libres de errores en los procedimientos o casos de aplicacin. 1.1.3 Consideraciones de efectividad-costo

En la evaluacin de computadoras, sobre todo con fines econmicos o financieros, tambin incluye consideraciones de costos. Normalmente interesa el costo de produccin o adquisicin, la tasa de retorno de la inversin (ROI) y el costo total de pertenencia (TCO). La historia muestra proyectos costosos, como Cray, donde se busca a ultranza lograr el mayor poder de clculo con el mejor rendimiento. En estos casos, el costo no se consider como una mtrica de decisin para la implementacin del proyecto. En el otro extremo tenemos a los proyectos de soluciones SOHO genricos, donde el menor precio posible es la meta. Aunque el rendimiento s cuenta, se puede renunciar a ciertos beneficios en funcin de obtener un equipo de bajo costo para un mercado con baja exigencia. Quizs el mayor trabajo para el arquitecto o diseador consiste en alcanzar el mayor rendimiento posible al menor costo. Aunque en este curso nos limitaremos a la evaluacin del desempeo ms que a la determinacin de costos y su contrastacin con los beneficios, s haremos nfasis, en donde sea pertinente, en aquellas tcnicas que permitan aminorar el costo de los sistemas sin sacrificar la eficiencia. 1.1.4 Tcnicas de anlisis de desempeo

Las tcnicas de anlisis del desempeo de la ejecucin de computadoras se pueden clasificar en cuatro grandes bloques: Medicin del desempeo (benchmarking) Modelado analtico Modelado por simulacin Modelado hbrido

Las tcnicas analticas y de simulacin, requieren la construccin de un modelo: una representacin abstracta del sistema real. Un modelo analtico de la ejecucin es una estructura matemtica, mientras que un modelo por simulacin requiere del soporte de un programa de computadora especializado. La mayor parte del arte en anlisis de la ejecucin queda en seleccionar a un buen modelo que integre los aspectos ms sobresalientes del sistema, eliminando toda la masa de detalles no pertinentes que puedan ocultar lo esencial del mismo.

Pgina 3

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

La tercera tcnica, medida de la ejecucin, no usa modelos, pero en cambio se sustenta en la observacin directa y en la recoleccin de valores del sistema de inters, o un sistema similar. Esta tcnica incluye la eleccin de mtricas y sus medidas a emplear para caracterizar el sistema y el uso de benchmarks o programas que sirvan como carga de trabajo e instrumento de medicin. Ninguna tcnica es mejor en todos los casos. Los modelos analticos y de simulacin predominan en escenarios donde no contamos con el sistema vivo o un prototipo del mismo. Cuando queremos determinar el desempeo de un sistema existente, la tcnica de medicin de la ejecucin es lo ms indicado. En nuestro curso emplearemos sobre todo, mtodos analticos muy simples y genricos partiendo desde la ptica del diseador que pretende logra un mejor desempeo de un sistema proyectado ms que desde la ptica de evaluar un sistema existente.

1.1.5

Rendimiento:

Dado que la medida de rendimiento es el tiempo, podemos decir que el Rendimiento (R) es el recproco del tiempo de ejecucin (t):

R = 1 t
Con esta medida, ya podemos comparar dos computadoras. Sean Rx el rendimiento de la primera y Ry el de la segunda, podemos decir que:

Rx > Ry 1 > 1 ty > tx tx ty


Y podemos cuantificar la relacin entre ellas: qu tanto ms rinde X sobre Y con la razn siguiente:

Rx = n Ry
Donde n es cantidad de veces que X tiene mayor rendimiento que Y. En dependencia del contexto, n se conoce como ganancia G (si X es un reemplazo de Y) o como aceleracin (A) o mejora de rendimiento (si X es una evolucin de la misma arquitectura de Y). Por ejemplo, si una mquina A ejecuta un programa en 10s y una mquina B en 15s. Qu tanto mayor es el rendimiento de la mquina A sobre el de la mquina B?

n = tb / ta = 15 s / 10 s = 1.5
El rendimiento de A es 1,5 veces el de B.

Esta razn es adecuada como base de comparacin respecto a la unidad, sin embargo, a veces queremos saber en cunto supera una a la otra, es decir, el incremento neto de rendimiento:

n = n 1

Pgina 4

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

O mejor an, en qu porcentaje la una supera a la otra:

n% = ( n 1) * 100%
As el incremento porcentual del rendimiento de X sobre Y, puede expresarse como:

Rx - Ry n% = Ry
De donde podemos deducir que A es 50% ms rpida que B. Queda como tarea al lector interesado demostrarlo. Una vez definida una metodologa para comparar rendimientos de dos computadoras mediante su tiempo de ejecucin, es importante definir qu mtricas o caractersticas bsicas intervienen en la definicin de esta medida. 1.1.6 Factores que determinan el tiempo de ejecucin

* 100%

Los factores que inciden en el tiempo de ejecucin de un programa son: la frecuencia f del procesador y la cantidad de ciclos c que transcurren desde que el programa inicia hasta que concluye, puesto que si podemos determinar ambas podremos determinar el tiempo de ejecucin. La frecuencia define el ancho del pulso o perodo de reloj. Cabe mencionar que este perodo se define en tiempo de diseo para ser suficientemente ancho a fin de permitir que todas las operaciones de control requeridas por cualquier paso de control puedan realizarse sin problemas en ese intervalo de tiempo. As:

f = 1/ y t t=c*

Donde la constante c representa el total de ciclos de reloj que se requiri para ejecutar el programa. Con estas nuevas relaciones, podramos obtener informacin para comparar dos computadoras en funcin de su frecuencia. Por ejemplo, suponga que la mquina A ejecuta un programa p en 10s y su CPU tiene una frecuencia de reloj de 100MHz. Usted est diseando una mquina B y quiere que sta ejecute p en solamente 6 segundos aunque sabe que para ello requiere una mayor frecuencia de reloj y como consecuencia, sern requeridos 20% ms de ciclos para completar p. Qu frecuencia debe tener B para lograr el objetivo?

ta = ca / fa ca = ta * fa cb = 1.2 * ca = 1.2 * ta * fa fb = cb / tb = (1.2 * ta * fa) / tb

Pgina 5

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

fb = (1.2 * 10s * 100MHz) / 6s = 200 MHz


1.1.7 Ley de Amdahl

Hemos obtenido expresiones que nos permiten relacionar el rendimiento de dos mquinas. Cuando el rendimiento de una es mayor que el de la otra como efecto de introducir una mejora, decimos que tenemos una aceleracin de rendimiento. Es importante recalcar, sin embargo, que la aceleracin global del sistema estar limitada por la fraccin de tiempo en que dicha mejora es efectiva. Es decir, no podemos esperar que el sistema global acelere al doble si la mejora, que incrementa el rendimiento al doble, solo es capaz de funcionar cierto porcentaje de tiempo. Por ejemplo, supongamos que aumentamos la frecuencia de un CPU al doble, podra esperarse reducir el tiempo de ejecucin global a la mitad. Sin embargo, si en cada ciclo de instruccin se pierde mucho accediendo datos de la memoria, la mejora global alcanzada no ser del doble, sino menor. La ley de Amdahl nos permite cuantificar la aceleracin global neta de un sistema donde se ha introducido una mejora que es efectiva solo una fraccin de tiempo de trabajo del sistema, es decir, nos permite cuantificar el rendimiento en funcin de la utilizacin: La aceleracin de rendimiento global neta obtenida de incorporar una mejora a un sistema equivale a la razn entre el rendimiento del sistema al ejecutar una tarea completa con la mejora, empleando esta todo el tiempo posible, sobre el rendimiento del mismo al ejecutar la misma tarea sin la mejora, por cuanto el efecto neto de la mejora est limitado por la fraccin de tiempo en que sta se puede usar

Ag = Rmejorado / Roriginal = toriginal / tcon mejora


Siendo tg el nuevo tiempo de ejecucin global del sistema al incorporar la mejora, t el tiempo de ejecucin original sin mejora, n la ganancia o aceleracin parcial que la mejora proporciona, y , la fraccin mejorada (utilizacin) o el porcentaje de tiempo real que la mejora es efectiva, entonces:

tg = ttramo en que la mejora es efectiva + ttramo sin mejora

tg =
y:

* + t * (1 ) = t * (1 ) + n n
Ag = t tmejorado = 1 (1 ) +

As por ejemplo, si una mquina se mejora duplicando la frecuencia del CPU, pero la mejora solo es efectiva durante el 60% del ciclo de instruccin por el acceso a memoria, la aceleracin global del sistema sera:

Pgina 6

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

Ag = 1 / 0.4 + (0.6/2) = 1/ 0.7 = 1.43 Nota: = 0.6 y n = 2 La ley de Amdahl nos conduce a un importante principio de diseo: Acelerar el caso comn.

1.1.8

Clculo del tiempo de Ejecucin

Hemos determinado que el tiempo de ejecucin depende netamente del total de ciclos requeridos para ejecutar el programa por el perodo o duracin del ciclo. Ahora analizaremos ms a fondo cmo obtener el total de ciclos del programa. Sabemos que en definitiva, un programa es una serie de instrucciones a ejecutar. Cada una de estas instrucciones consume una cantidad de ciclos para completarse, por tanto, la cantidad total de ciclos que emplea una mquina para ejecutar un programa depende de la cantidad total de instrucciones que se ejecutan:

t = * Ci
i =1

Donde ci es la cantidad de ciclos de la i-sima instruccin, y N es el total de instrucciones ejecutadas en el programa. Si analizamos bien el programa, determinamos que existen grupos de instrucciones que consumen la misma cantidad de ciclos de reloj, y por tanto, podemos detallar el factor sumatoria de la expresin anterior como:

t = *cj *nj
j =1
Donde nj representa la cantidad de instrucciones del j-simo grupo y cj es la cantidad de ciclos de reloj que requiere una instruccin del j-simo grupo para ejecutarse. Sabemos del diseo del conjunto de instrucciones que en algunas arquitecturas, todas las instrucciones tienen la misma cantidad de ciclos de reloj. En este caso, la ecuacin anterior tendra un solo grupo donde el factor c1 se convierte en una constante a la que llamaremos CPI (siglas de Ciclos Por Instruccin) y el factor n1 en el total de instrucciones N. En algunas arquitecturas, incluso es permisible hacer:

CPI =

c
i =1

Siendo ci la cantidad de ciclos de la instruccin i-sima del conjunto de instrucciones I de la arquitectura en cuestin. Es decir, se utiliza como CPI el promedio de ciclos de las instrucciones. Al contar con un CPI constante, entonces el tiempo de ejecucin t se puede definir como:

Pgina 7

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

t = * CPI * N =

CPI * N f

Donde CPI es la cantidad de ciclos por instruccin, N es el total de instrucciones ejecutadas, es el perodo de reloj y f es la frecuencia.

1.1.9

Mtricas populares de rendimiento

Se han propuesto una serie de medidas de rendimiento populares en el intento de crear una mtrica estndar de rendimiento que nos permita comparar dos computadores cualesquiera. Este es un esfuerzo enorme porque la meta es ambiciosa y difcil de alcanzar. Y aunque, como resultado de los mismos se han propuesto una serie de mtricas simples que se han empleado ampliamente, stas tienen un contexto de aplicacin limitado y son susceptibles a errores de utilizacin. 1.1.9.1 MIPS

Una mtrica muy difundida es la velocidad o frecuencia de ejecucin de instrucciones que es una mtrica del tipo productividad que normalmente se expresa en millones de instrucciones por segundo o MIPS. En trminos del tiempo de ejecucin la velocidad de ejecucin de instrucciones equivale a la cantidad total de instrucciones ejecutadas sobre el tiempo total de ejecucin. Se emplea el mltiplo millones (dividiendo entre 10 a la 6) para obtener el resultado en un nmero ms legible.

MIPS =

N f = 6 t *10 CPI *10 6

Como MIPS es una frecuencia, expresa el rendimiento en proporcin inversa al tiempo lo cual es adecuado porque mayores MIPS indican mquinas ms rpidas. El problema con el uso de MIPS consiste en que si se emplea como mtodo comparativo, debe tenerse cuidado que las mquinas tengan caractersticas similares. Por ejemplo, un programa que emplea emulacin de las operaciones de punto flotante puede resultar con ms MIPS que una mquina que emplea una FPU aunque el tiempo de ejecucin del programa sea menor en la segunda, con lo cual el criterio MIPS nos conduce a un resultado equivocado. De manera similar, si el repertorio de instrucciones de ambas mquinas difiere, es posible que el resultado tambin sea equivocado. 1.1.9.2 MIPS relativos

Para atacar el problema de dos mquinas con repertorios muy diferentes, se propuso emplear la mtrica MIPS relativos que se refiere a los MIPS de esta mquina en comparacin con una mquina de referencia. Se meda el tiempo de ejecucin de un programa de prueba en la mquina a evaluar y se divida entre el tiempo de ejecucin del mismo programa en la mquina de referencia y finalmente se multiplicaba por los MIPS de la mquina de referencia, lo que nos permitira comparar dos mquinas respecto a una tercera.

Pgina 8

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

MIPS Re lativos =

treferencia tevaluando

* MIPS referencia

Nuevamente los problemas de esta mtrica son que evala el desempeo slo para ese programa especfico, puesto que se han demostrado resultados equvocos con otro tipo de programas. Adicionalmente, la dificultad de obtener una mquina de referencia adecuada con la misma carga de los sistemas operativos y compiladores hace casi imprctico este mtodo hoy da. 1.1.9.3 MFLOPS

Para atacar las deficiencias de MIPS, respecto a las diferencias en las operaciones de punto flotante, que son extensivamente usados en los mbitos de computacin cientfica, se propuso emplear los MFLOPS o Millones de Operaciones en Punto Flotante por segundo. Los megaflops se obtienen del cociente entre el total de operaciones en punto flotante de un programa sobre el tiempo de ejecucin por 10 a la 6:

MFLOPS =

O punto _ flo tan te t *10 6

Aunque est restringido a las operaciones en punto flotante, los MFLOPS son ms consistentes que los MIPS por cuanto la cantidad de operaciones no cambia de mquina a mquina. La problemtica que se presenta, sin embargo, es que los conjuntos de operaciones en punto flotante disponibles de mquina a mquina no son estndares y por tanto algunas operaciones se deben implementar en funcin de otras. Adicionalmente existen operaciones en punto flotante que son muy rpidas y otras muy lentas. 1.1.9.4 MFLOPS Normalizados

Para la solucin a los problemas de MFLOPS se ha propuesto el uso de los MFLOPS Normalizados. Este mtodo concede pesos relativos a cada tipo de operacin en punto flotante y permite adems considerar las operaciones enteras. Al asignar pesos mayores a las operaciones complejas se puede normalizar la diferencia de velocidades permitiendo comparar de manera ms equitativa de dos mquinas.

MFLOPS normalizados =

O * peso _ relativo
i

t *10

El problema de MFLOPS normalizados, consiste en que evala el rendimiento para ese programa tipo de prueba (benchmark) especfico y que aunque representa una opcin para comparar dos computadoras, no representa el rendimiento de la mquina. 1.1.9.5 Eleccin de programas de prueba o benchmarks

Para poder determinar los valores o medidas para evaluar una computadora segn tal o cual mtrica, se necesita establecer una carga de trabajo idnea. Esta carga de trabajo est compuesta por uno o ms programas tipo que permiten establecer una marca o benchmark de comparacin de esta computadora con otras. La eleccin de estos programas debe hacerse de forma cuidadosa de acuerdo a la actividad para la que est pensada la computadora.

Pgina 9

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

Existen cuatro tipos de Benchmarks de acuerdo a las tendencias que se han venido imponiendo: 1. Aplicaciones o Programas reales: Consiste en usar de carga de trabajo la aplicacin principal a emplear en el equipo especfico o programas tipo predefinidos como: Compiladores (GNU C), Procesadores de Texto (Tex) y Aplicaciones CAD (Spice). 2. Ncleos o Kernels: Emplea extracciones de secciones de cdigo importante de programas reales usadas para evaluar rendimiento, por ejemplo Livermore Loop y LinPack. 3. BechMarks Reducidos o Toys: Emplean rutinas pequeas (10100 lneas) con resultados conocidos. Se introducen y ejecutan fcilmente en computadores para medir su desempeo. Ejemplo: QuickSort, Puzzle. 4. BechMarks Sintticos: Anlogos a la filosofa de los Ncleos. Se crean mezclas de diferentes rutinas de programas reales o inventados por el diseador del benchmark. Determinan frecuencia media de operaciones y acceso a operandos en diferentes escenarios de cmputo. No calculan algo que un usuario pueda utilizar solo pretende determinar un perfil medio de ejecucin que sirva de referencia para comparar con otras mquinas. Ejemplos de stos son: WhetStone y Dhrystone.

Pgina 10

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

1.2

REDUCCIN DEL TIEMPO DE EJECUCIN

Hemos determinado de qu factores depende el tiempo de ejecucin, de manera que si queremos reducirlo, habr que reducir aquellos factores que inciden en proporcin directa en el tiempo de ejecucin o incrementar los que lo hacen en proporcin inversa. Como es de esperarse, la interrelacin entre los mismos o las limitaciones fsicas o tecnolgicas frenarn la mxima aceleracin o mejora que pueda alcanzarse. 1.2.1 Reduccin del perodo de reloj.

La primera apuesta y la ms obvia apunta a reducir el perodo de reloj . Para lograr este cometido, sin embargo, puede ser necesario reimplementar la mquina completa por cuanto el perodo de reloj se decide en funcin de la mxima cantidad de pasos de control que se requieren ejecutar de una sola vez, as como la mxima duracin de stos. Las mejoras realizadas en este sentido, han implicado reducciones en el grosor de la oblea de silicio con que se fabrican los procesadores. A menor grosor, menor distancias a recorrer y por tanto menor tiempo de propagacin. Como ejemplo, la familia Intel x86 ha ido reduciendo significativamente el perodo de reloj (aumentando la frecuencia) del CPU:
Tabla 1.2. Frecuencias de CPUs ix86
CPU 8088, 8086 80186 80286 80386 80486 Pentium Pentium II Pentium III Pentium 4 f (MHz) Desde 1.7 1.7 4 25 33 66 266 450 1,300 Hasta 1.7 4 12 33 100 233 400 1,300 4,000

Desde 588.2 588.2 250.0 40.0 30.3 15.2 3.8 2.2 0.8

(ns) Hasta 588.2 250.0 83.3 30.3 10.0 4.3 2.5 0.8 0.3

1.2.2

Reduccin de la cantidad de instrucciones N.

La segunda lnea de accin para reducir el tiempo de ejecucin, consiste en reducir la cantidad de instrucciones de los programas. Durante los 50s y 60s, de hecho, prevalecieron los esfuerzos en este sentido. Los conjuntos de instrucciones se diseaban cada vez ms complejos de forma que el programador tuviera a disposicin diferentes formas de lograr la misma operacin. Una meta comn en estos esfuerzos fue el lograr la mayor ortogonalidad posible a fin que los programas pudieran ser ms compactos al permitir cualquier combinacin de operandos en las instrucciones. Posteriormente se encontr que esta direccin no llevaba a mejoras sustanciales por cuanto al complejizar las instrucciones fue requerido complejizar el hardware del CPU, sobre todo de la unidad de control. Como consecuencia, fue necesario un perodo de reloj ms ancho o mayor cantidad de ciclos para ejecutar las instrucciones. El surgimiento de la microprogramacin con la gran flexibilidad de diseo que sta proporcion a los arquitectos, propiciaron la propagacin de los conjuntos de instrucciones complejos, alentada por la

Pgina 11

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

asumpcin incorrecta que siempre el hardware es ms rpido que el software. Afortunadamente el avance de la tecnologa permiti mitigar el impacto de la introduccin de estos conjuntos de instrucciones complejos en el desempeo, al producirse hardware ms rpido. Posteriormente, el proyecto RISC, determin que ni los programadores ni los compiladores estaban sacando todo el provecho a las instrucciones complejas. Adicionalmente, se pudo comprobar que en muchos casos una sola instruccin compleja dilataba ms tiempo en ejecutarse que varias instrucciones ms simples que realizaban la misma operacin. Los hallazgos de RISC proponen que en muchos casos es ms eficiente un programa con mayor cantidad de instrucciones si el hardware del CPU que lo ejecuta puede simplificarse y acelerarse lo suficiente. Cabe mencionar que al momento que se introdujo RISC, se poda contar con muchos registros de propsito general en el CPU a bajo costo, lo cual no era posible antes y por tanto la mayora sino que todos los operandos residan en memoria principal, imponiendo un cuello de botella en la ejecucin.

1.2.3

Reduccin del CPI

Finalmente, tambin tenemos una importante posibilidad de mejorar el rendimiento al reducir el CPI por cuanto este es un factor entero que n-plica el tiempo de ejecucin. Imagine, reducir el CPI de 4 a 2, reducira categricamente el tiempo de ejecucin a la mitad. La idea comn en este sentido apunta a reducir el CPI a su mnima expresin, es decir, a 1. Obviamente tal propsito requerir un perodo de reloj muy ancho as como reducir al mximo los cuellos de botella (acceso a memoria y entrada-salida). Como actividad prctica, proponemos identificar qu tan eficiente es el procesador simple basado en un bus comn estudiado en los cursos anteriores. Identificar las limitantes de diseo que inciden en su desempeo y proponer un diseo mejorado que permita reducir el tiempo de ejecucin.

1.2.4

Consecuencias de la ley de Amdahl

Hemos estudiado los factores de los cuales depende el rendimiento del CPU y cmo reduciendo estos factores podramos reducir el tiempo de ejecucin. No podemos despreciar las latencias del acceso a las otras partes de la computadora cuando queremos evaluar la aceleracin o impacto global que reducir el tiempo de ejecucin tendr en todo el sistema. Puesto que cada instruccin a ejecutarse es llevada desde la memoria al CPU, las latencias en el acceso a la memoria, limitarn la aceleracin global del sistema, pues la aceleracin lograda a lo interno del CPU no podr usarse todo el tiempo sino solo una fraccin de ste, segn se evidencia en el ejemplo del acpite 1.1.8. Un caso similar se dar con el acceso a dispositivos perifricos cuando se requieran datos que deban leerse directamente de un puerto de entrada-salida. Por tanto, nuestro estudio de la mejora del rendimiento del ordenador no estara completo sin estudiar las mejoras del rendimiento de los otros dos subsistemas que componen la computadora: la memoria y el sistema de entrada-salida.

Pgina 12

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

1.3

MEJORAS AL SISTEMA DE MEMORIA

Hemos aprendido que el efecto neto de las mejoras aisladas a una parte del sistema est limitado por la fraccin de tiempo que dicha mejora se pueda emplear. El sistema de memoria es crtico en la ejecucin de los programas por cuanto cada instruccin reside en memoria y muchos de los operandos tambin. De nuestro curso anterior conocemos que el ciclo de mquina de lectura o escritura en memoria normalmente requiere varios ciclos de reloj, convirtindose en un verdadero cuello de botella en el sistema de ejecucin. En este sentido, el diseo del bus del sistema juega un rol muy importante. En muchos casos, incrementar el ancho del bus puede incrementar significativamente la velocidad de transferencia. Asimismo, implementar un diseo de mltiples buses puede reducir cuellos de botella. Tambin se pueden solapar en el tiempo diferentes ciclos de acceso a memoria mejorando el desempeo global del sistema de memoria. En este sentido, es evidente que una cualquier mejora de velocidad en el acceso a la memoria es determinante en el rendimiento de la mquina. Existen dos mtricas importantes en un sistema de memoria: el tiempo de acceso y la capacidad. A lo largo de la historia de la computacin se ha mantenido una tendencia constante a demandar ms y ms memoria. Sin embargo, en la medida que crece el tamao de la memoria, se requieren ms circuitos de decodificacin que retardan el acceso a las celdas de almacenamiento. Adicionalmente, la tecnologa de fabricacin de la memoria tambin influye en el desempeo de la misma. La memoria esttica es muy rpida pero mucho ms costosa que la dinmica. Los grandes tamaos de memoria principal, relativamente barata, con que contamos hoy da solo son posibles gracias a la memoria dinmica.

1.3.1

Jerarqua de memoria

Es evidente que para las tareas de cmputo actuales, incluso en computadores personales, necesitamos grandes cantidades de memoria principal. Es igualmente evidente que los costos hacen prohibitivo implementarlas en memoria esttica, sino ms bien en memoria dinmica que es normalmente unas diez veces ms lenta que la primera. Una solucin razonable consiste en introducir una memoria intermedia entre el procesador y la memoria principal que no sea tan grande a fin que pueda ser rpida y adems pueda implementarse con memoria esttica a un precio razonable. Debido a su reducido tamao y su mejora de velocidad de acceso sobre la memoria principal, es importante que se garantice que en ella slo se encuentren los datos e instrucciones ms usados. Este tipo de implementacin de memoria intermedia se denomina cach. Es importante destacar que este arreglo define cierta jerarquizacin del almacenamiento donde en el ms alto nivel tenemos el almacenamiento interno al CPU (registros) pasando por la cach, continuando con la memoria principal hasta llegar al almacenamiento secundario. En cada nivel se establecen diferentes valores de velocidad de acceso, capacidad, tecnologa y costo verificndose que a medida que bajamos en la jerarqua disminuye la velocidad de acceso (o aumenta el tiempo de retardo) y aumenta la capacidad. El modelo, para ser eficiente debe imponer en lo posible que todo acceso se d entre niveles adyacentes. Finalmente, es posible introducir varios niveles intermedios si la brecha de velocidad entre los diferentes niveles es significativa.

Pgina 13

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

1.3.2

Principio de localidad de referencia.

Para que la jerarqua de memoria funcione, las cachs deben tener una utilizacin cercana a 100%, pues de lo contrario la aceleracin global lograda no justificara el incremento costo al introducir una memoria extra bastante cara. Afortunadamente, el principio de localidad de referencia garantiza la consecucin de este objetivo bastante bien. Este principio se basa en los principios primitivos de la organizacin de la mquina Von Neumann de secuencialidad de los programas y de vecindad de almacenamiento. Podemos decir que el principio tiene dos componentes: uno temporal y el otro espacial. El temporal predica que una palabra de memoria que se referencia en este momento, tiene gran probabilidad de reverenciarse en el futuro cercano (debido a la modularidad y ciclos en los programas). De forma similar, el componente espacial establece que las palabras vecinas de la palabra que se est referenciando actualmente tienen alta probabilidad de referenciarse en el futuro prximo.
CPU
Registros Cach
apa cida d

de idad eloc or V May

M ay or C

Cach Externa

eso Acc

Memoria Principal

Unidades de almacenamiento secundario

Figura 1.1. Jerarqua de Memoria.

1.3.3

Clculo de la aceleracin del rendimiento en la jerarqua de memoria

El clculo del rendimiento de un sistema jerrquico de memoria con cach es un caso especfico de aplicacin de la ley de Amdahl. La utilizacin de la cach se puede cuantificar mediante la tasa de aciertos (h) o el porcentaje de veces que una referencia a memoria se encuentra efectivamente en la cach. La ganancia del sistema o aceleracin del rendimiento del tramo mejorado es la proporcin en la cual la velocidad de acceso a la cach supera a la memoria principal, por ejemplo: si la cach tiene un tiempo de acceso de 10ns y la memoria principal tiene un tiempo de acceso de 100ns, la ganancia (n) del sistema cuando se puede acceder a cach es de 10. As el tiempo de acceso global de un sistema con cach en funcin del los tiempos de accesos de sus memorias es:

t g = tc * h + t M * (1 h)

Pgina 14

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

Siendo tg el tiempo global del sistema, tc el tiempo de acceso de la cach y tm el tiempo de acceso de memoria principal

1.4

MEJORAS AL SISTEMA DE ENTRADA-SALIDA

De forma similar al sistema de memoria, en la Entrada/Salida, la brecha de ancho de banda entre dispositivos de diferentes velocidades de trasferencias se puede reducir mediante la jerarquizacin de buses y la anexin de buffers en algunos mdulos controladores de entrada-salida. Adems de el equilibrio de ancho de banda, se pueden solapar en el tiempo las operaciones de transferencia de datos con las operaciones de CPU, mediante la incorporacin de controladores de DMA, canales de E/S y mdulos inteligentes de dispositivos.

CPU + Cache L1

Cache L2

Controlador de vdeo

"Bus" AGP

Controladores del sistema (Chipset) Controlador de Memoria y Puente PCI

Bus del Sistema

Memoria Principal

Bus PCI SCSI Controlador IDE Controlador de DMA Puente PCI a ISA USB LAN Slot

Dispositivos IDE

CD DD

DD DD

Bus ISA Slot Slot LPT Com 1 Com 2 Super I/O Disquete Teclado Ratn PS/2

Figura 1.2. PC con jerarquizacin de buses de E/S.

1.4.1

DMA

Este mtodo de transferencia avanzado, se implement con el objetivo de mejorar la velocidad de transferencia de datos, sobre todo para dispositivos y aplicaciones de E/S muy rpidos (Adquisicin de sonido, discos duros de alta velocidad y video). Consiste en proveer un procesador auxiliar capaz de hacer E/S por programa directamente a la memoria, relevando al CPU de esta tarea. DMA se aprovecha cuando los dispositivos son capaces de transferir gran cantidad de datos de una vez. Surge un problema de concurrencia en el bus del sistema respecto al CPU. Este se resuelve con Cycle Stealing, que permite al procesador de DMA bloquear al CPU el uso del bus algunos ciclos a fin de realizar la transferencia de DMA. Cuando un programa desea realizar una transferencia empleando DMA, el CPU inicializa los parmetros de la misma e indica al Mdulo DMA, acto seguido, el CPU se desentiende de la

Pgina 15

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

transferencia. El procesador de DMA coordina el acceso al dispositivo y sincroniza la transferencia en funcin del esquema de sincronizacin del bus del sistema. El procesador de DMA y el dispositivo de E/S se sincronizan mediante lneas de control del Procesador de DMA denominadas canal de DMA. Una ventaja de DMA sobre interrupciones es que la transferencia en DMA puede hacerse en cualquier ciclo, en tanto en Interrupciones, la verificacin de solicitudes de interrupcin se hace hasta al final de la fase de ejecucin.

1.4.2

Procesadores y Canales de E/S

Son una evolucin de DMA. Consisten en procesadores inteligentes de tratamiento de E/S, capaces de atender a mltiples dispositivos a la vez. A diferencia de DMA que empleaba el bus del Sistema para realizar la transferencia, cuando se usa un IO Processor, IO Channel o Canal de E/S, los dispositivos se conectan directamente al canal de E/S. Actualmente, los mdulos DMA emplean Procesadores de E/S y pueden ofrecer las mismas caractersticas que ofrecen los canales. Estos Procesadores de E/S se implementaron en computadoras grandes (Supercomputadoras, mainframes y en algunas Minicomputadoras) permitiendo jerarquizar el sistema de E/S reduciendo la brecha de velocidades entre los diferentes dispositivos.

1.5

INTRODUCCIN AL PARALELISMO

Debido a la interrelacin de los factores que determinan el tiempo de ejecucin y a las limitaciones propias de la arquitectura secuencial, existe una mxima aceleracin que se puede lograr en el tiempo de ejecucin. Cuando se requiere mayor desempeo, no queda otro camino que mejorar la arquitectura introduciendo paralelismo. Por ejemplo, es posible que una persona no puede ser ms rpida en ejecutar una tarea por mucho que se esfuerce, sin embargo, quizs dos personas s puedan hacerlo si comparten el trabajo. En computacin se ha evidenciado, desde sus inicios, una necesidad y tendencia hacia el paralelismo: Se requiere cada vez ms poder de cmputo y adems concurrencia (datos compartidos). Desde la introduccin de las primeras enormes y costosas mquinas se requiri capacidad de atencin a mltiples usuarios para que fueran costo-efectivas. Los dominios de aplicacin se han ido ampliando cada vez ms: desde un procesamiento de datos se ha pasado a un procesamiento de informacin, de conocimiento y ltimamente se habla de inteligencia. Los avances continuos en tecnologa de produccin de hardware a gran escala facilitan la produccin de sistemas paralelos a menor costo.

1.5.1

Procesamiento paralelo

El procesamiento paralelo es una forma eficaz de procesamiento que favorece la explotacin de los sucesos concurrentes en un sistema de computacin. Esta concurrencia implica simultaneidad, solapamiento y multiplicidad de recursos. El paralelismo que involucra solapamiento se denomina temporal porque permite la ejecucin concurrente de sucesos sobre los mismos recursos en intervalos intercalados de tiempo. El paralelismo que permite simultaneidad real sobre mltiples recursos al mismo tiempo se denomina paralelismo espacial.

Pgina 16

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

1.5.2

Diferentes mecanismos y tcnicas de mejora del desempeo empleadas

A medida que se fueron evidenciando las necesidades y requerimientos de mayor poder de cmputo y rendimiento en los sistemas se fueron implementando una serie de tcnicas y mecanismos de mejora del desempeo que introducen algn nivel de paralelismo que han ido evolucionando y consolidndose permitiendo los niveles de rendimiento que tenemos en las computadoras hoy da: 1.5.2.1 Multiprogramacin y tiempo compartido.

Esta es una tcnica de software introducida por los diseadores de sistemas operativos para implementar paralelismo temporal en la ejecucin de mltiples procesos de usuarios y los mismos procesos del sistema operativo, logrando que todos progresen a la vez. La multiprogramacin permite tener mltiples procesos en memoria y slo realiza cambio de contexto con los procesos de house keeping de sistema o cuando el proceso se bloquea en espera de un servicio. El tiempo compartido es ms dinmico en el sentido que asigna un quantum de tiempo de CPU a cada proceso. 1.5.2.2 Solapamiento de las operaciones CPU y E/S.

Mecanismos de mejora del sistema de entrada/salida que permite liberar al CPU de las operaciones de entradasalida, permitindole ejecutar otras operaciones. Este mecanismo requiere la introduccin de procesadores auxiliares para la transferencia de entradasalida a Memoria: controlador DMA, Canales de E/S y controladores de E/S inteligentes. 1.5.2.3 Jerarquizacin y equilibrio de ancho de banda.

Las diferencias de velocidad entre diferentes componentes del sistema afectan el desempeo global del mismo por los cuellos de botella que los dispositivos ms lentos imponen en las transferencias entre ellos. La jerarquizacin de diferentes niveles y la introduccin de niveles intermedios que reduzcan la brecha de velocidad, permite ir equilibrando el ancho de banda del sistema y acelerar su rendimiento global. En el sistema de memoria contamos con la jerarqua de memoria y en los sistemas de entrada salida con tcnicas de compensacin con la jerarquizacin de buses y tcnicas de buffering en los mdulos de entrada/salida. 1.5.2.4 Solapamiento de la ejecucin y Segmentacin encauzada.

El modelo de ejecucin de las mquinas secuenciales puede ser ineficiente en cuanto al nivel de utilizacin de los componentes internos del CPU, al ocupar todos los recursos en el ciclo de instrucciones completo. Un anlisis de las fases y etapas del ciclo nos permiten identificar diferentes tareas que podran solaparse. Por ejemplo, la fase fetch solo se encarga de traer la prxima instruccin. Finalizada la fetch, el PC no vuelve a utilizarse hasta la prxima fase fetch. Entonces, podra considerarse que cuando se complete la trada de la instruccin i, una parte dedicada del CPU puede ir a traer la siguiente instruccin i+1, mientras el resto ejecuta la instruccin i. Cada parte o seccin del CPU se denomina en este caso etapa o segmento del cauce de ejecucin o pipeline, porque la salida de cada etapa anterior alimenta la entrada de la siguiente como si estuvieran conectados en una tubera. Por eso la implementacin de tal solapamiento de la ejecucin en el CPU se denomina segmentacin encauzada. El ejemplo de segmentacin mostrado en este prrafo solo consta de dos etapas y se le conoce como precarga de instrucciones (prefetching), sin embargo los sistemas segmentados hoy da suelen tener muchas ms etapas de cauce.

Pgina 17

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

La tcnica de solapamiento de la ejecucin, permite reducir considerablemente el tiempo de ejecucin, como lo estudiaremos en la unidad 2. Adicionalmente, los sistemas de acceso a memoria tambin han implementado un modelo de solapamiento en los ciclos de mquina de acceso a memoria, permitiendo reducir grandemente el tiempo de respuesta global del sistema.
Suma
Banco de Registros (24 x 32) Multiplic. 1 Multiplic. 2 Divisin Suma Fija Incremento Subsistema de Entrada / Salida Memoria Central Decremento Lgica Desplazamiento Bifurcacin Pila de Instrucciones

Marcador

Figura 1.3. Multiplicidad de unidades funcionales en le CDC-6600

1.5.2.5

Sistemas escalares o multiplicidad de unidad funcionales

La introduccin de la segmentacin de bajo nivel o prefetching de instrucciones, condujo a otra mejora en rendimiento que consiste en agregar ms de una unidad aritmtica al procesador a fin de poder acelerar an ms la ejecucin. Con esta importante mejora de diseo, podran tenerse ms de una instruccin en ejecucin a la vez. Este modelo, sin embargo introduce requerimientos nuevos tambin en cuanto a mantener el orden estricto de ejecucin de las instrucciones y el control de disponibilidad de los recursos. A los sistemas que implementan esta mejora se les conoce como sistema escalares. Por ejemplo, la CDC-6600 que se muestra en la figura 1.3, emplea una cola de instrucciones y 10 unidades aritmticas adems de un marcador o scoreboard para registrar y controlar la disponibilidad de las unidades funcionales y los registros.

1.5.2.6

Sistemas paralelos.

Las tcnicas mencionadas arriba, explotan mayormente el paralelismo temporal. Algunas introducen elementos de paralelismo espacial al incorporar elementos auxiliares de proceso o varias unidades funcionales. Aunque los sistemas escalares introducen un nivel interesante de paralelismo espacial, suele denominarse sistemas paralelos solamente a aquellos que explotan el paralelismo efectivamente mediante la multiplicidad de procesadores o elementos de procesamiento simples o complejos que colaboran en la solucin de uno o ms problemas de forma simultnea. Existen varios tipos y arquitecturas que estudiaremos a lo largo de la unidad 3 y 4.

Pgina 18

Arquitectura de Mquinas Computadoras III

Paralelismo y Arquitecturas Avanzadas

1.6

CLASIFICACIN DE LAS ARQUITECTURAS PARALELAS.

Se han propuesto diferentes criterios para clasificar las arquitecturas paralelas, segn diferentes caractersticas y niveles de paralelismo. De entre estas resaltan las de Flynn, Feng, Handler, Hockney Jesshope y Shore. 1.6.1.1 Taxonoma de Flynn

Flynn propone establecer categoras de clasificacin en funcin de la multiplicidad de los flujos de datos y de instrucciones que se conjugan en la ejecucin de estos sistemas. Considerando que un flujo puede ser simple o mltiple, establece cuatro categoras posibles: SISD (Simple flujo de inst.-simple flujo de datos) Esta categora incluye a todos los sistemas de un solo CPU. Las ejecuciones se ejecutan de forma secuencial pero puede haber segmentacin. Ejemplos de esta categora son los computadores viejos IBM 370 e IBM 7090, el VAX y el Intel 8086. SIMD (Simple flujo inst.-multiples flujos de datos) Esta categora incluye una gran diversidad de procesadores paralelos que ejecutan una misma instruccin sobre un conjunto de datos al unsono o solapadamente. Las mquinas tpicas SIMD son los procesadores matriciales con una red de mltiples elementos de proceso (EP) supervisados todos por una la misma unidad de control. Todos los EP reciben la misma instruccin emitida por la unidad de control y operan esta instruccin sobre los datos residentes en su memoria local. Los miembros de esta categora sern nuestro objeto de estudio de la unidad 3. MISD ( Mltiples flujos inst.-simple flujo de datos) Este modelo propone la existencia de n unidades procesadoras; cada una recibe distintas instrucciones que operan sobre el mismo flujo de datos. La salida de un procesador pasa a ser la entrada del siguiente. Muchos autores coinciden en que no existe espcimen para esta categora aunque algunos insisten en considerar las etapas de un cauce como entidades procesadoras y ubican los sistemas segmentados en esta categora. Dado que las etapas no son autnomas, nuestra posicin para efectos de este curso ser aceptar y declarar la vacuidad de esta categora.

MIMD (Mltiples flujos inst.-multiples flujos de datos) Esta categora incluye a todos los sistemas paralelos que constan de mltiples procesadores autnomos trabajando cooperativa y coordinadamente en la solucin de uno o ms problemas de forma simultnea. Esta categora nos ocupar durante la unidad 4.

Pgina 19

Potrebbero piacerti anche