Transcript tema 5

5. Consistencia de la memoria en
los computadores paralelos
- Introducción
Orden de ejecución de las instrucciones
Atomicidad
- Modelos de consistencia
Consistencia secuencial
Modelos relajados
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
1
Introducción: orden de ejecución de
las instrucciones
 ¿Orden de ejecución de las instrucciones de memoria?
 Un solo procesador
-
el hardware puede desordenar las instrucciones.
pero la unidad de control es única; por tanto, el
desorden está bajo control.
 P procesadores
no conocemos el orden “global” de las
instrucciones
 El orden de ejecución de las instrucciones de
memoria establece la consistencia de la memoria
del multiprocesador.
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
2
Introducción: orden de ejecución de las
instrucciones
 La coherencia de los datos fija un “orden”
concreto:
“los cambios realizados sobre una variable
aparecerán en todas las caches y en el mismo
orden”
 Pero los protocolos de coherencia no fijan el
orden de los cambios sobre distintas
variables!
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
3
Introducción: orden de ejecución de las
instrucciones
 La semántica de los programas paralelos está asociada
al orden de ejecución global y local de las
instrucciones.
P1
A = 1; (wr1)
B = 2; (wr2)
P2
print B; (rd1)
print A; (rd2)
Al principio: A = B = 0
Resultados: B,A
0,0 / 0,1 / 2,1
2,0 ??
La solución puede ser B = 2 y A = 0 si P1
desordena sus dos instrucciones, puesto que para
él son totalmente independientes!
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
4
Introducción: orden de ejecución de las
instrucciones
 La semántica de los programas paralelos se
fija por medio de operaciones de
sincronización.
P1
A = 1;
P2
listo = 1;
print A;
while (listo==0);
dependencias
wr1
rd1
wr2
rd2
¿P2 debería escribir A = 1?
Puede que no, puesto que el procesador local no
entiende la sincronización del programa global!
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
5
Introducción: orden de ejecución de las
instrucciones
 La semántica de los programas paralelos se
fija por medio de operaciones de
sincronización.
P1
A = 1;
P2
listo = 1;
print A;
while (listo==0);
dependencias
wr1
rd1
wr2
rd2
Para respetar la dependencia wr1rd2 hay que
mantener el orden local de las instrucciones:
wr1>>wr2 y rd1>>rd2 + wr2rd1  wr1rd2
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
6
Introducción: atomicidad
 No basta con el orden local, la falta de
atomicidad en las instrucciones de memoria
también puede generar problemas.
P1
A = 1;
listo = 1;
P2
while (listo==0);
print A;
Cambian dos variables en P1; ¿En qué orden llegarán
esos cambios a P2?
P2 imprimirá A = 0 si el cambio de la variable listo
llega antes que el de la variable A a P2!
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
7
Introducción: atomicidad
 Otro ejemplo
P1
P2
P3
A = 1;
while (A==0);
B = 1;
while (B==0);
C = A;
Finlamente, obtenemos C = 0
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
8
Modelos de consistencia
 El programador de aplicaciones paralelas debe
conocer el modelo de consistencia del
sistema paralelo:
- el orden de ejecución de las instrucciones en
cada procesador.
- la atomicidad de las operaciones de
escritura/lectura que se hacen sobre variables
compartidas.
 Analicemos los principales modelos de consistencia.
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
9
Consistencia secuencial: SC
 Extensión del modelo de orden estricto en
un solo procesador.
Consistencia secuencial (SC):
1 hay que respetar el orden local de las
instrucciones (de memoria) en cada procesador: no
se pueden reordenar las instrucciones LD y ST.
wr >> rd;
wr >> wr;
UPV- EHU / ATC
rd >> rd;
rd >> wr;
Arquitecturas Paralelas 12-13
10
Consistencia secuencial: SC
Por ejemplo:
?
P1
P2


a;
c;
b;
d;
Global

a;
b;
c;
d;

a;
d;
c;
b;

c;
d;
b;
a;
si
no
no

a;
c;
b;
d;
si
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
11
Consistencia secuencial: SC
Consistencia secuencial (SC):
2 se debe de asegurar la atomicidad de las
instrucciones de memoria: no se puede comenzar
una instrucción hasta que terminen las anteriores y
todos sus efectos (cualquier procesador).
Inst. a (Pi)
Inst. a (Pi)
Inst. b (Pj)
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
Inst. b (Pj)
12
Consistencia secuencial: SC
 Para asegurar la atomicidad hay que saber cuándo acaba
la ejecución de las instrucciones (y las consecuencias de
las mismas en todos los procesadores):
>> Instrucciones del procesador local
- LD: fácil, cuando se obtienen los datos.
- ST: difícil, además de las escrituras hay que tener en
cuenta las invalidaciones.
UPV- EHU / ATC
1. INV
1. INV
2. ACK
2. ACK
Arquitecturas Paralelas 12-13
13
Consistencia secuencial: SC
>> Instrucciones de otros procesadores
- LD: antes de empezar con la lectura hay que estar seguro
de que la última escritura sobre ese bloque se ha
finalizado… en todos los procesadores! La complejidad de
la operación depende del protocolo de coherencia:
- INV: no es difícil, porque hay que pedir el bloque.
- BC: hay que saber que ha finalizado la operación
broadcast.
1. BC
1. BC
UPV- EHU / ATC
3 seguir
3 seguir
2. ACK
2. ACK
Arquitecturas Paralelas 12-13
14
Consistencia secuencial: SC

Las condiciones impuestas por el modelo SC son muy
duras, y pueden afectar en gran medida a la eficiencia
del sistema.
- no se pueden desordenar los accesos a memoria
- no se pueden utilizar búferes de escritura
- no se pueden utilizar registros para optimizar la
utilización de memoria
P1
A = 1
B = A
UPV- EHU / ATC
P2
A = 0

