ARQUITECTURAS PARALELAS
ARQUITECTURA SISD
• Un procesador capaz de realizar acciones
secuencialmente, controladas por un programa el cual se encuentra almacenado en
una memoria conectada al procesador.
• Este hardware está diseñado para dar soporte al
procesamiento secuencial clásico, basado en el intercambio de datos entre
memoria y registros del procesador, y la realización de operaciones
aritméticas en ellos.
• Algunas máquinas secuenciales “modernas” no
corresponden estrictamente al modelo SISD.
• A partir de la introducción de los procesadores
RISC se comenzó a utilizar varios conceptos de las arquitecturas paralelas,
como pipelining, ejecución paralela de instrucciones no dependientes,
prefetching de los datos, etc., para lograr
un incremento en la cantidad de operaciones por ciclo de
instrucción.
ARQUITECTURA SIMD
• Un único programa controla los
procesadores.
• Útil en aplicaciones uniformes
• Procesamiento de imágenes.
• Multimedia.
• Aplicaciones numéricas sobre grillas.
• Su aplicabilidad está limitada por las
comunicaciones entre procesadores.
• La topología de interconexión es fija.
• Los elementos de procesamiento tienen capacidad
de cómputo limitada (1 bit a 8 bits), por lo que se pueden colocar una
gran cantidad por chip (e.g. CM-2 con 64k PEs).
• Fueron los primeros multiprocesadores difundidos
comercialmente (en la década de 1980)
• Ejemplos comerciales
• Cray X-MP (computador más potente entre
1983–1985)
• Connection Machine (CM-2, CM-200, década de 1980).
• MasPar MP2 (inicios de la década de 1990).
ARQUITECTURA MISD
• Varias unidades funcionales ejecutan diferentes
operaciones sobre el mismo conjunto de datos.
• Las arquitecturas de tipo pipeline pertenecen a
esta clasificación
• Aunque no puramente, ya que pueden modificar los
datos sobre los que operan.
• Systolic arrays, FPGA celulares.
• También pertenecen los computadores tolerantes a
fallos que utilizan ejecución redundante para detectar y enmascarar errores.
• No existen otras implementaciones específicas.
• Los modelos MIMD y SIMD son más apropiados para
la aplicación del paralelismo tanto a nivel de datos como de control.
ARQUITECTURA MIMD
•
Consistieron en el “siguiente paso” en la evolución de las arquitecturas
paralelas.
– Fueron lentamente desplazando al modelo SIMD.
•
A diferencia de los modelos SISD y MISD, las computadoras MIMD pueden trabajar
asincrónicamente (los procesadores tienen la capacidad de funcionamiento
semi-autónomo).
•
Existen dos tipos de computadores SIMD, de acuerdo al mecanismo utilizado para
comunicación y sincronización:
– MIMD de memoria compartida (fuertemente acopladas).
– MIMD de memoria distribuida (poco acopladas).
MIMD CON
MEMORIA COMPARTIDA
• Procesadores autónomos, trabajan
asincrónicamente.
• Comunicación entre procesadores a través del
recurso compartido.
– Comunicación y sincronización se realiza en forma
explícita.
– Emisor escribe y receptor lee de la memoria
global.
• Fáciles de construir.
– SO convencionales de los SISD son portables.
• Buena solución para procesamiento transaccional
(sistemas multiusuario, etc.)
• Limitación: confiabilidad y escalabilidad.
– Un fallo de memoria de algún componente puede
causar un fallo total del sistema.
• Incrementar el número de procesadores puede
llevar a problemas en el acceso a memoria.
– Caso de supercomputadores Silicon Graphics).
• El bus (cuello de botella) limita la
escalabilidad a un máximo de pocas decenas de procesadores.
– Caches locales introducen problema de “cache
coherence”.
• Ejemplos:
– Encore MULTIMAX
– Inicios de la década de 1990, hasta 20
procesadores.
– Sequent Symmetry.
– Década de 1990, de 10 a 30 procesadores.
– Sun SPARCcenter 2000.
– Década de 1990, escalable hasta 20 procesadores.
– Sun-4d (d por dragon, nombre código del
SPARCcenter 2000).
• Mecanismos para compartir los datos.
• UMA = Uniform Memory Access
– Acceso uniforme (todos los procesadores acceden a
la memoria en el mismo tiempo).
– Multiprocesadores simétricos (SMP).
– Pocos procesadores (32, 64, 128, por problemas de
ancho de banda del canal de acceso).
• NUMA = Non-Uniform Memory
Access.
– Colección de memorias separadas que forman un
espacio de memoria direccionable.
– Algunos accesos a memoria son más rápidos que
otros, como consecuencia de la disposición
física de las memorias (distribuidas físicamente).
– Multiprocesadores masivamente paralelos (MPP).
MIMD CON
MEMORIA DISTRIBUIDA
• No existe el concepto de memoria global.
• Comunicación y sincronización:
– Mecanismos explícitos de IPC (mensajes) sobre la
red (en escenario óptimo, red de alta
velocidad).
– Tiene mayor costo que en MIMD de memoria
compartida.
• Las comunicaciones pueden ser cuellos de botella.
– Influye la topología de conexión.
• Arquitectura escalable para aplicaciones
apropiadas para esta topología.
– Decenas de miles de procesadores.
• Ventajas respecto a MIMD de memoria compartida
– Fácilmente escalable.
– Alta disponibilidad (el fallo de una CPU
individual no afecta a todo el sistema).
• Ejemplos comerciales
– Connection Machine CM-5 (1991, 16k procesadores).
– IBM SP (IBM Scalable POWER parallel)
– Incluye tecnología High Performance Switch (HPS)
para comunicación entre nodos.
– 1991: SP1; 1993: SP2,
1996: POWER2 Super Chip.
– En 1999 incorporan procesadores POWER3, en 2001
POWER4 y en 2004 POWER5.
– Intel Paragon (1992: 2048 procesadores, luego
4000).
– Cray. – Luego de fusión con SGI: Scalable Node
SN1, SN2.
– T3E, 1997, hasta 2048 procesadores.
ARQUITECTURA DE UN
PROCESADOR VECTORIAL
Un procesador
vectorial es un conjunto de recursos para efectuar operaciones sobre vectores.
Estas operaciones consistirán en funciones aritméticas y
lógicas aplicadas sobre las componentes de los
vectores. La diferencia entre un procesador vectorial y un escalar
estriba en que el procesador vectorial puede decodificar instrucciones cuyos
operandos son vectores completos. La conversión de un programa correspondiente
a un procesador escala a otro vectorial se llama vectorización.
Una primera versión muy simplificada, de procesador vectorial es el mostrado en
la figura 3.1. Este tipo de máquina sería un procesador vectorial
memoria-memoria que es capaz de extraer dos vectores de memoria y operar sobre
ellos. El inconveniente de este tipo de máquina sería el cuello de botella que
supondrían los accesos a memoria. Por ello, sobre esta primera arquitectura
pueden hacerse algunas mejoras:
1. Aumentar el ancho de banda de la memoria: esto se consigue
entrelazando la memoria, de forma que esta tenga varios módulos y se pueda
acceder simultáneamente varias posiciones consecutivas que se hallen en módulos
diferentes.
2. Añadir una memoria
intermedia de mayor velocidad entre la memoria y el procesador. Una forma de
hacer esto, además de incorporar una memoria caché, es añadir un banco de
registros vectoriales.
Por todo esto, es
habitual que los procesadores vectoriales dispongan de un banco (o varios) de
registros vectoriales que hagan de memoria intermedia; se habla entonces de procesadores vectoriales registro-registro. Por otra parte, la
mayoría de los procesadores vectoriales actúan como procesadores de un
procesador escalar convencional que trata las instrucciones no vectoriales.
Ello hace que la arquitectura de un computador vectorial actual sea la que se
muestra en la figura 3.2. Como puede verse, los computadores vectoriales pueden
considerarse como computadores del tipo SIMD de Flynn, sin embargo, hay que
tener en cuenta que, si bien los computadores vectoriales ejecutan la misma
instrucción sobre datos diferentes, estos datos forman parte del mismo flujo.
Por ello, en algunos casos, a estas máquinas se les llama SIMD-Vectoriales
(Germain-Renaud and Sansonnet, 1991).
ARQUITECTURA DE UN
PROCESADOR SISTOLICO
El concepto
de arquitectura sistólica fue desarrollado por Kung y utilizado en la
Universidad de Carnegie-Mellon. Los arrays sistólicos evolucionaron de intentos
de obtener un ancho de banda de cálculo más eficiente del silicio. Los arrays
sistólicos se pueden considerar como un método para diseñar computadores de
propósito especial para equilibrar recursos, ancho de banda de E/S y cálculo.
Basándose en la segmentación, los datos fluyen en etapas desde memoria a un
array de unidades de cálculo y vuelta a memoria, como sugiere la figura. Un
sistema sistólico consiste en un conjunto de celdas interconectadas, cada una
de las cuales es capaz de ejecutar alguna instrucción simple. Las celdas se
interconectan en forma de matriz o de árbol. La información en un sistema
sistólico fluye entre celdas en una estructura segmentada y la comunicación con
el exterior sólo es posible en las celdas fronterizas.
La memoria
impulsa los datos al elemento de proceso (PE), de forma semejante al
"corazón". En la figura (a) se aprecia cómo un procesador
convencional procesa una instrucción mientras que el procesador sistólico de la
figura (b) ejecuta 6 veces más instrucciones a la vez. Los datos se introducen
por un lado de la red a manera de oleadas. El procesamiento sistólico opera de
forma similar a las contracciones del corazón. Los datos se procesan
rítmicamente. El problema de este sistema radica en asegurarse, que, una vez
tomado el dato de la memoria, se use efectivamente en cada celda por la que
pasa.
ARQUITECTURA DE UN MULTIPROCESADOR
Este sistema consiste de varios
procesos que pueden ejecutarse sobre procesadores diferentes (aunque no es
necesario), es muy común en sistemas grandes de tiempo real, recolectan
información, toman decisiones, con la afirmación, y envían señales a los
actuadores que modifican el entorno del sistema.
El uso de múltiples procesadores mejora el rendimiento y adaptabilidad del
sistema. La distribución de los procesos de los procesadores se puede
predeterminar o puede estar bajo el control de un despachador que decide cuales
procesos ubicar en cada procesador. Los sistemas de múltiples procesos no son
necesariamente sistemas distribuidos. Si se dispone de más de un procesador,
entonces se puede implementar la distribución, pero los diseñadores del sistema
no siempre consideran forzosamente cuestiones de distribución mediante el
proceso de diseño.
Un ejemplo para este tipo de sistemas es un modelo simplificado de un sistema
de control de tráfico. Un conjunto de sensores distribuidos recogen información
sobre le flujo de tráfico y la procesan localmente antes de enviarla a una sala
de control. Los operadores toman decisiones usando esta información y dan
instrucciones a un proceso de control de diversas luces de tráfico.
Los sistemas de software
compuestos de procesos múltiples no necesariamente son sistemas distribuidos.
Si más de un procesador está disponible, entonces se puede implementar la
distribución, pero los diseñadores del sistema no siempre consideran los puntos
de distribución durante el proceso de diseño. El enfoque de diseño para este
tipo de sistema es el mismo para los de Tiempo Real.
Para el desarrollo de estos
procesos se ocupan modelos de programación concurrente y paralela:
Los objetivos de la programación
paralela, son:
· Reducir
el tiempo de cómputo.
· Reducir
la complejidad del algoritmo,
· Aprovechar
al máximo la capacidad de las computadoras multiproceso.
Existen diferentes tipos de
programación:
· Multihilo:
El cual permite a una aplicación realizar varias tareas concurrentemente.
Los distintos hilos que se
ejecutan comparten una serie se recursos.
Pase de mensaje: MPI ("Message Passing Interface") es un
estándar que define la sintaxis y la semántica de las funciones usada en
programas que exploten la existencia de múltiples procesadores.
ARQUITECTURA DE UN MULTICOMPUTADOR
La característica más importante
de estos sistemas es que tienen la memoria distribuida. Esta arquitectura
también es conocida como arquitectura basada en el paso de mensajes, ya que los
procesos deben realizar comunicaciones (mensajes) a través de la red de
interconexión para poder compartir datos. Estas máquinas, por consiguiente, no
están limitadas por el ancho de banda de memoria, sino más bien por el de la
red de interconexión. La figura 7 muestra el esquema básico de un
multicomputador donde cada nodo tiene parte de la memoria distribuida. Los
nodos pueden contener desde un simple uniprocesador como un sistema
multiprocesador.
Los sistemas MPP (massively
parallel processors) son multicomputadores que tienen sus CPU conectadas con
una red de interconexión estática de altas prestaciones (baja latencia y
elevado ancho de banda) especialmente diseñada para el sistema. Son sistemas
grandes, en comparación con un sistema CMP, pero que no suelen tener un número
muy elevado de CPU debido al coste económico que supondría mantener una red de
interconexión de altas prestaciones. En general, son sistemas difícilmente
escalables.
Las características principales
de los sistemas MPP son:
• Utilizan
microprocesadores estandard, pero también pueden incorporar hardware específico
o aceleradores (por ejemplo, ASIC*, FPGA**, GPU).
• La red de
interconexión que incorporan es propietaria, especialmente diseñada, con muy
baja latencia y un ancho de banda elevado.
• Suelen venir con software
propietario y librerías para gestionar la comunicación.
• Tienen una
capacidad de almacenamiento de entrada/salida elevada, ya que se suelen
utilizar para trabajar con grandes volúmenes de datos que se han de procesar y
almacenar.
• Tienen mecanismos de tolerancia
de fallos del hardware.
Estos sistemas MPP normalmente se
han utilizado en cálculos científicos, pero también se han usado de forma
comercial. La serie de connection machines es el ejemplo típico de máquinas
masivamente paralelas.
REFERENCIAS:
- http://www.fing.edu.uy/inco/cursos/hpc/material/clases/Clase2-2009.pdf
- http://www.infor.uva.es/~bastida/Arquitecturas%20Avanzadas/Vectoriales.pdf
- http://www.dte.eis.uva.es/Docencia/ETSII/SMP/BAK/tema5/Tema5.pdf
- LIBRO: IAN SOMMERVILLE INGENIERIA DE SOFTWARE 6° EDICIÓN ADDISON WESLEY
https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arquitecturas_de_computadores_avanzadas_(Modulo_2).pdf