Sistema multiprocesador


SISTEMAS MULTIPROCESADORES

Julio 19, 2009

UNIVERSIDAD DE OCCIDENTE

Unidad Culiacán

Dibujo

Maestro:

Lic. Amado Castaño Ibarra

Materia:

Arquitectura de Computadoras

Grupo:

E-2

Trabajo:

SISTEMAS MULTIPROCESADORES

Alumno:

Flores Salazar Christian                   0640476

Sistemas Multiprocesadores

A inicios de 1981 los sistemas de multiprocesadores fueron introducidos en máquinas que jugaban al ajedrez. El objetivo inicial era lograr un aumento de la velocidad de proceso en un factor de 81#81 veces con 81#81 procesadores. El problema principal de este tipo de desarrollo fue el cómo dividir el árbol de búsqueda de variantes con tal de mantener a todos los procesadores ocupados en todo el tiempo de búsqueda evitando además búsqueda redundante.

Otro problema era la realización de debugging en este tipo de programas. Los procesadores funcionan en forma asíncrona y eventos que ocurren primero en un procesador y luego en otro pueden suceder en otro orden en otra simulación.

El programa OSTRICH fue el primero en participar en una competencia oficial de computadoras utilizando esta tecnología. Cinco computadoras serie Data General 16-bit Nova estaban conectadas mediante un paquete de comunicación de alta velocidad. En años subsiguientes 8 computadoras DG fueron utilizadas logrando un incremento de la velocidad de cálculo en un orden 5. Otros programas famosos que utilizaron multiproceso fueron CRAYBLITZ (1983 y 1984, procesador CRAY X-MP, 2 y 4 procesadores), CHESS CHALLENGER (1986, 20 microprocesadores 8086) y Deep Thought (1989, 3 procesadores de tecnología SUN y VLSI). DeepBlue para su match contra Kasparov utilizó un total de 2 frames RS6000 SP albergando 15 computadoras RS/6000 cada uno. Cada nodo contenía dos circuitos de ajedrez con 8 procesadores cada uno, lo que otorga en total 8×2×15×2 = 480 procesadores en el sistema completo.

Multiproceso

Multiproceso es tradicionalmente conocido como el uso de múltiples procesos concurrentes en un sistema en lugar de un único proceso en un instante determinado. Como la multitarea que permite a múltiples procesos compartir una única CPU, múltiples CPUs pueden ser utilizados para ejecutar múltiples hilos dentro de un único proceso.

El multiproceso para tareas generales es, a menudo, bastante difícil de conseguir debido a que puede haber varios programas manejando datos internos (conocido como estado o contexto) a la vez. Los programas típicamente se escriben asumiendo que sus datos son incorruptibles. Sin embargo, si otra copia del programa se ejecuta en otro procesador, las dos copias pueden interferir entre sí intentando ambas leer o escribir su estado al mismo tiempo. Para evitar este problema se usa una variedad de técnicas de programación incluyendo semáforos y otras comprobaciones y bloqueos que permiten a una sola copia del programa cambiar de forma exclusiva ciertos valores.

1

Multitarea

Tipos de multitarea

Cooperativa

Los procesos de usuario son quienes ceden la CPU al sistema operativo a intervalos regulares. Muy problemática, puesto que si el proceso de usuario se interrumpe y no cede la CPU al sistema operativo, todo el sistema estará trabado, es decir, sin poder hacer nada. Da lugar también a latencias muy irregulares, y la imposibilidad de tener en cuenta este esquema en sistemas operativos de tiempo real.

Preferente

El sistema operativo es el encargado de administrar el/los procesador(es), repartiendo el tiempo de uso de este entre los procesos que estén esperando para utilizarlo. Cada proceso utiliza el procesador durante cortos períodos de tiempo, pero el resultado final es prácticamente igual que si estuviesen ejecutándose al mismo tiempo. Ejemplos de sistemas de este tipo serían Unix y sus derivados (FreeBSD, GNU/Linux), VMS y derivados, AmigaOS, Windows NT.

Real

Sólo se da en sistemas multiprocesador. Es aquella en la que varios procesos se ejecutan realmente al mismo tiempo, en distintos microprocesadores. Suele ser también preferente. Ejemplos de sistemas operativos con esa capacidad: variantes Unix, GNU/Linux, Windows NT, Mac OS X, etc.

