Memoria Compartida Distribuida Expo

Preview:

Citation preview

MEMORIA COMPARTIDA DISTRIBUIDA

BAUTISTA HERNANDEZ JORGE

RAMIREZ HERNANDEZ IVONE

VALENCIA GARCIA EMMA

VAZQUEZ GARCIA JULIO CESAR

INTRODUCCIÓN

En 1986 Li propuso un esquema diferente conocido como memoria compartida distribuida (DSM).

En 1989 li y hudak propusieron tener una colección de estaciones de trabajo conectadas por una LAN compartiendo un solo espacio de direcciones virtuales con paginas.

En la variante mas simple cada pagina esta presente en una maquina.

El sistema operativo envía un mensaje a la maquina remota, quien encuentra la pagina necesaria y la envía al procesador solicitante, se reinicia la instrucción detenida y se puede concluir.

Li y hudak diseñaron un sistema que es fácil de programar ( memoria compartida lógicamente ) y fácil de construir.

En los últimos años, un área de investigación intensa ha sido la de hacer que estos sistemas de memoria compartida distribuidas sean mas eficientes.

Objetivo:

*minimizar el trafico de la red

*reducir la latencia entre el momento de una solicitud a memoria y el momento que se satisface esta.

¿QUE ES LA MEMORIA COMPARTIDA?

es un tipo de implementación hardware y software, en la que cada nodo de un cluster tiene acceso a una amplia memoria compartida que se añade a la memoria limitada privada

Los sistemas de software DSM pueden ser implementados bajo un sistema operativo (SO), o como una biblioteca de programación.

Los sistemas de software DSM implementados en el SO pueden concebirse como extensiones de la arquitectura de memoria virtual subyacente.

 DSM tienen capacidad para:

*organizar la región de memoria compartida de manera flexible.

* Las aproximaciones basadas en páginas organizan la memoria compartida en páginas de tamaño fijo.

*Las aproximaciones basadas en objetos organizan la región como un espacio abstracto en el que se pueden almacenar objetos compartidos de tamaño variable.

La arquitectura de memoria compartida puede suponer la separación de la memoria en partes compartidas distribuidas entre los nodos y la memoria principal;  o la distribución de toda la memoria en los distintos nodos.

En la memoria compartida, los procesos utilizan variables que pueden leer/escribir para poder comunicarse.

Memoria en Circuitos

Multiprocesadores basados en bus

Bus La conexión entre el CPU y la memoria es una conexión de cables paralelos, algunos con la dirección a la que desea leer o escribir el CPU, algunos para enviar o recibir datos y el resto para controlar las transferencias.

Multiprocesador La forma simple de

construir un multiprocesador es basarlo en un bus al que se conecte mas de un CPU.

La desventaja de tener un solo bus es que con tres o cuatro CPU , este de seguro se sobrecargara.

El método usual para reducir la carga del bus es equipará cada CPU con un cache husmeador.

Un protocolo en particular común es el de escritura a través del caché. Cuando un CPU lee por primera vez una palabra de memoria, esa palabra es llevada por el bus y guardada en el caché del CPU solicitante.

Operación de lectura. Si la palabra no esta en el caché, entonces

buscarla en la memoria y copiarla a su caché. Si la palabra esta en el caché, tomar el dato de

ahí.

Operación de escritura Si ningún CPU tiene la palabra en su caché,

entonces la palabra es actualizada en memoria, como si el ocultamiento no hubiera sido utilizado.

Si el CPU (que realiza la escritura) tiene la única copia de la palabra, se actualiza su caché y también la memoria mediante el bus.

Existe otro tipo de protocolos como el protocolo de membresía. Una versión de este protocolo plantea lo siguiente. Se manejan bloques de caché, cada uno de los cuales puede estar en uno de los siguientes estados:

INVALIDO LIMPIO SUCIO

Estado inicial. La palabra W que contiene el valor w1 esta en la memoria y también está en el caché de B

A lee la palabra W y obtiene W1. B no responde a la lectura, pero la memoria si.

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

A escribe W de nuevo. Esta y las escrituras posteriores por A se realizan de manera local, sin tráfico en el bus.

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

