sábado, 30 de octubre de 2010

REPORTE CORREGIDO DE LA UNIDAD 4 MEMORIA COMPARTIDA DISTRIBUIDA

 REPORTE DE LA UNIDAD 4  MEMORIA COMPARTIDA DISTRIBUIDA
MEMORIA COMPARTIDA DISTRIBUIDA
Los sistemas de  memoria compartida distribuida (DSM) representan la creación hibrida de dos tipos de computación paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos. Ellos proveen la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y consecuentemente combinan las mejores características de ambos enfoques. Debido a esto, el concepto de memoria compartida distribuida es reconocido como uno de los enfoques mas atractivos para la creación de sistemas escalables, de alto rendimiento de sistemas multiprocesador.
 
SISD (Single Instruction Single Data).
Este es el modelo tradicional de computación secuencial donde una unidad de procesamiento recibe una sola secuencia de instrucciones que operan en una secuencia dedatos.
SIMD (Single Instruction Multiple Data).

A diferencia de SISD, en este caso se tienen múltiples procesadores que sincronizadamente ejecutan la misma secuencia de instrucciones, pero en diferentes datos. El tipo de memoria que estos sistemas utilizan es distribuida.

 
 MIMD (Multiple Instruction Multiple Data)
 
   Este tipo de computadora es paralela al igual que las SIMD, la diferencia con estos sistemas es que MIMD es asíncrono. No tiene un reloj central. Cada procesador en un sistema MIMD puede ejecutar su propia secuencia de instrucciones y tener sus propios datos. Esta caracteristica es la más general y poderosa de esta clasificación.
 
  Los sistemas MIMD se clasifican en:
  • Sistemas de Memoria Compartida.
  • Sistemas de Memoria Distribuida.
  • Sistemas de Memoria Compartida Distribuida.
     
 SISTEMAS DE MEMORIA COMPARTIDA.
  En este tipo de sistemas cada procesador tiene acceso a toda la memoria, es decir hay un espacio de direccionamiento compartido. Se tienen tiempos de acceso a memoria uniformes ya que todos los procesadores se encuentran igualmente comunicados con la memoria principal y las lecturas y escrituras de todos los procesadores tienen exactamente las mismas latencias; y además el acceso a memoria es por medio de un ducto común. En esta configuración, debe asegurarse que los procesadores no tengan acceso simultáneamente a regiones de memoria de una manera en la que pueda occurrir algún error. 
DESVENTAJAS:
  • El acceso simultáneo a memoria es un problema.
  • Poca escabilidad de procesadores, debido a que se puede generar un cuello de botella al incrementar el numero de CPU's.
  En computadoras vectoriales como Crays, etc.

Todos los CPUs tienen un camino libre a la memoria.
No hay interferencia entre CPUs.

  La razón principal por el alto precio de Cray es la memoria.

VENTAJAS:
La facilidad de la programación. Es mucho más fácil programar en estos sistemas que en sistemas de memoria distribuida.
 
   Las computadoras MIMD con memoria compartida son sistemas conocidos como de multiprocesamiento simétrico (SMP) donde múltiples procesadores comparten un mismo sistema operativo y memoria. Otro término con que se le conoce es máquinas firmemente juntas o de multiprocesadores. Ejemplos son: SGI/Cray Power Challenge, SGI/Cray C90, SGI/Onyx, ENCORE, MULTIMAX, SEQUENT y BALANCE, entre otras.

  SISTEMAS DE MEMORIA DISTRIBUIDA.

 Estos sistemas tienen su propia memoria local. Los procesadores pueden compartir información solamente enviando mensajes, es decir, si un procesador requiere los datos contenidos en la memoria de otro procesador, deberá enviar un mensaje solicitándolos. Esta comunicación se le conoce como Paso de Mensajes
 
VENTAJAS:
  • La escalabilidad. Las computadoras con sistemas de memoria distribuida son fáciles de escalar, mientras que la demanda de los recursos crece, se puede agregar más memoria y procesadores.