2

Multihebra

El concepto multihebra (”multithreading”) es de tipo lógico. Significa que un programa puede tener varias vías de ejecución que “pueden” ser independientes. Por ejemplo:  Un procesador de texto puede tener una hebra que es utilizada por el usuario para escribir y otra, que a periodos de tiempo determinados, salva a disco el contenido de la memoria, obteniendo así una copia de seguridad. Según hemos visto, desde el punto de vista físico, lo que caracteriza a las diversas hebras de un proceso es que comparten ciertos recursos dentro del mismo;  por ejemplo la memoria, los ficheros abiertos y las variables estáticas, mientras que mantienen independencia en los recursos que les permiten una ejecución independiente, por ejemplo su propia pila y el estado de los registros del procesador, que es salvado y restituido cada vez que la hebra es desactivada o activada.

Lo importante aquí es que desde un punto de vista lógico, las hebras corren de forma simultánea e independiente (lo que no impide que pueda existir cierta coordinación entre ellas, de forma que, por ejemplo, una puede esperar hasta que otra ha terminado cierto trabajo). Que esta “simultaneidad” sea o no real no es lo más importante. En cualquier caso, la percepción del usuario es que todas corren simultánea e independientemente.

PARALELISMO Y PROCESAMIENTO DE VECTOR

PROCESAMIENTO PARALELO

El procesamiento paralelo es un término que se usa para denotar un grupo de técnicas significativas que se usan para proporcionar tareas simultáneas de procesamiento de datos con el fin de aumentar la velocidad computacional de un sistema de computadoras. En lugar de procesar cada instrucción en forma secuencial como es una computadora convencional, un sistema de procesamiento paralelo puede ejecutar procesamiento concurrente de datos para conseguir un menor tiempo de ejecución. Por ejemplo, cuando se ejecuta una instrucción en la ALU, puede leerse la siguiente instrucción de la memoria. El sistema puede tener 2 o más ALUS y ser capaz de ejecutar dos o mas instrucciones al mismo tiempo. Además, el sistema puede tener dos o más procesadores operando en forma concurrente. EL propósito del procesamiento paralelo es acelerar las posibilidades de procesamiento de la computadora y aumentar su eficiencia, esto es, la capacidad de procesamiento que puede lograrse durante un cierto intervalo de tiempo. La cantidad de circuitería aumenta con el procesamiento paralelo y, con él, también el costo del sistema. Sin embargo, los descubrimientos tecnológicos han reducido el costo de la circuitería a un punto en donde las técnicas de procesamiento paralelo son económicamente factibles.

El procesamiento paralelo puede considerarse de diversos niveles de complejidad. En el nivel mas bajo, distinguimos entre operaciones seriales y paralelas mediante el tipo de registros que utilizan. Los registros de corrimiento operan en forma serial un bit a la vez, mientras que los registros con carga paralela operan con todos los bits de la palabra en forma simultánea.

VECTORIAL

Para mostrar los conceptos que se encuentran detrás de un procesador vectorial, vamos a presentar en primer lugar una breve muestra de cómo programar operaciones vectoriales sobre códigos FORTRAN.

Un vector v, es una lista de elementos de la forma:

v = (v1, v2, v3,…, vn)T

La longitud del vector se define como el número de elementos en el vector, de forma que la longitud del vector v que acabamos de presentar es n. Cuando queremos representar un vector en un programa, se declara el vector como una matriz de una única dimensión. En FORTRAN, declararíamos el vector v mediante la expresión:

DIMENSION V (N)

En donde N es una variable entera que almacena el valor de la longitud del vector.

Dos vectores se pueden sumar simplemente sumando cada una de sus componentes, es decir:

s = x + y = (x1+ y1, x2+ y2, . . . , xn+yn)

En FORTRAN, la suma de vectores se puede realizar utilizando el siguiente código:

I=1, N DO

S (I) = X(I) + Y (I)

ENDDO

Donde s es el vector en el que se almacena la suma final, y S, X, e Y han sido declarados como matrices de dimensión N.

Elementos de la arquitectura vectorial

