Sei sulla pagina 1di 33

UNIVERSIDAD NACIONAL DANIEL ALCIDES CARRIN

FACULTAD DE INGENIERIA
ESCUELA DE FORMACIN PROFESIONAL DE

Curso:
Procesamiento Paralelo

Profesor:
Omar Raraz T.

Alumnos:
Lazaro Baldeon Alex Rodrguez Romero Richard

Semestre:
VIII

CERRO DE PASCO 2009

Queremos dedicar este trabajo que representa el esfuerzo comn del grupo a las personas que cada da nos alientan y nos ensean en la ardua labor que seguimos a nuestra familia que con su esfuerzo han hecho posible este logro

Tipos de computacin paralela. Taxonoma


La creciente complejidad de los problemas tratados en ciertas reas de la ciencia, la ingeniera, el procesamiento de datos, etc., requieren una gran capacidad de clculo. Es un hecho bien establecido que para algunos problemas tales como los mtodos numricos, la simulacin, la optimizacin, etc., la computacin paralela ofrece soluciones eficientes. Las aplicaciones de esta rea de la computacin se extienden a diferentes disciplinas. As por ejemplo, los computadores paralelos y su desarrollo son de especial inters para permitir descubrimientos relevantes en medicina, especialmente en los campos de la biologa molecular o en el anlisis del genoma humano, en la fsica para el estudio de la superconduccin, o en ingeniera para la deteccin de incendios y el desarrollo de estrategias para su extincin. La computacin paralela o procesamiento en paralelo consiste en acelerar la ejecucin de un programa. simultnea, cada uno en su propia unidad de proceso. Surge as, de forma natural, la idea de la computacin paralela, que genricamente consiste en utilizar n computadores para multiplicar, idealmente por n la velocidad computacional obtenida de un nico computador. Por supuesto, esta es una situacin ideal que muy rara vez se consigue en la prctica. Normalmente, los problemas no pueden dividirse perfectamente en partes totalmente independientes y se necesita, por tanto, una interaccin entre ellas que ocasiona una disminucin de la velocidad computacional. En este sentido se habla de mayor o menor grado de paralelismo en la medida en que un algoritmo sea ms o menos divisible en partes independientes con igual coste computacional. Entre las interacciones hay que considerar principalmente las dos siguientes: a) La transferencia de datos. b) La sincronizacin de los clculos de los diferentes procesadores.

Sin embargo, dependiendo de la naturaleza del problema y de su grado de paralelismo, se pueden conseguir grandes mejoras en el rendimiento. Hay que tener en cuenta que la computacin paralela siempre se podr beneficiar de los progresos y avances que se consigan en los procesadores individuales. El objetivo final de disponer de computadores paralelos ms rpidos y potentes, es resolver categoras de problemas disminuyendo significativamente el tiempo de su resolucin, hecho que no sera posible con los computadores serie actuales. El concepto de computador paralelo, como es de esperar, no es una idea nueva. Por ejemplo, Gill ya escribi acerca de la programacin paralela en 1958, y un ao despus Hollandplante la posibilidad de que un computador pudiera ejecutar un nmero arbitrario de subprogramas simultneamente. En 1963 Conway describe el diseo de un computador paralelo y su programacin, y 40 aos ms tarde se siguen encontrando numerossimos artculos con ttulos y planteamientos similares a los que ya apuntaban estos precursores del campo de la computacin paralela. Pero hasta 1981 no se present el primer sistema paralelo comercial de la que se tienen noticias. Fue comercializada por BBN Computers Advanced (Bolt, Beranek and Newman Computers Advanced) y se llam Butteifly. Era capaz de distribuir su trabajo entre 256 procesadores, en concreto eran microprocesadores Motorola 68000, que se conectaban a travs de una red multietapa con memorias de 500 Kbytes por procesador. Se llegaron a vender alrededor de 35 mquinas, casi todas ellas a universidades y centros de investigacin. En los ltimos aos el rendimiento de los computadores paralelos ha aumentado significativamente. En la actualidad la tendencia general es que se construyan a partir de elementos diseados para sistemas monoprocesador, con lo que los sistemas paralelos se benefician de los avances obtenidos para los serie. Como dato significativo, el rendimiento mximo de un computador paralelo en 1999 era de ms de 2 Teraflops, unas 35 veces superior al de cinco aos y unos meses antes. Teniendo en cuenta la definicin genrica de computacin paralela, es inmediato comprender que la construccin de un sistema de procesamiento paralelo puede realizarse de multitud de formas diferentes, tanto al considerar los componentes que lo integran como al analizar las estrategias y los procedimientos para comunicar los diversos elementos. La complejidad de las diversas posibilidades hace que se presenten diferentes taxonomas basadas en diversos puntos de vista. Con el fin de comprender en su conjunto las arquitecturas paralelas, seguidamente se exponen diferentes clasificaciones que muestran tanto la complejidad de esta disciplina como las mltiples posibilidades de las que se dispone. Debe entenderse que esta descripcin se realiza anteponiendo la amplitud a la profundidad, de manera que se presentan los conceptos generales bsicos sin entrar en detalles sobre posibles implementaciones prcticas.

En este Captulo se introducen las arquitecturas paralelas. Con el fin de dar una idea global del mbito en el que se desarrollan, se presenta una clasificacin que, sin pretender ser exhaustiva, muestra los aspectos generales y las ideas fundamentales que sustentan las diversas opciones y soluciones. A lo largo de esta clasificacin quedar claramente determinado que es fundamental el comportamiento de las redes de interconexin entre los elementos de clculo que constituyen el sistema paralelo. En la siguiente Seccin se indican brevemente las caractersticas bsicas de las mismas, presentando tres ejemplos tpicos de sistemas comerciales. Por ltimo, se analizan los parmetros fundamentales que caracterizan los sistemas paralelos.

1. TAXONOMA DE LAS ARQUITECTURAS PARALELAS


Las diferentes posibilidades existentes para desarrollar sistemas paralelos hacen que una clasificacin definitiva sea complicada, y seguramente estril. Por ello, en primer lugar se recuerdan las caractersticas bsicas del modelo secuencial, con el fin de delimitar los aspectosbsicos que son comunes o diferentes de los sistemas paralelos. Seguidamente se muestra una clasificacin clsica propuesta por Flynn, que se basa en el flujo de instrucciones y en el flujo de datos, es decir, el mecanismo de control utilizado. Sin embargo, existe una gran cantidad de criterios, aunque no todos mutuamente excluyentes entre s, para establecer una clasificacin de las distintas arquitecturas paralelas. As, tomando como base la clasificacin de Flynn se atiende a la organizacin del espacio de memoria, analizando las diferentes posibilidades que permiten establecer diversas arquitecturas. A continuacin, se consideran otros criterios bsicos de clasificacin que diferencian unos sistemas de otros, entre los que destaca la red de interconexin.

2. Arquitectura de los computadores secuenciales


Como es bien sabido, los computadores secuenciales, tambin denominados computadores serie, se basan en la arquitectura de J. von Neumann. Este modelo tiene como elementos fundamentales una Unidad Central de Procesamiento (CPU, acrnimo en ingls de Central Processing Unit), y una memoria, que se caracteriza porque en ella no se distinguen datos e instrucciones . En este modelo se considera una nica secuencia de instrucciones que tratan una nica secuencia de datos. Por ello se conocen como computadores SISD, Single Instruction Stream, Single Data Stream (nico flujo de instrucciones, nico flujo de datos). Una introduccin detallada puede encontrarse en (Dormido, 2000). El modelo de von Neumann presenta dos limitaciones bsicas. La velocidad de ejecucin de las instrucciones y la velocidad de transferencia de informacin entre CPU y memoria. La primera est relacionada con los componentes y la tecnologa electrnica asociada. Sin embargo, desde el punto de vista de la arquitectura de computadores se han desarrollado algunas estrategias para aumentar el rendimiento. La ms conocida es la segmentacin (pipelining). La segmentacin de instrucciones consiste en traer a la cola de instrucciones la instruccin siguiente a la que se est ejecutando. En ltimo trmino se realiza la segmentacin de ejecucin, o segmentacin encauzada, en la que se permite que varias instrucciones se ejecuten simultneamente en diferentes unidades funcionales de clculo (multiplicadores, sumadores, unidad de carga/almacenamiento, ...), durante las diferentes etapas en las que se divide la ejecucin de la instruccin.

a)

Modelo bsico de J. von Neumann. b) Procesador con segmentacin.

El rendimiento que se obtiene recurriendo a una mquina con segmentacin es, por lo general, muy superior al de la versin no segmentada. Obsrvese la Figura 2.4, en la que se muestra una segmentacin tpica e ideal de un procesador RISC (Reduced Instruction Set Computer) con cinco etapas de ejecucin: IF (bsqueda de la instruccin), ID (decodificacin de la instruccin y lectura de los registros), EX (operaciones aritmticas), MEM (lectura/escritura de/en memoria) y WB (escritura en los registros).

La gran ventaja que proporciona la segmentacin radica en que es posible comenzar la ejecucin de una nueva instruccin en cada ciclo de reloj. As, aunque la instruccin consume sus cinco ciclos (un ciclo por etapa), el resultado real es que en cada ciclo de reloj se concluye la ejecucin de una instruccin. De esta forma, y sin considerar los riesgos de la segmentacin (estructurales, datos y control), el rendimiento obtenido es de cinco con respecto a la misma mquina no segmentada. Sin embargo, pese a que la segmentacin produce un incremento de la productividad, es decir, se obtiene un nmero mayor de resultados por unidad de tiempo, el tiempo total de ejecucin de la instruccin segmentada es superior al de su equivalente no segmentada. Esto es debido a que el tiempo de ejecucin de una instruccin en la segmentacin viene determinado por varios factores: y y Los cerrojos que hay que colocar en el camino de datos del procesador con el objeto de aislar la informacin entre etapas. La duracin de todas las etapas de la segmentacin es similar y viene determinada por la etapa ms lenta. Ello es debido a que el paso de informacin de etapa a etapa se debe realizar de forma sncrona por lo que todas las etapas deben tener la misma duracin.

Los riesgos que se producen en la segmentacin y que introducen detenciones en el encauzamiento.

Obsrvese que la instruccin no segmentada consume 260 nseg., mientras que su equivalente segmentada emplea 325 nseg. debido a que todas las etapas duran lo que la ms lenta, 60 nseg., y hay que sumar los retardos producidos por los cerrojos en cada etapa, 5 nseg. Este caso indica que un incremento de productividad no siempre se asocia a un incremento de velocidad de ejecucin.

