Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

85
Multiprocesadores Multiprocesadores Coherencia, Consistencia y Sincronización.

Transcript of Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

Page 1: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

MultiprocesadoresMultiprocesadoresCoherencia, Consistencia y Sincronización.

Page 2: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

2

BibliografíaBibliografía

D. E. Culler, J.P. Singh. “Parallel Computer Architecture: A Hardware/Software”

J.L. Hennesy, D.A. Patterson. “Computer Architecture. A Quantitative Approach”

J. P. Shen, M. Lipasti. “Modern processor design”

Page 3: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

3

Alternativas de implementación Alternativas de implementación (1)(1)

Escalabilidad

$ $

Mem

Red de Interconexión

Memoria Compartida(SMP, UMA)

Mem

• Bus Compartido• Dance-hall

Switch

Memoria Principal

Cache Compartida -Entrelazadas (2-8)(e.g. Alliant FX-8, Encore& Sequent)

Primer Nivel $

P1 Pn

P1 Pn

Red de Interconexión Escalable

$$Mem Mem

Memoria Distribuida (NUMA)

P1 Pn

Page 4: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

4

Alternativas de implementación Alternativas de implementación (2)(2)

SMP basado en Bus Compartido

E/SMemoria

$ $Bus

Servidores Estaciones de trabajo Bloques de construcción básicos

sistemas de gran escala Soporte en microprocesadores de

propósito general

Problemas

CoherenciaAncho de Banda limitado

P1 Pn

Mayor éxito(multitarea y grano fino)

Page 5: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

5

Modelo de programaciónModelo de programación Memoria compartida ( el más antiguo y extendido )

Todos los Pc pueden direccionar cualquier posición de memoria Las comunicaciones son implícitas por “LOAD y STORE”. Los procesos

comparten parte de su espacio virtual. Paso de mensajes

Cada nodo Pc+Memoria+ I/O Cada Pc solo accede a su memoria privada Comunicaciones vía mensajes explícitos ( SEND- RECIEVE ). Soporte

operaciones de E/S Las comunicaciones deben aparecer explícitas en el programa

Process P Process Q

Address Y

Addr ess X

Send X, Q, t

Receive Y, P, tMatch

Local pr ocessaddress spaceLocal pr ocess

address space

Page 6: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

6

Jerarquía de memoria extendidaJerarquía de memoria extendida

CPU CPU CPU

Jerarquía de Memoria

Ocultar la latencia de los accesos Incrementar el Ancho de Banda

Replicación: Problema de coherencia

Variables Compartidas

Page 7: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

7

3

U: 7Store U

Memoria

Dispositivos I/O

P1

$ $ $

P2 P3

U: 51

U: 5

Load U

2

U: 5

Load U

4 U = ?

Load U

5U = ?

Load U(P1) Load U(P3) Load U(P3) Store U(P1) Load U(P2) Load U

Problema de la coherencia cacheProblema de la coherencia cache

Protocolos de coherencia de cacheSiguen la pista del estado de cualquier bloque de datos compartido para evitar incoherencias

Page 8: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

8

Soluciones de Grano Grueso Soluciones de Grano Grueso (1)(1)

Problemas de coherencia en uniprocesadores Operaciones de E/S a través de dispositivos DMA:

Salida de dato obsoleto (cache post-escritura) Entrada de dato que no tenga efecto (acierto de cache)

MMu

L2D

L1

Memoria DMA

ControladorI/O

Page 9: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

9

Soluciones de Grano Grueso Soluciones de Grano Grueso (2)(2)

Soluciones uniprocesador Evitar usar la cache

Segmentos de memoria involucrados en E/S se marcan como “No-Cacheables”

Sacar de la cache antes de E/S (SO) Páginas de memoria involucradas se vuelcan previamente a memoria

(flush) Usar la cache para E/S

Tráfico de E/S pasa por todos los niveles de la jerarquía de memoria.

Page 10: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

10

Soluciones de Grano Grueso Soluciones de Grano Grueso (3)(3)

En multiprocesadores La escritura o lectura de variables compartidas es un evento

frecuente. No es práctico:

Deshabilitar la cache para datos compartidos Invocar al SO en cada referencia a una variable compartida

Solución:

Proveer coherencia de memoria

Page 11: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

11

Sistema de Memoria Coherente Sistema de Memoria Coherente (1)(1)

Una operación de lectura retorna siempre el último valor que fue escrito en la

posición de memoria correspondiente, independientemente del procesador que

efectúa la lectura o la escritura

¿Qué significa que un sistema de memoria es coherente? (Definición menos formal)

Page 12: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

12

Sistema de Memoria Coherente Sistema de Memoria Coherente (2)(2) Definición formal (Sistema Coherente)

Si para El resultado de cualquier ejecución de un programa Cualquier posición de memoria (U)

Es posible construir una ordenación secuencial consistente con los resultados de la ejecución, y tal que:

– Operaciones de un procesador Ordenadas en secuencia en orden en que son emitidas a sistema de memoria

– Valor devuelto por load Valor escrito por el último store

Px: Load UPy: Load U . . .Px: Store UPz: Load U

Orden hipotéticoU

Page 13: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

13

Sistema de Memoria Coherente Sistema de Memoria Coherente (3)(3)

