Você está na página 1de 46

Tipos 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

Tipos de consistencia de memoria


Estricta
Estricta

Secuencial

Causal

PRAM

PSO

de cach

Tambin llamada consistencia atmica (Atomic Consistency - AC)


Caso ideal
Cualquier escritura se ve instantneamente por cualquier
lectura posterior (cualquier lectura de una posicin de memoria
devuelve el valor almacenado por la escritura mas reciente)
RAM

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

Tipos de consistencia de memoria


Estricta
Estricta

Secuencial

Causal

PRAM

PSO

de cach

En la prctica existen demoras de propagacin que no


permiten sincronizar correctamente a procesadores distantes

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

Tipos de consistencia de memoria


Estricta
Estricta

Secuencial

Causal

PRAM

PSO

r1(x)1

de cach

r1(x)2

p1

p2
w2(x)1

w2(x)2
7

Tipos de consistencia de memoria


Estricta

Secuencial
Secuencial

Causal

PRAM

PSO

de cach

Condiciones de preservacin
1.

Todo proceso emite las peticiones a la memoria en el orden especificado por


el programa

2.

Luego de emitir una operacin de escritura, el proceso que la emiti espera


que se haya realizado la escritura en la memoria antes de emitir su
siguiente operacin (lectura de la misma posicin o nueva escritura)

3.

Despus de emitir una operacin de lectura, el proceso que la emiti espera


a que la lectura se haya completado, y espera tambin que se complete la
escritura que gener el valor devuelto por la lectura, antes de emitir su
siguiente operacin (el procesador debe esperar a que la escritura se haya
realizado respecto a todos los procesadores , o sea, sea vista por todos)

Tipos de consistencia de memoria


Estricta

Secuencial
Secuencial

Ejemplo:

Tres tareas sincronizadas mediante 2 variables A y B (inicialmente en 0).


En una ejecucin secuencial, P3 imprimir un 1 cuando A sea 1 en P1

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
}

Por lema 2: la operacin X = A en task 1 debe esperar a que la escritura de A (A = 1) se


escriba efectivamente en memoria
Por lema 3: Cualquier futura operacin en P1 requiere esperar a que la ltima escritura (A = 1)
sea vista en todos los procesadores de la red
Esto asegura que B se vuelva 1 y, transitivamente, se imprima 1 el P3
9

Tipos de consistencia de memoria


Estricta

Secuencial
Secuencial

Causal

PRAM

PSO

de cach

Ordenaciones exigibles al modelo


1.
1. RR
R:
R:Una
Unalectura
lecturaseguida
seguidade
deuna
unalectura
lectura
2.
2. RR
W:
W:Una
Unalectura
lecturaseguida
seguidade
deuna
unaescritura.
escritura.Siempre
Siemprese
sepreserva
preservasisilas
las
operaciones
operacionesse
serealizan
realizansobre
sobreuna
unamisma
mismadireccin
direccin(antidependencia)
(antidependencia)
3.
3. W
W
W:
W:Una
Unaescritura
escrituraseguida
seguidade
deotra
otraescritura.
escritura.Siempre
Siemprese
sepreserva
preservasisilas
las
operaciones
se
realizan
sobre
una
misma
direccin
(dependencia
operaciones se realizan sobre una misma direccin (dependencia
de
desalida)
salida)
4.
4. W
W
R:
R:Una
Unaescritura
escrituraseguida
seguidade
deuna
unalectura.
lectura.Siempre
Siemprese
sepreserva
preservasisilas
las
operaciones
se
realizan
sobre
una
misma
direccin
(dependencia
operaciones se realizan sobre una misma direccin (dependencia
verdadera)
verdadera)

10

Tipos de consistencia de memoria


Estricta

Secuencial
Secuencial

Causal

PRAM

PSO

de cach

hv1: w2(x)1 a1 r1(x)1 a1 w2(x)2