Anlogamente, la segunda limitacin tambin admite algunas soluciones desde el punto de vista de la arquitectura de computadores. As, la velocidad de transferencia puede crecer aumentando el nmero de lneas de datos entre ambos componentes. La tcnica ms usual se denomina memoria entrelazada o intercalada (memory interleaving), y consiste en dividir la memoria en bloques, cada uno con acceso independiente. La Figura 2.6.a muestra esta arquitectura. As, es posible transferir informacin de cada uno de ellos simultneamente. Otra forma bien conocida de aumentar la velocidad de intercambio de informacin es la memoria cache. Mediante esta estrategia se interpone una memoria rpida, de tecnologa ms cara y de menor tamao que la memoria principal, sobre la que se aplican bloques de memoria principal. El xito de esta estrategia se basa en la satisfaccin del principio de localidad, que debe entenderse de forma genrica como el hecho de que la instruccin siguiente a la que se est ejecutando est en la cercana del bloque en uso, tanto en lo referente a su ubicacin en memoria (localidad espacial), como a su probabilidad de uso inmediato (localidad temporal). La Figura 2.6.b muestra un procesador con ambas estrategias, memoria intercalada y memoria cache.

a)

Procesador con memoria intercalada. b) Procesador con memoria entrelazada y memoria cache.

Estas mejoras, siendo importantes para los sistemas SISD, presentan limitaciones, tanto las inherentes a la tecnologa de los componentes como a las propias de las estrategias. Por ejemplo, la memoria intercalada tiene xito slo si se realiza un pequeo nmero de operaciones sobre un arreglo de datos grande. Los procesadores segmentados, de alta velocidad, son particularmente tiles para grandes aplicaciones cientficas y de ingeniera. Un procesador segmentado de alta velocidad, en general, utilizar una cache para no permitir que las instrucciones con referencia a memoria tengan una latencia muy alta. Sin embargo, los programas cientficos grandes, cuya ejecucin es larga, tienen con frecuencia conjuntos de datos activos de dimensiones muy grandes que son accedidos generalmente con baja localidad, consiguiendo un rendimiento pobre de la jerarqua de memoria. El efecto resultante es una disminucin en el rendimiento de la cache. Este problema podra superarse no haciendo uso de las caches en estas estructuras, siempre y cuando fuese posible determinar los patrones de acceso a memoria y segmentar estos accesos eficientemente. Evidentemente, las mejoras tanto tecnolgicas como estratgicas desarrolladas para los sistemas SISD tendrn aplicacin sobre los sistemas paralelos ya que, en ltimo trmino, los sistemas paralelos se construyen con componentes individuales.

2.1 Taxonoma de Flynn


En 1966 Flynn propuso una clasificacin generalista de los computadores, adoptando como criterio el flujo de instrucciones y el flujo de datos que en ellos se desarrolla. Se entiende por flujo (stream) una secuencia de elementos, en este caso de datos o de instrucciones. As, la clasificacin de Flynn es la siguiente: 1. SISD (Single Instruction, Single Datu), instruccin nica, datos nicos. Como ya se indic en la Seccin anterior, en este grupo se encuadran la mayora de los computadores serie disponibles actualmente. Las instrucciones se ejecutan secuencialmente pero pueden estar solapadas en las etapas de ejecucin (segmentacin encauzada). Un computador SISD puede tener ms de una unidad de recursos de clculo, pero todas ellas estn bajo el control de una nica unidad de control. La Figura 2.9.a muestra este modelo. 2. SIMD (Single Instruction, Multiple Data), instruccin nica, datos mltiples. Este modelo se ilustra en la Figura 2.9.b. En esta clase se sitan los procesadores matriciales en los queexisten varias unidades de procesamiento trabajando sobre flujos de datos distintos pero ejecutando la misma instruccin proporcionada por una nica unidad de control. Estos computadores garantizan sincronismo entre procesadores despus de cada ciclo de ejecucin de las instrucciones. Como ejemplo de este tipo de arquitectura cabe destacar el ILLIAC IV y la Connection Machine. 3. MISD (Multiple Instruction, Single Data), instrucciones mltiples, datos nicos. Este tipo de organizacin se caracteriza por la existencia de varias unidades de procesamiento cada una ejecutando una instruccin diferente pero sobre el mismo flujo de datos. En sentido estricto no se conoce ninguna materializacin real de esta categora, ya que limita las posibilidades del hardware sin claros beneficios sobre otros modelos. Desde un punto de vista abierto pueden considerarse como MISD las arquitecturas superescalares y VLIW (Very Long Instruction Word), ya que con frecuencia tienen un nico flujo de datos y mltiples instrucciones, aunque estas mquinas tienen un nico contador de programa. Las arquitecturas desacopladas tienen dos flujos de instrucciones con contadores de programa independientes, y un nico flujo de datos, con lo que se acercan ms al concepto estricto de MISD. Del mismo modo, las arquitecturas sistlicas tambin pueden ser consideradas MISD. Estas arquitecturas toman su nombre por analoga del corazn, que bombea rtmicamente la sangre. Se pueden considerar como un mtodo de diseo de computadores de propsito especial para equilibrar recursos, ancho de banda de E/S y clculo. Basndose en la segmentacin, los datos fluyen en etapas desde memoria a un arreglo de unidades de clculo y vuelven a memoria. Como puede observarse, los datos llegan a un elemento de procesamiento a intervalos regulares, en cada elemento se modifica y pasa al elemento siguiente, y as sucesivamente hasta que vuelve a memoria.

Los arreglos sistlicos han evolucionado desde estar constituidos por muchos chips dedicados de propsito especial, a menos chips ms potentes y programables.

4. MIMD (Multiple Instruction, Multiple Data), instrucciones mltiples, datos mltiples. En esta categora se incluyen la mayora de los sistemas multiprocesadores y multicomputadores, y en ellos cada procesador es capaz de ejecutar un programa independiente de los dems procesadores Un computador MIMD intrnsecamente implica interacciones entre variosprocesadores porque todos los flujos de memoria se obtienen de un espacio de datos compartido por todos ellos. Si los n flujos de datos provinieran de subespacios disjuntos dentro de las memorias compartidas, entonces se tendra un sistema SISD mltiple o MSISD, que no es ms que un conjunto de sistemas monoprocesador SISD

independientes. La Figura 2.9.d. ilustra este modelo. Como ejemplos reales de este tipo de arquitectura cabe destacar los sistemas: Cray-2, ZBM 370/168 y UNIVAC 1100/80. Atendiendo a esta clasificacin se deduce que las arquitecturas paralelas pueden ser esencialmente de dos tipos: SIMD y MIMD. Seguidamente, se analizan los aspectos generales de cada una de ellas.
a)

Modelo SIMD:

En el modelo SIMD cada procesador ejecuta en todo momento la misma operacin, pero nicamente sobre sus propios datos. Las instrucciones del programa se envan a ms de un procesador y cada uno acta bsicamente como un procesador aritmtico-lgico sin una unidad de control. Una unidad de control independiente, separada, es la responsable de buscar las instrucciones en memoria y de repartirlas a los distintos procesadores. Cada procesador ejecuta la misma instruccin en sincronismo pero utilizando diferentes datos. En un modelo SIMD, el conjunto de datos forma un arreglo y una instruccin acta sobre todo el arreglo en un ciclo de instruccin. De ah que el factor determinante en el desarrollo de este modelo sea el gran nmero de aplicaciones que trabajan sobre arreglos de datos. Por ejemplo, muchas de las simulaciones de sistemas fsicos (sistemas moleculares, prediccin del tiempo, etc.) operan sobre grandes arreglos de datos. Otra rea de aplicacin importante de este modelo es el procesamiento de imgenes a bajo nivel, donde los elementos de dibujo (pixels) de la imagen se almacenan en grandes arreglos. Si se tiene un sistema en el que se realizan las mismas operaciones sobre el conjunto de datos, ser relativamente simple programarlo en un modelo de este tipo. El programa consistir en una nica secuencia de instrucciones ejecutadas de forma independiente por la unidad de control. Cada procesador de las mquinas SIMD dispone de una pequea cantidad de memoria local y canales de comunicacin en una disposicin tal que el nmero de procesadores conectados directamente sea mximo, pero sin complicar excesivamente el cableado. Para este tipo de modelos es habitual utilizar la topologa hipercubo, que se detallar en el Captulo 4, y que en esencia est formada por una malla multidimensional de procesadores con dos de ellos en cada dimensin. El ejemplo clsico de mquina SIMD es la Connection Machine (un hipercubo de dimensin 16) fabricada por Thinking Machines Corporation en 1985, formada por 65.536 procesadores cada uno con 4 Kbytes de memoria. La mquina completa est formada por varias unidades como la mostrada en la Figura 2.10. Las mquinas SIMD son apropiadas para el tratamiento de arreglos en bucles, pero su mayor debilidad se encuentra en el tratamiento de las sentencias de seleccin, en las que cada unidad de ejecucin debe realizar una operacin diferente sobre su dato, dependiendo del dato que se tenga. Las unidades de ejecucin con el dato errneo son inhabilitadas para que las unidades adecuadas puedan continuar. Estas situaciones se ejecutan a l / n del rendimiento, donde n es el nmero de selecciones a realizar. La poca flexibilidad del modelo SIMD ha provocado que en los ltimos aos se encuentre relegado a entornos muy concretos y especializados.
b)

Modelo MIMD:

En el modelo MIMD cada procesador acta de forma esencialmente independiente. Uno o varios procesadores pueden, por ejemplo, estar transformando datos mediante un algoritmo complejo, mientras otro est generando una salida grfica de resultados. Esto es lo que se denomina descomposicin de control, de manera que cada procesador puede estar ejecutando un programa distinto. Mucho ms habitual es la descomposicin de datos, en la que los datos del problema se reparten entre los distintos procesadores y todos ejecutan el mismo programa sobre la zona de datos que se le ha asociado. Esta particularizacin del modelo MIMD se conoce como SPMD (Single Program, Multiple Data), programa nico sobre mltiples datos. Es importante observar la diferencia con el modelo SIMD. En un sistema SPMD todos los procesadores ejecutan el mismo programa, pero esto no quiere decir que ejecute el mismo cdigo simultneamente. De este modo, un procesador puede estar ejecutando cdigo distinto que el ejecutado por otro procesador, debido

por ejemplo a una bifurcacin condicional dependiente del resultado de una operacin. As, suponiendo que dos procesadores llegan a una sentencia IF simultneamente, para uno de ellos puede resultar un valor TRUE en la condicin mientras que para el otro puede ser FALSE. En ese momento cada procesador sigue ejecutando un cdigo diferente del mismo programa. Sin embargo, en un sistema SIMD el cdigo de la sentencia IF .... THEN ELSE debe ejecutarse secuencialmente. Este modelo es, por tanto, mucho ms flexible que el SIMD. Una analoga que sirve para aclarar el funcionamiento de un modelo MIMD es considerarlo equivalente a la divisin de un proyecto en grupos de trabajo. Cada grupo se ocupa nicamente de su tarea, pero todos los grupos tienen que reunirse de vez en cuando para intercambiar conclusiones y coordinar el trabajo posterior. El intercambio de informacin entre procesadores depende del sistema de que se disponga.
c)

