18
Documento ejecutivo ARQUITECTURA DE SISTEMAS DE PARALELISMO Y DISTRIBUIDOS _____________________________________________________ Ing. Jesus Guillermo Tovar Rache Antonio Jose Alvarez Espinoza Manuel Leoned Molano Saavedra Computación paralela y distribuida

Documento Paralel A

Embed Size (px)

Citation preview

Page 1: Documento Paralel A

Documento ejecutivo

ARQUITECTURA DE SISTEMAS DE PARALELISMO Y DISTRIBUIDOS

_____________________________________________________

Ing. Jesus Guillermo Tovar Rache

Antonio Jose Alvarez Espinoza Manuel Leoned Molano Saavedra

Computación paralela y distribuida

Page 2: Documento Paralel A

1.INTRODUCCIÓN

Prácticamente todo los grandes sistemas informáticos son en la actualidad sistemas distribuidos o paralelos. Un sistema distribuido es un sistema en el que el procesamiento de información se distribuye sobre varias computadoras en vez de estar confinado en una única máquina. Y un sistema paralelo es aquel donde se distribuye el procesamiento en unidades de procesamiento dentro de la misma maquina. Obviamente, la ingeniería de sistemas distribuidos y paralelos tiene mucho en común con la ingeniería de cualquier otro software, pero existen cuestiones específicas que deben tenerse en cuenta cuando se diseña este tipo de sistemas. Las arquitecturas que se consideran en cada uno de los dos se deben acomodar a los escenarios en los cuales estos sistemas son necesarios. En este documento se van a mostrar distintos ejemplos de arquitecturas que han surgido con el paso del tiempo para ambos tipos de sistemas mostrando en qué consisten, sus características más importantes y para qué fueron usados.

2. ARQUITECTURA DE SISTEMAS PARALELOS

2.1 Concepto Un sistema paralelo es aquel, en el cual existen varias unidades de procesamiento que trabajan al mismo tiempo dentro de un mismo computador diseñado para tales fines. Su objetivo es realizar tareas de forma paralela de forma que se obtenga una mejora significativa en el tiempo de ejecucion. 2.2 Motivación El rendimiento en software y hardware están altamente ligados y con el requerimiento de una constante evolución en el rendimiento en aplicaciones, el hardware tiene que avanzar a un ritmo aceptable para que pueda cumplir con las demandas que se hacen desde aplicaciones cada vez más avanzadas. Una forma de solucionar estas exigencias es con el aumento de procesadores que operen en la misma maquina para de esta manera obtener el aumento de velocidad necesario.

2.2.1 Computacion cientifica: La necesidad de usar computadoras para la simulacion de fenomenos fisicos complejos ha creado la necesidad de proveer computadoras más poderosas que puedan resolver las simulaciones propuestas en un tiempo aceptable y cada vez con mayor exactitud. Lo que crea a su vez una mayor demanda de rendimiento

Page 3: Documento Paralel A

Imagen 1. Requerimiento computacionales de rendimiento. 2.2.2 Computación comercial: Al mismo tiempo, la industria se ha adaptado y cada vez requiere capacidades de procesamiento paralelo más intensivas. En los años 60 los multiprocesadoresproveíann la funcionalidad necesaria para algunas aplicaciones pero a medida que aumentó el rendimiento de los procesadores en cuanto a cantidad de transistores y velocidad del reloj, se expandieron las posibilidades.

Page 4: Documento Paralel A

Imagen 2. Mejoras de la frecuencia de reloj y cantidad de transistores en un procesador en los últimos 40 años. 2.3 Convergencia en arquitecturas paralelas Existen distintos tipos de arquitecturas típicas que se han concebido para una optima computación paralela. Pero en los últimos años las distintas arquitecturas han tendido a la convergencia de diseños. Esto es principalmente porque sus diferencias estaban enfocadas a cómo la información era compartida en los distintos procesadores y cómo estos se comunicaban entre sí. El problema de la comunicación se hizo evidente cuando se necesitaron crear modelos de programación que permiten establecer claridad de cómo debía ser construida una aplicación paralela y cómo el hardware debía soportar estos modelos de programación. Además de la multiprogramación, surgieron otros modelos de programación que permiten realizar una computación paralela efectiva. De los cuales los más destacados son:

Paso de mensajes: En donde una parte del programa envía un mensaje con toda la información necesaria a otra parte de tal programa para que esta se active y ejecute su tarea

Memoria compartida: En donde una sección del programa se comunica con las demás dejando un espacio compartido de memoria a la que las otras partes del programa puedan acceder.

