78
Memoria Compartida Memoria Compartida Distribuida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822 Prof. Yudith Cardinale Sept - Dic 2010

Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Embed Size (px)

Citation preview

Page 1: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Memoria Compartida DistribuidaMemoria Compartida Distribuida

Universidad Simón BolívarDepartamento de Computación y T.I

Sistemas de operación III

CI-4822

Prof. Yudith CardinaleSept - Dic 2010

Page 2: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Introducción: Introducción: Taxonomía de Computadores Taxonomía de Computadores

Paralelos y Distribuidos Paralelos y Distribuidos

Comp. Paralelos y Distribuidos

Multiprocesadores(Mem. Compartida)

SwitchedSwitchedBus

Multicomputadores(Mem. Privada)

Bus

Fuertemente acoplados

Débilmenteacoplados

Page 3: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

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

MulticomputadoresCada 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).

Introducción: Introducción: Taxonomía de Computadores Taxonomía de Computadores

Paralelos y Distribuidos Paralelos y Distribuidos

Page 4: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

IntroducciónIntroducción

Sistemas con Memoria Compartida:Soporte de Software:

Resuelven problenas de secciones críticasPrimitivas de sincronización: semáforos, contadores, secuenciadores, monitores.Comunicación por espacios de memoria compartidos

Soporte de Hardaware:Limitado en la escalabilidadDifícil de construirEl acceso a la memoria es un cuello de botella

( 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)

Page 5: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

IntroducciónIntroducción

Sistemas con Memoria Distribuida:Soporte de Software:

Pase de mensajes: trae complicaciones adicionales como pérdida de mensajes, pérdida de orden, etc. RPCRMIProtocolos de comunicación: Buffering, bloqueo ...

Soporte de Hardware:Fácil de construirNo está limitada la escalabilidad

Page 6: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Sistemas de Memoria Compartida DistribuidaSistemas de Memoria Compartida Distribuida

Toma las ventajas de los enfoques anteriores: software de los sistemas de memoria compartida y el hardware de los sistemas de memoria distribuidaColección de estaciones de trabajo conectadas por

una red, compartiendo un único espacio de memoria virtual paginadoLa ubicación de los datos, su movimiento, etc, lo

maneja el sistema de memoria compartida distribuida. Implementado sobre pase de mensajes

Page 7: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Introducción: Sistemas de Memoria Introducción: Sistemas de Memoria Compartida DistribuidaCompartida Distribuida

Soporte por Hardware: Paginación [Li, 1986] y [Li and Hudak, 1989] fueron los primeros en proponer el paradigma de Memoria Compartida Distribuida:Paginación: en el modelo más simple, una página reside sólo en un procesador. 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.Es un sistema fácil de programar y fácil de construir pero el desempeño es pobre. Puede causar mucho tráfico de redImpone restricciones al programador

Page 8: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Introducción: Sistemas de Memoria Introducción: Sistemas de Memoria Compartida DistribuidaCompartida Distribuida

Soporte por Software:Compartiendo estructuras de datos:

No se comparte toda la memoria sólo se comparten algunas estructuras a un nivel de abstracción más altoSe puede hacer por replicación pero se debe resolver los problemas de consistenciaSe puede hacer por compartimiento pero hay problemas de comunicación y cuello de botella

Page 9: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Introducción: Sistemas de Memoria Introducción: Sistemas de Memoria Compartida DistribuidaCompartida Distribuida

Soporte por Software (cont.):Compartiendo objetos encapsulados:

Los datos no se acceden directamente, existen métodos para realizar las lecturas y actualizacionesEl compartimiento puede ser a un nivel de abstracción muy alto.

Page 10: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Los multiprocesadores de Memoria Compartida constituyen la inspiración de los sistemas de memoria compartida distribuida

Page 11: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Memoria con circuitos (on-chip-memory):

CPU Mem

CPU

CPU Mem CPU

CPU

Es posible pero es complicado, costoso e inusual

Page 12: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Multiprocesadores basados en buses:

Problema con el cache: Posibilidad de Memoria IncoherenteSolución: ●Protocolo de consistencia write-through cache ●Protocolo de consistencia write-once