Comparacin de los sistemas SIMD y MIMD

Evidentemente los sistemas SIMD necesitan menos hardware que los MIMD, ya que slo requieren una unidad de control, y adems necesitan menos memoria ya que slo es necesario almaeenar una copia del programa en ejecucin. Los sistemas MIMD almacenan una copia del programa en cada procesador, y con ello el software asociado al programa, como por ejemplo el sistema operativo. Por otro lado, los sistemas SIMD necesitan menos tiempo de inicio para las comunicaciones entre procesadores, debido a que son transferencias entre registros del procesador origen y destino. Recurdese que estas transferencias son las ms rpidas posibles (vase por ejemplo (Dormido, 2000)). Evidentemente, la desventaja de los sistemas SIMD es que no pueden ejecutar diferentes instrucciones en el mismo ciclo de reloj. Adems, aunque en un principio puede parecer que los sistemas MIMD tienen un coste muy superior a los SIMD, esto en general no es cierto. Debido a que los sistemas MIMD pueden construirse con procesadores de propsito general, pueden beneficiarse de las ventajas econmicas de una distribucin para el mercado y el consumo en general, mientras que las arquitecturas SIMD pueden considerarse en este sentido especficas, con lo que su coste de produccin suele ser mayor de lo que cabra esperar. De hecho, la unidad de control de un sistema SIMD debe ser diseada especficamente. Con todo ello y debido a la economa de escala, las arquitecturas MIMD suelen tener un coste menor que un sistema SIMD y ofrecen mayores rendimientos y posibilidades. Incluso para las aplicaciones en las que se requiere sincronismo entre los procesadores, caracterstica tpica de los sistemas SIMD, se han desarrollado arquitecturas MIMD que incorporan la posibilidad de trabajar en modo SIMD mediante la inclusin del hardware adecuado. Algunos ejemplos de este tipo de sistemas son el DADO y el CM-5. Atendiendo a todas estas consideraciones puede observarse que los sistemas MIMD son ms generales y eficaces. Por ello, en este texto se tratarn fundamentalmente los sistemas MIMD.

2.2 Organizacin del espacio de direcciones de memoria


El intercambio de informacin entre procesadores depende del sistema de almacenamiento que se disponga. Atendiendo a este criterio se obtiene una nueva clasificacin de las arquitecturas paralelas en:

y y

Sistemas de memoria compartida o multiprocesadores. Sistemas de memoria distribuida o multicomputadores.

En esta Seccin se introducen de forma general ambas arquitecturas, comparando seguidamente sus caractersticas.

a) Sistemas de memoria compartida o multiprocesadores. Los procesadores de los sistemas con memoria compartida se caracterizan por compartir fsicamente la memoria, es decir, todos acceden al mismo espacio de direcciones. Un valor escrito en memoria por un procesador puede ser ledo directamente por cualquier otro. En principio, en esta arquitectura la memoria

es igualmente accesible por todos los procesadores a travs de la red de interconexin. La Figura 2.11 muestra el esquema bsico de la arquitectura de memoria compartida. As se desarrollaron los primeros computadores de esta arquitectura, tales como el NYU Ultracomputer.

En este contexto, en el que la red de interconexin es determinante para la eficacia del sistema, son fundamentales dos parmetros que caracterizan los sistemas paralelos: la latencia de red y el ancho de banda. Ambos determinan la velocidad en la transferencia de datos entre elementos bsicos del sistema paralelo. El primero se define como el tiempo que se tarda en enviar un mensaje a travs de la red de interconexin del sistema paralelo, mientras que, en este contexto, se define el ancho de banda como el nmero de bits que se pueden enviar por unidad de tiempo. Para garantizar la eficacia de esta arquitectura es fundamental que el ancho de banda sea elevado, ya que en cada ciclo de instruccin cada procesador puede necesitar acceder a la memoria a travs de la red de interconexin. Este acceso a memoria puede ser lento debido a que las solicitudes de lectura o de escritura pueden tener que pasar por varias etapas en la red. En la arquitectura de memoria compartida se satisface que la latencia de red es baja, y el ancho de banda alto, slo si no se encuentran varios procesadores tratando de acceder al medio utilizado para la transmisin de datos simultneamente. Por este hecho y otros problemas relacionados con el mismo, el nmero de procesadores en este tipo de sistemas suele ser pequeo y la arquitectura ms comn para la comunicacin es la de bus, en la cual todos los procesadores y mdulos de memoria se conectan a un nico bus, tal como muestra la Figura 2.12. En esta arquitectura el tiempo de acceso a memoria es el mismo para cualquier palabra, por lo que se denomina arquitectura de acceso uniforme, UMA (Uniform Memory Access).

La mayora de los sistemas de memoria compartida incorporan una memoria cache local en cada procesador, y del mismo modo que en los computadores secuenciales, sirve para aumentar el ancho de banda entre el procesador y la memoria local. Anlogamente puede existir una memoria cache para la memoria global. Cuando se utilizan memorias cache es fundamental asegurar la coherencia de la informacin en la memoria cache, de modo que cuando un procesador modifique el valor de una variable compartida los dems procesadores no consideren su valor anterior, ya que es incorrecto desde ese momento. Sin embargo, existe otro factor que limita a la arquitectura UMA: la escalabilidad. La escalabilidad es un factor fundamental de los sistemas paralelos. De forma genrica puede entenderse como la capacidad del sistema para mejorar la potencia de clculo cuando el nmero de nodos2 aumenta. En el caso ideal sera lineal, de manera que al tener dos nodos se dispondra del doble de potencia de clculo, con cuatro el cudruple, con cien nodos cien veces ms. Sin embargo, debido a factores como los tiempos de comunicacin, la escalabilidad no suele ser lineal y adems, como se ver en captulos posteriores, llega a saturarse. La saturacin indica que por muchos nodos ms que se incorporen, no se consigue ninguna mejora. Actualmente, los sistemas de acceso uniforme a memoria se utilizan para la construccin de arquitecturas multiprocesador de bus compartido con un reducido nmero de procesadores. Por tanto, este tipo de memoria compartida no es adecuada para sistemas escalables debido a los problemas de acceso a la memoria remota que presentan. Entre los sistemas implementados destaca el Encore Multimax de Encore Computer Corporation que representa la tecnologa de los aos 80 y el Power Challenge que es representativo de los 90. El sistema Encore Multimax es una arquitectura multiprocesador que presenta como caracterstica principal el uso de lo que se denominaba el Nanobus, que fue una de las primeras aplicaciones comerciales del bus en espera. En este, los buses de datos y de direcciones se encuentran separados. El bus de direcciones se utiliza en la primera fase de lectura y de escritura sobre la memoria. En el caso de escritura se usa conjuntamente con el bus de datos mientras que en el caso de la lectura el bus de datos puede ser usado por una unidad de memoria para transferir el resultado de una lectura anterior. Para controlar estas operaciones se utilizan dos sistemas de lgica de arbitraje que cooperan entre s para asignar el bus de datos y el de direcciones entre 20 procesadores y 16 bancos de memoria. Se utiliza un arbitraje centralizado, si bien es posible forzar a la unidad de arbitraje para que niegue el acceso al bus de direcciones a otros dispositivos si un procesador no consigue el bus durante varios ciclos de reloj. El rbitro del bus de datos est formado por un rbitro centralizado y un control de acceso distribuido. La principal diferencia entre el arbitraje del bus de datos y el de direcciones reside en la poltica de arbitraje utilizada y a quin va dirigida. La poltica de arbitraje del bus de datos slo la usan los controladores de memoria puesto que el procesador puede obtener acceso al bus de datos de una manera implcita cuando el bus de direcciones est asignado a esos datos, siempre que se trate de una escritura en memoria. Bajo estas condiciones el controlador de concesin de memoria ignorar su lnea de concesin. Esta situacin se detectar observando un campo especial del bus de direcciones. El rbitro del bus de datos aplicar una poltica de arbitraje fija entre los distintos controladores de memoria. La prioridad asignada a un

controlador de memoria depender de su posicin fsica en el Nanobus. Esta poltica puede llevar a que los controladores de menor prioridad no puedan acceder al bus. Para evitar esta situacin el control de acceso distribuido puede activar una lnea especial en el bus para expulsar al resto de controladores del ciclo de arbitraje. Esta arquitectura utiliza una cache de 256 Kbytes con un controlador del tipo snoopy3 para cada procesador. El controlador implementa una poltica de actualizacin de memoria de escritura directa y una poltica de coherencia de cache basada en escritura por invalidacin, que se analizarn en el Captulo 3. Por otro lado, el sistema Power Challenge utiliza un bus central que conecta las CPUs del sistema con la memoria principal. Este bus, denominado POWER path-2, es un bus de 256 bits y tiene un ancho de banda de 1,2Gbytes/s. Cada CPU tiene asociada una cache de datos y otra de instrucciones. Este sistema utiliza procesadores RISC del tipo MIPS R8000 con un rendimiento de 300 Megaflops. Aunque el ciclo de reloj de este procesador es dos veces menor que el de su predecesor el R4400 su rendimiento es 4 veces superior. Tambin tiene una cache especial denominada Streaming Cache de 16 Mbytes, con la que se pretende reducir el trfico del bus lo mximo posible. Los sistemas Power Challenge pueden ser acoplados mediante canales HiPPI para formar un cluster de memoria distribuida y usar PVM o MPI para el intercambio de datos. Esta combinacin de Power Challenge se denomina SGI Power Challenge Array. Un sistema como el descrito, llega a alcanzar una velocidad de 26,7 Gigaflops con 128 procesadores. En general, los sistemas UMA presentan una . escalabilidad limitada incluso cuando incorporan mecanismos de memoria cache. Normalmente, en la actualidad su nmero mximo de procesadores est entre 16 y 32. Algunos sistemas como el Sun El0000 logran escalar hasta 64 procesadores con arquitectura UMA. En este sistema se emplea un bus denominado Gigaplane-XB. Es un bus hbrido, es decir, compartido en direcciones y con crossbar en datos, y soporta un ancho de banda cercano a los 13 Gbytes. Estas prestaciones facilitan que el sistema logre escalar hasta 64 procesadores. Sin embargo, algunas mejoras pueden realizarse dotando a cada procesador de una memoria local, en la que se almacena el cdigo que se est ejecutando en el procesador y aquellos datos que no tengan que ser compartidos por los otros procesadores y, por tanto, son locales a ese procesador. Mediante esta estrategia se evitan accesos a memoria a travs de la red de interconexin relacionados con bsquedas de cdigo y datos locales, lo que mejora la eficacia del sistema. Esta modificacin de la arquitectura es conocida como memoria compartida con acceso no uniforme a memoria y se ilustra en la Figura 2.13.a. Teniendo en cuenta este esquema y considerando el tiempo que un procesador necesita para acceder a memoria local y global, las memorias compartidas se clasifican en memorias de acceso uniforme, UMA, y no uniforme, NUMA. En las primeras, el tiempo de acceso a memoria es el mismo para cualquier palabra, mientras que en las segundas difiere de una a otra Los sistemas de memoria compartida de acceso no uniforme son tambin conocidos como sistemas de memoria compartida distribuida, DSM (Distributed Shared Memory). La idea de distribuir la memoria compartida puede llevarse al lmite eliminando completamente el bloque de memoria compartida comn, la global, tal y como se muestra en la Figura 2.13.b, siempre y cuando los tiempos de acceso a las memorias locales sean muy inferiores al tiempo de acceso por la red de interconexin. En este diseo los accesos de un procesador a las memorias locales de los otros se realizan mediante el control de un hardware especfico. Obviamente esta arquitectura es NUMA. Los primeros sistemas paralelos tipo UMA se desarrollaron a principios de la dcada de los 60, entre los que destacan Burroghs 5500, CDC 3600 y el ZBM System/360 Model 50, mientras que el primer sistema NUMA, el CMU C.mmp, no surgi hasta principios de los 70. Fue a principios de los 90 cuando estos sistemas comenzaron a desarrollarse extraordinariamente, apareciendo el primer sistema comercial, el KSR-I, que incorporaba 32 procesadores en anillo.

