unidad vi

18
Memoria Compartida Distribuida Existen dos sistemas con varios procesadores: multiprocesadores y multicomputadoras. En un multiprocesador, dos o más CPU comparten una memoria principal común. En la multicomputadora cada CPU tiene su memoria particular. Nada se comparte. Esto afecta en el diseño del hardware. En las cumputadoras con multiprocesadores se pueden conectar los procesadores a la memoria mediante un bus, siendo que cuando se tenga una cierta cantidad de procesadores, el bus resulta en un cuello de botella. Por otro lado, multiprocesadores con conmutador son escalables, pero lentos, costosos y complejos. Es más fácil construir multicomputadoras, basadas en computadoras sencillas.

Upload: luis-moran

Post on 11-Jul-2015

432 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Unidad VI

Memoria Compartida Distribuida

Existen dos sistemas con varios procesadores: multiprocesadores y multicomputadoras. En un multiprocesador, dos o más CPU comparten una memoria principal común. En la multicomputadora cada CPU tiene su memoria particular. Nada se comparte.

Esto afecta en el diseño del hardware. En las cumputadoras con multiprocesadores se pueden conectar los procesadores a la memoria mediante un bus, siendo que cuando se tenga una cierta cantidad de procesadores, el bus resulta en un cuello de botella. Por otro lado, multiprocesadores con conmutador son escalables, pero lentos, costosos y complejos.

Es más fácil construir multicomputadoras, basadas en computadoras sencillas.

Page 2: Unidad VI

Memoria Compartida Distribuida

Multiprocesadores con bus

Un bus es un canal, con una colección de cables paralelos, algunos con la dirección a la que se desea leer o escribir el CPU, algunos para enviar o recibir datos y el resto para controlar las transferencias.

El bus debe estar sincronizado vía reloj, tanto con los procesadores como con la memoria.

Page 3: Unidad VI

Memoria Compartida Distribuida

Multiprocesadores con bus:

Page 4: Unidad VI

Memoria Compartida Distribuida

Multiprocesadores basados en bus:

Multiprocesador: Multiprocesador con ocultamiento:

Page 5: Unidad VI

Memoria Compartida Distribuida

Multiprocesadores basados en bus:

Cuando cualquiera de los CPU desea leer una palabra de la memoria, coloca la dirección de la palabra en el bus y coloca una señal en la línea de control de bus para indicar que desea realizar la lectura. Cuando la memoria ha encontrado la palabra requerida, la coloca en el bus y tiende otra línea de control para anunciar que está lista. Entonces, el CPU lee la palabra. La escritura se realiza de manera análoga.

Para evitar que dos o más CPU intenten el acceso a la memoria al mismo tiempo, se necesita de un arbitraje de bus.

La desventaja de tener un solo bus, es la sobrecarga.

Page 6: Unidad VI

Memoria Compartida Distribuida

Multiprocesadores basados en bus:

Escritura a través del caché:

Cuando un CPU lee por primera vez una palabra de memoria, esa palabra es llevada por el bus y guardada en el caché del CPU solicitante. Si más tarde necesita de esa palabra, el CPU la toma del caché, reduciendo así el tráfico del bus.

Se tienen dos posibilidades:

• Fracaso de lectura ( palabra no aparece en caché )• Suceso de lectura ( palabra aparece en el caché )

Page 7: Unidad VI

Memoria Compartida Distribuida

Multiprocesadores basados en bus:

Escritura a través del caché:

En el momento de la escritura de una palabra en la memoria por un CPU, este nuevo dato debe ser puesto a disposición de los demás procesadores, siendo por lo tanto necesaria una sincronización de los caché respectivos de los demás procesadores ( consistencia de caché ).

Page 8: Unidad VI

Memoria Compartida Distribuida

Multiprocesadores con conmutador:

Los sistemas multiprocesadores basados en bus funcionan adecuadamente para sistemas pequeños ( alrededor de 64 CPU ), sin embargo no escalan con sistemas de cientos de procesadores.

Se puede solucionar:

• Reduciendo la cantidad de comunicación• Incrementando la capacidad de comunicación

Un método diferente consiste en construir el sistema como una jerarquía. Se colocan algunas CPU en bus, y estos se consideran como una unidad. Se construye el sistema con varias unidades y se conectan mediante un bus entre ellas.

Page 9: Unidad VI

Memoria Compartida Distribuida

Multiprocesadores con conmutador:

Page 10: Unidad VI

Memoria Compartida Distribuida

Multiprocesadores NUMA:

El ocultamiento de hardware en sistemas grandes no es muy simple. El hardware y protocolos deben mantener estructuras de datos complejas. Como consecuencia,se eleva el costo. Para ello se opta por diseños que no requieran elaborados esquemas de ocultamiento. Una de estas arquitecturas es el procesador NUMA ( acceso no uniforme a memoria ), en contraposición a un sistema multiprocesador tradicional UMA ( acceso uniforme a memoria ).

Cuando cualquier CPU escribe un valor en la localidad “a”, una lectura posterior por un procesador diferente regresará el valor recién escrito.

En una máquina NUMA, el acceso a memoria remota es mucho más lenta que el acceso local, y no se intenta ocultar el hecho mediante ocultamiento de hardware.

