Memoria Compartida Distribuida (DSM): Arquitecturas, Coherencia y Rendimiento en Multiprocesadores
Enviado por Programa Chuletas y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,4 KB
Memoria Compartida Distribuida (MCD): Fundamentos y Arquitecturas
Hemos visto que existen dos tipos de sistemas con múltiples CPU:
- Multiprocesador: Dos o más CPU comparten la memoria principal común.
- Multicomputadora: Cada CPU tiene su propia memoria; nada se comparte directamente.
Hardware: Desafíos en el Diseño de Sistemas Multiprocesador
Diseñar una máquina con múltiples CPU que compartan la misma memoria es complejo (debido a limitaciones del bus o conmutador).
Las multicomputadoras son más sencillas de construir, permitiendo un número ilimitado de unidades, cada una con su CPU y memoria, conectadas a través de una red.
Software: Programación en Entornos Multiprocesador y Multicomputadora
Existen numerosas técnicas de programación para multiprocesadores (como regiones críticas, semáforos, etc.), y se cuenta con un vasto conocimiento teórico y práctico al respecto.
Con las multicomputadoras, la situación es opuesta. La comunicación se basa en E/S de mensajes o en RPC, lo que dificulta el uso de gráficos o estructuras complejas como parámetros, así como la gestión de variables globales.
En resumen, las multicomputadoras son más fáciles de construir, pero más difíciles de programar.
Memoria Compartida Distribuida (DSM): Concepto y Funcionamiento
La Memoria Compartida Distribuida (DSM) implica tener una colección de computadoras conectadas en red que comparten un único espacio de direcciones virtuales paginado. Cada página reside en una computadora específica.
A nivel de hardware, las llamadas a páginas locales se realizan con la máxima velocidad de la memoria. Un intento de acceder a una página en una computadora diferente provoca un fallo de página en el hardware. Este fallo notifica al Sistema Operativo, que a su vez envía un mensaje a la máquina remota para localizar la página requerida y enviarla al solicitante. Una vez recibida, la instrucción detenida se reinicia y puede completarse.
Configuraciones de Memoria Compartida Distribuida (MCD)
Tipos de Configuraciones: Circuitos, Bus, Anillo y Conmutador
Circuitos
La mayoría de las computadoras poseen memoria externa, pero también existen circuitos independientes que integran un CPU y memoria (comunes en automóviles, juguetes, etc.). La sección del CPU de estos circuitos dispone de líneas de direcciones y datos que se conectan directamente con la porción de memoria.
Arquitectura Basada en Bus
La forma más sencilla y práctica de construir un multiprocesador es basarlo en un bus al que se conecten múltiples CPU.
El tráfico generado por cada procesador y el ancho de banda disponible del bus determinan el número de procesadores útiles en este tipo de multiprocesadores.
Proceso de Lectura de una Palabra de Memoria
- Cuando cualquiera de los CPU desea leer una palabra de la memoria, coloca la dirección de la palabra deseada en el bus y activa una señal en la línea de control para indicar una operación de lectura.
- Una vez que la memoria ha localizado la palabra requerida, la coloca en el bus y activa otra señal de control para anunciar su disponibilidad.
- Finalmente, el CPU lee la palabra.
La escritura se realiza de forma análoga.
Para evitar que dos o más CPU intenten acceder a la memoria simultáneamente, se requiere un mecanismo de arbitraje del bus.
Dado que solo existe una memoria central, las operaciones son inherentemente coherentes.
La desventaja de un bus único es que, con tres o cuatro CPU, el bus se sobrecargará, lo que provocará una disminución drástica del rendimiento.
Coherencia de Caché en un Multiprocesador
Pueden surgir inconsistencias entre la versión de los datos en la caché y la de la memoria principal. Los protocolos diseñados para mantener la coherencia entre múltiples procesadores se denominan protocolos de coherencia de caché.
El protocolo más común para mantener la coherencia de caché es el protocolo de fisgoneo o husmeo (snooping).
Mantener la coherencia implica dos componentes principales: las operaciones de lectura y las de escritura.
- En el caso de las lecturas, tener múltiples copias no representa un problema. Sin embargo, es crucial disponer de la copia más reciente, por lo que, tras una escritura, se debe obtener el nuevo valor.
- Para las escrituras, se requiere acceso exclusivo al bloque de memoria.
- Ante un fallo de lectura, todas las cachés verifican si poseen una copia del bloque solicitado y, en caso afirmativo, realizan la acción correspondiente, como suministrar el dato a la caché que ha fallado.
- Durante una escritura, todas las cachés comprueban si tienen una copia del bloque y, en consecuencia, invalidan su copia o la actualizan con el nuevo valor.
Tipos de Protocolos de Fisgoneo para Escrituras
- Invalidación por escritura: El procesador que realiza la escritura invalida las copias existentes en las otras cachés antes de proceder con la operación. Posteriormente, puede actualizar los datos locales libremente hasta que otro procesador los requiera.