a) Arquitectura de memoria compartida con acceso no uniforme a memoria. b) Memoria compartida con acceso no uniforme a memoria slo con memoria local.

El sistema KSR-1 es especialmente importante porque fue el primero que mantena coherencia por hardware. Este tipo de sistemas, cuyo esquema se muestra en la Figura 2.14, se denominan ccNUMA (NUMA con coherencia hardware), y tambin son conocidos como multiprocesadores simtricos escalables, S-SMP (Scalable Symmetric Multi-Processors) . Posteriormente se desarrollaron prototipos como el Standford DASH a partir de los que se comercializaron sistemas como el SGZ Origin 2000, a mediados de los 90. La Figura 2.15 muestra la estructura de este sistema. En la actualidad la mayora de los sistemas desarrollados con arquitecturas de memoria compartida son NUMA, como por ejemplo los sistemas TC-2000, Standford Dash y el Blue Mountain de SGZ, que est considerado como uno de los ms potentes del mundo. La escalabilidad de esta arquitectura es muy superior a la UMA. No es extrao encontrar sistemas con 512 nodos, e incluso existen con 2.048 nodos.

Arquitectura ccNUMA.

a)

Nodo. b) Red de interconexin

En general, el esquema de la arquitectura NUMA no requiere del empleo de mecanismos especiales que aseguren que todos los nodos tienen un conocimiento coherente del espacio de direcciones global. Es posible manejar un espacio comn de direcciones y que sea el programador el encargado de manipular el contenido de esas direcciones de memoria evitando cualquier falta de coherencia. Esta es la aproximacin empleada, por ejemplo, en el Cray T3E. Evidentemente, en las arquitecturas NUMA la red de interconexin juega un papel fundamental. Es necesario sealar que, dado que cada procesador ve un espacio comn de direcciones a nivel lgico pero que realmente est distribuido a nivel fsico, cada uno de los accesos a posiciones de memoria que se encuentran fuera del rango mantenido por el nodo local se convertir en accesos remotos. La comunicacin entre nodos se realiza a travs de peticiones de bloques de forma transparente al programador. Para que el sistema sea eficaz, la latencia de la red de interconexin no debe incrementar los tiempos de los accesos remotos excesivamente ya que, aunque el nmero de accesos remotos fuese muy inferior al de accesos locales, un coste elevado en cada fallo afectara de forma drstica al rendimiento global del sistema. Por otro lado, dependiendo de cmo se comparta la informacin garantizando la coherencia en memoria, la arquitectura NUMA puede clasificarse en dos grupos: ccNUMA y COMA (Cache-Only Memory Access). En los sistemas ccNUMA cada nodo contiene una porcin de la memoria total del sistema. Las variables compartidas se reparten directamente por el programador o por la mquina haciendo uso del sistema operativo, de manera que slo existe una nica copia de cada variable en la memoria principal. La coherencia se mantiene normalmente mediante directorios. Esta estrategia fue desarrollada con anterioridad a otras como las basadas en el protocolo snoopy. En general, cada nodo puede constar de uno o varios procesadores con sus caches, una memoria principal y un directorio. Las variables compartidas estn almacenadas en un nico nodo denominado home, que se encarga de que el resto del sistema mantenga una visin coherente de la variable compartida. As, al cambiar su valor, este nodo es el encargado de actualizar o invalidar el resto de copias que existan a lo largo del sistema. En algunos casos, los procesadores no incluyen memoria local sino que slo poseen cache. A esta modificacin se le denomina acceso nico a memoria cache, COMA. Un ejemplo de este tipo es el sistema KSR-I. La idea bsica de la arquitectura COMA es emplear la memoria local de cada nodo del multiprocesador como si fuese una cache del resto del sistema, transfiriendo los datos de cada nodo en funcin de las necesidades del cdigo en ejecucin. Esta idea es anloga a la de cache de un sistema monoprocesador, de modo que la memoria local de un nodo acta como cache y el conjunto de la memoria local de los otros nodos sera el equivalente a la memoria principal. Si un procesador tiene que acceder repetidamente a una posicin de memoria que se encuentra en un nodo remoto se puede copiar la

posicin de memoria remota en la memoria local, y en los siguientes accesos no habr que realizar un acceso remoto para acceder al dato. Los esquemas de coherencia de cache ms utilizados en esta arquitectura son los de directorios o de directorios distribuidos. La ventaja fundamental de los sistemas COMA es que son capaces de tratar los fallos de acceso remoto distribuyendo automticamente por el sistema los datos que est utilizando la aplicacin. La principal desventaja es la complejidad para mantener la coherencia de las copias de las variables a lo largo de todo el sistema, ya que no existe una nica copia segura, como sucede en el caso ccNUMA. Existen algunos prototipos del modelo COMA como el StanFord Flash o I-ACOMA entre otros, y sistemas como el KSR-I y el KSR-2 podran ser incluidos dentro de esta categora. Evidentemente el concepto genrico de memoria compartida puede aplicarse tanto a sistemas SIMD como MIMD, aunque por las razones explicadas en la Seccin anterior el inters se centra en los MIMD. A la combinacin de MIMD y memoria compartida se le denomina multiprocesadores simtricos (SMP, Symmetric Multiprocessors). Los sistemas SMP suelen tener de 2 a 64 procesadores, y se les suele conocer como la arquitectura que comparte todo, es decir, todos los procesadores utilizan conjuntamente la totalidad de los recursos que tenga disponible el sistema (bus, memoria, mdulos de entrada y salida, etc.). Por otro lado, en los sistemas SIMD nicamente se ejecuta una copia del sistema operativo. Debido a ello, esta forma de paralelismo es mejor aprovechada por un sistema operativo multihebra (MultiThreaded) , como por ejemplo Windows NT, utilizando un procesador para cada hebra. Las aplicaciones del usuario en un sistema SMP tambin pueden utilizar un sistema de programacin de alto nivel como las hebras (Threads), o un estndar de memoria compartida como OpenMP, o incluso alguna biblioteca de bajo nivel como SVr4 IPC shm (Standar UNIX System V Release 4 para Comunicacin entre Procesos usando Memoria Compartida) para aprovechar dicho paralelismo. Un ejemplo caracterstico de arquitectura ccNUMA es el sistema HP-Convex Exemplar SPP S2000 scalable parallel processor. Est constituido por elementos denominados hipernodos, que son a su vez multiprocesadores simtricos, SMPs, de hasta 16 procesadores PA-RISC 8000 con 16 Gbytes de memoria. El rendimiento del sistema es de 5,76 Gigaflops. Cada procesador posee una memoria cache externa de 2 Mbytes, un megabyte de datos y otro de instrucciones, y se direcciona haciendo uso de 32 bits. Un sistema formado por un solo hipernodo se denomina de clase S mientras, que un sistema de varios hipernodos se denomina de clase X.

La memoria est fsicamente distribuida entre los hipernodos pero es compartida virtualmente, es decir, un procesador de un hipernodo puede direccionar cualquier posicin de memoria del sistema como si se tratara de un espacio de direcciones global nico. Esta estructura facilita notablemente la programacin del sistema. La comunicacin entre los procesadores de un hipernodo se realiza a travs de una red crossbar nobloqueante capaz de mantener un ancho de banda de 960 Mbytes. Los hipernodos estn conectados entre s a travs de lo que se denomina CTI (Coherent Toroidal Interconnect), que es una red a modo de toro. Cada anillo es unidireccional, por lo tanto el acceso remoto no depende de la distancia entre hipernodos. Por otro lado, un ejemplo tpico de arquitectura COMA es el KSRl (Kendall Square Research). Durante sus seis aos de desarrollo pas de ser una arquitectura compuesta por 8 nodos con un rendimiento de 320 Mflops, 256 Mbytes de memoria y 210 Gbytes de disco a una arquitectura de 1.088 nodos con un rendimiento de 43 Gflops, 34 Gbytes de memoria y 15 Tbytes de disco. En este sistema el espacio de direccionamiento est formado por una coleccin de caches y por un controlador denominado ALLCACHE, que realiza el control de la coherencia de la cache basndose en un esquema de directorios distribuidos. El sistema est constituido por mdulos de procesamiento formados por 32 nodos APDR (ALLCACHE processor, router and directory - ALLCACHE procesador, enrutador y directorio) con 1 Gbyte de memoria cache. A su vez, cada APDR contiene una unidad de coma flotante de 64 bits y una unidad de procesamiento de enteros de 64 bits. El esquema de directorios distribuido seimplementa con el uso de una matriz en la cual cada fila representa una subpgina y cada columna representa una cache local. Un elemento de la matriz est vaco si la correspondiente memoria cache local no contiene ninguna copia de una subpgina. Para evitar mantener una matriz prcticamente vaca (sparse matrix) se guardan slo las celdas que no se encuentran vacas. Los estados de estas celdas pueden ser cuatro:
-

