En informática , la memoria compartida distribuida ( DSM ) es una forma de arquitectura de memoria en la que las memorias separadas físicamente se pueden abordar como un espacio de direcciones lógicamente compartido. Aquí, el término "compartido" no significa que hay una única memoria centralizada, sino que el espacio de direcciones es "compartido" (la misma dirección física en dos procesadores se refiere a la misma ubicación en la memoria). [1] : 201 Espacio distribuido de direcciones globales ( DGAS ), es un término similar para una amplia clase de implementaciones de software y hardware, en las que cada nodo de un clúster tiene acceso amemoria compartida además de la memoria privada no compartida de cada nodo .
Un sistema de memoria distribuida, a menudo llamado multicomputadora , consta de múltiples nodos de procesamiento independientes con módulos de memoria local que están conectados por una red de interconexión general. Los sistemas DSM de software se pueden implementar en un sistema operativo o como una biblioteca de programación y se pueden considerar extensiones de la arquitectura de memoria virtual subyacente . Cuando se implementan en el sistema operativo, dichos sistemas son transparentes para el desarrollador; lo que significa que la memoria distribuida subyacente está completamente oculta a los usuarios. Por el contrario, los sistemas de software DSM implementados a nivel de biblioteca o de lenguaje no son transparentes y los desarrolladores generalmente tienen que programarlos de manera diferente. Sin embargo, estos sistemas ofrecen un enfoque más portátil para las implementaciones del sistema DSM. Un sistema de memoria compartida distribuida implementa el modelo de memoria compartida en un sistema de memoria distribuida físicamente.
Métodos para lograr DSM
Por lo general, existen dos métodos para lograr la memoria compartida distribuida:
- hardware, como circuitos de coherencia de caché e interfaces de red
- software
Implementación de software DSM
Hay tres formas de implementar una memoria compartida distribuida por software:
- enfoque basado en páginas utilizando la memoria virtual del sistema;
- enfoque de variable compartida utilizando algunas rutinas para acceder a variables compartidas;
- enfoque basado en objetos idealmente para acceder a datos compartidos a través de una disciplina orientada a objetos.
Transmisión de mensajes frente a DSM
Paso de mensajes | Memoria compartida distribuida |
---|---|
Las variables deben calcularse | Las variables se comparten directamente |
El costo de la comunicación es obvio | El costo de la comunicación es invisible |
Los procesos están protegidos al tener un espacio de direcciones privado | Los procesos pueden causar errores al alterar los datos |
Los procesos deben ejecutarse al mismo tiempo | La ejecución de los procesos puede suceder con vidas útiles que no se superponen |
Los sistemas de software DSM también tienen la flexibilidad de organizar la región de memoria compartida de diferentes formas. El enfoque basado en páginas organiza la memoria compartida en páginas de tamaño fijo. Por el contrario, el enfoque basado en objetos organiza la región de memoria compartida como un espacio abstracto para almacenar objetos compartibles de tamaños variables. Otra implementación que se ve comúnmente usa un espacio de tupla , en el que la unidad de intercambio es una tupla .
La arquitectura de memoria compartida puede implicar la separación de la memoria en partes compartidas distribuidas entre los nodos y la memoria principal; o distribuir toda la memoria entre nodos. Un protocolo de coherencia , elegido de acuerdo con un modelo de coherencia , mantiene la coherencia de la memoria .
Vista abstracta
Ventajas
- Escala bien con una gran cantidad de nodos
- El paso de mensajes está oculto
- Puede manejar bases de datos grandes y complejas sin replicación o envío de datos a procesos
- Generalmente más barato que usar un sistema multiprocesador
- Proporciona un gran espacio de memoria virtual
- Los programas son más portátiles debido a las interfaces de programación comunes
- Proteja a los programadores de enviar o recibir primitivas
Desventajas
- Generalmente más lento de acceder que la memoria compartida no distribuida
- Debe proporcionar protección adicional contra accesos simultáneos a datos compartidos.
- Puede incurrir en una penalización por desempeño
- Poco control del programador sobre los mensajes reales que se generan
- Los programadores deben comprender los modelos de coherencia para escribir programas correctos.
- Las implementaciones de DSM utilizan el paso de mensajes asíncrono y, por lo tanto, no pueden ser más eficientes que las implementaciones de paso de mensajes.
Coherencia de la memoria del directorio
La coherencia de la memoria es necesaria para que el sistema que organiza el DSM pueda rastrear y mantener el estado de los bloques de datos en los nodos de las memorias que componen el sistema. Un directorio es uno de esos mecanismos que mantiene el estado de los bloques de caché que se mueven por el sistema.
Estados
Un DSM básico rastreará al menos tres estados entre los nodos para cualquier bloque dado en el directorio. [2] Habrá algún estado para dictar el bloque como sin caché (U), un estado para dictar un bloque como propiedad exclusiva o modificada (EM), y un estado para dictar un bloque como compartido (S). A medida que los bloques ingresan a la organización del directorio, pasarán de U a EM (estado de propiedad) en el nodo inicial, luego el estado puede pasar a S cuando otros nodos comiencen a leer el bloque.
Hay dos métodos principales para permitir que el sistema rastree dónde se almacenan en caché los bloques y en qué condición en cada nodo. La solicitud-respuesta centrada en el hogar utiliza el hogar para atender las solicitudes y controlar los estados, mientras que el enfoque centrado en el solicitante permite que cada nodo controle y administre sus propias solicitudes a través del hogar.
Solicitud y respuesta centradas en el hogar
En un sistema centrado en el hogar, el DSM evitará tener que manejar carreras de solicitud-respuesta entre nodos al permitir que ocurra solo una transacción a la vez hasta que el nodo de origen haya decidido que la transacción ha finalizado, generalmente cuando el hogar ha recibido todos los procesadores de respuesta. respuesta a la solicitud. Un ejemplo de esto es el modo de fuente doméstica QPI de Intel . [3]
Ventajas
- Las carreras de datos son imposibles
- Sencillo de implementar
Desventajas
- Estrategia de solicitud-respuesta lenta, almacenada en búfer, limitada por el nodo de inicio
Solicitud y respuesta centradas en el solicitante
En un sistema centrado en el solicitante, el DSM permitirá que los nodos se comuniquen a voluntad a través del hogar. Esto significa que varios nodos pueden intentar iniciar una transacción, pero esto requiere consideraciones adicionales para garantizar la coherencia. Por ejemplo: cuando un nodo está procesando un bloque, si recibe una solicitud para ese bloque de otro nodo, enviará un NAck (reconocimiento negativo) para decirle al iniciador que el nodo de procesamiento no puede cumplir con esa solicitud de inmediato. Un ejemplo de esto es el modo Snoop-Source QPI de Intel. [3]
Ventajas
- Rápido
Desventajas
- No previene naturalmente las condiciones de carrera.
- Genera más tráfico de autobuses
Modelos de consistencia
El DSM debe seguir ciertas reglas para mantener la coherencia sobre cómo se ve el orden de lectura y escritura entre los nodos, lo que se denomina modelo de coherencia del sistema .
Supongamos que tenemos n procesos y Mi operaciones de memoria para cada proceso i , y que todas las operaciones se ejecutan secuencialmente. Podemos concluir que ( M1 + M2 +… + Mn )! / ( M1 ! M2 !… Mn !) Son posibles intercalaciones de las operaciones. El problema con esta conclusión es determinar la corrección de las operaciones intercaladas. La coherencia de memoria para DSM define qué entrelazados están permitidos.
Replicación
Hay dos tipos de algoritmos de replicación. Leer replicación y Escribir replicación. En la replicación de lectura, varios nodos pueden leer al mismo tiempo, pero solo un nodo puede escribir. En la replicación de escritura, varios nodos pueden leer y escribir al mismo tiempo. Las solicitudes de escritura son manejadas por un secuenciador. La replicación de datos compartidos en general tiende a:
- Reducir el tráfico de la red
- Promover un mayor paralelismo
- Resultado en menos errores de página
Sin embargo, preservar la coherencia y la consistencia puede convertirse en un desafío mayor.
Consistencia de entrada y salida
- Consistencia de lanzamiento: cuando un proceso sale de una sección crítica , los nuevos valores de las variables se propagan a todos los sitios.
- Consistencia de entrada: cuando un proceso ingresa a una sección crítica, actualizará automáticamente los valores de las variables compartidas.
- Consistencia basada en vistas: es una variante de la consistencia de entrada, excepto que las variables compartidas de una sección crítica son detectadas automáticamente por el sistema. Una implementación de coherencia basada en vistas es VODCA, que tiene un rendimiento comparable al de MPI en equipos de clúster.
Ejemplos de
Ver también
Referencias
- ^ Patterson, David A .; Hennessy, John L. (2006). Arquitectura informática: un enfoque cuantitativo (4ª ed.). Burlington, Massachusetts: Morgan Kaufmann. ISBN 978-01-2370490-0.
- ^ Solihin, Yan (2015). Fundamentos de la arquitectura multinúcleo paralela . Boca Raton, Florida: Chapman y Hall / CRC. págs. 339–340. ISBN 9781482211184.
- ^ a b Sorin, Daniel J .; Hill, Mark D .; Madera, David A. (2011). Introducción a la coherencia de la memoria y la coherencia de la caché . Morgan y Claypool. pag. 174. ISBN 978-16-0845564-5.
enlaces externos
- Caché compartido distribuido
- Coherencia de memoria en sistemas de memoria virtual compartida por Kai Li, Paul Hudak publicado en ACM Transactions on Computer Systems, Volumen 7 Número 4, noviembre de 1989