Implícito: Propagación + Serialización de escrituras

Escrituras visibles a todos los procesadores

Todas las escrituras a una posición de memoria deben verse en el mismo orden

por todos los procesadores

Page 14: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

14

Políticas para mantener la coherencia Políticas para mantener la coherencia (1)(1)

Actualización en EscrituraInvalidación en Escritura

Políticas para mantener la coherencia

Page 15: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

15

Políticas para mantener la coherencia Políticas para mantener la coherencia (2)(2)

Invalidación en Escritura / Coherencia Dinámica Al escribir en un bloque se invalidan todas las otras copias

Múltiples lectores, un solo escritor Escrituras consecutivas a un bloque (no palabra) desde el mismo

procesador se realizan localmente No hay copias Una transacción por bloque

Fallo de Lectura Escritura-Directa (write-through):

– la memoria esta siempre actualizada Post-Escritura (write-back):

– búsqueda en caches remotas (snoop) para encontrar el ultimo valor

Ejemplo del H&P

Page 16: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

16

Políticas para mantener la coherencia Políticas para mantener la coherencia (3)(3)

Actualización en Escritura Al escribir en un bloque se actualizan todas las copias

Escritura directa (write-through), pocos procesadores Escrituras consecutivas requieren múltiples actualizaciones (write

merge) Fallo de Lectura

Se busca en la memoria siempre esta actualizada

Ejemplo del H&P

Page 17: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

17

Políticas para mantener la coherencia Políticas para mantener la coherencia (4)(4)

Tipo de protocolo Broadcast eficiente

Las operaciones de invalidación o actualización se pueden enviar de forma simultánea a todos los controladores.

En otro caso La actualización se envía únicamente a aquellas caches que tienen

una copia del bloque.

Buses: Protocolo Snoopy

Observación del Bus

Se indica en qué caches existe copia y en qué estado

Protocolos Basados en Directorio

Page 18: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

18

Espionaje el bus

BusState Tag Datos

° ° °

Controlador de Cache + CACHE

Ld/StCPU

Transacciones Relevantes

Sólo es necesario extender la funcionalidad del controlador de cache

Procolos Procolos Snoopy Snoopy (1)(1)

Page 19: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

19

Procolos Procolos Snoopy Snoopy (2)(2)

El controlador de cache puede por tanto: Recibir peticiones del procesador, examinar el estado de la cache,

y emitir una petición al bus Espiar las peticiones que aparecen en el bus, y reaccionar a

aquellas que afecten a la cache que controla Realmente, la comprobación del controlador es la misma

comparación (tag-match) que se hace cuando llega petición del procesador

Por todo esto, el hardware de multiprocesadores de memoria compartida por bus, es muy adecuado para los protocolos snoopy, pues requiere muy pocos cambios

Hacer ejemplo 5-2, pg. 267 de Culler

Page 20: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

20

Procolos Procolos Snoopy Snoopy (3)(3)

Uniprocesador: Protocolo de la cache: Algoritmo formado por máquinas de estado

que cooperan. Define:– Conjunto de estados (Cada bloque de memoria tiene un estado asociado)– Diagrama de transición de estados– Acciones asociadas a cada transición

Los Cambios de Estado son provocados por:– Operaciones de memoria efectuadas por el procesador: Devuelve el dato,

y si no lo tiene, accede a memoria.

S1

S2Estado de un bloque en MEMORIA

Acciones asociadas

Page 21: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

21

Procolos Procolos Snoopy Snoopy (4)(4)

Multiprocesador: Protocolo Snoopy (basado en espionaje del bus): Algoritmo formado

por máquinas de estado que cooperan. Define:– Conjunto de estados (Cada bloque de memoria tiene un estado asociado

a cada procesador)– Diagrama de transición de estados– Acciones asociadas a cada transición

Los Cambios de Estado son provocados por:– Transacciones del bus relevantes: Actualiza su estado, y posiblemente

ayuda a completar la transacción.– Operaciones de Memoria efectuadas por el procesador local: Devuelve el

dato, y posiblemente genera una nueva transacción del bus.

S1

S2p1 p2 pN

Vector de Estados de un bloque en MEMORIA

Acciones asociadas

Page 22: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

22

Diagrama de Estados en Uniprocesador

Inicial : bloques inválidos Lectura : Inválido Válido

Puede generar reemplazamiento

Escritura : no cambia el estado

V

I

Lectura / -- Escritura / Memoria

Escritura / Memoria

Fallo Lectura / Memoria

Protocolo Protocolo SnoopySnoopy de 2 Estados de 2 Estados (1)(1)

Un único nivel de cache. Escritura Directa (write-through) Sin Asignación en Escritura (write non-allocate)

Política de Invalidación

Page 23: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

23

Un único nivel de cache. Escritura Directa (write-through) Sin Asignación en Escritura (write non-allocate)

Política de Invalidación

Diagrama de Estados en Protocolo Snoopy

Lecturas: PrRd Escrituras: PrWr Transacciones del BUS:

BUS_Rd BUS_Wr

V

I

PrRd / -- PrWr / BUS_Wr

PrWr / BUS_Wr

Pr_Rd / BUS_Rd

