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 establecido que para algunos problemas como los mtodos numricos, la simulacin, la optimizacin, etc., la computacin paralela ofrece soluciones eficientes.
La computacin paralela o procesamiento en paralelo
consiste en acelerar la ejecucin de un programa. Surge 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.
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.
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.
4.2.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.
4.2.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. Modelo que tiene como elementos fundamentales una Unidad Central de Procesamiento, 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). 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 termino est relacionada con los
componentes y la tecnologa electrnica asociada. 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, 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 muy superior al de la versin no segmentada En la siguiente imagen 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, es
posible comenzar la ejecucin de una nueva instruccin en cada ciclo de reloj. As, aunque la instruccin consume sus cinco ciclos, 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, 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, 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:
Factores que determinan una instruccin
en la segmentacin 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. Los riesgos que se producen en la segmentacin y que introducen detenciones en el encauzamiento.
4.2.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. 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.
2. SIMD (Single Instruction, Multiple Data),
instruccin nica, datos mltiples. En esta clase se sitan los procesadores matriciales en los que existen 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.
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. Del mismo modo, las arquitecturas sistlicas tambin pueden ser consideradas MISD. Se pueden considerar como un mtodo de diseo de computadores de propsito especial para equilibrar recursos, ancho de banda de E/S y clculo.
4.2.2.2ORGANIZACIN 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: 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. 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. As se desarrollaron los primeros computadores de esta arquitectura, tales como el NYU Ultracomputer.
En este contexto, 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.
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. 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.
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.