Transcript tema 7

Arquitecturas Paralelas
7.
Coherencia de Datos en
computadores DSM
- Introducción
- Directorios de coherencia: MP/MC
- Problemas: tráfico y atomicidad
- Protocolo de coherencia Origin
- Protocolo SCI (NUMA-Q)
Arquitecturas Paralelas
IF - EHU
CD-DSM Introducción
 Coherencia de los datos en sistemas de memoria
compartida SMP (red de comunicación, un bus)
> Snoopy
> Estados / estados transitorios...
 ¿Y en sistemas DSM (mallas...)?
> La memoria es compartida, pero está
físicamente distribuida entre los nodos del
sistema.
> La red no es un bus. Por tanto, snoopy ??
Arquitecturas Paralelas
IF - EHU
7
2
CD-DSM Introducción
7
 ¿Cómo se mantiene la coherencia de los datos en
los sistemas DSM?
▪ El hardware no asegura la coherencia de los
datos (es responsabilidad del programador):
→ NUMA
▪ El hardware sí asegura la coherencia de los
datos:
→ cc-NUMA
¿Cómo? Directorios de coherencia.
Arquitecturas Paralelas
IF - EHU
3
CD-DSM Introducción
 El directorio de coherencia guarda información sobre
los bloques de datos:
- estado (estables o transitorios)
- dónde están las copias
 El directorio está repartido entre los procesadores
(no es un dispositivo “central”).
 Problemas:
- tamaño del directorio.
- tráfico generado para mantener la coherencia.
- atomicidad de las operaciones.
Arquitecturas Paralelas
IF - EHU
7
4
CD-DSM Introducción
7
 Lugar y estructura del directorio:
- junto a la MP, una palabra de coherencia por cada
bloque de datos:
▪ full bit vector
▪ limited bit vector
- distribuido entre las MC (+MP), formando listas
ligadas con la información de cada bloque:
▪ SCI, scalable coherent interface
Arquitecturas Paralelas
IF - EHU
5
7
CD-DSM Directorios de coher.: MP
6
1. Full bit vector (MESI)
Estructura del directorio
P0 P1 P2 P3 Es
- un bit por procesador (1/0)
para indicar si tiene o no
copia del bloque.
1 0 0 0-0
>E
1 0 1 0-0
>S
0 0 0 1-1
>M
0 0 0 0-0
>I
1 1 0 1-1
> no
- bits para indicar el estado
del bloque (los habituales).
Arquitecturas Paralelas
IF - EHU
(MESI)
CD-DSM Directorios de coher.: MP
 Problemas
El tamaño del directorio crece linealmente con el
número de procesadores.
- bloques de 64 bytes:
P = 64
→
P = 256
→
P = 1.024 →
Arquitecturas Paralelas
IF - EHU
65 bits
(8 bytes)
257 bits
(32 bytes)
1.025 bits (128 bytes) +200% !
7
7
7
CD-DSM Directorios de coher.: MP
8
 Para reducir el tamaño de la palabra de coherencia:
1. Usar bloques de datos “más grandes”
2. Reducir el número de nodos
(estructura jerárquica: snoopy SMP + directorio)
-
bloques de 128 bytes / 4 proc. por nodo:
P = 1.024 (256x4)
Arquitecturas Paralelas
IF - EHU
→
257 bits (32 bytes)
+25%
CD-DSM Directorios de coher.: MP
2. Limited bit vector
- se limita el número de copias de un bloque: sólo se
admiten k copias.
- se guardan en la palabra de coherencia de cada
bloque las direcciones (log2 P bits) de los
procesadores que tienen una copia:
@1, @2, ..., @k, estado
Arquitecturas Paralelas
IF - EHU
k × log2 P << P
7
9
CD-DSM Directorios de coher.: MP
- 4 procesadores por nodo
bloques de 128 bytes / 5 copias
P = 256 (64x4)
→ 5 x 6 + 1 = 31 bits ≈ 4 bytes
+ 3%
P = 1.024 (256x4) → 5 x 8 + 1 = 41 bits ≈ 5 bytes
+ 4%
Arquitecturas Paralelas
IF - EHU
7
10
7
CD-DSM Directorios de coher.: MP
1 bit por proc.
LD A
P
L
C
CC
MP
0 ... 1 ... 0
1
1
D
H
3
CC = controlador de comunic.
D = directorio de coherencia
L = local H = home R= remote
2
4
5
R
Arquitecturas Paralelas
IF - EHU
estado
M
S
11
7
CD-DSM Directorios de coher.: MP
otras dos copias
ST A
P
L
C
CC
MP
1 0… 0
1 …1
S
…0 00 M
1
D
3’
3
CC = controlador de comunic.
D = directorio de coherencia
L = local H = home R= remote
IF - EHU
H
2
4’
R2
4
R1
Arquitecturas Paralelas
estado
12
CD-DSM Directorios de coher.: MC
7
 Directorios en MC: estructura
