Вы находитесь на странице: 1из 22

Organizacin de computadores

Universidad de Valencia

Captulo 5.
Multiprocesadores.

Los multiprocesadores son sistemas MIMD basados en varios procesadores funcionando de


forma paralela e independiente. La principal caracterstica de los multiprocesadores es que la
memoria est compartida, es decir, todos los procesadores comparten el mismo espacio de
direccionamiento.

5.1. Coherencia de las cachs


La memoria es uno de los componentes principales de cualquier sistema. La estructura de la
memoria va a tener un importante impacto en el rendimiento general del sistema. Se analizan en
esta parte los diferentes protocolos de coherencia
fundamentales
en
los
actuales
sistemas
multiprocesadores con memoria compartida.
En cursos anteriores el alumno se ha encontrado ya con
el tema de las cachs y su coherencia en sistemas con
un nico procesador y una sola cach. No se explicarn
aqu los diversos tipos de cach ni su realizacin, ya
que se supone que es un tema conocido. Lo que se
expone a continuacin es el problema de mantener la
coherencia del sistema de memoria en sistemas
multiprocesadores con varias cachs y memoria
compartida.

5.1.1. El problema de la coherencia de las cachs


Pensemos por un momento cul es el modelo intuitivo que tenemos de lo que debe ser una
memoria. La memoria debe proporcionar un conjunto de direcciones para almacenar valores, y
cuando se lea una de estas direcciones debe devolver el ltimo valor escrito en ella. Es en esta
propiedad fundamental de las memorias en la que descansan los programas secuenciales cuando
usamos la memoria para comunicar un valor desde un punto del programa donde se calcula a
otros puntos donde es usado. Tambin nos basamos en esta propiedad cuando el sistema usa un
espacio de direcciones compartido para comunicar datos entre hebras o procesos que se estn
ejecutando en un procesador.
Una lectura devuelve el ltimo valor escrito en esa direccin, sin importar el proceso que escribi
dicho valor. Las cachs (ante-memorias) no interfieren con el uso de mltiples procesos en un
procesador, ya que todos ellos ven la memoria a travs de la misma jerarqua de cachs. En el
Vicente Arnau Llombart

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!

Figura 5.1: El problema de la coherencia de cachs con dos procesadores.

Este es el problema de la coherencia de cachs en multiprocesadores.


Informalmente se puede decir que un sistema de memoria es coherente si cualquier lectura de un
dato devuelve el valor ms recientemente escrito de ese dato. Esta definicin, aunque
intuitivamente correcta, es vaga y simple; la realidad es bastante ms compleja. Esta definicin
simple contiene dos aspectos diferentes del comportamiento del sistema de memoria, siendo los
dos crticos a la hora de escribir programas en memoria compartida. El primer aspecto, llamado
coherencia definen los datos devueltos por una lectura. El segundo aspecto, llamado consistencia,
determina cuando un valor escrito ser devuelto por una lectura. Demos primero una definicin
formal para la coherencia. Se dice que un sistema de memoria es coherente si se cumple:
1. Una lectura por un procesador P de una posicin X, que sigue de una escritura de P a X, sin
que ningn otro procesador haya escrito nada en X entre la escritura y la lectura de P, siempre
devuelve el valor escrito por P.
2. Una lectura por un procesador de la posicin X, que sigue una escritura por otro procesador a
X, devuelve el valor escrito si la lectura y escritura estn suficientemente separados y no hay
otras escrituras sobre X entre los dos accesos.
Vicente Arnau Llombart

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.

Figura 5.2: Ejemplo del problema de coherencia de las cachs.

Mtodos para actualizar la memoria.

Si consideramos una cach de escritura inmediata o write-through, la modificacin


realizada por el procesador P3 har que el valor de u en la memoria principal sea 7. Sin
embargo, el procesador P1 leer el valor de u de su cach en vez de leer el valor correcto
de la memoria principal.

Vicente Arnau Llombart

20 de marzo de 2012

Organizacin de computadores

Universidad de Valencia

Si considera una cach de escritura aplazada o post-escritura (write-back) la situacin


empeora. En este caso el procesador P3 nicamente activar el bit de modificado en el
bloque de la cach en donde tiene almacenado u y no actualizar la memoria principal.
nicamente cuando ese bloque de la cach sea reemplazado su contenido se volcar a la
memoria principal. Ya no ser nicamente P1 el que leer el valor antiguo, sino que
cuando P2 intente leer u y se produzca un fallo en la cach, tambin leer el valor antiguo
de la memoria principal. Esta poltica suele combinarse con la tcnica de "Carga en
escritura" (Write Allocation), que significa que, cuando haya que escribir en un bloque
que no se encuentra en la cach, traeremos a cach el bloque en cuestin y lo
modificaremos ah.
Por ltimo, si varios procesadores escriben distintos valores en la localizacin u con este
tipo de cachs, el valor final en la memoria principal depender del orden en que los
bloques de cach que contienen u se reemplazan, y no tendr nada que ver con el orden en
que las escrituras a u ocurrieron.

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.

