MULTIPROCESADORES

Un multiprocesador puede verse como un computador paralelo compuesto por varios procesadores interconectados que comparten un mismo sistema de memoria. Los sistemas multiprocesadores son arquitecturas MIMD con memoria compartida. Tienen un único espacio de direcciones para todos los procesadores y los mecanismos de comunicación se basan en el paso de mensajes desde el punto de vista del programador.


Dado que los multiprocesadores comparten diferentes módulos de memoria, pudiendo acceder a un mismo módulo varios procesadores, a los multiprocesadores también se les llama sistemas de memoria compartida. Dependiendo de la forma en que los procesadores comparten la memoria, se clasifican en sistemas multiprocesador UMA, NUMA y COMA.



  • Sistemas UMA (Uniform Memory Access)

    Sistema multiprocesador con acceso uniforme a memoria. La memoria física es uniformemente compartida por todos los procesadores, esto quiere decir que todos los procesadores tienen el mismo tiempo de acceso a todas las palabras de la memoria. Cada procesador tiene su propia caché privada y también se comparten los periféricos. Los multiprocesadores son sistemas fuertemente acoplados (tightly-coupled), dado el alto grado de compartición de los recursos (hardware o software) y el alto nivel de interacción entre procesadores, lo que hace que un procesador dependa de lo que hace otro.


  • Sistemas NUMA (Non Uniform Memory Access)

    Un sistema multiprocesador NUMA es un sistema de memoria compartida donde el tiempo de acceso varía según donde se encuentre localizado el acceso.
    El acceso a memoria, por tanto, no es uniforme para diferentes procesadores. Existen memorias locales asociadas a cada procesador y estos pueden acceder a datos de su memoria local de una manera más rápida que a las memorias de otros procesadores, debido a que primero debe aceptarse dicho acceso por el procesador del que depende el módulo de memoria local. Todas las memorias locales conforman la memoria global compartida y físicamente distribuida y accesible por todos los procesadores.


  • Sistemas COMA (Cache Only Memory Access)

    Los sistemas COMA son un caso especial de los sistemas NUMA. Este tipo de sistemas no ha tenido mucha transcendencia. Las memorias distribuidas son memorias cachés, por este motivo es un sistema muy restringido en cuanto a la capacidad de memoria global. No hay jerarquía de memoria en cada módulo procesador. Todas las cachés forman un mismo espacio global de direcciones. El acceso a las cachés remotas se realiza a través de los directorios distribuidos de las cachés. Dependiendo de la red de interconexión utilizada, se pueden utilizar jerarquías en los directorios para ayudar a la localización de copias de bloques de caché.

Procesamiento Paralelo

Se trata de un proceso empleado para acelerar el tiempo de ejecución de un programa dividiéndolo en múltiples trozos que se ejecutarán al mismo tiempo, cada uno en su propio procesador. En principio, un programa dividido en n trozos de esta forma, podría ejecutarse n veces más rápido, que su equivalente en un solo procesador, pero aún así queda claro que éste es su límite teórico (es decir el máximo que podremos alcanzar) pudiendo conseguir en el mejor de los casos un valor aproximado con un buen paralelismo.

Clasificación del procesamiento paralelo

SISD (Single Instruction Single Data): es una secuencia de instrucciones y una secuencia de datos. Un único procesador interpreta una única secuencia de instrucciones, para operar con los datos almacenados en una única memoria. Los computadores monoprocesador caen en esta categoría.



SIMD (Single Instruction Multiple Data): es una secuencia de instrucciones y múltiples secuencias de datos. Una única instrucción de máquina controla paso a paso la ejecución simultánea y sincronizada de un cierto número de elementos de proceso. Cada elemento de proceso tiene una memoria asociada, de forma que cada instrucción es ejecutada por cada procesador, con un conjunto de datos diferentes.




MIMD (Multiple Instruction Multiple Data): son múltiples secuencias de instrucciones y múltiples secuencias de datos. Un conjunto de procesadores ejecuta simultáneamente secuencias de instrucciones diferentes con conjuntos de datos diferentes. Los clusters son ejemplos de esta categoría.


Procesadores Matriciales

