You are on page 1of 85

Multiprocesadores

Coherencia, Consistencia y Sincronizacin.

Bibliografa

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

Alternativas de implementacin

(1)

Escalabilidad P1
Switch

Pn P1
$

Primer Nivel $ Memoria Principal Cache Compartida -Entrelazadas (2-8) (e.g. Alliant FX-8, Encore& Sequent)

Pn
$

Bus Compartido Dance-hall

Red de Interconexin
Mem Mem

P1
Mem $ Mem

Pn
$

Memoria Compartida (SMP, UMA)

Red de Interconexin Escalable


3

Memoria Distribuida (NUMA)

Alternativas de implementacin

(2)

SMP basado en Bus Compartido


(multitarea y grano fino)
Mayor xito

P1
$

Pn
Bus E/S
$

Problemas

Memoria

Servidores

Estaciones de trabajo
Bloques de construccin bsicos sistemas de gran escala Soporte en microprocesadores de propsito general

Coherencia Ancho de Banda limitado

Modelo de programacin

Memoria compartida ( el ms antiguo y extendido )


Todos los Pc pueden direccionar cualquier posicin de memoria Las comunicaciones son implcitas por LOAD y STORE. Los procesos comparten parte de su espacio virtual. Cada nodo Pc+Memoria+ I/O Cada Pc solo accede a su memoria privada Comunicaciones va mensajes explcitos ( SEND- RECIEVE ). Soporte operaciones de E/S Las comunicaciones deben aparecer explcitas en el programa

Paso de mensajes

Match Send X, Q, t Addr ess X Local pr ocess addr ess space

Receive Y , P, t

Addr ess Y

Local pr ocess addr ess space

Pr ocess P

Pr ocess Q

Jerarqua de memoria extendida

CPU

CPU

CPU

Jerarqua de Memoria
Ocultar la latencia de los accesos Incrementar el Ancho de Banda

Replicacin: Problema de coherencia


6

Variables Compartidas

Problema de la coherencia cache


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

Load U
1

P 2 5

Load U U=?

3 3

U=? $
4

U: 5 U: 7

Store U

U: 5

Load U

U: 5
1

Load U

Dispositivos I/O

Memoria Protocolos de coherencia de cache Siguen la pista del estado de cualquier bloque de datos compartido para evitar incoherencias

Soluciones de Grano Grueso

(1)

Problemas de coherencia en uniprocesadores

Operaciones de E/S a travs de dispositivos DMA:


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

L2 MMu
DL1

Memoria

DMA

Controlador I/O
8

Soluciones de Grano Grueso

(2)

Soluciones uniprocesador

Evitar usar la cache

Segmentos de memoria involucrados en E/S se marcan como NoCacheables Pginas de memoria involucradas se vuelcan previamente a memoria (flush) Trfico de E/S pasa por todos los niveles de la jerarqua de memoria.

Sacar de la cache antes de E/S (SO)

Usar la cache para E/S

Soluciones de Grano Grueso

(3)

En multiprocesadores

La escritura o lectura de variables compartidas es un evento frecuente. No es prctico:


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

Solucin:
Proveer coherencia de memoria

10

Sistema de Memoria Coherente

(1)

Qu significa que un sistema de memoria es coherente? (Definicin menos formal)

Una operacin de lectura retorna siempre el ltimo valor que fue escrito en la posicin de memoria correspondiente, independientemente del procesador que efecta la lectura o la escritura

11

Sistema de Memoria Coherente

(2)

Definicin formal (Sistema Coherente)


Si para

El resultado de cualquier ejecucin de un programa Cualquier posicin de memoria (U)

Es posible construir una ordenacin secuencial consistente con los resultados de la ejecucin, 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

Orden hipottico

Px: Load U Py: Load U . . . Px: Store U Pz: Load U

12

Sistema de Memoria Coherente

(3)

Implcito: Propagacin + Serializacin de escrituras

Escrituras visibles a todos los procesadores

Todas las escrituras a una posicin de memoria deben verse en el mismo orden por todos los procesadores

13

Polticas para mantener la coherencia

(1)

Polticas para mantener la coherencia

