4.3 Sistemas de Memoria Compartida: Multiprocesadores

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 13

4.3 Sistemas de memoria compartida: 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.

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.

Multitarea: 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.

4.3.1 Redes De Interconexión Dinámicas O Indirectas.


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.

4.3.1.1 Redes De Medio Compartido.


En el ejemplo del subapartado anterior sólo había un emisor y un
receptor unidos por una fibra óptica. En el mundo de las
comunicaciones, y de las redes de computadores en particular, el
medio que se utiliza para comunicarse suele estar compartido.
Con una serie de ejemplos iremos viendo diferentes maneras de
compartir el medio.

En el caso de la televisión o la radio, existen diferentes canales y


emisoras que están compartiendo el medio. A fin de que no haya
problemas, hay una regulación del espectro radioeléctrico: se
tiene cuidado de que cada uno de los canales tenga asignada una
frecuencia determinada y que no haya más de un canal usando la
misma frecuencia. Este sistema se llama multiplexación por
división de frecuencia y no sólo se utiliza en la radio y la
televisión.

Por ejemplo, los sistemas de línea de abonado digital asimétrica


(ADSL) utilizan este sistema para conectar la red de
computadores de casa a Internet. Como se puede ver en la figura
siguiente, por el cable telefónico circulan tres tipos de
información, cada uno por su frecuencia asignada: la voz de las
llamadas telefónicas, la información digital que viene de Internet
(bajada) y la información digital que nosotros enviamos a
Internet (subida).

Si lo que se está compartiendo es una fibra óptica, se tiende a


realizar una multiplexación por división del tiempo. Supongamos
que una misma fibra está siendo utilizada por cuatro
comunicaciones. En ese caso, la fibra estará disponible durante
un instante determinado de tiempo para la comunicación número
1; el siguiente instante de tiempo lo estará para la comunicación
2 y así sucesivamente. Una vez haya acabado la comunicación
número 4, la fibra volverá a estar disponible para la comunicación
1.

Otro método de compartición del acceso en el medio se basa en


la distribución de éste por parte de un dispositivo maestro. Por
ejemplo, en la tecnología Bluetooth, los dispositivos próximos
forman una red llamada piconet. En cada piconet se elige un
dispositivo maestro que va preguntando a los demás dispositivos
(que hacen las funciones de esclavo) quién debe utilizar el medio.
En el caso de que alguien lo necesite, lo tendrá disponible durante
cierto tiempo.

4.3.1.2 Redes Conmutadas.


Cuando se va a enviar datos a largas distancias (e incluso a no
tan largas), este debe pasar por varios nodos intermedios. Los
cuáles son los encargados de dirigir los datos para que lleguen a
su destino. Por lo cual se hace uso de lo que es una red
conmutada. ya que estas Consisten en un conjunto de nodos
interconectados entre sí, a través de medios de transmisión ,
formando así la mayoría de las veces una topología mallada,
donde la información se traslada encaminándola del nodo de
origen al nodo destino mediante conmutación entre nodos
intermedios.
Una transmisión de este tipo tiene 3 fases:
-Establecimiento de la conexión.
-Transferencia de la información.
-Liberación de la conexión.

Así mismo podemos decir que Se entiende por conmutación en


un nodo, a la conexión física o lógica, de un camino de entrada al
nodo con un camino de salida del nodo, con el fin de transferir la
información.

En pocas palabras se puede decir que una red conmutada es


aquella que permite la comunicación de nodo a nodo a través de
su conexión, para facilitar el traslado de información.

4.3.2 Coherencia De Caché.


La coherencia de cache hace referencia a la integridad de los
datos almacenados en las caches locales de los recursos
compartidos. La coherencia de la cache es un caso especial de la
coherencia de memoria.

Múltiples caches con recursos comunes.