Protocolo Protocolo SnoopySnoopy de 2 Estados de 2 Estados (2)(2)

BUS_Wr /--

Ejemplo de folios

Page 24: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

24

Protocolo Protocolo SnoopySnoopy de 2 Estados de 2 Estados (3)(3)

Supongamos: 1 nivel cache, Write-through, Non-allocate.¿Es coherente este Protocolo Snoopy de 2 estados? Asunciones:

Los controladores de cada cache espían el bus Propagación de escrituras

La memoria se ocupa de las operaciones de memoria en el orden en que estas se presentan al bus (arbitraje del bus).

Operaciones de memoria atómicas: Sólo una operación activa al mismo tiempo en el bus.

Serialización de escrituras

1. Operaciones tratadas en el orden en que son emitidas2. Valor devuelto por última lectura es el último escrito

Page 25: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

25

Protocolo Protocolo SnoopySnoopy de 2 Estados de 2 Estados (4)(4)

2. Valor devuelto por última lectura es el último escrito: Los fallos Serializados por el bus Los aciertos Escrituras serializadas por el bus, pero las

lecturas no totalmente serializadasNo es problema porque, el valor que tiene la cache lo puso: La última escritura El último fallo de lectura de ese procesadorY ambas operaciones estarían también serializadas

Volver sobre el ejemplo de folios

Page 26: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

26

Problema: Ancho de Banda alto (write-through) Ejemplo:

Procesador a 2000 MHz CPI = 1 15% stores de 8 bytes

300 Millones de stores por segundo por procesador 2400 MB/s por procesador Un bus con un ancho de banda de 10GB/s sólo puede soportar 4

procesadores sin saturarse

Protocolo Protocolo SnoopySnoopy de 2 Estados de 2 Estados (5)(5)

Solución: utilizar post-escritura (Write-back),más compleja la propagación y serialización…

Page 27: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

27

Recordatorio: caches write-back Recordatorio: caches write-back (1)(1)

Clave para un uso eficiente del ancho de banda del bus: Post-Escritura (write-back) Asignación en Escritura (write-allocate)

Diagrama de transición de estados de una cache con Post-Escritura

Tres estados: Invalido (o no presente) Válido (clean) Modificado (dirty)

Dos tipos de accesos a memoria / Transiciones de Bus Lecturas (BusRd):

– Fallo lectura o escritura (asignación en escritura) PostEscrituras (BusWB):

– Reemplazamiento

Page 28: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

28

PrRd/—

PrRd/—

PrWr/BusRdFallo Escritura

PrWr/—Acierto Escritura

V

M

I

Replace/BusWBPrRd/BusRd Replace/

PrWr/—Acierto Escritura

Recordatorio: caches write-backRecordatorio: caches write-back (2) (2)

Hacer ejemplo folios

Page 29: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

29

Protocolo MSI: invalidación de 3 estados Protocolo MSI: invalidación de 3 estados (1)(1)

Extensión del protocolo de monoprocesador a multiprocesador MSI

Tres estados: Invalido (o no presente) Compartido (shared) Modificado (modified)

Peticiones del procesador PrRd y PrWr

Transacciones de bus BusRd Lectura sin intención de modificar el dato. La genera el

controlador cuando recibe un PrRd y no tiene dato en cache. BusRdX Traer dato con intención de modificarlo. Resto de

caches invalidan su copia. La genera el controlador cuando recibe PrWr y el dato no está en cache o está pero no está en estado modificado.

BusWB/Flush El controlador vuelca al bus el dato.

Page 30: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

30

Protocolo MSI: invalidación de 3 estados Protocolo MSI: invalidación de 3 estados (3)(3)

PrWr/BusRdX

PrRd/BusRd

M

S

I

PrWr/ BusRdX

PrRd /—

BusRdX/-

BusRd/—

BusRdX / Flush

PrRd/—

PrWr/—

Replace / Flush

BusRd/Flush

1. Valido: Shared2. Modificado: Exclusivo3. Nueva transacción: BusRdx

(Lectura con Invalidación)

Sólo hay 1 cache con copia válida (la copia de la memoria principal está anticuada)

La exclusividad implica que la cache puede modificar el bloque sin notificárselo a nadie

El bloque está presente en la cache y no ha sido modificado

La memoria está actualizada Otras caches adicionales pueden

tener copia

Page 31: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

31

Protocolo MSI: invalidación de 3 estados Protocolo MSI: invalidación de 3 estados (4)(4)

3. PrWr U

I/O

Operación Estado P1 Estado P2 Estado P3 TransacciónBus

DatosSuministrados

P1 Lee UP3 Lee U

P3 escribe U

P1 Lee UP2 Lee U

MemoriaBusRd

U S 5

S — —

U S 5

S — S BusRd Memoria

BusRdX(BusUpg)

Memoria(ignorados)

BusRdX U

I

I — M

M 7

Memoria U : 5

P1 P2 P3

Page 32: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

32

Protocolo MSI: invalidación de 3 estados Protocolo MSI: invalidación de 3 estados (5)(5)

I/O

Operación Estado P1 Estado P2 Estado P3 TransacciónBus

DatosSuministrados

P1 Lee UP3 Lee U

P3 escribe U

