Memoria compartida distribuida.pdf

19

Click here to load reader

Transcript of Memoria compartida distribuida.pdf

Page 1: Memoria compartida distribuida.pdf

1

Memoria Compartida Distribuida

Profs. Yudith Cardinale-Mariela CurielSep – Dic 2002

Taxonomía de Computadores Paralelos y Distribuidos

Comp. Paralelos y Distribuidos

Multiprocesadores(Mem. Compartida )

SwitchedSwitchedBus

Multicomputadores(Mem. Privada)

Bus

Fuertementeacoplados

Débilmenteacoplados

Taxonomía de Computadores Paralelos y Distribuidos

Multiprocesadores? Tienen memoria

compartida? Son sistemas altamente

acoplados: cuando se envía un mensaje el retardo es corto y la tasa es alta. Comunes en sistemas paralelos.

Multicomputadores? Cada procesador tiene su

memoria privada.? Sistemas débilmente

acoplados: el retardo es notable y la tasa es baja. Son más comunes en sistemas distribuidos.

Bus: es una sola red, cable o cualquier otro medio que conecta todas las máquinas.Switch: puede haber conexiones de máquina a máquina (en distintas organizaciones).

Multiprocesadores

?Soporte de Software:?Para comunicación: un proceso escribe y los otros

leen.?Para la sincronización: se usan regiones críticas y

existen herramientes que ofrecen la exclusión mutua (semáforos, contadores, monitores)?La comunicación y sincronización son problemas

que han sido ampliamente estudiados. ?Los programas son más cortos y fáciles de

comprender que los programas escritos con pase de mensajes.

Page 2: Memoria compartida distribuida.pdf

2

Multiprocesadores

?Soporte de Hardware:?Es difícil diseñar una máquina donde varios

procesadores utilicen la misma memoria. Si la arquitectura está basada en bus, no es escalable. Con switches se obtiene una mayor escalabilidad pero son costosos, lentos, complejos.

Multicomputadores

?Soporte de Software:?La comunicación se hace a través del pase de

mensajes, lo cuál trae complicaciones adicionales: pérdida de mensajes, pérdida de orden, etc. ?Se han propuesto algunas soluciones para

facilitar la programación: RPC, RMI, etc. ?Soporte de Hardware:?Fácil de construir?Son escalables

Sistemas con Memoria Compartida Distribuida (DSM)? Toma las ventajas de los enfoques anteriores:

software de los sistemas de memoria compartida y el hardware de los sitemas de memoria distribuida

? Colección de estaciones de trabajo conectadas por una red, compartiendo un único espacio de memoria virtual

? La ubicación de los datos, su movimiento, etc, lo maneja el sistema de memoria compartida distribuida.

? Implementado sobre pase de mensajes

Sistemas con Memoria Compartida Distribuida (DSM)? [Li, 1986] y [Li and Hudak, 1989] fueron los

primeros en proponer el paradigma de Memoria Compartida Distribuida.?Colección de estaciones de trabajo conectadas por una

LAN que comparten un solo espacio de direcciones paginado.?Una referencia a una página causa una falla de página

que atrapa el SOP. Este último envía un mensaje a la máquina remota, para solicitar la página.?La comunicación y sincronización se realiza a través de

la memoria, la comunicación es transparente para los procesos.

Page 3: Memoria compartida distribuida.pdf

3

Sistemas con Memoria Compartida Distribuida (DSM)? Es un sistema fácil de programar y fácil de

construir pero el desempeño es pobre.

? Durante muchos años la investigación se ha enfocado en tratar de memojarar este rendimiento. Las soluciones buscan principalmente reducir el tráfico de red. ?Compartir variables u objetos en lugar de páginas ?Uso de caches (surge el problema de la consistencia)

Arquitecturas de Memoria Compartida

Los multiprocesadores de Memoria Compartida

constituyen la inspiración de los sistemas de memoria

compartida distribuida

Arquitecturas de Memoria Compartida

?Memoria con circuitos (on-chip-memory):

CPU Mem

CPU

CPU Mem CPU

CPU

Es posible pero es complicado, costoso e inusual

Multiprocesadores Basados en Buses

Snooping cache: Alivia la

sobrecarga del bus y aumenta el rendimiento