r1(x)1
p1

p2
w2(x)1
hv2:

w2(x)2

w2(x)1 a2 w2(x)2
11

Tipos de consistencia de memoria


Los
Losmodelos
modelosrelajados
relajadospermiten
permitenrelajar
relajaruna
unaoomas
masde
delas
lasordenaciones
ordenaciones
respecto
respectoal
almodelo
modelode
deconsistencia
consistenciasecuencial
secuencial
Relajar
Relajaruna
unaordenacin
ordenacinsignifica
significapermitir
permitirla
lafinalizacin
finalizacinanticipada
anticipadade
de
una
unaoperacin
operacinpor
porparte
partede
deun
unprocesador
procesador
Ejemplo:
Ejemplo:Relajar
Relajarla
laordenacin
ordenacinW
W
RRimplica
implicapermitir
permitirque
quela
lalectura
lectura
termine
termineantes
antesque
quela
laescritura
escriturade
dela
lacual
cualdepende
depende
(En
(Enun
unentorno
entornomultiprocesador,
multiprocesador,una
unaescritura
escriturano
nose
secompleta
completahasta
hastaque
quese
sehan
han
completado
completadotodas
todaslas
lasinvalidaciones
invalidacionesaatodas
todaslas
lascach
cachdel
delsistema)
sistema)

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

Tipos de consistencia de memoria


Estricta

Secuencial

Causal
Causal

PRAM

PSO

de cach

Definido originalmente para pasaje de mensajes en un sist. distribuido


Un mensaje m1 preceder causalmente a otro mensaje m2 (m1 m2)
si se cumple alguna de las siguientes condiciones:
m1 ym2 son enviados por el mismo proceso y m2 es enviado luego
de m1
m1 es entregado en el proceso emisor de m2 antes de que m2 sea
enviado
Existe un mensaje x tal que m1 < x y x < m2
En memoria compartida el envo de un mensaje equivale a una escritura
y la recepcin de un mensaje a una lectura
13

Tipos de consistencia de memoria


Estricta

Secuencial

Causal
Causal

PRAM

PSO

de cach

hv1: w1(x)2 a1 w1(y)1 a1 w2(x)1 a1 r1(x)1


w1(x)2

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

a2 w1(y)1 a2 r2(y)1 a2 r2(x)2


14

Tipos de consistencia de memoria


Estricta

Secuencial

Causal

PRAM
PRAM

PSO

de cach

Similar al modelo de consistencia de procesador aunque ms relajado


Tambin llamado Total Storage Ordering - TSO
Relaja la ordenacin W R a direcciones diferentes
Permite almacenar las escrituras en buffers que pueden ser
sobrepasados por las lecturas (se permite proceder una lectura antes que
una escritura anterior haya sido vista por todos los procesadores)

Permite a la mquina ocultar la latencia de las operaciones W


Para forzar la ordenacin relajada (W R) se debe sincronizar va
software (W S R)
Todos los procesadores observan las operaciones de escritura generadas
por un mismo procesador en el mismo orden, mientras que las
escrituras generadas por procesadores distintos podrn ser percibidas
en distinto orden
15

Tipos de consistencia de memoria


Estricta

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

Tipos de consistencia de memoria


Estricta

Secuencial

Causal

PRAM

PSO
PSO

de cach

Llamado tambin Ordenamiento parcial de almacenamiento


(Partial Storage Ordering - PSO)
Relaja la ordenacin W W a direcciones diferentes (escrituras no
conflictivas)
Todas las escrituras se realizan a travs de un buffer (store buffer)
Las lecturas se realizan desde el buffer de escritura si es posible
Permite solapar operaciones de escritura (no respeta el orden FIFO de
las escrituras)
Modelo derivado (incluido) en TSO, por lo tanto:
Relaja mas ordenaciones que TSO
Proporciona mas prestaciones que TSO y
Eventualmente posee un interfaz mas complejo
17