P1 Lee UP2 Lee U

MemoriaBusRd

U I

S — —

U M 7

S — S BusRd Memoria

BusRdX(BusUpg)

Memoria(ignorados)

Memoria U : 5

P1 P2 P3

I — M

4. PrRd U

BusRd U

BusRd Cache P3

Flush U

—S S

SS 7

7

Page 33: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

33

Protocolo MSI: invalidación de 3 estados Protocolo MSI: invalidación de 3 estados (6)(6)

I/O

Operación Estado P1 Estado P2 Estado P3 TransacciónBus

DatosSuministrados

P1 Lee UP3 Lee U

P3 escribe U

P1 Lee UP2 Lee U

MemoriaBusRd

U S

S — —

U S 7

S — S BusRd Memoria

BusRdX(BusUpg)

Memoria(ignorados)

Memoria U : 7

P1 P2 P3

I — M

7

BusRd Cache P3—S S

BusRd Memoria

BusRd U

U S 7

S S S

5. PrRd U

Page 34: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

34

Hacer ejemplo 5-2, pg. 267 de Culler

Page 35: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

35

Detalle: Problema Contador compartido ¿Qué transición hacer cuando se recibe

BusRd de un bloque en estado modificado? La elección depende de las expectativas

(patrón de acceso siguiente) Patrón 1: el procesador “original” vuelve a

realizar una lectura del bloque Patrón 2: el procesador “nuevo” realiza una

escritura del bloque Shared

Patrón 1: acierto de lectura Patrón 2: invalidación (latencia de escritura)

Inválido Patrón 1: fallo de lectura Patrón 2: no es necesaria invalidación

Solución Ajuste dinámico

M

S

I

BusRd / Envio

BusRd/Envio

Protocolo MSI: Decisiones de bajo nivelProtocolo MSI: Decisiones de bajo nivel

Page 36: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

36

Problema Protocolo MSI El protocolo MSI no soporta bien Aplicaciones Secuenciales. Lectura-Modificación de un dato:

2 transacciones de bus:– BusRd: Trae el bloque a estado Shared– BusRdX: Pasa de S a M, e invalida el resto de copias.

Protocolo MESI: Invalidación de 4 estados Protocolo MESI: Invalidación de 4 estados (1)(1)

I S MBusRd BusRdX

Page 37: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

37

Protocolo MESI 4 Estados :

(M) Modificado, (E) Exclusivo, (S) Compartido e (I) Inválido

Nuevo estado (Exclusive Clean / Exclusive) Implica Exclusividad: puede pasarse a (M) sin transacción de bus No implica Pertenencia: el controlador de cache no debe responder

a transacción BusRd, pues memoria actualizada. Utilizado en muchos procesadores:

Pentium Power PC 601 MIPS R4400 (procesador usado en los multiprocesadores de

Silicon Graphics)

Protocolo MESI: Invalidación de 4 estados Protocolo MESI: Invalidación de 4 estados (2)(2)

Page 38: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

38

M

S

I

PrRd/-

PrWr/

(S): se activa la señal share

EPrRd (S)/BusRd

PrRd (S) /BusRd

BusRdX/-

Protocolo MESI: Invalidación de 4 estados Protocolo MESI: Invalidación de 4 estados (3)(3)

BusRd/-

BusRdX: Lectura exclusiva

! Sólo nuevas transiciones !

Page 39: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

39

Hacer ejemplo que viene a continuación: Insistir en OR-cableada Insistir en ventaja de MESI sobre MSI Ejemplo

Ejemplo de folios

Page 40: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

40

Protocolo MESI: Invalidación de 4 estados Protocolo MESI: Invalidación de 4 estados (4)(4)

I/O

Operación Estado P1 Estado P2 Estado P3 TransacciónBus

DatosSuministrados

P1 Lee UP3 Lee U

P3 escribe U

P1 Lee UP2 Lee U

Memoria U : 5

P1 P2 P31. PrRd U

Señal shared (S)OR-cableada

MemoriaBusRd

BusRd U

U E

E — —

5

Page 41: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

41

Protocolo MESI: Invalidación de 4 estados Protocolo MESI: Invalidación de 4 estados (5)(5)

I/O

Operación Estado P1 Estado P2 Estado P3 TransacciónBus

DatosSuministrados

P1 Lee UP3 Lee U

P3 escribe U

P1 Lee UP2 Lee U

Memoria U : 5

P1 P2 P3

Señal shared (S)OR-cableada

MemoriaBusRd

U E

E — —

2. PrRd U

S U S 5

S — S

BusRd U

MemoriaBusRd

Page 42: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

42

Protocolo MOESI: invalidación de 5 estados Protocolo MOESI: invalidación de 5 estados (1)(1)

Problema MESI/MSI Transacción Flush

Además de transferir el bloque a la cache que lo solicita, se actualiza el contenido de la memoria

Podría evitarse esta actualización Nuevo estado (O) Owned

No es Exclusivo, existen otras copias Es Propietario, suministra los datos en caso de:

BusRd B BusRdX B

Page 43: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

43

Protocolo MOESI: invalidación de 5 estados Protocolo MOESI: invalidación de 5 estados (2)(2)