?Problema con el cache: Posibilidad de Memoria Inconsistente?Solución:

–Protocolo de consistencia write-through cache –Protocolo de consistencia write-once

Page 4: Memoria compartida distribuida.pdf

4

Multiprocesadores Basados en Buses

?Protocolo de consistencia write-through:? Ante una falla de lectura, se lee la palabra

de la memoria y se carga en el cache. ? Si la palabra se necesita de nuevo, se toma

del cache. ?Es posible para una misma palabra estar a la

vez en diferentes caches.

Multiprocesadores Basados en Buses

?Qué pasa ante una escritura:?Si la palabra no está en el cache se realiza la

escritura en la memoria y se trae el dato al cache.? Si está en el cache (una sola copia) la palabra se

actualiza en el cache y en la memoria. ? Si la palabra está en más de un CPU: se actualiza

en el cache y en la memoria y se invalidan el resto de las entradas. Al final de la escritura sólo un cache tendrá la palabra correcta y estará actualizada en la memoria.

Multiprocesadores Basados en Buses

?Protocolo de consistencia write-through cache:

Invalida la entrada en su cache

Actualiza en Memoria y en cache

WRITE Hit

Invalida la entrada en su cache

Actualiza en Memoria y trae el dato a cache

WRITE Miss

Ninguna AcciónLee localmente del cacheREAD Hit

Ninguna AcciónTrae el dato desde Memoria y actualiza en cache

READ Miss

Acción de otros caches

Acción del cache del CPU que realiza el evento

Evento

Multiprocesadores Basados en Buses

?Protocolo de consistencia write-through :?En lugar de invalidar se puede actualizar las

copias ante un write, pero las actualizaciones son más costosas (dirección mas los nuevos datos) . Se necesitan más ciclos de CPU.?El protocolo es fácil de comprender e

implementar, pero su principal desventaja es que todas las escrituras usan el bus, lo que ocasiona un desempeño pobre.

Page 5: Memoria compartida distribuida.pdf

5

Multiprocesadores Basados en Buses

? Protocolo de consistencia write-once:?Supone que una vez que un CPU se apodera de un dato,

es difícil que otro lo requiera?El cache es dividido en bloques que pueden estar en

uno de estos tres estados:? Inválido: no contiene datos válidos? Limpio: la memoria está actualizada, el bloque puede

estar en otros caches? Sucio: la memoria está incorrecta, ningún otro cachepuede

contenerlo

?La idea es que si varios quieren leer, comparten el dato y puede estar en varios caches. Si el dato es de escritura sólo un cache lo puede contener y realiza sólo actualizaciones locales

Multiprocesadores Basados en Buses

?Protocolo de consistencia write-once:

A B C W1

w1limpio

W1 está en memoria y en el cache de B en estado “limpio”.La memoria está correcta

A B C W1

w1limpio

w1limpio

A lee W1 desde la memoria, B no es afectado.La memoria está correcta

Multiprocesadores Basados en Buses

?Protocolo de consistencia write-once (cont.):

A B C W1

w1

A escribe un valor W2, Bhusmea en el bus, ve la escritura e invalida su entrada. La copia deA se marca como sucia.

A B C W1

w1inválido

w3

sucio

A escribe un nuevo valor. Éstay todas las escrituras posterioresse harán localmente sin usarel bus.

w2inválido

sucio

W=

Multiprocesadores Basados en Buses

?Protocolo de consistencia write-once (cont.):

A B C W1

w1

C quiere acceder al contenido de W, A ve la solicitud al husmear el bus, proporciona el valor e invalida su entrada. C tiene ahora laúnica copia válida.

inválidow3

inválido suciow3

El cache que tiene la última copia es el responsable de enviar una señal a la memoria para que no responda ante una solicitud de otro cache .Mientras el dato no se actualice en memoria, la única copia permanecerá en estado sucio, hasta que deba salir de cache por razones de espacio; en ese momento se actualiza la memoria y la palabra desaparece de los caches.

Page 6: Memoria compartida distribuida.pdf

6

Multiprocesadores Basados en Buses

?Protocolo de consistencia write-once (cont.):

?La consistencia se logra haciendo que todos los caches husmeen el bus.?El protocolo se integra dentro de la unidad

