miércoles, 2 de diciembre de 2015

Multiprocesamiento.


Un sistema de multiprocesamiento consiste en una computadora que tiene más de un procesador, o también podemos referirnos a una serie de computadoras con CPU'S o procesadores independientes. la mayoría de computadoras supervisoras son diseñadas especialmente para dar soporte a múltiples procesadores. incluyen un bus de altas prestaciones, decenas de MB para memoria con corrección de errores, sistema de disco redundantes, y arquitecturas avanzadas de sistemas.


Existen dos tipos de diseños de sistemas multiprocesador:
  • Simétrico: Los microprocesadores del sistema comparten los recursos del sistema, como la entrada salida de memoria y disco. Se distribuye uniformemente la carga de trabajo a los procesadores disponibles, de modo que uno no esté inactivo mientras otro tiene un exceso de trabajo con una tarea específica. Las prestaciones se incrementan para todas las tareas al añadir microprocesadores, su desventaja es que los sistemas operativos que soportan este tipo de multiprocesamiento son más difíciles de diseñar.
  • Asimétrico: Diferentes microprocesadores gobiernan las distintas tareas y recursos del sistema. El enfoque principal que adoptan es el incremento de rendimiento del sistema para múltiples usuarios de red en múltiples segmentos de red de área local. Los sistemas supervisores dan soporte a múltiples tarjetas de red, lo que incrementa el número de posibles segmentos. El bus de alta velocidad del servidor proporciona transferencia rápida de información entre los segmentos de red. Cada CPU se dedica a una función específica tal como entrada / salida de la tarjeta de interfaz de red u operaciones con archivos.


Clasificación.
Las cuatro categorías definidas por Flynn (1972)

se basan en el número de instrucciones concurrentes y en los flujos de datos disponibles en la arquitectura: 
  1. Una secuencia de instrucciones y una secuencia de datos (SISD: Single Instruetion, Single Data): Un único procesador interpreta una única secuencia de instrucciones para procesar los datos almacenados en una única memoria. No explota el paralelismo a nivel de instrucción. Máquinas mono procesador. 
  2. Una secuencia de instrucciones y múltiples secuencias de datos (SIMD: Single Instruction, Múltiple Data): Una única instrucción controla de forma simultánea y sincronizada un cierto número de elementos de proceso. Cada elemento tiene una memoria asociada, de forma que cada elemento ejecuta la misma instrucción con diferentes datos. Los procesadores vectoriales y matriciales pertenecen a esta categoría.
  3. Múltiples secuencias de instrucciones y una secuencia de datos (MISD: Multiple Instruction, Single Data): Se transmite una secuencia de datos a varios procesadores, cada uno de los cuales ejecuta una instrucción diferente sobre los mismos. Esta estructura nunca se ha implementado. 
  4. Múltiples secuencias de instrucciones y múltiples secuencias de datos (MIMD: Multiple Instructions, Multiple data): Un conjunto de procesadores ejecuta simultáneamente instrucciones diferentes sobre conjuntos de datos diferentes. Es el caso de los sistemas distribuidos, bien explotando un único espacio compartido de memoria, o bien uno distribuido. 




Tipos de multiprocesamiento.

1 Multiprocesamiento simentrico.

El Multiprocesamiento simétrico (symmetric multiprocessing / SMP) tiene un diseño simple pero aún así efectivo. En SMP, multiples procesadores comparten la memoria RAM y el bus del sistema. Este diseño es también conocido como estrechamente acoplado (tightly coupled), o compartiendo todo (shared everything).

Debido a que SMP comparte global mente la memoria RAM, tiene solamente un espacio de memoria, lo que simplifica tanto el sistema físico como la programación de aplicaciones. Este espacio de memoria único permite que un Sistema Operativo con Multiconexión (multithreaded operating system) distribuya las tareas entre varios procesadores, o permite que una aplicación obtenga la memoria que necesita para una simulación compleja. La memoria global mente compartida también vuelve fácil la sincronización de los datos.


2  Procesamiento Masiva mente Paralelo

El Procesamiento masivamente paralelo (Massively parallel processing / MPP) es otro diseño de procesamiento paralelo. Para evitar los cuellos de botella en el bus de memoria, MPP no utiliza memoria compartida. En su lugar, distribuye la memoria RAM entre los procesadores de modo que se semeja a una red (cada procesador con su memoria distribuida asociada es similar a un computador dentro de una red de procesamiento distribuido). Debido a la distribución dispersa de los recursos RAM, esta arquitectura es también conocida como dispersamente acoplada (loosely coupled), o compartiendo nada(shared nothing).



Para tener acceso a la memoria fuera de su propia RAM, los procesadores utilizan un esquema de paso de mensajes análogo a los paquetes de datos en redes. Este sistema reduce el tráfico del bus, debido a que cada sección de memoria observa únicamente aquellos accesos que le están destinados, en lugar de observar todos los accesos, como ocurre en un sistema SMP. Únicamente cuando un procesador no dispone de la memoria RAM suficiente, utiliza la memoria RAM sobrante de los otros procesadores. Esto permite sistemas MPP de gran tamaño con cientos y aún miles de procesadores. MPP es una tecnología escalable.


Multiprocesamiento Híbrido  o paralelo escalable.

La última arquitectura paralela, el Procesamiento paralelo escalable (Scalable parallel processing / SPP), es un híbrido de SMP y MPP, que utiliza una memoria jerárquica de dos niveles para alcanzar la escalabilidad. La primera capa de memoria consiste de un nodo que es esencialmente un sistema SMP completo, con múltiples procesadores y su memoria globalmente compartida.
Se construyen sistemas SPP grandes interconectando dos o mas nodos a través de la segunda capa de memoria, de modo que esta capa aparece lógicamente, ante los nodos, como una memoria global compartida.




El procesamiento paralelo ofrece una gran ventaja en cuanto a costos. Sin embargo, su principal beneficio, la escalabilidad (crecer hacia arquitecturas de mayor capacidad), puede ser difícil de alcanzar aún. Esto se debe a que conforme se añaden procesadores, las disputas por los recursos compartidos se intesifican.

No hay comentarios:

Publicar un comentario