Está en la página 1de 3

Coherentes de cache y el protocolo MESI

En los sistemas multiprocesadores actuales es comn disponer de uno o dos niveles de cache
asociados a cada procesador, esto es llevado a cabo para conseguir prestaciones ms adecuadas
pero a la vez ocasiona un problema conocido como coherencia de cache.

Qu es el la Coherencia de Cache?
Es cuando existen varias copias del mismo dato simultneamente en caches diferentes, por lo tanto si
los procesadores actualizan sus copias puede producirse inconsistencia de memoria, debido a que se
puede estar trabajando con datos errneos, sin tener conocimiento de ello. Cuando un procesador
cambia (escribe) un dato en su propia cache local, el cambio debe hacerse en todas las caches que
tienen copia. Alternativamente, las otras copias se deben invalidar. Es decir, los datos compartidos
deben ser coherentes en todas las caches del sistema.

Cul es el Objetivo de un Protocolo de Coherencia?
Es situar las variables locales utilizadas recientemente en la cache apropiada y mantenerlos all para
las distintas escrituras y lecturas, al mismo tiempo que se mantiene la consistencia de las variables
compartidas que pudieron encontrarse en varias caches al mismo tiempo.

Soluciones de Coherencia de Cache.
Generalmente se han dividido en soluciones de software y hardware:
Software: intentan evitar la necesidad de circuitera y lgica de hardware adicional dejando que
el compilador y el sistema operativo se encarguen del problema. Esto lo que quiere decir es que el
compilador realiza un anlisis del cdigo para determinar qu datos pueden dar problemas al pasar a
cache, y los marcan en consecuencia. Despus el sistema operativo o el hardware impiden que se
pasen a cache los datos marcados como no almacenables en cache.
Hardware: estos se denominan protocolos de coherencia de cache. Y permiten reconocer
dinmicamente en el momento de la ejecucin las situaciones de inconsistencia por lo tanto, existe un
uso ms efectivo de las caches y reduce la complejidad en el desarrollo del software.

Protocolos de Directorio:
Los protocolos basados en directorio mantienen un directorio centralizado de los bloques que hay en
las caches. Se utilizan tanto en multiprocesadores con memoria fsicamente distribuida, como en
sistemas con memoria centralizada con red escalable. Estos protocolos de mantenimiento de
coherencia reducen el trfico en la red enviando selectivamente rdenes slo a aquellas caches que
disponen de una copia vlida del bloque implicado en la operacin de memoria

Protocolos de Sondeo (Snoopy Protocols)
Hace que las caches individualmente monitoreen las lneas (buses) de direcciones de accesos a
memoria con respecto a los bloques que han copiado. Cuando una operacin de escritura es
observada sobre una direccin de un bloque del cual tiene un bloque, el controlador de cache invalida
su copia. Tambin es posible que el controlador de cache observe la direccin y el dato
correspondiente a esa direccin, intentando as actualizar su copia cuando alguien modifica dicho
bloque en la memoria principal
Protocolo Mesi:
Con el protocolo MESI, la cache de datos incluye dos bits de estado en la marca, puesto que la lnea
puede estar en uno de estos cuatro estados:
Modificado (Modified): La lnea de cach ha sido modificada (es distinta a su valor en memoria
principal) y est disponible solo en esta cache.
Exclusivo (Exclusive): La lnea de cach tiene el mismo contenido que en memoria principal y no
est presente en ninguna otra cache.
Compartido (Shared): La lnea de cach tiene el mismo contenido que en memoria principal y
puede estar presente en otra cachs.
No-vlido (Invalid): La lnea de cach no contiene datos vlidos.

Veamos las transiciones segn las operaciones realizadas sobre las cachs:

Fallo de lectura: Cuando se produce fallo de lectura en la cach local, el controlador inicia una lectura
en memoria principal. Para ello, inserta una seal en el bus, que alerta a los otros controladores para
que sondeen la transaccin. Hay varias posibilidades: Si un controlador tiene ese bloque en su cach
como exclusivo, devuelve una seal indicando que comparte el bloque y lo pasa a estado compartido.
El controlador inicial lee el bloque y lo etiqueta como compartido. Si uno o varios controladores ya
tenan ese bloque en su cach como compartido, mandan una seal para que el controlador inicial lo
cargue tambin como compartido. Si un controlador tiene una copia modificada del bloque, le indica al
procesador inicial que vuelva a intentar el acceso. Mientras, toma el control del bus, escribe el bloque
modificado en memoria principal, y pasa el estado de modificado a compartido. A continuacin, el
controlador inicial intenta de nuevo la lectura, dndose el caso anterior. Si el bloque no est en otra
cach, ningn controlador enva seal. El controlador inicial lee el bloque como exclusivo.

Acierto de Lectura: Cuando se produce un acierto en una lectura en la cach local, el procesador
simplemente lee el dato solicitado. No hay ningn cambio de estado.

Fallo de escritura: En este caso la lnea se coge de la cach que la tenga. Si ninguna la tiene, se
coge de la memoria principal. Si la lnea que se coge est modificada entonces se escribe esta lnea
tambin a la memoria al mismo tiempo. Si es compartida, la cach con mayor prioridad es la que
entrega la lnea. La lnea leda se actualiza y se pone en estado modificada. El resto de lneas pasan
al estado invlidas. Hay que hacer notar que este protocolo slo permite un nico escribiente, es
decir, una lnea modificada slo est presente en una nica cach.
Acierto de escritura: Hay tres posibilidades, en funcin del estado del bloque a escribir: Compartido:
Antes de actualizar, debe conseguir el acceso exclusivo al bloque, por lo que enva una seal al resto.
Todo procesador que tenga una copia la pasa de estado compartido a no vlido. Despus, el
procesador inicial modifica el bloque y lo pasa de estado compartido ha modificado. Exclusivo:
modifica el bloque y lo pasa a estado modificado. Modificado: slo actualiza el valor.






Consistencia de cachs L1-L2

Hasta ahora se han descrito los protocolos de coherencia de cach en trminos de la cooperacin
entre las cachs conectadas al mismo bus o a otro sistema de interconexin utilizado por un SMP.
Normalmente, estas cachs son cachs L2. Sin embargo, en este caso, cada procesador tambin
tiene una cach L1 que no est conectada directamente al bus y que, por lo tanto, no puede participar
en un protocolo de sondeo. Esta cach L1 tambin necesita un esquema para mantener la coherencia
de los datos en los dos niveles de cach y en todas las cachs del SMP.
La estrategia utilizada consiste en extender el protocolo MESI (o cualquier otro protocolo de
coherencia de cach) a las cachs L1. Cada lnea de la cach L1 incluye bits para indicar su estado.
Bsicamente, el objetivo es que para cualquier lnea que est presente tanto en cach L2 como en su
correspondiente cach L1, el estado de la lnea en L1 debe seguir el trayecto del estado de la lnea en
L2.

Conclusin

También podría gustarte