de administración de la memoria (hardware)?Todo el algoritmo se realiza en un ciclo de

memoria

Multiprocesadores basados en anillo

?Memnet (1988): tiene un espacio de direcciones que se divide en una parte privada y una compartida

?La parte privada se divide en regiones?La parte compartida se divide en bloques de 32

bytes.?Todas las máquinas están conectadas por un

anillo donde circula un token de solicitudes?Pimera arquitectura de memoria compartida

distribuida

Multiprocesadores basados en anillo

MMUcache Homememory

Blocktable

CPU

MEMORIA PRIVADA

...

b01

n

V E O I Posición

b: número de bloque V: bit válido, el bloque está en el

cache y actualizado E: bit exclusivo, copia únicaO: bit de origenI: bit de interrupción

Los bloques read-onlypueden estaren varias máquinasLos bloques read-write deben estaren una sola máquina (no necesa-riamente la de origen)

DispositivoMemnet

Multiprocesadores basados en anilloProtocolo de lectura:

?Examina la tabla de bloques para determinar si el bloque está presente. Si está, se satisface la solicitud. Si no está presente:? Espera el token de solicitudes, coloca la solicitud en el token.

El paquete de solicitud contiene la dirección deseada y un campo vacío de 32 bytes.

? A medida que el token circula, cada CPU verifica si contiene el dato solicitado. Si lo tiene, lo coloca en el campo vacío y modifica el encabezado de la solicitud para inhibir la acción de los otros CPUs. Si no lo contiene pasa el token. Si el bitExclusivo está encendido, se limpia.

? Si la máquina receptora no tiene espacio libre en el cache para almacenar el nuevo dato, selecciona uno al azar (que no sea de los que tienen el bit de Origen encendido) y lo envía a su máquina origen.

Page 7: Memoria compartida distribuida.pdf

7

Multiprocesadores basados en anillo

Protocolo de escritura, se distinguen tres casos:?El bloque deseado está presente y el bit Exclusivo está

encendido (única copia), entonces la actualización se realiza localmente.? El bloque deseado está presente y el bit Exclusivo no está

encendido (existen más copias), entonces se envía un paquete para que las otras máquinas invaliden este bloque. Cuando el paquete de invalidación regresa, se enciende el bit Exclusivo y se actualiza el dato.?Si el bloque no está presente, se envía un paquete que combina

una solicitud y una invalidación. La primera máquina que posea el bloque lo coloca en el paquete e invalida su entrada, el resto de las máquinas sólo invalidan su entrada. Cuando el paquete retorna a su emisor se realiza la actualización

Multiprocesadores con Conmutador ?Tanto los multiprocesadores basados en bus

como los basados en anillo no pueden escalar a más de 64 procesadores ?Se puede mejorar la capacidad del bus si se

incrementa la capacidad de comunicación (organizando los buses en jerarquía)

Multiprocesadores con Conmutador

A B C M

A B C M

A B C M

Bus intracluster

Bus interclusters

Cluster

A B C M

A B C M

A B C M

A B C M

A B C M

A B C M

Bus intersuperclusters

Multiprocesadores con Conmutador: DASH

Directory Architecture for Shared Memory?Compuesta de 16 clusters (0 al 15)?Cada cluster contiene un bus, 4 CPUs, 16 MB de

memoria y dispositivos de I/O.?La cantidad de memoria total es de 256 MB, dividida

en 16 regiones de 16MB cada una.?El cluster 0 contiene las direcciones desde 0 a 16MB, el

cluster 1 contiene las direcciones desde 16MB hasta 32MB y así sucesivamente?La unidad de transferencia es un bloque de 16 bytes

Page 8: Memoria compartida distribuida.pdf

8

Multiprocesadores con Conmutador: DASH

?Arquitectura DASH ?Directorios: cada cluster tiene un directorio que

contiene la información de cuáles clusters tienen copias de sus bloques.

...

0 150

1023

CLUSTERS

ESTADO:UNCACHED: La única copia está aquíCLEAN: memoria correcta, puede haber

más copiasDIRTY: memoria incorrecta, sólo un cache

tiene el bloque

BLOQUES

Comparación de los Sistemas de Memoria Compartida

Single-busMulti-Pro.

SwitchedMulti-Pro.