Máquinas con múltiples elementos de proceso (EP) supervisados por una unidad de control (UC) capaces de llevar a cabo una única instrucción sobre múltiples datos y corresponden a la clase SIMD de la taxonomía de Flynn, la colección de EPs constituye un array síncrono que pueden realizar operaciones vectoriales, sobre matrices o un grupo de datos.

Evolución de los computadores matriciales

• El desarrollo de las máquinas SIMD se debió a que antiguamente el diseño de unidades de control era costoso.
• Entre 1980 y 1990 los microprocesadores empiezan a abaratarse. Construir SIMD se vuelve menos rentable que colocar microprocesadores por nodo (MIMD).
• Diferencias entre SIMD y MIMD: En un MIMD los procesadores son autónomos y pueden ejecutar sus propios programas de manera asíncrona. Dificultad en la programación. En una SIMD sincronización más fácil porque viene controlada por una única UC.
• ACTUALIDAD: proyecto en marcha en USA (Kestrel project, 512 EPs). Desarrollo de un sistema coprocesador diseñado para acelerar análisis ADN.


Organización y elementos de los procesadores matriciales

• Constan de un array de elementos sincronizados de proceso (ALUs) que son controlados (en cuanto a la operación que realizan y los datos que usan) por un módulo de control del array.
• La UC tiene su propia memoria para almacenar los programas de sistema y los de usuario.
• Existe también un procesador escalar, para las operaciones SISD.
• Los elementos de proceso están unidos por una red de interconexión.

Redes de Interconexión

Los ordenadores se dividen en función del tipo del flujo de control y flujo de datos que poseen. Es precisamente en esta división cuando aparecen por primera vez las máquinas paralelas divididas en tres clases. De estas tres clases, la más general y que ofrece mayor paralelismo es la que sigue el esquema MIMD. Aunque este tipo de modelo de paralelismo es el más complejo, es el que se ha impuesto últimamente y sobre el que vamos a desarrollar nuestros conceptos de las redes de interconexión.

Al tener una máquina paralela diversos procesadores surge la necesidad de comunicar información entre ellos de cara a resolver un problema común. Dicha comunicación puede realizarse de dos maneras:
a) Compartiendo un recurso, como por ejemplo un dato común en una memoria común.
b) Mediante el envío de la información por medio de un mensaje.

En ambos casos, será necesario la existencia de una red de interconexión que permita realizar las operaciones descritas. En el primer caso, ya que la memoria está físicamente distribuida en varios bancos, la red de interconexión posibilitará la conexión de cada procesador con todos los bancos de memoria. En el segundo caso, es necesario unir físicamente los procesadores para poder realizar el envío de mensajes. Estos dos tipos de comunicación da lugar a dos importantes clases de máquinas paralelas según el diseño MIMD: los multiprocesadores y los multicomputadores.

Los multiprocesadores son máquinas con memoria compartida o común y los multicomputadores son máquinas con memoria distribuida. Como se puede apreciar, el papel de la red de interconexión es tanto más importante cuanto mayor sea el número de elementos físicos que se deben unir y el flujo de información que se desee intercambiar; en el caso de los ordenadores masivamente paralelos, con un gran número de procesadores y una densidad de comunicaciones alta, el papel que desempeña la red es de primer orden.


Redes estáticas y dinámicas

Uno de los criterios más importantes para la clasificación de las redes es el que tiene en cuenta la situación de la red en la máquina paralela, dando lugar a dos familias de redes: redes estáticas y redes dinámicas. Una red estática es una red cuya topología queda definida de manera definitiva y estable durante la construcción de la máquina paralela. La red simplemente une los diversos elementos de acuerdo a una configuración dada. Se utiliza sobre todo en el caso de los multicomputadores para conectar los diversos procesadores que posee la máquina. Por la red sólo circulan los mensajes entre procesadores, por lo que se dice que la red presenta un acoplamiento débil. En general, en las redes estáticas se exige poca carga a la red.