Snooping cache: Alivia la

sobrecarga del bus y aumenta el rendimiento

Page 13: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Protocolo de consistencia write-through cache- opciones de implementación:Ante la escritura se invalidan los datos replicadosAnte la escritura se actualizan todas las réplicasCaracterizar los bloques del cache:

Inválido: no contiene datos válidosLimpio: la memoria está actualizada, el bloque puede estar en otros cachésSucio: la memoria está incorrecta, ningún otro cache puede contenerlo

Page 14: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Protocolo de consistencia write-through 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

Invalida la entrada en su cache

Page 15: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Protocolo de consistencia write-through cache:En lugar de invalidar se puede actualizar las copias ante un write, pero las actualizaciones son más costosas porque requieren de más ciclos de memoriaEs simple de entender e implementarTodas las escrituras usan el bus lo que causa pobre desempeñoEs poco escalable en cuanto a número de CPUs.

Page 16: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Protocolo de consistencia write-once:Supone que una vez que un CPU se apodera de un dato, es difícil que otro lo requieraEl caché es dividido en bloques que pueden estar en uno de estos tres estados:

Inválido: no contiene datos válidosLimpio: la memoria está actualizada, el bloque puede estar en otros cachesSucio: la memoria está incorrecta, ningún otro cache puede 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

Page 17: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Protocolo de consistencia write-once:

A B C W1

w1Limpio

W1 está en memoria y en el caché 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

Page 18: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria CompartidaProtocolo de consistencia write-once (cont.):

A B C W1

W1

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

A B C W1

w1

InválidoW3

Sucio

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

W2Inválido

Sucio

Page 19: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Protocolo de consistencia write-once (cont.):

A B C W1

W1

C lee o escribe a W3, A ve la solicitud al husmear el bus, proporciona el valor e invalida su entrada. C tiene ahora laúnica copia válida.inválido

W3

inválido SucioW3

El caché 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 caché.Mientras el dato no se actualice en memoria la única copia permanerá en estado sucia. Permanecerá en este estado hasta que deba salir de caché por razones de espacio, en ese momento se actualiza en memoria.

Page 20: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria CompartidaProtocolo de consistencia write-once (cont.):

La consistencia se logra haciendo que todos los cachés husmeen el bus.El protocolo se integra dentro de la unidad de administración de memoria (hardware)Todo el algoritmo se realiza en un ciclo de memoria

Este protocolo no es válido para memoria compartida distribuida

Page 21: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Multiprocesadores basados en anillo:Memnet (1988): tiene un espacio de direcciones que se divide en una parte privada y una compartidaLa parte privada se divide en regionesLa parte compartida se divide en bloques de 32 bytes.Todas las máquinas están conectadas por un anillo donde circula un token de solicitudesPrimera arquitectura de memoria compartida distribuida

Page 22: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

MMUcachéHomememory

Blockstable

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 caché y actualizado E: bit exclusivo, copia únicaO: bit de origenI: bit de interrupción

Los bloques read-only pueden estar en varias máquinas.

Los bloques read-write deben estar en una sola máquina (no necesariamente la de origen)

DispositivoMemnet

Page 23: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Protocolo de lectura:Examina la tabla de bloques para determinar si el bloque está presente, si está, la solicitud es satisfecha. Si no está presente:Espera el token de solicitudes, coloca la solicitud en el token, suspende el CPU. El paquete de solicitud contiene la dirección deseada y un campo vacío de 32 bytesA medida que el token circula, cada CPU verifica si contiene el dato. 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 bit Exclusivo está encendido, se limpia.Si la máquina receptora no tiene espacio libre en el caché para alojar 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 24: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria CompartidaProtocolo de escritura, se distinguen tres casos:

El bloque deseado está presente y el bit Exclusivo está encendido (única copia), entonces se actualiza localmente.

El bloque deseado está presente y el bit Exclusivo no está encendido (existen más copias), entonces se envía un paquete de invalidación 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 tenga el bloque lo pone en la solicitud e invalida su entrada, el resto de las máquinas sólo invalidan su entrada. Cuando el paquete retorna al emisor inicial se realiza la actualización

