Está en la página 1de 13

4.

3 Sistemas de memoria
compartida: Multiprocesadores
Un multiprocesador es una computadora paralela
compuesta por varios procesadores interconectados que
comparten un mismo sistema de memoria.

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. A los multiprocesadores también se les
conoce como sistemas de memoria compartida.
4.3 Sistemas de memoria
compartida: Multiprocesadores
Multiproceso es conocido tradicionalmente como el uso de
múltiples procesos concurrentes en un sistema en lugar de
un único proceso en un instante determinado. Con la
multitarea permite a múltiples procesos compartir una
única CPU, múltiples CPU’s pueden ser utilizados para
ejecutar múltiples hilos dentro de un único proceso.

Los programas típicamente se escriben asumiendo que sus


datos son incorruptibles, sin embargo si una copia del
programa se ejecuta en otro procesador, las dos copias
pueden interferir entre sí intentado ambas leer o escribir su
estado al mismo tiempo.

Para evitar este problema se usan técnicas de


programación basadas en semáforos y otro tipo de
comprobaciones y bloqueos que permiten a una sola copia
del programa cambiar de forma exclusiva de ciertos
valores.

Multitarea: Permite a múltiples procesos compartir una


única CPU, múltiples CPU’s pueden ser utilizados para
ejecutar múltiples hilos dentro de un único proceso.
4.3.1 Redes de Interconexión
Dinámicas o Indirectas
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.

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 las comunicaciones y las redes de computadoras en
particular el medio que se utiliza para comunicarse suele
estar compartido.

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


y emisoras que están compartiendo el medio, teniendo una
regulación del espectro electromagnético: cada canal tiene
asignada una frecuencia determinada con el fin de que no
haya más de un canal usando la misma frecuencia. Este
sistema se conoce como multiplexación por división de
frecuencia.

Otro método de medio compartido es en el que 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 (esclavos) quién debe utilizar el medio.
4.3.1.2 Redes Conmutadas
Cuando se envían datos a largas distancias, 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 hacen uso de una red conmutada, ya
que estas consisten en un conjunto de nodos
interconectados entre sí, a través de medios de
transmisión, formado entre sí una topología de malla,
donde la información es encaminada del nodo origen al
nodo destino mediante la 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 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.

Una red conmutada es una red que permite la


comunicación de un nodo a otro a través de su conexión,
para facilitar el traslado de la información.
4.3.2 Coherencia de Caché
La coherencia de caché hace referencia a la integridad de
datos almacenados en las caches locales de los recursos
compartidos. La coherencia de caché es un caso especial
de la coherencia de memoria.

Cliente Caché

Recurso de
coherencia
Memoria

Cliente Caché

Múltiples Caches con Recursos Comunes


Cuando las CPU’s en un multiprocesador mantienen caches
de una memoria compartida, los conflictos crecen.
Haciendo referencia al diagrama anterior, si el cliente 1
tiene una copia de un bloque de memoria de una lectura
previa y el cliente 2 cambia ese bloque, el cliente 1 podría
estar trabajando con datos erróneos, sin tener
conocimiento de ello. La coherencia de la caché intenta
administrar estos conflictos y mantener consistencia entre
las caches y la memoria.
4.3.2 Coherencia de Caché
Mecanismos para la coherencia de la caché
Los protocolos basados en directorio mantienen un
directorio centralizado de los bloques de la memoria. Se
utilizan tanto en multiprocesadores con memoria
físicamente distribuida, como en sistemas con memoria
centralizada con red escalable. Estos protocolos reducen el
tráfico en la red enviando selectivamente órdenes a
aquellas cachés que disponen de una copia válida del
bloque implicado en la operación de memoria.

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.
4.4 Sistemas de memoria distribuida:
Multicomputadores Clustesrs

Los sistemas de memoria distribuida pueden ser de dos


tipos básicos:

Un único computador con múltiples CPU’s comunicadas
por un bus de datos.

Múltiples computadoras, cada una con su propio
procesador, enlazados por una red de interconexión.

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


consiste en un conjunto de computadoras independientes
interconectadas operando de forma conjunta como único
recurso computacional, sin embargo cada computadora
puede utilizarse de forma independiente.

En esta arquitectura, la computadora paralela es en esencia


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

Cada nodo tiene rápido acceso a su propia memoria y
acceso a la memoria de otros nodos mediante una red
de comunicaciones.

Los datos son intercambiados entre nodos como
mensajes a través de la red.

Una red de ordenadores, si disponen de una
interconexión alta pueden ser vistos como un
multicomputador de memoria distribuida.
4.4.1 Redes de Interconexión
Estática

Emplean enlaces directos fijos entre nodos. Estos enclaces,


una vez fabricado son difíciles de cambiar. Por lo que su
escalabilidad es baja. Las redes estáticas pueden utilizarse
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, mediante (n+1) enlaces formando una línea.

Malla 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 de 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. 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 clúster Beowulf, que es


un clúster implementado con múltiples ordenadores
comerciales idénticos conectados a una red de área local
TCP/IP Ethernet. Se aplica a los conjuntos o
conglomerados de computadoras construidos mediante la
utilización de hardware 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
4.4.2 Clúster

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 del 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.

También podría gustarte