La palabra permanece el estado SUCIO hasta que se elimine del caché donde se encuentra en la actualidad por razones de espacio. En este momento, desaparece de todos los cachés y se escribe en la memoria.

Este protocolo (membresia) tiene 3 propiedades importantes:

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.

Todo el algoritmo se realiza en un ciclo de memoria.

La desventaja es que no funciona para multiprocesadores de mayor tamaño y nada es válido para la memoria compartida distribuida.

6.2.3 multiprocesadores basados en anillo

En Memnet, un espacio de direcciones se divide en una parte privada y una compartida.

La parte compartida se divide en bloques de 32 bytes, unidad mediante la cual se realizan las transferencias entre las máquinas.

Las máquinas Memnet están conectadas mediante un anillo de fichas modificado. El anillo consta de 20 cables paralelos, que juntos permiten enviar 16 bits de datos y 4 bits de control cada 100 nanosegundos, para una velocidad de datos de 160 Mb/seg.

En la siguiente figura se observa el anillo Memnet.

La interfaz de anillo, MMU(Unidad de Administrador de memoria), el chache. Y una parte de la memoria se intregran en el dispositivo Memnet

Un bloque exclusivo de lectura puede estar presente en varias máquinas, uno de lectura-escritura debe estar presente en una sola máquina.

Los bits en el dispositivo Memnet indican uno o más de los siguientes estados:

VALIDO: El bloque esta presente en el caché y está actualizado.EXCLUSIVO: La copia local es la única.ORIGEN: Se activa si ésta es la máquina origen del bloque.INTERRUPCION: Se utiliza para forzar interrupciones.POSICION: Indica la localización del bloque en el caché si esta presente y es válido. 

Protocolo Memnet.

Lectura.Cuando un CPU desea leer una palabra de la memoria compartida, la dirección de memoria por leer se transfiere al dispositivo Memnet, el cual verifica la tabla del bloque para ver si está presente. Si es así, la solicitud es satisfecha de inmediato.

En caso contrario, el dispositivo Memnet espera hasta capturar la ficha que circula:• Coloca un paquete de solicitud en el anillo y

suspende el CPU. • El paquete de solicitud contiene la dirección

deseada y un campo vacío de 32 bytes.

Cada dispositivo Memnet en el anillo verifica si tiene el bloque. De ser así, coloca el bloque en el campo vacío y modifica el encabezado del paquete para inhibir la acción de las máquinas posteriores.

Si el bit exclusivo del bloque está activo, se limpia. Cuando el paquete regresa al emisor, se garantiza que contiene al bloque solicitado. El CPU que envía la solicitud guarda el bloque, satisface la solicitud y libera al CPU.

Si la máquina solicitante no tiene espacio libre en su caché para contener el bloque recibido, entonces toma al azar un bloque oculto y lo envía a su origen, con lo que libera un espacio de caché.

Escritura.Se presentan 3 casos:

1. Si el bloque contiene la palabra por escribir está presente y es la única copia en el sistema, el bit exclusivo esta activado, la palabra solo se escribe de manera local.

2. Si esta presente el bloque, pero no es la única copia, se envía primero un paquete de invalidación por el anillo para que las otras máquinas desechen sus copias del bloque por escribir. Cuando el paquete de invalidación regresa al solicitante, el bit exclusivo se activa para ese

bloque y se procede a la escritura local.

3. Si el bloque no está presente, se envía un paquete que combina una solicitud de lectura y una de invalidación. La primera máquina que tenga el bloque lo copia en el paquete y desecha su copia. Todas las máquinas posteriores solo desechan el bloque de sus cachés. Cuando el paquete regresa al emisor, éste lo guarda y escribe en él.

6.2.4 Multiprocesadores con conmutadores

Los multiprocesadores basados en bus y los basados en anillo trabajan bien para sistemas pequeños menores a 64 CPU, no se escalan bien a sistemas con cientos o miles de CPU, al agregar CPU en algún punto se satura el ancho de banda del bus o anillo.

Añadir mas CPU no mejora el desempeño del sistema

Se tienen dos métodos para atacar el problema de ancho de banda insuficiente:

1. Reducir la cantidad de comunicación

2. Incrementar la capacidad de comunicación