Page 11: Unidad VI

Memoria Compartida Distribuida

Multiprocesadores NUMA:

Propiedades:

• Todos los procesadores comparten la misma memoria. • Es posible el acceso a la memoria remota.• El acceso a la memoria remota es más lento que el de la memoria local.• El tiempo del acceso remoto no se oculta mediante el uso de los cachés.

NUMA ofrece memoria distribuida para cada procesador, evitando así que afecte al rendimiento del sistema cuando varios procesadores intentan acceder a la misma memoria. Para los problemas de las propagación de datos (comunes en servidores y aplicaciones similares), NUMA puede mejorar el rendimiento utilizando una única memoria compartida por un factor de aproximadamente el número de procesadores (o separando bancos de memoria).

Page 12: Unidad VI

Memoria Compartida Distribuida

Diferencia entre esquemas NUMA y clústeres

En NUMA hay una sola imagen de kernel ejecutándose, en contraposición del modelo convencional donde cada nodo ejecuta una imagen propia. En el cluster, cada nodo es una entidad propia que hay que gestionar, mientras que en NUMA es un componente de un único sistema que hay que gestionar.

Es conveniente utilizar NUMA cuando se quiere escalar de forma sencilla y rápida.

En el caso de los sistemas NUMA, la complejidad de la gestión se ve reducida ya que sólo administramos un equipo. En cuanto a la conectividad, tampoco es un problema porque cada nodo tiene su memoria y en principio no utilizará la memoria remota. En caso de utilizar la memoria remota, la conectividad se hace internamente mediante buses de elevado ancho de banda y muy baja latencia.

Page 13: Unidad VI

Memoria Compartida Distribuida

En una arquitectura NUMA hay que distinguir una serie de elementos:

Memoria local: en la arquitectura NUMA nos encontramos con que la memoria puede estar asociada a un procesador o no. Si hablamos de la memoria asociada a un procesador, hablamos de memoria local.

Memoria remota: por eliminación, esta será la memoria no asociada a un procesador.Distancia: cuando hablamos de distancia, generalmente se hace referencia al número de hops que tienen que darse hasta llegar a un dispositivo, memoria o CPU. Cuantos más hops haya que dar, más remota será esa memoria (o dispositivo).

Nodo: este concepto ya es más complicado porque depende de cada fabricante. Por norma general, podemos hablar de nodo cuando nos referimos a un conjunto: CPU+RAM local.

En un sistema UMA, toda la memoria es local ya que todos los procesadores pueden acceder a ella por igual gracias a un único bus.

Page 14: Unidad VI

Memoria Compartida Distribuida

En cambio, en una arquitectura NUMA, cada procesador tiene una cantidad de memoria asociada a él, cada procesador tiene un bus que le conecta con “su” memoria. Ya podemos ver la principal ventaja: no hay competición por la memoria por parte de los procesadores. Esta sería la memoria local.

Además, puede haber una memoria global compartida a la que cualquier procesador puede tener acceso sin distinciones, esta sería la memoria remota.

¿Puede un procesador pedirle a otro procesador que le deje su memoria? La respuesta es sí. Imaginémonos el procesador P1 con su memoria M1 que no está haciendo absolutamente nada. Además tenemos el procesador P2 y su memoria M2. Este procesador está “asfixiado” con todo lo que tiene que hacer y tiene la memoria saturada. En este caso, P2 puede pedirle a P1 permiso para usar la memoria M1. M1 sería memoria remota para P2.

Page 15: Unidad VI

Memoria Compartida Distribuida

Son denominados sistemas NORMA ( Non Remote Memory Access ) a aquellos en donde ningún procesador puede tener acceso directo a memoria de otro computador, en contraposición a los sistemas NUMA.

La diferencia entre NUMA y NORMA, es que en el primero cada procesador puede hacer referencia de manera directa a cada palabra en el espacio global de direcciones, sólo leyendo o escribiendo en él.

Las páginas están distribuidas de forma aleatoria entre las memorias, sin afectar los resultados dados por los programas. Cuando un procesador hace referencia a una memoria remota, el sistema tiene la opción de traerla o utilizarla de manera remota.

En el caso de computadoras en LAN, los procesadores solo pueden hacer referencia a su memoria local. Cuando un procesador hace referencia a una página remota, esa página debe ser traída.

Page 16: Unidad VI

Memoria Compartida Distribuida

Page 17: Unidad VI

Memoria Compartida Distribuida

Modelos de DSM

• Con base en páginas• Con variables compartidas• Basadas en objetos

Page 18: Unidad VI

Memoria Compartida Distribuida

Tendencias DSM

Dado el desarrollo de las redes de fibra óptica y canales de fibra ( Fibre Channel ), se agilizarían las transferencias de datos entre multicomputadoras ( actualmente en 1Gbps y en un futuro, desde 2 hasta 8Gbps ), pudiéndose así inclusive eliminar el caché, lo que simplificaría en mucho el software utilizado.

El auge de equipos multiprocesadores ( con con varios núcleos – cores ) incrementa la capacidad de cómputo y el abaratamiento de las memorias ( gigabytes ) permitirá compartir y gestionar memorias en bloques grandes de una vez.