EO (Exclusive Owner): Propietario exclusivo. Es la nica copia vlida en toda la mquina. C (Copy): Copiar. Al menos dos copias vlidas de la subpgina estn en el sistema. NO (Not Exclusive Owner): Propietario no exclusivo. Cuando varias copias de la subpgina existen y una de ellas se marca como de propiedad no exclusiva. I (Invalid): Invlido. Aunque existe una copia de la subpgina en la cache local, esta es no vlida y no se puede usar.

b) Sistemas de memoria distribuida o multicomputadores


En los sistemas de memoria distribuida cada procesador dispone de su propia memoria, denominada local o privada, independiente del resto y accesible slo por su procesador. La comunicacin se realiza por paso de mensajes, es decir, para que un dato que reside en la memoria de un procesador pase a la de otro, el primero debe construir un mensaje por software, enviarlo a travs de una red de interconexin y el segundo debe recibirlo. Como puede observarse es un mecanismo ms complejo que con memoria compartida. La Figura 2.17.a muestra el esquema bsico de la arquitectura distribuida. Esta arquitectura es tambin conocida como arquitectura de memoria privada o arquitectura de paso de mensajes. La misin de la red de interconexin es facilitar el paso de mensajes entre los procesadores nodo. El concepto de paso de mensajes parece ser la estrategia dominante en los sistemas con gran nmero de procesadores (mayor que 100), y es especialmente til en entornos donde la ejecucin de los programas puede dividirse en pequeos subprogramas independientes. La latencia de red puede ser alta, pero para analizar el ancho de banda es necesario atender a otro factor de eficiencia de los sistemas paralelos conocido como granularidad del computador paralelo. En general, se entiende por granularidad del computador paralelo el cociente entre el tiempo requerido para realizar una operacin bsica de comunicacin y el tiempo requerido para realizar una operacin bsica de clculo de los procesos. Para un tiempo dado de operacin bsica de clculo ofrece una medida del nmero y del tamao de los paquetes de informacin utilizados en las comunicaciones. En los sistemas de paso de mensajes para lograr un uso adecuado del ancho de banda es necesario realizar un cuidadoso reparto de los datos sobre los procesadores con el fin de disminuir la

granularidad de las comunicaciones. Por disminuir la granularidad de las comunicaciones se entiende minimizar el nmero de mensajes y maximizar su tamao. Evidentemente, aunque el concepto genrico puede aplicarse a sistemas SIMD, tambin es aplicable a sistemas MIMD. A la combinacin de sistema MIMD con arquitectura de paso de mensajes se le conoce como multicomputadores.

a)

Esquema de la arquitectura distribuida. b) Ejemplo del IBM SP-2.

Los sistemas con memoria distribuida o multicomputadores pueden, a su vez, ser un nico computador con mltiples CPUs comunicadas por un bus de datos o bien mltiples computadores, cada uno con su propio procesador, enlazados por una red de interconexin ms o menos rpida. En el primer caso se habla de procesadores masivamente paralelos (MPPs, Massively Parallel Processors), como los Fujitsu VPP, ZBM SP2 o SGZ T3E; y en el segundo se conocen de forma genrica como cluster. Un cluster, a nivel bsico, es una coleccin de estaciones de trabajo o PCs interconectados mediante algn sistema de red de comunicaciones. En la literatura existente de arquitecturas paralelas se utilizan numerosos nombres para referirse a un cluster, entre los que dest acan:

O O O O

Redes de estaciones de trabajo (NOWs, Network of Workstations). Redes de PCs (NOPCs, Network of PCs). Cluster de estaciones de trabajo (COWs, Cluster of Workstations). Cluster de PCs (COPCs, Cluster of PCs).

Realizando una clasificacin estricta, los clusters pueden ser de dos tipos dependiendo de si cada computador del cluster est o no exclusivamente dedicado a l. Si es as, se habla de un cluster de clase

Beowulf. En cualquier otro caso se suele definir al cluster como NOW. En muchas ocasiones los trminos cluster y Beowulf se confunden y se utilizan indistintamente. El trmino Beowulflo utiliz la NASA para dar nombre a un proyecto que pretenda construir un ordenador capaz de alcanzar el gigaflops a partir de componentes asequibles. Y lo consiguieron, el Beowulf original de 1994, con 16 procesadores 486 DX4 ejecutando Linux, fue capaz de alcanzar 1,25 Gigaflops. El trmino no se debe a razones tcnicas. Beowulfera un guerrero escandinavo del siglo VI cuyas aventuras se relatan en el primer texto conocido en lengua inglesa (similar al Cantar del Mo Cid en la lengua espaola). Las caractersticas ms relevantes de los sistemas Beowulf son las siguientes:
-

Un sistema Beowulfes un conjunto de nodos minimalistas4 conectados por un medio de comunicacin barato, en el que la topologa de la red se ha diseado para resolver un tipo de problema especfico. Cada nodo de un Beowulf se dedica exclusivamente a procesos del supercomputador. En una red de estaciones de trabajo (NOWs) suele existir un switch central para realizar las comunicaciones, mientras que en un Beowulf el mecanismo es ms rudimentario: conexiones placa a placa por cable RJ-45 cruzado. La programacin de un Beowulf es fuertemente dependiente de la arquitectura y siempre se realiza por paso de mensajes. Para programar un Beowulf en primer lugar se disea el modelo de paralelismo, se observan cmo son las comunicaciones entre los nodos y se implementan fsicamente. De esta forma se evita el hardware innecesario a cambio de una fuerte dependencia entre el software y la topologa de la red. En caso de que cambie el problema hay que recablear el sistema. Comparacin de los sistemas de memoria compartida y distribuida:

b)

Las arquitecturas NUMA y distribuida son similares en la distribucin de memoria. La principal diferencia radica en el hecho de que la NUMA requiere un hardware especfico para la lectura y escritura en las memorias de los otros procesadores, mientras que en la memoria distribuida se realizan los accesos remotos mediante mensajes. Como puede observarse, es inmediato construir una arquitectura distribuida con n procesadores a partir de una arquitectura de memoria compartida con el mismo nmero de procesadores. Para ello basta con dividir el espacio de direcciones de la memoria compartida en n partes disjuntas y asignar una a cada procesador para su uso exclusivo. Los mensajes entre procesadores se realizan de manera que el procesador origen escribe en el bloque de memoria asignado al procesador destino. Por otro lado, construir un sistema de memoria compartida a partir de uno de memoria distribuida es sencillo aunque su programacin no es tan elemental, ya que para acceder a la memoria de otro procesador es necesario enviar y recibir mensajes. La Figura 2.18 muestra diversas realizaciones de arquitecturas UMA en la que los nodos son procesadores o computadores. Otra ventaja de los sistemas de memoria compartida es la rapidez con la que los procesadores pueden acceder a grandes estructuras de datos. Sin embargo, las arquitecturas compartidas presentan algunas desventajas que deben tenerse en cuenta. En muchos casos, las aplicaciones desarrolladas segn el esquema de memoria compartida suelen ofrecer peores prestaciones que las basadas en paso de mensajes. La explicacin a estos resultados hay que buscarla en el menor control que tiene el programador sobre la localizacin de los datos. Esto conduce a prdidas de rendimiento por diversos factores como son: la contencin de memoria, el acceso a memorias no locales, el coste temporal debido al soporte de coherencia de cache, especialmente cuando dos procesadores acceden en paralelo a celdas de memoria correspondientes a una misma lnea cache y alguno de ellos la modifica, con lo que el dato se comparte con valores falsos. Este ltimo problema, conocido como false sharing (compartidos falsamente) es un inconveniente de especial relevancia.

Las caractersticas de las arquitecturas NUMA hacen que estos sistemas sean altamente escalables, sin embargo son muy sensibles al reparto de datos que se realiza en la memoria local ya que el acceso a estas memorias es mucho ms rpido que el acceso a la memoria remota. El diseo de este tipo de mquinas se asemeja al diseo de multicomputadores de memoria distribuida, si bien la principal diferencia con estas arquitecturas radica en la forma de organizar la memoria y el acceso a la misma. En un sistema multicomputador cada memoria local utiliza un nico espacio de direccionamiento y este direccionamiento se realiza localmente en cada memoria local. Por tanto, un procesador no puede acceder directamente a la memoria local de otro. Esta propiedad determina el software de estos sistemas. As, el mecanismo ms comn de comunicacin en multicomputadores de memoria distribuida se basa en el paradigma de paso de mensajes, mientras que las arquitecturas NUMA se programan basndose en un nico espacio global de direccionamiento (memoria compartida) para toda la arquitectura. Actualmente estas dos arquitecturas se suelen entremezclar, como por ejemplo en el CRAY T3E. Tambin es comn la implementacin del acceso a las memorias locales de otros procesadores usando el paso de mensajes a pesar de tratarse de mquinas NUMA. El problema de la coherencia de cach no es tal en las arquitecturas de memoria distribuida, puesto que el paso de mensajes explcitamente maneja de forma independiente distintas copias de las estructuras de datos usadas. Sin embargo, es fundamental en los sistemas de memoria compartida, en los que el acceso mltiple a las estructuras de datos globales se realiza usando copias de los mismos en las memorias. Desde el punto de vista de la programacin, los sistemas de memoria compartida suelen ser ms sencillos que los de memoria distribuida. En los primeros basta en general con establecer algunas directivas de compilacin en el cdigo secuencia1 paila obtener el cdigo paralelo, mientras que en las segundas deben programarse explcitamente todas las comunicaciones. Adems, los sistemas de memoria compartida son significativamente ms caros que los de memoria distribuida, debido de nuevo a razones de economa de escala.

3 RESUMEN DE LA CLASIFICACIN DE LAS ARQUITECTURAS PARALELAS

En primer lugar segn la clasificacin de Flynn basada en el flujo de instrucciones y el flujo de datos que se desarrolla en los procesadores, los sistemas paralelos pueden dividirse en sistemas SIMD (Single Instruction, Multiple Data) y MIMD (Multiple Instruction, Multiple Data), ya que los SISD (Single Instruction, Single Data) no son paralelos y los MISD (Multiple Instruction, Single Data) no tienen inters prctico en general. Teniendo en cuenta el criterio basado en la organizacin del espacio de direcciones de memoria, los sistemas MIMD se dividen en sistemas de memoria compartida o memoria distribuida. A la combinacin de MIMD y memoria compartida se le denomina multiprocesadores simtricos (SMP, Symmetric Multiprocessors), mientras que a la combinacin de sistema MIMD con arquitectura de paso de mensajes se le conoce como multicomputadores. Estos ltimos pueden ser procesadores masivamente paralelos (MPPs, Massively Parallel Processors) constituidos por nico computador con mltiples CPUs comunicadas por un bus de datos o cluster formados por mltiples computadores, cada uno con su propio procesador, enlazados por una red de interconexin ms o menos rpida. Por ltimo, los clusters pueden ser de dos tipos dependiendo de si cada computador del cluster est o no exclusivamente dedicado a l. Si es as, se habla de un cluster de clase Beowulf y si no se denominan NOWs.