Tipos de consistencia de memoria


Estricta

Secuencial

Causal

PRAM

PSO

de
decach
cach

Un sistema de memoria es coherente si:


Una lectura de una posicin de memoria X realizada por un
procesador P posterior a una escritura de P a la posicin X
siempre devuelve el valor escrito por P
(Se asume que ningn otro dispositivo modifica X entre la escritura
y la lectura de P)

Una lectura por parte de un procesador Pi de la posicin X


posterior a una escritura de X por otro procesador Pj, devuelve
el valor escrito correctamente si la escritura y la lectura estn
suficientemente separadas en el tiempo y no hay otras escrituras
sobre X entre las dos operaciones
En un sistema real, las demoras de propagacin de los datos en
las redes de interconexin y buses presupone que los datos no
se actualizan instantneamente
18

Tipos de consistencia de memoria


Estricta

Secuencial

Causal

Ejemplo:

Una tarea (2) debe esperar un flag en 1 e imprimir el valor de A.


Otra tarea (1) carga el valor de A y setea el flag
Se presupone que A = 0 y flag = 0 inicialmente

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

Tipos de consistencia de memoria


Estricta

Secuencial

Causal

PRAM

PSO

de
decach
cach

La coherencia no dice nada acerca del orden en que las escrituras de P1


deben hacerse visibles a P2
La coherencia no dice nada acerca del orden de las lecturas relativo al
orden de las escrituras correspondientes a distintas localizaciones

Un sistema de memoria es coherente si:


Las escrituras a la misma posicin estn serializadas, o sea, dos
escrituras a la misma posicin por cualquiera dos procesadores
se ven en el mismo orden por todos los procesadores
(Si se escriben los valores 1 y 2 en una posicin, nunca se podr leer 2 antes que 1)
20

Tipos de consistencia de memoria


Estricta

Secuencial

Causal

PRAM

PSO

de
decach
cach

r1(x)1 w1(x)2 r1(x)2 w1(y)1


p1

p2
w2(x)1

r2(y)1 r2(x)1 r2(x)2


21

Tipos de consistencia de memoria


Dbil
Dbil

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

Tipos de consistencia de memoria


Dbil

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

Tipos de consistencia de memoria


Modelo

Mquina

Ordenes
ordinarios

Ordenes de
sincronizacin

Sequential
consistency

usado como modo


opcional

R R, R W,
W R, W W

S W, S R,
R S, W S,
SS

DEC, VAX , SPARC

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

Tipos de consistencia de memoria


Ejemplo:
Sequential
consistency

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

Implementacin HW de los modelos


relajados
Uso
Usode
dehardware
hardwareadicional
adicionalen
enlos
losprocesadores
procesadoresyyen
enlas
lasredes
redesde
deinterconexin
interconexinyy
memorias
memorias
Redes
Redesde
deinterconexin
interconexindeben
debenadmitir
admitirmltiples
mltiplespeticiones
peticionespor
porparte
partede
deun
un
procesador
(p.e:
algunas
peticiones
de
escritura
pendientes
y
una
lectura)
procesador (p.e: algunas peticiones de escritura pendientes y una lectura)

Ejemplo 1: Implementacin del modelo TSO

(PRAM)

Permitir que una lectura sobrepase a las escrituras pendientes a


direcciones diferentes
Se implementa con un buffer de escrituras pendientes por cada RAM
para contrastar direcciones de lectura
Un sistema de memoria y red de interconexin que soporte mltiples
(al menos dos) accesos (la lectura y, al menos, una escritura pendiente)
26

Implementacin HW de los modelos


relajados
Ejemplo 2: Implementacin del modelo release consistency
Permite ocultar latencias de escritura
El procesador debe poder permitir varias escrituras pendientes
(relajacin W W)
los fallos de lectura puedan sobrepasar a las escrituras pendientes
siempre que sean a direcciones diferentes
(relajacin W R)
Permite ocultar latencias de lecturas (si el procesador soporta lecturas
no bloqueantes y ejecucin de lecturas en desorden)
(relajacin R R)