Cuando los clientes de un sistema, en particular las CPUs en un
multiprocesador, mantienen caches de una memoria compartida,
los conflictos crecen. Haciendo referencia al dibujo, si el cliente
de arriba tiene una copia de un bloque de memoria de una lectura
previa y el cliente de abajo cambia ese bloque, el cliente de arriba
podría estar trabajando con datos erróneos, sin tener
conocimiento de ello. La coherencia de la cache intenta
administrar estos conflictos y mantener consistencia entre las
caches y la memoria.

Mecanismos para la coherencia de la cache.


Los protocolos basados en directorio mantienen un directorio
centralizado de los bloques que hay en las caches. Se utilizan
tanto en multiprocesadores con memoria físicamente distribuida,
como en sistemas con memoria centralizada con red escalable.
Estos protocolos de mantenimiento de coherencia reducen el
tráfico en la red enviando selectivamente órdenes sólo a aquellas
caches que disponen de una copia válida del bloque implicado en
la operación de memoria.

El protocolo Snoopy hace que las caches individualmente


monitoreen las líneas (buses) de direcciones de accesos a
memoria con respecto a los bloques que han copiado. Cuando una
operación de escritura es observada sobre una dirección de un
bloque del cual tiene un bloque, el controlador de cache invalida
su copia. También es posible que el controlador de cache observe
la dirección y el dato correspondiente a esa dirección, intentando
así actualizar su copia cuando alguien modifica dicho bloque en la
memoria principal.

El protocolo de memoria distribuida imita a los anteriores en un


intento de mantener la consistencia entre bloques de memoria en
sistemas con débil acoplamiento.

Modelos de coherencia.
Varios modelos y protocolos han sido desarrollados para
mantener la coherencia de la cache, tales como protocolo MSI,
protocolo MESI, protocolo MOSI y el protocolo MOESI. La elección
de un modelo de consistencia es crucial a la hora de diseñar un
sistema de cache coherente. Los modelos de coherencia difieren
en rendimiento y escalabilidad, por lo que deben ser evaluados
para cada sistema diseñado.

Además, las transiciones entre estados en una implementación


en concreto de estos protocolos pueden variar. Por ejemplo una
implementación puede elegir diferentes transiciones para
actualizar y actualiza tales como actualización-en-lectura,
actualización-en-escritura, invalidación-en-lectura, o
invalidación-en-escritura. La elección de una transición puede
afectar a la cantidad de tráfico entre caches, lo que a su vez
podría afectar al ancho de banda disponible por las caches para
la operación actual. Esto debe ser tenido en consideración en el
diseño de software distribuido que podría causar problemas de
contención entre caches de múltiples procesadores.
4.4 Sistemas de memoria distribuida. Multicomputadoras Clusters.
Los sistemas de memoria distribuida o multicomputadores
pueden ser de dos tipos básicos. El primer de ellos consta de un
único computador con múltiples CPUs comunicadas por un bus de
datos mientras que en el segundo se utilizan múltiples
computadores, cada uno con su propio procesador, enlazados por
una red de interconexión más o menos rápida.

Sobre los sistemas de multicomputadores de memoria


distribuida, se simula memorias compartidas. Se usan los
mecanismos de comunicación y sincronización de sistemas
multiprocesadores.

Un clúster es un tipo de arquitectura paralela distribuida que


consiste de un conjunto de computadores independientes
interconectados operando de forma conjunta como único recurso
computacional sin embargo, cada computador puede utilizarse de
forma independiente o separada.

En esta arquitectura, el computador paralelo es esencialmente


una colección de procesadores secuenciales, cada uno con su
propia memoria local, que pueden trabajar conjuntamente.

• Cada nodo tiene rápido acceso a su propia memoria y acceso