Una computadora vectorial contiene un conjunto de unidades aritméticas especiales denominadas pipelines. Estas pipelines superponen la ejecución de las diferentes partes de una operación aritmética sobre los elementos del vector, produciendo una ejecución más eficiente de la operación aritmética que se está realizando. En muchos aspectos, una pipeline es similar a una cadena de montaje de una fábrica de coches, en la que los distintos pasos de la fase de montaje de un automóvil, por ejemplo, se realizan en distintas etapas de la cadena.

Consideremos, por ejemplo, los pasos o etapas necesarias para realizar una suma en punto flotante en una máquina con hardware que emplee aritmética IEEE. Los pasos para realizar la operación s = x + y son:

1.     Se comparan los exponentes de los dos números en punto flotante que se quieren sumar para encontrar cuál es el número de menor magnitud.

2.      El punto decimal del número con menor magnitud se desplaza de forma que los exponentes de los dos números coincidan.

3.      Se suman los dos números.

4.      Se normaliza el resultado de la suma.

5.      Se realizan los chequeos necesarios para comprobar si se ha producido algún tipo de excepción en punto flotante durante la suma, como un overflow.

6.      Se realiza el redondeo.

Registros vectoriales

Algunas computadoras vectoriales, como el Cray Y-MP, contienen registros vectoriales. Un registro de propósito general o un registro de punto flotante contiene un único valor. Sin embargo, los registros vectoriales contienen en su interior muchos elementos de un vector al mismo tiempo. Por ejemplo, los registros vectoriales del Cray Y-MP contienen 64 elementos, mientras que los del Cray C90 contienen 128 elementos. Los contenidos de estos registros pueden ser enviados a (o recibidos por) una pipeline vectorial a razón de un elemento por paso temporal..

Procesadores vectoriales de registro vectorial

Si un procesador vectorial posee registros vectoriales, los elementos del vector que se van a procesar se cargan desde la memoria directamente en el registro vectorial utilizando una operación de carga vectorial. El vector que se obtiene a partir de una operación vectorial se introduce en un registro vectorial antes de que se pueda almacenar de nuevo en la memoria mediante una operación de almacenamiento vectorial. Esto permite que se pueda utilizar en otra operación sin necesidad de volver a leer el vector, y también permite que el almacenamiento se pueda solapar con otro tipo de operaciones. En este tipo de computadoras, todas las operaciones aritméticas ó lógicas vectoriales son operaciones registro a registro, es decir, sólo se realizan operaciones vectoriales sobre vectores que ya se encuentran almacenados en los registros vectoriales. Por este motivo, a estas computadoras se les conoce como procesadores vectoriales de registro vectorial. La figura 3 muestra la arquitectura de registros y pipelines de una computadora vectorial de registro vectorial. El número de etapas de cada pipeline se muestra entre paréntesis dentro de cada pipeline.

Procesadores vectoriales memoria a memoria

Otro tipo de procesadores vectoriales permite que las operaciones realizadas con vectores se alimenten directamente de datos procedentes de la memoria hasta los pipelines vectoriales y que los resultados se escriban directamente en la memoria. Este tipo de procesadores se conocen con el nombre de procesadores vectoriales memoria a memoria. Dado que los elementos del vector necesitan venir de la memoria en lugar de proceder de un registro, se requiere más tiempo para conseguir que la operación vectorial comience a realizarse. Esto es debido en parte al coste del acceso a la memoria. Un ejemplo de procesador vectorial memoria a memoria era el CDC Cyber 205.

Debido a la capacidad de superponer el acceso a la memoria y la posible reutilización de los vectores ya utilizados, los procesadores vectoriales de registro vectorial suelen ser más eficientes que los procesadores vectoriales memoria a memoria. Sin embargo, a medida que la longitud de los vectores utilizados para un cálculo se incrementa, esta diferencia en el rendimiento entre los dos tipos de arquitecturas tiende a desaparecer. De hecho, los procesadores vectoriales memoria a memoria pueden llegar a ser más eficientes si la longitud de los vectores es lo suficientemente grande. Sin embargo, la experiencia ha demostrado que la longitud de los vectores suele ser mucho más corta de la necesaria para que esta situación llegue a producirse.

3

DEEP BLUE