Estados M - Modified (dirty) O - Owned (dirty y compartido) E - Exclusive (sin modificar ni compartir) S - Shared I - Invalid

O

M

ES

I

Propiedad

Validez

Exclusividad

Page 44: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

44

M

S

I

Flush’: se envia el bloque a otra cache

E

Protocolo MOESI: invalidación de 5 estados Protocolo MOESI: invalidación de 5 estados (3)(3)

Nota: solo nuevas transiciones

O

BusRd/Flush’

BusRdX/Flush’

BusRd/Flush’PrRd/ ―

PrWr/BusRdX

PrRd/BusRd

Page 45: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

45

Hacer ejemplo de folios

Page 46: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

Problema protocolos invalidaciónProblema protocolos invalidación Problema patrones migratorios

Cuando hay un patrón de acceso migratorio, los protocolos basados en invalidación son ineficientes.

Ejemplo: flag de sincronización

46

while(true){while (flag != 0);

do_work_P0()flag=1;

}

while(true){while (flag != 1);

do_work_P1()flag=0;

}

Proceso 0 Proceso 1

¿Cuantas transacciones son necesarias en un protocolo de invalidación?

Page 47: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (1)(1)

4747

E

SM M

SC

SC: Shared Clean

SM: Shared Modified

Yo, otros y puede que la memoria, pero no soy el propietario Potencialmente 2 o más procesadores tienen este bloque. La memoria principal puede estar o no actualizada

Yo y nadie másEl bloque ha sido modificado, la memoria no está actualizada y esta es la única copia (Propiedad Exclusiva)

Yo y otros pero no la memoria, soy el propietarioPotencialmente 2 más procesadores tienen este bloque. La memoria principal no está actualizada y este procesador es responsable de actualizar la memoria principal cuando este bloque sea reemplazado

Yo y la memoria El bloque no ha sido modificado y sólo hay una cache con copiaSolo Memoria

Estado ImplícitoNP

Dragón de Xerox PARC (1984) Sun SparcServer (1997)

Page 48: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (2)(2) Eventos Procesador

PrRd / PrWr PrRdMiss / PrWrMiss

Transacciones del Bus BusRd / BusWB / Flush BusUpd (Nueva)

Broadcast de la palabra modifica a todos los procesadores para que se actualicen las copias

Señal S Para soportar el estado Exclusivo (igual que MESI)

48

Page 49: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (3)(3)

4949

E

MSM

SCBusRd/—

BusRd/Flush

BusRd/Flush

BusRd/—

PrRdMiss (S) /BusRd

PrRdMiss (S) / BusRd

Page 50: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (4)(4)

5050

E

MSM

SCPrWr/—

PrWr/BusUpd(S)

PrWr/BusUpd(S)

PrWr/—PrWr/BusUpd(S)

PrWr/BusUpd(S)

BusUpd/Actualización

BusUpd/Actualización

Broadcast de la palabra modifica a todos los procesadores para que se actualicen las caches relevantesPrWrMiss/

BusRd(S);BusUpd

PrWrMiss/BusRd(S);BusUpd

Page 51: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (5)(5) Reemplazo de un bloque en estado SC o SM

¿Debe hacerse un broadcast al resto de las controladores para informar de dicho reemplazo (Transacción Reemplazo)?

En caso de que haya sólo otra copia, permite que pase al estado E o M (no genera actualizaciones)

Transacción Reemplazo puede ser menos crítica que BusUpd Estado SM

¿Puede eliminarse? DEC Firefly: La transacción BusUpd también actualiza la memoria El Protocolo Dragón asume que la actualización de SRAM caches es

menos costosa que la actualización de memoria.

51

Page 52: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (6)(6)

5252

I/O

Operación Estado P1 Estado P2 Estado P3 TransacciónBus

DatosSuministrados

P1 Lee UP3 Lee UP3 escribe U

P1 Lee UP2 Lee U

Memoria U : 5

P1 P2 P3

Señal shared (S)OR-cableada

1. PrRd U

MemoriaBusRd

BusRd U

U E 5

E — —

Page 53: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

53

Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (7)(7)

I/O

Operación Estado P1 Estado P2 Estado P3 TransacciónBus

DatosSuministrados

P1 Lee UP3 Lee UP3 escribe U

P1 Lee UP2 Lee U

Memoria U : 5

P1 P2 P3

Señal shared (S)OR-cableada

MemoriaBusRd

U E 5

E — —BusRd Memoria

BusRd U

U SC 5

SC — SC

SC

2. PrRd U

Page 54: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

54

Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (8)(8)

I/O

Operación Estado P1 Estado P2 Estado P3 TransacciónBus

DatosSuministrados

P1 Lee UP3 Lee UP3 escribe U

P1 Lee UP2 Lee U

Memoria U : 5

P1 P2 P3

Señal shared (S)OR-cableada

MemoriaBusRd

U 5

E — —BusRd Memoria

U SC 5

SC — SC

SC

3. PrWr U

BusUpd Cache P3

BusUpd

SC — SM

SM 77

Page 55: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

55

Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (9)(9)

I/O

Operación Estado P1 Estado P2 Estado P3 TransacciónBus

DatosSuministrados

P1 Lee UP3 Lee UP3 escribe U

P1 Lee UP2 Lee U