La información sobre cada bloque de datos no se
concentra en una sola palabra en el directorio junto a
MP, sino que reparte entre el directorio junto a MP y
las caches, en los directorios de éstas.
La información de coherencia de cada bloque se
estructura en forma de listas ligadas.
Arquitecturas Paralelas
IF - EHU
13
CD-DSM Directorios de coher.: MC
 Información de coherencia (por bloque)
“MP” →
@cop1 / estado
MC →
@copi-1 / @copi+1 / estado
Arquitecturas Paralelas
IF - EHU
7
14
7
CD-DSM Directorios de coher.: MC
 ¿Cómo se organiza la información en colas ligadas?
MP
D
bl. datos
Pk
Pj
Pi
Home
(memoria principal)
Arquitecturas Paralelas
IF - EHU
*,Pj
bl. datos
Pi (cache)
Pi,Pk
*,Pk
bl. datos
Pj (cache)
Pj,*
*, *
bl. datos
Pk (cache)
15
CD-DSM Directorios de coher.: MC
7
P = 1.024 / MP = 128 MB / MC = 512 kB / bl = 128 bytes
1. MP
5 copias, 3 bits de estado
Palabra de coherencia: 5 x 10 + 3 = 53 bits
Directorio (nodo): 53 bit x 1 M bloque = 53 Mb
2. MC
En MP:
10 + 3 = 13 bits
En caches: 2 x 10 + 3 bit = 23 bits
Total (nodo): 13 x 1 M + 23 x 4 k = 13,1 Mb
Arquitecturas Paralelas
IF - EHU
16
CD-DSM Problemas: tráfico de coh.
 Mantener la coherencia debe generar el menor
tráfico posible, tanto de paquetes de control
como de paquetes de datos.
 Las operaciones de coherencia deben tener la
menor latencia posible.
 Para ello hay que
- Minimizar el número de mensajes (tráfico).
- Reducir el camino crítico (latencia) de la
operación.
Arquitecturas Paralelas
IF - EHU
7
17
CD-DSM Problemas: tráfico de coh.
7
 Tres protocolos para efectuar las operaciones de
coherencia:
1. Pregunta / Respuesta
2. Intervention Forwarding
3. Reply Forwarding
 Ejemplo: el procesador L lee una variable que no
está en su cache, y que corresponde a un bloque
sito en la memoria del procesador H, bloque que
está modificado en la cache del procesador R.
Arquitecturas Paralelas
IF - EHU
18
7
CD-DSM Problemas: tráfico de coh.
1. Pregunta / Respuesta
3. Petición
0100 / M
1. Petición
I
L
H
4b. Bloque
(actual.)
R
M
2. Respuesta
4a. Respuesta
(Bloque)
Arquitecturas Paralelas
IF - EHU
mensajes: 5
camino crítico: 4
19
7
CD-DSM Problemas: tráfico de coh.
2. Intervention Forwarding
0100 / M
2. Petición
1. Petición
I
L
H
4. Respuesta
(Bloque)
R
M
3. Respuesta
(Bloque)
mensajes: 4
camino crítico: 4
Arquitecturas Paralelas
IF - EHU
20
7
CD-DSM Problemas: tráfico de coh.
3. Reply Forwarding
0100 / M
2. Petición
1. Petición
I
L
H
3b. Bloque
(actual.)
3a. Respuesta
(Bloque)
Arquitecturas Paralelas
IF - EHU
R
M
mensajes: 4
camino crítico: 3
21
7
CD-DSM Problemas: atomicidad
 Las operaciones de coherencia tienen que