Page 25: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria CompartidaMultiprocesadores con conmutador (NUMA):

Tanto los multiprocesadores basados en bus como los basados en anillo no pueden escalar a más de 64 procesadores porque degradan el desempeñoSe puede mejorar la capacidad del bus si se reduce la cantidad de comunicación (uso de caché)Se puede mejorar la capacidad del bus si se incrementa la capacidad de comunicación (organizando los buses en jerarquía)

Page 26: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria CompartidaMultiprocesadores con conmutador-NUMA (cont):

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 intersuper clusters

Page 27: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria CompartidaMultiprocesadores con conmutador-NUMA (cont): Arquitectura DASH (DASH (Directory Architecture for Shared Directory Architecture for Shared Memory)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í sucesivamenteLa unidad de transferencia es un bloque de 16 bytes

Page 28: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Arquitectura DASH (arquitectura NUMA)DASH (arquitectura NUMA)

Directorios: cada cluster tiene un directorio que contiene la información de cuáles clusters tienen copias de sus bloques. El tamaño es de 1M de entradas de 18 bits cada una.

...

0 15

0

1023

BLOQUESCLUSTERS

ESTADO:UNCACHED: La única copia está aquíCLEAN: memoria correcta, puede haber más copiasDIRTY: memoria incorrecta, sólo un caché tiene el bloque

Page 29: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria CompartidaArquitectura DASH DASH

● En todo momento cada bloque tiene un propietario● Para un bloque uncached o clean el cluster de

origen del bloque es el propietario● Para un bloque dirty el cluster que contiene la

única copia es el propietario● Para escribir en un bloque clean primero hay que

encontrar e invalidar todas las copias existentes(el cluster propietario es el que en ese momento es el

responsable del bloque y no necesariamente es el cluster origen)

Page 30: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Arquitectura DASH DASH ● Protocolo de lectura:

Chequea en su propio caché, si no estáChequea en su propio caché, si no estáPone el requerimiento en el bus local, si algún caché local Pone el requerimiento en el bus local, si algún caché local lo tiene se realiza una copia caché-to-caché. Si el bloque lo tiene se realiza una copia caché-to-caché. Si el bloque está está cleanclean sólo se realiza la copia, si el bloque está sólo se realiza la copia, si el bloque está dirtydirty se informa al directorio de origen para que cambie el se informa al directorio de origen para que cambie el estado a estado a dirty and shareddirty and sharedSi el bloque no está presente en ningún caché del cluster, Si el bloque no está presente en ningún caché del cluster, se envía el requerimiento al cluster de origen del bloque se envía el requerimiento al cluster de origen del bloque (se determina por los 4 bits más altos de su dirección)(se determina por los 4 bits más altos de su dirección)El cluster origen puede ser el mismo que realizó el El cluster origen puede ser el mismo que realizó el requerimiento, en este caso no se envía físicamente el requerimiento, en este caso no se envía físicamente el paquete de requerimiento paquete de requerimiento

Page 31: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Arquitectura DASH DASH Protocolo de lectura (cont):

El hardware del directorio del cluster de origen examina El hardware del directorio del cluster de origen examina el estado del bloque:el estado del bloque:● Uncached or cleanUncached or clean: el hardware trae el bloque de la : el hardware trae el bloque de la

memoria principal, lo envía al cluster solicitante y memoria principal, lo envía al cluster solicitante y marca en el directorio que tal bloque está marca en el directorio que tal bloque está cachedcached en el en el cluster solicitante.cluster solicitante.

● DirtyDirty: el hardware del directoio busca la identidad del : el hardware del directoio busca la identidad del cluster que lo contiene y le hace cluster que lo contiene y le hace forwardforward del del requerimiento. El cluster final que contiene el bloque requerimiento. El cluster final que contiene el bloque dirtydirty envía el bloque al cluster solicitante, lo marca envía el bloque al cluster solicitante, lo marca como como cleanclean (ahora es compartido) y envía un mensaje (ahora es compartido) y envía un mensaje al cluster origen para que actualice la memoria y le al cluster origen para que actualice la memoria y le cambie el estado a cambie el estado a cleanclean

Page 32: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Arquitectura DASH DASH Protocolo de escritura: Si está en su caché y es Si está en su caché y es dirtydirty, la escritura procede, la escritura procede Si está en su caché y es Si está en su caché y es cleanclean se envía un paquete al se envía un paquete al

cluster origen requiriendo que todas las otras copias sean cluster origen requiriendo que todas las otras copias sean invalidadasinvalidadas

Si no está en su caché pero está en el cluster se realiza Si no está en su caché pero está en el cluster se realiza una copia caché-to-caché o memory-to-caché. Si el una copia caché-to-caché o memory-to-caché. Si el estado es estado es cleanclean todas las copias deben invalidarse por el todas las copias deben invalidarse por el cluster origencluster origen

Si no está en el cluster, se envía el requerimiento al Si no está en el cluster, se envía el requerimiento al cluster origen, se distinguen tres casos: cluster origen, se distinguen tres casos:

Page 33: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria CompartidaArquitectura DASH DASH

Protocolo de escritura (cont): UncachedUncached: se marca : se marca dirtydirty y se envía al cluster y se envía al cluster

que lo requiere.que lo requiere. CleanClean: se invalidan todas las copias y se sigue el : se invalidan todas las copias y se sigue el

proceso de proceso de uncacheduncached DirtyDirty: se hace : se hace forwardforward del requerimiento al del requerimiento al

cluster que actualmente tiene el bloque. Este cluster que actualmente tiene el bloque. Este cluster invalida su propia copia y satisface el cluster invalida su propia copia y satisface el requerimientorequerimiento

Page 34: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Arquitecturas de Memoria CompartidaArquitecturas de Memoria Compartida

Otros multiprocesadores NUMA (Non Uniform Memory Access)::Cm* SystemCm* SystemBBN ButterflyBBN ButterflyPropiedades de los multiprocesadores NUMAPropiedades de los multiprocesadores NUMA

Son posibles los accesos a memorias remotasSon posibles los accesos a memorias remotasLos accesos a las memorias remotas son más lentos que los Los accesos a las memorias remotas son más lentos que los accesos a la memoria localaccesos a la memoria localLos tiempos de acceso remoto no son escondidos por caching. Los tiempos de acceso remoto no son escondidos por caching. Los accesos se manejan con esquemas de paginación (Los accesos se manejan con esquemas de paginación (page page fault)fault), replicación (o , replicación (o mapping) mapping) de páginas de páginas read-onlyread-only, si son , si son read-writeread-write se invalidan, se usa un se invalidan, se usa un page-scannerpage-scanner..

Page 35: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Comparación de los Sistemas de Comparación de los Sistemas de Memoria CompartidaMemoria Compartida

Single-busMulti-Pro.

SwitchedMulti-Pro.

NumaPage-BasedDSM

Object-BasedDSN

Shared-VariableDSM

Hardware-controlled caching Software-controlled caching

Managed by MMUManaged by language runtimesystem

Managed by OS

Remote access in hardware Remote access in software

Cache block

Cache block

Page Page DataStructure

Object

Firefly Dash Buterfly Ivy MuninLinda, OrcaCORBA

Page 36: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

SiNoNoNoNoNoMétodos de encapsulamiento

ObjetoVar. Compartida

PáginaPáginaBloqueBloqueUnidad 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.

Page 37: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

DSM: Aspectos de Diseño e DSM: Aspectos de Diseño e ImplementaciónImplementaciónReplicaciónEstructuraLocalización de los datosPolíticas de escrituraPolítica de reemplazo de páginasModelos de consistencia

Page 38: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

ReplicaciónReplicación

Replicar los bloques de sólo lecturaReplicar 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 5

9

13 15 5

Page 39: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

EstructuraEstructura

Orientada a bytesUna palabraUn bloque (varias palabras)Una páginaUn segmento (múltiples páginas)

Variables compartidasObjetos

Page 40: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Localización de los datosLocalizació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.

Page 41: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Localización de los datosLocalizació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 42: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Localización de los datosLocalización de los datos Distribuido: 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.

Page 43: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Localización de los datosLocalización de los datos

Localización de las copiasBroadcast: 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.

Page 44: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Localización de los DatosLocalización de los Datos

3 22 3

Cpu 1 Cpu 3Cpu 2

24

4

134

31

24

5

Cpu 4

23 44

copyset

page

Page 45: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Políticas de EscrituraPolí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 actualizanteEscritura Invalidante

Page 46: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Políticas de EscrituraPolí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.

Page 47: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Políticas de EscrituraPolíticas de Escritura

Escritura invalidante: Múltiples 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

Page 48: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

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

es otro procesadorUna 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 discoPasarla al propietario:

EstáticoDinámico: procesador que tenga mas memoria libre.

Page 49: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Modelos de Consistencia de Modelos de Consistencia de la Memoriala MemoriaUn 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.

Page 50: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Modelos de Consistencia de Modelos de Consistencia de la Memoriala 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.

Page 51: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Modelos de Consistencia de Modelos de Consistencia de la Memoriala MemoriaLos modelos que estudiaremos son:

Consistencia estrictaConsistencia secuencialConsistencia causalPRAMConsistencia débilConsistencia relajada

Page 52: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia EstrictaConsistencia 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)