DESVENTAJAS:
  • El acceso remoto a memoria es lento.
  • La programación puede ser complicada.

   Las computadoras MIMD de memoria distribuida son conocidas como sistemas de procesamiento en paralelo masivo (MPP) donde múltiples procesadores trabajan en diferentes partes de un programa, usando su propio sistema operativo y memoria. Además se les llama multicomputadoras, máquinas libremente juntas o cluster. Algunos ejemplos de este tipo de máquinas son IBM SP2 y SGI/Cray T3D/T3E.
 
 
SISTEMAS DE MEMORIA COMPARTIDA DISTRIBUIDA

 Es un cluster o una partición de procesadores que tienen acceso a una memoria compartida común pero sin un canal compartido. Esto es, físicamente cada procesador posee su memoria local y se interconecta con otros procesadores por medio de un dispositivo de alta velocidad, y todos ven las memorias de cada uno como un espacio de direcciones globales.
El acceso a la memoria de diferentes clusters se realiza bajo el esquema de Acceso a Memoria No Uniforme (NUMA), la cual toma menos tiempo en accesar a la memoria local de un procesador que accesar a memoria remota de otro procesador.
VENTAJAS:
  • Presenta escalabilidad como en los sistemas de memoria distribuida. 
  • Es fácil de programar como en los sistemas de memoria compartida. 
  • No existe el cuello de botella que se puede dar en máquinas de sólo memoria

MISD (Multiple Instrucion Single Data).
En este modelo, secuencias de instrucciones pasan a través de múltiples procesadores. Diferentes operaciones son realizadas en diversos procesadores. N procesadores, cada uno con su propia unidad de control comparten una memoria común.
 
Las máquinas MISD son útiles en cómputos donde la misma entrada esta sujeta a diferentes operaciones. 
telematica.cicese.mx/.../Part3.html
Un modelo de consistencia de memoria especifica las garantías de consistencia que un sistema MCD realiza sobre los valores que los procesos leen desde los objetos,dado que en realidad acceden sobre una réplica de cada objeto y que múltiples procesos pueden actualizar los objetos.

CONSISTENCIA SECUENCIAL

Para cualquier ejecución existe algún entrelazado de las series de operaciones realizadas por todos los procesos que satisafacen:

La secuencia entrelazada de operaciones es tal que si L(x)a ocurre en la secuencia, entonces, o la última operación de escritura que ocurrió antes en la secuencia entrelazada fue E(x)a, o no ha ocurrido ninguna operación de escritura antes que ella.

El orden de las operaciones en el entrelazado es consistente con el orden de
programa en que dichas operaciones fueron ejecutadas por cada cliente individual.

COHERENCIA

Cada proceso llega a acuerdos sobre el orden de las operaciones de escritura sobre la misma posición, pero no acuerdan necesariamente el orden de las operaciones de escritura sobre las posiciones diferentes.

CONSISTENCIA DÉBIL

Aprovecha el conocimiento de las operaciones de sincronización para relajar la consistencia de memoria, mientras se muestra al programador para implementar una consistencia secuencial.

CONSISTENCIA RELAJADA

Mejorar las prestaciones.

Preservar la semántica de sincronización de objetos del tipo de bloqueos y barreras.

Limitar el solapamiento entre los accesos a memoria, para garantizar ejecuciones cuyos resultados sean equivalentes a los obtenidos con consistencia secuencial.

THRASHING(FUSTIGAMIENTO)

Un sistema MCD está en thrashing cuando realiza un gasto desmesurado de tiempo en la invalidación y transferencia de datos compartidos en comparación con el tiempo empleado por los procesos de aplicación en la realización de trabajo útil.

CONSISTENCIA SECUENCIAL:
CASO IVY

El Modelo del Sistema

Los procesos comparten un segmento de
MCD.

Los procesos se ejecutan sobre unidades
de gestión de memoria paginada.

dsa-research.com/nacho/aic_archivos/Leccion-8.pdf
MCD DE PAGINAS
El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación.
Las páginas quedan restringidas a estar necesariamente en un único ordenador. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local.
 
 Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de computadoras. El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al ordenador que tiene la página virtual solicitada en su memoria local.
