Tema 4 Arquitecturas de Memoria Compartida

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 30

Arquitecturas Avanzadas de Computadores

Grado en Ingeniería Informática

4. Arquitecturas de memoria
compartida

Alberto Fernández Isabel


Tema 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

SMP, UMA y NUMA

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

Memoria compartida distribuida

13
Tema 4. Arquitecturas de memoria compartida

Memoria compartida distribuida

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

Memoria compartida distribuida


La principal característica de DSM es que ahorra al programador todo lo concerniente al paso de
mensajes al escribir sus aplicaciones
DSM es fundamentalmente una herramienta para aplicaciones paralelas o para aplicaciones o grupos
de aplicaciones distribuidas en las que se puede acceder directamente a datos individuales que
ellas comparten
DSM es menos apropiado para sistemas cliente-servidor, ya que los clientes ven al servidor como
un gestor de recursos en forma de datos abstractos que se acceden a través de peticiones (por
razones de modularidad y protección)
Los servidores pueden proporcionar DSM compartido entre los clientes. Por ejemplo, los
archivos plasmados en memoria (memory mapped) que son compartidos y sobre los que se gestiona
un cierto grado de consistencia son una forma de DSM

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

Paralelismo a nivel de thread


Un proceso es un programa en ejecución
Los procesos se componen de un conjunto de instrucciones a ejecutar que operan sobre su
estado (memoria del proceso)
Cada proceso tiene un espacio de memoria asignado. Es denominado espacio de direccionamiento
virtual de un proceso
Cada proceso deberá contar con al menos un contador de programa denominado hilo de ejecución
El contador de programa es un registro que indica cuál de todas las instrucciones del proceso es
la siguiente a ejecutar
A lo largo de su existencia un proceso estará ejecutando sus instrucciones en un procesador o
bloqueado
Ejecución de más de un recurso en un procesador de forma simultánea, consigue paralelismo a nivel
de proceso

21
Tema 4. Arquitecturas de memoria compartida

Paralelismo a nivel de thread


Interfaz de programación proporcionada por el sistema operativo que permite la utilización de varios
hilos de ejecución dentro de un mismo proceso
Manejo de hilos: creación, destrucción y sincronización
Permite tener un mayor control sobre el paralelismo, pero requiere que el paralelismo sea
implementado en su totalidad por el programador
No necesita herramientas de intercambio de información, ya sea a través de mensajes o
primitivas a nivel del sistema operativo, ya que los procesos comparten el espacio de
direccionamiento
Mayor eficiencia frente a la programación con procesos que no comparten el espacio de
direccionamiento
No escala más allá de una máquina
Comunicación con memoria compartida o paso de mensajes
Hilos y procesos combinados obtienen el mayor rendimiento en los clusters HPC

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

También podría gustarte