Memoria U : 5

P1 P2 P3

Señal shared (S)OR-cableada

MemoriaBusRd

U 7

E — —BusRd Memoria

U SM 7

SC — SC

SC

4. PrRd U

BusUpd Cache P3SC — SM

Cache P1—SC SM —

Page 56: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

56

Protocolo Dragón: actualización 4 estados Protocolo Dragón: actualización 4 estados (10)(10)

I/O

Operación Estado P1 Estado P2 Estado P3 TransacciónBus

DatosSuministrados

P1 Lee UP3 Lee UP3 escribe U

P1 Lee UP2 Lee U

Memoria U : 5

P1 P2 P3

Señal shared (S)OR-cableada

MemoriaBusRd

U 7

E — —BusRd Memoria

U SM 7

SC — SC

SC

BusUpd Cache P3SC — SM

Cache P1—SC SM —

5. PrRd U

Cache P3BusRd

BusRd U

SCSC SM

U SC 7

Page 57: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

57

Invalidación vs Actualización Invalidación vs Actualización (1)(1)

Patrón 1for i = 1 to k P1(write, x);

P2-PN-1 (read, x);

end for I

Patrón 2for i = 1 to k

for j = 1 to m P1 (write, x);

end for j P2 (read, x);

end for i

una escritura antes de lectura

varias escrituras antes de lectura

Page 58: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

58

Invalidación vs Actualización Invalidación vs Actualización (2)(2)

Patrón 1 N = 16, M = 10, K = 10 Actualización

Iteración 1: N fallos de cache (70 bytes) Iteraciones restantes: 1 actualización/iteración

(14 bytes; 6 cntrl, 8 datos) Tráfico total = 16*70 + 9*14 = 1246 bytes

Invalidación Iteración 1: N fallos de cache (70 bytes) Iteraciones restantes: P1 invalida (6bytes, BusUpgrd), los otros

producen fallos de lectura (70bytes) Tráfico total = 16*70 + 9*6 + 15*9*17 = 10,624 bytes

Page 59: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

59

Invalidación vs Actualización Invalidación vs Actualización (3)(3)

Patrón 2 N = 16, M = 10, K = 10 Actualización

Iteración 1: 2 fallos de cache (70 bytes), M actualizaciones (14 bytes; 6 cntrl, 8 datos)

Iteraciones restantes: M actualización/iteración Tráfico total = 2*70 + 10*14 = 1540 bytes

Invalidación Iteración 1: 2 fallos de cache (70 bytes) Iteraciones restantes: P1 invalida (6bytes, BusUpgrd), P2 produce

fallo de lectura (70bytes) Tráfico total = 2*70 + 9*(70+6) = 824 bytes

Page 60: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

60

Invalidación vs Actualización Invalidación vs Actualización (4)(4)

¿Qué sucede en cargas de trabajo reales? Los protocolos de actualización pueden generar demasiado

tráfico Es posible reducir/limitar actualizaciones (Competitive

Snooping) Actualmente

Protocolos de actualización son difíciles de implementar correctamente ( problema consistencia)

Se utilizan raramente En un futuro

Puede suceder lo mismo que ahora Los multiprocesadores en un chip pueden hacerlos más

atractivos Más ancho de banda (intra-chip) Más fácil predecir comportamiento (temporización)

Page 61: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

61

Coherencia cache escalableCoherencia cache escalable

Esquema Multiprocesadores escalables Coherencia cache Protocolos basados en Directorio Organización del Directorio

Directorios planos basados en memoria Directorios planos basados en cache

Esquema de Directorio simple Resumen

Page 62: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

62

Multiprocesadores Escalables Multiprocesadores Escalables (1)(1)

Escalabilidad Ancho de banda de la memoria debe aumentar con el

número de procesadores Solución Natural: Memoria Distribuida

Ancho de banda red de interconexión escalable (latencia razonable)

Facilidades de Expansión

Page 63: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

63

Multiprocesadores Escalables Multiprocesadores Escalables (2)(2)Escalabilidad

$ $

Mem

Red de Interconexión

UMA, SMP

Mem

• Bus Compartido• Dance-hall

Switch

Memoria Principal

Cache Compartida

Primer Nivel $

P1 Pn

P1 Pn

Red de Interconexión Escalable

$$Mem Mem

NUMA: Memoria Distribuida

P1 Pn

Page 64: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

64

Escalabilidad: Arquitectura NUMA Memoria Distribuida Red de Interconexión Escalable

Conexiones punto a punto Fallos:

Saber estado bloque en otras caches Si necesario, localizar copias (invalidarlas) Comunicarse con las otras copias: obtener datos, invalidarlas/actualizarlas

Multiprocesadores Escalables Multiprocesadores Escalables (3)(3)

Desafío: Arquitectura cc-NUMA Mantener coherencia mediante hw con granularidad de bloque

cache al igual que en las máquinas basadas en bus Aproximaciones más utilizadas:

Protocolos basados en Directorio Snoopy Jerárquico Jerarquía de 2 niveles

Red de Interconexión Escalable

$$Mem Mem

NUMA: Acceso a Memoria no Uniforme

P1 Pn

Page 65: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

65

Coherencia cache mediante Directorios El orden total lo impone acceso al directorio

