Post on 08-Aug-2015
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.
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.
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
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.
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.
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.
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
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
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
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
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.
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
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
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
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
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.
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
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
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.