Paralelismo de datos: En donde cada parte del programa ejecuta su parte por separado para que finalmente todas compartan los resultados en un espacio de memoria global en donde la información sea unificada.

Estos modelos deben abstraerse posteriormente de forma en que el hardware usado sea capaz de mantener la coherencia del modelo y pueda ser usado correctamente. De esta forma es que surgieron distintos modelos de arquitecturas de hardware paralelos en la que cada una de estas arquitecturas estaba diseñada específicamente para cumplir los modelos de programación para los cuales fueron diseñados originalmente.

Imagen 3. Modelo de computación paralela.

Page 5: Documento Paralel A

2.4 Arquitecturas de memoria compartida Las arquitecturas de memoria compartida tienen cómo base que cada procesador posee un espacio de memoria compartido adicional a su espacio privado, mediante el cual, comparten la informacion necesaria con los demás procesadores y con modulos de entrada/salida de datos. Diferentes topologias de cómo compartir los modulos de memoria fisicamente han sido planteados, entre los cuales estan:

Imagen 4: topologias de acceso en distintas arquitecturas

Cross­bar Switch: En donde cada uno de los modulos de memoria es accedido por los procesadores mediante switches arreglados en forma de matriz para que todos tuvieran la misma capacidad de acceso en cualquier momento hacia las memorias tanto los procesadores, cómo los modulos de entrada/salida. Su principal problema es que su complejidad se hizo muy grande despues de que el numero de elementos crecio sustancialmente.

Red de interconexion multi­etapa: En el cual se usan unos switches que redirigen el trafico desde los procesadores a los modulos de memoria solicitados. Esto traia una latencia mayor y menor ancho de banda por puerto

Interconeccion de bus: En donde todos los modulos tienen acceso al mismo bus de datos en donde esta concentrado todo el trafico, lo que lo convierte en el sistema más flexible y usado.

Page 6: Documento Paralel A

Imagen 5. Procesador Intel Pentium Pro El procesador Intel Pentium Pro muestra varios de estos conceptos llevados a la realidad. Este tenia una capacidad de hasta cuatro unidades de procesamiento conectadas a un bus principal que corria a 66 MHz al cual tambien se conecta el controlador de memoria que manejaba los modulos de memoria y los puertos PCI de entrada y salida de datos. 2.5 Arquitecturas de paso de mensajes

Page 7: Documento Paralel A

Imagen 6. Arquitectura tipica de paso de mensajes Las arquitecturas de paso de mensajes usan cómo base computadoras completas para el procesamiento paralelo, lo que incluye un procesador, memoria y entrada/salida de datos en cada una de las unidades. La diferencia más importante con las arquitecturas de memoria compartida, es que la comunicacion no se realizaba a traves de las memorias, sino usando los modulos de entrada/salida. Esto hace que la arquitectura tenga similaridades con las arquitecturas de cluster distribuidos aunque con algunas diferencias fundamentales. La no existencia de un sistema de control que coordine el flujo de informacion y la restriccion estricta en cuando al diseño de las operaciones de entrada/salida son las más estrictas. Las operaciones basicas de esta estructura son entonces enviar y recibir. En donde un procesador envia los mensajes con una etiqueta a la que se identifica su destinatario junto a la informacion necesaria. Los procesadores que reciben el mensaje estan en espera de que llegue un mensaje con el identificador validos para activarse, y realizar las operaciones correspondientes sobre la informacion recibida. Lo que hace a los programas paralelos de paso de mensajes bastante estructurados. La informacion es transmitida a traves de canales FIFO que hacen que se contribuya a la parte estructurada de los algoritmos usados.

Page 8: Documento Paralel A

Imagen 7: Supercomputadora IBM SP­2 La supercomputadora IBM SP­2 tiene un modelo escalable usando estaciones RS6000 cómo base. Estan conectados a traves de sus modulos de entrada/salida. Los mensajes se pasaban usando enlaces configurados en una topologia tipo mariposa.

Page 9: Documento Paralel A

Imagen 8 Intel Paragon Las supercomputadoras Intel Paragon usaban cómo base una estructura de grilla 3D para acomodar sus nodos de procesamiento en donde la comunicacion se daba por canales de velocidades hasta 175 MB/s 2.6 Arquitecturas de procesamiento paralelo de datos Esta arquitectura se fundamenta en que cada operacion es procesada en paralelo sobre cada elemento de una estructura regular. Estos se ubican tipicamente dentro de una categoria de la taxonomia de Flynn conocida cómo SIMD (Single Instruction Multiple Data) en donde se ejecuta la misma instruccion en distintos bloques de datos. Una unidad de control se asegura que cada unidad de procesamiento se dirija hacia su bloque de memoria correspondiente para guardarlo en memoria local o bien usando el espacio global de memoria.