27

Implementacin HW de los modelos


relajados
Ejemplo 2: Implementacin del modelo release consistency
Implementacin de consistencia SA R
Luego del despacho de una instruccin de sincronizacin de
adquisicin, las lecturas se ejecutan en orden hasta la liberacin
Implementacin de consistencia W SR
Despus de una instruccin SA y hasta una SR se debe asegurar
el cumplimiento de todas las invalidaciones de todas las escrituras
realizadas Cmo?
Agregar un contador a cada escritura (en cada entrada del store
buffer).
Para cada escritura, se decrementa el contador cada vez
que se realiza una invalidacin.
Cuando todos los contadores son cero, se permite la liberacin

28

Coherencia de las caches


Un
Unsistema
sistemade
dememoria
memoriaes
escoherente
coherentesisicualquier
cualquierlectura
lecturade
deuna
unaposicin
posicin
de
dememoria
memoriadevuelve
devuelveel
elvalor
valormas
masrecientemente
recientementeescrito
escritode
deesa
esaposicin
posicin
independientemente
del
procesador
que
escribe
y
que
lee
independientemente del procesador que escribe y que lee
Esquemas de coherencia de cachs
protocolos
protocolosde
desondeo
sondeo(snoopy)
(snoopy)

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

BusRdX: A requerimiento de un procesador


el bus solicita un bloque para ser
modificado por el procesador (PrWr)
El bloque debe ser invalidado en el
resto de las cach
BusWB : El controlador actualizar un bloque
de su cach en memoria (postescritura).
El procesador no se entera de esta
situacin

Memoria
Memoria

30

Protocolos de sondeo
Transaccin de escritura con invalidacin:
1.
2.
3.

4.

5.
6.

7.

El procesador debe escribir un valor


en un bloque
Enva un PrWr a su controlador de cach
El controlador debe asegurarse de tener
en cach la UNICA copia vlida del bloque
por lo que enva al bus un BusRdX
En respuesta a esta transaccin, quien
tenga la versin mas actual del bloque
(alguna cach o memoria) la entrega
al controlador solicitante.
Todas las cachs que tienen el bloque
lo invalidan
La nica copia vlida del bloque queda en la
cach del procesador que realizar la
escritura
El procesador enva un Store a su controlador
local para escribir el valor deseado

CPU 1
7

CPU 2
2

Driver
Driver cach
cach
3

Driver
Driver cach
cach
4

Memoria
Memoria

31

Coherencia de las caches


Protocolos de sondeo o snoopy
Nombre
Write Once

Synapse

Berkeley
MESI (Illinois)

Firefly

Dragon

Tipo de
protocolo

Estrategia de escritura

caractersticas

Write invalidate

Write back despus de la


primer escritura

Primer protocolo de
sondeo

Write invalidate

Write back

Estado explcito donde la


memoria es propietaria

Write invalidate

Write back

Estado propietario
compartido

Write back

Estado privado limpio:


puede entregar datos
desde cualquier cach
con copias limpias

Write update

Write back si es privado


Write through si es compartido

Memoria actualizada
para todos

Write update

Write back si es privado


Write through si es compartido

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

Coherencia de las caches


Protocolos basados en directorio
2 tipos
Centralizado
Tabla central que guarda informacin de todas las
cach que tienen determinado bloque de memoria
Gran tamao, por lo que la bsqueda es asociativa
alta competencia por el acceso al directorio por parte de las
distintas cach
subtipos: Mapeo completo y mapeo limitado

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

Coherencia de las caches


Protocolo de mapeo completo

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

Coherencia de las caches