Page 53: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia EstrictaConsistencia 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 54: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia EstrictaConsistencia 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 P1T2: Un proceso en P2 lee valor de xT3: llega petición de escritura de P1T4: Un proceso en P2 lee el valor de X

Page 55: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia EstrictaConsistencia Estricta

Si hay un cambio en una zona de memoria, todas las lecturas observarán el nuevo valor sin importar cuán pronto se está haciendo la lectura (respecto a la escritura) o dónde 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.

Page 56: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia SecuencialConsistencia Secuencial(Lamport, 1979)(Lamport, 1979)

La consistencia estricta es prácticamente imposible de implementar en un sistema distribuido.

La experiencia demuestra que a un programador le bastan modelos más débiles

Page 57: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia SecuencialConsistencia 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)1

P1: 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 58: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia SecuencialConsistencia 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

Page 59: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia SecuencialConsistencia 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.

Page 60: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia CausalConsistencia Causal(Hutto and Ahamad, 1990)(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 X P2 lee X escribe Y (Y puede depender del valor leído de X)

Page 61: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia CausalConsistencia Causal

Si dos procesos escriben espontáneamente y simultáneamente una variable, estos accesos no están relacionados causalmente.

Las operaciones que no están relacionadas causalmente se dice que son concurrentes

Page 62: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia CausalConsistencia 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

Page 63: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia CausalConsistencia Causal

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

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

Page 64: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia CausalConsistencia Causal

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

Page 65: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia PRAM Consistencia PRAM (Pipelined RAM)(Pipelined RAM)(Lipton and Sandberg 1988)(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 66: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia PRAM Consistencia PRAM (Pipelined RAM)(Pipelined RAM)(Lipton and Sandberg 1988)(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

Page 67: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia PRAMConsistencia 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)

Page 68: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia PRAMConsistencia 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 ...

Page 69: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia DébilConsistencia Débil(Dubois et al. 1986)(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 se requiere que se establezcan instrucciones explícitas.

Page 70: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia DébilConsistencia Débil(Dubois et al. 1986)(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 sincronización después de operaciones de escritura obliga a que los nuevos valores se propaguen a todas las memorias.

Page 71: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia DébilConsistencia Débil(Dubois et al. 1986)(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.

Page 72: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia DébilConsistencia 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

Page 73: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia RelajadaConsistencia Relajada(Gharachorloo et al., 1990)(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 74: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia RelajadaConsistencia 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)

Page 75: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Consistencia RelajadaConsistencia 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

Page 76: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Modelos de ConsistenciaModelos 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

Page 77: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

Modelos de ConsistenciaModelos 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 78: Memoria Compartida Distribuida Memoria Compartida Distribuida Universidad Simón Bolívar Departamento de Computación y T.I Sistemas de operación III CI-4822

ConclusionesConclusiones

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.