No sirve el arbitraje del bus Cada bloque de memoria tiene asociado

Estado en memoria Estado en Caches: Información Local

Protocolos basados en Directorio Protocolos basados en Directorio (1)(1)

En caso de que se produzca un fallo es necesario: Comunicación con el directorio

Búsqueda de bloque Comunicación con los nodos

Propagación Comunicaciones punto-a-punto

No es necesario broadcast de direcciones de memoria

Page 66: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

66

Escalabilidad determinada por: Rendimiento

Demanda de BW (Tráfico): Transacciones de red por fallo (multiplicado por la frecuencia de fallos)

Latencia: Transacciones red en camino crítico del fallo (espera) Estos dos factores dependen de

– La organización del directorio – Cómo esté optimizado el flujo de transacciones de red

Sobrecarga de memoria Depende de la organización del directorio

Protocolos basados en Directorio Protocolos basados en Directorio (2)(2)

Page 67: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

67

Centralizado Distribuido

Esquemas de Directorio

Organización del Directorio Organización del Directorio (1)(1)

Jerárquico PlanoComo Encontrar la Información de Directorio:

Basados en Mem. Basados en CacheComo Localizar las copias:

Page 68: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

68

Organización del Directorio Organización del Directorio (2)(2) Esquema Jerárquico

Información en estructura de datos jerárquica

Nodos de procesamiento

Directorio (level-1)

Directorio (level-2)

Page 69: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

69

Organización del Directorio Organización del Directorio (3)(3)

Ventajas de directorios jerárquicos Fallo a bloque con origen lejano: Más rápido

Problemas Transacciones más numerosas que en directorios planos Requisitos de latencia y ancho de banda mucho mayores

Page 70: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

70

Esquema Plano Información del bloque en lugar fijo (nodo home/origen)

Dirección del bloque (hashing) Fallo: Transacción al nodo origen para consultar el directorio

Esquema Plano Basado en Memoria Información de bloque en el nodo origen (home) del bloque Stanford DASH/FLASH, SGI Origin, MIT Alewife, HAL

Esquema Plano Basado en Cache Información de bloque distribuida entre copias IEEE SCI, Sequent NUMA-Q

Organización del Directorio Organización del Directorio (4)(4)

Page 71: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

71

Directorios planos basados en memoria (1)Directorios planos basados en memoria (1)

Directorio: 1 bit de presencia por nodo Estado: uno o más bits

Más simple: un único bit (bit de modificación)

Estado del bloque en la cache: Cualquiera de los anteriores: MSI, MESI, MOESI, etc.

N

M

Directorio

Bits de Presencia

Red de Interconexión

$

P1

• ••

Memoria

$

PN

• ••

Bit de Modificación

Memoria

Page 72: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

72

Directorios planos basados en memoria (2)Directorios planos basados en memoria (2) Funcionamiento del protocolo:

Supongamos: Estados en cache MSI, 1 nivel de cache, 1 procesador por nodo

Nodo i: Fallo de lectura/escritura.1. Comprobar a que memoria hay que acceder. Si local, acceder

directamente. Si remota, establecer comunicación con ella.2. En la memoria, si fallo de lectura:

1. Dirty_bit=OFF Enviar bloque de memoria, y actualizar bit_presencia[i]2. Dirty_bit=ON Controlador responde con identidad del nodo que lo

tiene. Actualizar bit_presencia[i] y Dirty_bit=OFF. Se establece comunicación con el nodo. En el nodo se pasa el estado a Shared, y se envía el dato.

3. En la memoria, si fallo de escritura:1. Dirty_bit=OFF La memoria envía la lista de nodos que tienen el

bloque (en nodos se cambia el estado a Inválido). Además manda el bloque a cache i, actualiza cada bit_presencia y pone dirty_bit a ON.

2. Dirty_bit=ON Se avisa a nodo que tenga el bloque de que lo envíe a la cache i. Se invalida la copia de ese nodo que tiene el bloque. Además, se actualiza cada bit_presencia y deja dirty_bit a ON.

4. WriteBack: Se ponen a OFF tanto dirty_bit como bit_presencia[i]

Page 73: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

73

Directorios planos basados en memoria (3)Directorios planos basados en memoria (3) Fallo de lectura sobre Bloque Shared

Home

Local

RdRequest

RdReply

1

2

Page 74: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

74

Directorios planos basados en memoria (4)Directorios planos basados en memoria (4) Fallo de lectura sobre Bloque Modified

Local

Owner2

RdReq1 Home

3

Owner

Intervention: Donwngrade, send me, WB

Data4

Revision

WB

4

4 HOP TRANSACTION

Page 75: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

75

Directorios planos basados en memoria (5)Directorios planos basados en memoria (5) Fallo de escritura sobre Bloque Shared

Local

ReaderList

2

RdXReq1

Reader3

Invalidate

ack4

Reader

Home

Page 76: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

76

Directorios planos basados en memoria (6)Directorios planos basados en memoria (6) Fallo de escritura sobre Bloque Modified

Local

Owner2

RdXReq1 Home

3Transfer Owner

OwnerOwnerSh

ip4

4 HOP TRANSACTION

Revision4

Page 77: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

