Transcript Coherencia

Multiprocesadores
Coherencia, Consistencia y Sincronización.

2
Bibliografí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”
Alternativas de implementación
(1)
Escalabilidad
P1
Switch
Pn
Primer Nivel $
Memoria
Principal
P1
Pn
$
$
• Bus Compartido
• Dance-hall
Red de Interconexión
Cache Compartida
-Entrelazadas (2-8)
(e.g. Alliant FX-8,
Encore& Sequent)
Mem
Mem
Memoria Compartida
(SMP, UMA)
Pn
P1
Mem
$
Mem
$
Red de Interconexión
Escalable
3
Memoria Distribuida (NUMA)
Alternativas de implementación
(2)
SMP basado en Bus Compartido
Mayor éxito
(multitarea y grano fino)
P1
Pn
$
$
Bus
Memoria
4

Servidores

Estaciones de trabajo

Bloques de construcción básicos
sistemas de gran escala

Soporte en microprocesadores de
propósito general
Problemas
E/S
Coherencia
Ancho de Banda limitado
Modelo 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
Match
Receive Y, P, t
Addr ess Y
Send X, Q, t
Addr ess X
5
Local pr ocess
addr ess space
Local pr ocess
addr ess space
Process P
Process Q
Jerarquí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
6
Variables Compartidas
Problema de la coherencia cache
(P1) Load U
(P3) Load U
(P3) Store U
(P1) Load U
(P2) Load U
P
Load U
1
Load U
P
2
U=?
$
4
3
3
U=?
$
5
U: 5
$
U: 5
Store U
U: 7
2
Load U
P
U: 5
1
Load U
Dispositivos
I/O
Memoria
Protocolos de coherencia de cache
7
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 través de dispositivos DMA:


Salida de dato obsoleto (cache post-escritura)
Entrada de dato que no tenga efecto (acierto de cache)
L2
DL1
MMu
Memoria
DMA
Controlador
I/O
8
Soluciones de Grano Grueso

Soluciones uniprocesador

Evitar usar la cache



Segmentos de memoria involucrados en E/S se marcan como “NoCacheables”
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

9
(2)
Tráfico de E/S pasa por todos los niveles de la jerarquía de memoria.
Soluciones de Grano Grueso