2.7 Arquitectura de flujo de datos Fue una arquitectura experimental que usaba un paradigma totalmente distinto a la arquitectura de Von Neumann. Consistia en representar un programa cómo un grafo y buscaba que no se ejecutaban las tareas secuencialmente, sino que cada unidad de procesamiento realizaba su operacion programada en el momento en que tuviera toda la informacion necesaria. Por lo que existia un flujo de informacion (tokens) entre los procesadores y hace que la sincronizacion sea más explicita elemento por elemento.

Page 10: Documento Paralel A

2.8 Arquitectura sistólica Fundamentado en el usó de elementos de procesamiento sencillos en donde los datos eran cuidadosamente pensados para fluir en estos elementos se obtenia un alto throughtput con un ancho de banda moderado. Con el proposito de proveer chips de bajo costo los datos fluian entre las unidades de procesamiento en pulsos y cada procesador realizaba una operacion requerida sobre los datos recibidos teniendo similaridades con otros modelos pero solo siendo oportuno en problemas especializados.

Page 11: Documento Paralel A

Imagen 9 iWARP El iWarp fue la unica implementación exitosa de esta arquitectura aunque solo fue experimental. Cada procesador de 32bit ejecutaba una instruccion por ciclo y enviaba su resultado al siguiente procesador en donde la informacion fluye hasta que el algoritmo sea completado y enviado a otro procesador para enviar al canal de salida.

3. ARQUITECTURA DE SISTEMAS DISTRIBUIDOS 3.1 Concepto

Un sistema distribuido es aquel, en el que el procesamiento de información se distribuye sobre varios computadores físicos diferentes, en vez de estar confinado y dirigido hacia una única máquina física. Prácticamente todo los grandes sistemas informáticos son en la actualidad sistemas distribuidos. 3.2 Ventajas Existen 5 grandes ventajas que ofrecen los sistemas implementados de manera distribuida. Esta son:

Distribución de recursos. Un sistema ejecutado sobre una arquitectura distribuida, permite compartir recursos hardware y software; como discos, impresoras, ficheros y compiladores, que se asocian con computadores de una red.

Apertura. Los sistemas distribuidos son normalmente sistemas abiertos, lo que significa que se diseñan sobre protocolos estándar que permiten combinar equipamiento y software de

Page 12: Documento Paralel A

diferentes vendedores. A pesar de ello se necesitan herramientas que faciliten los procesos internos del sistema, tales como los middleware.

Concurrencia. En un sistema distribuido, varios procesos pueden operar al mismo tiempo sobre diferentes computadores de la red. Estos procesos pueden comunicarse con otros durante su funcionamiento normal.

Escalabilidad. Los sistemas distribuidos, en teoría, son escalables en tanto que la capacidad del sistema puede incrementarse añadiendo nuevos recursos para cubrir nuevas demandas sobre el sistema. En la práctica, la red que una los computadores individuales del sistema puede limitar la escalabilidad del sistema. Si se añaden muchos computadores, entonces la capacidad de la red puede resultar afectada.

Tolerancia a fallos. La disponibilidad de varios computadores y el potencial para reproducir información, significa que los sistemas distribuidos pueden ser tolerantes a algunos fallos de funcionamiento del hardware y del software. En la mayoría de los sistemas distribuidos, se puede proporcionar un servicio degradado cuando ocurren fallos de funcionamiento; y una completa pérdida de servicio sólo ocurre cuando existe un fallo de funcionamiento en la red en general.

3.3 Desventajas Cuando existen sistemas distribuidos, existen una serie de desventajas respecto a sistemas que se ejecutan sobre un único procesador o un cluster de procesadores. Sobre ese supuesto, los sistemas distribuidos tienen desventajas tales como:

Complejidad. Los sistemas distribuidos son más complejos que los sistemas centralizados. Esto hace más difícil comprender sus propiedades emergentes y probar estos sistemas. Por ejemplo, en vez de que el rendimiento del sistema dependa de la velocidad de ejecución de un procesador, depende del ancho de banda y de la velocidad de los procesadores de la red. Mover los recursos de una parte del sistema a otra puede afectar de forma radical al rendimiento del sistema.