Invalidacin en Escritura

Actualizacin en Escritura

14

Polticas para mantener la coherencia

(2)

Invalidacin en Escritura / Coherencia Dinmica

Al escribir en un bloque se invalidan todas las otras copias

Mltiples lectores, un solo escritor

Escrituras consecutivas a un bloque (no palabra) desde el mismo procesador se realizan localmente

No hay copias Una transaccin por bloque Escritura-Directa (write-through):


la memoria esta siempre actualizada

Fallo de Lectura

Post-Escritura (write-back):
bsqueda en caches remotas (snoop) para encontrar el ultimo valor

Ejemplo del H&P

15

Polticas para mantener la coherencia

(3)

Actualizacin en Escritura

Al escribir en un bloque se actualizan todas las copias

Escritura directa (write-through), pocos procesadores

Escrituras consecutivas requieren mltiples actualizaciones (write merge) Fallo de Lectura

Se busca en la memoria siempre esta actualizada

Ejemplo del H&P

16

Polticas para mantener la coherencia

(4)

Tipo de protocolo

Broadcast eficiente

Las operaciones de invalidacin o actualizacin se pueden enviar de forma simultnea a todos los controladores.

Buses: Protocolo Snoopy Observacin del Bus

En otro caso

La actualizacin se enva nicamente a aquellas caches que tienen una copia del bloque.

Protocolos Basados en Directorio Se indica en qu caches existe copia y en qu estado


17

Procolos Snoopy

(1)

Espionaje el bus

State Tag

Datos

CPU
Ld/St

Bus
Transacciones Relevantes

Controlador de Cache + CACHE


Slo es necesario extender la funcionalidad del controlador de cache

18

Procolos Snoopy

(2)

El controlador de cache puede por tanto:

Recibir peticiones del procesador, examinar el estado de la cache, y emitir una peticin al bus Espiar las peticiones que aparecen en el bus, y reaccionar a aquellas que afecten a la cache que controla

Realmente, la comprobacin del controlador es la misma comparacin (tag-match) que se hace cuando llega peticin 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

19

Procolos Snoopy

(3)

Uniprocesador:

Protocolo de la cache: Algoritmo formado por mquinas de estado que cooperan. Define:
Conjunto de estados (Cada bloque de memoria tiene un estado asociado) Diagrama de transicin de estados Acciones asociadas a cada transicin

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
Acciones asociadas

Estado de un bloque en MEMORIA


20

S2

Procolos Snoopy

(4)

Multiprocesador:

Protocolo Snoopy (basado en espionaje del bus): Algoritmo formado por mquinas de estado que cooperan. Define:
Conjunto de estados (Cada bloque de memoria tiene un estado asociado a cada procesador) Diagrama de transicin de estados Acciones asociadas a cada transicin

Los Cambios de Estado son provocados por:


Transacciones del bus relevantes: Actualiza su estado, y posiblemente ayuda a completar la transaccin. Operaciones de Memoria efectuadas por el procesador local: Devuelve el dato, y posiblemente genera una nueva transaccin del bus.

S1
Acciones asociadas
p1 p2
21

pN

Vector de Estados de un bloque en MEMORIA

S2

Protocolo Snoopy de 2 Estados

(1)

Un nico nivel de cache.

Escritura Directa (write-through) Sin Asignacin en Escritura (write non-allocate)

Poltica de Invalidacin
Lectura / -Escritura / Memoria

Diagrama de Estados en Uniprocesador

V
Fallo Lectura / Memoria

Inicial : bloques invlidos Lectura : Invlido Vlido

Escritura : no cambia el estado

Puede generar reemplazamiento

I
Escritura / Memoria

22

Protocolo Snoopy de 2 Estados

(2)

Un nico nivel de cache.

Escritura Directa (write-through) Sin Asignacin en Escritura (write non-allocate)

Poltica de Invalidacin
PrRd / -PrWr / BUS_Wr

Diagrama de Estados en Protocolo Snoopy

V
Pr_Rd / BUS_Rd BUS_Wr /--

Lecturas: PrRd Escrituras: PrWr Transacciones del BUS: BUS_Rd BUS_Wr

