Multiprocesadores Coherencia, Consistencia y Sincronización.

85
Multiprocesadores Multiprocesadores Coherencia, Consistencia y Sincronización.

Transcript of Multiprocesadores Coherencia, Consistencia y Sincronización.

Page 1: Multiprocesadores Coherencia, Consistencia y Sincronización.

MultiprocesadoresMultiprocesadores

Coherencia, Consistencia y Sincronización.

Page 2: Multiprocesadores Coherencia, Consistencia y Sincronización.

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.

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.

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

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

CoherenciaAncho de Banda limitado

P1 Pn

Mayor éxito(multitarea y grano fino)

Page 5: Multiprocesadores Coherencia, Consistencia y Sincronización.

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 space

Local pr ocessaddress space

Page 6: Multiprocesadores Coherencia, Consistencia y Sincronización.

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

Ocultar la latencia de los accesos Incrementar el Ancho de Banda

Replicación: Problema de coherencia

Replicación: Problema de coherencia

Variables Compartidas

Page 7: Multiprocesadores Coherencia, Consistencia y Sincronización.

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

5

U = ?

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 cache Siguen la pista del estado de cualquier bloque de datos compartido para evitar incoherencias

Siguen la pista del estado de cualquier bloque de datos compartido para evitar incoherencias

Page 8: Multiprocesadores Coherencia, Consistencia y Sincronización.

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.

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.

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.

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

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.

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.

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

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

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.

14

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

Actualización en EscrituraActualización en EscrituraInvalidación en EscrituraInvalidación en Escritura

Políticas para mantener la coherencia

Page 15: Multiprocesadores Coherencia, Consistencia y Sincronización.

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.

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.

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 SnoopyBuses: Protocolo Snoopy

Observación del Bus

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

Protocolos Basados en DirectorioProtocolos Basados en Directorio

Page 18: Multiprocesadores Coherencia, Consistencia y Sincronización.

18

Espionaje el bus

BusState Tag Datos

° ° °

Controlador de Cache + CACHE

Ld/St

CPUTransacciones

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.

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.

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.

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.

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.

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.

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 emitidas

2. Valor devuelto por última lectura es el último escrito

Page 25: Multiprocesadores Coherencia, Consistencia y Sincronización.

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 procesador

Y ambas operaciones estarían también serializadas

Volver sobre el ejemplo de folios

Page 26: Multiprocesadores Coherencia, Consistencia y Sincronización.

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.

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.

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.

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.

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.

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 U

P3 Lee U

P3 escribe U

P1 Lee U

P2 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.

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 U

P3 Lee U

P3 escribe U

P1 Lee U

P2 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.

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 U

P3 Lee U

P3 escribe U

P1 Lee U

P2 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.

34

Hacer ejemplo 5-2, pg. 267 de Culler

Page 35: Multiprocesadores Coherencia, Consistencia y Sincronización.

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.

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.

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.

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.

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.

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 U

P3 Lee U

P3 escribe U

P1 Lee U

P2 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.

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 U

P3 Lee U

P3 escribe U

P1 Lee U

P2 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.

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.

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.

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.

45

Hacer ejemplo de folios

Page 46: Multiprocesadores Coherencia, Consistencia y Sincronización.

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.

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ás

El 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 propietario

Potencialmente 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 copia

Solo Memoria

Estado ImplícitoNP

Dragón de Xerox PARC (1984)

Sun SparcServer (1997)

Page 48: Multiprocesadores Coherencia, Consistencia y Sincronización.

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.

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.

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 relevantes

PrWrMiss/BusRd(S);BusUpd

PrWrMiss/BusRd(S);BusUpd

Page 51: Multiprocesadores Coherencia, Consistencia y Sincronización.

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.

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 U

P3 Lee U

P3 escribe U

P1 Lee U

P2 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.

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 U

P3 Lee U

P3 escribe U

P1 Lee U

P2 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.

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 U

P3 Lee U

P3 escribe U

P1 Lee U

P2 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.

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 U

P3 Lee U

P3 escribe U

P1 Lee U

P2 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.

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 U

P3 Lee U

P3 escribe U

P1 Lee U

P2 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.

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 lecturauna escritura antes de lectura

varias escrituras antes de lecturavarias escrituras antes de lectura

Page 58: Multiprocesadores Coherencia, Consistencia y Sincronización.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

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.

74

Directorios planos basados en memoria (4)Directorios planos basados en memoria (4)

Fallo de lectura sobre Bloque Modified

Local

Owner

2

RdReq

1 Home

3

Owner

Intervention: Donwngrade, send me, WB

Data4

Revision

WB

4

4 HOP TRANSACTION

Page 75: Multiprocesadores Coherencia, Consistencia y Sincronización.

75

Directorios planos basados en memoria (5)Directorios planos basados en memoria (5)

Fallo de escritura sobre Bloque Shared

Local

ReaderList

2

RdXReq

1

Reader3

Invalidate

ack4

Reader

Home

Page 76: Multiprocesadores Coherencia, Consistencia y Sincronización.

76

Directorios planos basados en memoria (6)Directorios planos basados en memoria (6)

Fallo de escritura sobre Bloque Modified

Local

Owner

2

RdXReq

1 Home

3Transfer Owner

OwnerOwnerSh

ip4

4 HOP TRANSACTION

Revision4

Page 77: Multiprocesadores Coherencia, Consistencia y Sincronización.

77

Hacer ejemplo de folios

Page 78: Multiprocesadores Coherencia, Consistencia y Sincronización.

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%

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.

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.

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.

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.

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.

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.

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

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.

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