4 OTROS CRITERIOS DE CLASIFICACIN


La anterior clasificacin, siendo muy completa e ilustrativa, no puede considerarse definitiva. De hecho, atendiendo a otros factores o desde otros puntos de vista, se pueden realizar taxonomas diferentes. As por ejemplo, tanto las arquitecturas de memoria compartida como las de memoria distribuida pueden construirse a partir de procesadores y unidades de memoria mediante redes de interconexin. Estas redes son de una variedad muy amplia, y pueden ser clasificadas en dos clases: estticas y dinmicas. Las redes estticas, tambin denominadas directas, se caracterizan porque la comunicacin se realiza punto a punto entre los procesadores. Estas redes se aplican normalmente a las arquitecturas de paso de mensajes, y sern analizadas en detalle en el Captulo 4, dedicado a las arquitecturas distribuidas. Las redes dinmicas, sin embargo, se construyen con switches, hubs o enlaces de comunicacin, que se conectan dinmicamente para establecer caminos entre los procesadores y los bancos de memoria. Estas redes, tambin denominadas indirectas, suelen ser utilizadas para los sistemas de memoria compartida. Por esta razn sern analizadas en el Captulo 3, dedicado a este tipo de sistemas.

Desde otro punto de vista, los sistemas paralelos se clasifican segn la potencia y el nmero de los procesadores que los constituyen. A este factor se le denomina granularidad de procesador. Si son pocos procesadores pero muy potentes se dice que son computadores de grano grueso (coarse-grain), mientras que si son muchos pero menos potentes se denominan de grano fino (fine-grain). As por ejemplo, los computadores Cray Y-MP son de grano grueso ya que constan de 8 a 16 procesadores cada uno de varios Gigaflops. Los computadores MasPar MP-1 contienen ms de 16.384 procesadores de cuatro bits, siendo evidentemente de grano fino. Entre ellos se establecen los de grado medio, como por ejemplo las computadoras nCUBE 2 y Paragon XP/S que tienen algunos miles de procesadores cada uno del tipo de las estaciones de trabajo. De nuevo debido a razones de economa de escala, los computadores de grano grueso son mucho ms caros que los d grano fino y medio, ya que los procesadores de los primeros no se fabrican a nivel industrial, y su tecnologa de fabricacin es considerablemente ms costosa. Como ya se indic anteriormente, se entiende por granularidad del computador paralelo al cociente entre el tiempo requerido para realizar una operacin bsica de comunicacin y el tiempo requerido para realizar una operacin bsica de clculo de los procesos. Cuando este cociente es pequeo estos computadores se pueden utilizar con algoritmos que necesiten comunicaciones frecuentemente, y anlogamente si es grande sern adecuados para algoritmos que no necesiten muchas comunicaciones. Atendiendo a este criterio, multicomputadores comerciales como el nCUBE 2 y el Paragon XP/S seran de granogrueso, mientras que multiprocesadores como el TC-2000 o el KSR-I seran de grano fino.

2.5 REDES DE INTERCONEXIN


La importancia de las redes de conexin en los sistemas paralelos es evidente, ya que en esencia un computador paralelo se constituye con un conjunto de elementos que cooperan entre s utilizando un medio para el intercambio de informacin. Independientemente de que el sistema paralelo pertenezca a uno u otro grupo de la clasificacin anterior, el rendimiento de la red de interconexin ser un factor fundamental para la eficiencia del sistema. En general, se entiende que la red de interconexin es eficaz u ptima cuando la capacidad de clculo del sistema est equilibrada con respecto a la capacidad de transmisin de la red de interconexin. Cuando la capacidad de clculo se incrementa, las caractersticas de la red deben mejorarse en sintona con ella. Las mejoras en las capacidades de la red de interconexin se han desarrollado a la par que en la tecnologa VLSI. Sin embargo, existen algunas limitaciones especficas para el desarrollo de las redes de interconexin. En primer lugar el coste es mayor, por lo que en el caso ideal, en el que se dispondra de enlaces individualizados entre todos los elementos de clculo, resultara muy costoso. Adems, existen limitaciones fsicas, como los retrasos inherentes a todo sistema de comunicacin. Por todo ello, al disear un sistema paralelo es fundamental analizar detenidamente la red de interconexin. Adems, los avances en los elementos de clculo hacen que, cada vez ms, la red de interconexin se convierta en el factor limitante de la velocidad de los sistemas paralelos. La red puede limitar el rendimiento del sistema debido a dos factores bsicos. El primero es porque el tiempo de acceso sea demasiado elevado, y el segundo se debe a que la cantidad de informacin que se puede tratar sin desbordarse sea demasiado baja. En ambos casos, el rendimiento en la transmisin de informacin entre los elementos de clculo disminuir y con ello la eficacia del sistema. Los factores de la red de interconexin que ms influyen en el rendimiento del sistema son fundamentalmente cuatro: la topologa, el mecanismo de conmutacin, el control de flujo y el algoritmo de encaminamiento. Respecto a la topologia, existe gran variedad, que va desde las estructuras sencillas de bajo coste y poco escalables, hasta los grafos ms complejos. Entre las primeras se encuentran las redes de medio compartido cuyo mximo exponente es el bus, mientras que de las segundas existe una enorme variedad de posibilidades, clasificadas en redes directas e indirectas, tal y como se indic en la Seccin anterior. Este aspecto ser detenidamente analizado en los captulos 3 y 4. Respecto al mecanismo de conmutacin, el hecho fundamental es que en la actualidad se emplea conmutacin de paquetes, aunque bien es cierto que en un principio se utilizaron tcnicas de

conmutacin de circuitos, consistentes en abrir y reservar un camino fsico (un hilo de cobre o cable) entre el par origen-destino. Esta tcnica slo es eficaz si la cantidad de informacin a enviar es elevada y/o la fluctuacin en el ritmo de transferencia es muy baja, que es la situacin contraria a la habitual en un sistema multiprocesador. En la conmutacin de paquetes no se reserva el medio, sino que la informacin se transmite en forma de paquetes siguiendo bien un camino establecido previamente o bien buscando su propia ruta al nodo destino. Aunque esta tcnica implica la incorporacin de arbitrajes para gestionar los fenmenos de contencin, permite aumentar significativamente el nivel de ocupacin de la red. El tercer factor es el control de flujo empleado. En los primeros multiprocesadores se utiliz la tcnica de control de flujo store-and-forwards, bien establecida en las redes de rea local. En esta estrategia cada paquete se almacena completamente en los nodos intermedios antes de ser reenviado al siguiente nodo de la ruta en busca del nodo destino. Por ello, la distancia topolgica de la red multiplica la latencia de los mensajes, con lo que es absolutamente inapropiado para los sistemas paralelos. En 1979, Kermani y KZeinrock introdujeron la tcnica de control de flujo virtual cut-through6 (control de flujo segmentado). En ella cada unidad mnima de informacin intercambiable entre routers, denominada phit, puede ser reenviada al siguiente router, sin haber recibido todo el paquete. Para realizar esta estrategia es necesario que los encaminadores tengan cierta capacidad de almacenamiento, pero a cambio la distancia topolgica se suma a la latencia, en vez de multiplicarla, con lo que el rendimiento del sistema mejora significativamente. Cuando la unidad mnima sobre la que se realiza el control de flujo, denominada pit, es menor que el paquete, el control de flujo es denominado wormhole. Cada flit puede estar formado por uno o varios phits. Con wormhole se reduce la capacidad de almacenamiento necesaria en cada encaminador a un nico flit. Por estas razones el wormhole es el mecanismo de control de flujo ms utilizado en la prctica. El cuarto factor es el algoritmo de encarninamiento, es decir, el mtodo utilizado para elegir el camino entre cada origen y destino. La primera idea es sencilla y consiste en fijar una ruta predeterminada. Este tipo es denominado encaminamiento determinista. En l, los encaminadores son sencillos, rpidos y de bajo coste. Su principal desventaja es que puede provocar grandes desbalanceos en los niveles de ocupacin de los recursos en numerosas situaciones de trfico. Como alternativa apareci el encaminamiento adaptativo en el que la eleccin del camino depende de los nodos origen y destino y, adems, del estado de la red en el momento de la transmisin. Los encaminadores adaptativos son mucho ms complejos, con lo que aumenta su coste y disminuye su rapidez. Teniendo en cuenta todos los factores fundamentales en una red de interconexin, pueden realizarse encaminadores mediante combinaciones de las estrategias elaboradas para cada uno de ellos. Sin embargo, existen algunas limitaciones que impiden el rendimiento eficaz de algunas de ellas. La ms importante es el interbloqueo, o deadlock, que se produce en la transmisin de los paquetes. Es debido fundamentalmente al tipo de topologa, control de flujo y encaminamiento elegido y tiene como consecuencia la inutilizacin del subsistema de interconexin. Otros hechos a tener en cuenta son la inanicin7, o starvation, que para evitarse puede requerir una asignacin de recursos equitativa, y el livelock, efecto relacionado con la utilizacin de encaminamiento no mnimo, es decir, con que la transmisin de los paquetes por la red no se realice por el camin ms corto. Con el fin de obtener una visin completa de sistemas reales seguidamente se presentan las caractersticas bsicas de algunos encaminadores actuales.

2.5.1 Caractersticas bsicas de algunos encaminadores


Se muestra las propiedades de las redes de interconexin anteriormente descritas para diversos prototipos y computadores comerciales. Como se puede observar, desde el empleo inicial de enlaces de un bit, como en el caso del nCUBE/2, se ha llegado a enlaces de 20 bits como en el Origin.

Anlogamente se observa que las mejoras en el desarrollo producen una reduccin en la duracin del ciclo.