77

Hacer ejemplo de folios

Page 78: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

78

Directorios planos basados en memoria (7)Directorios planos basados en memoria (7)

Rendimiento en las Escrituras (mensajes de invalidación) Mensajes (BW): proporcional nodos que comparten el bloque Mensajes en camino crítico (Latencia):

Todos disponibles en nodo origen Envío en paralelo VENTAJA

PROBLEMA !! :

Sobrecarga de almacenamiento: M bloques de memoria: proporcional a Nproc* M Tamaño de línea: 64 bytes

64 nodos: sobrecarga del directorio 12.5% 256 nodos: sobrecarga del directorio 50% 1024 nodos: sobrecarga del directorio 200%

Page 79: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

79

Directorios planos basados en cache Directorios planos basados en cache (1)(1)

Existe una memoria principal origen de cada bloque En lugar de vector de bits Puntero nodo cabecera con copia

– Entrada en el nodo origen tiene bits de estado Resto de nodos con copia:

– Lista doblemente enlazada, distribuida

P

Cache

P

Cache

P

Cache

Memoria Principal(Home)

Nodo cabecera Nodo 1 Nodo 2

Page 80: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

80

Directorios planos basados en cache Directorios planos basados en cache (2)(2)

Fallo de lectura: Nodo envía petición al nodo origen de ese bloque para determinar

la identidad del nodo cabecera Nodo origen responde con la identidad del nodo cabecera Nodo envía solicitud inserción al nodo cabecera en la cabeza de la

lista (se convierte en el nuevo nodo cabecera) Los datos son enviados por

Nodo origen si tiene copia Nodo cabecera en caso contrario (siempre tiene la última copia)

Reemplazamiento Eliminación de la lista Complejo: coordinación con nodo anterior y posterior

Page 81: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

81

Directorios planos basados en cache Directorios planos basados en cache (3)(3) Escritura:

Nodo puede ser nuevo, o estar ya en la lista de nodos que comparten el bloque

Recorre el resto de la lista para invalidar las sucesivas copias. Acuses de recibo de invalidaciones se envían al nodo que realiza la

escritura Los datos, si no los tenía ya (fallo), son enviados por

Nodo origen si tiene copia Nodo cabecera en caso contrario (siempre tiene la última copia)

Rendimiento en Escrituras (mensajes de invalidación) Número de mensajes (BW): proporcional al número de nodos

que comparten el bloque (semejante a los basados en memoria), pero están distribuidos

Número de mensajes en el camino crítico (Latencia): también es proporcional al número de nodos que comparten el bloque (los mensajes se serializan). Esto es peor que en los de memoria !!

Hacer Ejemplo de folios

Page 82: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

82

Ventajas con esquemas basados en memoria Menor sobrecarga de directorio.

Punteros siguiente y anterior: – Proporcional al número de bloques de cache en la máquina

(mucho menor que el número de bloques de memoria)

La lista enlazada guarda el orden realizado de accesos

El trabajo realizado por los controladores para enviar las invalidaciones no está centralizado en un nodo sino distribuido entre los nodos que comparten el bloque

Directorios planos basados en cache Directorios planos basados en cache (4)(4)

Page 83: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

83

Escalabilidad DirectorioEscalabilidad Directorio Para mejorar el rendimiento, a nivel de protocolo,

pretendemos: Reducir la demanda de BW Reducir el número de

transacciones generadas por cada operación de memoria. Reducir la latencia de cada operación Reducir el número de

operaciones del camino crítico. Reducir la ocupación del directorio Tipo de organización.

Por ejemplo: Protocolos basados en memoria Las invalidaciones se

pueden enviar en paralelo, reduciendo el BW. Protocolos basados en cache Hay que enviar invalidaciones

de modo secuencial. Por ejemplo:

Protocolos basados en memoria El tamaño del directorio es proporcional al número de bloques de memoria.

Protocolos basados en cache El tamaño del directorio es proporcional al número de bloques de cache.

Page 84: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

84

Estrategia 2: Reducción de Anchura (cada entrada directorio que no sea proporcional a P)

Punteros a los nodos que comparten dicho bloque Ejemplo con 1024 nodos y 100 punteros de 10 bits

Sobrecarga MemoriaSobrecarga Memoria¿Cómo reducir la sobrecarga del directorio?

Estrategia 1: Stanford DASH Incrementar el tamaño de bloque Utilizar nodos multiprocesador (solo 1 bit por nodo)

Estrategia 3: Reducción de Altura (Reducir el número de entradas del directorio)

Sólo una fracción muy pequeña de los bloques de la memoria estarán replicados en las caches en un momento dado

Organizar el directorio como una cache

Page 85: Multiprocesadores- Coherencia, Consistencia y Sincronización-MUY BUENO

85

Posible mejora en protocolo basado en Posible mejora en protocolo basado en memoriamemoria Intervention & Reply Forwarding: Obtener Bloque

Modificado Reducción del número de mensajes (de 5 a 4) Reducción de mensajes en camino crítico (de 4 a 3).

Local

RdReq /RdXReq

1 Home

Owner

Intervention(ID local)

2

3 HOP TRANSACTION

Data/OwnerSh

ip

3

Revision3Data4

Revision3