A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.
Una mejora dirigida a mejorar el rendimiento sugiere dividir el espacio de direcciones en una zona local y privada y una zona de memoria compartida, que se usará únicamente por procesos que necesiten compartir datos.
 Esta abstracción se acerca a la idea de programación mediante la declaración explícita de datos públicos y privados, y minimiza el envío de información, ya que sólo se enviarán los datos que realmente vayan a compartirse.

DISEÑO
De la descripción del sistema DSM-PEPE, es evidente que la especificación de los protocolos que implementan los distintos modelos de consistencia de memoria se encuentra dispersa entre los componentes del sistema. Esto está relacionado con el hecho que los protocolos implementados desencadenan sus acciones de consistencia bajo distintas condiciones.
 En el caso del protocolo de consistencia secuencial, las acciones de consistencia se desencadenan a partir de faltas de página detectadas por el sistema operativo, y en el caso del protocolo de consistencia de entrada, por acciones de sincronización explícitas dentro del código del usuario.
El hecho que la especificación se encuentre dispersa dificulta tanto la incorporación de nuevos protocolos de consistencia como la modificación de los ya existentes, debido a que los componentes tienen además de su funcionalidad básica responsabilidades que no les corresponden. Por ejemplo, los objetos DSMPage y DSMLock se encargan de ejecutar acciones de consistencia, a pesar que no es función de ellos manejar este tipo de acciones.
Específicamente la clase DSMPage debería encargarse de realizar actualizaciones de las páginas y mantener el estado de ellas; la clase DSMLock debería manejar únicamente acciones de sincronización como el envío y recepción del token de exclusión mutua. Sería deseable con el propósito de tener un mejor diseño que estas clases no incluyeran acciones ligadas a los protocolos de consistencia como ocurre en este momento.
Para mejorar el diseño de este sistema es necesario extraer y luego encapsular la especificación de los protocolos de consistencia de manera que sea el aspecto quien tome las acciones de consistencia necesaria. Más aún, a partir del hecho que los protocolos de consistencia dependiendo de su tipo toman acciones de consistencia en diferentes componentes se propone que cada modelo de consistencia de memoria en DSM-PEPE sea considerado como un aspecto.

A partir del análisis de los protocolos de consistencia de DSM-PEPE ya explicados ejemplificaremos nuestra propuesta, detallando las modificaciones que se deben realizar para conseguir un mejor diseño.
REPLICA
1.      Replicar los bloques de sólo lectura
2.      Replicar todos los bloques: en este caso se tienen que tomar acciones para mantener la consistencia de los datos.

GRANULARIDAD
Los distintos tipos de grafo se diferencian por la granularidad de sus nodos y la información contenida en las aristas. En todos los casos, los nodos del grafo contienen un apuntador a una operación de la representación en WHIRL.
A su vez, las operaciones de la representación intermedia también tienen asociado un apuntador que les va a permitir acceder al nodo correspondiente del grafo de dependencias.
En el grafo de dependencias entre arrays, los nodos apuntan a operaciones de load y store sobre arrays, mientras que en el grafo de niveles de dependencia, los nodos apuntan a sentencias, que son
CONSISTENCIA
*Un modelo de consistencia de memoria (Mosberger 1993) especifica las garantías de consistencia que un sistema otorga sobre los valores que los procesos leen de los objetos, dado que en realidad acceden a una réplica de cada objeto y que múltiples procesos pueden actualizar los objetos.

*La principal interrogante que se plantea al caracterizar un modelo de consistencia de memoria es: cuándo se realiza  un acceso de lectura sobre una posición de memoria, qué accesos de escritura son candidatos para que sus valores sean proporcionados en la lectura.
*Cualquier lectura realizada antes.
*La ultimo lectura.
MODELO
El modelo de consistencia secuencial dice que todos los nodos deben ver las escrituras sobre una variable en el mismo orden. El protocolo secuencial implementado en DSM-PEPE funciona sobre la base de que en todo momento un nodo es el propietario (owner) de una página y es sólo él quien puede escribir en ella.
 En caso que alguien más desee escribir en ella, primero debe encontrar al propietario y solicitarle la página, en cuyo caso el nodo receptor pasa a ser el nuevo propietario. La información de los propietarios de cada página se mantiene como un atributo del objeto DSMPage, llamado probOwner, el cual indica quién es su probable propietario.