I
PrWr / BUS_Wr

Ejemplo de folios
23

Protocolo Snoopy de 2 Estados

(3)

Supongamos: 1 nivel cache, Write-through, Non-allocate. Es coherente este Protocolo Snoopy de 2 estados? Asunciones:
Los controladores de cada cache espan el bus Propagacin 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 atmicas: Slo una operacin activa al mismo tiempo en el bus. Serializacin de escrituras

1.
24

2.

Operaciones tratadas en el orden en que son emitidas Valor devuelto por ltima lectura es el ltimo escrito

Protocolo Snoopy de 2 Estados


2.

(4)

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 serializadas
No 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 estaran tambin serializadas

Volver sobre el ejemplo de folios

25

Protocolo Snoopy de 2 Estados

(5)

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 slo puede soportar 4 procesadores sin saturarse

Solucin: utilizar post-escritura (Write-back), ms compleja la propagacin y serializacin

26

Recordatorio: caches write-back

(1)

Clave para un uso eficiente del ancho de banda del bus:

Post-Escritura (write-back) Asignacin en Escritura (write-allocate)

Diagrama de transicin de estados de una cache con Post-Escritura

Tres estados:

Invalido (o no presente) Vlido (clean) Modificado (dirty)

Dos tipos de accesos a memoria / Transiciones de Bus

Lecturas (BusRd):
Fallo lectura o escritura (asignacin en escritura)

PostEscrituras (BusWB):
Reemplazamiento

27

Recordatorio: caches write-back


PrRd/

(2)

PrWr/ Acierto Escritura

PrWr/ Acierto Escritura PrWr/BusRd Fallo Escritura

PrRd/BusRd

Replace/

Replace/BusWB

PrRd/

28

Hacer ejemplo folios

Protocolo MSI: invalidacin de 3 estados


(1)

Extensin del protocolo de monoprocesador a multiprocesador MSI Tres estados:


Invalido (o no presente) Compartido (shared) Modificado (modified) PrRd y PrWr

Peticiones del procesador

Transacciones de bus

29

BusRd Lectura sin intencin de modificar el dato. La genera el controlador cuando recibe un PrRd y no tiene dato en cache. BusRdX Traer dato con intencin 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.

Protocolo MSI: invalidacin de 3 estados


1. 2. 3.

(3)

Valido: Shared Modificado: Exclusivo Nueva transaccin: BusRdx (Lectura con Invalidacin)

PrWr/ PrRd/

M
PrWr/ BusRdX

Slo hay 1 cache con copia vlida (la copia de la memoria principal est anticuada) La exclusividad implica que la cache puede modificar el bloque sin notificrselo a PrRd/BusRd nadie

BusRd/ Flush

Replace / Flush
BusRdX / Flush BusRdX/-

S
PrRd / BusRd/

PrWr/BusRdX

El bloque est presente en la cache y no ha sido modificado La memoria est actualizada Otras caches adicionales pueden tener copia

30

Protocolo MSI: invalidacin de 3 estados


P1 P2 P3

(4)

3. PrWr U
7

S I

U S M

BusRdX U
I/O

Memoria

U: 5

Operacin P1 Lee U P3 Lee U P3 escribe U P1 Lee U 31 P2 Lee U

Estado P1 S S

Estado P2

Estado P3 S

Transaccin Datos Bus Suministrados Memoria BusRd BusRd Memoria Memoria (ignorados)

BusRdX (BusUpg)

Protocolo MSI: invalidacin de 3 estados


4. PrRd U
U P1 P2 P3

(5)

S I

S U M

BusRd U Memoria

Flush U
I/O

U: 5 7

Operacin P1 Lee U P3 Lee U P3 escribe U P1 Lee U 32 P2 Lee U

Estado P1 S S I S

Estado P2

Estado P3 S M S

Transaccin Datos Bus Suministrados Memoria BusRd BusRd Memoria Memoria (ignorados) Cache P3

BusRdX (BusUpg)
BusRd

Protocolo MSI: invalidacin de 3 estados


P1 P2

(6)

5. PrRd U
U S

P3

U S