realizarse de forma atómica, sin interferencias
entre ellas.
2a
..1..1.. / S → ..1..0.. / M
1b. INV
1a. INV
S →M
R1
H
2b. Respuesta
Arquitecturas Paralelas
IF - EHU
?
R2
S → M??
22
CD-DSM Problemas: atomicidad
 Para asegurar la atomicidad
+ Hay que utilizar estados transitorios, busy, en
las caches y en el directorio.
+ Si no se pueden procesar las peticiones o son
incoherentes:
- se rechazan mediante paquetes tipo NACK.
- o se guardan en un búfer para procesarlas
más tarde.
Arquitecturas Paralelas
IF - EHU
7
23
CD-DSM Protocolos comerciales
 Dos ejemplos:
1. Computadores Origin → MP
2. Protocolo SCI (Numa-Q) → MC
Arquitecturas Paralelas
IF - EHU
7
24
CD-DSM Origin 2000
7
25
 Algunas características de los computadores Origin 2000
▪
▪
▪
512 nodos / 1.024 procesadores / hipercubo
Encaminamiento adaptativo / canales virtuales
Invalidación / MESI (en cache) / write-back
▪ Full bit vector / 7 estados en MP
I/S/E
cuidado: E = E o M (una copia única)
3 estados busy
1 para otras cosas
▪ Reply forwarding / NACK
▪ Paquetes de control: Rd / INV / RdEx / ACK / NACK / Wr
Arquitecturas Paralelas
IF - EHU
CD-DSM Origin 2000
 Hay que analizar tres operaciones para ver cómo