NumaPage-BasedDSm

Object-BasedDSN

Shared-VariableDSM

Hardware-controlled caching Software-controlled caching

Managed by MMU

Managed by language runtimesystemManaged by OS

Remote access in hardware Remote access in software

Cache block

Cache block

Page Page DataStructure

Object

Firefly Dash Buterfly Ivy Munin Linda, Orca

SiNoNoNoNoNoMétodos de encapsulamiento

ObjetoVar. Compartida

PáginaPáginaBloque

BloqueUnidad de transferencia

SwSwSwSwHwHwLa migración la realiza

RedRedRedBusBusBusMedio de transferencia

Runtime System

Runtime System

OSMMUMMUMMUQuien convierte los accesos remotos a memoria en mensajes

NoNoNoSiSiSi Es posible una memoria no asociada a un CPU particular

NoNoNoSiSiSiEl acceso remoto es posible en Hw

GeneralR-WR-WR-WR-WR-WOperaciones posibles

NoNoSiSiSiSiEspacio lineal de memoria compartida

Multiprocesadores DSM

NUMA Pág. Var. Comp. Obj. DSM: Aspectos de Diseño e Implementación

?Replicación?Estructura?Localización de los datos?Políticas de escritura?Política de reemplazo de páginas?Modelos de consistencia

Page 9: Memoria compartida distribuida.pdf

9

Replicación

?Replicar los bloques de sólo lectura?Replicar todos los bloques: en este caso se

tienen que tomar acciones para mantener la consistencia de los datos.

0 21 143 15

Cpu1 Cpu4

0 2 59

13 15 5

Estructura

?Orientada a bytes– Una palabra– Un bloque (varias palabras)

– Una página– Un segmento (múltiples páginas)

?Variables compartidas?Objetos

Localización de los datos

? Localización del propietario : posee o bien la copia de los datos que se puede escribir, o una de las copias de lectura y una lista con los otros nodos que poseen copias de lectura. Es al único que se le permite actualizar los datos. – Un propietario fijo: cada pieza de datos se asigna a un

propietario fijo. A los otros procesadores no se les da acceso directo a los datos y deben comunicarse con el propietario cada vez que desean hacer operaciones de escritura.

Localización de los datos

? Propietario que varía dinamicamente: el problema es localizar al propietario. Se introduce el concepto de manager, que tiene la información sobre quién es el propietario actual de los datos.

– Centralizado: el manager es un único nodo. Los accesos a los datos se negocian con el manager. Es un cuello de botella.

Manager

OwnerP

RequestReply

Reply

Request

Manager

OwnerP

Request

Reply

Request

Page 10: Memoria compartida distribuida.pdf

10

Localización de los datosDistribuido: la información sobre los propietarios se

distribuye entre los nodos. Cómo se localiza al propietario de un item de datos?

? Fijo: hay un esquema fijo para localizar al manager de los datos. El manager informa cuál es el propietario, quien puede variar dinámicamente.

? Dinámico:– Broadcast: se envía un broadcast para encontrar quién es el

propietario de los datos. Ineficiente cuando la red subyacente no soporta el broadcast.

– Dinámico: Cada procesador tiene el propietario probable de cada item. Es una especie de pista. Si la pista es incorrecta, al menos representa el comienzo de una cadena de procesadores a partir de la cual se llega hasta el propietario. Cuando se encuentra cuál es el propietario actual, se modifica la pista. Alternativa: un broadcast intermitente.

Loalización de los datos

Localización de las copias– Broadcast: trabaja bien si los mensajes nunca

se pierden (broadcast confiable)– Copysets: dice qué procesadores almacenan qué

páginas. Cuando se necesita invalidar una página el propietario o el manager envía un mensaje a cada procesador que contenga la página y espera por un Ack. La invalidación culmina cuando se han recibido los acks.

Localización de los Datos

3 22 3Cpu 1 Cpu 3Cpu 2

24

4134

3124

5

Cpu 4

23 44

copyset

page

Políticas de Escritura

Se debe asegurar que un procesador no lea un dato invalido después que se ha realizado una operación de escritura. Existen dos opciones:– Escritura actualizante:

– Escritura Invalidante

Page 11: Memoria compartida distribuida.pdf

11