Las acciones de consistencia se generan en cuatro tipos de eventos, que corresponden a métodos del objeto. 
DSMPage: faltas de páginas locales para lectura (ReadFault), faltas de página locales para escritura (WriteFault), faltas de página remotas para lectura (RemoteReadFault), y faltas de página remotas para escritura (RemoteWriteFault).
 En cada uno de esos casos se toman las acciones necesarias para invalidar páginas, enviar copias actualizadas a quien las pide, y actualizar los propietarios. 
Las faltas remotas se utilizan para ubicar al propietario de la página. Cuando llega una falta remota, el nodo evalúa si él es el propietario de la página; si es así, contesta con la acción de copia o invalidación correspondiente, y si no es así, reenvía la petición a quien él cree que es el probable propietario utilizando su atributo probOwner.
La recepción de faltas remotas se hace a través de un objeto receptor de mensajes llamado msgMgrThread, el cual transmite el evento de falta de página al objeto DSMPage correspondiente.
COPIAS
En el caso del protocolo de consistencia secuencial, se propone extraer de la especificación del objeto DSMPage la información relativa al probable propietario de la página y de los nodos que poseen copias de ella, ya que ésta es únicamente utilizada por el protocolo de consistencia secuencial, y extraer del msgMgrThread la funcionalidad relativa al protocolo de consistencia.
 Esto significa eliminar de la especificación del objeto DSMPage el atributo probOwner, y también los métodos que manejan la consistencia actualmente, ReadFault, WriteFault, RemoteReadFault, y RemoteWriteFault.
El sistema operativo y el objeto msgMgrThread generan los puntos de entrada a las acciones de consistencia.
La detección de una falta de página por el sistema operativo o la recepción de un mensaje por el msgMgrThread corresponden a los puntos de unión del aspecto encargado del protocolo de consistencia secuencial con el resto del sistema. El aspecto recibirá el nombre de sequentialAspect.
El aspecto sequentialAspect será el encargado de invalidar las páginas y enviar las copias actualizadas cuando reciba un mensaje de falta de página remota y el nodo sea el propietario de la página, o bien de redirigir mensajes de consistencia hacia los probables propietarios de las páginas cuando no lo sea y reciba este mismo mensaje.
 Además, tendrá que generar mensajes solicitando la página que se requiera cuando se produzca una falta de página local.
Con esto el diseño del objeto DSMPage se hace más cohesionado, ya que ahora contiene sólo la funcionalidad referente a la representación de una página de memoria y el msgMgrThread se encarga sólo de la recepción de mensajes entre los nodos y transmisión de estos mensajes hacia los objetos.
http://www.tutoriales.itsa.edu.mx/sistemasoperativosII/#
La compartición falsa se produce cuando dos procesos se pelean el acceso a la misma página de memoria, ya que contiene variables que requieren los dos, pero estas no son las mismas. Esto pasa por un mal diseño del tamaño de las páginas y por la poca relación existente entre variables de la misma página.

En los MCD basados en variables se busca evitar la compartición falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias páginas o en la misma página muchas variables del mismo tipo, en este protocolo es muy importante declarar las variables compartidas.
En los MCD basados en objetos se busca el acceso a datos por medio de la encapsulación de la info. Y repartida a través de la red, estos objetos serán definidos por el Programador y las CPU´s cambiaran los estados según procedan con los accesos.
Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente. Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles.
 

Demostración de memoria compartida en un GNU/Linux


Máquinas con arreglos de procesadores tales como ICL DAP (Distributed Array Processor) y computadoras vectoriales canalizadas como CRAY 1 & 2 y CIBER 205 son de arquitectura SIMD. 

No hay comentarios:

Publicar un comentario