BusRd U
I/O

Memoria

U: 7

Operacin P1 Lee U P3 Lee U P3 escribe U P1 Lee U 33 P2 Lee U

Estado P1 S S I S S

Estado P2 S

Estado P3 S M S S

Transaccin Datos Bus Suministrados Memoria BusRd BusRd Memoria Memoria (ignorados) Cache P3 Memoria

BusRdX (BusUpg)
BusRd BusRd

Hacer ejemplo 5-2, pg. 267 de Culler

34

Protocolo MSI: Decisiones de bajo nivel

Detalle: Problema Contador compartido


Qu transicin hacer cuando se recibe BusRd de un bloque en estado modificado? La eleccin depende de las expectativas (patrn de acceso siguiente)

M
BusRd/ Envio

Patrn 1: el procesador original vuelve a realizar una lectura del bloque Patrn 2: el procesador nuevo realiza una escritura del bloque Patrn 1: acierto de lectura Patrn 2: invalidacin (latencia de escritura) Patrn 1: fallo de lectura Patrn 2: no es necesaria invalidacin

Shared

BusRd / Envio

Invlido

Solucin Ajuste dinmico


35

Protocolo MESI: Invalidacin de 4 estados

(1)

Problema Protocolo MSI


El protocolo MSI no soporta bien Aplicaciones Secuenciales. Lectura-Modificacin 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.

I
BusRd

S
BusRdX

36

Protocolo MESI: Invalidacin de 4 estados

(2)

Protocolo MESI

4 Estados :

(M) Modificado, (E) Exclusivo, (S) Compartido e (I) Invlido Implica Exclusividad: puede pasarse a (M) sin transaccin de bus No implica Pertenencia: el controlador de cache no debe responder a transaccin BusRd, pues memoria actualizada.

Nuevo estado (Exclusive Clean / Exclusive)


Utilizado en muchos procesadores:

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

37

Protocolo MESI: Invalidacin de 4 estados


(S): se activa la seal share BusRdX: Lectura exclusiva PrRd (S)/ BusRd

(3)

M
PrWr/

! Slo nuevas transiciones !

E
PrRd/BusRdX/-

PrRd (S) / BusRd

BusRd/-

I
38

Hacer ejemplo que viene a continuacin:


Insistir en OR-cableada Insistir en ventaja de MESI sobre MSI Ejemplo

Ejemplo de folios

39

Protocolo MESI: Invalidacin de 4 estados


1. PrRd U
U E P1 P2 P3

(4)

BusRd U Memoria

I/O

Seal shared (S) OR-cableada

U: 5

Operacin P1 Lee U P3 Lee U P3 escribe U P1 Lee U 40 P2 Lee U

Estado P1 E

Estado P2

Estado P3

Transaccin Datos Bus Suministrados Memoria BusRd

Protocolo MESI: Invalidacin de 4 estados


P1 P2 P3

(5)

2. PrRd U

S E

U S

BusRd U Memoria

I/O

Seal shared (S) OR-cableada

U: 5

Operacin P1 Lee U P3 Lee U P3 escribe U P1 Lee U 41 P2 Lee U

Estado P1 E S

Estado P2

Estado P3 S

Transaccin Datos Bus Suministrados Memoria BusRd BusRd Memoria

Protocolo MOESI: invalidacin de 5 estados

(1)

Problema MESI/MSI

Transaccin Flush

Adems de transferir el bloque a la cache que lo solicita, se actualiza el contenido de la memoria Podra evitarse esta actualizacin

Nuevo estado (O) Owned


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

BusRd B BusRdX B

42

Protocolo MOESI: invalidacin de 5 estados

(2)

Estados

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

O
S M

Propiedad Validez Exclusividad

E
I

43

Protocolo MOESI: invalidacin de 5 estados

(3)

Flush: se envia el bloque a otra cache

M
PrWr/ BusRdX

BusRd/ Flush

O
BusRd/Flush PrRd/

E
PrRd/ BusRd

BusRdX/ Flush

I
44

Nota: solo nuevas transiciones

Hacer ejemplo de folios

45

Problema protocolos invalidacin