Seguridad. Puede accederse al sistema desde varios computadores diferentes, y el tráfico en la red puede estar sujeto a escuchas e interceptaciones indeseadas. Esto hace más difícil el asegurar que la integridad de los datos en el sistema se mantenga y que los servicios del sistema no se degraden por asuntos tales como un ataque de denegación de servicio.

Manejo. En un sistema, los computadores asociados pueden ser de diferentes tipos y pueden ejecutar versiones diferentes de sistemas operativos. Los defectos en una máquina pueden propagarse a otras máquinas con consecuencias inesperadas. Esto significa que se requiere más esfuerzo para gestionar y mantener el funcionamiento del sistema.

Impredecibilidad. Los sistemas distribuidos tienen una respuesta impredecible; esto se da porque la respuesta depende de la carga total en el sistema, de su organización y de la carga de la red. Dad que el estado de todos estos elementos pueden cambiar con mucha rapidez, el tiempo requerido para responder a una petición de usuario puede variar drásticamente de una petición a otra.

Page 13: Documento Paralel A

3.4 Arquitecturas cliente ­ servidor de computación distribuida Para proporcionar características deseables a los sistemas distribuidos, reducir la ocurrencia de eventos que puedan llevar a problemas de funcionamiento, potenciar ventajas y reducir perjuicios de esta clase de sistemas, se tienen unos tipos genéricos de sistemas distribuidos. El primero de ellos es el de arquitectura de cliente ­ servidor.

En este tipo de arquitectura, el sistema puede ser visto como un conjunto de servicio que se proporcionan a los clientes que hacen uso de dichos servicios. Los servidores y los clientes se tratan de forma diferente en estos sistemas.

En general , los clientes actúan como iniciadores de una petición de datos y los servidores actúan como proveedores de estos.

3.4.1 Arquitectura cliente ­ servidor Las aplicaciones son entendidas como servicios que son ofrecidos por un servidor. Para esta configuración, los clientes conocen el servidor; pero el servidor no necesariamente conoce a los clientes. Finalmente ambos, clientes y servidores, son analizados como procesos lógicos dentro de un sistema.

Imagen 4. Esquema de la arquitectura cliente ­ servidor. Un modelo avanzado de arquitectura cliente ­ servidor, planta la organización por capas, para el manejo. Estas capas pueden relacionarse de alguna de estas dos maneras:

Thin clients (Clientes ligeros). En esta configuración, El servidor se encarga de procesar y manejar los datos. Se usa para migrar sistemas heredados a arquitecturas cliente ­ servidor. Este ubica toda carga de procesamiento en el servidor y la red.

Fat clients (Clientes pesados). En este estilo de configuración, el servidor solo se encarga de manejar los datos; es el cliente el que implementa la lógica de la aplicación a ejecutar. Es por ello que se dice que existe una alta carga de procesamiento delegada al cliente, con un consecuente manejo complejo de la red, dado que a mayor cantidad de clientes es más difícil controlar el versionamiento y correcto funcionamiento de la aplicación.

Page 14: Documento Paralel A

Imagen 5. Modelo de Thin clients y Fat clients.

3.4.2 Arquitectura de aplicación por capas En términos generales, el proceso que se ejecuta en una petición del cliente al servidor es filtrados por 3 capas distintas de aplicación que se ejecutan en servidores fisicos o logicos. Esto con el fin de facilitar la gestión de recursos.

Imagen 6. Arquitectura por capas.

3.4.3 Arquitectura de tres capas La información es procesada en 3 niveles o capas distintas, para facilitar el manejo de la misma. Las capas de esta arquitectura son:

Capa de presentación está relacionada con la presentación de la información al usuario y con toda la interacción con él.

Capa de procesamiento de la aplicación está relacionada con la implementación de la lógica de la aplicación.

Capa de gestión de datos está relacionada con todas las operaciones sobre la base de datos. En los sistemas centralizados, estas capas no es necesario que estén claramente separadas. Sin embargo, cuando se está diseñando un sistema distribuido, deberían hacerse una clara distinción entre ellas, de forma que sea posible distribuir cada capa sobre una computadora diferente.

Page 15: Documento Paralel A

Imagen 7. Arquitectura de 3 capas.

3.5 Arquitecturas de objetos distribuidos en computación distribuida En esta configuración de sistemas paralelos, no hay distinción entre servidores y clientes, y el sistema puede ser visto como un conjunto de objetos que interaccionan; y cuya localización es irrelevante. No hay distinción entre un proveedor de servicios y el usuario de estos servicios. 3.5.1 Arquitectura peer­ to ­ peer En este modelo de computación distribuida, todos los nodos tienen el mismo rol y funcionalidad; por tanto no existen los cuellos de botella ni los puntos críticos de fallo. Todos los recursos de todas las máquinas son aprovechados de igual manera, dada la topología del sistema. Dentro de sus características más notables se pueden enunciar las siguientes:

Volatilidad: Nodos entran y salen del SD; variabilidad en conectividad Capacidad de autogestión sin una autoridad global centralizada Dedicados a compartir recursos (contenidos,UCP,almacén,...) Colaboración y comunicación entre usuarios Uso de red superpuesta (overlay): Red lógica sobre la física Nodos de proceso como nodos de red Esquemas de encaminamiento y localización de recursos Difícil administración y mayores problemas de seguridad

Page 16: Documento Paralel A

Imagen 8. Esquema de arquitectura peer ­ to ­ peer.

Imagen 9. Esquema de arquitectura peer ­ to ­ peer.

3.6 Middleware Los componentes en un sistema distribuido pueden implementarse en diferentes lenguajes de programación y pueden ejecutarse en tipos de procesadores completamente diferentes. Los modelos de datos, la representación de la información y los protocolos de comunicación pueden ser todos diferentes. Un sistema distribuido, por lo tanto, requiere software que pueda gestionar estas partes distintas, y asegurar que dichas partes se puedan comunicar e intercambiar datos. El término

Page 17: Documento Paralel A

middleware se usa par hacer referencia a ese software; se sitúa en medio de los diferentes componentes distribuidos del sistema. El middleware es un software de propósito general que normalmente se compra como un componente comercial más que escribirse especialmente por los desarrolladores de la aplicación. Ejemplos de middleware son software para gestionar comunicaciones con bases de datos, administradores de transacciones, convertidores de datos y controladores de comunicación. Los sistemas distribuidos se desarrollan normalmente utilizando una aproximación orientada a objetos. Estos sistemas están formados por partes independientes pobremente integradas, cada una de las cuales pueden interaccionar directamente con los usuario o con otras partes del sistema. Algunas partes del sistema pueden tener que responder a eventos independientes. Los objetos software reflejan estas características; por lo tanto, son abstracciones naturales para los componentes de sistemas distribuidos.

4. CONCLUSIONES

Un sistema distribuido es un sistema en el que el procesamiento de información se distribuye sobre varias computadoras en vez de estar confinado en una única máquina.

Prácticamente todo los grandes sistemas informáticos son en la actualidad sistemas distribuidos. Los sistemas distribuidos han reemplazado ampliamente a los sistemas heredados centralizados

que fueron desarrollados en los años 80 y 90. Sin embargo, comparados con sistemas que se ejecutan sobre un único procesador o un cluster de procesadores, los sistemas distribuidos tienen varias desventajas.

Los componentes en un sistema distribuido pueden implementarse en diferentes lenguajes de programación y pueden ejecutarse en tipos de procesadores completamente diferentes. Los modelos de datos, la representación de la información y los protocolos de comunicación pueden ser todos diferentes.

Un sistema distribuido requiere software que pueda gestionar estas partes distintas, y asegurar que dichas partes se puedan comunicar e intercambiar datos. Este software es conocido como Middleware, y se sitúa en medio de los diferentes componentes distribuidos del sistema

5.BIBLIOGRAFÍA

Connecticut central University. Distributed systems: 0http://www.cs.ccsu.edu/~stan/classes/CS530/Slides/SE­12.pdf

Parallel and Distributed Computation: Numerical Methods. Dimitri P. Bertsekas and John N. Tsitsiklis.Prentice­Hall .1989 :http://web.mit.edu/dimitrib/www/pdc.html

IBM. What is distributed computing: http://publib.boulder.ibm.com/infocenter/txformp/v6r0m0/index.jsp?topic=%2Fcom.ibm.cics.te.doc%2Ferziaz0015.htm

MSDN. MIcrosoft. Distributed Computing:http://msdn.microsoft.com/en­us/library/dd129906.aspx

Software Engineering. 7th Edition. Ian Sommerville. Chapter 12. Architecture of distributed systems. ISBN­13: 978­0321210265

Parallel Computer Architecture: A hardware­software aproach. David Culler http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.101.4418&rep=rep1&type=pdf

Page 18: Documento Paralel A

CS 61A Structure and interpretation of computer programs. Berkeley http://wla.berkeley.edu/~cs61a/fa11/lectures/communication.html

Parallel Computing: Models, Languages, and Architectures. Boston University http://cs­www.bu.edu/faculty/best/crs/cs551/lectures/Menu.html