Академический Документы
Профессиональный Документы
Культура Документы
Universidad de Valencia
Captulo 5.
Multiprocesadores.
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
caso de usar varios procesadores, nos gustara poder basarnos en la misma propiedad cuando dos
procesos se ejecuten sobre diferentes procesadores de tal forma que el resultado de ejecutar un
programa que usa varios procesos sea el mismo independientemente de si los procesos se
ejecutan o no en diferentes procesadores fsicos.
Sin embargo, cuando dos procesos ven la memoria compartida a travs de diferentes cachs,
existe el peligro de que uno vea el nuevo valor en su cach mientras que el otro todava vea el
antiguo.
El problema de la coherencia en sistemas multiprocesadores se puede ver claramente mediante un
ejemplo. Supongamos dos procesadores, cada uno con su cach, conectados a una memoria
compartida. Supongamos que ambos procesadores acceden a una misma posicin X en memoria
principal. La figura 5.1 muestra los contenidos de las cachs y memoria principal asumiendo que
ninguna cach contiene inicialmente la variable que vale inicialmente 1. Tambin se asume una
cach de escritura inmediata o escritura directa (write-through). Despus de que el valor en X
ha sido escrito por A, la cach de A y la memoria contiene el nuevo valor, pero la cache de B no,
y si B lee el valor de X, leer 1 y no 0 que es el valor de la memoria!
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
3. Las escrituras a la misma posicin estn serializadas, es decir, dos escrituras a la misma
posicin por cualquiera dos procesadores se ven en el mismo orden por todos los
procesadores. Por ejemplo, si se escriben los valores 1 y 2 en una posicin, los procesadores
nunca pueden leer el valor 2 y luego el 1.
La primera condicin preserva el orden del programa y debe ser as incluso para
monoprocesadores. La segunda condicin define lo que se entiende por tener una visin
coherente de la memoria. Con estas condiciones el problema para tener un sistema coherente
queda resuelto, sin embargo, todava queda el problema de la consistencia.
Para ver que el problema de la consistencia es complejo, basta con observar que en realidad no es
necesario que una lectura sobre X recoja el valor escrito de X por otro procesador. Si por
ejemplo, una escritura sobre X precede una lectura sobre X por otro procesador en un tiempo
muy pequeo, puede ser imposible asegurar que la lectura devuelva el valor tan recientemente
escrito, ya que el valor a escribir puede incluso no haber abandonado el procesador que escribe.
La cuestin sobre cundo exactamente un valor escrito debe ser visto por una lectura se define
por el modelo de consistencia de la memoria.
Otro ejemplo que ilustra el problema de incoherencia de la memoria se puede ver en la figura 5.2.
En esta figura se muestran tres procesadores con cachs propias y conectados a travs de un bus
comn a una memoria compartida. La secuencia de accesos a la localizacin u hecha por cada
procesador es la que se indica mediante los nmeros que aparecen al lado de cada arco. Veamos
cules son los valores ledos por P1 y P2 dependiendo del tipo de cach utilizada.
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
Los problemas de coherencia en la cach tambin ocurren cuando utilizamos un nico procesador
en el caso de las operaciones de E/S. La mayora de estas operaciones se realizan a travs de
dispositivos DMA (Direct Memory Access) con lo que es posible que el contenido de la
memoria principal y la memoria cach dejen de ser coherentes. Sin embargo, dado que las
operaciones de E/S son mucho menos frecuentes que las operaciones de acceso a memoria, se han
adoptado soluciones sencillas como usar direcciones de memoria que se marcan como no
almacenables en la memoria cach o eliminar todos los bloques existentes en las cachs de las
pginas que se van a utilizar en la operacin de E/S antes de proceder a realizar dicha operacin.
En la actualidad, casi todos los microprocesadores proporcionan mecanismos para soportar la
coherencia de cachs.
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
operacin deben parecer que se han ejecutado antes de cualquier aspecto de la operacin
siguiente.
Emisin: Una operacin de memoria es emitida cuando deja el entorno interno del procesador y
se presenta a todo el sistema de memoria, que incluye las cachs, los buffers de escritura, el bus,
y los mdulos de memoria. Un punto muy importante es que el procesador slo observa el estado
del sistema de memoria mediante la emisin de operaciones de memoria; es decir, nuestra nocin
de lo que significa que una operacin de memoria haya sido realizada es que parezca que ha
tenido lugar desde la perspectiva del procesador.
Realizada con respecto a un procesador: Una operacin de escritura se dice que ha sido
realizada con respecto al procesador cuando una lectura posterior por el procesador devuelve el
valor producido por esa escritura o una posterior. Una operacin de lectura se dice que ha sido
realizada con respecto al procesador cuando escrituras posteriores emitidas por el procesador no
pueden afectar al valor devuelto por la lectura.
Las mismas operaciones realizadas con respecto a un procesador se pueden aplicar al caso
paralelo; basta con reemplazar en la definicin el procesador por un procesador. El problema
que aparece con el concepto de orden y de las nociones intuitivas de posterior y ltima, es que
ahora ya no tenemos un orden definido por el programa sino rdenes de programas separados
para cada proceso y esos rdenes de programa interactan cuando acceden al sistema de
memoria. Una manera de agudizar nuestra nocin intuitiva de sistema de memoria coherente es
determinar qu pasara en el caso de que no existieran cachs. Cada escritura y lectura a una
localizacin de memoria accedera a la memoria fsica principal y se realizara con respecto a
todos los procesadores en dicho punto, as la memoria impondra un orden secuencial entre todas
las operaciones de lectura y escritura realizadas en dicha localizacin. Adems, las lecturas y
escrituras a una localizacin desde cualquier procesador individual debern mantener el orden del
programa dentro de esta ordenacin secuencial. No hay razn para creer que el sistema de
memoria deba intercalar los accesos independientes desde distintos procesadores en una forma
predeterminada, as cualquier intercalado que preserve la ordenacin de cada programa individual
es razonable. Podemos asumir algunos hechos bsicos; las operaciones de cada procesador ser
realizadas en algn momento dado. Adems, nuestra nocin intuitiva de ltimo puede ser vista
como el ms reciente en alguno de las hipotticas ordenaciones secuenciales que mantienen las
propiedades discutidas en este prrafo.
Dado que este orden secuencial debe ser consistente, es importante que todos los procesadores
vean las escrituras a una localizacin en el mismo orden.
Ms formalmente, decimos que un sistema de memoria multiprocesador es coherente si el
resultado de cualquier ejecucin de un programa es tal que, para cada localizacin, es posible
construir una hipottica ordenacin secuencial de todas las operaciones realizadas sobre dicha
localizacin (es decir, ordenar totalmente todas las lecturas/escrituras emitidas por todos los
procesadores) que sea consistente con los resultados de la ejecucin y en el cual:
1. las operaciones emitidas por un procesador particular ocurre en la secuencia arriba indicada
en el orden en las cuales se emiten al sistema de memoria por ese procesador, y
Vicente Arnau Llombart
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
2. el valor devuelto por cada operacin de lectura es el valor escrito por la ltima escritura en
esa localizacin en la secuencia arriba indicada.
Est implcita en la definicin de coherencia la propiedad de que todas las escrituras a una
localizacin (desde el mismo o diferente procesador) son vistas en el mismo orden por todos los
procesadores. A esta propiedad se le denomina serializacin de las escrituras. Esto significa que
si las operaciones de lectura del procesador P1 a una localizacin ven el valor producido por la
escritura w1 (de, por ejemplo, P2) antes que el valor producido por la escritura w2 (de, por
ejemplo, P3), entonces las lecturas de otro procesador P4 (o P2 o P3) no deben poder ver w2
antes que w1. No hay necesidad de un concepto anlogo para la serializacin de las lecturas, dado
que los efectos de las lecturas no son visibles para cualquier procesador distinto de aquel que la
realiza.
El resultado de un programa puede ser visto como los valores devueltos por las operaciones de
lectura que realiza, quizs aumentado con un conjunto implcito de lecturas a todas las
localizaciones al final del programa. De los resultados no podemos determinar el orden en el cual
las operaciones se realizaron realmente por la mquina, sino el orden en el que parece que se
ejecutaron. De hecho, no es importante en qu orden las cosas ocurren realmente en la mquina o
cundo cambi cada bit, dado que no es detectable; todo lo que importa es el orden en el cual las
cosas parecen haber ocurrido, como detectable a partir de los resultados de una ejecucin.
Para finalizar, una definicin adicional que necesitamos en el caso de los multiprocesadores es la
de completitud de una operacin: Una operacin de lectura o escritura se dice que se ha
completado cuando se ha realizada con respecto a todos los procesadores.
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
realizar las transacciones de coherencia necesarias segn lo que ocurra en el bus en cada
momento.
En el segundo tipo de sistemas, con varias subredes locales y un amplio nmero de procesadores,
un protocolo de sondeo es complicado de realizar puesto que las actividades en los sub-buses son
difciles de fisgar, ya que las transacciones van a ser locales a estos. Para estos sistemas ms
complejos se utiliza un tipo de protocolo basado en directorio, que consiste en la existencia de un
directorio comn donde se guardan el estado de validez de las lneas de las cachs, de manera que
cualquier nodo puede acceder a este directorio comn.
Dado que los sistemas multiprocesadores basados en memoria compartida y cach suelen estar
basados en bus, o una jerarqua de buses con no muchos niveles, los protocolos de coherencia
suelen ser de sondeo, por esto se le dedica una atencin especial a este tipo de protocolos.
Entre los protocolos de coherencia, tanto si son de sondeo como si no, existen en general dos
polticas para mantener la coherencia: invalidacin en escritura (write invaldate) y
actualizacin en escritura (write update).
En estas polticas, los protocolos usados para la invalidacin o actualizacin de las otras copias
dependen de la red de interconexin empleada.
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
como modificado de tal forma que la actualizacin en memoria principal ocurre cuando el bloque
es reemplazado. En un multiprocesador, este estado de modificado tambin se usa por parte del
protocolo para indicar la pertenencia de forma exclusiva del bloque por parte de la cach. En
general, se dice que una cach es propietaria de un bloque si debe suministrar los datos ante una
peticin de ese bloque. Se dice que una cach tiene una copia exclusiva de un bloque si es la
nica cach con una copia vlida del bloque (la memoria principal puede o no tener una copia
vlida). La exclusividad implica que la cach puede modificar el bloque sin notificrselo a nadie.
Si una cach no tiene la exclusividad, entonces no puede escribir un nuevo valor en el bloque
antes de poner una transaccin en el bus para comunicarse con las otras cachs. Si una cach
tiene el bloque en estado modificado, entonces dicho nodo es el propietario y tiene la
exclusividad. (La necesidad de distinguir entre propiedad y exclusividad se aclarar muy pronto.)
En un fallo de escritura, una forma especial de transaccin llamada lectura exclusiva se usa para
impedir a las otras cachs la escritura o adquirir una copia del bloque con propiedad exclusiva.
Esto hace que el bloque de la cach pase a estado modificado permitiendo la escritura. Varios
procesadores no pueden escribir el mismo bloque de forma concurrente, lo que llevara a valores
inconsistentes: Las transacciones de lectura exclusiva generadas por sus escrituras aparecern de
forma secuencial en el bus, as que slo una de ellas puede obtener la propiedad exclusiva del
bloque en un momento dado. Las acciones de coherencia de cach se consiguen mediante estos
dos tipos de transacciones: lectura y lectura exclusiva. Eventualmente, cuando un bloque
modificado se reemplaza en la cach, los datos se actualizan en la memoria, pero este evento no
est producido por una operacin de memoria sobre ese bloque y su importancia en el protocolo
es incidental. Un bloque que no ha sido modificado no tiene que se escrito en la memoria y puede
ser descartado.
Tambin debemos considerar los protocolos basados en la actualizacin. En este caso, cuando se
escribe en una localizacin compartida, el valor actualizado se transfiere a todos los procesadores
que tienen ese bloque en la cach. De esta forma, cuando los procesadores acceden a ese bloque
posteriormente, pueden hacerlo desde sus cachs con baja latencia. Las cachs de todos los dems
procesadores se actualizan con una nica transaccin del bus, conservando el ancho de banda. Por
contra, con los protocolos basados en la invalidacin, en una operacin de escritura el estado de
la cach de ese bloque de memoria en todos los dems procesadores son declarados invlidos.
Las ventajas e inconvenientes de ambos protocolos son complejos y dependen de la carga de
trabajo. En general, las estrategias basadas en la invalidacin se han mostrado ms robustas y se
proporcionan como el protocolo bsico por la mayora de los vendedores. Algunos vendedores
proporcionan un protocolo de actualizacin como una opcin a ser utilizada para bloques
correspondientes a estructuras de datos especficas o pginas.
A continuacin veremos los protocolos MSI, MESI (conocido tambin como Illinois).
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
Lectura del bus (BusRd): El controlador de la cach pone la direccin en el bus y pide una
copia que no piensa modificar. El sistema de memoria (posiblemente otra cach) proporciona
el dato. Esta transaccin se genera por un PrRd que falla en la cach y el procesador espera
como resultado de esta transaccin el dato solicitado.
Lectura exclusiva del bus (BusRdX): El controlador de la cach pone la direccin en el bus
y pide una copia exclusiva que piensa modificar. El sistema de memoria (posiblemente otra
cach) proporciona el dato. Todas las dems cachs necesitan ser invalidadas. Esta
transaccin se genera por una PrWr a un bloque que, o no est en la cach o est en la cach
en un estado distinto al modificado. Una vez la cach obtiene la copia exclusiva, la escritura
puede realizarse en la cach. El procesador puede solicitar una confirmacin como resultado
de esta transaccin.
Escritura (BusWB): El controlador de la cach pone la direccin y el contenido para el
bloque de la memoria en el bus. La memoria principal se actualiza con el ltimo contenido.
Esta transaccin la genera el controlador de la cach en una post-escritura; el procesador no
conoce este hecho y no espera una respuesta.
La lectura exclusiva del bus es una nueva transaccin que puede no existir excepto para la
coherencia de la cach. Otro nuevo concepto necesario para soportar los protocolos de postescritura es que junto con el cambio de estado de cada bloque en la cach, el controlador de la
Vicente Arnau Llombart
10
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
cach puede intervenir en las transacciones del bus y poner el contenido del bloque referenciado
en el bus, en vez de permitir que la memoria proporcione el dato.
Por supuesto, el controlador de la cach tambin puede iniciar nuevas transacciones, proporcionar
datos para las post-escrituras, o coger los datos proporcionados por el sistema de memoria.
El diagrama de estados que gobierna un bloque en cada cach en este protocolo se muestra en la
figura 5.4. Los estados estn organizados de tal manera que conforme un estado est ms cerca de
la parte superior ms ligado est el bloque a ese procesador. La lectura de un bloque invlido por
parte de un procesador (incluyendo los no presentes) produce una transaccin BusRd. El bloque
recientemente cargado se promociona desde el estado invlido al estado compartido dependiendo
de si otra cach tiene una copia del bloque. Cualquier otra cach con el bloque en el estado
compartido observa el BusRd, pero no toma ninguna accin especial, permitiendo que la
memoria responda con el dato. Sin embargo, si una cach tiene el bloque en el estado modificado
(y nicamente puede haber una) y observa una transaccin BusRd en el bus, debe participar en la
transaccin ya que la copia existente en memoria no es vlida. Esta cach enva los datos al bus
en lugar de la memoria y degrada su copia del bloque al estado compartido. La memoria y la
cach que peda el dato son actualizadas. Esto puede conseguirse mediante una transferencia
directa entre las cachs a travs del bus durante esta transaccin BusRd o indicando un error en la
transaccin BusRd y generando una transaccin de escritura para actualizar la memoria. En el
ltimo caso, la cach original volvera a realizar su solicitud para obtener el bloque de la
memoria. (Tambin es posible hacer que el dato puesto en el bus sea tomado por la cach que
realiz la peticin pero no por la memoria, dejando la memoria sin actualizar, pero este caso
requiere ms estados).
Una escritura en un bloque invlido implica cargar el bloque entero y despus modificar los bytes
que se deseen. En este caso se genera una transaccin de lectura exclusiva en el bus, que causa
Vicente Arnau Llombart
11
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
que todas las otras copias del bloque sean invalidadas, asegurando a la cach que realiza la
peticin la propiedad exclusiva del bloque. El bloque asciende al estado de modificado y despus
se escribe. Si otra cach realiza una peticin posterior de acceso exclusivo, en respuesta a su
transaccin BusRdX el bloque se degradar al estado de invlido despus de poner la copia
exclusiva en el bus.
La transaccin ms interesante ocurre cuando se escribe en un bloque compartido. El tratamiento
en este caso es igual al de una escritura en un bloque invlido, usando una transaccin de lectura
exclusiva en el bus para adquirir la propiedad exclusiva del bloque. Los datos que nos devuelve el
bus pueden ser ignorados en este caso ya que ya existen en la cach. De hecho, una optimizacin
comn para reducir el trfico en el bus es introducir una nueva transaccin, llamada actualizacin
del bus o BusUpgr, para esta situacin. Un BusUpgr obtiene la propiedad exclusiva al igual que
un BusRdX, invalidando las dems copias, pero no devuelve el bloque al que realiz la peticin.
Independientemente de la transaccin utilizada, el bloque pasa al estado modificado. Posteriores
escrituras en el bloque mientras permanece en ese estado no generan nuevas transacciones.
El reemplazamiento de un bloque de la cach lleva a dicho bloque al estado de invlido (no
presente) eliminndolo de la cach. Por lo tanto, un reemplazamiento supone que dos bloques
cambien de estado en la cach: el que es reemplazado pasa de su estado actual al estado de
invlido, el que ocupa su lugar de invlido a su nuevo estado. El ltimo cambio no puede tener
lugar antes del primero. Si el bloque a ser reemplazado estaba en el estado de modificado, la
transicin de reemplazamiento de M a I genera una transaccin de post-escritura. Si estaba en el
estado invlido o compartido, no es necesario hacer nada.
El resultado de aplicar el protocolo MSI al ejemplo mostrado en la figura 5.2 se puede ver en la
figura 5.5.
Accin Procesador
Est. P1 Est. P2 Est. P3
Accin bus
Datos suminis. por
1. P1 lee u
S
BusRd
Memoria
2. P3 lee u
S
S
BusRd
Memoria
3. P3 escribe u
I
M
BusRdX
Memoria
4. P1 lee u
S
S
BusRd/Flush
Cach de P3
5. P2 lee u
S
S
S
BusRd
Memoria
Figura 5.5: Protocolo de invalidacin MSI para las transacciones mostradas en la figura 5.2.
Problema 5.01: Relata lo que sucede en el protocolo MSI cuando en un procesador suceden las
siguientes acciones: a) Fallo de lectura, b) Fallo de escritura, c) Acierto escritura d) Acierto lectura
y d) Reemplazo de dato.
12
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
Problema 5.02: Tenemos un sistema multiprocesador con protocolo MSI. Completa la siguiente
tabla teniendo en cuenta todos los procesadores leen y escriben sobre la misma posicin de memoria
y adems inicialmente ningn procesador posee copia del dato.
Satisfaccin de la coherencia.
Dado que pueden existir lecturas y escrituras a cachs locales de forma simultnea, no es obvio
que se satisfaga la condicin de coherencia y mucho menos la de consistencia secuencial.
Examinemos en primer lugar la coherencia. Las transacciones de lectura exclusiva aseguran que
la cach en donde se realiza la escritura tiene la nica copia vlida cuando el bloque se modifica
en la cach. El nico problema que podra existir es que no todas las escrituras generan
transacciones en el bus. Sin embargo, la clave aqu es que entre dos transacciones de bus para un
bloque, nicamente un procesador puede realizar las escrituras; el que realiz la transaccin de
lectura exclusiva ms reciente. En la serializacin, esta secuencia de escrituras aparecer en el
orden indicado por el programa entre esa transaccin y la siguiente transaccin para ese bloque.
Las lecturas que realice dicho procesador tambin aparecern en orden con respecto a las otras
escrituras. Para una lectura de otro procesador, existir al menos una transaccin del bus que
separar la finalizacin de la lectura de la finalizacin de esas escrituras. Esa transaccin en el
bus asegura que la lectura ver todas las escrituras en un orden secuencial consistente. Por lo
tanto, las lecturas de todos los procesadores ven todas las escrituras en el mismo orden.
13
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
pasar al estado modificado sin ninguna transaccin del bus, al contrario que en el caso de estar en
el estado compartido; pero no implica pertenencia, as que al contrario que en el estado
modificado la cach no necesita responder al observar una peticin de dicho bloque (la memoria
tiene una copia vlida). Variantes de este protocolo MESI se usan en muchos de los
microprocesadores modernos, incluyendo el Pentium, PowerPC 601 y el MIPS R4400 usado en
los multiprocesadores Silicon Graphics Challenge. A este protocolo tambin se le conoce como
protocolo Illinois por haber sido publicado por investigadores de la Universidad de Illinois en
1984.
El protocolo MESI consiste en cuatro estados: modificado (M), exclusivo (E), compartido (S) e
invlido (I). I yM tienen la misma semntica que antes. El estado exclusivo, E, significa que
nicamente una cach (esta cach) tiene una copia del bloque, y no ha sido modificado (es decir,
la memoria principal est actualizada). El estado S significa que potencialmente dos o ms
procesadores tienen este bloque en su cach en un estado no modificado.
Cuando un procesador lee por primera vez un bloque, si existe una copia vlida en otra cach
entra en la cach del procesador con el estado S. Sin embargo, si no existe otra copia en ese
instante (por ejemplo, en una aplicacin secuencial), entra con el estado E. Cuando ese bloque se
actualiza por medio de una escritura puede pasar directamente del estado E a M sin generar otra
transaccin en el bus, dado que no existe otra copia. Estando una cache en estado E, si otra cach
solicita copia del bloque, el estado del bloque deber pasar de E a S.
Es importante sealar que este protocolo necesita que el bus proporcione una seal adicional (S,
de Shared) que est disponible para que los controladores puedan determinar en una
transaccin BusRd si existe otra cach que tenga el mismo bloque.
Durante la fase en la que se indica en el bus la direccin del bloque al que se quiere acceder,
todas las cachs determinan si tienen el bloque que se solicita y, si eso ocurre, activan la seal
compartida. Esta es una lnea cableada como un OR, con lo que el controlador que realiza la
peticin puede observar si existe otro procesador que tenga en su cach el bloque de memoria
referenciado y decidir si la carga del bloque se debe realizar en el estado S o E.
El diagrama de transicin de estados para este protocolo se muestra en la figura 5.7.
14
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
La notacin BusRd(S) significa que cuando la transaccin de lectura en el bus ocurre, se activa la
seal S, y BusRd() significa que S no est activada. Una transaccin BusRd significa que no nos
importa el valor de S en esa transaccin. Una escritura a un bloque en cualquier estado hace que
este pase al estado M, pero si estaba en el estado E no se necesita una transaccin del bus. La
aparicin de un BusRd hace que el bloque pase del estado E al S, dado que existe otra copia del
bloque. Como ocurra anteriormente, la aparicin de una transaccin BusRd hace que un bloque
que estuviese en el estado M pase al estado S y dicho bloque sea puesto en el bus. Tal como
ocurra en el protocolo MSI es posible hacer que dicho bloque no sea actualizado en la memoria
principal, pero seran necesarios nuevos estados. Obsrvese que es posible que un bloque est en
el estado S incluso sin existir otras copias, dado que estas copias pueden ser reemplazadas sin que
las dems cachs sean notificadas. Los argumentos para comprobar que el protocolo mantiene la
consistencia secuencial y la coherencia de las cachs es el mismo que en el caso del protocolo
MSI.
El nombre del protocolo (MESI) viene de los nombres de los estados que puede tomar una lnea:
modificada, exclusiva, compartida e invlida que en ingls significan Modified, Exclusive,
Shared y Invalid, y lo cierto es que este nombre se usa ms que el de Illinois.
Una lnea que es propiedad de cualquier cach puede estar como exclusiva o modificada. Las
lneas que estn en el estado compartida no son propiedad de nadie en concreto. La aproximacin
MESI permite la determinacin de si una lnea es compartida o no cuando se carga. Una lnea
modificada es enviada directamente al peticionario desde la cach que la contiene. Esto evita la
necesidad de enviar comandos de invalidacin para todas aquellas lneas que no estaban
compartidas.
Vicente Arnau Llombart
15
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
Veamos las transiciones segn las operaciones realizadas sobre las cachs:
Fallo de lectura: La lnea se coge de la cach que la tenga como propietaria. Si ninguna la
tiene como propietaria, se coge de la memoria principal. Si la lnea que se coge est
modificada en otra cache, entonces se escribe esta lnea tambin a la memoria al mismo
tiempo. Si es compartida, la cach con mayor prioridad (la propietaria) es la que entrega la
lnea (esto implica un bit adicional por cache para indicar que cache es la propietaria). La
cach que entrega la lnea, y aquellas que la contienen, pasan al estado de compartida. Sin
embargo, si quien da la lnea es la memoria, entonces la cach que lee pone su lnea en
exclusiva y se hace propietaria de ella.
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: Si la cach peticionaria es la propietaria (lnea modificada o exclusiva),
se actualiza la lnea en la cach sin ms. Si la lnea est compartida por otras cachs
(compartida), se actualiza la lnea despus de haber invalidado el resto de lneas. Una vez
actualizada la lnea pasa a ser modificada en cualquiera de los casos anteriores.
16
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
Ejemplo 2: funcionamiento del protocolo MESI. Ahora vamos a ver cmo se comporta este
protocolo antes el ejemplo de funcionamiento visto en 5.2.
17
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
18
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
Fallo en una lectura: Se genera una transaccin BusRd. Dependiendo del estado de la seal
compartida (S), el bloque se carga en el estado E o SC en la cach local. Ms concretamente,
si el bloque est en el estado M o SM en una de las otras cachs, esa cach activar la lnea S
y proporcionar el ltimo valor para ese bloque en el bus, y el bloque se cargar en la cach
local en el estado SC (tambin se actualiza la memoria principal; si no quisiramos hacerlo
necesitaramos estados adicionales). Si la otra cach lo tiene en estado M, cambiar al estado
SM. Si ninguna otra cach tiene una copia, la lnea S no se activar y el dato ser
proporcionado por la memoria principal y cargado en la cach local en el estado E.
Escritura: Si el bloque est en el estado SM o M en la cach local, no es necesario realizar
ninguna accin. Si el bloque est en el estado E en la cach local, el bloque cambia
internamente al estado M, no siendo necesaria ninguna accin adicional. Sin embargo, si el
bloque est en el estado SC, se genera una transaccin BusUpd. Si alguna otra cach tiene una
copia del dato, actualizan sus copias y cambian su estado a SC. La cach local tambin
actualiza su copia del bloque y cambia su estado a SM. Si no existe otra copia del dato, la
seal S permanecer inactiva y la copia local se actualizar cambiando al estado M.
Finalmente, si en una escritura el bloque no est presente en la cach, la escritura se trata
como una transaccin del tipo fallo en la lectura seguida de una transaccin de escritura. Por
lo tanto, primero se genera un BusRd y si el bloque se tambin se encuentra en otras cachs
un BusUpd.
Reemplazo: En el caso de reemplazo de un bloque (los arcos no se muestran en la figura), el
bloque se escribe en la memoria principal utilizando una transaccin del bus nicamente si se
encuentra en el estado M o SM. Si est en el estado SC, existir otra cach con ese bloque en
estado SM, o nadie lo tiene en cuyo caso el bloque es vlido en memoria principal.
19
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
Ejemplo 1. Funcionamiento del protocolo DRAGON. Ahora vamos a ver cmo se comporta este
protocolo antes el ejemplo de funcionamiento visto en 5.2 y as lo podremos compara con el
protocolo MESI.
Problema 5.07: Estamos en el protocolo Dragon. Tenemos la cache del procesador P1 que
contienen la variable X en estado M. Que sucede con esta lnea de cache si se produce un fallo de
escritura en X en otra cache, P2 por ejemplo. Cmo queda la cach de P2?.
20
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
21
20 de marzo de 2012
Organizacin de computadores
Universidad de Valencia
Figura 5.12: Problema de la falsa comparticin. Dos variables distintas A y B, de procesadores distintos,
estn en la misma pgina.
22
20 de marzo de 2012