a la memoria de otros nodos mediante una red de
comunicaciones, habitualmente una red de comunicaciones de
alta velocidad.
• Los datos son intercambiados entre los nodos como
mensajes a través de la red.
• Una red de ordenadores, especialmente si disponen de una
interconexión de alta velocidad, puede ser vista como un
multicomputador de memoria distribuida y como tal ser utilizada
para resolver problemas mediante computación paralela.
4.4.1 Redes De Interconexión Estática
Las redes estáticas emplean enlaces directos fijos entre los
nodos. Estos enlaces, una vez fabricado el sistema son difíciles
de cambiar, por lo que la escalabilidad de estas topologías es
baja. Las redes estáticas pueden utilizarse con eficiencia en los
sistemas en que pueden predecirse el tipo de tráfico de
comunicaciones entre sus procesadores.

Clases de redes de interconexión:


• Formación lineal: Se trata de una red unidimensional en que
los nodos se conectan cada uno con el siguiente medianteN-1
enlaces formando una línea.
• Mallas y toros: Esta red de interconexión es muy utilizada
en la práctica. Las redes en toro son mallas en que sus filas y
columnas tienen conexiones en anillo, esto contribuye a disminuir
su diámetro. Esta pequeña modificación permite convertir a las
mallas en estructuras simétricas y además reduce su diámetro a
la mitad.

4.4.2 Clúster
Un clúster es un grupo de ordenadores débilmente acoplados que
trabajan en estrecha colaboración, de modo que en algunos
aspectos pueden considerarse como un solo equipo. Los clústeres
se componen de varias máquinas independientes conectadas por
una red. Mientras que las máquinas de un clúster no tienen que
ser simétricas, de no serlo, el balance de carga es más difícil de
lograr.

El tipo más común de clúster es el cluster Beowulf, que es un


clúster implementado con múltiples ordenadores comerciales
idénticos conectados a una red de área local TCP/IPEthernet. La
tecnología Beowulf fue desarrollada originalmente por Thomas
Sterling y Donald Becker. La gran mayoría de los
superordenadores TOP500 son clústeres. Se aplica a los
conjuntos o conglomerados de computadoras construidos
mediante la utilización de hardwares comunes y que se
compartan como si fuesen una única computadora.

Los clúster son usualmente empleados para mejorar el


rendimiento y la disponibilidad por encima de la que es provista
por un solo computador típicamente siendo más económico que
computadores individuales de rapidez y disponibilidad
comparables.De un clúster se espera que presente combinaciones
de los siguientes servicios:
• Alto rendimiento
• Alta disponibilidad
• Balance de carga
• Escalabilidad

La construcción de los ordenadores del clúster es más fácil y


económica debido a su flexibilidad: pueden tener toda la misma
configuración de hardware y sistema operativo diferente
rendimiento pero con arquitectura y sistemas operativos similares
o tener diferente hardware y sistema operativo lo que hace más
fácil y económica su construcción. Para que un clúster funcione
como tal no basta solo con conectar entre si los ordenadores, sino
que es necesario proveer un sistema de manejo del clúster, el
cual se encargue de interactuar con el usuario y los procesos que
ocurren en él para optimizar el funcionamiento.

La tecnología clúster permite a las organizaciones incrementar su


capacidad de procesamiento usando tecnología estándar tanto en
componentes de hardware como de software que pueden
adquirirse a un costo relativamente bajo.

4.4.3 Programación De Clúster


Estos clúster están diseñados y optimizados para correr
programas paralelos. En este caso, los programas tienen que ser
hechos específicamente para funcionar en forma paralela.
Típicamente estos programas son modelos que requieren realizar
gran cantidad de cálculos numéricos. La ventaja de programarlos
de esta manera y correrlos en un clúster es que se reduce
drásticamente los tiempos de proceso. En el caso de modelos
meteorológicos usados para predecir el tiempo es obvia la
necesidad de correrlos en tiempo mínimo. Cuando se programa
un modelo en una plataforma multiprocesadores es necesario
usar esquemas de programación paralela. Las bibliotecas son las
que permiten paralelizacion de tareas. En el caso de los clúster
SCALI, portar programas hechos con bibliotecas MPI es directo
gracias al uso de biblioteca SCAMPI