mantener la coherencia de los datos:
▪ Lectura de una variable (fallo)
▪ Escritura de una variable (acierto / fallo)
▪ Reemplazo de un bloque (actualizar MP)
Arquitecturas Paralelas
IF - EHU
7
26
7
CD-DSM Origin 2000
Lectura (fallo)
Dir. = I/S
2a
1b. Rd A
3
1a
I → busy → E/S
L
0000 / I → 0001 / E
H
2b. Bloque
Arquitecturas Paralelas
IF - EHU
1100 / S → 1101 / S
27
7
CD-DSM Origin 2000
Lectura (fallo)
Dir. = E
2a
4
1000 / E → 1001 / busy → 1001 / S
1b. Rd A
4
1a
I → busy → S
L
2b. Bloque
(espec.)
2c. Rd A (+@L)
H
3c.
ACK / Wr (Bl.)
3b. ACK / Bloque
Arquitecturas Paralelas
IF - EHU
R
3a
E/M → S
28
7
CD-DSM Origin 2000
Lectura (fallo)
Dir. = busy
1b. Rd A
1a
I → busy
L
H
2. NACK
Arquitecturas Paralelas
IF - EHU
xxxx / busy
29
7
CD-DSM Origin 2000
Escritura (acierto-INV / fallo-RdEx)
Dir.: busy
1b. INV A / RdEx A
1a
S/I → busy
L
H
2. NACK
Arquitecturas Paralelas
IF - EHU
xxxx / busy
30
7
CD-DSM Origin 2000
Escritura (acierto-INV / fallo-RdEx)
Dir.: S
1b. INV A / RdEx A
2a
1101 / S
→ 0001 / E
1100 / S
eficiencia
¡cuidado carreras!
2d. INV A (+@L)
2c. INV A
5
1a
S/I → busy → M
L
H
(+@L)
R1
2b. n.cop. / +Bloque
3b. ACK
Arquitecturas Paralelas
IF - EHU
3a
S→I
R2
4a
S→I
4b. ACK
31
7
CD-DSM Origin 2000
Escritura (acierto-INV / fallo-RdEx)
¡Ojo! carreras
Dir.: S
1b. INV A / RdEx A
1a
S/I → busy
L
Rd A (@R3)
?
→ 0011 / busy
2a
1101 / S
→ 0001 / E
1100 / S
2d. INV A (+@L)
2c. INV A
H
(+@L)
2b. n.cop. / +Bloque
R3
IF - EHU
R2
NACK
eficiencia:
guardar, no rechazar
Arquitecturas Paralelas
R1
R4
32
7
CD-DSM Origin 2000
Escritura (fallo-RdEx)
Dir.: E
2a
4
1000 / E → 0001 / busy → 0001 / E
2c. RdEx A (+@L)
1b. RdEx A
4
1a
I → busy → M
L
2b. n.cop. +
Bloque (espec.)
H
3c. ACK /
Wr (Bloque)
3b. ACK / Bloque
Arquitecturas Paralelas
IF - EHU
R
3a
E/M → I
33
7
CD-DSM Origin 2000
Escritura (acierto-INV)
Dir.: E
1b. INV A
1a
S → busy
L
H
2. NACK
Arquitecturas Paralelas
IF - EHU
1000 / E
34
7
CD-DSM Origin 2000
Escritura (fallo-RdEx)
Dir.: I
1b. RdEx A
3
1a
I → busy → M
L
2a
H
2b. Bloque
Arquitecturas Paralelas
IF - EHU
0000 / I → 0001 / E
35
7
CD-DSM Origin 2000
Escritura (acierto-INV)
Dir.: I
1b. INV A
1a
S → busy
L
H
2. NACK
Arquitecturas Paralelas
IF - EHU
0000 / I
36
7
CD-DSM Origin 2000
Reemplazo – actualizar MP
Dir.: E
1b. Wr (Bloque)
3
1a
M → busy → x
L
2a
H
2b. ACK
Arquitecturas Paralelas
IF - EHU
0001 / E → 0000 / I
37
7
CD-DSM Origin 2000
Reemplazo – actualizar MP
Dir.: busy
2a
3a
0001 / E → 1001 / busy → 1000 / E
1b. Rd A
2c. Rd A
4
2
M → busy → x
L
2d. Wr (Bloque)
3c. ACK
Arquitecturas Paralelas
IF - EHU
H
2b. Bloque
(espec)
3b. Bloque
R
4
1a
I → busy → E
38
7
CD-DSM Numa-Q
 Estructura del multiprocesador NUMA-Q
4P
4P
4P
4P
4P
4P
4P
Arquitecturas Paralelas
IF - EHU
P
C
4P
P
C
P
C
IQ
link
M
D
P
C
PCI
S/I
S/I
39
7
CD-DSM Numa-Q
 Estructura del multiprocesador NUMA-Q
▪
▪
8 x 4 procesadores / bus (snoopy)
▪
▪
▪
Invalidación / MOESI / write-back
IQ-link remote access cache
<Petición / Respuesta> / encolado de peticiones
Listas doblemente ligadas en las caches:
directorio (MP):
directorio MC:
estado / @c1
estado / @ci-1 / @ci+1
▪ SCI scalable coherent interface
Arquitecturas Paralelas
IF - EHU
40
CD-DSM Protocolo de coh. SCI
7
 Estados de los bloques:
▪ En “MP”:
Home (I), Fresh (E, S), Gone (M, O)
▪ En MC:
- posición: Only, Head, Mid, Tail
- estado: Dirty (M), Fresh (S), Valid (S’),
Exclusive (E)
Ej.: Only-Fresh, Head-Fresh, Head-Dirty, Mid-Valid...
- y estados busy
Arquitecturas Paralelas
IF - EHU
41
CD-DSM Protocolo de coh. SCI
 Tres funciones para mantener la coherencia de
