Académique Documents
Professionnel Documents
Culture Documents
Bus
Switched
Bus
Switched
Multiprocesadores
de Software:
? Para comunicacin: un proceso escribe y los otros
leen.
? Para
Bus: es una sola red, cable o cualquier otro medio que conecta todas las mquinas. Switch: puede haber conexiones de mquina a mquina (en distintas organizaciones).
la sincronizacin: se usan regiones crticas y existen herramientes que ofrecen la exclusin mutua (semforos, contadores, monitores) ? La comunicacin y sincronizacin son problemas que han sido ampliamente estudiados. ? Los programas son ms cortos y fciles de comprender que los programas escritos con pase de mensajes.
Multiprocesadores
? Soporte
Multicomputadores
? Soporte
de Hardware:
de Software:
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.
mensajes, lo cul trae complicaciones adicionales: prdida de mensajes, prdida de orden, etc. ?Se han propuesto algunas soluciones para facilitar la programacin: RPC, RMI, etc.
? Soporte
? Fcil
de Hardware:
Toma las ventajas de los enfoques anteriores: software de los sistemas de memoria compartida y el hardware de los sitemas de memoria distribuida ? Coleccin de estaciones de trabajo conectadas por una red, compartiendo un nico espacio de memoria virtual ? La ubicacin de los datos, su movimiento, etc, lo maneja el sistema de memoria compartida distribuida. ? Implementado sobre pase de mensajes
[Li, 1986] y [Li and Hudak, 1989] fueron los primeros en proponer el paradigma de Memoria Compartida Distribuida.
? Coleccin de estaciones de trabajo conectadas por una
LAN que comparten un solo espacio de direcciones paginado. ? Una referencia a una pgina causa una falla de pgina que atrapa el SOP. Este ltimo enva un mensaje a la mquina remota, para solicitar la pgina. ? La comunicacin y sincronizacin se realiza a travs de la memoria, la comunicacin es transparente para los procesos.
Es un sistema fcil de programar y fcil de construir pero el desempeo es pobre. Durante muchos aos la investigacin se ha enfocado en tratar de memojarar este rendimiento. Las soluciones buscan principalmente reducir el trfico de red.
? Compartir variables u objetos en lugar de pginas ? Uso de caches (surge el problema de la consistencia)
CPU
con el cache: Posibilidad de Memoria Inconsistente ?Solucin: Protocolo de consistencia write-through cache Protocolo de consistencia write-once
de consistencia write-through:
? Si la palabra no est en el
del cache.
?Es posible para una misma palabra estar a la
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 ms 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 slo un cache tendr la palabra correcta y estar actualizada en la memoria.
READ Miss Trae el dato desde Memoria y actualiza en cache READ Hit Lee localmente del cache WRITE Miss Actualiza en Memoria y trae el dato a cache WRITE Hit Actualiza en Memoria y en cache
copias ante un write, pero las actualizaciones son ms costosas (direccin mas los nuevos datos) . Se necesitan ms ciclos de CPU. ?El protocolo es fcil de comprender e implementar, pero su principal desventaja es que todas las escrituras usan el bus, lo que ocasiona un desempeo pobre.
? Protocolo
A B
? Supone que una vez que un CPU se apodera de un dato, ? El cache es dividido en bloques que pueden estar en
Invlido: no contiene datos vlidos Limpio: la memoria est actualizada, el bloque puede estar en otros caches Sucio: la memoria est incorrecta, ningn otro cache puede contenerlo
w1 limpio
W1
dato y puede estar en varios caches. Si el dato es de escritura slo un cache lo puede contener y realiza slo actualizaciones locales
w1 limpio
w1 limpio
? Protocolo
A B
? Protocolo
A B
w2 sucio
w1 invlido
A escribe un valor W2, B husmea en el bus, ve la escritura e invalida su entrada. La copia de A se marca como sucia.
W1
w3 sucio
w1 invlido
A escribe un nuevo valor. sta y todas las escrituras posteriores se harn localmente sin usar el bus.
El cache que tiene la ltima copia es el responsable de enviar una seal 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.
?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 administracin de la memoria (hardware) ?Todo el algoritmo se realiza en un ciclo de memoria
(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 mquinas estn conectadas por un anillo donde circula un token de solicitudes ? Pimera arquitectura de memoria compartida distribuida
b V E O I Posicin 0 1
...
Los bloques read-only pueden estar en varias mquinas Los bloques read-write deben estar en una sola mquina (no necesariamente la de origen)
n b: nmero de bloque V: bit vlido, el bloque est en el cache y actualizado E: bit exclusivo, copia nica O: bit de origen I: bit de interrupcin
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 direccin deseada y un campo vaco 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 vaco y modifica el encabezado de la solicitud para inhibir la accin de los otros CPUs. Si no lo contiene pasa el token. Si el bit Exclusivo est encendido, se limpia. ? Si la mquina 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 enva a su mquina origen.
encendido (nica copia), entonces la actualizacin se realiza localmente. ? El bloque deseado est presente y el bit Exclusivo no est encendido (existen ms copias), entonces se enva un paquete para que las otras mquinas invaliden este bloque. Cuando el paquete de invalidacin regresa, se enciende el bit Exclusivo y se actualiza el dato. ? Si el bloque no est presente, se enva un paquete que combina una solicitud y una invalidacin. La primera mquina que posea el bloque lo coloca en el paquete e invalida su entrada, el resto de las mquinas slo invalidan su entrada. Cuando el paquete retorna a su emisor se realiza la actualizacin
como los basados en anillo no pueden escalar a ms de 64 procesadores ? Se puede mejorar la capacidad del bus si se incrementa la capacidad de comunicacin (organizando los buses en jerarqua)
A B C A B C A B C
M M M
A B C A B C A B C
M M M
Managed by MMU Singlebus MultiPro. Firefly Cache block Switched MultiPro. Dash Cache block
BLOQUES 0
15
CLUSTERS
Numa
...
1023
ESTADO: UNCACHED: La nica copia est aqu CLEAN: memoria correcta, puede haber ms copias DIRTY: memoria incorrecta, slo un cache tiene el bloque
Buterfly Page
Page
Multiprocesadores NUMA
Espacio lineal de memoria compartida Operaciones posibles El acceso remoto es posible en Hw Es posible una memoria no asociada a un CPU particular Quien convierte los accesos remotos a memoria en mensajes Medio de transferencia La migracin la realiza Unidad de transferencia Mtodos de encapsulamiento Si Si Si Si
Obj.
R-W Si Si
R-W Si Si
R-W Si Si
R-W No No
R-W No No
General No No
MMU
MMU
MMU
OS
Bus Hw
Bus Hw
Bus Sw Pgina No
Red Sw Pgina No
Bloque Bloqu e No No
Replicacin
? Replicar los bloques de slo lectura ? Replicar todos los bloques: en este caso se
Una palabra
Estructura
? Orientada a bytes
Un bloque (varias palabras) Una pgina Un segmento (mltiples pginas)
1 2 3
5
14 15
13 15 5
Cpu1
Cpu4
Localizacin 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 que vara dinamicamente: el problema es localizar al propietario. Se introduce el concepto de manager, que tiene la informacin sobre quin es el propietario actual de los datos. Centralizado : el manager es 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.
nico nodo. Los accesos a los datos se negocian con el manager. Es un cuello de botella.
Manager Request
Request
P Reply
Owner
propietario de los datos. Ineficiente cuando la red subyacente no soporta el broadcast. Dinmico: 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 cul es el propietario actual, se modifica la pista. Alternativa: un broadcast intermitente.
pginas. Cuando se necesita invalidar una pgina el propietario o el manager enva un mensaje a cada procesador que contenga la pgina y espera por un Ack. La invalidacin culmina cuando se han recibido los acks.
Polticas de Escritura
Se debe asegurar que un procesador no lea un dato invalido despus que se ha realizado una operacin de escritura. Existen dos opciones:
Escritura actualizante: Escritura Invalidante
copyset
10
Polticas de Escritura
? Escritura actualizante:
Las escrituras de un proceso se realizan en forma local
Polticas de Escritura
? Escritura invalidante:
Multiples lectores/un solo escritor. Cuando un proceso intenta escribir un dato, se enva un
y se envan a todos los procesos que posean una copia del dato. Permite mltiples lectores y mltiples 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 opcin.
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 comunicacin. Se tienen que invalidar copias de slo lectura
Polticas de Reemplazo
Mejores candidatos a victima: ? Una pgina de la que existe otra copia cuyo dueo es otro procesador ? Una pgina replicada de la cual se es propietario. ? Cuando no existen rplicas: La pgina vlida usada menos recientemente (LRU). Qu se hace con la victima?
Escribirla a disco Pasarla al propietario:
? ?
[Mosberger 1993] especifica las garantas de consistencia que un sistema otorga sobre los valores que los procesos leen de los objetos, dado que en realidad acceden a una rplica de cada objeto y que multiples procesos pueden actualizar los objetos.
11
La principal interrogante que se plantea al caracterizar un modelo de consistencia de memoria es: cundo se realiza un acceso de lectura sobre una posicin 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.
Consistencia Estricta
Cualquier lectura a la localidad de memoria x retorna el valor almacenado por la ltima operacin de escritura (antes de la lectura). ? Supone la existencia de un tiempo global. Determinar cul fue la escritura ms reciente no siempre es posible. ? En un solo procesador la consistencia estricta es lo esperado.
A=1 A=2 print(A)
T3 T0 T1 T2 Write(x) Read(x) Write(x)Llega a B peticin de A para escribir X (B) (A) (B)
Consistencia Estricta
?
Notacin: P1, P2 : procesos W(x)a : A la variable x se le asigna el valor a R(y)b : Se lee b en la variable y Se supone que el valor inicila de todas las variables es 0. P1: W(x)1 P2: W(x)2 tiempo
x
2 segs
12
Consistencia Estricta
P1: W(x)1 P2: R(x)0 R(x)1
T1: T2: T3: T4: peticin de escritura desde A Un proceso en B lee valor de x llega peticin de escritura de A Un proceso en B lee el valor de X
Consistencia Estricta
?
Si hay un cambio en una zona de memoria, todas las lecturas observarn el nuevo valor sin importar cuan pronto se est haciendo la lectura (respecto a la escritura) o donde estn localizados los procesos que realizan las operaciones. Si se hace una lectura se obtiene el valor actual, sin importar cun rpido se realiza la prxima escritura.
Consistencia Secuencial
(Lamport, 1979)
Consistencia Secuencial
Cuando se ejecutan procesos en paralelo sobre diferentes mquinas, cualquier mezcla de ejecucin 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.
Write(x) Read(x) Read(x) P1: W(x)1 P2: R(x)1 R(x)1
Los dos resultados son vlidos desde el punto de vista de consistencia secuencial
imposible de implementar en un sistema distribuido. ? La experiencia demuestra que a un programador le bastan modelos ms dbiles
13
Consistencia Secuencial
a=1 print(b,c) (a) b=1 print(a,c) (b) c=1 print(a,b) (c) Las operaciones son atmicas
Consistencia Secuencial
? Un sistema de consistencia secuencial se
a=1 print (b,c) b=1 print (a,c) c=1 print(a,b) Prints: 001011
a=1 b=1 print (a,c) print (b,c) c=1 print(a,b) Prints: 101011
a=1 c=1 print (a,b) print (a,c) a=1 print(b,c) Prints: 010111
puede implementar utilizando un nico servidor que administra los datos compartidos. Todos los procesos envan sus operaciones de lectura y escrtitura al servidor que las ordena en forma global.
Consistencia Causal
(Hutto and Ahamad, 1990)
Consistencia Causal
? Si dos procesos escriben espontaneamente y
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 estn potencialmente relacionados en forma causal. ? Un read est relacionado causalmente con la escritura que provee el dato que se ha ledo.
P1 escribe X P2 lee X escribe Y (Y puede depender del valor ledo de X)
simultaneamente una variable, estos accesos no estn relacionados causalmente. ? Las operaciones que no estn relacionadas causalmente se dice que son concurrentes
14
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 mquinas.
P1: W(x)1 P2: P3: P4: concurrentes W(x)3 R(x)1 W(x)2 R(x)1 R(x)1 R(x)3 R(x)2 R(x)2 R(x)3 P1: W(x)1 P2: P3: P4:
Consistencia Causal
R(x)1 W(x)2 R(x)2 R(x)1 R(x)1 R(x)2
P1: W(x)1 P2: P3: P4: W(x)2 R(x)2 R(x)1 R(x)1 R(x)2
Consistencia Causal
? Implementacin: grafo de dependencia para
determinar cules operaciones son dependientes de otras y cules son concurrentes. Un ente centralizado.
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 P2: P3: P4: R(x)1 W(x)2 R(x)2 R(x)1 R(x)1 R(x)2
15
Consistencia PRAM
a=1 print (b,c) b=1 print (a,c) c=1 print(a,b) a=1 b=1 print (a,c) print (b,c) c=1 print(a,b) b=1 print (a,c) c=1 print (a,b) a=1 print(b,c)
(a)
a=1 if (b == 0) kill (p2)
(b)
(c)
b=1 if (a == 0) kill (p1)
(a)
(b)
Consistencia PRAM
a=1 if (b == 0) kill (p2) b=1 if (a == 0) kill (p1)
Consistencia Dbil
(Dubois et al. 1986)
(a)
(b)
P1 muere, P2 muere, o no muere ninguno. En el modelo PRAM pueden morir los dos procesos
a=1 if (b == 0) kill (p2) b=1 if .... b=1 if (a == 0) kill (p1) a=1 If ...
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 regin crtica no es necesario propagar valores intermedios sino los valores finales.
?
Para saber que se est en una regin crtica a menos que se establezcan instrucciones explcitas.
16
Consistencia Dbil
(Dubois et al. 1986)
Consistencia Dbil
(Dubois et al. 1986)
Se introduce un nuevo tipo de variable: variables de sincronizacin. ? Los accesos a las variables de sincronizacin son secuencialmente consistentes: todos los procesos ven todos los accesos a las variables de sincronizacin en el mismo orden. ? No se permite el acceso a ninguna variable de sincronizacin hasta que todas las escrituras previas se hayan completado: Hacer una sincronizacion despus de operaciones de escritura obliga a que los nuevos valores se propaguen a todas las memorias.
El hacer una operacin de sincronizacin antes de leer los datos, le garantiza a un proceso que leer los ltimos valores.
Operacin de sincronizacin: garantiza que las escrituras locales sean propagadas a todas las otras mquinas y se actualiza la memoria actual con escrituras hechas remotamente.
Consistencia Dbil
Variables ordinarias
P1: W(x)1 W(x)2 S P2: P3: R(x)1 R(x)2 S R(x)2 R(x)1 S
Consistencia Relajada
(Gharachorloo et al., 1990)
locales de las variables protegidas se actualizan con las variables remotas. Release: con esta operacin se propagan los cambios realizados a las variables protegidas al resto de las mquinas.
?
17
Consistencia Relajada
?
Consistencia Relajada
Posible implementacin: - Existe un administrador de sincronizacin. - 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 mquinas . Al recibirse el Ack de todas las mquinas se informa al manager de la liberacin del lock
Realizar un acquire no garantiza que los cambios realizados sean propagados al resto de las mquinas en forma inmediata. De forma similar, el realizar un release no garantiza que se importen cambios realizados por otras mquinas.
P1: Acq(L) W(x)1 W(x)2 Rel(L) P2: P3: Acq(L) R(x)2 Rel(L) R(x)1
Modelos de Consistencia
Consistencia: Modelos que no usan operaciones de sincronizacin Descripcin
Modelos de Consistencia
Consistencia: Modelos con Descripcin operaciones de sincronizacin
Todos los accesos compartidos se observan en el orden en el que se realizaron. Imposible de implementar en DSM Todos los procesos ven todos los accesos en el mismo orden. Popular entre los programadores y ampliamente usado. Desempeo pobre. Todos los procesos ven los accesos compartidos, relacionados causalmente, en el mismo orden 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 slo trabajan con consistencia secuencial
Dbil
Se garantiza que los datos compartidos estn consistentes despus de la operacin de sincronizacin Los datos compartidos estn consistentes cuando se sale de la regin crtica. Estos modelos pueden ser ms eficientes pero requieren ms esfuerzo del programador
Relajada
18
Conclusiones
?
DSM es una abstraccin de memoria compartida que sirve de alternativa a la comunicacin 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 diseo e implementacin se encuentran: la estructura, los modelos de consistencia, la utilizacin de protocolos de escritura actualizante o invalidante y la granularidad.
19