5.1.3. Soluciones a los problemas de coherencia.


Antes de estudiar las diferentes tcnicas para solucionar el problema de coherencia, sera
interesante realizar una definicin ms formal de la propiedad de coherencia.
En primer lugar empezaremos con la definicin de algunos trminos en el contexto de los
sistemas de memoria uniprocesador, para despus extender dicha definicin para
multiprocesadores.
Operacin de Memoria: Un acceso a una direccin de la memoria para realizar una lectura,
escritura u operacin atmica de lectura-modificacin-escritura. Las instrucciones que realizan
mltiples lecturas y escrituras, tales como las que aparecen en muchos de los conjuntos de
instrucciones complejos, pueden ser vistas como un conjunto de operaciones de memoria, y el
orden en que dichas operaciones deben ejecutarse se especifica en la instruccin.
Ejecucin atmica: Las operaciones de memoria de una instruccin se ejecutan de forma
atmica una respecto a la otra segn el orden especificado. Es decir, todos los aspectos de una
Vicente Arnau Llombart

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.

5.1.4. Esquemas de coherencia de las cachs


Existen numerosos protocolos para mantener la coherencia de las cachs en un sistema
multiprocesador con memoria compartida. En primer lugar hay dos formas de abordar el
problema. Una forma es resolver el problema de la coherencia por software, lo que implica la
realizacin de compiladores que eviten la incoherencia entre cachs de datos compartidos. La otra
aproximacin es proveer mecanismos hardware que mantengan de forma continua la coherencia
en el sistema, siendo adems transparente al programador. Como esta segunda forma es la ms
utilizada, nos centraremos en ella de manera que todos los protocolos que siguen se refieren a
soluciones hardware al problema de la coherencia.
Podemos distinguir tambin dos tipos de sistemas multiprocesadores; por un lado estn los
sistemas basados en un nico bus, con un nmero no demasiado grande de procesadores, cada
uno con su cach, y por otro lado estn los sistemas ms complejos con varios buses o varias
subredes con un gran nmero de nodos procesadores. En el primero parece ms adecuado un tipo
de protocolo que est continuamente sondeando o fisgando el bus comn para ver qu
transacciones podran introducir incoherencia y actuar en consecuencia. A estos protocolos se les
llama de sondeo o snoopy puesto que fisgan el bus para detectar incoherencia. Bsicamente cada
nodo procesador tendr los bits necesarios para indicar el estado de cada lnea de su cach y as
Vicente Arnau Llombart

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.

Vicente Arnau Llombart

20 de marzo de 2012

Organizacin de computadores

Universidad de Valencia

5.2. Protocolos de sondeo o snoopy (medio compartido)