Políticas de Escritura

?Escritura actualizante: – Las escrituras de un proceso se realizan en forma local

y se envían a todos los procesos que posean una copia del dato.

– Permite múltiples lectores y múltiples escritores.– Se requieren broadcast o multidifusiones ordenadas (en

algunos casos se utiliza un ente centralizado que garantiza el orden). De esta forma todos los procesos ven todas las actualizaciones en el mismo orden que se realizan.

– Orca es un sistema que implementa escritura actualizante. Munin soporta escritura actualizante como una opción.

Políticas de Escritura

?Escritura invalidante: – Multiples lectores/un solo escritor.– Cuando un proceso intenta escribir un dato, se envía un

mensaje a quienes tienen copias para invalidarlas y se esperan los Acks, antes que la escritura tenga lugar.

– Las actualizaciones se propagan cuando se leen los datos y se pueden realizar varias actualizaciones consecutivas sin necesidad de realizar ninguna comunicación.

– Se tienen que invalidar copias de sólo lectura

Políticas de ReemplazoMejores candidatos a victima:? Una página de la que existe otra copia cuyo dueño

es otro procesador? Una página replicada de la cual se es propietario.? Cuando no existen réplicas: La página válida

usada menos recientemente (LRU). Qué se hace con la victima?– Escribirla a disco– Pasarla al propietario:

? Estático? Dinámico: procesador que tenga mas memoria libre.

Modelos de Consistencia de la Memoria

?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 multiples procesos pueden actualizar los objetos.

Page 12: Memoria compartida distribuida.pdf

12

Modelos de Consistencia de la Memoria

? 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 última lectura, – Etc.

Modelos de Consistencia de la Memoria

?Los modelos que estudiaremos son: – Consistencia estricta– Consistencia secuencial

– Consistencia causal– PRAM

– Consistencia débil

– Consistencia relajada

Consistencia Estricta

Cualquier lectura a la localidad de memoria x retorna el valor almacenado por la última operación de escritura (antes de la lectura).

? Supone la existencia de un tiempo global. Determinar cuál fue la escritura más reciente no siempre es posible.

? En un solo procesador la consistencia estricta es lo esperado.

A = 1A = 2print(A)

A Bx

2 segs

T1Read(x)(A)

T2Write(x)(B)

T3Llega a B petición de A para escribir X

T0Write(x)(B)

Consistencia Estricta

? En un sistema distribuido es razonable exigir consistencia estricta??

Notación:P1, P2 : procesosW(x)a : A la variable x se le asigna el valor aR(y)b : Se lee b en la variable ySe supone que el valor inicila de todas las variables es 0.

P1: W(x)1

P2: W(x)2

tiempo

Page 13: Memoria compartida distribuida.pdf

13

Consistencia Estricta

P1: W(x)1

P3: R(x)2

P2: W(x)2

P1: W(x)1

P3: R(x)1

P2: W(x)2

P1: W(x)1

P2: R(x)0 R(x)1

T1: petición de escritura desde AT2: Un proceso en B lee valor de xT3: llega petición de escritura de AT4: Un proceso en B lee el valor de X

Consistencia Estricta

? Si hay un cambio en una zona de memoria, todas las lecturas observarán el nuevo valor sin importar cuan pronto se está haciendo la lectura (respecto a la escritura) o donde están localizados los procesos que realizan las operaciones.

? Si se hace una lectura se obtiene el valor actual, sin importar cuán rápido se realiza la próxima escritura.

Consistencia Secuencial(Lamport, 1979)

?La consistencia estricta es practicamente imposible de implementar en un sistema distribuido. ?La experiencia demuestra que a un

programador le bastan modelos más débiles

Consistencia SecuencialCuando se ejecutan procesos en paralelo sobre

diferentes máquinas, cualquier mezcla de ejecución es un resultado aceptable, no obstante todos los procesos deben ver la misma secuencia de referencias a memoria. Se respeta el orden de los programas.

P1: W(x)1

P2: R(x)0 R(x)1P1: W(x)1

P2: R(x)1 R(x)1

Write(x) Read(x)Read(x)

Los dos resultados son válidos desde el punto de vista de consistencia secuencial

Page 14: Memoria compartida distribuida.pdf

14