P1
P2
r1 = 1
A = r1
B = r1
A = 0
Arquitecturas Paralelas 12-13
15
Modelos de consistencia relajados
 ¿Existe alguna otra opción?
El conjunto de restricciones impuesto por el
modelo SC es suficiente pero no necesario.
Algunas restricciones impuestas al orden se
pueden suavizar:
wr >> rd; rd >> rd; wr >> wr; rd >> wr;
+ atomicidad
Así, se definen modelos de consistencia relajados:
no se respetan algunas relaciones de orden.
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
16
Modelos de consistencia relajados
 El programador debe tener la posibilidad de
imponer el orden estricto.
Con este objetivo, se utilizan instrucciones
especiales de lenguaje máquina llamadas fence:
MEMBAR, STBAR, SYNC...
- write-fence: para fijar el orden de las escrituras
- read-fence: para fijar el orden de las lecturas
- memory-fence: para fijar el orden de las operaciones
de memoria
Veamos los modelos de consistencia relajados.
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
17
Modelos de consistencia relajados: TSO
1 Total Store Ordering (TSO) / Processor
Consistency (PC)
No se cumple el orden wr>>rd
Las instrucciones LD se pueden
ejecutar antes que las instrucciones
ST previas (modelo “adelanto de LD
load”).
Ojo: las instrucciones T&S, SWAP...
contienen operaciones rd y wr.
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
P
P
P
ST
MEM
18
Modelos de consistencia relajados: TSO
 No se asegura la consistencia secuencial por lo
que puede que en algún programa los
resultados sean inesperados.
P1
X = nuevo_valor;
Y_copia = Y;
SC:
P2
Y = nuevo_valor;
X_copia = X;
por lo menos uno, X_copia o Y_copia tendrá
nuevo_valor.
TSO: puede que ninguno de los dos tome el nuevo valor.
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
19
Modelos de consistencia relajados: TSO
 Si hay que imponer el orden en algún punto
concreto de una aplicación habrá que generar una
“barrera de orden”.
Para ello, dos opciones:
- utilizar instrucciones de tipo fence.
- puesto que las escrituras no se pueden
desordenar en este modelo, utilizar
instrucciones de tipo RMW:
ST ... LD → SWAP ... LD
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
20
Modelos de consistencia relajados: TSO
 El modelo TSO es adecuado para evitar las
latencias de las escrituras y funciona bien para el
caso de la sincronización mediante flags:
P1
A = 1;
listo = 1;
P2
while (listo ==0);
print A;
Las dos escrituras de P1 y las dos lecturas de P2 no se
pueden desordenar
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
21
Modelos de consistencia relajados: PSO
2 Partial Store Ordering (PSO)
No se cumple el orden entre
wr>>rd y wr>>wr.
P
P
P
ST
En este modelo no se asegura el ordenLD
entre escrituras.
La implementación es similar a la
MEM
anterior pero las colas de los ST no
son FIFO
OJO: puede que la sincronización mediante flags no
funcione! Por lo tanto, si hay que utilizarla habrá que
imponer el orden de las instrucciones de memoria.
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
22
Los modelos de consistencia más
relajados
 ¿Hay que asegurar el orden de todas las
instrucciones de memoria?
P1
X = X + 1;
Y = B + 1;
flag = 1;
P2
while (flag==0);
A = X/2;
B = Y;
P1/P2/...
lock(s);
yo = i;
i = i + N;
unlock(s);
Bastaría con asegurar el orden de las
instrucciones de sincronización!
rd,wr >> s
s >> rd,wr
s >> s
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
23
Modelos de consistencia relajados: WO
3 Weak Ordering (WO)
-
-
Se permite cualquier reordenamiento de las
operaciones de memoria salvo con respecto a las
sincronizaciones.
Las operaciones de sincronización funcionan como
instrucciones tipo fence.
rd...wr...
sinc
rd...wr...
sinc
rd...wr...
OJO: hay que “etiquetar” las operaciones de memoria
para poder identificar las de sincronización.
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
24
Modelos de consistencia relajados: RC
4 Release Consistency (RC)
Las operaciones de sincronización se dividen en dos
tipos: acquire (sa) y release (sr).
Las únicas relaciones de orden que hay que cumplir
son: sa >> rd,wr
rd,wr >> sr
rd...wr...
UPV- EHU / ATC
s_acq
rd...wr...
Arquitecturas Paralelas 12-13
s_rel
rd...wr...
25
Resumen
orden de las operaciones de memoria
wr
Fence
modelo
wr>>rd
wr>>wr
rd>>rd,wr
sincr.
SC



todas

TSO


todas

PC


todas
MEMBAR
RMW

todas

STBAR
RMW
WO
todas

SINC
RC
sa>>w/r
w/r>>sr
s>>s
PSO
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
atom.
MEMBAR
RMW
REL,ACQ
RMW
26
Ejemplo
orden
SC
rd
=
TSO/PC
PSO
=
=
A
B
=
A
=
B
WO
A
=
=
B
RC
A
=
=
wr
B
sinc_a
sinc_acq
sinc_acq
sinc_acq
sinc_acq
sinc_acq
wr
C
C
C
C
C
=
rd
=
=
=
D
=
D
=
D
B
A
=
=
=
=
D
=
D
sinc_r
sinc_rel
sinc_rel
sinc_rel
sinc_rel
sinc_rel
wr
E
=
E
=
E
=
E
=
E
=
wr
F
=
F
=
F
=
F
=
F
=
UPV- EHU / ATC
Arquitecturas Paralelas 12-13
27