4.4.4 Consideraciones Sobre Rendimiento De Los Clúster


Para diseñar, implementar, probar y mantener un clúster se
requiere un entendimiento básico pero claro de hardware de
computadoras, de redes de computadoras y de sistemas
operativos y la habilidad para investigar algunos tópicos
especializados, como dispositivos de interconexión de Alta
velocidad, tal vez reintroducirse a lenguajes de programación
como FORTRAN y librerías para el desarrollo de aplicaciones como
MPI.

Una vez escogido un sistema operativo, dígase Linux, se requiere


algo de experiencia en la administración de sistemas Linux y en
la forma de realizar conexiones de red. De manera lógica, cada
nodo delx clúster tiene una parte de hardware y otra de software.
El hardware está compuesto por procesadores, memoria, interfaz
de red y discos duros entre otros.
4.5 Casos de estudio.

Por numerosos motivos, el procesamiento distribuido se ha


convertido en un área de gran importancia e interés dentro de la
Ciencia de la Computación, produciendo profundas
transformaciones en las líneas de I/D.

Interesa realizar investigación en la especificación,


transformación, optimización y evaluación de algoritmos
distribuidos y paralelos. Esto incluye el diseño y desarrollo de
sistemas paralelos, la transformación de algoritmos secuenciales
en paralelos, y las métricas de evaluación de performance sobre
distintas plataformas de soporte (hardware y software). Más allá
de las mejoras constantes en las arquitecturas físicas de soporte,
uno de los mayores desafíos se centra en cómo aprovechar al
máximo la potencia de las mismas.

Interesa realizar investigación en la especificación,


transformación, optimización y evaluación de algoritmos
distribuidos y paralelos. Esto incluye el diseño y desarrollo de
sistemas paralelos, la transformación de algoritmos secuenciales
en paralelos, y las métricas de evaluación de performance sobre
distintas plataformas de soporte (hardware y software). Más allá
de las mejoras constantes en las arquitecturas físicas de soporte,
uno de los mayores desafíos se centra en cómo aprovechar al
máximo la potencia de las mismas.

Líneas De Investigación Y Desarrollo


• Paralelización de algoritmos secuenciales. Diseño y
optimización de algoritmos.
• Arquitecturas multicore y multithreading en multicore.
• Arquitecturas multiprocesador.
• Modelos de representación y predicción de performance de
algoritmos paralelos.
• Mapping y scheduling de aplicaciones paralelas sobre
distintas arquitecturas multiprocesador.
• Métricas del paralelismo. Speedup, eficiencia, rendimiento,
granularidad, superlinealidad.
• Balance de carga estático y dinámico. Técnicas de balanceo
de carga.
• Análisis de los problemas de migración y asignación óptima
de procesos y datos a procesadores. Migración dinámica.
• Patrones de diseño de algoritmos paralelos.
• Escalabilidad de algoritmos paralelos en arquitecturas
multiprocesador distribuidas.
• Implementación de soluciones sobre diferentes modelos de
arquitectura homogéneas y heterogéneas (multicores, clusters,
multiclusters y grid). Ajuste del modelo de software al modelo de
hardware, a fin de optimizar el sistema paralelo.
• Evaluación de performance.
• Laboratorios remotos para el acceso transparente a recursos
de cómputo paralelo.

Grandes empresas y sus implementaciones con procesamiento


paralelo:

NVIDIA
PYSICS LAYER:
• GPU PhysX
• CPU PhysX
Graphics Layer:
• GPU –DirectX Windows

INTEL
PYSICS LAYER:
• No GPU PhysX
• CPU Havok
Graphics Layer:
• GPU –Direct X Windows

AMD
PYSICS LAYER:
• No GPU PhysX
CPU Havok
• Graphics Layer:
• GPU –DirectX Windows

También podría gustarte