Consistencia Secuencial

a=1print(b,c)

(a)

c=1print(a,b)

(c)

b=1print(a,c)

(b)

a = 1print (b,c)b = 1print (a,c)c = 1print(a,b)

Prints: 001011

a = 1c = 1print (a,b)print (a,c)a = 1print(b,c)

a = 1b = 1print (a,c)print (b,c)c = 1print(a,b)

Prints: 101011 Prints: 010111

000000 y 001001 son resultados inválidos

Los tres resultadosson válidos y lasaplicaciones deben funcionar bien en presencia de cualquiera de ellos

Las operaciones son atómicas

Consistencia Secuencial

?Un sistema de consistencia secuencial se puede implementar utilizando un único servidor que administra los datos compartidos. Todos los procesos envían sus operaciones de lectura y escrtitura al servidor que las ordena en forma global.

Consistencia Causal(Hutto and Ahamad, 1990)

? Si un evento B es causado o influenciado por un evento A, la causalidad requiere que todo el mundo vea primero el evento A y luego el B.

? Cuando encontramos una lectura seguida por una escritura, los dos eventos están potencialmente relacionados en forma causal.

? Un read está relacionado causalmente con la escritura que provee el dato que se ha leído.

P1 escribe XP2 lee X escribe Y (Y puede depender del valor leído de X)

Consistencia Causal

?Si dos procesos escriben espontaneamente y simultaneamente una variable, estos accesos no están relacionados causalmente.? Las operaciones que no están relacionadas

causalmente se dice que son concurrentes

Page 15: Memoria compartida distribuida.pdf

15

Consistencia Causal

Las escrituras relacionadas causalmente deben ser vistas por todos los procesos en el mismo orden. Las escrituras concurrentes pueden ser vistas en un orden diferente, en diferentes máquinas.

P1: W(x)1 W(x)3

P3: R(x)1 R(x)3 R(x)2

P2: R(x)1 W(x)2

P4: R(x)1 R(x)2 R(x)3

Hay consistencia causal pero no consistenciasecuencial o consistencia estricta

concurrentes

Consistencia CausalP1: W(x)1

P3: R(x)2 R(x)1

P2: R(x)1 W(x)2

P4: R(x)1 R(x)2

Violación de la ConsistenciaCausal

P1: W(x)1

P3: R(x)2 R(x)1

P2: W(x)2

P4: R(x)1 R(x)2

Una sucesión de eventos correcta con Consistencia Causal

Consistencia Causal

?Implementación: grafo de dependencia para determinar cuáles operaciones son dependientes de otras y cuáles son concurrentes. Un ente centralizado.

Consistencia PRAM (Pipelined RAM)

(Lipton and Sandberg 1988)

Las escrituras realizadas por un proceso, son recibidas por el resto en el orden en el cual éstas fueron ejecutadas, no obstante, las escrituras realizadas por diferentes procesos pueden ser vistas en órdenes diferentes por todos ellos

P1: W(x)1

P3: R(x)2 R(x)1

P2: R(x)1 W(x)2

P4: R(x)1 R(x)2

Una sucesión correcta de eventos con Consistencia PRAM

Page 16: Memoria compartida distribuida.pdf

16

Consistencia PRAM (Pipelined RAM)

(Lipton and Sandberg 1988)

P1: W(x)1 W(x) 3

P3: R(x)2 R(x)1 R(x) 3

P2: R(x)1 W(x)2

P4: R(x)1 R(x)2 R(x) 3

Consistencia PRAM

a = 1print (b,c)b = 1print (a,c)c = 1print(a,b)

b = 1print (a,c)c = 1print (a,b)a = 1print(b,c)

a = 1b = 1print (a,c)print (b,c)c = 1print(a,b)

(a) (c)(b)

a = 1if (b == 0) kill (p2)

b = 1if (a == 0) kill (p1)

(a) (b)

Consistencia PRAM

a = 1if (b == 0) kill (p2)

b = 1if (a == 0) kill (p1)

(a) (b)

P1 muere, P2 muere, o no muere ninguno.

En el modelo PRAM pueden morir los dos procesos

a = 1if (b == 0) kill (p2)b = 1if ....

b = 1if (a == 0) kill (p1)a = 1If ...