Un método consiste en construir el sistema como una jerarquía. Se continúan colocando algunos CPU en un bus, pero ahora se considera todo esto como unidad.

Se construye el sistema como varias unidades y se conectan estas mediante un bus entre ella.

Mientras mas CPU se comuniquen principalmente desde de su unidad, habrá relativamente menos trafico entre la unidades.

Si en un bus la unidades es inadecuado, se añade un segundo bus de este tipo, o se ordenan las unidades en un árbol o cuadricula.

Si se necesitan mayor ancho de banda, se reúne un bus, un árbol o una cuadricula de unidades en una súper unidad y se separa al sistema en varias súper unidades.

Las superunidades se pueden conectar mediante un bus, árbol, o cuadricula y así en lo sucesivo.

Como diseño jerárquico basado en cuadricula de unidades tenemos la maquina llamada DASH, que fue construido como n proyecto de investigación de la universidad de Stanford

Consta de 16 unidades, cada una de la cuales contiene un bus, cuatro CPU; 16 megas de memoria y algunos equipos de entrada y salida los cuales fueron omitidos para evitar confusiones.

El espacio total disponible de directorios en el prototipo es de 256M, dividido en 16 regiones de 16M cada uno. La memoria global de la unidad 0 contiene la direcciones 0 a 16M. La memoria global de la unidad 1 contiene las direcciones de 16 a 32, etcétera.

La memoria es oculta y transferida en bloques de 16 bytes, de modo que cada unidad tiene bloques de memoria de 1M dentro de su espacio de direcciones.

Vista simplificada de la arquitectura DASH

Directorios

Cada unidad tiene un directorio con un registro de las unidades que tienen copias de sus bloques, como cada unidad tiene 1M cloques de memoria, tiene 1M de entradas en su directorio, una por bloque.Cada entrada contiene un mapa de bits, con un bit por unidad, que dice si esa unidad tiene el bloque oculto.

Los directorios son esenciales para la operación DASH Directory Architecture for Shared memory(arquitectura de directorios para memoria compartida)

Cada unidad DASH se conecta a una interfaz que le permite comunicarse con otras unidades. Las interfaces se conectan mediante enlaces entre las unidades (buses primitivos) en una cuadricula rectangular.

El sistema de enlaces entre las unidades utiliza el ruteo de seguimiento de tuneles.

• significa que la primera parte de un paquete puede adelantarse aun antes de recibir todo el paquete, lo que reduce la espera en cada salto.

Directorio DASH

Ocultamiento

Se lleva a cabo en dos niveles: un cache de primer nivel y un cache mayor de segundo nivel .

Cada cache de segundo nivel monitprea el bus local utilizando un protocolo.

Cada bloque de cache puede estar en alguno de los siguientes estados:

1. NO OCULTO: la unica copia del bloque esta en esta memoria.

2. LIMPIO: la memoria esta actualizada; el bloque puede encontrarse en carios caches.

3. SUCIO: la memoria es incorrecta; solo un cache contiene al bloque.

El protocolo DASH se basa en la membrecía y la invalidación. En cada momento, cada bloque de cache tiene un propietario.

Para un bloque NO COLUTO o LIMPIO la unidad de origen de bloques es el propietario.

Para un bloque SUCIO la unidad que contiene la única copia es el propietario.

Para escribir en un bloque LIMPIO primero hay que encontrar e invalidar todas las copias existentes.

Consideremos como leer un CPU una palabra en memoria.

Primero verifica sus propias caches, si ningún cache tiene la palabra, se hace una solicitud en el bus de la unidad local para ver si otro CPU de La unidad tiene el bloque con dicha palabra.Si uno la tiene, se ejecuta una transferencia del bloque entre los caches, para colocar el bloque en el cache del CPU solicitante.

Si el bloque esta LIMPIO, se hace una copia; si esta SUCIO, el directorio de origen es informado de que el bloque se encuentra ahora LIMPIO y compartido.

Un éxito de uno de los caches satisface la instrucción pero no afecta ningún mapa de bits de directorio.

6.2.5PROCESADORES NUMA