Seguidamente se muestran las caractersticas fundamentales para algunos computadores bien conocidos. Cray T3E El Cray T3E es el exponente de la segunda generacin de una familia de sistemas multiprocesador que comenz con el Cray T3D. La red de interconexin en ambos sistemas es un toro 3-D. Cada unidad de proceso est formada por un DEC Alpha 21164, 2 Gbytes de memoria, un router de comunicacin y un mdulo de control. Cada procesador es capaz de procesar instrucciones por periodo de reloj, llegando a tener un pico de hasta 600 Mflops para procesadores de 300 Mhz y 900 Mflops para procesadores de 450Mhz. Este procesador soporta aritmtica de 32 y 64 bits. Puede estar compuesto por 16 a 2.048 unidades de proceso conectados mediante una red bidireccional en toro tridimensional, lo que implica un gran ancho de banda. El sistema cuando se configura con un nmero de procesadores no superior a 128 se refrigera por aire. Si se aumenta el nmero de unidades de proceso la refrigeracin es por lquido. El sistema de memoria est compartido a nivel lgico y fsicamente distribuido, con lo que todos los procesadores tienen su propia memoria local y adems pueden acceder a la memoria de los otros procesadores sin necesidad de utilizar un protocolo de paso de mensajes. Este multiprocesador se puede programar utilizando un modelo de paso de mensajes (MPI o PVM), o recurriendo a un modelo de programacin de memoria compartida (HPF). El T3E aumenta la capacidad de memoria del microprocesador DEC 21164 con un conjunto de registros externos (Eregistros). Estos registros se utilizan como fuente o destino para las comunicaciones remotas. Todas las comunicaciones remotas y las sincronizaciones se realizan usando estos registros y la memoria. La memoria cache posee dos niveles. El primero es una cache con 8 Kbytes para datos y 8 Kbytes para instrucciones, y la segunda cache es de 96 Kbytes siendo utilizada tanto para instrucciones como para datos. En este sistema, muchas caractersticas del encaminador y de la red son las mismas que las usadas en la primera generacin de estas arquitecturas, pero otras son completamente diferentes. El objetivo principal en su desarrollo fue conseguir tolerar la latencia de la comunicacin para un rango de cargas mayor que los contemplados en la primera generacin. Para ello se hizo uso de canales de comunicacin multiplexados con una mayor capacidad real. El encaminador opera a 75 MHz y durante un nico ciclo de reloj se envan 5 phits. Los canales de comunicacin son de 14 bits de ancho con lo que la unidad mnima de informacin que puede manejar el router es de 70 bits. Con ello cadaflit puede transportar una palabra de 8 bytes ms 6 bits de informacin adicional. En este sistema el control de flujo empleado en la comunicacin es wormhole. La red de

comunicacin posee un ancho de banda de hasta 600 MBytes en cada direccin. Para asegurar una conexin con un gran ancho de banda y a su vez escalable entre los nodos del sistema y los diferentes dispositivos de entrada y salida (ya sean redes, discos ...) el CRAY T3E utiliza un canal GigaRing escalable. Cada canal del GigaRing esta conectado al sistema Torus y a su subsistema de 1/0 a travs de mltiples puertos, en caso de que una ruta no sea disponible los canales y el sistema pueden ser reconfigurados para tomar rutas alternativas, esto facilita el mantenimiento fsico del sistema. La Figura 2.20 muestra el esquema de este encaminador. En el encaminador del Cray T3D el mecanismo de encaminamiento tambin es diferente. Dispone de un canal virtual adicional completamente adaptativo, con cuatro canales virtuales deterministas. Con ellos se evita el deadlock en la red de interconexin. Los canales deterministas emplean un mecanismo de encaminamiento en orden de direccin. Dos de los canales virtuales deterministas son empleados exclusivamente por el trfico de peticiones y los otros dos por el de respuestas, evitando de esta manera el interbloqueo. El tamao de los paquetes que puedemanejar este router es de hasta 10 flits y la capacidad de almacenamiento temporal por canal sonde 22 flits para los canales adaptativos y de 12 flits para los canales deterministas.

Myrinet

Myrinet es una red de interconexin ideada para NOWs (Network Of Workstations) de una red LAN con caractersticas particulares para su utilizacin en NOWs. As p (virtual cut-through). Consta de dos elementos bsicos: de red y los conmutadores. Ambos elementos se pueden combinar de diversas formas diferentes topologas irregulares. Un ejemplo de red con por control de flujo es segmentado obtenindose Myrinet. La Se trata ejemplo, en las interfaces interfaz de red incorpora un pequeo

procesador especfico denominado Owai encargado de controlar el flujo de informacin entre el host y la red. La Figura 2.22 muestra su esquema. Est situado en el bus de entrada/salida del host. La interfaz dispone de una memoria para almacenar los mensajes a procesar y el cdigo a ejecutar por el LANai. El software que controla y facilita el acceso a Myrinet est repartido entre el sistema operativo del host, el controlador del dispositivo y el programa de control de la interfaz. El programa de control de la interfaz se denomina MCP (Myrinet Control Program) y es ejecutado por el procesador LANai. El MCP es cargado inicialmente por el controlador de dispositivo. El MCP interacta concurrentemente con la red y el host. Las tareas tpicas del MCP son el clculo y chequeo del CRC8, control del DMA, recepcin y envo de paquetes, control de encaminamiento del paquete y control en la transferencia de mensajes entre la memoria del computador y los buffers de envo y recepcin. Los conmutadores estn implementados mediante crossbars. Pueden llegar a tener hasta 16 puertos y tiempos de paso en torno a los 550 nseg. La anchura de los canales de comunicacin es de 9 bits, 8 de ellos de datos y una lnea dedicada para el envo de comandos. Los canales de comunicacin son multiplexados.

2.6 PARMETROS CARACTERSTICOS DE LOS SISTEMAS PARALELOS

Resulta evidente la necesidad de caracterizar los sistemas de clculo dado que siempre ser necesario evaluar los beneficios de un sistema, tanto individualmente como para su comparacin con los dems. As por ejemplo, para los dispositivos secuenciales el hardware se caracteriza por la capacidad del microprocesador, de la memoria, etc., y el software mediante el anlisis del coste de los algoritmos. Todas las caracterizaciones tienen como fin ltimo evaluar el tiempo de ejecucin. Desde el punto de vista del hardware, cuanto ms rpido sea ste menor ser el tiempo de ejecucin de los algoritmos. Por otro lado, en general, los mtodos de anlisis de los algoritmos proporcionan informacin del coste de los mismos caracterizndolos en funcin de las operaciones ms significativas, de manera que la comparacin entre ellos se realiza de forma inmediata e independientemente del hardware utilizado. Cuando no es posible un anlisis analtico, se realizan medidas temporales normalizadas con el mismo hardware. Como puede observarse, la influencia del software y del hardware puede estudiarse de forma independiente. Sin embargo, caracterizar los sistemas paralelos no es tarea fcil. El tiempo de ejecucin de un algoritmo paralelo depende en general de la arquitectura empleada y del nmero de procesadores. Por ello el anlisis de un algoritmo paralelo no puede evaluarse independientemente de la arquitectura paralela empleada. Con el fin de caracterizar y evaluar las prestaciones de las arquitecturas paralelas pueden establecerse un conjunto de parmetros significativos. En esta Seccin se presentan aquellos que son generales a todas las arquitecturas, como son el tiempo de ejecucin (run time), la eficiencia, ... Sin embargo, existen otros parmetros especficos para algn tipo determinado de arquitectura, como por ejemplo para las arquitecturas paralelas con redes de interconexin estticas. Esta clase de parmetros sern detallados en los captulos dedicados a sus arquitecturas. En los sistemas serie el tiempo de ejecucin, t,, viene dado por el tiempo transcurrido entre que comienza el algoritmo hasta que finaliza en el procesador secuencial. Anlogamente se define el tiempo de ejecucin paralelo, tp , como el tiempo transcurrido desde que comienza el clculo paralelo hasta que finaliza la ejecucin en todos los procesadores del sistema paralelo. La primera pregunta que cabe realizarse al considerar un sistema paralelo es cunto mejora al sistema serie o secuencial. Para caracterizar esta propiedad se define el speedup, Sup, como el cociente entre el tiempo que necesita un nico procesador y el tiempo que requiere un sistema paralelo con p procesadores idnticos. Ms precisamente el speedup se define como el tiempo de ejecucin serie, t, , del mejor algoritmo para resolver el problema dado, dividido por el tiempo utilizado por el sistema paralelo con p procesadores idnticos e iguales al utilizado en el sistema secuencial. En teora el speedup ser menor o igual que p, pero nunca mayor. Si fuese as entonces algn procesador acabara antes de t s / p , pero eso significara que el procesador serie podra resolver el problema en un tiempo menor a ts, lo cual contradice su definicin. En la prctica en algunas ocasiones puede observarse que el speedup es mayor que p, hecho conocido como speedup superlineal. Esto suele deberse a que la paralelizacin ofrece posibilidades que dejan en desventaja al algoritmo secuencial. Por ejemplo, supngase un algoritmo secuencial de clasificacin mixto, que utiliza, por ejemplo, una mezcla polifsica para ordenar en memoria secundaria y un quicksort para ordenar en memoria primaria (ver por ejemplo (Hernndez, 2000)]). Sin embargo, al paralelizar el algoritmo, los datos pueden distribuirse entre las memorias de los procesadores de manera que la necesidad de clasificar en memoria secundaria disminuir e incluso desaparecer, con lo que al ser una tarea costosa el algoritmo paralelo parece mejorar al secuencial en ms de p. Evidentemente, en estos casos la comparacin no es vlida, puesto que los algoritmos secuencial y paralelo no estn en igualdad de condiciones. De hecho, aportando memoria suficiente al sistema secuencial podra utilizarse slo un algoritmo quicksort secuencial. En principio un speedup de p slo puede darse en el caso ideal, en el que todos los procesadores pueden ocupar el 100% de su tiempo en resolver el problema. Sin embargo los sistemas paralelos requieren comunicarse para transmitir los datos entre los procesadores, para lo que se necesita un cierto tiempo. Un parmetro que caracteriza este hecho es la eficiencia, E, que es una medida del tiempo que un procesador emplea de forma til. Se define como el cociente entre el speedup y el nmero de procesadores:

y su valor estar entre O y 1. En el caso ideal, Sup = p y entonces E = 1. En los sistemas paralelos el coste viene determinado por el producto del tiempo de ejecucin paralelo y el nmero de procesadores, tp x p , que viene a expresar el tiempo total empleado por todos los procesadores. Obsrvese que en trminos de eficiencia:

Es decir, la eficiencia es el cociente entre el coste secuencial y el paralelo. Se entiende que un sistema paralelo tiene coste ptimo cuando el coste del sistema paralelo es proporcional al tiempo de ejecucin serie del algoritmo secuencial ms rpido. En trminos de eficiencia, los sistemas paralelos de coste ptimo tienen una eficiencia del orden de 1, ya que es el cociente entre coste secuencia1 y paralelo. Es decir, como tp x p = ts E = 1 . El tiempo de ejecucin paralelo puede ser diferente para un mismo problema dependiendo de cmo se divida la tarea entre los procesadores. Por ejemplo, la multiplicacin de una matriz cuadrada de dimensin n por un vector en una arquitectura hipercubo con p procesadores es ms rpida si la matriz se divide en p bloques cuadrados que en p rodajas de nip filas cada una. Por ello, la manera en que se aplican los datos sobre los procesadores es un factor importante en el diseo de los algoritmos paralelos. Aunque el concepto tamao del problema se entiende de forma intuitiva, es necesario precisarlo. Una manera inicial de establecerlo sera en funcin del tamao de los datos de entrada del problema, como por ejemplo la dimensin de las matrices, la cantidad de datos a ordenar, etc. Sin embargo, este planteamiento presenta la desventaja de que la interpretacin del tamao del problema es diferente para distintos problemas. Por ejemplo, el duplicar el tamao de una matriz implica un aumento en el tiempo de ejecucin para la suma de matrices que sera la mitad que si se multiplicaran. Una medida adecuada del tamao del problema debera ser tal que al duplicar el tamao del problema, se necesitara el doble de clculo computacional para resolverlo. Por ello se define el tamao del problema en funcin del nmero total de operaciones bsicas que deben realizarse para resolverlo. En concreto el tamao del problema, tam, se define como el nmero de etapas computacionales bsicas del mejor algoritmo secuencial. En general el tamao del problema se normaliza de manera que se considera que un paso computacional bsico'' requiere de una unidad de tiempo. Con ello, el tamao del problema ser igual al tiempo de ejecucin serie del mejor algoritmo secuencial. Como ya se indic anteriormente, los sistemas reales no ofrecen una eficiencia de uno, entre otras razones debido, por ejemplo, a la necesidad de transmitir informacin entre los procesadores, con lo que se requiere un tiempo para las comunicaciones. Lgicamente la eficiencia podr disminuir debido a otros factores adicionales. De este modo se define la funcin overhead, to, como el tiempo total empleado por todos los procesadores que excede al tiempo requerido por el algoritmo secuencial que resuelve el mismo problema en un nico procesador. Recurdese que la suma del tiempo que emplean todos los procesadores, es decir, el coste, viene dado por ptp , y el tiempo de clculo til est determinado por tam. Atendiendo a la definicin anterior, entonces el resto es overhead. As:

Como puede observarse, la funcin overhead depende tanto del tamao como del nmero de procesadores, to = to (tam,p) . Obsrvese que si el tamao del problema permanece constante y el nmero de procesadores aumenta entonces el overhead aumenta. Como ya ha sido indicado una de las principales causas de overhead es la comunicacin entre procesadores. Si cada procesador necesita un tiempo t,,, para sus comunicaciones, entonces el conjunto de los procesadores contribuirn al overhead enp t,,, . Un segundo factor fundamental que afecta al overhead es el balance de carga. En muchas aplicaciones paralelas, como la bsqueda o la optimizacin, es extraordinariamente difcil predecir el tamao de las tareas asignadas a cada procesador, de manera que se realice una divisin de las mismas para que todos mantengan la carga computacional uniforme. Cuando no es uniforme, es decir, hay desbalanceo en la carga, entonces algunos procesadores terminarn permaneciendo inactivos mientras otros todava estn calculando. Frecuentemente todos los procesadores o algunos de ellos necesitan algn sincronismo durante la ejecucin del programa, de forma que si no estn todos en la misma situacin en todo instante entonces algunos de ellos debern esperar a que otros terminen. Todo el tiempo de inactividad de los procesadores contribuye al overhead. Una tercera fuente de overhead es debida a la necesidad de utilizar algoritmos distintos para el caso paralelo y secuencial. Esto ocurre cuando el mejor algoritmo secuencial para resolver el problema es muy difcil de paralelizar. Entonces es necesario paralelizar otro de menor eficacia y con coste computacional mayor. Pero este mayor coste computacional puede encontrarse incluso cuando los algoritmos secuenciales y paralelos son iguales. Por ejemplo, la transformada rpida de Fourier paralelizada requiere ms clculos porque los resultados obtenidos en el algoritmo secuencial son reutilizables, mientras que en el paralelo no, ya que son obtenidos por diferentes procesadores. En funcin del overhead pueden establecerse un gran nmero de parmetros. Por ejemplo, despejando tp de la Ecuacin 2.2 se obtiene:

y teniendo en cuenta que el speedup vendr dado por:

y teniendo en cuenta que el speedup vendr dado por:

La interpretacin de esta expresin es importante. Obsrvese que si el tamao del problema se mantiene constante y el nmero de procesadores aumenta, el overhead aumenta y la eficiencia disminuye. Si el tamao del problema aumenta y el nmero de procesadores se mantiene constante entonces la eficiencia aumenta, ya que tp depende del tamao y to crece ms lentamente que el tamao para un p fijo. Como puede observarse, para estos sistemas paralelos cuando el tamao del problema crece se puede mantener la eficiencia aumentando el nmero de procesadores. Sin embargo no todos lo hacen del mismo modo. Por ejemplo, algunos sistemas requieren que el tamao crezca exponencialmente cuando aumenta p. Sin embargo otros slo necesitan un crecimiento lineal. Los primeros son sistemas poco escalables ya que

para mantener buenos speedups cuando aumenta p es necesario que el tamao del problema crezca enormemente, mientras que los segundos son altamente escalables. Como puede observarse en la Ecuacin 2.4 la eficiencia puede mantenerse en un valor determinado si el cociente to tam es constante. Teniendo esto en cuenta, para formalizar el concepto de escalabilidad se introduce una mtrica que permite establecer cuantitativamente el grado de escalabilidad del sistema. As, para un valor determinado de la eficiencia, despejando en la Ecuacin 2.4 se obtiene:

y K = E/(l- E) ser constante para una eficiencia dada. As:

Esta funcin se conoce como funcin de isoeficiencia, e indica la facilidad que un sistema tiene para mantener la eficiencia constante y, por tanto, la capacidad de obtener speedups crecientes proporcionalmente con el aumento de procesadores. Un valor pequeo de la funcin de isoeficiencia indica que el sistema es altamente escalable mientras que un valor grande seala que es poco escalable. Sin embargo, existe un lmite inferior para esta funcin. Para un problema dado con un nmero determinado de unidades de trabajo, tam, el nmero mximo de procesadores que pueden ser utilizados con coste ptimo es tam, ya que ms procesadores estaran inactivos. Del mismo modo, si el tamao del problema crece con una rapidez menor del O(p>" cuando el nmero de procesadores crece, entonces el nmero de procesadores ser mayor que el tamao del problema, y los que estn por encima de este valor estarn inactivos. Incluso para un sistema paralelo ideal sin coste en las comunicaciones ni overhead alguno la eficiencia disminuir debido a los procesadores inactivos. No debe olvidarse que la funcin de isoeficiencia slo se define para los sistemas paralelos que son escalables en alguna medida, ya que para los sistemas no escalables no es posible mantener constante la eficiencia al aumentar el nmero de procesadores, sin entrar siquiera a considerar el crecimiento del tamao. Por tanto, para mantener la eficiencia el tamao del problema debe crecer asintticamente al menos tan rpido como @(p) , por ello SZ(p)12 es el lmite inferior asinttico de la funcin de isoeficiencia.

La funcin de isoeficiencia engloba las caractersticas del sistema paralelo completo, es decir, tanto de la arquitectura paralela como del programa. Una vez realizado el anlisis de esta funcin pueden analizarse las caractersticas del programa paralelo sobre un nmero pequeo de procesadores y predecir el comportamiento sobre un nmero mayor, con lo que puede estimarse si conviene o no aumentarlos. Pero adems es capaz de caracterizar el paralelismo inherente en un programa paralelo, y tambin es fundamental para analizar el comportamiento de un sistema paralelo ante cambios en los parmetros del hardware, como la velocidad de los procesadores o la velocidad de las comunicaciones. Otra relacin de inters es la que se establece entre el tamao del problema y la funcin overhead. Recurdese que un sistema paralelo es de coste ptimo si el producto entre el nmero de procesadores y el tiempo de ejecucin paralelo es proporcional al tiempo de ejecucin del mejor algoritmo secuencia1 en un nico procesador, es decir:

Remplazando:

Como puede observarse de los anteriores razonamientos, la funcin overhead es el parmetro crtico que caracteriza a los sistemas paralelos, ya que para una funcin overead determinada, el tiempo de ejecucin paralelo, el speedup, la eficiencia y el coste pueden expresarse en funcin del nmero de procesadores y del tamao del problema. Por ltimo, son de inters dos parmetros que determinan valores mnimos. El primero de ellos es el tiempo mnimo de ejecucin, tFin, que indica cul es el menor tiempo de ejecucin posible de un algoritmo paralelo, considerando que el nmero de procesadores es variable. Suponiendo que la funcin tp (tam,p) es diferenciable, el tiempo mnimo de ejecucin puede obtenerse derivando respecto a p:

2.7 CONCLUSIONES
En este Captulo se han presentado los aspectos bsicos de la computacin paralela. En primer lugar se han indicado los conceptos fundamentales, como paralelizacin, grado de paralelismo, etc., y se ha mostrado una perspectiva histrica de computacin paralela, tanto de los requerimientos computacionales como del rendimiento de los sistemas realizados. Seguidamente se ha presentado una clasificacin que muestra los aspectos generales y las ideas fundamentales que sustentan las diversas opciones y soluciones, sin pretender ser exhaustiva. Partiendo de los computadores secuenciales se presenta la taxonoma de Flynn, ya clsica, como punto de partida para profundizar en las caractersticas de las diversas opciones existentes para realizar arquitecturas paralelas. A continuacin se profundiza en el aspecto ms relevante y diferenciador: la organizacin del espacio de direcciones de memoria. Con ello se analiza la divisin de las arquitecturas en sus dos tipos bsicos: Sistemas de memoria compartida o multiprocesadores y Sistemas de memoria distribuida o multicomputadores. Se presentan los aspectos fundamentales de cada uno de ellos, los parmetros caractersticos y los prototipos y sistemas comerciales ms significativos. Dentro de cada uno de ellos se analizan las diferentes estrategias, llegando a matizar cada categora y realizando una clasificacin clara de cada una de ellas. A continuacin se presentan otros criterios de clasificacin, como son la granularidad de procesador, y especialmente las redes de interconexin utilizadas. Se analizan detalladamente los factores que influyen en las redes de interconexin y se muestran las caractersticas bsicas de algunos de los encaminadores bien conocidos. Por ltimo se analizan los parmetros caractersticos de los sistemas paralelos en general, mediante los cuales se pueden realizar las caracterizaciones y las comparaciones necesarias para determinar la eficacia de un sistema paralelo para resolver un problema determinado. Una vez presentados los aspectos fundamentales de las arquitecturas paralelas en el siguiente Captulo se presentan con profundidad los sistemas de memoria compartida o multiprocesadores, profundizando en sus caractersticas y estrategias.

Potrebbero piacerti anche