(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
10
Sistema de Memoria Coherente
(1)
¿Qué significa que un sistema de memoria es
coherente? (Definición menos formal)
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
11
Sistema de Memoria Coherente

(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
U
12
Orden hipotético
Px: Load U
Py: Load U
.
.
.
Px: Store U
Pz: Load U
Sistema de Memoria Coherente
(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
13
Políticas para mantener la coherencia
(1)
Políticas para mantener la coherencia
Invalidación en Escritura
14
Actualización en Escritura
Políticas para mantener la coherencia

(2)
Invalidación en Escritura / Coherencia Dinámica

Al escribir en un bloque se invalidan todas las otras copias


Escrituras consecutivas a un bloque (no palabra) desde el mismo
procesador se realizan localmente



Múltiples lectores, un solo escritor
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

15
Ejemplo del H&P
Políticas para mantener la coherencia

Actualización en Escritura

Al escribir en un bloque se actualizan todas las copias



16
Escritura directa (write-through), pocos procesadores
Escrituras consecutivas requieren múltiples actualizaciones (write
merge)
Fallo de Lectura


(3)
Se busca en la memoria  siempre esta actualizada
Ejemplo del H&P
Políticas para mantener la coherencia

(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.
Buses: Protocolo Snoopy
Observación del Bus

En otro caso

La actualización se envía ú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
Bus
CPU
Ld/St
°°°
Transacciones
Relevantes
Controlador de Cache + CACHE
Sólo es necesario extender la funcionalidad del controlador de cache
18
Procolos Snoopy

El controlador de cache puede por tanto:





19
(2)
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
Procolos Snoopy

(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
Acciones asociadas
Estado de un bloque en MEMORIA
20
S2
Procolos Snoopy

(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
Acciones asociadas
p1 p2
21
pN
Vector de Estados de un bloque en MEMORIA
S2
Protocolo Snoopy de 2 Estados

Un único nivel de cache.



(1)
Escritura Directa (write-through)
Sin Asignación en Escritura (write non-allocate)
Política de Invalidación
Lectura / -Escritura / Memoria
Diagrama de Estados en
Uniprocesador


Inicial : bloques inválidos
Lectura : Inválido  Válido


22
V
Fallo Lectura
/ Memoria
Puede generar reemplazamiento
Escritura : no cambia el estado
I
Escritura / Memoria
Protocolo Snoopy de 2 Estados

Un único nivel de cache.



(2)
Escritura Directa (write-through)
Sin Asignación en Escritura (write non-allocate)
Política de Invalidación
PrRd / -PrWr / BUS_Wr
Diagrama de Estados en
Protocolo Snoopy



Lecturas: PrRd
Escrituras: PrWr
Transacciones del BUS:
 BUS_Rd
 BUS_Wr
Ejemplo de folios
23
V
Pr_Rd / BUS_Rd
BUS_Wr /--
I
PrWr / BUS_Wr
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 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.
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 estarían también serializadas

25
Volver sobre el ejemplo de folios
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 sólo puede soportar 4
procesadores sin saturarse
Solución: utilizar post-escritura (Write-back),
más compleja la propagación y serialización…
26
Recordatorio: caches write-back

Clave para un uso eficiente del ancho de banda del bus:



(1)
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
27
Recordatorio: caches write-back
(2)
PrWr/—
Acierto Escritura
PrRd/—
M
PrWr/—
Acierto Escritura
PrWr/BusRd
Fallo Escritura
PrRd/BusRd
V
PrRd/—
I
28

Hacer ejemplo folios
Replace/
—
Replace/BusWB
Protocolo MSI: invalidación de 3 estados


Extensión del protocolo de monoprocesador a
multiprocesador  MSI
Tres estados:




PrRd y PrWr
Transacciones de bus


29
Invalido (o no presente)
Compartido (shared)
Modificado (modified)
Peticiones del procesador


(1)

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.
Protocolo MSI: invalidación de 3 estados
1.
2.
3.
Valido: Shared
Modificado: Exclusivo
Nueva transacción: BusRdx
(Lectura con Invalidación)
(3)
PrWr/—
PrRd/—
M
PrWr/ BusRdX


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 PrRd/BusRd
nadie
BusRd/
Flush
S
PrWr/BusRdX



30
El bloque está presente en la
cache y no ha sido modificado
La memoria está actualizada
Otras caches adicionales pueden
tener copia
Replace /
Flush
BusRdX /
Flush
BusRdX/-
PrRd /—
BusRd/—
I
Protocolo MSI: invalidación de 3 estados
P1
U
P2
3. PrWr U
P3
5
SI
(4)
U S
M
5
7
BusRdX U
I/O
U: 5
Memoria
Operación
Estado P2
Estado P3
Transacción
Datos
Bus
Suministrados
Memoria
BusRd
P1 Lee U
S
—
—
P3 Lee U
S
—
S
BusRd
P3 escribe U
I
—
M
BusRdX
(BusUpg)
P1 Lee U
31
Estado P1
P2 Lee U
Memoria
Memoria
(ignorados)
Protocolo MSI: invalidación de 3 estados
P1
4. PrRd U
U
S
I
P2
(5)
P3
S
U M
7
7
Flush U
BusRd U
I/O
U: 5 7
Memoria
Operación
32
Estado P1
Estado P2
Estado P3
Transacción
Datos
Bus
Suministrados
Memoria
BusRd
P1 Lee U
S
—
—
P3 Lee U
S
—
S
BusRd
P3 escribe U
I
—
M
BusRdX
(BusUpg)
Memoria
(ignorados)
P1 Lee U
S
—
S
BusRd
Cache P3
P2 Lee U
Memoria
Protocolo MSI: invalidación de 3 estados
P1
U
S
P2
U S
7
P3
5. PrRd U
7
(6)
U S
7
BusRd U
I/O
U: 7
Memoria
Operación
33
Estado P1
Estado P2
Estado P3
Transacción
Datos
Bus
Suministrados
Memoria
BusRd
P1 Lee U
S
—
—
P3 Lee U
S
—
S
BusRd
P3 escribe U
I
—
M
BusRdX
(BusUpg)
Memoria
(ignorados)
P1 Lee U
S
—
S
BusRd
Cache P3
P2 Lee U
S
S
S
BusRd
Memoria
Memoria

34
Hacer ejemplo 5-2, pg. 267 de Culler
Protocolo MSI: Decisiones de bajo nivel

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)



Shared



Patrón 1: el procesador “original” vuelve a
realizar una lectura del bloque
Patrón 2: el procesador “nuevo” realiza una
escritura del bloque
BusRd/
Envio
S
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
35
M
I
BusRd /
Envio
Protocolo MESI: Invalidación de 4 estados

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.
I
S
BusRd
36
(1)
M
BusRdX
Protocolo MESI: Invalidación de 4 estados

Protocolo MESI

4 Estados :






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:



37
(M) Modificado,
(E) Exclusivo,
(S) Compartido e
(I) Inválido
Nuevo estado (Exclusive Clean / Exclusive)


(2)
Pentium
Power PC 601
MIPS R4400 (procesador usado en los multiprocesadores de
Silicon Graphics)
Protocolo MESI: Invalidación de 4 estados
(S): se activa la
señal share
M
BusRdX: Lectura
exclusiva
PrWr/
PrRd (S)/
BusRd
! Sólo nuevas
transiciones !
E
PrRd/-
PrRd (S) /
BusRd
BusRdX/-
S
I
38
(3)
BusRd/-

Hacer ejemplo que viene a continuación:



39
Insistir en OR-cableada
Insistir en ventaja de MESI sobre MSI  Ejemplo
Ejemplo de folios
Protocolo MESI: Invalidación de 4 estados
P1
1. PrRd U
U
P2
P3
5
E
BusRd U
I/O
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
40
P2 Lee U
Señal shared (S)
OR-cableada
U: 5
Memoria
Operación
(4)
Estado P1
E
Estado P2
Estado P3
—
—
Transacción
Datos
Bus
Suministrados
Memoria
BusRd
Protocolo MESI: Invalidación de 4 estados
P1
U
P2
P3
U S
S
E
BusRd U
41
Estado P1
Estado P2
Estado P3
E
—
—
P3 Lee U
S
—
S
P1 Lee U
P2 Lee U
Señal shared (S)
OR-cableada
U: 5
P1 Lee U
P3 escribe U
2. PrRd U
5
I/O
Memoria
Operación
(5)
Transacción
Datos
Bus
Suministrados
Memoria
BusRd
BusRd
Memoria
Protocolo MOESI: invalidación de 5 estados

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:


42
(1)
BusRd B
BusRdX B
Protocolo MOESI: invalidación de 5 estados

Estados





M - Modified (dirty)
O - Owned (dirty y compartido)
E - Exclusive (sin modificar ni compartir)
S - Shared
I - Invalid
S
O
Propiedad
M
Validez
E
Exclusividad
I
43
(2)
Protocolo MOESI: invalidación de 5 estados
Flush’: se envia el
bloque a otra cache
(3)
M
PrWr/
BusRdX
BusRd/
Flush’
O
BusRd/Flush’
PrRd/ ―
E
PrRd/
BusRd
S
I
44
Nota: solo nuevas transiciones
BusRdX/
Flush’

45
Hacer ejemplo de folios
Problema 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
Proceso 0
Proceso 1
while(true){
while(true){
while (flag != 0);
}
while (flag != 1);
do_work_P0()
do_work_P1()
flag=1;
flag=0;
}
¿Cuantas transacciones son necesarias en un protocolo de invalidación?
46
Protocolo Dragón: actualización 4 estados (1)
SC: Shared Clean
E
SC
Yo y otrosYo
pero
la memoria, soy el propietario
y lano
memoria
Yo,
otros
y puede
Yo y
nadie
más que la memoria, pero
Potencialmente
2 nomás
procesadores
no soy el propietario
El bloque
ha
sido
modificado ytienen
sólo este
Solo
Memoria
memoria
principal
no está actualizada y
NP
El bloque habloque.
sido La
modificado,
lacon copia
hay
una cache
Potencialmente
2 actualizada
o procesador
más procesadores
este
es responsable
de actualizar la
memoria no está
y esta
es
Estado Implícito
tienen
este
bloque.
La
memoria
principal
memoria Exclusiva)
principal cuando este bloque sea
la única copia (Propiedad
puede estar o no
actualizada
reemplazado
SM
M
SM: Shared Modified
47
Dragón de Xerox PARC (1984)
Sun SparcServer (1997)
Protocolo Dragón: actualización 4 estados (2)

Eventos Procesador



PrRd / PrWr
PrRdMiss / PrWrMiss
Transacciones del Bus


BusRd / BusWB / Flush
BusUpd (Nueva)


Señal S

48
Broadcast de la palabra modifica a todos los procesadores para que
se actualicen las copias
Para soportar el estado Exclusivo (igual que MESI)
Protocolo Dragón: actualización 4 estados (3)
BusRd/—
E
SC
BusRd/—
PrRdMiss (S) /
BusRd
PrRdMiss (S) /
BusRd
BusRd/Flush
SM
49
BusRd/Flush
M
Protocolo Dragón: actualización 4 estados (4)
BusUpd/
Actualización
E
BusUpd/
PrWr/— Actualización
Broadcast de la palabra modifica a
todos los procesadores para que se
actualicen las caches relevantes
PrWrMiss/
BusRd(S);
BusUpd
SM
PrWr/BusUpd(S)
SC
PrWr/BusUpd(S)
PrWr/
BusUpd(S)
M
PrWrMiss/
BusRd(S);BusUpd
PrWr/—
PrWr/BusUpd(S)
50
Protocolo Dragón: actualización 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 (Transacción Reemplazo)?



Estado SM

¿Puede eliminarse?


51
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
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.
Protocolo Dragón: actualización 4 estados (6)
P1
1. PrRd U
U
P2
P3
5
E
BusRd U
U: 5
Memoria
Operación
P1 Lee U
P3 Lee U
P3 escribe U
P1 Lee U
52
P2 Lee U
I/O
Estado P1
E
Estado P2
Estado P3
—
—
Señal shared (S)
OR-cableada
Transacción
Datos
Bus
Suministrados
BusRd
Memoria
Protocolo Dragón: actualización 4 estados (7)
P1
E
U SC
P2
P3
U SC
5
5
BusRd U
Operación
E
P3 Lee U
SC
P1 Lee U
53
Estado P1
P1 Lee U
P3 escribe U
P2 Lee U
I/O
U: 5
Memoria
2. PrRd U
Señal shared (S)
OR-cableada
Estado P2
Estado P3
—
—
BusRd
Memoria
SC
BusRd
Memoria
—
Transacción
Datos
Bus
Suministrados
Protocolo Dragón: actualización 4 estados (8)
P1
U SC
P2
P3
U SM
SC
75
BusUpd
Operación
Estado P3
—
—
BusRd
Memoria
SC
BusRd
Memoria
BusUpd
Cache P3
E
P3 Lee U
SC
—
SC
—
P1 Lee U
P2 Lee U
Señal shared (S)
OR-cableada
Estado P2
P1 Lee U
P3 escribe U
54
Estado P1
75
I/O
U: 5
Memoria
3. PrWr U
SM
Transacción
Datos
Bus
Suministrados
Protocolo Dragón: actualización 4 estados (9)
4. PrRd U
P1
U SC
U SM
Señal shared (S)
OR-cableada
I/O
U: 5
Estado P1
7
Estado P2
Estado P3
Transacción
Datos
Bus
Suministrados
—
—
BusRd
Memoria
SC
BusRd
Memoria
P1 Lee U
E
P3 Lee U
SC
—
SC
—
SM
BusUpd
Cache P3
SC
—
SM
—
Cache P1
P3 escribe U
P1 Lee U
55
P3
7
Memoria
Operación
P2
P2 Lee U
Protocolo Dragón: actualización 4 estados (10)
P1
U SC
P2
U SC
7
5. PrRd U
7
U SM
BusRd U
Operación
Señal shared (S)
OR-cableada
Estado P2
Estado P3
Transacción
Datos
Bus
Suministrados
—
—
BusRd
Memoria
SC
BusRd
Memoria
P1 Lee U
E
P3 Lee U
SC
—
SC
—
SM
BusUpd
Cache P3
P1 Lee U
SC
—
SM
—
Cache P1
P2 Lee U
SC
SC
SM
BusRd
P3 escribe U
56
Estado P1
7
I/O
U: 5
Memoria
P3
Cache P3
Invalidación vs Actualización

Patrón 1
for i = 1 to k
P1(write, x);
P2-PN-1 (read, x);
end for I

una escritura antes de lectura
Patrón 2
for i = 1 to k
for j = 1 to m
P1 (write, x);
end for j
P2 (read, x);
end for i
57
(1)
varias escrituras antes de lectura
Invalidación vs Actualización

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



58
(2)
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
Invalidación vs Actualización

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



59
(3)
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
Invalidación vs Actualización

¿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


60
(4)
Más ancho de banda (intra-chip)
Más fácil predecir comportamiento (temporización)
Coherencia 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

61
Multiprocesadores Escalables (1)

Escalabilidad

Ancho de banda de la memoria debe aumentar con el
número de procesadores

62
Solución Natural: Memoria Distribuida

Ancho de banda red de interconexión escalable
(latencia razonable)

Facilidades de Expansión
Multiprocesadores Escalables (2)
Escalabilidad
P1
Switch
Pn
Primer Nivel $
Memoria
Principal
P1
Pn
$
$
• Bus Compartido
• Dance-hall
Red de Interconexión
Cache Compartida
Mem
Mem
UMA, SMP
Pn
P1
Mem
$
Mem
$
Red de Interconexión
Escalable
NUMA: Memoria Distribuida
63
Multiprocesadores Escalables (3)

Escalabilidad: Arquitectura NUMA


Memoria Distribuida
Red de Interconexión Escalable


Fallos:




Mem
$
Mem
$
Red de Interconexión
Escalable
NUMA: Acceso a Memoria
no Uniforme
Saber estado bloque en otras caches
Si necesario, localizar copias (invalidarlas)
Comunicarse con las otras copias: obtener datos, invalidarlas/actualizarlas
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:



64
Conexiones punto a punto
Pn
P1
Protocolos basados en Directorio
Snoopy Jerárquico
Jerarquía de 2 niveles
Protocolos basados en Directorio (1)

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
 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
65
Protocolos basados en Directorio (2)
 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
–
–

Sobrecarga de memoria

66
La organización del directorio
Cómo esté optimizado el flujo de transacciones de red
Depende de la organización del directorio
Organización del Directorio (1)
Esquemas de Directorio
Centralizado
Como Encontrar la
Información de Directorio:
Como Localizar las
copias:
67
Plano
Basados en Mem.
Distribuido
Jerárquico
Basados en Cache
Organización del Directorio (2)

Esquema Jerárquico

Información en estructura de datos jerárquica
Nodos de procesamiento
Directorio (level-1)
Directorio (level-2)
68
Organización del Directorio (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
69
Organización del Directorio (4)
 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
70
Directorios planos basados en memoria (1)
N
Red de Interconexión
P1
PN
$
$
Bits de Presencia
M
Memoria
Memoria
••
• •
•
•
Directorio
Bit de Modificación
 Directorio:

1 bit de presencia por nodo

Estado: uno o más bits

71
Más simple: un único bit (bit de modificación)
 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
Nodo i: Fallo de lectura/escritura.
1.
2.
Comprobar a que memoria hay que acceder. Si local, acceder
directamente. Si remota, establecer comunicación 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
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.
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
1
RdRequest
2
RdReply
Local
73
Directorios planos basados en memoria (4)

Fallo de lectura sobre Bloque Modified
4 HOP TRANSACTION
1
Home
RdReq
2
Owner
Local
WB
3
Intervention:
Donwngrade, send me, WB
4 Data
74
4 Revision
Owner
Directorios planos basados en memoria (5)
 Fallo de escritura sobre Bloque Shared
1
Home
RdXReq
Reader
2
ReaderList
3
Invalidate
Local
4
ack
Reader
75
Directorios planos basados en memoria (6)

Fallo de escritura sobre Bloque Modified
4 HOP TRANSACTION
1
Home
RdXReq
2
Owner
Local
4 Revision
3 Transfer Owner
4 OwnerShip
76
Owner

77
Hacer ejemplo de folios
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



78
64 nodos: sobrecarga del directorio 12.5%
256 nodos: sobrecarga del directorio 50%
1024 nodos: sobrecarga del directorio 200%
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
79
Nodo 1
Nodo 2
P
P
P
Cache
Cache
Cache
Directorios planos basados en cache (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

80
Complejo: coordinación con nodo anterior y posterior
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 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)


81

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
Directorios planos basados en cache (4)
 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)
82

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
Escalabilidad Directorio

Para mejorar el rendimiento, a nivel de protocolo,
pretendemos:




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:


83
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.
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.
Sobrecarga 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 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
 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
84
Posible mejora en protocolo basado en memoria

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).
3 HOP TRANSACTION
1
Home
RdReq
/RdXReq
Data
4
3
2
Revision
Intervention
(ID local)
Local
3
85
Data/
OwnerShip
Owner