Problema patrones migratorios

Cuando hay un patrn de acceso migratorio, los protocolos basados en invalidacin son ineficientes.

Ejemplo: flag de sincronizacin

Proceso 0 while(true){ while (flag != 0); do_work_P0() flag=1; } }

Proceso 1 while(true){ while (flag != 1); do_work_P1() flag=0;

Cuantas transacciones son necesarias en un protocolo de invalidacin?


46

Protocolo Dragn: actualizacin 4 estados (1)

SC: Shared Clean

SC

Yo y otrosYo pero no la memoria, soy el propietario y la memoria Yo, otros y puede Yo y nadie ms que la memoria, pero Potencialmente 2 noms procesadores no soy el propietario El bloque ha sido modificado ytienen slo este Solo Memoria bloque. memoria principal no est actualizada y NP El bloque ha sido La modificado, lacon copia hay una cache Potencialmente 2 actualizada o procesador ms procesadores este es responsable de actualizar la memoria no est y esta es Estado Implcito tienen este bloque. La memoria principal memoria Exclusiva) principal cuando este bloque sea la nica copia (Propiedad puede estar o no actualizada reemplazado

SM
SM: Shared Modified
Dragn de Xerox PARC (1984) Sun SparcServer (1997)

47

Protocolo Dragn: actualizacin 4 estados (2)

Eventos Procesador

PrRd / PrWr PrRdMiss / PrWrMiss BusRd / BusWB / Flush BusUpd (Nueva)

Transacciones del Bus


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

Seal S

Para soportar el estado Exclusivo (igual que MESI)

48

Protocolo Dragn: actualizacin 4 estados (3)


BusRd/

E
PrRdMiss (S) / BusRd BusRd/

SC
PrRdMiss (S) / BusRd

BusRd/Flush

SM

49

BusRd/Flush

Protocolo Dragn: actualizacin 4 estados (4)


BusUpd/ Actualizacin

BusUpd/ PrWr/ Actualizacin

SC
PrWr/BusUpd(S) PrWr/ BusUpd(S)

Broadcast de la palabra modifica a todos los procesadores para que se actualicen las caches relevantes PrWrMiss/ BusRd(S); BusUpd

SM

PrWr/BusUpd(S)

PrWrMiss/ BusRd(S);BusUpd

PrWr/ PrWr/BusUpd(S)
50

Protocolo Dragn: actualizacin 4 estados (5)

Reemplazo de un bloque en estado SC o SM

Debe hacerse un broadcast al resto de las controladores para informar de dicho reemplazo (Transaccin Reemplazo)?

En caso de que haya slo otra copia, permite que pase al estado E o M (no genera actualizaciones) Transaccin Reemplazo puede ser menos crtica que BusUpd

Estado SM

Puede eliminarse?

DEC Firefly: La transaccin BusUpd tambin actualiza la memoria El Protocolo Dragn asume que la actualizacin de SRAM caches es menos costosa que la actualizacin de memoria.

51

Protocolo Dragn: actualizacin 4 estados (6)


1. PrRd U P1 P2 P3

BusRd U

Memoria

U: 5

I/O

Seal shared (S) OR-cableada

Operacin P1 Lee U P3 Lee U P3 escribe U P1 Lee U 52 P2 Lee U

Estado P1

Estado P2

Estado P3

Transaccin Datos Bus Suministrados BusRd Memoria

Protocolo Dragn: actualizacin 4 estados (7)


P1 P2 P3 2. PrRd U

E U SC

U SC

BusRd U

Memoria

U: 5

I/O

Seal shared (S) OR-cableada

Operacin P1 Lee U P3 Lee U P3 escribe U P1 Lee U 53 P2 Lee U

Estado P1 E SC

Estado P2

Estado P3 SC

Transaccin Datos Bus Suministrados BusRd BusRd Memoria Memoria

Protocolo Dragn: actualizacin 4 estados (8)


P1 P2 P3 3. PrWr U

U SC

7 5

U SM SC

5 7

BusUpd

Memoria

U: 5

I/O

Seal shared (S) OR-cableada

Operacin P1 Lee U P3 Lee U P3 escribe U P1 Lee U 54 P2 Lee U

Estado P1 E SC SC

Estado P2

Estado P3 SC SM

Transaccin Datos Bus Suministrados BusRd BusRd BusUpd Memoria Memoria Cache P3

Protocolo Dragn: actualizacin 4 estados (9)


4. PrRd U P1 P2 P3

U SC

U SM

Memoria

U: 5

I/O

Seal shared (S) OR-cableada

Operacin P1 Lee U P3 Lee U P3 escribe U P1 Lee U 55 P2 Lee U

Estado P1 E SC SC SC

Estado P2

Estado P3 SC SM SM

Transaccin Datos Bus Suministrados BusRd BusRd BusUpd Memoria Memoria Cache P3 Cache P1

Protocolo Dragn: actualizacin 4 estados (10)


P1 P2 5. PrRd U P3

U SC

U SC

U SM

BusRd U

Memoria

U: 5

I/O

Seal shared (S) OR-cableada

Operacin P1 Lee U P3 Lee U P3 escribe U P1 Lee U 56 P2 Lee U

Estado P1 E SC SC SC SC

Estado P2 SC

Estado P3 SC SM SM SM

Transaccin Datos Bus Suministrados BusRd BusRd BusUpd BusRd Memoria Memoria Cache P3 Cache P1 Cache P3

Invalidacin vs Actualizacin

(1)

Patrn 1
for i = 1 to k P1(write, x); P2-PN-1 (read, x); end for I

una escritura antes de lectura

Patrn 2
for i = 1 to k for j = 1 to m P1 (write, x); end for j P2 (read, x); end for i

varias escrituras antes de lectura

57

Invalidacin vs Actualizacin

(2)

Patrn 1

N = 16, M = 10, K = 10 Actualizacin


Iteracin 1: N fallos de cache (70 bytes) Iteraciones restantes: 1 actualizacin/iteracin (14 bytes; 6 cntrl, 8 datos) Trfico total = 16*70 + 9*14 = 1246 bytes Iteracin 1: N fallos de cache (70 bytes) Iteraciones restantes: P1 invalida (6bytes, BusUpgrd), los otros producen fallos de lectura (70bytes) Trfico total = 16*70 + 9*6 + 15*9*17 = 10,624 bytes

Invalidacin

58

Invalidacin vs Actualizacin

(3)

Patrn 2

N = 16, M = 10, K = 10 Actualizacin

Iteracin 1: 2 fallos de cache (70 bytes), M actualizaciones (14 bytes; 6 cntrl, 8 datos) Iteraciones restantes: M actualizacin/iteracin Trfico total = 2*70 + 10*14 = 1540 bytes Iteracin 1: 2 fallos de cache (70 bytes) Iteraciones restantes: P1 invalida (6bytes, BusUpgrd), P2 produce fallo de lectura (70bytes) Trfico total = 2*70 + 9*(70+6) = 824 bytes

Invalidacin

59

Invalidacin vs Actualizacin

(4)

Qu sucede en cargas de trabajo reales?

Los protocolos de actualizacin pueden generar demasiado trfico Es posible reducir/limitar actualizaciones (Competitive Snooping)

Actualmente

Protocolos de actualizacin son difciles de implementar correctamente ( problema consistencia) Se utilizan raramente Puede suceder lo mismo que ahora Los multiprocesadores en un chip pueden hacerlos ms atractivos

En un futuro

Ms ancho de banda (intra-chip) Ms fcil predecir comportamiento (temporizacin)

60

Coherencia cache escalable

Esquema
Multiprocesadores escalables Coherencia cache Protocolos basados en Directorio Organizacin del Directorio

Directorios planos basados en memoria Directorios planos basados en cache

Esquema de Directorio simple Resumen

61

Multiprocesadores Escalables (1)

Escalabilidad

Ancho de banda de la memoria debe aumentar con el nmero de procesadores

Solucin Natural: Memoria Distribuida

Ancho de banda red de interconexin escalable (latencia razonable)


Facilidades de Expansin

62

Multiprocesadores Escalables (2)


Escalabilidad

P1

Switch

Pn P1
$

Primer Nivel $
Memoria Principal Cache Compartida

Pn
$

Bus Compartido Dance-hall

Red de Interconexin
Mem Mem

P1
Mem $ Mem

Pn
$

UMA, SMP

Red de Interconexin Escalable NUMA: Memoria Distribuida


63

Multiprocesadores Escalables (3)

Escalabilidad: Arquitectura NUMA


P1
Mem $ Mem

Pn
$

Memoria Distribuida Red de Interconexin Escalable

Conexiones punto a punto

Red de Interconexin Escalable NUMA: Acceso a Memoria no Uniforme

Fallos:

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

Desafo: Arquitectura cc-NUMA

Mantener coherencia mediante hw con granularidad de bloque cache al igual que en las mquinas basadas en bus Aproximaciones ms utilizadas:

Protocolos basados en Directorio Snoopy Jerrquico Jerarqua de 2 niveles

64

Protocolos basados en Directorio (1)

Coherencia cache mediante Directorios


El orden total lo impone acceso al directorio

No sirve el arbitraje del bus


Estado en memoria Estado en Caches: Informacin Local

Cada bloque de memoria tiene asociado


En caso de que se produzca un fallo es necesario: Comunicacin con el directorio


Bsqueda de bloque Comunicacin con los nodos Propagacin
Comunicaciones punto-a-punto No es necesario broadcast de direcciones de memoria
65

Protocolos basados en Directorio (2)


Escalabilidad determinada por:

Rendimiento

Demanda de BW (Trfico): Transacciones de red por fallo

(multiplicado por la frecuencia de fallos) Latencia: Transacciones red en camino crtico del fallo (espera)

Estos dos factores dependen de


La organizacin del directorio Cmo est optimizado el flujo de transacciones de red

Sobrecarga de memoria

Depende de la organizacin del directorio

66

Organizacin del Directorio (1)

Esquemas de Directorio

Centralizado Como Encontrar la Informacin de Directorio:

Distribuido

Plano

Jerrquico

Como Localizar las copias:

Basados en Mem.

Basados en Cache

67

Organizacin del Directorio (2)

Esquema Jerrquico

Informacin en estructura de datos jerrquica

Nodos de procesamiento

Directorio (level-1)

Directorio (level-2)

68

Organizacin del Directorio (3)


Ventajas de directorios jerrquicos
Fallo a bloque con origen lejano: Ms rpido

Problemas
Transacciones ms numerosas que en directorios planos Requisitos de latencia y ancho de banda mucho mayores

69

Organizacin del Directorio (4)


Esquema Plano
Informacin del bloque en lugar fijo (nodo home/origen)
Direccin del bloque (hashing)

Fallo: Transaccin al nodo origen para consultar el directorio

Esquema Plano Basado en Memoria


Informacin de bloque en el nodo origen (home) del bloque
Stanford DASH/FLASH, SGI Origin, MIT Alewife, HAL

Esquema Plano Basado en Cache


Informacin de bloque distribuida entre copias IEEE SCI, Sequent NUMA-Q
70

Directorios planos basados en memoria (1)


Red de Interconexin N

P1
$
Memoria Memoria

PN
$ M

Bits de Presencia

Directorio Bit de Modificacin

Directorio:

1 bit de presencia por nodo Estado: uno o ms bits

Ms simple: un nico bit (bit de modificacin)

71

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

Directorios planos basados en memoria (2)

Funcionamiento del protocolo:

Supongamos:

Estados en cache MSI, 1 nivel de cache, 1 procesador por nodo Comprobar a que memoria hay que acceder. Si local, acceder directamente. Si remota, establecer comunicacin con ella. 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 comunicacin con el nodo. En el nodo se pasa el estado a Shared, y se enva el dato.

Nodo i: Fallo de lectura/escritura.


1.

2.

3.

En la memoria, si fallo de escritura:


1. Dirty_bit=OFF La memoria enva la lista de nodos que tienen el bloque (en nodos se cambia el estado a Invlido). Adems 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 enve a la cache i. Se invalida la copia de ese nodo que tiene el bloque. Adems, se actualiza cada bit_presencia y deja dirty_bit a ON.

72

4.

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

Directorios planos basados en memoria (3)

Fallo de lectura sobre Bloque Shared

Home

RdRequest
2

RdReply

Local

73

Directorios planos basados en memoria (4)

Fallo de lectura sobre Bloque Modified


4 HOP TRANSACTION

Home
2

RdReq Owner
4 Revision

Local

WB

Intervention: Donwngrade, send me, WB


4 Data

Owner

74

Directorios planos basados en memoria (5)


Fallo de escritura sobre Bloque Shared

Home
2

RdXReq ReaderList
3

Reader
Invalidate
4

Local
ack

Reader
75

Directorios planos basados en memoria (6)

Fallo de escritura sobre Bloque Modified


4 HOP TRANSACTION

Home
2

RdXReq Owner
4 Revision
3 Transfer Owner

Local

4 OwnerShip

Owner

76

Hacer ejemplo de folios

77

Directorios planos basados en memoria (7)


Rendimiento en las Escrituras (mensajes de invalidacin)

Mensajes (BW): proporcional nodos que comparten el bloque Mensajes en camino crtico (Latencia): Todos disponibles en nodo origen Envo en paralelo VENTAJA

PROBLEMA !! : Sobrecarga de almacenamiento:


M bloques de memoria: proporcional a Nproc* M Tamao de lnea: 64 bytes

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

78

Directorios planos basados en cache (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

Memoria Principal (Home)

Nodo cabecera
P P

Nodo 1 P

Nodo 2

Cache
79

Cache

Cache

Directorios planos basados en cache (2)

Fallo de lectura:

Nodo enva peticin al nodo origen de ese bloque para determinar la identidad del nodo cabecera Nodo origen responde con la identidad del nodo cabecera Nodo enva solicitud insercin 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 Eliminacin de la lista

Complejo: coordinacin con nodo anterior y posterior

80

Directorios planos basados en cache (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 envan al nodo que realiza la escritura

Los datos, si no los tena 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 invalidacin)

Nmero de mensajes (BW): proporcional al nmero de nodos que comparten el bloque (semejante a los basados en memoria), pero estn distribuidos Nmero de mensajes en el camino crtico (Latencia): tambin es proporcional al nmero de nodos que comparten el bloque (los mensajes se serializan). Esto es peor que en los de memoria !!

81

Hacer Ejemplo de folios

Directorios planos basados en cache (4) Ventajas con esquemas basados en memoria
Menor sobrecarga de directorio.

Punteros siguiente y anterior:


Proporcional al nmero de bloques de cache en la mquina (mucho menor que el nmero 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

82

Escalabilidad Directorio

Para mejorar el rendimiento, a nivel de protocolo, pretendemos:

Reducir la demanda de BW Reducir el nmero de transacciones generadas por cada operacin de memoria. Reducir la latencia de cada operacin Reducir el nmero de operaciones del camino crtico. Reducir la ocupacin del directorio Tipo de organizacin.

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.
Protocolos basados en memoria El tamao del directorio es proporcional al nmero de bloques de memoria. Protocolos basados en cache El tamao del directorio es proporcional al nmero de bloques de cache.

Por ejemplo:

83

Sobrecarga Memoria Cmo reducir la sobrecarga del directorio?

Estrategia 1: Stanford DASH


Incrementar el tamao de bloque Utilizar nodos multiprocesador (solo 1 bit por nodo)

Estrategia 2: Reduccin 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

Estrategia 3: Reduccin de Altura (Reducir el nmero de

entradas del directorio) Slo una fraccin muy pequea de los bloques de la memoria estarn replicados en las caches en un momento dado Organizar el directorio como una cache
84

Posible mejora en protocolo basado en memoria

Intervention & Reply Forwarding: Obtener Bloque Modificado


Reduccin del nmero de mensajes (de 5 a 4) Reduccin de mensajes en camino crtico (de 4 a 3).
3 HOP TRANSACTION

RdReq /RdXReq
4

Home
3 2 Revision Intervention (ID local)

Data

Local

3
85

Data/ OwnerShip

Owner

You might also like