Una red dinámica es una red cuya topología puede variar durante el curso de la ejecución de un programa paralelo o entre dos ejecuciones de programas. La red está constituida por elementos materiales específicos, llamados commutadores o switches. Las redes dinámicas se utilizan sobre todo en los multiprocesadores. En este caso, la red une los procesadores a los bancos de memoria central. Cualquier acceso de un procesador a la memoria (bien sea para acceder a los datos o a las instrucciones) debe pasar a través de la red, por lo se dice que la red tiene un acoplamiento fuerte. La red debe poseer un rendimiento extremadamente bueno para no demorar demasiado a los procesadores que acceden a memoria.

MULTICOMPUTADORES

Los sistemas multicomputadores se pueden ver como un computador paralelo en el cual cada procesador tiene su propia memoria local. En estos sistemas la memoria se encuentra distribuida y no compartida como en los sistemas multiprocesador. Los computadores se comunican a través de paso de mensajes, ya que éstos sólo tienen acceso directo a su memoria local y no al las memorias del resto de procesadores.

El diagrama de bloques de un sistema multicomputador coincide con el de los sistemas UMA, la diferencia viene dada porque la red de interconexión no permite un acceso directo entre memorias, sino que la comunicación se realiza por paso de mensajes. La transferencia de los datos se realiza a través de la red de interconexión que conecta un subconjunto de procesadores con otro subconjunto. La transferencia de unos procesadores a otros se realiza por tanto por múltiples transferencias entre procesadores conectados dependiendo del establecimiento de dicha red.

Dado que la memoria está distribuida entre los diferentes elementos de proceso, estos sistemas reciben el nombre de distribuidos. Por otra parte, estos sistemas son débilmente acoplados, ya que los módulos funcionan de forma casi independiente.



Características de los multicomputadores

- La memoria es privada (es decir, cada procesador tiene un mapa de direcciones propio que no es accesible directamente a los demás).



- La comunicación entre procesadores es por paso de mensajes a través de una red de interconexión.



- En un multicomputador, cada nodo es una computadora clásica.



- Los nodos colaboran para resolver juntos un mismo problema (ejecutar la misma aplicación).



- La compartición de datos es explícita, ya que el acceso a datos comunes es por paso de mensajes.

Paso de Mensajes

Paso de mensajes consta de nodos, que normalmente están conectados mediante enlaces directos a otros pocos nodos. Cada nodo esta compuesto por un procesador junto con una memoria local y canales de comunicación de entrada/salida. No existen localizaciones de memoria global. La memoria local de cada nodo solo puede ser accedida por el procesador de dicho nodo. Cada memoria local puede usar las mismas direcciones. Dado que cada nodo es un ordenador auto contenido, a los multiprocesadores de paso de mensajes se les suelen denominar multicomputadores.

El numero de nodos puede ser tan pequeño como 16 (o menos), o tan grande como varios millares (o mas). Sin embargo, la arquitectura de paso de mensajes muestra sus ventajas sobre los sistemas de memoria compartida cuando el número de procesadores es grande. Para sistemas multiprocesadores pequeños, los sistemas de memoria compartida presentaran probablemente un mejor rendimiento y mayor flexibilidad. El número de canales físicos entre nodos suele oscilar entre cuatro y ocho. La principal ventaja de esta arquitectura es que es directamente escalable y presenta un bajo coste para sistemas grandes.

Con uno o mas nodos fabricados en un chip, o en pocos chips, dependiendo de la cantidad de memoria local que se proporcione. Cada nodo ejecuta uno o más procesos. Un proceso consiste a menudo en un código secuencial, como el que se encontraría en un ordenador von Neumann. Si existe más de un proceso en un procesador, este puede eliminarse del planificador cuando esta a la espera de enviar o recibir un mensaje, permitiendo el inicio de otro proceso. Se permite el paso de mensajes entre los distintos procesos de un procesador mediante el uso de canales internos. Los mensajes entre procesos pertenecientes a diferentes procesadores se pasan a través de canales externos usando los canales físicos de comunicación existentes entre los procesadores. Idealmente, los procesos y los procesadores que ejecutan dichos procesos pueden ser vistos como entidades completamente separadas. Un problema se describe como un conjunto de procesos que se comunican entre si y que se hacen encajar sobre una estructura Física de procesadores. El conocimiento de la estructura física y de la composición de los nodos es necesario únicamente a la hora de planificar una ejecución eficiente.