los datos:
▪ List Construction
Para cargar un bloque de datos en la cache (Rd) y ponerlo
en cabeza de la lista de copias.
▪ Roll-out
Para eliminar un bloque de la cache (reemplazo), y quitarlo
de la lista de copias.
▪ Purge
Para modificar una variable (Wr), y, por tanto, invalidar
el resto de copias y actualizar la lista.
Arquitecturas Paralelas
IF - EHU
7
42
7
CD-DSM Protocolo de coh. SCI
Lectura: List Construction (Home)
1b. LC (Rd A)
Dir (MC)
L
Dir (MP)
H
I → busy → O-F|*-*
1a
3
Arquitecturas Paralelas
IF - EHU
2b. Bloque
H | * → F | @L
2a
43
7
CD-DSM Protocolo de coh. SCI
Lectura: List Construction (Fresh/Gone)
Dir (MC)
I → busy → H-F | *-@R
1a
5
3. New Head (@L)
L
R
4b. ACK
Dir (MC)
O-F | *-*
Dir (MP)
H
F | @R → F | @L
2a
2b. Bloque + @R
→ T-V | @L-*
H-F | *-@R2 → M-V | @L-@R2
4a
Arquitecturas Paralelas
IF - EHU
1b. LC (Rd A)
¿qué cambiaría si estuviera en Gone?
44
CD-DSM Protocolo de coh. SCI
 Escrituras: ¡sólo en la copia de la cabecera!
acierto / head
→ Purge
fallo
→ List Construction + Purge
acierto / no head → Roll-Out + L. Const. + Purge
Arquitecturas Paralelas
IF - EHU
7
45
7
CD-DSM Protocolo de coh. SCI
Purge (Only-Fresh)
1b. Wr (est. A)
L
Dir (MC)
Dir (MP)
H
O-F | *-* → busy → O-D | *-*
1a
Arquitecturas Paralelas
IF - EHU
3
2b. ACK
F | @L → G | @L
2a
46
7
CD-DSM Protocolo de coh. SCI
47
Purge (Head-Fresh)
Dir (MP)
F | @L → G | @L
2a
3. INV A
1b. Wr
(est. A)
H
L
2b. ACK
1a
R1
R2
6b. ACK + *
4b. ACK + @R2
Dir (MC)
H-F | *-@R1 →
5. INV A
busy → O-D | *-*
7
T-V |@R1-* → I | *-*
Dir (MC)
M-V |@L-@R2 → I | *-*
4a
Arquitecturas Paralelas
IF - EHU
6a
7
CD-DSM Protocolo de coh. SCI
Roll-Out (Wr / reempl.)
Dir (MC)
M-V | @R1-@R2 → busy
1a
→ busy / I | *-*
4
1b. RO A + @R2 1c. RO A + @R1
R1
2b. ACK
Dir (MC)
H-D | *-@L → H-D | *-@R2
2a
Arquitecturas Paralelas
IF - EHU
L
R2
3b. ACK
Dir (MC)
T-V | @L-* → T-V | @R1-*
3a
48
7
CD-DSM Protocolo de coh. SCI
 Problemas: atomicidad (i)
H-Dbusy
| *-@L1
M-V|@L2-@R1
busy
H-D
| *-@R1
L1
Ack + bl
R1
Ack + bl
H
Arquitecturas Paralelas
IF - EHU
T-V | @R1-*
NewHead
NewHead
L2
H-D|*-@R2
M-V|@L1-@R2
Dir (MP)
(MP)
G
|
@L1
@R1
G | @L2
R2
49
CD-DSM Protocolo de coh. SCI
 Problemas: atomicidad (ii)
busy
O-F | *-*
busy
NACK
L
R
LC
Wr
H
??
Arquitecturas Paralelas
IF - EHU
Dir (MP)
F | @R
@L
7
50
CD - DSM | Protocolo de coh. SCI
 Problemas: atomicidad (ii)
busy
O-F | *-*
busy
L
R
any questions?
NACK
LC
Wr
H
Dir (MP)
??
Arquitecuras Paralelas
IF - EHU
F | @R