Modelos de Consistencia de Memoria
Modelos de Consistencia de Memoria
Modelos de Consistencia de Memoria
Consistencia estricta
Consistencia secuencial: define el orden de accesos a memoria en trminos
del orden impuesto por el programa fuente
Modelos relajados: permiten implementaciones de mayor rendimiento con un
modelo de programacin mas complejo y restrictivo y con
una semntica de ejecucin idntica a la de un modelo de
consistencia secuencial
Consistencia causal
Consistencia PRAM (Pipelined RAM)
Partial Storage Ordering (PSO)
Consistencia de cach (coherencia)
Modelos de acceso sincronizado
Consistencia dbil
Consistencia de liberacin
4
Secuencial
Causal
PRAM
PSO
de cach
P1
SW mem[100], 55
demora = 0
P2
demora = 0
LD B, mem[100]
Tiempo i
SW mem[100], 55
Tiempo i + 0
mem[100] = 55
Tiempo i + 0
LD B, mem[100] ; B = 55
5
Secuencial
Causal
PRAM
PSO
de cach
RAM
P1
SW mem[100], 55
demora = 3
P2
demora = 1
38
LD B, mem[100]
Tiempo i
SW mem[100], 55
Tiempo i + 1
LD B, mem[100] ; B = 38
Tiempo i + 3
mem[100] = 55
re
r
co
n
I
!!
o
ct
Secuencial
Causal
PRAM
PSO
r1(x)1
de cach
r1(x)2
p1
p2
w2(x)1
w2(x)2
7
Secuencial
Secuencial
Causal
PRAM
PSO
de cach
Condiciones de preservacin
1.
2.
3.
Secuencial
Secuencial
Ejemplo:
Procesador 1
task 1 {
A=1
X=A
A=2
Causal
PRAM
Procesador 2
task 2 {
while (A==0);
B=1
}
PSO
de cach
Procesador 3
task 3 {
while (B==0);
printf A
}
Secuencial
Secuencial
Causal
PRAM
PSO
de cach
10
Secuencial
Secuencial
Causal
PRAM
PSO
de cach
p2
w2(x)1
hv2:
w2(x)2
w2(x)1 a2 w2(x)2
11
Adems
Ademsde
delas
lasordenaciones
ordenacionesbasadas
basadasen
enlas
lasoperaciones
operacionesRRyyW,
W,se
se
deben
debenconsiderar
consideraraquellas
aquellassurgidas
surgidasde
delos
losaccesos
accesosaavariables
variablesde
de
sincronizacin:
sincronizacin:
SS
W:
W:Escritura
Escrituradentro
dentrode
deun
unrea
reade
dememoria
memoriacompartida
compartida
SS
R:
R:Lectura
Lecturadentro
dentrode
deun
unrea
reade
dememoria
memoriacompartida
compartida
W
S:
Escritura
antes
de
entrar
a
un
rea
compartida
W S: Escritura antes de entrar a un rea compartida
RR
S:
S:Lectura
Lecturaanterior
anterioral
alingreso
ingresoaaun
unrea
reacompartida
compartida
12
Secuencial
Causal
Causal
PRAM
PSO
de cach
Secuencial
Causal
Causal
PRAM
PSO
de cach
w1(y)1
r1(x)1
p1
p2
w2(x)1
hv2: w2(x)1 a2 w1(x)2
r2(y)1
r2(x)2
Secuencial
Causal
PRAM
PRAM
PSO
de cach
Secuencial
Causal
PRAM
PRAM
PSO
de cach
w1(x)1 w1(y)1
p1
w2(x)2
p2
Orden
alterado
r2(y)1
p3
r3(x)2
r3(x)1
16
Secuencial
Causal
PRAM
PSO
PSO
de cach
Secuencial
Causal
PRAM
PSO
de
decach
cach
Secuencial
Causal
Ejemplo:
Procesador 1
task 1 {
A=1
flag = 1
}
PRAM
PSO
de
decach
cach
Procesador 2
task 2 {
while (flag==0);
printf A
}
Problema:
La ejecucin correcta del cdigo debiera imprimir A igual a 1
El mecanismo de coherencia asegura que las lecturas a una posicin de memoria son
posteriores a las escrituras (W R)
NO asegura que dos escrituras a distintas posiciones (A y flag) se actualicen en el orden
correcto
En el ejemplo es posible que flag == 1 y A == 0
19
Secuencial
Causal
PRAM
PSO
de
decach
cach
Secuencial
Causal
PRAM
PSO
de
decach
cach
p2
w2(x)1
De liberacin
Weak Ordering - WO
Adems de las anteriores, relaja las ordenaciones R R y R W
No preserva el orden entre las referencias salvo los dos casos:
Una lectura o escritura se completar antes que cualquier operacin
de sincronizacin ejecutada por el procesador despus de la
lectura o escritura segn el orden del programa
(R S W S)
Una operacin de sincronizacin se completar antes que cualquier
lectura o escritura que ocurra segn el orden del programa despus
de la operacin
(S R S W)
22
De
Deliberacin
liberacin
Release Consistency
Extensin del modelo de consistencia dbil con un grado adicional de
relajamiento
Distingue entre operaciones de sincronizacin usadas para adquirir el
acceso a una variable compartida (SA) y las que liberan un objeto para
permitir que otro procesador pueda adquirir el acceso (SR)
Fundamentado en que en los programas sincronizados se necesita una
operacin explcita de sincronizacin antes de usar un valor compartido
y se realiza una operacin de liberacin explcita posterior a todas las
actualizaciones a los datos compartidos
(SA R W SR)
23
Mquina
Ordenes
ordinarios
Ordenes de
sincronizacin
Sequential
consistency
R R, R W,
W R, W W
S W, S R,
R S, W S,
SS
R R, R W,
WW
S W, S R,
R S, W S,
SS
R R, R W
S W, S R,
R S, W S,
SS
TSO
PSO
WO
Release
consistency
SPARC
PowerPC
S W, S R,
R S, W S,
SS
ALPHA, MIPS
SA W, SA R,
R SR, W SR,
SA SA, SA SR,
SR SA, SR SR
24
PRAM
TSO
PSO
Weak
Ordering
Release
consistency
=A
=A
=A
=A
=A
B=
B=
B=
B=
B=
acquire(S)
acquire(S)
acquire(S)
acquire(S)
acquire(S)
C=
C=
C=
C=
C=
=D
=D
=D
=D
=D
release(S)
release(S)
release(S)
release(S)
release(S)
E=
E=
E=
E=
E=
F=
F=
F=
F=
F=
25
(PRAM)
27
28
protocolos
protocolosbasados
basadosen
endirectorios
directorios
Sistemas
Sistemasbasados
basadosen
enbuses
buses
Sistemas
Sistemasbasados
basadosen
envarias
varias
subredes
subredes
Pocos
Pocosprocesadores
procesadores
ElElmedio
mediose
sesondea
sondeapara
paradetectar
detectar
incoherencias
incoherencias
Muchos
Muchosprocesadores
procesadores
Se
Seagregan
agreganbits
bitsaacada
cadalnea
lneade
de
cach
para
saber
su
estado
cach para saber su estado
Transacciones
Transaccioneslocales
localesaacada
cada
subred
subredoosub-bus
sub-bus
Se
Seagregan
agreganlneas
lneasespeciales
especialesalal
bus
buspara
paratransmitir
transmitirinformacin
informacin
entre
cachs
entre cachs
Directorio
Directoriocentral
centralque
quealmacena
almacena
el
elestado
estadode
decada
cadalnea
lneade
decach
cach
29
Protocolos de sondeo
Tipos de transacciones:
PrRd : El procesador inicia una lectura de
un dato. Si esta en su cach es un
acierto, sino es un fallo de cach
PrWr : El procesador quiere escribir un dato
en un bloque de cach. Para esto, el
bloque debe estar solamente en la
cach local
BusRd : A requerimiento de un procesador
el bus solicita a alguna cach o a la
memoria una copia de un bloque
para usarlo en modo lectura (PrRd)
CPU 1
PrRd
CPU 2
PrWr
Driver
Driver cach
cach
BusRd
BusRdX
Driver
Driver cach
cach
BusWB
Memoria
Memoria
30
Protocolos de sondeo
Transaccin de escritura con invalidacin:
1.
2.
3.
4.
5.
6.
7.
CPU 1
7
CPU 2
2
Driver
Driver cach
cach
3
Driver
Driver cach
cach
4
Memoria
Memoria
31
Synapse
Berkeley
MESI (Illinois)
Firefly
Dragon
Tipo de
protocolo
Estrategia de escritura
caractersticas
Write invalidate
Primer protocolo de
sondeo
Write invalidate
Write back
Write invalidate
Write back
Estado propietario
compartido
Write back
Write update
Memoria actualizada
para todos
Write update
Write invalidate
32
Protocolos de sondeo
Invalidar en escritura de 3 estados: MSI
Estados de una entrada de cach:
Invlida (I): La entrada de cach no es vlida. El bloque en esa entrada tiene
datos no actualizados. El bloque ms actualizado est en
memoria o en otra cach.
Compartida (S): La entrada de cach local contiene un bloque vlido que
tambin est actualizado en memoria. Puede haber otras
cachs que tengan la copia actualizada del bloque
(0 ms cachs)
Modificada (M): La entrada contiene un bloque modificado por el procesador
local. Esta copia del bloque es la nica copia vlida.
Ninguna otra cach, ni la memoria tienen esta copia.
Lneas en el bus:
BusRd
BusRdX
BusWB
33
Protocolos de sondeo
Invalidar en escritura de 3 estados: MSI
PrWr/BusRdX
PrWr/BusRdX
PrWr/-PrRd/--
M
M
PrRd/BusRd
BusRd/-PrRd/--
SS
II
BusRdX/--
BusRd/flush
BusRdX/flush
34
Protocolos de sondeo
Invalidar en escritura de 4 estados: MESI
Estado adicional: Exclusivo (E):
- Intermedio entre modificado y compartido
- La cach contiene la nica copia vlida
pero no est modificada (an?)
- Si se modifica el bloque la cach
no necesita notificar a nadie
PrWr/BusRdX
PrWr/BusRdX
PrRd/BusRd(S)
PrWr/-PrRd/BusRd(S)
PrWr/-PrRd/--
M
M
PrRd/--
EE
BusRd/flush
PrRd/--
BusRd/flush
SS
II
BusRdX/flush
BusRd/flush
BusRdX/flush
BusRdX/flush
35
Protocolos de sondeo
Invalidar en escritura de 4 estados: MESI
Fallo de lectura:
Se pide el bloque a la cach que lo tenga o en su defecto de memoria
Si el bloque esta como modificado en la cach de origen, se actualiza
tambin en memoria
Si el bloque lo entrega la memoria (o sea, no est en ninguna cach),
entonces la cach que lee lo marca localmente como exclusivo
Fallo de escritura:
El bloque se obtiene de la cach que lo tenga y se guarda en la cach
local como modificado. En las dems cach que lo tengan se marca
como invlido
Si no est en las cach se obtiene de memoria (como modificado)
Slo puede haber una cach con un bloque en estado modificado
Acierto de escritura:
Si la cach local es la propietaria del bloque (modificado o exclusivo)
se escribe en el bloque sin avisar a nadie.
Si el bloque est como compartido se lo actualiza como modificado
pero antes se lo invalida en el resto de las cach
36
Protocolos de sondeo
Invalidar en escritura de 4 estados: MESI
Lneas del bus:
BusRd
BusRdX
BusWB
S : Permite que otras cach notifiquen a la cach local que poseen copia
del bloque solicitado en un BusRd para marcarlo como
exclusivo si S = 0 o modificado si S = 1
CPU 2
Lee el
bloque X
como
modificado
Driver
Driver cach
cach
S=1
CPU 2
.
S=1
Tiene el
bloque X
CPU 2
No tiene
bloque X
Driver
Driver cach
cach
Driver
Driver cach
cach
S=0
37
Protocolos de sondeo
Actualizar en escritura: Firefly
Caracterstica: Las escrituras a la cach son vistas por todos y se escribe a memoria
3 estados:
Lectura privada: Slo esta cach posee el bloque y es igual que el de memoria
Lectura compartida: otras cachs poseen copia de este bloque y es igual
en todas
Modificada privada: Slo esta cach posee copia del bloque y esta modificado
de manera que la memoria no tiene el mismo contenido
Lnea adicional de bus (Lnea compartida): el bloque transferido est tambin en otras cach
Fallo
Fallode
delectura
lectura
Fallo
Fallode
deescritura
escritura
Acierto
Aciertode
deescritura
escritura
ElElbloque
bloqueno
noest
esten
enotras
otras
cach, entonces se lee de
cach, entonces se lee de
memoria
memoriayyse
semarca
marcacomo
como
Lectura
Lecturaprivada
privada
El bloque est en alguna cach,
El bloque est en alguna cach,
entonces
entonceslalamisma
mismaloloentrega
entregaaa
esta cach activando la seal
esta cach activando la seal
lnea
lneacompartida.
compartida.SiSielelbloque
bloque
era modificado privado, se
era modificado privado, se
escribe
escribeaamemoria.
memoria.En
Enlalacach
cach
propia
se
marca
como
Lectura
propia se marca como Lectura
compartida
compartida
ElElbloque
bloqueno
noest
esten
enotras
otras
cach, entonces se lee de
cach, entonces se lee de
memoria
memoriayyse
semarca
marcacomo
como
Modificado
Modificadoprivado
privado
El bloque est en alguna cach,
El bloque est en alguna cach,
entonces
entonceslalamisma
mismaloloentrega
entregaaa
esta cach activando la seal
esta cach activando la seal
lnea
lneacompartida.
compartida.SiSielelbloque
bloque
era modificado privado, se
era modificado privado, se
escribe
escribeaamemoria.
memoria.En
Enlalacach
cach
propia
se
marca
como
Lectura
propia se marca como Lectura
compartida
compartidayylalamodificacin
modificacin
se propaga a todas las cach
se propaga a todas las cach
SiSielelbloque
bloqueesta
estacomo
como
Modificado privado o Lectura
Modificado privado o Lectura
privada
privadase
seescribe
escribelalacach
cach
local
localsolamente.
solamente.ElElbloque
bloque
queda como Modificado
queda como Modificado
privado
privado
Si el bloque est en la cach
Si el bloque est en la cach
local
localcomo
comoLectura
Lectura
compartida la modificacin
compartida la modificacin
se
sepropaga
propagaaatodas
todaslas
lascach
cachyy
aalalamemoria.
memoria.
38
Distribuido
Tablas distribuidas entre las distintas cach (procesadores)
Almacena el estado de la cach local y de presencia del bloque
en todas las dems caches que lo tienen
subtipos: Directorios jerrquicos y directorios encadenados
39
bits de presencia
bit de nica copia
Tamao
Tamaodel
deldirectorio
directorio==
==(NumCache
(NumCache++1)
1)**numBloques
numBloques
Memoria
Memoria
Pa
cach a
v
1
Como:
Nmero de cachs es igual al nmero
de procesadores, y
Tamao de memoria es proporcional
el nmero de procesadores
1 bloque
x
blq
Pb
Pc
cach b
v
0
entonces:
Complejidad NumProc2
p
0
p
-
x
---
bit de validz
cach c
blq
bit de privado
(permiso de escritura)
40
41
42
43
Memoria
Memoria
Pb
cach a
v
1
p
0
x
blq
44
Memoria
Memoria
Pa
Pb
cach a
uc
dir a
bloque
ant
x
blq
Pc
cach b
sig
ant
x
blq
cach c
sig
ant
x
blq
sig
nil
45
Memoria
Memoria
Pa
Pb
cach a
uc
dir c
bloque
ant
Pc
cach b
x
blq
sig
ant
sig
cach c
ant
nil
x
blq
sig
5
6
x
blq
46
Los
Losprimeros
primeros44pasos
pasosiguales
igualesaaun
unfallo
fallode
delectura.
lectura.(en
(enelelejemplo
ejemplocach
cachccapunta
apuntaahora
ahoraaacach
cacha)a)
La
Lacach
cachccenva
envaaasu
sunuevo
nuevosucesor
sucesorun
unmensaje
mensajede
deinvalidacin
invalidacin
La
cach
que
recibe
el
mensaje
de
invalidacin
resetea
La cach que recibe el mensaje de invalidacin reseteasu
subit
bitde
devalidez
validezyypasa
pasasu
supuntero
punteroaa
sucesor
sucesoraalalacach
cachantecesora
antecesora(la
(lacach
cachc)c)
La
Lacach
cachcccoloca
colocaelelpuntero
punterorecibido
recibido(cach_b
(cach_ben
enelelejemplo)
ejemplo)como
comopuntero
punteroaasucesor
sucesor
se
repite
desde
el
paso
2
hasta
que
el
puntero
recibido
sea
nil
se repite desde el paso 2 hasta que el puntero recibido sea nil
La
Lamemoria
memoriaenva
envacopia
copiadel
delbloque
bloqueaalalacach
cachcc(nica
(nicaen
enlalalista)
lista)
lalacach
c
marca
la
copia
como
vlida
y
privada
cach c marca la copia como vlida y privada
Acierto
Aciertode
deescritura:
escritura:
1.1.
2.2.
3.3.
SiSilalacach
cachque
queescribe
escribe(cach
(cachccen
enelelejemplo)
ejemplo)es
esnica
nicaen
enlalalista
listasimplemente
simplementeactualiza
actualizalalacopia
copia
del
bloque
pues
es
la
propietaria
del bloque pues es la propietaria
SiSilalacach
caches
escabeza
cabezade
delista,
lista,entonces
entoncesinvalida
invalidatodas
todaslas
lasdems
demscachs
cachspara
paraser
serlalanica
nica
propietaria
del
bloque
propietaria del bloque
SiSilalacach
cachno
noes
escabeza
cabezade
delista
lista
Se
quita
a
si
Se quita a simisma
mismade
delalalista
lista(MSG
(MSGexclude_from_list)
exclude_from_list)
Se
agrega
como
cabeza
de
lista
(MSG
Se agrega como cabeza de lista (MSGinclude_in_list)
include_in_list)
realiza
el
proceso
del
paso
2
de
un
acierto
realiza el proceso del paso 2 de un aciertode
deescritura
escritura
47
Hardware de sincronizacin
1- TEST_AND_SET
Instruccin de hardware especial que permite probar y
modificar el contenido de un dato atmicamente".
49
Hardware de sincronizacin
Uso del Test and Set
Entrar:= False;
Repeat
While Test_and_Set ( Entrar ) do ;
{ SECCIN CRTICA }
Entrar := False;
Until Ejecucin = False
50