Deep Blue fue una computadora de IBM que jugaba al ajedrez. Su nombre se podría traducir al español como “Azul Oscuro” o “Azul Profundo”.

La segunda de las traducciones es más acertada, ya que se emplea un algoritmo de inteligencia artificial de la familia Minimax. La fuerza de juego de estos programas de juego automático es mayor cuanto mayor sea la profundidad (número de movimientos futuros) hasta la que llega la exploración, y por tanto mayor el número de nodos. De este modo, el nombre Deep Blue es un juego de palabras que relaciona el azul (color corporativo de IBM) con la gran profundidad de exploración gracias a la potencia de su hardware.

Deep Blue fue mejorando y jugó de nuevo contra Kasparov en mayo de 1997, ganando el encuentro a 6 partidas por 3′5-2′5, lo que lo convirtió en la primera computadora en derrotar a un campeón del mundo vigente, en un encuentro con ritmo de juego de torneo estándar. El encuentro concluyó el 11 de mayo. El sistema saca su fuerza de juego principalmente en la fuerza bruta que calcula el sistema central. Era una potencia paralela, de 30 nodos, RS/6000, SP-based el sistema informático realzado(mejorado) con 480 VLSI con el objetivo especial de jugar al ajedrez. Su programa de juego de ajedrez fue escrito en C y corrió bajo el sistema operativo AIX. Era capaz de calcular 200 millones de posiciones por segundo, dos veces más rápido que la versión de 1996. En junio de 1997, Deep Blue era el 259 superordenador más poderoso, capaz de calcular 11.38 gigaflops, aunque toda esta potencia no estaba pensada en realidad para jugar al ajedrez.

4

SUPERCOMPUTADORA CRAY

Cuenta con sus 216 procesadores AMD Opteron Dual Core 2.2Ghz, tiene un poder de procesamiento de 0.95 TFlops, capaz de realizar 950,000,000,000 operaciones en aritmética de punto flotante (sumas o multiplicaciones con números reales) en un segundo.

Este equipo también posee una capacidad de almacenamiento central de 4 Tbytes. Almacenamiento equivalente a 4,000,000,000,000 de caracteres.

La supercomputadora Cray XD1 combina sistemas avanzados de interconexión, administración y tecnología computacional reconfigurable que satisface de manera confiable las demandas de procesamiento de alto rendimiento. Diseñada para cumplir con los requerimientos de cómputo de alto rendimiento (HPC) en áreas que van del diseño de productos, a predicción del clima, e investigaciones científicas. La Cray XD1 es una poderosa herramienta para científicos e ingenieros que les permite simular y analizar problemas de mayor complejidad de forma rápida.

La Cray XD1 esta basada en la arquitectura de “Conexión Directa entre Procesadores (DCP)” lo que permite interconectar muchos procesadores como uno solo, optimizando las aplicaciones que hacen uso del envío de mensajes, enlazando un bloque de procesadores al siguiente a través de interconexiones (propietarias) de alto desempeño, eliminando la contención de la memoria compartida y de los cuellos de botella en los dispositivos PCI.

La Cray XD1 es un sistema modular cuya unidad base es el chasis. En un gabinete se pueden instalar hasta 12 chasis, integrando múltiples gabinetes es posible integrar cientos de procesadores en un único sistema.

Las características del equipo son las siguientes:

HARDWARE

216 Procesadores AMD Opteron 275, x8664, 2.2 GHzz

216 Gbytes DDR 400 registered ECC de memoria RAM Total

4 Tbytes de almacenamiento principal

1 Tbyte de registros de memoria accesibles por procesador

Interconexion tipo Rapid Array Interconnect

1.7 µs Latencia MPI entre procesadores

Rendimiento Teórico Pico 0.95TFlops

gray

Fuentes:

http://es.wikipedia.org/wiki/Multiproceso

http://es.wikipedia.org/wiki/Multitarea

http://www.zator.com/Cpp/E1_7b.htm

http://www.monografias.com/trabajos16/arquitectura-paralela/arquitectura-paralela.shtml

http://mx.geocities.com/c_sinuhe/sist_oper/t8.html

http://es.wikipedia.org/wiki/Deep_Blue

http://cns.ipicyt.edu.mx/index.php?option=com_content&task=view&id=51&Itemid=136

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: