Protocolos de Sondeo
SNOOPY
Integrantes:
•Katerine Huillca Apaza
•Rosberg Borda Solorio
Introducción
• Coherencia de cache
– Básicamente consiste en que cualquier lectura de
un dato devuelve el valor más recientemente
escrito de ese dato
Políticas de escritura
• Pos escritura (write back)
– Las operaciones de escritura se hacen usualmente
solo en la caché, la memoria principal solo se
actualiza cuando la línea de cache
correspondiente se reemplaza.
• Escritura directa (write though)
• Todas las operaciones de escritura se realizaran en
memoria principal a la vez que en la cache, asegurandose
así que el contenido de la memoria principal siempre es
valido
Soluciones al problema de coherencia
de cache
• Soluciones Software
– Usamos al sistema operativo para evitar que
cualquier dato compartido pase a la cache.
– Se evitan el uso de muchos circuitos y lógica del
hardware.
Soluciones Hardware
• Son los protocolos de coherencia de caches
(protocolos de sondeo)
• Permite reconocer dinámicamente el
problema.
• Existe un uso mas efectivo de las caches.
PROTOCOLOS DE SONDEO
• Los controladores de las caches son capaces
de sondear o espiar (snoop) a los otras caches
con el fin de identificar cada notificación que
se realiza y reaccionar adecuadamente.
• Al modificar un bloque en la cache se opta por
dos alternativas:
– Invalidar.
– Actualizar.
Invalidar
Actualizar
Estados de los bloques en la memoria
cache
• Se suelen usar cinco estados.
– Invalido (I)
– Exclusivo (E)
– Modificado (M)
– Compartido (S)
– Propietario (O)
• El uso de los estados depende de cada
protocolo
SEÑALES DE CONTROL
• Acciones del procesador local
– PR: processor read: Se lee una variable (en un
bloque de datos).
– PW: processor write: Se escribe en una variable
(un bloque de cache).
• Acciones que se observan en el bus
– BR: bus read: Un procesador quiere leer una
palabra.
– INV: invalidate : Se escribe una palabra en la
cache y, por tanto, hay que eliminar todas las
copias de dicho bloque.
– BC: broadcast: Se escribe una palabra en la cache,
por lo que hay que actualizar todas las copias de
dicha variable.
• BW: bus write: Un procesador va escribir un
bloque entero de datos en memoria principal.
• BW*: Un procesador va a escribir una palabra
en memoria principal
Protocolos de invalidación
• Tenemos tres protocolo s de invalidación:
– MSI
– MESI
– MOSI (BERKELEY)
MSI
• El protocolo usa los tres estados necesarios en
cualquier cache post-escritura para distinguir
bloques validos que no han sido modificados.
Los estados son:
• Invalido(I)
• Compartido (S)
• Modificado (M)
• Compartido (S) .- Compartido significa que el
bloque esta presente en la cache y no ha sido
modificado, la memoria principal esta
actualizada y cero o mas caches adicionales
pueden tener también una copia actualizada
(compartida).
• Modificado (M).- Modificado significa que
únicamente este procesador tiene una copia
valida del bloque en su cache, la copia en la
memoria principal esta anticuada y ninguna otra
cache puede tener una copia valida del bloque.
• Antes escrito y pasar al estado modificado, todas
las demás copias potenciales deben de ser
invalidadas vía una transacción de bus de lectura
exclusiva.
• Esta transacción sirve para ordenar la escritura
al mismo tiempo que causa la invalidaciones y
por tanto asegura que la escritura se hace
visible a los demás.
MESI
• El protocolo MESI consiste en cuatro estados:
•
•
•
•
Modificado (M)
Exclusivo (E)
Compartido(S)
Invalido (I)
• Exclusivo (E).- El estado exclusivo, significa que
únicamente una cache tiene una copia del
bloque, y no ha sido modificado (es decir, la
memoria principal esta actualizada)
• Compartido(S) .- El estado compartido
significa que potencialmente dos o mas
procesadores tienen este bloque en su cache
en un estado no modificado.
BERKELEY
• El protocolo Berkeley, también llamado
Berkeley-SPUR, usa la idea de propietario de la
línea de cache.
En cualquier instante una línea de cache solo
puede ser propiedad de una sola de las
caches, y si ninguna tiene esa línea entonces
se encuentra en memoria principal.
• Hay cuatro estados y son :
•
•
•
•
Invalida
Solo lectura
Súcia compartida
Sucia privada
• Cuando una línea esta compartida, solo el
propietario tiene esa línea en el estado sucia
compartida; todos los demás deberán tener
esa línea como solo lectura. Por lo tanto, una
línea de cache solo puede estar en el estado
sucia compartida o sucia privada en una única
cache, que será la propietaria de esa línea.
PROTOCOLOS DE ACTUALIZACION
• MSE (FIREFLY)
• MOES (DRAGON)
DRAGON
• El protocolo Dragon consta de 4 estados:
•
•
•
•
Exclusivo (E)
Compartido (SC)
Compartido Modificado (SM)
Modificado (M)
• Exclusivo (E).- El estado exclusivo significa que
solo existe una cache (esta cache) con una
copia del bloque y que dicho bloque no ha
sido modificado
• Compartido (S) .- Significa que potencialmente
dos o mas procesadores (incluyendo esta
cache) tienen este bloque en su cache y que la
memoria principal puede estar o no
actualizada
• Propietario(0) .- Significa que potencialmente
dos o mas procesadores tienen este bloque en
su cache, la memoria principal no esta
actualizada y este procesador es el
responsable de actualizar la memoria principal
cuando este bloque sea reemplazado en la
cache
• Modificado (M) .- Significa, como
anteriormente, que el bloque ha sido
modificado únicamente en esta memoria, la
memoria principal tiene un valor anticuado, y
este procesador es el responsable de
actualizar la memoria principal
FIREFLY
• El Firefly tiene 4 estados aunque en realidad
solo utiliza tres que son:
• Lectura privada,
• Lectura compartida
• Sucia privada.
• El Firefly utiliza el esquema de actualización en
vez del de invalidación, es decir, las escrituras a la
cache son vistas por todos y se escribe a la
memoria principal. El resto de caches que
comparten la línea, buscan el bus actualizando
sus copias. Por lo tanto, ninguna línea de cache
será invalida después de ser cargada. Hay una
línea especial del bus, la Línea Compartida, que
se activa para indicar que al menos otra cache
comparte la línea.
GRACIAS
Descargar

Protocolos de Sondeo