Procesadores NUMA (acceso no uniforme a memoria) Tradicional, una maquina NUMA tiene un espacio de direcciones virtuales visible para todos los CPU. Cuando cualquier CPU escribe un valor en la localidad “a”, una lectura posterior por un procesador diferente regresara el valor recién escrito.

En una maquina NUMA El acceso a una memoria remota es mucho más lento el acceso que a una local y no se intenta ocultar este echo mediante un ocultamiento en hardware.

Así, un CPU ejecuta de forma directa un programa que resida en una memoria remota, pero el programa puede ejecutarse en orden de magnitud mas lento que si estuviera en la memoria local

La primera maquina NUMA estaba conformada por varias unidades cada una con un CPU, un MMU micro programable, un modulo de memoria y posiblemente algunos dispositivos de E/S todos conectados mediante un bus, no había caches.

La unidad de manejo de memoria (MMU) es un dispositivo de Hardware formado por un grupo de circuitos integrados, responsable del manejo de los accesos a la memoria por parte de la Unidad de Procesamiento Central (CPU).

Cuando un CPU hacia una llamada a memoria la solicitud llegaba al MMU de CPU que examinaba los bits superiores de la dirección para ver cual memoria se solicitaba..

Si la dirección era local, el MMU solo hacia la solicitud en el bus local, si correspondía a una memoria distante, el MMU construir un paquete de solicitud con la dirección y lo enviaba a la unidad destino mediante un bus entre las unidades

Al recibir el paquete el MMU destino llevaba acabo la operación y regresaba la palabra o un reconocimiento. Aunque era posible ejecutar un CPU por completo desde una memoria remota el envió de un paquete por cada palabra leída y cada palabra escrita reducía la velocidad de la operación.

Propiedades de los multiprocesadores numa Las maquinas numa tienen tres propiedades claves: Es posible el acceso a la memoria remota El acceso a la memoria remota es mas

lento que el de la memoria local El tiempo del acceso remoto no se oculta

mediante el uso de los caches

Cuando se toca una palabra remota, se trae un bloque de memoria alrededor de ella hacia el cache del procesador solicitante, de modo que las llamadas posteriores tengan gran velocidad aun que haya un ligero retraso para manejar la falta de cache.

Las maquinas NUMA no tienen esta propiedad, de modo que si importa cual pagina esta localizada en cual memoria, es decir, en cual maquina. El problema clave en el software de NUMA es la decisión de donde colocar cada pagina para maximizar el desempeño

6.2.6COMPARACION DE LOS SISTEMAS CON MEMORIA COMPARTIDA

Multiprocesadores con bus con caches en hardware y que mantienen la consistencia al husmear en el bus estas son las maquinas de memoria compartida mas sencillas y operan por completo en hardware.

Después vienen los multiprocesadores conmutadores como son la maquina de Stanford Dash y la maquina Alewife de M.I.T estas también tienen ocultamiento de hardware pero utilizan directorios y otras estructuras de datos para llevar un registro de los CPU o unidades que tienen ciertos bloques de cache.

Después vienen las maquinas de NUMA estas son hibridas entre el control de hardware o del software. Como en los microprocesadores, cada CPU NUMA tiene acceso a cada palabra del espacio de direcciones virtuales común solo al leerlo o escribir en el.

Continuando llagamos a las maquinas que ejecutan un sistema de memoria compartida distribuida, cada uno de los CPU en este sistema tiene su memoria privada y a diferencia de las maquinas NUMA y los multiprocesadores UMA no pueden hacer llamadas a memoria remotas de forma directa

Después llagamos a la maquinas que comparten solo una porción selecta de sus espacios de direcciones, como las variables comapartidas y otras estructuras de datos. Se requiere información adicional del usuario para determinar cuales variables son compartidas y cuales no

Por ultimo tenemos a los sistemas que trabajan con memoria compartida distribuida basada en objetos a diferencia de los demás aquí los programas no pueden solo tener acceso a los datos compartidos, tienen que recorrer métodos protegidos lo que significa que el sistema de ejecución puede tener siempre el control de cada acceso

BIBLIOGRAFÌA http://

www.google.com.mx/imgres?q=memoria+cache

Sistemas operativos distribuidos Andrew Tanenbaum

Recommended