Tema 4 Arquitecturas de Memoria Compartida
Tema 4 Arquitecturas de Memoria Compartida
Tema 4 Arquitecturas de Memoria Compartida
4. Arquitecturas de memoria
compartida
Programa
1. Introducción
2. Paradigma basado en memoria compartida
3. SMP, UMA y NUMA
4. Memoria compartida distribuida
5. Coherencia basada en directorios
6. Paralelismo a nivel de thread
7. Introducción a la consistencia de memoria
8. Procesadores multicore
9. Conclusiones
10.Bibliografía
2
Tema 4. Arquitecturas de memoria compartida
Introducción
3
Tema 4. Arquitecturas de memoria compartida
Introducción
Tipo de memoria que puede ser accedida por múltiples programas, ya sea para
comunicarse entre ellos o para evitar copias redundantes
La memoria compartida es un modo eficaz de pasar datos entre aplicaciones
Dependiendo del contexto, los programas pueden ejecutarse en un
mismo procesador o en procesadores separados
La memoria usada entre dos hilos de ejecución dentro de un mismo programa se
conoce también como memoria compartida
4
Tema 4. Arquitecturas de memoria compartida
Paradigma basado
en memoria
compartida
5
Tema 4. Arquitecturas de memoria compartida
Memoria compartida
Comunicaciones y sincronizaciones mediante recurso común (memoria)
Es necesario sincronizar el acceso y garantizar exclusión mutua a secciones compartidas
Paralelismo multihilo
Bibliotecas estándares (Lenguaje C o Java)
Bibliotecas específicas
Memoria compartida basada en páginas
Espacio de direcciones de memoria virtual que integra la memoria de todas las computadoras del
sistema, y su uso se realiza mediante paginación
Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si
esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el
sistema operativo solicita la página al resto de nodos
Memoria compartida basada en objetos
Acceso a datos por medio de la encapsulación de la información
No admite programas no modulares
6
Tema 4. Arquitecturas de memoria compartida
7
Tema 4. Arquitecturas de memoria compartida
SMP o UMA
8
Tema 4. Arquitecturas de memoria compartida
SMP o UMA
Se caracteriza por el hecho de que varias unidades de procesamiento comparten el acceso a la
memoria, compitiendo en igualdad de condiciones por dicho acceso
Permiten que cualquier procesador trabaje en cualquier tarea sin importar su localización en
memoria
Con soporte del sistema operativo estos sistemas pueden mover tareas entre los procesadores para
garantizar un trabajo aceptable
La arquitectura se compone de microprocesadores independientes que se comunican con la
memoria a través de un bus compartido. Dicho bus es un recurso de uso común. Por tanto, debe
ser arbitrado para que solamente un microprocesador lo use en cada instante de tiempo
Si los computadores con un único microprocesador tienden a gastar considerable tiempo esperando a
que lleguen los datos desde la memoria, SMP empeora esta situación, ya que suele haber varios
microprocesadores parados en espera de datos
Se utilizan secciones críticas para proteger a la memoria de escrituras desafortunadas
9
Tema 4. Arquitecturas de memoria compartida
NUMA
10
Tema 4. Arquitecturas de memoria compartida
NUMA
Diseño de memoria utilizado en multiprocesamiento donde la memoria se accede en posiciones
relativas de otro proceso o memoria compartida entre procesos
Un procesador puede acceder a su propia memoria local de forma más rápida que a la memoria
no local (memoria local de otro procesador o memoria compartida entre procesadores)
El objetivo principal es limitar el número de accesos a la memoria. Esto es la clave para el alto
rendimiento en un ordenador moderno
La arquitectura consiste en memoria distribuida para cada procesador, evitando así que afecte
al rendimiento del sistema cuando varios procesadores intentan acceder a la misma memoria
Para los problemas de la propagación de datos (comunes en servidores y aplicaciones similares),
puede mejorar el rendimiento utilizando una única memoria compartida por un factor de
aproximadamente el número de procesadores (o separando bancos de memoria)
11
Tema 4. Arquitecturas de memoria compartida
Memoria
compartida
distribuida
12
Tema 4. Arquitecturas de memoria compartida
13
Tema 4. Arquitecturas de memoria compartida
La memoria compartida distribuida (DSM) es una abstracción utilizada para compartir datos entre
computadores que no comparten memoria física
Los procesos acceden a DSM para leer y actualizar, dentro de sus espacios de direcciones, sobre lo
que aparenta ser la memoria interna normal asignada a un proceso
Existe un sistema subyacente en tiempo de ejecución que asegura de forma transparente que
procesos diferentes ejecutándose en computadores diferentes observen las actualizaciones realizadas
entre ellas
Es como si los procesos accedieran a una única memoria compartida, pero de hecho la memoria
física está distribuida
14
Tema 4. Arquitecturas de memoria compartida
15
Tema 4. Arquitecturas de memoria compartida
Coherencia basada
en directorios
16
Tema 4. Arquitecturas de memoria compartida
Coherencia de directorios
La coherencia de directorios hace referencia a la integridad de los datos almacenados en las
memorias locales de los recursos compartidos (normalmente memorias caché)
La coherencia de la caché es un caso especial de la coherencia de memoria
Un sistema multiprocesador de una memoria compartida implica incremento de los conflictos
Si un cliente tiene una copia de un bloque de memoria de una lectura previa y otro cliente cambia ese
bloque, el primer cliente podría estar trabajando con datos erróneos, sin tener conocimiento de ello
La coherencia de directorios y especialmente la de la caché intenta administrar estos conflictos y
mantener consistencia entre las cachés y la memoria
17
Tema 4. Arquitecturas de memoria compartida
Coherencia de directorios
Los protocolos basados en directorio mantienen un directorio centralizado de los bloques que hay
en las cachés
Se utilizan tanto en multiprocesadores con memoria físicamente distribuida, como en sistemas con
memoria centralizada con red escalable
Estos protocolos reducen el tráfico en la red enviando selectivamente órdenes solo a aquellas
cachés que disponen de una copia válida del bloque implicado en la operación de memoria
El protocolo Snoopy
Hace que las cachés individualmente monitoreen las líneas (buses) de direcciones de accesos a
memoria con respecto a los bloques que han copiado
Cuando una operación de escritura es observada sobre una dirección de un bloque del cual tiene
un bloque, el controlador de caché invalida su copia
También es posible que el controlador de caché observe la dirección y el dato correspondiente a
esa dirección, intentando así actualizar su copia cuando alguien modifica dicho bloque en la
memoria principal
18
Tema 4. Arquitecturas de memoria compartida
Coherencia de directorios
Varios modelos y protocolos basados en máquinas de estados: MSI, MESI, MOSI y MOESI
La elección de un modelo de consistencia es crucial a la hora de diseñar un sistema de caché
coherente. Los modelos de coherencia difieren en rendimiento y escalabilidad
Las transiciones entre estados en una implementación en concreto de estos protocolos puede variar
Por ejemplo una implementación puede elegir diferentes transiciones para actualizar y actualiza
tales como actualización-en-lectura, actualización-en-escritura, invalidación-en-lectura, o
invalidación-en-escritura. La elección de una transición puede afectar a la cantidad de tráfico
entre cachés, lo que a su vez podría afectar al ancho de banda disponible por las cachés para la
operación actual
Esto debe ser tenido en consideración en el diseño de software distribuido que podría causar
problemas de contención entre cachés de múltiples procesadores
19
Tema 4. Arquitecturas de memoria compartida
Paralelismo a nivel
de thread
20
Tema 4. Arquitecturas de memoria compartida
21
Tema 4. Arquitecturas de memoria compartida
22
Tema 4. Arquitecturas de memoria compartida
Introducción a la
consistencia de
memoria
23
Tema 4. Arquitecturas de memoria compartida
Consistencia de memoria
Un modelo de consistencia es esencialmente un contrato entre procesos y el almacenamiento del
dato
Normalmente un proceso que realiza una operación de lectura espera que esa operación devuelva un
valor que refleje el resultado de la última operación de escritura sobre el dato
Tipos de consistencia de memoria:
Linealizable (también conocido como el estricta o consistencia atómica)
Consistencia secuencial
Consistencia de causalidad
Consistencia liberada
Consistencia eventual
Consistencia delta
Consistencia PRAM (también conocido como consistencia FIFO)
Consistencia débil
Consistencia vector campo
24
Tema 4. Arquitecturas de memoria compartida
Procesadores
multicore
25
Tema 4. Arquitecturas de memoria compartida
Procesadores multicore
Un procesador multinúcleo es aquel que combina dos o más microprocesadores independientes en
un solo paquete, a menudo un solo circuito integrado
Los microprocesadores multinúcleo permiten que un dispositivo computacional exhiba una cierta
forma del paralelismo
Multiprocesamiento a nivel de chip (a nivel de caché)
Los procesadores se unen con un canal de alta velocidad y comparten la carga de trabajo general
entre ellos. En caso de que uno falle el otro se hace cargo.
26
Tema 4. Arquitecturas de memoria compartida
Conclusiones
27
Tema 4. Arquitecturas de memoria compartida
Conclusiones
Distintas arquitecturas principales relacionadas con la memoria compartida
Principalmente UMA y NUMA
Las memorias deben mantener una coherencia para el correcto funcionamiento de los programas
Se pueden espiar entre ellas
La memoria compartida distribuida es un caso especial de memoria que simula una única
memoria física mediante la abstracción lógica
Un proceso es un programa en ejecución que necesita su propio espacio de memoria
Tiene su propio ID y su contador de programa para recuperar el contexto
Un hilo es un programa o parte de un programa que comparte espacio de memoria con otros
como él
Tiene su propio ID y el ID del proceso al que pertenece
Dispone de su propio sistema para recuperar el contexto
28
Tema 4. Arquitecturas de memoria compartida
Conclusiones
29
Tema 4. Arquitecturas de memoria compartida
Bibliografía
Bolosky, W. J., Scott, M. L., Fitzgerald, R. P., Fowler, R. J., & Cox,
A. L. (1991). NUMA policies and their relation to memory
architecture. ACM SIGARCH Computer Architecture News, 19(2),
212-221
Wilson Jr, A. W. (1987, June). Hierarchical cache/bus architecture
for shared memory multiprocessors. In Proceedings of the 14th
annual international symposium on Computer architecture (pp.
244-252). ACM
Flautner, K., Uhlig, R., Reinhardt, S., & Mudge, T. (2000). Thread-
level parallelism and interactive performance of desktop
applications. ACM Sigplan Notices, 35(11), 129-138
Schauer, B. (2008). Multicore processors–a necessity. ProQuest
discovery guides, 1-14
30