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