Protocolo de mapeo completo
Fallo de lectura:
La cach local enva una solicitud de fallo de lectura a la memoria
Si es nica copia
la memoria solicita el bloque a la cach que lo tiene privado
Dicha cach resetea su bit de privado y pasa el bloque a memoria
La memoria resetea el bit de nica copia del bloque, activa el bit de presencia para la cach y
lo pasa a la cach solicitante que activa su bit de validez
Sino (el bloque est en varias cachs o en ninguna pero la copia de memoria es vlida)
La memoria copia el bloque a la cach solicitante activando su bit de presencia para ese bloque
Activa el bit de validez y resetea el bit de privado en la cach

41

Coherencia de las caches


Protocolo de mapeo completo
Fallo de escritura:
1- La cach local enva una solicitud de fallo de escritura a la memoria
2- La memoria enva peticiones de invalidacin a todas las cachs con copias de ese bloque reseteando
su bit de presencia
3- Las caches con copias ponen a cero sus bits de validez y envan un mensaje de ACK a memoria
4 -Si alguna cach tena su bit de privado activo, pasa copia del bloque a memoria
5 -Cuando la memoria tiene todos los ACK activa el bit de presencia de la cach solicitante y manda
el bloque a esa cach
6 - La cach solicitante activa sus bits de validez y de privado para ese bloque
7- La memoria activa el bit de nica copia

42

Coherencia de las caches


Protocolo de mapeo completo
Acierto de escritura:
Si el bit de privado del bloque en la cach local es 0
1- La cach enva una solicitud de privacidad a la memoria quien invalida toda otra copia del bloque
en cualquier otra cach
2- La memoria activa el bit de nica copia
3- La memoria enva un mensaje de ACK a la cach que activa su bit de privado para ese bloque
Sino (el bit de privado ya es 1)
La cach escribe sin problemas puesto que es la nica cach que tiene ese bloque

43

Coherencia de las caches


Protocolo de mapeo limitado
Restringe el nmero mximo de cachs activas simultneamente para un bloque
Usa el mismo protocolo de coherencia que el protocolo de mapeo completo
Sustituye los bits de presencia de cachs de cada bloque por cierto nmero de
punteros a cachs (procesadores)
Para P procesadores:
Tamao del directorio = (1 + NumPunteros * log2 P) * numBloques
Punteros
bit de nica copia

Memoria
Memoria

Pb

cach a

dir a dir b bloque

v
1

p
0

x
blq

44

Coherencia de las caches


Protocolos de directorio distribuido
Basado en punteros a la siguiente (y anterior) cach
La informacin del directorio se encuentra distribuida entre las cachs
Al no haber directorio centralizado se elimina el cuello de botella por el
acceso al mismo
En la memoria, el bloque slo tiene un puntero que apunta a la primer cach
Se basa en encadenar mediante punteros a las cachs activas para un bloque
En ambos subtipos se encadenan las cachs activas mediante punteros pero
en los jerrquicos las cachs se agrupan en clusters ms pequeos
Tamao del directorio = log2 P * numBloques

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

Coherencia de las caches


Protocolo de mapeo encadenado
Fallo de lectura:
1.
2.
3.
4.
5.
6.

La cach c enva a memoria una solicitud de fallo de lectura


La memoria manda a cach c el puntero del bloque (ejemplo: cach_a)
La memoria actualiza el puntero del bloque con la direccin de la cach_c
La cach c apunta su predecesor al bloque en memoria
La cach c manda mensaje a la cach a para que apunte su predecesor a cach c
La memoria manda el bloque de datos actualizado a la cach c

mensaje de solicitud de bloque para lectura

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

envo del bloque actualizado

46

Coherencia de las caches


Protocolo de mapeo encadenado
Fallo
Fallode
deescritura:
escritura:
1.1.
2.2.
3.3.
4.4.
5.5.
6.6.
7.7.

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".

function Test_And_Set (var valor:boolean):boolean;


begin
Test_and_set:=valor;
Valor:=True;
end

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