Tal y como se ha comentado antes, hay dos tipos de protocolos atendiendo al mecanismo que
utilizan. As se tienen el write-update o write-broadcast o actualizar en escritura, y el writeinvalidate o invalidar en escritura.
El primer mtodo, el de invalidar en escritura, se basa en asegurar que un procesador tiene
acceso exclusivo a un dato antes de que acceda a l. Esto se consigue invalidando todas las lneas
de todas las cachs que contengan un dato que est siendo escrito en ese momento. Este protocolo
es con diferencia el ms usado tanto en protocolos de sondeo como en los de directorio. El acceso
exclusivo asegura que no hay otras copias legibles o escribibles del dato cuando se realiza la
escritura, ya que todas las copias del dato se invalidan en el momento de la escritura. Esto
asegura que cuando otro procesador quiera leer el dato falle su cach y tenga que ir a memoria
principal a buscarlo.
Si dos procesadores intentan escribir a la vez el mismo dato, hay uno que ganar necesariamente,
mientras que el otro deber esperar a que este escriba momento en el cual deber volver a obtener
la copia buena para poder volver a escribir. Por lo tanto, este protocolo asegura la escritura en
serie.
El segundo mtodo, alternativa al anterior, es el de actualizar todas las copias de las cachs
cuando se escribe un determinado dato. Este protocolo se llama actualizar en escritura. Para
mantener los requisitos de ancho de banda de este protocolo bajo control, es interesante realizar
un seguimiento de si una palabra en la cach est compartida o no, o sea, que se encuentra
tambin en otras cachs. Si no est compartida entonces no es necesario actualizar el resto de
cachs.
La belleza de la coherencia de cach basada en snooping reside en que toda la maquinaria para
resolver un problema complicado se reduce a una pequea cantidad de interpretacin extra de
eventos que ocurren de forma natural en el sistema. El procesador permanece inalterado. No
existen operaciones explcitas de coherencia insertadas en el programa. Extendiendo los
requisitos del controlador de la cach y explotando las propiedades del bus, las lecturas y
escrituras que son inherentes al programa se usan de forma implcita para mantener la coherencia
de las cachs mientras que la serializacin del bus mantiene la consistencia. Cada controlador de
cach observa e interpreta las transacciones de memoria de los otros controladores para mantener
su propio estado interno. Para conseguir un uso eficiente de ancho de banda limitado que
proporciona un bus compartido nos centraremos en protocolos que usan cachs del tipo postescritura (write-back) lo que permite que varios procesadores escriban a diferentes bloques en
sus cachs locales de forma simultnea sin ninguna transaccin en el bus. En este caso es
necesario tener especial cuidado para asegurarnos de que se transmite la suficiente informacin
sobre el bus para poder mantener la coherencia. Tambin comprobaremos que los protocolos
proporcionan restricciones suficientes en la ordenacin para mantener la serializacin de las
escrituras y un modelo de consistencia de memoria secuencial.
Recordemos que en un uniprocesador con una cach con post-escritura. Un fallo de escritura en la
cach hace que sta lea todo el bloque de la memoria, actualice una palabra, y retenga el bloque
Vicente Arnau Llombart

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

Vicente Arnau Llombart

20 de marzo de 2012

Organizacin de computadores

Universidad de Valencia

5.2.1. Protocolo de invalidacin de 3 estados (MSI)


El primer protocolo que consideraremos es un protocolo de invalidacin bsico para cachs postescritura. Es muy similar al protocolo que fue usado en la serie de multiprocesadores Silicon
Graphics 4D. El protocolo usa los tres estados necesarios en cualquier cach post-escritura para
distinguir bloques vlidos que no han sido modificados (clean) de aquellos que han sido
modificados (dirty). Especficamente, los estados son invlido (I), compartido (S, de shared)
y modificado (M). El estado de invlido tiene un significado claro. Compartido significa que el
bloque est presente en la cach y no ha sido modificado, la memoria principal est actualizada y
cero o ms cachs adicionales pueden tener tambin una copia actualizada (compartida).
Modificado significa que nicamente este procesador tiene una copia vlida del bloque en su
cach, la copia en la memoria principal est anticuada y ninguna otra cach puede tener una copia
vlida del bloque (ni en estado modificado ni compartido). Antes de que un bloque compartido
pueda ser escrito y pasar al estado modificado, todas las dems copias potenciales deben de ser
invalidadas va una transaccin de bus de lectura exclusiva. Esta transaccin sirve para ordenar la
escritura al mismo tiempo que causa las invalidaciones y por tanto asegura que la escritura se
hace visible a los dems.
El procesador emite dos tipos de peticiones: lecturas (PrRd) y escrituras (PrWr). Las lecturas o
escrituras pueden ser a un bloque de memoria que existe en la cach o a uno que no existe. En el
ltimo caso, el bloque que est en la cach en la actualidad ser reemplazado por el nuevo
bloque, y si el bloque actual est en el estado modificado su contenido ser volcado a la memoria
principal.
Supongamos que el bus permite las siguientes transacciones:

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.

Figura 5.4: Protocolo bsico de invalidacin con tres estados.

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.

Vicente Arnau Llombart

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.

5.2.2. Protocolo de invalidacin de 4 estados (MESI).


El protocolo MSI presenta un problema si consideramos una aplicacin secuencial en un
multiprocesador; este uso de la multiprogramacin es de hecho la carga ms usual de
multiprocesadores de pequea escala. Cuando el programa lee y modifica un dato, el protocolo
MSI debe generar dos transacciones incluso en el caso de que no exista comparticin del dato. La
primera es una transaccin BusRd que obtiene el bloque de la memoria en estado S, y la segunda
en una transaccin BusRdX (o BusUpgr) que convierte el bloque del estado S al M. Aadiendo un
estado que indique que el bloque es la nica copia (exclusiva) pero que no est modificado y
cargado el bloque en ese estado, podramos evitarnos la ltima transaccin, ya que el estado
indica que ningn otro procesador tiene el bloque en cach. Este nuevo estado indica un nivel
intermedio entre compartido y modificado. Al ser exclusivo es posible realizar una escritura o
Vicente Arnau Llombart

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.