Consistencia Débil(Dubois et al. 1986)

? Los modelos anteriores se consideran aún restrictivos porque requieren que las escrituras de un proceso se vean en orden.

? Esto no siempre es necesario. Ej. Cuando se está en una región crítica no es necesario propagar valores intermedios sino los valores finales.

? Para saber que se está en una región crítica a menos que se establezcan instrucciones explícitas.

Page 17: Memoria compartida distribuida.pdf

17

Consistencia Débil(Dubois et al. 1986)

? Se introduce un nuevo tipo de variable: variables de sincronización.

? Los accesos a las variables de sincronización son secuencialmente consistentes: todos los procesos ven todos los accesos a las variables de sincronización en el mismo orden.

? No se permite el acceso a ninguna variable de sincronización hasta que todas las escrituras previas se hayan completado: Hacer una sincronizacion después de operaciones de escritura obliga a que los nuevos valores se propaguen a todas las memorias.

Consistencia Débil(Dubois et al. 1986)

? El hacer una operación de sincronización antes de leer los datos, le garantiza a un proceso que leerá los últimos valores.

Operación de sincronización: garantiza que las escrituras locales sean propagadas a todas las otras máquinas y se actualiza la memoria actual con escrituras hechas remotamente.

Consistencia Débil

P1: W(x)1 W(x)2 S

P2: S R(x)1

P1: W(x)1 W(x)2 S

P3: R(x)2 R(x)1 S

P2: R(x)1 R(x)2 S

Variables ordinarias

Consistencia Relajada(Gharachorloo et al., 1990)

? Se proveen dos operaciones:– Acquire: la memoria se asegura que todas las copias

locales de las variables protegidas se actualizan con las variables remotas.

– Release: con esta operación se propagan los cambios realizados a las variables protegidas al resto de las máquinas.

? El programador es el responsable de colocar estas operaciones correctamente en su programa

Page 18: Memoria compartida distribuida.pdf

18

Consistencia Relajada? Realizar un acquire no garantiza que los cambios

realizados sean propagados al resto de las máquinas en forma inmediata.

? De forma similar, el realizar un release no garantiza que se importen cambios realizados por otras máquinas.

P1: Acq(L) W(x)1 W(x)2 Rel(L)

P3: R(x)1

P2: Acq(L) R(x)2 Rel(L)

Consistencia RelajadaPosible implementación:- Existe un administrador de sincronización.- En un acquire se solicita un acceso sobre un lock

al manger. Si no hay competencia el manager lo otorga.

- Al llegar al release se propagan los cambios a otras máquinas . Al recibirse el Ack de todas las máquinas se informa al manager de la liberación del lock

Modelos de Consistencia

Todos los procesos ven las escrituras de un mismo proceso en el orden en el que se realizaron. Las escrituras de distintos procesos no siempre se ven en el mismo orden. Los programadores (con estos dos últimos modelos) deben evitar instrucciones que sólo trabajan con consistencia secuencial

PRAM

Todos los procesos ven los accesos compartidos, relacionados causalmente, en el mismo orden

Causal

Todos los procesos ven todos los accesos en el mismo orden. Popular entre los programadores y ampliamente usado. Desempeño pobre.

Secuencial

Todos los accesos compartidos se observan en el orden en el que se realizaron. Imposible de implementar en DSM

Estricta

DescripciónConsistencia: Modelos que no usan operaciones de sincronización

Modelos de Consistencia

Los datos compartidos están consistentes cuando se sale de la región crítica. Estos modelos pueden ser más eficientes pero requieren más esfuerzo del programador

Relajada

Se garantiza que los datos compartidos están consistentes después de la operación de sincronización

Débil

DescripciónConsistencia: Modelos con operaciones de sincronización

Page 19: Memoria compartida distribuida.pdf

19

Conclusiones

? DSM es una abstracción de memoria compartida que sirve de alternativa a la comunicación basada en el pase de mensajes.

? Su rendimiento es comparable al rendimiento de pase de mensajes para ciertas aplicaciones paralelas. El rendimiento depende en gran medida de las aplicaciones.

? Entre los principales aspectos de diseño e implementación se encuentran: la estructura, los modelos de consistencia, la utilización de protocolos de escritura actualizante o invalidante y la granularidad.