Vicente Arnau Llombart

14

20 de marzo de 2012

Organizacin de computadores

Universidad de Valencia

Figura 5.7: Diagrama de transicin de estados para el protocolo Illinois MESI.

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.

En las figuras siguientes se muestran unos ejemplos de funcionamiento de este protocolo de 4


estados MESI.

Ejemplo 1: funcionamiento del protocolo MESI de 4 estados.

Vicente Arnau Llombart

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.

Problemas 5.03: Veamos de ejemplos ms sobre el protocolo MESI.


Inicialmente la variable v solo est en memoria principal (MP). Resolver los ejemplos
siguientes.

Vicente Arnau Llombart

17

20 de marzo de 2012

Organizacin de computadores

Universidad de Valencia

5.2.5. Protocolo de actualizacin de 4 estados (Dragon)


A continuacin estudiaremos un protocolo de actualizacin bsico para cachs de post-escritura.
Esta es una versin mejorada del protocolo usado por los multiprocesadores SUN SparcServer.
Este protocolo fue inicialmente propuesto por los investigadores de Xerox PARC para su sistema
multiprocesador Dragon.
El protocolo Dragon consta de 4 estados: exclusivo (E), compartido (SC), compartido
modificado (SM) y modificado (M). El estado exclusivo significa que slo existe una cach (esta
cach) con una copia del bloque y que dicho bloque no ha sido modificado.
La causa de aadir el estado E en Dragon es la misma que en el protocolo MESI. SC significa
que potencialmente dos o ms procesadores (incluyendo esta cach) tienen este bloque en su
cach y que la memoria principal puede estar o no actualizada. SM significa que potencialmente
dos o ms procesadores tienen este bloque en su cach, la memoria principal no est actualizada y
este procesador es el responsable de actualizar la memoria principal cuando este bloque sea
reemplazado en la cach. Un bloque slo puede estar en el estado SM en una nica cach en un
momento dado. Sin embargo, es posible que una cach tenga el bloque en estado SM mientras
que en las otras aparezca en el estado SC. M significa, como anteriormente, que el bloque ha sido
modificado nicamente en esta memoria, la memoria principal tiene un valor no valido, y este
procesador es el responsable de actualizar la memoria principal cuando el bloque sea
reemplazado. Obsrvese que no existe un estado explcito de bloque invlido (I) como en los
protocolos anteriores. Esto es debido a que el protocolo Dragon es un protocolo basado en la
actualizacin; el protocolo siempre mantiene los bloque de la cach actualizados, as que siempre
es posible utilizar los datos existentes en la cach.
Las peticiones del procesador, las transacciones del bus y las acciones a realizar por el protocolo
son similares a las vistas en el protocolo Illinois MESI. El procesador todava enva peticiones de
lectura (PrRd) y escritura (PrWr). Sin embargo, dado que no tenemos un estado de invalidacin
en el protocolo, para especificar las acciones a realizar cuando un bloque de memoria se pide por
primera vez, se han aadido dos tipos ms de peticiones: lectura con fallo de cach (PrRdMiss) y
escritura con fallo de cach (PrWrMiss). Para las transacciones de bus, tenemos lectura en bus
(BusRd), actualizacin en bus (BusUpd) y escritura en bus (BusWB). Las transacciones BusRd y
BusWB tienen la semntica usual vista en los protocolos anteriores. BusUpd es una nueva
transaccin que toma como parmetro la palabra modificada por el procesador y la enva a todos
los procesadores a travs del bus de tal manera que se actualicen las cachs de los dems
procesadores. Enviando nicamente la palabra modificada en lugar de todo el bloque, se espera
una utilizacin ms eficiente del ancho de banda del bus. Al igual que en el caso del protocolo
MESI aparece la seal S para soportar el estado E.
La figura 5.10 muestra el diagrama de transicin de estados para este protocolo. A continuacin
se exponen las acciones a realizar cuando un procesador incurre en un fallo de cach en una
lectura, un acierto de cach en una escritura o un fallo de cach en una escritura (en el caso de un
acierto de cach en una lectura no hay que realizar ninguna accin).

Vicente Arnau Llombart

18

20 de marzo de 2012

Organizacin de computadores

Universidad de Valencia

Figura 5.10: Diagrama de transicin de estados del protocolo de actualizacin Dragon.

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.

Vicente Arnau Llombart

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.06: Protocolo Dragon.

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

Vicente Arnau Llombart

20

20 de marzo de 2012

Organizacin de computadores

Universidad de Valencia

5.2.7. Rendimiento de los protocolos de sondeo.


A la hora de determinar el rendimiento de un multiprocesador con arquitecturas como las vistas
hasta ahora, existen varios fenmenos que se combinan. En particular, el rendimiento total de la
cach es una combinacin del comportamiento de trfico causado por fallos de cach en un
uniprocesador y el trafico causado por la comunicacin entre cachs, lo que puede dar lugar a
invalidaciones y posteriores fallos de cach. El cambio del nmero de procesadores, tamao de la
cach y tamao del bloque pueden afectar a estos dos componentes de diferente manera, llevando
al sistema a un comportamiento que es una combinacin de los dos efectos.
Las diferencias de rendimiento entre los protocolos de invalidacin y actualizacin se basan en
las tres caractersticas siguientes:
1. Varias escrituras a la misma palabra sin lecturas intermedias precisan varias escrituras a todos
en el protocolo de actualizacin, pero slo una escritura de invalidacin en el de invalidacin.
2. Con lneas de cach de varias palabras, cada palabra escrita en la lnea precisa de una
escritura a todos en el protocolo de actualizacin, mientras que slo la primera escritura de
cualquier palabra en la lnea es necesaria en el de invalidacin. Los protocolos de
invalidacin trabajan sobre bloques de cach, mientras que en el de actualizacin deben
trabajar sobre palabras para aumentar la eficiencia.
3. El retraso entre la escritura de una palabra en un procesador y la lectura de ese valor escrito
por otro procesador es habitualmente menor en un multiprocesador de actualizacin, debido a
que los datos escritos son actualizados de forma inmediata en la cach del que lee (si es que el
procesador que lee ya tena copia de esa lnea). Por comparacin, en un protocolo de
invalidacin, el que va a leer se invalida primero, luego cuando llega la operacin de lectura
debe esperar a que est disponible.
Como el ancho de banda del bus y la memoria es lo que ms se demanda en un multiprocesador
basado en bus, los protocolos de invalidacin son los que ms se han utilizado en estos casos. Los
protocolos de actualizacin tambin causan problemas segn los modelos de consistencia,
reduciendo las ganancias de rendimiento potenciales mostradas en el punto 3 anterior. En diseos
con pocos procesadores (24) donde los procesadores estn fuertemente acoplados, la mayor
demanda de ancho de banda de los protocolos de actualizacin puede ser aceptable. Sin embargo,
dadas las tendencias de mayor rendimiento de los procesadores y la demanda consecuente en
ancho de banda, hacen que los protocolos de actualizacin no se usen.
En un sistema que requiera mucha migracin de procesos o sincronizacin, cualquier protocolo
de invalidacin va a funcionar mejor que los de actualizacin. Sin embargo, un fallo en la cach
puede producirse por la invalidacin iniciada por otro procesador previamente al acceso a la
cach. Estos fallos por invalidacin pueden incrementar el trfico en el bus y deben ser reducidas.
Varias simulaciones han mostrado que el trfico en el bus en un multiprocesador puede
incrementarse cuando el tamao de la lnea se hace grande. El protocolo de invalidacin facilita
la implementacin de primitivas de sincronizacin. Tpicamente, la media de copias invlidas es
bastante pequea, como 2 o 3 en pequeos multiprocesadores.
Vicente Arnau Llombart

21

20 de marzo de 2012

Organizacin de computadores

Universidad de Valencia

El protocolo de actualizacin requiere la capacidad de realizar transacciones de escritura a


todos (broadcast). Este protocolo puede evitar el efecto ping-pong de los datos compartidos
entre varias cachs. Reduciendo la cantidad de lneas compartidas se consigue una reduccin del
trfico en el bus en un multiprocesador de este tipo. Sin embargo, este protocolo no puede ser
usado con varias escrituras seguidas largas.

5.2.8. El problema de la falsa comparticin.+++


La comparticin falsa tiene lugar en los sistemas de memoria compartida distribuida cuando dos
procesadores usan variables distintas pero que estn en la misma lnea de cache (o en la misma
pgina). En este caso, cuando uno de los procesadores accede a una variable de estas para
escritura el bloque debe ser transmitido al otro procesador, pues siendo variables distintas
comparten lnea de cache.
En la figura 5.12 puede observarse como dos variable distintas, A y B, estn compartiendo
pgina, lo cual provocar mltiples invalidaciones entre los procesadores cada vez que uno de
ellos escribe en una de estas dos variables.

Figura 5.12: Problema de la falsa comparticin. Dos variables distintas A y B, de procesadores distintos,
estn en la misma pgina.

Vicente Arnau Llombart

22

20 de marzo de 2012

Вам также может понравиться