Você está na página 1de 104

Cap tulo 5 Multiprocesadores

Los multiprocesadores son sistemas MIMD basados en varios procesadores funcionando de forma paralela e independiente. La principal caracter stica de los multiprocesadores es que la memoria est compartida, es decir, todos los procesadores comparten a el mismo espacio de direccionamiento. El libro [CSG99] contiene la mayor parte de los temas tratados en este cap tulo, adems se trata de un libro muy completo sobre multiprocesadores. a

5.1.

Coherencia de las cachs e

La bibliograf sobre la coherencia de cach para multiprocesadores es bastante ama e plia, casi cualquier libro de arquitectura de computadores incluye alguna cosa. Los ms a completos sin embargo son [Hwa93], [HP96], [Zar96] y [Fly95]. Los apuntes se han realizado sobre todo a partir del [Hwa93] y del [Zar96]. Del [Fly95] se han extra algunos do de los diagramas de estados y constituye una buena lectura adicional. Del [HP96] se han extra algunas ideas y deniciones y vienen algunos experimentos sobre rendimiento do que no se han incluido en los apuntes. 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 e su coherencia en sistemas con un unico procesador y una sola cach. No se explicarn e a aqu los diversos tipos de cach ni su realizacin, ya que se supone que es un tema e o conocido. Lo que se expone a continuacin es el problema de mantener la coherencia o del sistema de memoria en sistemas multiprocesadores con varias cachs y memoria e compartida.

5.1.1.

El problema de la coherencia de las cachs e

Pensemos por un momento cul es el modelo intuitivo que tenemos de lo que debe ser a una memoria. La memoria debe proporcionar un conjunto de direcciones para almacenar valores, y cuando se lea una de estas direcciones debe devolver el ultimo valor escrito Ingenier Informtica a a Universidad de Valencia

16

Multiprocesadores

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 e 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. a Una lectura devuelve el ultimo valor escrito en esa direccin, sin importar el proceso que o escribi dicho valor. Las cachs (antememorias) no intereren con el uso de mltiples o e u procesos en un procesador, ya que todos ellos ven la memoria a travs de la misma e jerarqu de cachs. En el caso de usar varios procesadores, nos gustar poder basarnos a e a 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 f sicos. Sin embargo, cuando dos procesos ven la memoria compartida a travs de diferentes e cachs, existe el peligro de que uno vea el nuevo valor en su cach mientras que el otro e e todav vea el antiguo. a El problema de la coherencia en sistemas multiprocesadores se puede ver claramente mediante un ejemplo. Supongamos dos procesadores, cada uno con su cach, conectados e a una memoria compartida. Supongamos que ambos procesadores acceden a una misma posicin X en memoria principal. La gura 5.1 muestra los contenidos de las cachs y o e memoria principal asumiendo que ninguna cach contiene inicialmente la variable que e vale inicialmente 1. Tambin se asume una cach write-through. Despus de que el valor e e e en X ha sido escrito por A, la cach de A y la memoria contienen el nuevo valor, pero e 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! a Este es el problema de la coherencia de cachs en multiprocesadores. e Time 1 2 3 Accin o CPU A lee X CPU B lee X CPU A escribe 0 en X Cach A e 1 1 0 Cach B e 1 1 Memoria (X) 1 1 0

Figura 5.1: El problema de la coherencia de cachs con dos procesadores. e 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 dea nicin, aunque intuitivamente correcta, es vaga y simple; la realidad es bastante ms o a compleja. Esta denicin simple contiene dos aspectos diferentes del comportamiento o del sistema de memoria, siendo los dos cr ticos a la hora de escribir programas en memoria compartida. El primer aspecto, llamado coherencia denen los datos devueltos por una lectura. El segundo aspecto, llamado consistencia, determina cuando un valor escrito ser devuelto por una lectura. a Demos primero una denicin formal para la coherencia. Se dice que un sistema de o memoria es coherente si se cumple: 1. Una lectura por un procesador P de una posicin X, que sigue de una escritura de o P a X, sin que ningn otro procesador haya escrito nada en X entre la escritura y u 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 o procesador a X, devuelve el valor escrito si la lectura y escritura estn sucientea mente separados y no hay otras escrituras sobre X entre los dos accesos. Ingenier Informtica a a Universidad de Valencia

5.1 Coherencia de las cachs e 3.

17

Las escrituras a la misma posicin estn serializadas, es decir, dos escrituras a la o a misma posicin por cualquiera dos procesadores se ven en el mismo orden por todos o los procesadores. Por ejemplo, si se escriben los valores 1 y 2 en una posicin, los o 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 o monoprocesadores. La segunda condicin dene lo que se entiende por tener una visin o o coherente de la memoria. Con estas condiciones el problema para tener un sistema coherente queda resuelto, sin embargo, todav queda el problema de la consistencia. a Para ver que el problema de la consistencia es en realidad 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 n 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 o a exactamente un valor escrito debe ser visto por una lectura se dene por el modelo de consistenciade la memoria. Otro ejemplo que ilustra el problema de incoherencia de la memoria se puede ver en la gura 5.2. En esta gura se muestran tres procesadores con cachs propias y e conectados a travs de un bus comn a una memoria compartida. La secuencia de e u accesos a la localizacin u hecha por cada procesador es la que se indica mediante los o nmeros que aparecen al lado de cada arco. Veamos cules son los valores le u a dos por P1 y P2 dependiendo del tipo de cach utilizada. e

P1
Cache u:5

u=?

P2
u=? Cache

P3
u=7 Cache u:5

1
u:5 Memoria

Figura 5.2: Ejemplo del problema de coherencia de las cachs. e Si consideramos una cach write-through la modicacin realizada por el procesador e o P3 har que el valor de u en la memoria principal sea 7. Sin embargo, el procesador a P1 leer el valor de u de su cach en vez de leer el valor correcto de la memoria a e principal. Si considera una cach writeback la situacin empeora. En este caso el procesador e o P3 unicamente activar el bit de modicado en el bloque de la cach en donde tiene a e almacenado u y no actualizar la memoria principal. Unicamente cuando ese bloque a de la cach sea reemplazado su contenido se volcar a la memoria principal. Ya no e a ser unicamente P1 el que leer el valor antiguo, sino que cuando P2 intente leer u y se a a produzca un fallo en la cach, tambin leer el valor antiguo de la memoria principal. e e a Ingenier Informtica a a Universidad de Valencia

18

Multiprocesadores Por ultimo, si varios procesadores escriben distintos valores en la localizacin u con o este tipo de cachs, el valor nal en la memoria principal depender del orden en e a que los bloques de cach que contienen u se reemplazan, y no tendr nada que ver e a con el orden en que las escrituras a u ocurrieron.

Los problemas de coherencia en la cach tambin ocurren cuando utilizamos un unico e e procesador en el caso de las operaciones de E/S. La mayor de estas operaciones se a realizan a travs de dispositivos DMA con lo que es posible que que el contenido de e la memoria principal y la memoria cach dejen de ser coherentes. Sin embargo, dado e 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 exise tentes en las cachs de las pginas que se van a utilizar en la operacin de E/S antes de e a o proceder a realizar dicha operacin. En la actualidad, casi todos los microprocesadores o proporcionan mecanismos para soportar la coherencia de cachs. e

5.1.2.

Direcciones f sicas y virtuales, problema del aliasing

Hay dos formas de conectar la cach al procesador. Una manera consiste en colocar e la cach despus de los bloques TLB (Transaction Lookaside Buer) o MMU (Memory e e Management Unit) que realizan la transformacin de direccin virtual a direccin f o o o sica. A estas cachs conectadas de esta forma se les llama cachs con direcciones f e e sicas, y un esquema de su conexionado se muestra en la gura 5.3(a). La otra posibilidad consiste en conectar la cach directamente a las direcciones del e procesador, es decir, a las direcciones virtuales tal y como se muestra en la gura 5.3(b). e En este caso tenemos las cachs con direcciones virtuales. Ambas tienen sus ventajas e inconvenientes como veremos a continuacin. o
DV CPU D/I DF Cach D/I DF Memoria Principal CPU D/I Cach D/I DV DF Memoria Principal

MMU

MMU

(a) Cach con direcciones f e sicas.

(b) Cach con direcciones virtuales. e

Figura 5.3: Direcciones f sicas y virtuales en la cach. (DV=Direccin Virtual, e o DF=Direccin F o sica, D/I=Datos o Instrucciones). Las cachs con direccin f e o sica son sencillas de realizar puesto que la direccin que o se especica en la etiqueta de la cach (tag) es unica y no existe el problema del aliasing e que tienen las cachs con direccin virtual. Como no tiene problemas de aliasing no es e o necesario vaciar (ush) la cach, y adems el sistema operativo tiene menos bugs de e a cach en su ncleo. e u El problema de las cachs con direcciones f e sicas es que cuesta ms tiempo acceder a a la cach puesto que hay que esperar a que la unidad MMU/TLB acabe de traducir e la direccin. La integracin de la MMU/TLB y cach en el mismo VLSI chip, muchas o o e veces incluso con el procesador, alivia este problema. Ingenier Informtica a a Universidad de Valencia

5.1 Coherencia de las cachs e

19

Lo cierto es que la mayor de sistemas convencionales utilizan la cach con direca e ciones f sicas puesto que son muy simples y requieren una casi nula intervencin del o ncleo del sistema operativo. u En la cach con direcciones virtuales, el acceso a la cach se realiza al mismo tiempo e e y en paralelo con la traduccin de direccin por parte de la MMU. Esto permite un o o acceso a la cach ms rpido que con las direcciones f e a a sicas. Pero con las direcciones virtuales surge el problema del aliasing. Es a veces frecuente que dos procesos diferentes utilicen las mismas direcciones virtuales cuando en realidad las direcciones f sicas van a ser diferentes puesto que nada tiene que ver un proceso con el otro. Cuando esto ocurre, resulta que el ndice/etiqueta en la cach coincide en e ambos casos cuando en realidad se trata de direcciones reales diferentes. La forma de solucionar esto consiste en vaciar completamente la cach cada vez que hay un problema e de aliasing, lo cual ocurre siempre que se cambia de contexto en Unix por ejemplo. Estas operaciones de vaciado continuo de la cach produce un rendimiento muy bajo e en la cach y del sistema en general al ocupar el bus en vaciar una y otra vez la cach. e e En Unix incluso el vaciado de la cach puede no ser suciente para realizar ciertas e operaciones del ncleo, llamadas al sistema y operaciones de I/O. Tambin el depurado u e de programas resulta prcticamente imposible con este tipo de cach. a e Una solucin consiste en aadir informacin sobre el proceso, o contexto, a la etio n o queta de la cach, o tambin, aadir la direccin f e e n o sica, pero estos mtodos pueden e eventualmente tambin degradar el rendimiento del sistema. e

5.1.3.

Soluciones a los problemas de coherencia

Antes de estudiar las diferentes tcnicas para solucionar el problema de coherencia, e ser interesante realizar una denicin ms formal de la propiedad de coherencia. a o a En primer lugar empezaremos con la denicin de algunos trminos en el contexto o e de los sistemas de memoria uniprocesador, para despus extender dicha denicin para e o multiprocesadores. Operacin de Memoria Un acceso a una direccin de la memoria para realizar una o o lectura, escritura u operacin atmica de lectura-modicacin-escritura. Las inso o o trucciones que realizan mltiples lecturas y escrituras, tales como las que aparecen u 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 especica en la instruccin. o Ejecucin atmica Las operaciones de memoria de una instruccin se ejecutan de o o o forma atmica una respecto a la otra segn el orden especicado. Es decir, too u dos los aspectos de una operacin deben parecer que se han ejecutado antes de o cualquier aspecto de la operacin siguiente. o Emisin Una operacin de memoria es emitida cuando deja el entorno interno del o o procesador y se presenta en el sistema de memoria, que incluye las cachs, los e buers de escritura, el bus, y los mdulos de memoria. Un punto muy importante o es que el procesador slo observa el estado del sistema de memoria mediante la o emisin de operaciones de memoria; es decir, nuestra nocin de lo que signica o o que una operacin de memoria haya sido realizada es que parezca que ha tenido o lugar desde la perspectiva del procesador. Ingenier Informtica a a Universidad de Valencia

20

Multiprocesadores

Realizada con respecto a un procesador Una operacin de escritura se dice que o 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 o 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 denicin el procesador por un proceo sador. 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 denido por el programa u sino rdenes de programas separados para cada proceso y esos rdenes de programa ino o teractan cuando acceden al sistema de memoria. Una manera agudizar nuestra nocin u o intuitiva de sistema de memoria coherente es determinar qu pasar en el caso de que e a no existieran cachs. Cada escritura y lectura a una localizacin de memoria acceder e o a a la memoria f sica principal y se realizar con respecto a todos los procesadores en a dicho punto, as la memoria impondr un orden secuencial entre todas las operaciones a de lectura y escritura realizadas en dicha localizacin. Adems, las lecturas y escrituras o a a una localizacin desde cualquier procesador individual debern mantener el orden del o a programa dentro de esta ordenacin secuencial. No hay razn para creer que el sistema o o de memoria deba intercalar los accesos independientes desde distintos procesadores en una forma predeterminada, as cualquier intercalado que preserve la ordenacin de cada o programa individual es razonable. Podemos asumir algunos hechos bsicos; las operaa ciones de cada procesador ser realizadas en algn momento dado. Adems, nuestra a u a nocin intuitiva de ltimo puede ser vista como el ms reciente en alguno de las o u a hipotticas ordenaciones secuenciales que mantienen las propiedades discutidas en este e prrafo. a Dado que este orden secuencial debe ser consistente, es importante que todos los procesadores vean las escrituras a una localizacin en el mismo orden. o Por supuesto, no es necesario construir una ordenacin total en cualquier punto de o la mquina mientras que se ejecuta el programa. Particularmente, en un sistema con a cachs no queremos que la memoria principal vea todas las operaciones de memoria, y e queremos evitar la serializacin siempre que sea posible. Slo necesitamos estar seguros o o de que el programa se comporta como si se estuviese forzando un determinado orden secuencial. Ms formalmente, decimos que un sistema de memoria multiprocesador es coherente a si el resultado de cualquier ejecucin de un programa es tal que, para cada localizacin, o o es posible construir una hipottica ordenacin secuencial de todas las operaciones realie o zadas sobre dicha localizacin (es decir, ordenar totalmente todas las lecturas/escrituras o emitidas por todos los procesadores) que sea consistente con los resultados de la ejecucin y en el cual: o 1. 2. 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 el valor devuelto por cada operacin de lectura es el valor escrito por la ultima o escritura en esa localizacin en la secuencia arriba indicada. o

Est impl a cita en la denicin de coherencia la propiedad de que todas las escrituras o a una localizacin (desde el mismo o diferente procesador) son vistas en el mismo o Ingenier Informtica a a Universidad de Valencia

5.1 Coherencia de las cachs e

21

orden por todos los procesadores. A esta propiedad se le denomina serializacin de o las escrituras. Esto signica 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 o 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 a o 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 impl a cito de lecturas a todas las localizaciones al nal del programa. De los resultados no podemos determinar el orden en el cual las operaciones se realizaron realmente por la mquina, a sino el orden en el que parece que se ejecutaron. De hecho, no es importante en qu orden e las cosas ocurren realmente en la mquina o cundo cambi cada bit, dado que no es a a o 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. Este concepto ser ms o a a importante cuando discutamos los modelos de consistencia de la memoria. Para nalizar, una denicin adicional que necesitamos en el caso de los multiprocesadores es la de o completitud de una operacin: Una operacin de lectura o escritura se dice que se ha o o completado cuando se ha realizada con respecto a todos los procesadores.

5.1.4.

Esquemas de coherencia de las cachs e

Existen numerosos protocolos para mantener la coherencia de las cachs en un sise tema 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 o e datos compartidos. La otra aproximacin es proveer mecanismos hardware que mano tengan de forma continua la coherencia en el sistema, siendo adems transparente al a programador. Como esta segunda forma es la ms utilizada, nos centraremos en ella a de manera que todos los protocolos que siguen se reeren a soluciones hardware al problema de la coherencia. Podemos distinguir tambin dos tipos de sistemas multiprocesadores; por un lado e estn los sistemas basados en un unico bus, con un nmero no demasiado grande de a u procesadores, cada uno con su cach, y por otro lado estn los sistemas ms complejos e a a con varios buses o varias subredes con un gran nmero de nodos procesadores. En el u primero parece ms adecuado un tipo de protocolo que est continuamente sondeando a e o sgando el bus comn para ver qu transacciones podr introducir incoherencia y u e an actuar en consecuencia. A estos protocolos se les llama de sondeo o snoopy puesto que sgan el bus para detectar incoherencia. Bsicamente cada nodo procesador tendr los a a bits necesarios para indicar el estado de cada l nea de su cach y as realizar las trane sacciones de coherencia necesarias segn lo que ocurra en el bus en cada momento. u En el segundo tipo de sistemas, con varias subredes locales y un amplio nmero de u procesadores, un protocolo de sondeo es complicado de realizar puesto que las actividades en los sub-buses son dif ciles de sgar, ya que las transacciones van a ser locales a estos. Para estos sistemas ms complejos se utiliza un tipo de protocolo basado en a directorio, que consiste en la existencia de un directorio comn donde se guardan el esu tado de validez de las l neas de las cachs, de manera que cualquier nodo puede acceder e a este directorio comn. u Ingenier Informtica a a Universidad de Valencia

22

Multiprocesadores

Dado que los sistemas multiprocesadores basados en memoria compartida y cach suee len estar basados en bus, o una jerarqu de buses con no muchos niveles, los protocolos a de coherencia suelen ser de sondeo, por esto se le dedica una atencin especial a este o tipo de protocolos. Entre los protocolos de coherencia, tanto si son de sondeo como si no, existen en general dos pol ticas para mantener la coherencia: invalidacin en escritura (write ino validate) y actualizacin en escritura (write update). En la pol o tica de invalidacin en o escritura (tambin llamada pol e tica de coherencia dinmica), siempre que un procesador a modica un dato de un bloque en la cach, invalida todas las dems copias de ese bloe a que guardadas en las otras cachs. Por contra, la pol e tica de actualizacin en escritura o actualiza las copias existentes en las otras cachs en vez de invalidarlas. e En estas pol ticas, los protocolos usados para la invalidacin o actualizacin de las o o otras copias dependen de la red de interconexin empleada. Cuando la red de interconeo xin permite el broadcast (como en un bus), los comandos de invalidacin y actualizacin o o o pueden ser enviados a todas las cachs de forma simultnea. A los protocolos que utie a lizan esta tcnica se les denominan, tal y como se ha comentado antes, protocolos de e de sondeo o snoopy, dado que cada cach monitoriza las transacciones de las dems e a cachs. En otras redes de interconexin, donde el broadcast no es posible o causa dee o gradacin (como en las redes multietapa), el comando de invalidacin/actualizacin se o o o env unicamente a aquellas cachs que tienen una copia del bloque. Para hacer esto, se a e usa frecuentemente un directorio centralizado o distribuido. Este directorio tiene una entrada para cada bloque. La entrada por cada bloque contiene un puntero a cada cach que tiene una copia del bloque. Tambin contiene un bit que especica si el pere e miso de actualizar el bloque slo lo tiene una determinada cach. A los protocolos que o e usan este esquema se les denominan protocolos de cach basados en directorio. e

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 write-invalidate o invalidar en escritura. El primer mtodo, el de invalidar en escritura, se basa en asegurar que un proe cesador tiene acceso exclusivo a un dato antes de que acceda a l. Esto se consigue e invalidando todas las l neas de todas las cachs que contengan un dato que est siendo e a escrito en ese momento. Este protocolo es con diferencia el ms usado tanto en proa tocolos de sondeo como en los de directorio. El acceso exclusivo asegura que no hay otras copias le bles 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 e buscarlo. Si dos procesadores intentan escribir a la vez el mismo dato, hay uno que ganar nea cesariamente, mientras que el otro deber esperar a que este escriba momento en el cual a deber volver a obtener la copia buena para poder volver a escribir. Por lo tanto, este a protocolo asegura la escritura en serie. El segundo mtodo, alternativa al anterior, es el de actualizar todas las copias de e Ingenier Informtica a a Universidad de Valencia

5.2 Protocolos de sondeo o snoopy (medio compartido)

23

las cachs cuando se escribe un determinado dato. Este protocolo se llama actualizar en e 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 e a no, o sea, que se encuentra tambin en otras cachs. Si no est compartida entonces no e e a es necesario actualizar el resto de cachs. e La belleza de la coherencia de cach basada en snooping reside en que toda la mae quinaria para resolver un problema complicado se reduce a una pequea cantidad de n interpretacin extra de eventos que ocurren de forma natural en el sistema. El proceo sador permanece inalterado. No existen operaciones expl citas de coherencia insertadas en el programa. Extendiendo los requisitos del controlador de la cach y explotando las e propiedades del bus, las lecturas y escrituras que son inherentes al programa se usan de forma impl cita para mantener la coherencia de las cachs mientras que la serializacin e o del bus mantiene la consistencia. Cada controlador de cach observa e interpreta las e transacciones de memoria de los otros controladores para mantener su propio estado interno. Para conseguir un uso eciente de ancho de banda limitado que proporciona un bus compartido nos centraremos en protocolos que usan cachs del tipo post-escritura e (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 e a o es necesario tener especial cuidado para asegurarnos de que se transmite la suciente informacin sobre el bus para poder mantener la coherencia. Tambin comprobaremos o e que los protocolos proporcionan restricciones sucientes en la ordenacin para mantener o la serializacin de las escrituras y un modelo de consistencia de memoria secuencial. o Recordemos que en un uniprocesador con una cach con post-escritura. Un fallo e de escritura en la cach hace que sta lea todo el bloque de la memoria, actualice e e una palabra, y retenga el bloque como modicado de tal forma que la actualizacin en o memoria principal ocurre cuando el bloque es reemplazado. En un multiprocesador, este estado de modicado tambin se usa por parte del protocolo para indicar la pertenencia e de forma exclusiva del bloque por parte de la cach. En general, se dice que una cach es e e propietaria de un bloque si debe suministrar los datos ante una peticin de ese bloque. o Se dice que una cach tiene una copia exclusiva de un bloque si es la unica cach con e e una copia vlida del bloque (la memoria principal puede o no tener una copia vlida). a a La exclusividad implica que la cach puede modicar el bloque sin noticrselo a nadie. e a Si una cach no tiene la exclusividad, entonces no puede escribir un nuevo valor en el e bloque antes de poner un transaccin en el bus para comunicarse con las otras cachs. o e Si una cach tiene el bloque en estado modicado, entonces dicho nodo es el propietario e y tiene la exclusividad. (La necesidad de distinguir entre propiedad y exclusividad se aclarar muy pronto.) a En un fallo de escritura, una forma especial de transaccin llamada lectura exclusiva o se usa para impedir a las otras cachs la escritura o adquirir una copia del bloque e con propiedad exclusiva. Esto hace que el bloque de la cach pase a estado modicado e permitiendo la escritura. Varios procesadores no pueden escribir el mismo bloque de forma concurrente, lo que llevar a valores inconsistentes: Las transacciones de lectura a exclusiva generadas por sus escrituras aparecern de forma secuencial en el bus, as que a slo una de ellas puede obtener la propiedad exclusiva del bloque en un momento o dado. Las acciones de coherencia de cach se consiguen mediante estos dos tipos de e transacciones: lectura y lectura exclusiva. Eventualmente, cuando un bloque modicado se reemplaza en la cach, los datos se actualizan en la memoria, pero este evento no e est producido por una operacin de memoria sobre ese bloque y su importancia en el a o protocolo es incidental. Un bloque que no ha sido modicado no tiene que se escrito en Ingenier Informtica a a Universidad de Valencia

24 la memoria y puede ser descartado.

Multiprocesadores

Tambin debemos considerar los protocolos basados en la actualizacin. En este caso, e o cuando se escribe en una localizacin compartida, el valor actualizado se transere a o todos los procesadores que tienen ese bloque en la cach. De esta forma, cuando los e procesadores acceden a ese bloque posteriormente, pueden hacerlo desde sus cachs con e baja latencia. Las cachs de todos los dems procesadores se actualizan con una unica e a transaccin del bus, conservando el ancho de banda. Por contra, con los protocolos o basados en la invalidacin, en una operacin de escritura el estado de la cach de o o e ese bloque de memoria en todos los dems procesadores son declarados invlidos. Las a a 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 o a robustas y se proporcionan como el protocolo bsico por la mayor de los vendedores. a a Algunos vendedores proporcionan un protocolo de actualizacin como una opcin a ser o o utilizada para bloques correspondientes a estructuras de datos espec cas o pginas. a La tabla 5.1 resume los principales protocolos e implementaciones para mantener la coherencia en sistemas basados en bus. El nmero de protocolos del tipo de invalidar u en escritura es mayor puesto que son los protocolos que se utilizan ms. a Nombre Tipo de protocolo Write once Write invalidate Escritura a memoria Caracter sticas Mquinas a Sequent Symmetry Mquinas a Synapse; primeras disponibles Berkeley SPUR SGI Power y series Challenge

Synapse Write N+1 invalidate

Write back despus Primer protocolo de e de la primera escritu- sondeo ra Write back Estado expl cito donde la memoria es propietaria Write back Estado propietario compartido Write back Estado privado limpio; puede entregar datos desde cualquier cach con copias lime pias Write back si priva- Memoria actualizada do, write through si para todos compartido Write back si privado, write through si compartido

Berkeley Write invalidate Illinois Write MESI invalidate

Firey

Write update

Actualmente en desuso; SPARCCenter 2000

Dragon

Write update

Cuadro 5.1: Protocolos de sondeo para la coherencia de cachs. e A continuacin veremos los protocolos MSI, MESI (conocido tambin como Illinois), o e Write once y Berkeley como ejemplos de protocolos basados en invalidacin en escritura, o y Dragon y Firey que se incluyen como ejemplos de protocolos de actualizacin en o escritura. Ingenier Informtica a a Universidad de Valencia

5.2 Protocolos de sondeo o snoopy (medio compartido)

25

5.2.1.

Protocolo de invalidacin de 3 estados (MSI) o

El primer protocolo que consideraremos es un protocolo de invalidacin bsico para o a cachs post-escritura. Es muy similar al protocolo que fue usado en la serie de multiproe cesadores Silicon Graphics 4D. El protocolo usa los tres estados necesarios en cualquier cach post-escritura para distinguir bloques vlidos que no han sido modicados (clean) e a de aquellos que han sido modicados (dirty). Espec camente, los estados son invlido a (I), compartido (S) y modicado (M). El estado de invlido tiene un signicado claro. a Compartido signica que el bloque est presente en la cach y no ha sido modicado, a e la memoria principal est actualizada y cero o ms cachs adicionales pueden tener a a e tambin una copia actualizada (compartida). Modicado signica que unicamente este e procesador tiene una copia vlida del bloque en su cach, la copia en la memoria prina e cipal est anticuada y ninguna otra cach puede tener una copia vlida del bloque (ni a e a en estado modicado ni compartido). Antes de que un bloque compartido pueda ser escrito y pasar al estado modicado, todas las dems copias potenciales deben de ser a invalidadas v una transaccin de bus de lectura exclusiva. Esta transaccin sirve para a o o ordenar la escritura al mismo tiempo que causa la invalidaciones y por tanto asegura que la escritura se hace visible a los dems. a 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 e a uno que no existe. En el ultimo caso, el bloque que est en la cach en la actualidad e e ser reemplazado por el nuevo bloque, y si el bloque actual est en el estado modicado a a su contenido ser volcado a la memoria principal. a Supongamos que el bus permite las siguientes transacciones: Lectura del bus (BusRd): El controlador de la cach pone la direccin en el bus y e o pide una copia que no piensa modicar. El sistema de memoria (posiblemente otra cach) proporciona el dato. Esta transaccin se genera por un PrRd que falla en la e o cach y el procesador espera como resultado de esta transaccin el dato solicitado. e o Lectura exclusiva del bus (BusRdX): El controlador de la cach pone la direccin e o en el bus y pide una copia exclusiva que piensa modicar. El sistema de memoria (posiblemente otra cach) proporciona el dato. Todas las dems cachs necesitan e a e ser invalidadas. Esta transaccin se genera por una PrWr a un bloque que, o no o est en la cach o est en la cach en un estado distinto al modicado. Una vez a e a e la cach obtiene la copia exclusiva, la escritura puede realizarse en la cach. El e e procesador puede solicitar una conrmacin como resultado de esta transaccin. o o Escritura (BusWB): El controlador de la cach pone la direccin y el contenido e o para el bloque de la memoria en el bus. La memoria principal se actualiza con el ultimo contenido. Esta transaccin la genera el controlador de la cach en una o e 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 o la coherencia de la cach. Otro nuevo concepto necesario para soportar los protocolos e de post-escritura es que junto con el cambio de estado de cada bloque en la cach, el e controlador de la cach puede intervenir en las transacciones del bus y poner el contenido e 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, e e proporcionar datos para las post-escrituras, o coger los datos proporcionados por el sistema de memoria. Ingenier Informtica a a Universidad de Valencia

26
PrRd / -PrWr / --

Multiprocesadores

M
BusRd / Flush PrWr / BusRdX

S
PrRd / BusRd PrRd / -BusRd / -PrWr / BusRdX

BusRdX / Flush BusRdX / --

I
Figura 5.4: Protocolo bsico de invalidacin con tres estados. a o

El diagrama de estados que gobierna un bloque en cada cach en este protocolo se e muestra en la gura 5.4. Los estados estn organizados de tal manera que conforme un a estado est ms cerca de la parte superior ms ligado est el bloque a ese procesador. La a a a a lectura de un bloque invlido por parte de un procesador (incluyendo los no presentes) a produce una transaccin BusRd. El bloque recientemente cargado se promociona desde o el estado invlido al estado compartido dependiendo de si otra cach tiene una copia del a e bloque. Cualquier otra cach con el bloque en el estado compartido observa el BusRd, e pero no toma ninguna accin especial, permitiendo que la memoria responda con el dato. o Sin embargo, si una cach tiene el bloque en el estado modicado (y unicamente puede e haber una) y observa una transaccin BusRd en el bus, debe participar en la transaccin o o ya que la copia existente en memoria no es vlida. Esta cach env los datos al bus en a e a lugar de la memoria y degrada su copia del bloque al estado compartido. La memoria y la cach que ped el dato son actualizadas. Esto puede conseguirse mediante una e a transferencia directa entre las cachs a travs del bus durante esta transaccin BusRd e e o o indicando un error en la transaccin BusRd y generando una transaccin de escritura o o para actualizar la memoria. En el ultimo caso, la cach original volver a realizar su e a solicitud para obtener el bloque de la memoria. (Tambin es posible hacer que el dato e puesto en el bus sea tomado por la cach que realiz la peticin pero no por la memoria, e o o dejando la memoria sin actualizar, pero este caso requiere ms estados). a Una escritura en un bloque invlido implica cargar el bloque entero y despus modia e car los bytes que se deseen. En este caso se genera una transaccin de lectura exclusiva o en el bus, que causa 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 e o al estado de modicado y despus se escribe. Si otra cach realiza una peticin posterior e e o de acceso exclusivo, en respuesta a su transaccin BusRdX el bloque se degradar al o a estado de invalido despus de poner la copia exclusiva en el bus. e Ingenier Informtica a a Universidad de Valencia

5.2 Protocolos de sondeo o snoopy (medio compartido)

27

La transaccin ms interesante ocurre cuando se escribe en un bloque compartido. o a El tratamiento en este caso es igual al de una escritura en un bloque invlido, usando a una transaccin de lectura exclusiva en el bus para adquirir la propiedad exclusiva del o 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 trco en el bus e o u a es introducir una nueva transaccin, llamada actualizacin del bus o BusUpgr, para o o esta situacin. Un BusUpgr obtiene la propiedad exclusiva al igual que un BusRdX, o invalidando las dems copias, pero no devuelve el bloque al que realiz la peticin. a o o Independientemente de la transaccin utilizada, el bloque pasa al estado modicado. o 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 invlie a do (no presente) eliminndolo de la cach. Por lo tanto, un reemplazamiento supone a e que dos bloques cambien de estado en la cach: el que es reemplazado pasa de su estado e actual al estado de invlido, el que ocupa su lugar de invlido a su nuevo estado. El a a ultimo cambio no puede tener lugar antes del primero. Si el bloque a ser reemplazado estaba en el estado de modicado, la transicin de reemplazamiento de M a I genera o una transaccin de post-escritura. Si estaba en el estado invlido o compartido, no es o a necesario hacer nada. El resultado de aplicar el protocolo MSI al ejemplo mostrado en la gura 5.2 se puede ver en la gura 5.5. Accin Proces. o 1. 2. 3. 4. 5. P1 P3 P3 P1 P2 lee u lee u escribe u lee u lee u Est. P1 S S I S S Est. P2 S Est. P3 S M S S Acc. bus BusRd BusRd BusRdX BusRd BusRd Datos sumin. por Memoria Memoria Memoria Cach de P3 e Memoria

Figura 5.5: Protocolo de invalidacin de 3 estados en accin para las transacciones o o mostradas en la gura 5.2.

Satisfaccin de la coherencia o Dado que pueden existir lecturas y escrituras a cachs locales de forma simultnea, e a no es obvio que se satisfaga la condicin de coherencia y mucho menos la de consistencia o secuencial. Examinemos en primer lugar la coherencia. Las transacciones de lectura exclusiva aseguran que la cach en donde se realiza la escritura tiene la unica copia e vlida cuando el bloque se modica en la cach. El unico problema que podr existir a e a 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, unicamente un procesador puede realizar las escrituras; el que realiz la transaccin de lectura exclusiva ms o o a reciente. En la serializacin, esta secuencia de escrituras aparecer en el orden indicado o a por el programa entre esa transaccin y la siguiente transaccin para ese bloque. Las o o lecturas que realice dicho procesador tambin aparecern en orden con respecto a las e a otras escrituras. Para una lectura de otro procesador, existir al menos una transaccin a o Ingenier Informtica a a Universidad de Valencia

28

Multiprocesadores

del bus que separar la nalizacin de la lectura de la nalizacin de esas escrituras. a o o Esa transaccin en el bus asegura que la lectura ver todas las escrituras en un orden o a secuencial consistente. Por lo tanto, las lecturas de todos los procesadores ven todas las escrituras en el mismo orden. Satisfaccin de la consistencia secuencial o Para comprobar que se cumple la consistencia secuencial, veamos en primer lugar cul es la propia denicin y cmo puede construirse una consistencia global entrelaa o o zando todas las operaciones de memoria. La serializacin del bus, de hecho, dene un o orden total sobre las transacciones de todos los bloques, no slo aquellas que afectan a o un unico bloque. Todos los controladores de cachs observan las transacciones de lec e tura y lectura exclusiva en el mismo orden y realizan las invalidaciones en ese orden. Entre transacciones consecutivas del bus, cada procesador realiza una secuencia de operaciones a la memoria (lecturas y escrituras) en el orden del programa. Por lo tanto, cualquier ejecucin de un programa dene un orden parcial natural: o Una operacin de memoria Mj es posterior a la operacin Mi si (i) las o o operaciones son emitidas por el mismo procesador y Mj aparece despus e que Mi en el orden del programa, o (ii) Mj genera una transaccin del bus o posterior a la operacin de memoria Mi . o Este orden parcial puede expresarse grcamente como se muestra en la gura . Entre a transacciones del bus, cualquiera de las secuencias que se pueden formar entrelazando las distintas operaciones da lugar a un orden total consistente. En un segmento entre transacciones del bus, un procesador puede observar las escrituras de otros procesadores, ordenadas por transacciones de bus previas que genera, al mismo tiempo que sus propias escrituras estn ordenadas por el propio programa. a

P0: P1: P2:

R W W

R W

Rd

R R W

W R R

W R W RdX

Figura 5.6: Orden parcial en las operaciones de memoria para una ejecucin con el o protocolo MSI. Tambin podemos ver cmo se cumple la CS en trminos de las condiciones suciene o e tes. La deteccin de la nalizacin de la escritura se realiza a travs la aparicin de una o o e o transaccin de lectura exclusiva en el bus y la realizacin de la escritura en la cach. La o o e tercera condicin, que proporciona la escritura atmica, se consigue bien porque una o o lectura (i) causa una transaccin en el bus que es posterior a aquella transaccin de o o escritura cuyo valor desea obtener, en cuyo caso la escritura debe haberse completado de forma global antes de la lectura, o (ii) porque es posterior en el orden del programa Ingenier Informtica a a Universidad de Valencia

5.2 Protocolos de sondeo o snoopy (medio compartido)

29

como es el caso de una lectura dentro del mismo procesador, o (iii) porque es posterior en el orden del programa del mismo procesador que realiz la escritura, en cuyo caso o el procesador ya ha esperado el resultado de una transaccin de lectura exclusiva y o la escritura se ha completado de forma global. As se cumplen todas las condiciones , sucientes.

5.2.2.

Protocolo de invalidacin de 4 estados (MESI) o

El protocolo MSI presenta un problema si consideramos una aplicacin secuencial o en un multiprocesador; este uso de la multiprogramacin es de hecho la carga ms usual o a de multiprocesadores de pequea escala. Cuando el programa lee y modica un dato, n 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 o o la memoria en estado S, y la segunda en una transaccin BusRdX (o BusUpgr) que o convierte el bloque del estado S al M. Aadiendo un estado que indique que el bloque n es la unica copia (exclusiva) pero que no est modicado y cargado el bloque en ese a estado, podr amos evitarnos la ultima transaccin, ya que el estado indica que ningn o u otro procesador tiene el bloque en cach. Este nuevo estado indica un nivel intermedio e entre compartido y modicado. Al ser exclusivo es posible realizar una escritura o pasar al estado modicado sin ninguna transaccin del bus, al contrario que en el caso o de estar en el estado compartido; pero no implica pertenencia, as que al contrario que en el estado modicado la cach no necesita responder al observar una peticin de dicho e o bloque (la memoria tiene una copia vlida). Variantes de este protocolo MESI se usan a 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 e investigadores de la Universidad de Illinois en 1984. El protocolo MESI consiste en cuatro estados: modicado (M), exclusivo (E), compartido (S) e invlido (I). I y M tienen la misma semntica que antes. El estado exclusivo, a a E, signica que unicamente una cach (esta cach) tiene una copia del bloque, y no ha e e sido modicado (es decir, la memoria principal est actualizada). El estado S signica a que potencialmente dos o ms procesadores tienen este bloque en su cach en un estado a e no modicado. Cuando un procesador lee por primera vez un bloque, si existe una copia vlida a en otra cach entra en la cach del procesador con el estado S. Sin embargo, si no e e existe otra copia en ese instante (por ejemplo, en una aplicacin secuencial), entra con o 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 o otra copia. Si mientras tanto otra cach ha obtenido una copia del bloque, el estado e del bloque deber pasar de E a S. Este protocolo necesita que el bus proporcione una a seal adicional (S) que est disponible para que los controladores puedan determinar n e en una transaccin BusRd si existe otra cach que tenga el mismo bloque. Durante la o e fase en la que se indica en el bus la direccin del bloque al que se quiere acceder, todas o las cachs determinan si tienen el bloque que se solicita y, si eso ocurre, activan la seal e n compartida. Esta es una l nea 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 o e bloque de memoria referenciado y decidir si la carga del bloque se debe realizar en el estado S o E. Ingenier Informtica a a Universidad de Valencia

30
PrRd / PrWr /

Multiprocesadores

M
BusRd / Flush PrWr / BusRdX / Flush

E
PrWr / BusRdX PrRd / BusRd / PrWr / BusRdX BusRdX /

S
PrRd / BusRd(S) PrRd / BusRd / PrRd / BusRd(S) BusRdX /

I
Figura 5.7: Diagrama de transicin de estados para el protocolo Illinois MESI. o El diagrama de transicin de estados para este protocolo se muestra en la gura 5.7. o La notacin BusRd(S) signica que cuando la transaccin de lectura en el bus ocurre, o o a o se activa la seal S, y BusRd(S) signica que S no est activada. Una transaccin n BusRd signica que no nos importa el valor de S en esa transaccin. Una escritura o 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 o o que el bloque pase del estado E al S, dado que existe otra copia del bloque. Como ocurr anteriormente, la aparicin de una transaccin BusRd hace que un bloque que a o o estuviese en el estado M pase al estado S y dicho bloque sea puesto en el bus. Tal como ocurr en el protocolo MSI es posible hacer que dicho bloque no sea actualizado en a la memoria principal, pero ser necesarios nuevos estados. Obsrvese que es posible an e que un bloque est en el estado S incluso sin existir otras copias, dado que estas copias e pueden ser reemplazadas sin que las dems cachs sean noticadas. Los argumentos a e 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. e El nombre del protocolo (MESI) viene de los nombres de los estados que puede tomar una l nea: modicada, exclusiva, compartida e invlida que en ingls signican a e Modied, Exclusive, Shared y Invalid, y lo cierto es que este nombre se usa ms que el a de Illinois. Una l nea que es propiedad de cualquier cach puede estar como exclusiva o modicae da. Las l neas que estn en el estado compartida no son propiedad de nadie en concreto. a La aproximacin MESI permite la determinacin de si una l o o nea es compartida o no Ingenier Informtica a a Universidad de Valencia

5.2 Protocolos de sondeo o snoopy (medio compartido)

31

cuando se carga. Una l nea modicada es enviada directamente al peticionario desde la cach que la contiene. Esto evita la necesidad de enviar comandos de invalidacin para e o todas aquellas l neas que no estaban compartidas. Veamos las transiciones segn las operaciones realizadas sobre las cachs: u e Fallo de lectura: La l nea se coge de la cach que la tenga. Si ninguna la tiene, se e coge de la memoria principal. Si la l nea que se coge est modicada a entonces se escribe esta l nea tambin a la memoria al mismo tiempo. Si es come partida, la cach con mayor prioridad es la que entrega la l e nea. La cach que e entrega la l nea, y aquellas que la contienen, pasan al estado de compartida. Sin embargo, si quien da la l nea es la memoria, entonces la cach que lee pone su e l nea en exclusiva y se hace propietaria de ella. Fallo de escritura: En este caso la l nea se coge de la cach que la tenga. Si ninguna e la tiene, se coge de la memoria principal. Si la l nea que se coge est modicada a entonces se escribe esta l nea tambin a la memoria al mismo tiempo. Si es come partida, la cach con mayor prioridad es la que entrega la l e nea. La l nea le se da actualiza y se pone en estado modicada. El resto de l neas pasan al estado invalidas. Hay que hacer notar que este protocolo slo permite un unico escribiente, o es decir, una l nea modicada slo est presente en una unica cach. o a e Acierto de escritura: Si la cach peticionaria es la propietaria (l e nea modicada o exclusiva), se actualiza la l nea en la cach sin ms. Si la l e a nea est compartida a por otras cachs (compartida), se actualiza la l e nea despus de haber invalidado el e resto de l neas. Una vez actualizada la l nea pasa a ser modicada en cualquiera de los casos anteriores.

5.2.3.

Write once

A veces se le conoce tambin como write invalidate directamente, ya que es el primero e que se pens de este tipo y tambin es el primero de los protocolos de sondeo. En o e ocasiones se le conoce como el protocolo de Goodman puesto que fue propuesto por James Goodman en 1983. Este protocolo de coherencia se puede describir mediante un grafo de transiciones de 4 estados tal y como se muestra en la gura 5.8. Los 4 estados son los siguientes: Vlida: La l a nea de cach, que es consistente con la copia en memoria, ha sido le e da de la memoria principal y no ha sido modicada. Invlida: La l a nea no se encuentra en la cach o no es consistente con la copia en e memoria. Reservada: Los datos han sido escritos una unica vez desde que se ley de la memoria o compartida. La l nea de cach es consistente con la copia en memoria que es la e unica otra copia. Sucia: La l nea de cach ha sido escrita ms de una vez, y la copia de la cach es la e a e unica en el sistema (por lo tanto inconsistente con el resto de copias). Cada l nea de cach tiene dos bits extra donde se guarda el estado de esa l e nea. Dependiendo de la bibliograf cambia el nombre de los estados. As a la l a nea vlida se a la conoce tambin como consistente mltiple, a la reservada como consistente unica, y e u la sucia como inconsistente unica, la vlida se queda con el mismo nombre. a En realidad este protocolo de escribir una vez est basado en un protocolo ms a a Ingenier Informtica a a Universidad de Valencia

32
PrWr / PrRd /

Multiprocesadores

S
BusRd / Flush PrWr / BusRdX PrWr / BusRdX / Flush

R
BusRd / PrWr / BusWrX PrRd / BusRdX /

V
BusRdX / BusWrX / PrRd / BusRd PrRd / BusRd /

I
Figura 5.8: Diagrama de transicin del protocolo Write once. o sencillo con slo tres estados para las copias que son vlida, invlida y sucia. El estado o a a reservada se ha aadido para el caso en que se modique una l n nea una sola vez, de manera que se aprovecha mejor el ancho de banda del bus. Para mantener la consistencia el protocolo requiere dos conjuntos de comandos. Las l neas slidas de la gura 5.8 se corresponden con los comandos emitidos por el o procesador local y son fallo de lectura, acierto de escritura y fallo de escritura. Siempre que se produce un fallo de lectura la l nea entra en el estado de vlida. El a primer acierto de escritura lleva a la l nea a su estado de reservada. Los aciertos de escritura posteriores cambian el estado a sucia. Las l neas discontinuas se corresponden con los comandos de invalidacin emitidos o por el resto de procesadores a travs del bus de sondeo compartido. El comando invalidar e en lectura lee una l nea o bloque e invalida el resto de copias. El comando invalidar en escritura invalida todas las copias de una l nea. El comando lectura de bus se corresponde con una lectura normal a memoria por otro procesador. Con estas consideraciones, los eventos y acciones que tienen lugar en el sistema de memoria son: Fallo de lectura: Cuando un procesador quiere leer un bloque que no est en la a cach se produce un fallo de lectura. Entonces se inicia una operacin de lece o tura en el bus. Si no hay copias de esta l nea en otras cachs entonces se trae e la l nea de la memoria principal, pasando el estado a exclusiva puesto que es la unica cach con esa l e nea. Si hay alguna copia exclusiva en alguna otra cach, e entonces se coge la copia de la memoria o de esa cach, pasando ambas copias al e Ingenier Informtica a a Universidad de Valencia

5.2 Protocolos de sondeo o snoopy (medio compartido)

33

estado de vlidas. Si existe alguna copia sucia en otra cach, esa cach inhibir la a e e a memoria principal y mandar esa copia a la cach que hizo la peticin as como a e o a la memoria principal, ambas copias resultantes pasarn al estado de vlidas. a a Acierto de escritura: Si la copia est sucia o reservada, la escritura se puede llevar a a cabo localmente y el nuevo estado es sucia. Si el estado es vlida entonces se a manda un comando de invalidar en escritura a todas las cachs invalidando sus e copias. A la memoria compartida se escribe al tiempo que a la propia cach, e pasando el estado a reservada. De esta manera nos aseguramos de que slo hay o una copia que es reservada o sucia de una determinada l nea en todas las cachs. e Fallo en escritura: Cuando un procesador falla al escribir en la cach local, la copia e tiene que venir de la memoria principal o de la cach que est sucia. Esto se e e realiza enviando un invalidar en lectura a todas las cachs lo que invalidar todas e a las cachs. La copia local es actualizada terminando en un estado de sucia puesto e que no se ha actualizado la memoria despus de la escritura. e Acierto de lectura: Nunca hay una transicin en este caso, se lee de la cach local y o e ya est. a Cambio de l nea: Si una copia est sucia debe escribirse en algn momento a la a u memoria principal mediante un cambio de l nea (lo cual ocurrir cuando alguna a otra cach lea de esa l e nea). Si la copia esta limpia, es decir, es vlida, exclusiva o a invlida, no se realiza ningn cambio. a u Para poder implementar este protocolo en un bus, son necesarias unas l neas adicionales para inhibir la memoria principal cuando se produce un fallo de lectura y hay copias sucias. Muchos de los buses estndar no incluyen estas l a neas por lo que resulta complicado implantar protocolos de coherencia de cach, a pesar de que estos buses e incluyen multiprocesadores.

5.2.4.

Berkeley

El protocolo Berkeley, tambin llamado Berkeley-SPUR, usa la idea de propietario e de la l nea de cach. En cualquier instante una l e nea de cach slo puede ser propiedad e o de una sola de las cachs, y si ninguna tiene esa l e nea entonces se encuentra en memoria principal. Hay cuatro estados para realizar esto: invalida, slo lectura, sucia compartida o y sucia privada. Cuando una l nea est compartida, slo el propietario tiene esa l a o nea en el estado sucia compartida; todos los dems debern tener esa l a a nea como slo lectura. o Por lo tanto, una l nea de cach slo puede estar en el estado sucia compartida o sucia e o privada en una unica cach, que ser la propietaria de esa l e a nea. La gura 5.9 muestra el diagrama de estados correspondiente a este protocolo; a la izquierda se muestra el diagrama para las operaciones que realiza el procesador y a la derecha el diagrama para las rdenes que vienen a travs del bus realizadas por el resto o e de procesadores. Veamos a continuacin las acciones a realizar dependiendo de las operaciones de la o CPU: Fallo de lectura: Cuando ocurre un fallo de lectura, la cach que fall pide los datos e o al propietario de la l nea, que puede ser la memoria (si la l nea es invlida o de a slo lectura en el resto de cachs) o la cach que sea propietaria de la l o e e nea (que tenga cualquiera de los estados sucios compartida o privada), pasando el estado de la l nea a slo lectura. Si la l o nea que se pide se encuentra en el estado de slo o Ingenier Informtica a a Universidad de Valencia

34
PrRd / PrWr /

Multiprocesadores

SP
PrWr / BusRdX

BusRd / Flush

SC
BusRdX / Flush PrWr / BusRdX PrRd / BusRd / Flush BusRdX / Flush PrWr / BusRdX

SL
BusRdX / PrRd / BusRd PrRd / BusRd /

I
Figura 5.9: Diagramas de transicin del protocolo Berkeley. o lectura en el resto de las cachs, entonces el dato lo coge de la memoria y el estado e que se le asigna es el de slo lectura. Si el propietario de la l o nea ten el estado a de sucia privada tendr que cambiarlo al de sucia compartida puesto que a partir a de ese momento existen ms copias de esa l a nea en otras cachs. e Fallo de escritura: En un fallo de escritura, la l nea viene directamente del propietario (memoria u otra cach). El resto de cachs con copias de la l e e nea, incluida la inicialmente propietaria, deben invalidar sus copias. La cach que quer escribir e a pone el estado de esta l nea a sucia privada y pasa a ser el propietario. Acierto de escritura: La cach que escribe invalida cualquier otra copia de esa l e nea y actualiza la memoria. El nuevo estado de la l nea se pone a sucia privada da igual el estado que tuviera esa l nea. Slo en el caso en que la l o nea fuera sucia privada no es necesaria ni la invalidacin ni la actualizacin a memoria principal, o o con lo que la escritura se realiza local a la cach. e

5.2.5.

Protocolo de actualizacin de 4 estados (Dragon) o

A continuacin estudiaremos un protocolo de actualizacin bsico para cachs de o o a e post-escritura. Esta es una versin mejorada del protocolo usado por los multiprocesao dores 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 modicado (SM) y modicado (M). El estado exclusivo signica que slo existe o Ingenier Informtica a a Universidad de Valencia

5.2 Protocolos de sondeo o snoopy (medio compartido)

35

una cach (esta cach) con una copia del bloque y que dicho bloque no ha sido moe e dicado. La causa de aadir el estado E en Dragon es la misma que en el protocolo n MESI. SC signica que potencialmente dos o ms procesadores (incluyendo esta cach) a e tienen este bloque en su cach y que la memoria principal puede estar o no actualizae da. SM signica que potencialmente dos o ms procesadores tienen este bloque en su a cach, la memoria principal no est actualizada y este procesador es el responsable de e a actualizar la memoria principal cuando este bloque sea reemplazado en la cach. Un e bloque slo puede estar en el estado SM en una unica cach en un momento dado. Sin o e embargo, es posible que una cach tenga el bloque en estado SM mientras que en las e otras aparezca en el estado SC. M signica, como anteriormente, que el bloque ha sido modicado unicamente en esta memoria, la memoria principal tiene un valor anticua do, y este procesador es el responsable de actualizar la memoria principal cuando el bloque sea reemplazado. Obsrvese que no existe un estado expl e cito de bloque invlido a (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 o cach actualizados, as que siempre es posible utilizar los datos existentes en la cach. e e 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 todav env peticiones de lectura (PrRd) y escritura (PrWr). Sin embargo, dado que a a no tenemos un estado de invalidacin en el protocolo, para especicar las acciones a o realizar cuando un bloque de memoria se pide por primera vez, se han aadido dos n tipos ms de peticiones: lectura con fallo de cach (PrRdMiss) y escritura con fallo a e de cach (PrWrMiss). Para las transacciones de bus, tenemos lectura en bus (BusRd), e actualizacin en bus (BusUpd) y escritura en bus (BusWB). Las transacciones BusRd o y BusWB tienen la semntica usual vista en los protocolos anteriores. BusUpd es una a nueva transaccin que toma como parmetro la palabra modicada por el procesador o a y la env a todos los procesadores a travs del bus de tal manera que se actualicen las a e cachs de los dems procesadores. Enviando unicamente la palabra modicada en lugar e a de todo el bloque, se espera una utilizacin ms eciente del ancho del banda del bus. o a Al igual que en el caso del protocolo MESI aparece la seal S para soportar el estado n E. La gura 5.10 muestra el diagrama de transicin de estados para este protocolo. A o continuacin se exponen las acciones a realizar cuando un procesador incurre en un fallo o de cach en una lectura, un acierto de cach en una escritura o un fallo de cach en una e e e escritura (en el caso de un acierto de cach en una lectura no hay que realizar ninguna e accin). o Fallo en una lectura: Se genera una transaccin BusRd. Dependiendo del o estado de la seal compartida (S), el bloque se carga en el estado E o SC n en la cach local. Ms concretamente, si el bloque est en el estado M o e a a SM en una de las otras cachs, esa cach activar la l e e a nea S y proporcionar el ultimo valor para ese bloque en el bus, y el bloque se cargar en la a a cach local en el estado SC (tambin se actualiza la memoria principal; si no e e quisiramos hacerlo necesitar e amos estados adicionales). Si la otra cach lo e tiene en estado M, cambiar al estado SM. Si ninguna otra cach tiene una a e copia, la l nea S no se activar y el dato ser proporcionado por la memoria a a principal y cargado en la cach local en el estado E. e Escritura: Si el bloque est en el estado SM o M en la cach local, no a e es necesario realizar ninguna accin. Si el bloque est en el estado E en la o a Ingenier Informtica a a Universidad de Valencia

36
PrRd / -BusRd / -PrRdMiss / BusRd(S)

Multiprocesadores
PrRd / -BusUpd / Update

E
PrWr / --

SC

PrRdMiss / BusRd(S)

PrWr / BusUpd(S)

PrWr / BusUpd(S) BusUpd / Update

BusRd / Flush PrWrMiss / BusRd(S); BusUpd

SM
PrRd / -PrWr / BusUpd(S) BusRd / Flush

PrWr / BusUpd(S)

PrWrMiss / BusRd(S);

PrRd / -PrWr / --

Figura 5.10: Diagrama de transicin de estados del protocolo de actualizacin Dragon. o o cach local, el bloque cambia internamente al estado M, no siendo necesaria e ninguna accin adicional. Sin embargo, si el bloque est en el estado SC, o a se genera una transaccin BusUpd. Si alguna otra cach tiene una copia o e del dato, actualizan sus copias y cambian su estado a SC. La cach local e tambin actualiza su copia del bloque y cambia su estado a SM. Si no existe e otra copia del dato, la seal S permanecer inactiva y la copia local se n a actualizar cambiando al estado M. Finalmente, si en una escritura el bloque a no est presente en la cach, la escritura se trata como una transaccin del a e o tipo fallo en la lectura seguida de una transaccin de escritura. Por lo tanto, o primero se genera un BusRd y si el bloque se tambin se encuentra en otras e cachs un BusUpd. e Reemplazo: En el caso de reemplazo de un bloque (los arcos no se muestran en la gura), el bloque se escribe en la memoria principal utilizando una transaccin del bus unicamente si se encuentra en el estado M o SM. Si o est en el estado SC, existir otra cach con ese bloque en estado SM, o a a e nadie lo tiene en cuyo caso el bloque es vlido en memoria principal. a

5.2.6.

Firey

El Firey tiene 3 estados que son: lectura privada os Exclusivo (E), lectura compartida o Compartida Consistente (SC) y sucia privada o Modicada (M). El estado de l nea invlida se utiliza slo para denir la condicin inicial de una l a o o nea de cach. e El Firey utiliza el esquema de actualizacin en vez del de invalidacin, es decir, las o o escrituras a la cach son vistas por todos y se escribe a la memoria principal. El resto e de cachs que comparten la l e nea, sgan el bus actualizando sus copias. Por lo tanto, ninguna l nea de cach ser invlida despus de ser cargada. Hay una l e a a e nea especial del Ingenier Informtica a a Universidad de Valencia

5.2 Protocolos de sondeo o snoopy (medio compartido)

37

bus, la L neaCompartida, que se activa para indicar que al menos otra cach comparte e la l nea.
PrRd / PrWr / BusUpd(S)

PrRd /

BusRd /

PrRdMiss / BusRd(S)

E
PrWr /

BusRd /

SC

PrRdMiss / BusRd(S) PrWrMiss / BusRd(S) / BusUpd

BusRd / Flush

PrWr / BusUpd(S)

PrWrMiss / BusRd(S);

PrRd / PrWr /

Figura 5.11: Diagrama de transicin de estados del protocolo de actualizacin Firey. o o

En la gura 5.11 se muestra el diagrama de transicin de estados del protocolo o Firey. Veamos las transiciones a realizar segn los casos: u Fallo de lectura: Si otra cach tiene una copia de la l e nea, sta la entrega a la cach pee e ticionaria, activando la l nea L neaCompartida. Si el estado de la l nea era sucia privada previamente, entonces debe actualizarse a la memoria principal. Todas las cachs que comparten dicha l e nea ponen su estado a lectura compartida. Si no hay cachs con esta l e nea, entonces se coge de la memoria y se pone el estado de lectura privada. Fallo de escritura: La l nea se coge de otra cach o de la memoria. Cuando la l e nea viene de otra cach, sta activa la l e e nea L neaCompartida que es reconocida por la cach peticionaria. Por lo tanto, la l e nea se pone en estado de lectura compartida y la escritura se propaga a todas las cachs y a memoria, que actualizan sus copias. e Si la l nea viene de la memoria, se carga la l nea como sucia privada y se escribe sin propagar la l nea con los nuevos datos. Acierto en escritura: Si la l nea est privada sucia o lectura privada, se escribe a a la cach sin ms. En el ultimo caso se cambia el estado a privada sucia. Si el e a estado es el de lectura compartida entonces adems de a la cach debe escribir a a e la memoria. El resto de cachs que comparten la l e nea capturan los datos del bus actualizando as sus l neas. Adems, estas cachs activan la l a e nea L neaCompartida. Esto es necesario para que as la cach que est escribiendo pueda saber si e a la l nea est compartida o no. Si la l a nea no est compartida, se puede evitar la a escritura a todos (broadcast) aunque la transaccin se debe realizar en cualquier o caso. Si no est compartida el estado pasa a modicada, de otra manera se carga a como lectura compartida. Ingenier Informtica a a Universidad de Valencia

38

Multiprocesadores

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 o rendimiento total de la cach es una combinacin del comportamiento de trco causado e o a por fallos de cach en un uniprocesador y el traco causado por la comunicacin entre e o cachs, lo que puede dar lugar a invalidaciones y posteriores fallos de cach. El cambio e e del nmero de procesadores, tamao de la cach y tamao del bloque pueden afectar a u n e n estos dos componentes de diferente manera, llevando al sistema a un comportamiento que es una combinacin de los dos efectos. o se 1. 2. Las diferencias de rendimiento entre los protocolos de invalidacin y actualizacin o o basan en las tres caracter sticas siguientes: 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 o o o en el de invalidacin. o Con l neas de cach de varias palabras, cada palabra escrita en la l e nea precisa de una escritura a todos en el protocolo de actualizacin, mientras que slo la primera o o escritura de cualquier palabra en la l nea es necesaria en el de invalidacin. Los o protocolos de invalidacin trabajan sobre bloques de cach, mientras que en el de o e actualizacin deben trabajar sobre palabras para aumentar la eciencia. o 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 inmeo diata en la cach del que lee (si es que el procesador que lee ya ten copia de e a esa l nea). Por comparacin, en un protocolo de invalidacin, el que va a leer se o o invalida primero, luego cuando llega la operacin de lectura debe esperar a que o est disponible. e

3.

Como el ancho de banda del bus y la memoria es lo que ms se demanda en un a multiprocesador basado en bus, los protocolos de invalidacin son los que ms se han o a utilizado en estos casos. Los protocolos de actualizacin tambin causan problemas o e segn los modelos de consistencia, reduciendo las ganancias de rendimiento potenciales u mostradas en el punto 3 anterior. En diseos con pocos procesadores (24) donde los n procesadores estn fuertemente acoplados, la mayor demanda de ancho de banda de los a protocolos de actualizacin puede ser aceptable. Sin embargo, dadas las tendencias de o mayor rendimiento de los procesadores y la demanda consecuente en ancho de banda, hacen que los protocolos de actualizacin no se usen. o En un sistema que requiera mucha migracin de procesos o sincronizacin, cualquier o o protocolo de invalidacin va a funcionar mejor que los de actualizacin. Sin embargo, o o un fallo en la cach puede producirse por la invalidacin iniciada por otro procesador e o previamente al acceso a la cach. Estos fallos por invalidacin pueden incrementar el e o trco en el bus y deben ser reducidas. a Varias simulaciones han mostrado que el trco en el bus en un multiprocesador a puede incrementarse cuando el tamao de la l n nea se hace grande. El protocolo de invalidacin facilita la implementacin de primitivas de sincronizacin. T o o o picamente, la media de copias invlidas es bastante pequea, como 2 o 3 en pequeos multiprocesaa n n dores. El protocolo de actualizacin requiere la capacidad de realizar transacciones de o Ingenier Informtica a a Universidad de Valencia

5.3 Esquemas de coherencia basados en directorio

39

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

5.2.8.

El problema de la falsa comparticin o

5.3.

Esquemas de coherencia basados en directorio

Los protocolos de sondeo vistos con anterioridad precisan de arquitecturas que tengan la facilidad de acceso a todos a un tiempo; una arquitectura basada en bus es un buen ejemplo. El problema del bus es que no es una arquitectura que pueda acomodar un nmero elevado de procesadores debido a la limitacin del ancho de banda. u o Para multiprocesadores con un nmero elevado de procesadores se utilizan otro tipo de u interconexiones como las vistas en en el cap tulo 5.6 como las mallas, hipercubos, etc. Sin embargo, estas redes ms complejas no poseen la capacidad de que cualquier nodo a pueda espiar lo que hace el resto. Para solucionar esto lo que se hace es introducir protocolos de coherencia basados en un directorio al cual todos los procesadores y cachs e tienen acceso.

5.3.1.

Protocolos basados en directorio

Veremos a continuacin que los protocolos basados en directorio se pueden dividir o en los que tienen el directorio centralizado y los que lo tienen distribuido. En ambos grupos se permite que existan varias copias compartidas de la misma l nea de cach para e mejorar el rendimiento del multiprocesador sin incrementar demasiado el trco en la a red. Directorio centralizado: Fue el primer esquema propuesto (1976). Consiste en un unico directorio o tabla centralizada donde se guarda informacin sobre el lugar o donde se encuentra cada copia de la cach. Este directorio centralizado es normale mente bastante grande por lo que la bsqueda se realiza de forma asociativa. La u competencia por el acceso al directorio (contencin), as como los largos tiempos o de bsqueda, son alguno de los inconvenientes de este esquema. Los protocolos de u directorio centralizado suelen ser o de mapeado completo o con mapeado limitado que son dos protocolos que se explican ms adelante. a Directorio distribuido: Dos aos despus se propuso otro protocolo basado en la n e distribucin del directorio entre las diferentes cachs. En el directorio se guarda o e el estado de la cach as como su presencia. El estado es local, pero la presencia e indica qu cachs tienen una copia del bloque. Tambin hay dos protocolos t e e e picos de mapeado distribuido que son los protocolos con directorios jerrquicos y los a protocolos con directorios encadenados. En ocasiones la nocin de directorio centralizado o distribuido crea confusin; si o o nuestro modelo de sistema tiene la memoria dividida en trozos, cada uno asociado a un nodo, entonces el directorio centralizado est en realidad distribuido entre las memorias. a En este caso el directorio se encuentra tan distribuido como en un protocolo de directorio distribuido. La diferencia es que en el directorio centralizado, se accede a una porcin o Ingenier Informtica a a Universidad de Valencia

40 del directorio basndonos en su localizacin por su direccin f a o o sica.

Multiprocesadores

En el caso del directorio distribuido, se accede a un directorio particular porque ese nodo es propietario de la l nea de cach. e Veamos a continuacin los diferentes protocolos, de uno y otro tipo, ms frecuenteo a mente utilizados.

5.3.2.

Protocolo de mapeado completo

El protocolo de mapeado completo mantiene un directorio en el cual cada entrada tiene un bit, llamado bit de presencia, por cada una de las cachs del sistema. El bit de e presencia se utiliza para especicar la presencia en las cachs de copias del bloque de e memoria. Cada bit determina si la copia del bloque est presente en la correspondiente a cach. Por ejemplo, en la gura 5.12 las cachs de los procesadores Pa y Pc contienen e e una copia del bloque de datos x, pero la cach del procesador Pb no. Aparte, cada e entrada del directorio tiene un bit llamado bit de inconsistencia unica. Cuando este bit est activado, slo uno de los bits de presencia est a uno, es decir, slo existe una a o a o cach con la copia de ese bloque o l e nea, con lo que slo esa cach tiene permiso para o e actualizar la l nea. Cada cach por su parte tiene dos bits en cada entrada de la cach. El primero es e e el bit de validacin (v en la gura 5.12), e indica si la copia es vlida o no. Si el bit es o a cero, indica que la copia no es vlida, es decir, la copia se puede quitar de la cach. El a e otro bit, llamado bit de privacidad (p en la gura 5.12), sirve para indicar si la copia tiene permiso de escritura, es decir, cuando este bit es uno entonces es la unica copia que existe de esta l nea en las cachs y por tanto tiene permiso para escribir. e
P a Cach v p a x v P b Cach p b v P c Cach p c x

Memoria Compartida

Una entrada en el directorio Bit de inconsistencia nica

x Bloque de datos

Bits de presencia

Figura 5.12: Directorio en el protocolo de mapeado completo. Veamos qu acciones hay que realizar con este protocolo antes los fallos de escritura e y lectura, as como los aciertos de escritura. Naturalmente no hay que hacer nada en especial frente a un acierto de lectura. Fallo de lectura: Supongamos que la cach c env una peticin de fallo de lectura a e a o la memoria. Si el bit de inconsistencia simple est activado, la memoria env una a a peticin de actualizacin a la cach que tenga el bit privado activo, o sea, a la o o e unica cach que tiene esa l e nea. La cach devuelve el ultimo contenido del bloque e a la memoria y desactiva su bit de privado. El bit de inconsistencia simple del bloque en el directorio central es tambin desactivado. La memoria activa el bit e Ingenier Informtica a a Universidad de Valencia

5.3 Esquemas de coherencia basados en directorio

41

de presencia correspondiente a la cach c y env una copia del bloque a c. Una e a vez la cach c recibe la copia, activa el bit de valido y desactiva el de privado. e Si el bit de inconsistencia simple estaba desactivado, trae el bloque de la memoria activando el de vlido y desactivando el de privado como en el caso anterior. a Fallo de escritura: Supongamos que la cach c env una peticin de fallo de escritura e a o a la memoria. La memoria env peticiones de invalidacin a todas las cachs que a o e tienen copias de ese bloque poniendo a cero sus bits de presencia. Las cachs e aludidas invalidan la l nea poniendo a cero el bit de l nea vlida enviado mensajes a de reconocimiento a la memoria principal. Durante este proceso, si hay alguna cach (excepto la c) con una copia del bloque y con el bit de privado activado, la e memoria se actualiza a s misma con el contenido del bloque de esta cach. Una e vez la memoria recibe todos los reconocimientos, activa el bit de presencia de c y manda la copia a la cach c. El bit de inconsistencia simple se pone a uno, puesto e que slo hay una copia. Una vez la cach recibe la copia, se modica, y los bits o e de vlido y privado se ponen a uno. a Acierto de escritura: Si el bit de privado es 0, c env una peticin de privacidad a o a la memoria. La memoria invalida todas las cachs que tienen copia del bloque e (similar al caso de fallo de escritura), y luego pone el bit de inconsistencia simple a uno enviando un mensaje de reconocimiento a c. En el momento c recibe el reconocimiento de que las copias han sido invalidadas, modica el bloque de cach y pone el bit de privado a uno. e Si el bit de privado era 1, entonces escribe sin ms puesto que es la unica cach con a e copia de esa l nea. El principal problema del mapeado completo es que el tamao del directorio es muy n grande. Tal y como hemos visto, este tamao se puede calcular como: n Tamao del directorio = (1 + Nmero de cachs) Nmero de l n u e u neas de memoria Es decir, el tamao del directorio es proporcional al nmero de procesadores muln u tiplicado por el tamao de la memoria. Como la memoria viene a ser habitualmente n proporcional al nmero de procesadores (lo cual es estrictamente cierto en multiproceu sadores con memoria compartida distribuida), resulta que el tamao del directorio es n directamente proporcional al cuadrado del nmero de procesadores, disparndose por u a tanto cuando el nmero de procesadores es elevado. Si adems las l u a neas de cach son e propiedad de slo unos pocos procesadores, se ve que este esquema es muy ineciente. o A continuacin veremos una forma de aliviar estos problemas, y veremos tambin o e ms adelante, en los protocolos de directorio distribuido, otras formas de reducir el a directorio para que sea fcilmente escalable. a

5.3.3.

Protocolo de directorio limitado

Para evitar el crecimiento cuadrtico del mapeado completo es posible restringir el a nmero de copias de cach activas de forma simultnea de un bloque. De esta forma se u e a limita el crecimiento del directorio hacia un valor constante. Un protocolo general basado en directorio se puede clasicar usando la notacin o Diri X, donde Dir indica directorio, i es el nmero de punteros en el directorio, y X u indica el nmero de copias que puede haber en el sistema que necesitan tener una u referencia centralizada. En el caso de redes sin posibilidad de establecer protocolos de Ingenier Informtica a a Universidad de Valencia

42

Multiprocesadores

sondeo entre procesadores o grupos de procesadores, la X vale N B donde N es el nmero de procesadores y B el nmero de bloques de la memoria de cada procesador. u u Con esta nomenclatura, el protocolo basado en directorio de mapeado completo se representar como DirN N B. En cambio, un protocolo basado en directorio limitado, a donde i < N , se representar como Diri N B. a El protocolo de coherencia para el protocolo de directorio limitado es exactamente igual que el visto para el mapeado completo, con la excepcin del caso en que el o nmero de peticiones de una l u nea en particular sea mayor que i tal y como se explica a continuacin. o Supongamos que tenemos el directorio limitado a tan solo 2 punteros, que es lo que vendr a sustituir a los bits de presencia. Supongamos que ambos punteros estn a a ocupados apuntando a copias vlidas en dos cachs diferentes. Supongamos ahora que a e una tercera cach quiere leer en esa misma l e nea. Como no hay ms punteros disponibles a se produce lo que se llama un desalojo (eviction), que consiste en que la memoria invalida una de las cachs que utilizaban un puntero asignndole ese puntero que queda libre a e a la nueva cach. e Normalmente los procesadores suelen desarrollar su actividad local en zonas de memoria separadas de otros procesadores, eso quiere decir que con unos pocos punteros, incluso uno o dos, se puede mantener la actividad en el sistema sin que se produzcan desalojos y sin aumentar por tanto las latencias. Los punteros son codicaciones binarias para identicar a cada procesador, por lo que en un sistema con N procesadores, son necesarios log2 N bits para cada puntero. Con esto, el tamao del directorio ser: n a Tamao del directorio = (1 + Punteros log2 N ) Bloques de memoria n Con las mismas suposiciones que para el mapeado completo, es fcil comprobar que a el crecimiento del directorio es proporcional a N log2 N que es sensiblemente inferior al de N 2 del protocolo con mapeado completo. Este protocolo se considera escalable, con respecto a la sobrecarga de memoria, puesto que los recursos necesarios para su implementacin crecen aproximadamente de o forma lineal con el nmero de procesadores en el sistema. u

5.3.4.

Protocolo de directorio encadenado

Los tipos vistos anteriormente se aplican sobre todo a sistemas con directorio centralizado. Si el directorio se encuentra distribuido, lo que signica que la informacin o del directorio se encuentra distribuida entre las memorias y/o cachs, se reduce el tae mao del directorio as como el cuello de botella que supone un directorio centralizado n en multiprocesadores grandes. Directorios distribuidos hay de dos tipos, protocolos de directorio jerrquico, donde dividen el directorio entre varios grupos de procesadores, y a protocolos de directorio encadenado basados en listas encadenadas de cachs. e Los protocolos de directorio jerrquico se utilizan a menudo en arquitecturas que a consisten en un conjunto de grupos de procesadores clusters conectados por algn tipo u de red. Cada cluster contiene un conjunto de procesadores y un directorio conectado a ellos. Una peticin que no puede ser servida por las cachs en un directorio, es enviada o e a otros clusters tal y como determina el directorio. Ingenier Informtica a a Universidad de Valencia

5.3 Esquemas de coherencia basados en directorio

43

Los protocolos de directorio encadenado mantienen una lista enlazada por punteros entre las cachs que tienen una copia de un bloque. La lista se puede recorrer en un e sentido o en los dos dependiendo de que tenga uno o dos punteros cada nodo. Una entrada en el directorio apunta a una cach con una copia del bloque correspondiente e a esa entrada; esta cach a su vez tiene un puntero que apunta a otra cach que tiene e e tambin la copia, y as sucesivamente. Por lo tanto, una entrada en el directorio contiene e unicamente un unico puntero que apunta a la cabeza de la lista. Con esto, el tamao n del directorio es proporcional al nmero de l u neas de memoria y al logaritmo en base 2 del nmero de procesadores tal y como ocurr en el protocolo de directorio limitado. u a Naturalmente las cachs deben incluir tambin uno o dos punteros, dependiendo del e e tipo de lista, adems de los bits propios de estado. a Un protocolo interesante, basado en directorio encadenado, es el que presenta el estndar IEEE Scalable Coherent Interface o SCI. Este interface estndar es escalaa a ble permitiendo la conexin de hasta 64K procesadores, memorias, o nodos de eno trada/salida. Hay un puntero, llamado puntero de cabeza, asociado a cada bloque de memoria. El puntero de cabeza apunta a la primera cach en la lista. Adems, se asige a nan a cada cach dos punteros, uno con el predecesor en la lista y otro con el sucesor. e Se trata por tanto de una lista con doble enlace. La gura 5.13 muestra la estructura de memoria de un sistema SCI con los punteros de cabeza y los asociados a cada cach. e
Puntero de cabeza Bloque de datos x

Memoria Compartida

P a Cach x a

P b Cach x b

P c Cach x c

Figura 5.13: Protocolo de directorio encadenado en el estndar SCI. a Veamos las acciones a realizar en caso de fallos, aciertos, etc. Fallo de lectura: Supongamos que la cach c env una peticin de fallo de lectura a e a o la memoria. Si el bloque est en un estado no cacheado, es decir, no hay ningn a u puntero a ninguna cach, entonces la memoria manda el bloque a la cach. El e e estado del bloque se cambia a cacheado y el puntero de cabeza apunta a la cach. e Si el estado del bloque es cacheado, es decir, el puntero de cabeza apunta a una cach con una copia vlida del bloque, entonces la memoria env el contenido del e a a puntero, por ejemplo a, a c y actualiza el puntero de cabeza para que ahora apunte a c. La cach c entonces pone el puntero predecesor para que apunte al bloque e de memoria. El siguiente paso consiste en que la cach c manda una peticin a la e o cach a. Cuando a recibe la peticin pone su puntero predecesor para que apunte e o a c y manda la l nea de cach pedida a c. e Fallo de escritura: Supongamos que la cach c manda una peticin de fallo de escrie o tura a la memoria. La memoria entonces manda el puntero de cabeza (por ejemplo a) y actualiza el puntero de cabeza para apuntar a c. En este punto, la cach c que e es el cabeza de lista, tiene autoridad para invalidar el resto de copias de cach para e mantener slo la copia que va a modicar. Esta invalidacin se realiza enviando o o Ingenier Informtica a a Universidad de Valencia

44

Multiprocesadores

la cach c una peticin de invalidacin a a; entonces a invalida su copia y manda e o o su puntero sucesor (que por ejemplo apunta a b) a c. En este momento la cach c e usa este puntero sucesor para enviar una peticin de invalidacin de l o o nea a b. Estas operaciones continan hasta que se invalidan todas las copias. Por ultimo u se realiza la escritura a la copia que es la unica en la lista. Acierto de escritura: Si la cach que escribe, c, es la unica en la lista, simplemente e actualiza la copia y no hace ms. a Si la cach c es la cabeza de lista, entonces invalida todas las copias de cach para e e ser la unica cach con copia. El proceso de invalidacin es igual que el visto en el e o punto anterior. Por ultimo escribe en la copia suya. Si la cach c no est en cabeza entonces se quita a s misma de la lista. Postee a riormente interroga a la memoria para ver quin es la cabeza de lista y pone su e puntero sucesor apuntando a la cach cabeza de lista en ese momento. La memoe ria pone su puntero para apuntar a c que ser la nueva cabeza de lista. Ahora a tenemos el caso anterior, as que se hace lo mismo, es decir, se invalidan el resto de copias y se escribe en la cach. Hay que hacer notar que en cualquier caso la e lista se queda con un unico elemento.

5.3.5.

Rendimiento de los protocolos basados en directorio

Comparando los protocolos de directorio vistos hasta ahora se puede decir que los protocolos de mapeado completo ofrecen una mayor utilizacin del procesador que los o encadenados y estos ms que los de directorio limitado. Sin embargo, un directorio a completamente mapeado requiere mucha ms memoria que los otros dos. Por otro lado, a la complejidad del directorio encadenado es mayor que la del limitado. Comparando los protocolos basados en directorio con los de sondeo, podemos decir que los protocolos de directorio tienen la ventaja de ser capaces de restringir las peticiones de lectura/escritura slo a aquellas cachs con una copia vlida del bloque. Sin o e a embargo, estos protocolos aumentan el tamao de la memoria y las cachs debido a n e los bits y punteros extra. Los protocolos de sondeo tienen la ventaja de que su implementacin es menos compleja. Sin embargo, estos protocolos de sondeo no se pueden o escalar a un nmero elevado de procesadores y requieren cachs de doble puerto de alto u e rendimiento para permitir que el procesador ejecute instrucciones mientras sondea o sga en el bus para ver las transacciones de las otras cachs. e El rendimiento de una mquina basada en directorio depende de muchos de los a mismos factores que inu en el rendimiento de las mquinas basadas en bus (tamao an a n de la cach, nmero de procesadores y tamao del bloque), como de la distribucin de e u n o los fallos en la jerarqu de la memoria. La posicin de los datos demandados depende a o tanto de la localizacin inicial como de los patrones de comparticin. Empezaremos o o examinando el rendimiento bsico de la cach en la carga de programas paralelos que a e utilizamos en la seccin 5.2.7, para despus determinar los efectos de los diferentes tipos o e de fallos. Dado que las mquinas son ms grandes y las latencias mayores que en el caso de a a multiprocesadores basados en snooping, empezaremos con una cach mayor (128 KB) e y un bloque de 64 bytes. En las arquitecturas de memoria distribuida, la distribucin o de las peticiones entre locales y remotas es el factor clave para el rendimiento, ya que sta afecta tanto al consumo del ancho de banda global como a la latencia vista por el e nodo que realiza la peticin. Por tanto, separaremos en las guras de esta seccin los o o Ingenier Informtica a a Universidad de Valencia

5.3 Esquemas de coherencia basados en directorio

45

fallos de cach en locales y remotos. Al mirar estas guras hay que tener en cuenta que, e para estas aplicaciones, la mayor de los fallos remotos se producen debido a fallos de a coherencia, aunque algunos fallos de capacidad tambin puede ser remotos, y en algunas e aplicaciones con una distribucin de datos pobre, estos fallos pueden ser signicativos. o Como muestra la gura 5.14, la tasa de fallos con estas cachs no se ve afectada por e el cambio en el nmero de procesadores, con la excepcin de Ocean, donde la tasa de u o fallos aumenta con 64 procesadores. Este aumento se debe al aumento de conictos en el mapeo de la cach que ocurren cuando se reduce el tamao de la malla, dando lugar e n a un aumento de los fallos locales, y al aumento de los fallos de coherencia, que son todos remotos.

FFT 6% 5% 4% Miss rate 3% 2% 1% 0% 8 16 32 64 Processor count 0.0% 8 16 32 64 Processor count Ocean 8% 6% Miss rate 4% 2% 0.0% 8 16 32 64 Processor count Local misses Remote misses 0% 8 16 32 64 Processor count Miss rate 0.5% 1.0% LU

Barnes 0.5% Miss rate

Figura 5.14: Tasa de fallo en funcin del nmero de procesadores. o u La gura 5.15 muestra cmo cambia la tasa de fallos al incrementarse el tamao de la o n cach, suponiendo una ejecucin con 64 procesadores y bloques de 64 bytes. Estas tasas e o de fallo descienden tal como cabr esperar, aunque el efecto amortiguador causado por a la casi nula reduccin de los fallos de coherencia dan lugar a un menor decrecimiento o de los fallos remotos que de los fallos locales. Para una cach de 512 KB, la tasa de e fallo remota es igual o mayor que la tasa de fallo local. Tamaos de cach mayores slo n e o darn lugar a amplicar este fenmeno. a o Finalmente, la gura 5.16 muestra el efecto de cambiar el tamao del bloque. Dado n que estas aplicaciones tienen buena localidad espacial, el incrementar el tamao del n bloque reduce la latencia de fallo, incluso para bloques grandes, aunque los benecios en el rendimiento de utilizar los bloques de mayor tamao son pequeos. Adems, la n n a mayor parte de la mejora en la tasa de fallos se debe a los fallos locales. a Ms que mostrar el trco de la memoria, la gura 5.17 muestra el nmero de bytes a a u necesarios por referencia de datos en funcin del tamao del bloque, dividiendo los o n Ingenier Informtica a a Universidad de Valencia

46

Multiprocesadores

FFT 10% 8% 6% Miss rate 4% 2% 0% 32 64 128 256 512 Cache size (KB) Miss rate 1.0% 0.5% 0.0% 32 2.5% 2.0% 1.5%

LU

64 128 256 512 Cache size (KB) # Ocean

Barnes 1.5% 1.0% Miss rate 0.5% 0.0% 32 64 128 256 512 Cache size (KB) Local misses

20% 15% Miss rate 10% 5% 0% 32 64 128 256 512 Cache size (KB) Remote misses

Figura 5.15: Tasa de fallo en funcin del tamao de la cach. o n e

FFT 12% 10% 8% Miss rate 6% 4% 2% 0% 16 32 64 128 Block size (bytes) Miss rate 2% 1% 0% 16 32 64 128 Block size (bytes) 4% 3% LU

Barnes 0.3% 0.2% Miss rate 0.1% 0.0% 16 32 64 128 Block size (bytes) Local misses 5% 0% 16 Miss rate 15% 10%

Ocean

32

64 128

Block size (bytes) Remote misses

Figura 5.16: Tasa de fallo en funcin del tamao del bloque suponiendo una cach de o n e 128 KB y 64 procesadores. Ingenier Informtica a a Universidad de Valencia

5.3 Esquemas de coherencia basados en directorio

47

requisitos de ancho de banda en local y global. En el caso de un bus, podemos unir ambos factores para determinar la demanda total para el bus y el ancho de banda de la memoria. Para un red de interconexin escalable, podemos usar los datos de la o gura 5.17 para determinar el ancho de banda global por nodo y estimar ancho de banda de la biseccin, como muestra el siguiente ejemplo. o

FFT 6.0 5.0 4.0 Bytes per data reference 3.0 2.0 1.0 0.0 16 32 64 128 Block size (bytes) Bytes per data reference 0.6# 0.5 0.4 0.3 0.2 0.1 0.0 16

LU

32

64 128

Block size (bytes)

Ocean Barnes 0.4 0.3 Bytes per data reference 0.2 0.1 0.0 16 32 64 128 Block size (bytes) Local Global Bytes per data reference 7.0 6.0 5.0 4.0 3.0 2.0 1.0 0.0 16 32 64 128 Block size (bytes)

Figura 5.17: Nmero de bytes por referencia en funcin del tamao del bloque. u o n Ejemplo Supongamos un multiprocesador de 64 procesadores a 200 MHz con una referencia a memoria por ciclo de reloj. Para un tamao de bloque de 64 bytes, n la tasa de fallo remota es del 0.7 %. Determinar el ancho de banda por nodo y el ancho de banda estimado para la biseccin para FFT. Suponer que el procesador o no se para ante peticiones a memoria remota; esto puede considerarse cierto si, por ejemplo, todos los datos remotos son precargados. Respuesta El ancho de banda por nodo es simplemente el nmero de bytes por reu ferencia multiplicado por la tasa de referencias: 0,007 200 64 = 90 M B/sec. Esta tasa es aproximadamente la mitad del ancho de banda del ms rpido MPP a a escalable disponible en 1995. La demanda de ancho de banda por nodo excede a las redes de interconexin ATM ms rpida existente en 1995 por un factor de 5, o a a y exceder ligeramente a la siguiente generacin de ATM a o FFT realiza comunicaciones del tipo todos a todos, as que el ancho de banda de la biseccin ser igual a 32 veces el ancho de banda por nodo, o 2880 M B/sec. o a Para una mquina de 64 procesadores conectada mediante una malla 2D, el ancho a de banda de la biseccin crece proporcionalmente a la ra cuadrada del nmero o z u de procesadores. As para 64 procesadores el ancho de banda de la biseccin es , o 8 veces el ancho de banda del nodo. En 1995, las interconexiones del tipo MPP ofrecen cerca de 200 M B/sec por nodo para un total de 1600 M B/sec. Para 64 nodos una conexin del tipo malla 3D dobla este ancho de banda de la biseccin o o Ingenier Informtica a a Universidad de Valencia

48

Multiprocesadores (3200 M B/sec), que excede el ancho de banda necesario. La siguiente generacin o de mallas 2D tambin conseguir alcanzar el ancho de banda necesario. e a

El ejemplo previo muestra la demanda del ancho de banda. Otro factor clave para los programas paralelos es el tiempo de acceso a memoria remota, o latencia. Para examinar este factor usaremos un ejemplo sobre una mquina basada en directorio. La gura 5.18 a muestra los parmetros que supondremos para nuestra mquina. Supondremos que el a a tiempo de acceso para la primera palabra es de 25 ciclos y que la conexin a la memoria o local tiene un ancho de 8 bytes, mientras que la red de interconexin tiene una anchura o de 2 bytes. Este modelo ignora el efecto de la contencin, que probablemente no es muy o serio en los programas paralelos examinados, con la posible excepcin de FFT, que usa o comunicaciones del tipo todos a todos. La contencin podr tener un serio impacto en o a el rendimiento para otro tipo de cargas de trabajo.

Characteristic Cache hit Cache miss to local memory Cache miss to remote home directory Cache miss to remotely cached data (3-hop miss)

Number of processor clock cycles 1

25 + -------------------------------8 block size in bytes 75 + ------------------------------------------2 block size in bytes 100 + ------------------------------------------2

block size in bytes

Figura 5.18: Caracter sticas de la mquina basada en directorio del ejemplo. a La gura 5.19 muestra el coste en ciclos para una referencia a memoria, suponiendo los parmetros de la gura 5.18. Slo se contabilizan las latencias de cada tipo de a o referencia. Cada barra indica la contribucin de los xitos de cach, fallos locales, fallos o e e remotos y fallos remotos a una distancia de tres saltos. El coste est inuenciado por la a frecuencia total de los fallos de cach y actualizaciones, al igual que por la distribucin e o de las localizaciones donde se satisface el fallo. El coste de una referencia a memoria remota permanece estable al aumentar el nmero de procesadores, excepto para Ocean. u El incremento en la tasa de fallo en Ocean para 64 procesadores est claro a partir de a la gura 5.14. Al aumentar la tasa de fallo, cabr esperar que el tiempo gastado en las a referencias a memoria se incremente tambin. e Aunque la gura 5.19 muestra el coste de acceso a la memoria, que es el coste dominante en estos programas, un modelo completo del rendimiento deber considerar a el efecto de la contencin en el sistema de memoria, al igual que las prdidas ocasionadas o e por los retrasos en la sincronizacin. o

5.4.

Modelos de consistencia de memoria

Este apartado se encuentra principalmente en [Tan95] y [CSG99], pero se puede ampliar el tema en [CDK96], [Hwa93] y [HP96]. La coherencia es esencial si se quiere transmitir informacin entre procesadores o mediante la escritura de uno en una localizacin que leer el segundo. Sin embargo, o a Ingenier Informtica a a Universidad de Valencia

5.4 Modelos de consistencia de memoria


FFT 4.5 4.0 3.5 3.0 2.5 Average cycles per reference 2.0 1.5 1.0 0.5 0.0 8 16 32 64 Processor count Barnes 4.5 4.0 3.5 3.0 2.5 Average cycles per reference 2.0 1.5 1.0 0.5 0.0 8 16 32 64 Processor count Hit Miss to local memory Remote miss to home Average cycles per reference 4.5 4.0 3.5 3.0 2.5 2.0 1.5 1.0 0.5 0.0 8 16 32 64 Processor count 3-hop miss to remote cache Average cycles per reference 4.5 4.0 3.5 3.0 2.5 2.0 1.5 1.0 0.5 0.0 8 16 32 64 Processor count Ocean LU

49

Figura 5.19: La latencia efectiva de las referencias a memoria en una mquina DSM a depende de la frecuencia relativa de los fallos de cach y de la localizacin de la memoria e o desde donde se producen los accesos. no se dice nada acerca de cuando el valor escrito debe hacerse visible. A menudo, en la escritura de un programa paralelo queremos asegurarnos que una lectura devuelve el valor de una determinada escritura. Es decir, queremos establecer un orden entre una escritura y una lectura. Normalmente, usamos alguna forma de evento de sincronizacin o para asegurarnos esta dependencia. Consideremos, por ejemplo, los fragmentos de cdigo que se muestran en la guo ra 5.20 y que son ejecutados por los procesadores P1 y P2 . De este cdigo se deduce o que el programador quiere que el proceso que se ejecuta en P2 realice una espera activa hasta que el valor de la variable compartida ag cambie a 1, y despus imprimir el valor e de la variable A que deber ser 1, dado que dicho valor ha sido actualizado antes del a valor de ag por el procesador P1 . En este caso, estamos accediendo a otra localizacin o (ag) para preservar el orden entre los diferentes accesos a la misma localizacin (A). o En particular, estamos suponiendo que la escritura de A es visible para el procesador P2 antes que la escritura a ag, y que la lectura de ag por P2 que hace que salgamos del bucle while se ha completado antes que la lectura de A. Esta ordenacin entre los o accesos de P1 y P2 no est garantizada por la coherencia, que, por ejemplo, unicamente a requiere que el nuevo valor de A se haga visible al procesador P2 , no necesariamente antes de que el nuevo valor de ag sea observado. Claramente, estamos esperando ms del sistema de memoria que devolver el ltimo a u Ingenier Informtica a a Universidad de Valencia

50 /* El valor inicial de A y ag es 0 */ P1 P2 A=1 while (ag == 0); /* bucle vac */ o ag=1 print A

Multiprocesadores

Figura 5.20: Requisitos de un evento de sincronizacin mediante ags. o valor escrito para cada localizacin: Establecer un orden entre los accesos realizados o por diferentes procesos a la localizacin (digamos A), en algunos casos esperamos que o un sistema de memoria respete el orden de las lecturas y escrituras a diferentes localizaciones (A y ag) realizadas por un proceso dado. La coherencia no dice nada acerca del orden en el cual las escrituras realizadas por P1 deben hacerse visibles a P2 , dado que estas operaciones se realizan sobre diferentes localizaciones. De manera similar, no dice nada acerca del orden en el cual las lecturas realizadas a diferentes localizaciones por P2 se realizan de forma relativa a P1 . Por lo tanto, la coherencia por si sola no evita un resultado de 0 en el ejemplo. Claramente, necesitamos algo ms que la coherencia para a dar a un espacio de direcciones compartido una semntica clara, es decir, un modelo a de ordenacin que los programadores puedan usar para razonar acerca de los posibles o resultados y por tanto de la correccin de sus programas. o Un modelo de consistencia de la memoria para un espacio de direcciones compartido especica las restricciones en el orden en el cual las operaciones de memoria deben parecer haberse realizado (es decir, hacerse visibles a los procesadores) entre ellas. Esto incluye operaciones a las mismas localizaciones o diferentes localizaciones, y por el mismo proceso o por diferentes procesos. Por lo tanto, la consistencia de la memoria incluye la coherencia.

5.4.1.

Consistencia secuencial

Antes de ver el modelo de consistencia secuencial, que es sin duda uno de los ms a implementados, se introduce el problema de la consistencia de la memoria con un modelo ideal que no es implementable en la prctica, pero que es lo que probablemente uno a esperar del comportamiento de un sistema multiprocesador cualquiera. a Modelo de consistencia estricta Este modelo es el caso ideal en el cual cualquier escritura se ve instantneamente a por cualquier lectura posterior. Dicho de otra manera ms formal: Cualquier lectura a de cierta posicin de memoria X devuelve el valor almacenado por la escritura ms o a reciente realizada sobre X. Hay que hacer notar que este modelo de consistencia no se puede implementar en ning n sistema real. Efectivamente, como la distancia entre los procesadores u y la memoria no es nula, la seal que viaja entre el procesador que escribe y la memoria n sufre un cierto retraso. Si durante este retraso, en el cual la memoria no tiene an el u nuevo dato escrito, otro procesador decide leer, no va a leer el valor que se acaba de mandar a la memoria, que an no ha llegado, sino el que hubiera anteriormente. u Ingenier Informtica a a Universidad de Valencia

5.4 Modelos de consistencia de memoria

51

Por lo tanto, la unica forma en la que se podr implementar este modelo es su a poniendo que los datos viajan de forma instantnea (velocidad innita), lo cual va en a contra de la teor general de relatividad. a El modelo de consistencia secuencial Cuando se discutieron las caracter sticas de diseo fundamentales de una arquitecn tura de comunicacin, se describi de forma informal un modelo de ordenacin deseable o o o para un espacio de direcciones compartido: el que nos asegura que el resultado de un programa multihilo (multithread ) ejecutndose con cualquier solapamiento de los disa tintos hilos sobre un sistema monoprocesador sigue siendo el mismo en el caso de que algunos de los hilos se ejecuten en paralelo sobre diferentes procesadores. La ordenacin o de los accesos a los datos dentro de un proceso es la del programa, y entre los procesos viene dada por alguno de los posibles solapamientos entre los ordenes de los diferentes programas. As en el caso del multiprocesador, ste no debe ser capaz de hacer que los , e resultados sean visibles en el espacio de direcciones compartido en un forma diferente a la que se pueda generar por los accesos solapados de diferentes procesos. Este modelo intuitivo fue formalizado por Lamport en 1979 como consistencia secuencial, que se dene como sigue: Consistencia secuencial. Un multiprocesador es secuencialmente consistente si el resultado de cualquier ejecucin es la misma que si las operaciones o de todos los procesadores se realizaran en algn orden secuencial, y las u operaciones de cada procesador individual ocurren en esta secuencia en el orden especicado por el programa. La gura 5.21 representa el modelo de abstraccin proporcionado a los programadores o por un sistema de consistencia secuencial. Varios procesadores parecen compartir una unica memoria lgica, incluso aunque en la mquina real la memoria principal pueda o a estar distribuida entre varios procesadores, incluso con sus cachs y buers de escritura e privados. Cada procesador parece emitir y completar las operaciones a la memoria de una vez y de forma atmica en el orden del programa es decir, una operacin a la o o memoria no parece haber sido emitida hasta que la previa ha sido completada y la memoria comn parece servir a estas peticiones una cada vez, de manera entrelazada de u acuerdo con un orden arbitrario. Las operaciones a la memoria aparecen como atmicas o dentro de este orden; es decir, deben aparecer globalmente (a todos los procesadores) como si una operacin en este orden entrelazado consistente se ejecuta y se completa o antes de que empiece la siguiente. Al igual que en el caso de la coherencia, no es importante en qu orden se emitan e realmente las operaciones a la memoria o incluso cundo se completan. Lo que impora ta es que parezcan completarse en un orden que no viole la consistencia secuencial. Vemoslo mediante el ejemplo que se muestra en la gura 5.22. a En este ejemplo, el resultado (0,2) para (A,B) no estar permitido bajo la consisa tencia secuencial (preservando nuestra intuicin) dado que parecer que las escrituras o a de A y B en el proceso P1 se han ejecutado fuera de orden. Sin embargo, las operaciones de memoria podr ejecutarse y completarse en el orden 1b, 1a, 2b, 2a. No importa que an se hayan completado fuera de orden, dado que el resultado (1,2) de la ejecucin es la o Ingenier Informtica a a Universidad de Valencia

52

Multiprocesadores

P1

P2

Pn

Los procesadores envian las referencias a la memoria en el orden determinado por el programa

El conmutador se conecta de forma aleatoria despues de cada referencia

Memoria

Figura 5.21: Abstraccin desde el punto de vista del programador del subsistema de o memoria bajo el modelo de consistencia secuencial. P1 (1a) A = 1; (1b) B = 2; P2 (2a) print B; (2b) print A;

Figura 5.22: Ordenes entre los accesos sin sincronizacin. o misma que si las operaciones se hubiesen ejecutado y completado en el orden del programa. Por otra parte, la ejecucin 1b, 2a, 2b, 1a no cumplir la consistencia secuencial, o a ya que producir el resultado (0,2) que no est permitido bajo este paradigma. a a La implementacin de la consistencia secuencial hace necesario que el sistema (softo ware y hardware) preserve las restricciones intuitivas denidas arriba. Existen dos restricciones. La primera es que las operaciones de memoria de un proceso se hagan visibles en el orden del programa. El segundo requisito, necesario para garantizar que el orden total sea consistente para todos los procesos, es que las operaciones aparezcan atmicas; o es decir, que parezca que una operacin se ha completado con respecto a todos los proo cesos antes que la siguiente operacin en el orden total haya sido emitida. El truco de la o segunda restriccin es hacer que las escrituras parezcan atmicas, especialmente en un o o sistema con varias copias de un bloque que necesita ser informado ante una escritura. La atomicidad de las escrituras, incluidas en la denicin de consistencia secuencial, o implica que la posicin en la cual parece realizarse una escritura en el orden total debe o ser la misma con respecto a todos los procesadores. Esto asegura que nada de lo que un procesador haga despus de que haya visto el nuevo valor producido por una escrie tura se hace visible a los otros procesadores antes de que ellos tambin hayan visto el e nuevo valor para esa escritura. De hecho, mientras que la coherencia (serializacin de o las escrituras) dice que las escrituras a la misma localizacin deben parecerles a todos o los procesadores que han ocurrido en el mismo orden, la consistencia secuencial dice que todas las escrituras (a cualquier localizacin) deben parecerles a todos los proceo sadores que han ocurrido en el mismo orden. El siguiente ejemplo muestra por qu es e importante la escritura atmica. o Ejemplo Consideremos los tres procesos que se muestran en la gura 5.23. Mostrar Ingenier Informtica a a Universidad de Valencia

5.4 Modelos de consistencia de memoria

53

cmo la no preservacin de la atomicidad en la escritura viola la consistencia o o secuencial. Respuesta Dado que P2 espera hasta que A sea 1 y despus hace que B valga 1, y e dado que P3 espera hasta que B vale 1 y unicamente despus lee el valor de A, e por transitividad podr amos deducir que P3 encontrar que A vale 1. Si P2 puede a continuar despus de la lectura de A y escribir B antes de tener garantizado que P3 e ha visto el nuevo valor de A, entonces P3 puede leer el nuevo valor de B y el viejo valor de A de su cach, violando nuestra intuicin de la consistencia secuencial. e o P1 P2 P3 A=1; while (A==0); B=1; while (B==0); print A Figura 5.23: Ejemplo que ilustra la importancia de la atomicidad de las escrituras para la consistencia secuencial. El orden del programa de cada proceso impone un orden parcial sobre el conjunto de todas las operaciones; es decir, impone una ordenacin sobre el conjunto de operaciones o que emite dicho proceso. Un intercalamiento de las operaciones de diferentes procesos denen un orden total en el conjunto de todas las operaciones. En realidad, para cada posible intercalamiento se dene un orden total diferente dando lugar a un gran nmero u de posibles rdenes totales. Este hecho da lugar a las siguientes deniciones: o Ejecucin secuencialmente consistente. Una ejecucin de un programa se o o dice que es secuencialmente consistente si los resultados que produce son los mismos que los que produce uno de los posibles rdenes totales (intercalados o como se ha denido anteriormente). Es decir, debe existir un orden total o intercalacin de rdenes de los programas de los procesos que den lugar al o o mismo resultado. Sistema secuencialmente consistente. Un sistema es secuencialmente consistente si cualquier posible ejecucin de ese sistema se corresponde con o (produce el mismo resultado que) alguno de los posibles ordenes totales denidos arriba. Condiciones sucientes para preservar la consistencia secuencial Es posible denir un conjunto de condiciones sucientes que garanticen la consistencia secuencial en un multiprocesador. El siguiente conjunto se usa de forma habitual debido a su relativa simplicidad sin ser excesivamente restrictivas: 1. 2. 3. Todo proceso emite las peticiones a la memoria en el orden especicado por el programa. Despus de emitir una operacin de escritura, el proceso que la emiti espera ha e o o que se haya realizado la escritura antes de emitir su siguiente operacin. o Despus de emitir una operacin de lectura, el proceso que la emiti espera a que e o o la lectura se haya completado, y tambin espera a que se complete la escritura que e gener el valor devuelto por la lectura, antes de emitir su siguiente operacin. Es o o Universidad de Valencia

Ingenier Informtica a a

54

Multiprocesadores decir, si la escritura que gener el valor que se obtiene mediante la lectura ha sido o realizada con respecto a este procesador (y debe haberlo hecho si se ha devuelto ese valor) entonces el procesador debe esperar hasta que la escritura se haya realizado con respecto a todos los procesadores.

La tercera condicin es la que asegura la atomicidad de la escritura, y es bastante o exigente. No es simplemente una restriccin local, ya que la lectura debe esperar hasta o que escritura que le precede de forma lgica sea visible de forma global. Obsrvese o e que estas son condiciones sucientes, ms que condiciones necesarias. La consistencia a secuencial puede preservarse con menos serializacin en muchas situaciones. o

5.4.2.

Otros modelos de consistencia

Con el orden del programa denido en trminos del programa fuente, est claro e a que para que se cumplan estas condiciones el compilador no debe cambiar el orden de las operaciones a la memoria en su presentacin al procesador. Desafortunadamente, o muchas de las optimizaciones empleadas en los compiladores y procesadores violan esta condicin. Por ejemplo, los compiladores reordenan rutinariamente los accesos a o diferentes localizaciones dentro de un proceso, as el procesador puede emitir accesos a memoria sin cumplir el orden del programa visto por el programador. Explicitamente, los programas paralelos usan compiladores uniprocesador, que slo se preocupan de o preservar las dependencias a la misma localizacin. o Incluso en el caso de que el compilador preserve el orden del programa, los modernos procesadores usan mecanismos sosticados como buers de escritura, memoria entrelazada, encauzamiento y tcnicas de ejecucin desordenada. Estas permiten que las e o operaciones a la memoria de un proceso sean emitidas, ejecutadas y/o completadas sin seguir el orden del programa. Estas optimizaciones en la arquitectura y el compilador funcionan en los programas secuenciales, ya que en ellos slo es necesario preservar las o dependencias entre los accesos a la misma localizacin de la memoria. o Debido a las fuertes restricciones que impone la consistencia secuencial, se han propuesto otros modelos ms relajados que permiten implementaciones de ms rendimiento a a y que todav preservan un modelo de programacin simple. De hecho, existen ciertos a o modelos relajados que mantienen la propiedad de una semntica de ejecucin idntica a a o e la que ser bajo un modelo de consistencia secuencial. En la gura 5.24 se muestran ala gunos de los modelos propuestos. Una echa de un modelo a otro indica que el segundo permite ms optimizaciones que el primero y, por tanto, proporciona mayores prestaa ciones a costa, posiblemente, de un interfaz ms complejo. Dos modelos no conectados a con echas no pueden compararse en trminos de rendimiento o programabilidad. Las e echas discontinuas aparecen en el caso de considerar un revisin particular de proceso sor consistency y release consistency propuesta por J. Hennessy, K. Gharachorloo y A. Gupta1 . Para entender las diferencias entre los diferentes modelos relajados y las posibles implicaciones para una implementacin de los mismos, la forma ms sencilla es denir o a los modelos en trminos de las ordenaciones entre lecturas y escrituras realizadas por un e unico procesador que preserva cada modelo. Es posible establecer cuatro ordenaciones en funcin de las cuatro posibles dependencias existentes entre dos instrucciones: o
1 Revision to Memory Consistency and Event Ordering in Scalable Shared-Memory Multiprocessors, Technical Repor CSL-TR-93-568, Stanford University, April 1993.

Ingenier Informtica a a

Universidad de Valencia

5.4 Modelos de consistencia de memoria


--

55

Sequential Consistency Other New Models? Weak Ordering Processor Consistency Release Consistency (RCsc) Partial Store Ordering Total Store Ordering

Release Consistency (RCpc)

Figura 5.24: Modelos de consistencia de memoria.

1. 2. 3. 4.

R R: una lectura seguida de una lectura. R W : una lectura seguida de una escritura, que siempre se preserva si las operaciones son sobre la misma direccin, dado que se trata de una antidependencia. o W W : una escritura seguida de otra escritura, que siempre se preserva si las operaciones son sobre la misma direccin, dado que se trata de una dependencia o de salida. W R: una escritura seguida de una lectura, que siempre se preserva si son sobre la misma direccin, dado que se trata de una dependencia verdadera. o

Si existe una dependencia entre una lectura y una escritura, la semntica de un programa a ejecutado sobre un uniprocesador exige que las operaciones estn ordenadas. Si no e existen dependencias, el modelo de consistencia de la memoria determina qu rdenes eo deben preservarse. Un modelo de consistencia secuencial exige que se preserven los cuatro rdenes, lo que equivale a considerar un unico mdulo de memoria centralizado o o que serializa las operaciones de todos los procesadores, o asumir que todas las lecturas y escrituras a la memoria se comportan como barreras. Cuando se relaja una ordenacin, simplemente queremos decir que permitimos la o nalizacin anticipada de una operacin por parte de un procesador. Por ejemplo, relajar o o la ordenacin W R signica que permitimos que una lectura que era posterior a una o escritura se complete antes. Hay que recordar que un escritura no se completa (realiza) hasta que se han completado todas las invalidaciones, as permitiendo que ocurra una , lectura despus de un fallo en una operacin de escritura anterior pero antes de que las e o invalidaciones se hayan realizado ya no se preserva este orden. En realidad, un modelo de consistencia no restringe el orden de los eventos, sino que dice qu ordenaciones pueden ser observadas. Por ejemplo, en la consistencia secuencial, e el sistema debe parecer que preserva los cuatro ordenes descritos anteriormente, aunque en la prctica se permite la reordenacin. Esta sutileza permite implementaciones que a o usan trucos que reordenan eventos sin permitir que dichas reordenaciones sean observadas. En la consistencia secuencial una implementacin puede, por ejemplo, permitir o que un procesador, P, inicie otra escritura antes de que la escritura anterior haya sido completada, siempre que P no permita que el valor de la ultima escritura sea visible antes de que la escritura anterior se complete. El modelo de consistencia tambin debe denir la ordenacin existente entre los e o accesos a las variables de sincronizacin, que actan como barreras, y el resto de los o u Ingenier Informtica a a Universidad de Valencia

56

Multiprocesadores

accesos. Cuando una mquina implementa la consistencia secuencial, todas las lecturas a y escrituras, incluyendo los accesos de sincronizacin, son barreras y por tanto deben o mantenerse ordenadas. Para modelos ms dbiles, debemos especicar las restricciones a e en la ordenacin impuestas por los accesos de sincronizacin, al igual que las restrico o ciones sobre las variables ordinarias. La restriccin en la ordenacin ms simple es que o o a que todo acceso de sincronizacin se comporta como una barrera. Si utilizamos S pao ra indicar un acceso a una variable de sincronizacin, tambin podremos indicar estas o e restricciones con la notacin S W , S R, W S y R S. Hay que recordar que o un acceso de sincronizacin es tambin una lectura o una escritura y que est afectado o e a por la ordenacin respecto a otros accesos de sincronizacin, lo que signica que existe o o una ordenacin impl o cita S S. Modelo de consistencia PRAM o de procesador El primer modelo que examinaremos relaja la ordenacin entre una escritura y una o lectura (a direcciones diferentes), eliminando la ordenacin W R; este modelo fue o usado por primera vez en la arquitectura IBM 370. Estos modelos permiten almacenar las escrituras en buers que pueden ser sobrepasadas por las lecturas, lo que ocurre siempre que el procesador permita que una lectura proceda antes de garantizar que una escritura anterior de ese procesador ha sido vista por todos los procesadores. Este modelo permite a la mquina ocultar algo de la latencia de una operacin de escritura. a o Adems, relajando unicamente una ordenacin, muchas aplicaciones, incluso aquellas a o que no estn sincronizadas, funcionan correctamente, aunque ser necesaria una opea a racin de sincronizacin para asegurar que se complete una escritura antes de que se o o realice una lectura. Si se ejecuta una operacin de sincronizacin antes de una lectura o o (por ejemplo, un patrn W...S...R), entonces las ordenaciones W S y S R nos o aseguran que la escritura ser realizada antes que la lectura. A este modelo se le ha a denominado Processor consistency o total store ordering (TSO), y muchas mquinas a han utilizado de forma impl cita este mtodo. Este modelo es equivalente a realizar las e escrituras con barreras. En la gura 5.25 resumiremos todos los modelos, mostrando los ordenes impuestos, y mostraremos un ejemplo en la gura 5.26. Ordenamiento por almacenamiento parcial Si permitimos que las escrituras no conictivas se completen de forma desordenada, relajando la ordenacin W W , llegamos a un modelo que ha sido denominado como o partial store ordering (PSO). Desde el punto de vista de la implementacin, esto permite o el encauzamiento o solapamiento de las operaciones de escritura. Consistencia dbil e Una tercera clase de modelos relajados eliminan las ordenaciones R R y R W , adems de las otras dos. Estos modelos, denominados weak ordering, no preservan el a orden entre las referencias, a excepcin de las siguientes: o Una lectura o escritura se completar antes que cualquier operacin de sincronizacin a o o ejecutada por el procesador despus de la lectura o escritura segn el orden del e u programa. Ingenier Informtica a a Universidad de Valencia

5.4 Modelos de consistencia de memoria

57

Una operacin de sincronizacin se completar antes que cualquier lectura o escritura o o a que ocurra segn el orden del programa despus de la operacin u e o Como se muestra en la gura 5.25, las unicas ordenaciones impuestas por la ordenacin o dbil son las creadas por las operaciones de sincronizacin. Aunque hemos eliminado e o los ordenes R R y R W , el procesador slo puede aprovecharse de este hecho si o dispone de lecturas no bloqueantes. En caso contrario, el procesador implementa impl citamente estos dos rdenes, dado que no se pueden ejecutar ms instrucciones hasta que o a se complete la lectura. Incluso con lecturas no bloqueantes, la ventaja del procesador puede verse limitada dado que la principal ventaja ocurre cuando una lectura produce un fallo de cach y es improbable que el procesador pueda mantenerse ocupado durante e los centenares de ciclos que se necesita para manejar un fallo de cach. En general, la e principal ventaja de todos los modelos de consistencia dbil viene del ocultamiento de e la latencia de escritura ms que de las latencias de lectura. a

Model Sequential consistency Total store order or processor consistency Partial store order Weak ordering Release consistency

Used in Most machines as an optional mode IBMS/370, DEC VAX, SPARC SPARC PowerPC Alpha, MIPS

Ordinary orderings

Synchronization orderings SW, SR, RS, WS, SS SW, SR, RS, WS, SS SW, SR, RS, WS, SS SW, SR, RS, WS, SS

R R, R W , W R, W W R R, R W , W W R R, R W

SAW, SAR, RSR , WSR, SASA, SASR, SRSA, SRSR

Figura 5.25: Ordenaciones impuestas por varios modelos de consistencia. Se muestran tanto los accesos ordinarios como los accesos a variables de sincronizacin. o Modelo de consistencia de liberacin (release) o Es posible obtener un modelo ms relajado todav extendiendo la ordenacin dbil. a a o e Este modelo, llamado release consistency (consistencia en la liberacin), distingue eno tre operaciones de sincronizacin que se usan para adquirir el acceso a una variable o compartida (denotadas por SA ) y aquellas que liberan un objeto para permitir que otro procesador puede adquirir el acceso (denotadas por SR ). La consistencia en la liberacin se basa en la observacin de que en los programas sincronizados es necesaria una o o operacin de adquisicin antes de usar un dato compartido, y que una operacin de o o o liberacin debe seguir a todas las actualizaciones a los datos compartidos y preceder en o el tiempo a la siguiente operacin de adquisicin. Esto nos permite relajar ligeramente o o la ordenacin observando que una lectura o escritura que precede a una adquisicin no o o necesitan completarse antes de la adquisicin, y que una lectura o escritura que sigue o a una liberacin no necesitan esperar a dicha liberacin. Por tanto, las ordenaciones o o que se preservan son las que implican unicamente a SA y SR , como se muestra en la gura 5.25; como muestra en el ejemplo de la gura 5.26, este modelo impone el menor nmero de ordenes de los cinco modelos. u Para comparar los modelos de release consistency y weak ordering, consideremos Ingenier Informtica a a Universidad de Valencia

58

Multiprocesadores

Sequential consistency

TSO (total store order) or processor consistency = A B = acquire (S); C = = D release (S); E = F =

PSO (partial store order)

Weak ordering

Release consistency

= A B = acquire (S); C = = D release (S); E = F =

= A B = acquire (S); C = = D release (S); E = F =

= A B = acquire (S); C = = D release (S); E = F =

= A B = acquire (S); C = = D # release (S); E = F =

Figura 5.26: Ejemplos de los cinco modelos de consistencia vistos en esta seccin que o muestran la reduccin en el nmero de rdenes impuestos conforme los modelos se hacen o u o ms relajados. a qu ordenaciones son necesarias para este ultimo modelo, para ello descompondremos e cada S en SA y SR . Esto nos llevar a ocho ordenaciones en relacin con los accesos a o sincronizados y los accesos ordinarios y cuatro ordenaciones en relacin unicamente con o los accesos sincronizados. Con esta descripcin, podemos ver que cuatro de las ordeo naciones impuesta en weak ordering no aparecen en el modelo de release consistency: W SA , R SA , SR R y SR W . El modelo de release consistency es uno de los menos restrictivos, permitiendo un fcil chequeo y asegurando el funcionamiento de los programas sincronizados. Mientras a que la mayor de las operaciones son una adquisicin o una liberacin (una adquisicin a o o o normalmente lee una variable de sincronizacin y la actualiza de forma atmica, una o o liberacin unicamente escribe en ella), algunas operaciones, como una barrera, acta o u de adquisicin y liberacin a la vez en cuyo caso el modelo pasa a ser equivalente al o o modelo de weak ordering. Tambin es posible considerar ordenaciones ms dbiles. Por ejemplo, en el modelo e a e de release consistency no asociamos localizaciones de memoria a variables de sincronizacin espec o cas. Si obligamos a la adquisicin de la misma variable de sincronizacin, o o V, antes de acceder a una direccin de memoria particular, M, podemos relajar el orden o de accesos a M y la adquisicin y relajacin de las variables de sincronizacin distintas o o o de V. Consistencia de liberacin perezosa o Consistencia de ingreso

5.4.3.

Implementacin de los modelos relajados o

Los modelos de consistencia relajados pueden implementarse mediante la utilizacin o de un poco de hardware adicional. La mayor parte de la complejidad recae sobre la implementacin de memorias o de los sistemas de interconexin que saquen provecho o o de un modelo relajado. Por ejemplo, si la memoria o la interconexin no permite la o Ingenier Informtica a a Universidad de Valencia

5.4 Modelos de consistencia de memoria

59

mltiples peticiones por parte de un procesador, los benecios de los modelos relajados u ms ambiciosos sern pequeos. Afortunadamente, la mayor de los benecios pueden a a n a conseguirse permitiendo un pequeo nmero de peticiones en curso de escritura y una n u de lectura por procesador. En esta seccin describiremos implementaciones directas de o los modelos processor consistency y release consistency. El modelo TSO (processor consistency) se implementa permitiendo que un fallo de lectura sobrepase a las escrituras pendientes. Un buer de escritura que soporte un chequeo para determinar si existen operaciones de escritura pendientes en el buer a la misma direccin que una operacin de lectura, junto con una memoria y un sistema o o de interconexin que soporte dos referencias pendientes por nodo, es suciente para o implementar este esquema. Cualitativamente, la ventaja de la consistencia a nivel de procesador sobre la consistencia secuencial es que permite ocultar la latencia de los fallos en las escrituras. El modelo de release consistency permite una ocultacin adicional de la latencia o de escritura, y si el procesador soporta lecturas no bloqueantes, permite ocultar la latencia de las lecturas. Para permitir el ocultamiento de la latencia de las escrituras tanto como sea posible, el procesador debe permitir varias escrituras pendientes y que los fallos en las lecturas sobrepasen a las escrituras pendientes. Para maximizar el rendimiento, las escrituras deben completarse y eliminarse el buer de escritura tan pronto como sea posible, lo que permite el avance de las lecturas pendientes. El soporte de la nalizacin temprana de las escrituras requiere que una escritura se complete tan o pronto como los datos estn disponibles y antes de que se completen las invalidaciones e pendientes (dado que nuestro modelo de consistencia lo permite). Para implementar este esquema, el procesador debe ser capaz de llevar la cuenta de las invalidaciones de cada escritura emitida. Despus de que cada invalidacin sea conrmada, el contador de e o invalidaciones pendientes para esa escritura se decrementa. Debemos asegurarnos que todas las invalidaciones pendientes de todas las escrituras emitidas se han completado antes de permitir que se complete una operacin de liberacin, de tal manera que o o slo es necesario chequear los contadores de invalidaciones pendientes sobre cualquier o escritura emitida cuando se ejecuta una liberacin. La liberacin se retiene hasta que o o todas las invalidaciones de todas las escrituras se han completado. En la prctica, se a limita el nmero de escrituras pendientes en un momento dado, con lo que se facilita el u seguimiento de las mismas y de las invalidaciones pendientes. Para ocultar la latencia de las escrituras debemos disponer de una mquina que a permita lecturas no bloqueantes; en caso contrario, cuando el procesador se bloquea, el progreso ser m a nimo. Si las lecturas son no bloqueantes podemos simplemente permitir que se ejecuten, sabiendo que las dependencias entre los datos preservarn una ejecucin a o correcta. Es poco probable, sin embargo, que la adicin de lecturas no bloqueantes a un o modelo de consistencia relajado mejore el rendimiento sustancialmente. Esta ganancia limitada se debe al hecho de que los tiempo de respuesta en un multiprocesador en el caso de fallo en una lectura sea grande y la habilidad de ocultar esta latencia por parte del procesador es limitada. Por ejemplo, si las lecturas son no bloqueantes pero se ejecutan en orden por parte del procesador, entonces ste se bloquear despus de e a e algunos ciclos de forma casi segura. Si el procesador soporta lecturas no bloqueantes y ejecucin desordenada, se bloquear tan pronto como el buer de reordenacin o las o a o estaciones de reserva se llenen. Es muy probable que este hecho ocurra en un centenar de ciclos, mientras que un fallo puede costar un millar de ciclos.

Ingenier Informtica a a

Universidad de Valencia

60

Multiprocesadores

5.4.4.

Rendimiento de los modelos relajados

El rendimiento potencial de un modelo de consistencia ms relajado depende de a las capacidades de la mquina y de la aplicacin que se ejecute. Para examinar el a o rendimiento de un modelo de consistencia de la memoria, debemos denir en primer lugar las caracter sticas del hardware: El cauce emite una instruccin por ciclo de reloj y el manejo puede ser esttico o o a dinmico. La latencia de todas las unidades funcionales es de un ciclo. a Un fallo de cach supone 50 ciclos de reloj. e La CPU incluye un buer de escritura con capacidad para 16 escrituras. Las cachs son de 64KB y el tamao de las l e n neas es de 16 bytes. Para dar una visin de los aspectos que afectan al rendimiento potencial con diferentes o capacidades hardware, consideraremos cuatro modelos hardware: 1. 2. 3. SSBR (statically scheduled with blocking reads) El procesador realiza una ejecucin o esttica y las lecturas que incurren en fallo en la cach bloquean al procesador. a e SS (statically scheduled ) El procesador realiza una ejecucin esttica pero las leco a turas no causan el bloqueo del procesador hasta que se usa el resultado. DS16 (dynamically scheduled with a 16-entry reorder buer ) El procesador permite una ejecucin dinmica y tiene un buer de reordenacin que permite tener hasta o a o 16 instrucciones pendientes de cualquier tipo, incluyendo 16 instrucciones de acceso a memoria. DS64 (dynamically scheduled with a 64-entry reorder buer ) El procesador permite una ejecucin dinmica y tiene un buer de reordenacin que permite hasta 64 o a o instrucciones pendientes de cualquier tipo. Este buer es, potencialmente, lo sucientemente grande para ocultar la totalidad de la latencia ante un fallo de lectura en la cach. e

4.

LU 1.6 1.4 1.2 1.0 Performance relative to# 0.8 sequential consistency 0.6 0.4 0.2 0.0 SSBR SS DS16 DS64 Hardware models 1.4 1.2 1.2 1.1 1.1 1.1 1.1 1.1 4.0 3.5 3.0 2.5 Performance relative to# 2.0 sequential consistency 1.5 1.0 0.5 0.0 SSBR 1.9 1.3 1.4

Ocean 3.8

2.0

2.2 1.4 1.5

SS

DS16 DS64

Hardware models

Total store order

Release consistency

Figura 5.27: Rendimiento de los modelos de consistencia relajados sobre una variedad de mecanismos hardware. La gura 5.27 muestra el rendimiento relativo para dos programas paralelos, LU y Ocean, para estos cuatro modelos hardware y para dos modelos de consistencia diferentes: TSO y release consistency. El rendimiento mostrado es relativo al rendimiento bajo Ingenier Informtica a a Universidad de Valencia

5.5 Sincronizacin o

61

una implementacin directa de la consistencia secuencial. El aumento de rendimiento o observado es mucho mayor en el caso de Ocean, ya que este programa presenta un ratio de fallos de cach mucho mayor y tiene una fraccin signicativa de fallos de escritura. e o Al interpretar los datos de la gura 5.27 hay que recordar que las cachs son bastantes e pequeas. Muchos diseadores habr incrementado el tamao de la cach antes de n n an n e incluir lecturas no bloqueantes o empezar a pensar en ejecucin dinmica de las inso a trucciones. Esto hubiera hecho descender el ratio de fallos y las ventajas de los modelos relajados, al menos sobre estas aplicaciones. Para nalizar, decir que, en la actualidad, la mayor de las mquinas que soportan a a alguna clase de modelo de consistencia relajado, variando desde la consistencia a nivel de procesador a la consistencia en la liberacin, y casi todos soportan la consistencia o secuencial como una opcin. Dado que la sincronizacin depende mucho de la mquina o o a y es causa de errores, las expectativas nos dicen que la mayor de los programadores a usarn librer estndar de sincronizacin para escribir sus programas sincronizados, a as a o haciendo la eleccin de un modelo de consistencia relajado invisible al programador y o permitiendo mayor rendimiento.

5.5.

Sincronizacin o

Los mecanismos de sincronizacin suelen implementarse mediante rutinas software o que descansan en las instrucciones de sincronizacin proporcionadas por el hardware. o Sin esta capacidad, el coste de construir las primitivas bsicas de sincronizacin ser a o a demasiado alto y se incrementar al incrementarse el nmero de procesadores. Estas a u primitivas forman los bloques de construccin bsicos para implementar una amplia o a variedad de operaciones de sincronizacin a nivel de usuario, incluyendo elementos tao les como los cerrojos y las barreras. Durante aos ha habido un considerable debate n sobre qu primitivas hardware deben proporcionar las mquinas multiprocesador para e a implementar estas operaciones de sincronizacin. Las conclusiones han cambiado a lo o largo del tiempo, con los cambios de la tecnolog y el estilo de diseo de las mquinas. a n a El soporte hardware tiene la ventaja de la velocidad, pero mover funcionalidad al software tiene la ventaja de la exibilidad y la adaptabilidad a diferentes situaciones. Los trabajos de Dijkstra y Knuth mostraron que es posible proporcionar exclusin mutua o unicamente con operaciones de lectura y escritura exclusiva (suponiendo una memo ria con consistencia secuencial). Sin embargo, todas las operaciones de sincronizacin o prcticas descansan en primitivas atmicas del tipo leer-modicar-escribir, en donde el a o valor de una posicin de la memoria se lee, modica y se vuelve a escribir de manera o atmica. o La historia del diseo del conjunto de instrucciones nos permite observar la evolun cin de soporte hardware para la sincronizacin. Una de las instrucciones clave fue la o o inclusin en el IBM 370 de una instruccin atmica sosticada, la instruccin compareo o o o and-swap, para soportar la sincronizacin en multiprogramacin sobre sistemas unio o procesador o multiprocesador. Esta instruccin compara el valor de una posicin de la o o memoria con el valor de un registro espec co, y si son iguales se intercambia el valor de la posicin con el valor de un segundo registro. El Intel x86 permite aadir a cualquier o n instruccin un prejo que la hace atmica, con lo que haciendo que los operandos fuente o o y destino sean posiciones de la memoria es posible utilizar la mayor parte del conjunto de instrucciones para implementar operaciones atmicas. Tambin se ha propuesto que o e las operaciones de sincronizacin a nivel de usuario, como barreras y candados, deo Ingenier Informtica a a Universidad de Valencia

62

Multiprocesadores

ben ser soportadas a nivel de mquina, y no slo las primitivas leer-modicar-escribir ; a o es decir, el propio algoritmo de sincronizacin debe implementarse en hardware. Esta o cuestin pas a ser muy activa a ra del debato sobre la reduccin del conjunto de o o z o instrucciones, ya que las operaciones que acceden a memoria fueron reducidas a simple instrucciones de lectura y escritura con un unico operando. La solucin de SPARC o fue proporcionar operaciones atmicas de intercambio entre un registro y una direccin o o de memoria (intercambio atmico entre el contenido de la posicin de memoria y el o o registro) y de comparacin e intercambio, mientras que MIPS renunci a las primitio o vas atmicas utilizadas en sus anteriores conjuntos de instrucciones, al igual que hizo o la arquitectura IBM Power usada en el RS6000. La primitiva que se introdujo fue la combinacin de un par de instrucciones que incluye una instruccin de lectura especial o o denominada load linked o load locked y una instruccin de escritura especial denomio nada store conditional. Estas instrucciones se usan como una secuencia: Si el contenido de la direccin de memoria especicada por la carga se modica antes de que ocurra o el almacenamiento condicionado, entonces este ultimo no se realiza. Si el procesador realiza un cambio de contexto entre las dos instrucciones, tampoco se realiza el almacenamiento condicionado. El almacenamiento condicionado se dene de tal manera que devuelva un valor para indicar si dicho la operacin se puedo realizar con xito. Esta o e aproximacin ha sido posteriormente incorporada por las arquitectura PowerPC y DEC o Alpha, siendo en la actualidad muy popular. En la gura 5.28 se muestra un ejemplo de cmo se pueden implementar algunas operaciones atmicas con la utilizacin de estas o o o dos operaciones.
try: mov ll sc beqz mov R3, R4 R2, 0(R1) R3, 0(R1) R3, try R4, R2 ; mov exchange value ; load linked ; store conditional ; branch store fails ; put load value in R4 try: ll R2, 0(R1) addi R2, R2, #1 sc R2, 0(R1) beqz R2, try ; load linked ; increment ; store conditional ; branch store fails

Figura 5.28: Implementacin de (a) un intercambio atmico y (b) una operacin de o o o lectura e incremento (fetch-and-increment) utilizando las operaciones load linked y store conditional

Componentes de un evento de sincronizacin o Consideremos los componentes de un evento de sincronizacin, lo que nos permio tir ver claramente por qu el soporte directo en hardware de la exclusin mutua y a e o otras operaciones similares es dif y da lugar a implementaciones demasiado r cil gidas. Existen tres componentes principales para un tipo dado de evento de sincronizacin: o un mtodo de adquisicin: un mtodo mediante el cual un proceso intenta e o e adquirir el derecho de la sincronizacin (para entrar a la seccin cr o o tica o para proceder a pasar dicho evento) un algoritmo de espera: un mtodo mediante el cual un proceso espera a e que una sincronizacin est disponible cuando sta no lo est. Por ejemplo, o e e a si un proceso intenta adquirir un cerrojo pero ste no est libre (o quiere e a proceder a pasar un evento que todav no ha ocurrido), ste debe esperar a e de alguna manera hasta que el cerrojo est libre. e Ingenier Informtica a a Universidad de Valencia

5.5 Sincronizacin o un mtodo de liberacin: un mtodo que permita a un proceso habilitar e o e el paso de un evento de sincronizacin a otros procesos; por ejemplo, una o implementacin de la operacin UNLOCK, un mtodo para que el ultimo o o e proceso que llega a una barrera libere a los procesos que estn esperando, a o un mtodo para noticar a un proceso que est esperando en un evento e a punto a punto que el evento ha ocurrido.

63

La eleccin del algoritmo de espera es bastante independiente del tipo de sincronizacin. o o Qu debe hacer un proceso que llega al punto de adquisicin mientras que espera a e o que ocurra una liberacin? Existen dos alternativas: espera activa y bloqueo. La espera o activa signica que el proceso se queda ejecutando un bucle que testea de forma repetitiva si una variable a cambiado de valor. Un liberacin del evento de sincronizacin o o por parte de otro proceso cambia el valor de la variable, permitiendo proceder al proceso que estaba esperando. En el caso del bloqueo, el proceso simplemente se bloquea (suspende) indicando al procesador el evento que est esperando que ocurra. El proceso a ser despertado y puesto en un estado de listo para su ejecucin cuando la liberacin a o o que estaba esperando ocurra. Las diferencias entre la espera activa y el bloqueo son claras. La espera activa se comporta mejor cuando el periodo de espera es pequeo, n mientras que el bloqueo es preferible en el caso de que el periodo de espera sea grande y si hay otros procesos en ejecucin. La dicultad de implementar operaciones de o sincronizacin de alto nivel en hardware no reside en los componentes de adquisicin y o o liberacin, sino en el algoritmo de espera. Por esta razn, es conveniente proporcionar o o soporte hardware para los aspectos cr ticos de la adquisicin y liberacin y permitir que o o los tres componentes se unan en software. El papel del usuario, del sistema software y del hardware Quin debe ser el responsable de implementar las operaciones de sincronizacin de e o alto nivel tales como los candados y las barreras?. Normalmente, un programador quiere usar candados, eventos, o incluso operaciones de ms alto nivel sin tenerse que preoa cupar de su implementacin interna. La implementacin se deja en manos del sistema, o o que debe decidir cunto soporte hardware debe proporcionar y cunta funcionalidad ima a plementar en software. Se han desarrollado algoritmos de sincronizacin software que o utilizan simples primitivas atmicas de intercambio y que se aproximan a la velocidad o proporcionada por las implementaciones basadas totalmente en hardware, lo que los hace muy atractivos. Como en otros aspectos de diseo de un sistema, la utilizacin de n o operaciones ms rpidas depende de la frecuencia de utilizacin de estas operaciones a a o en las aplicaciones. As una vez ms, la respuesta estar determinada por un mejor , a a entendimiento del comportamiento de la aplicacin. o Las implementaciones software de las operaciones de sincronizacin suelen incluirse o en librer del sistema. Muchos sistemas comerciales proporcionan subrutinas o llamaas das al sistema que implementan cerrojos, barreras e incluso algn otro tipo de evento u de sincronizacin. El diseo de una buena librer de sincronizacin puede suponer un o n a o desaf Una complicacin potencial es que el mismo tipo de sincronizacin, e incluo. o o so la misma variable de sincronizacin, puede ejecutarse en diferentes ocasiones bajo o condiciones de ejecucin muy diferentes. Estos escenarios diferentes imponen requisitos o en el rendimiento muy diferentes. Bajo una situacin de alta contencin, la mayor o o a de los procesos gastarn su tiempo esperando por lo que el requisito clave ser que el a a algoritmo proporcione un gran ancho de banda para las operaciones de lock-unlock, Ingenier Informtica a a Universidad de Valencia

64

Multiprocesadores

mientras que en condiciones de baja carga la meta es proporcionar baja latencia para la adquisicin del cerrojo. Una segunda complicacin es que los multiprocesadores se usan o o normalmente con cargas de multiprogramacin donde la planicacin de los procesos y o o otras interacciones entre los recursos pueden cambiar el comportamiento de los procesos de un programa paralelo en cuanto a la sincronizacin. Todos estos aspectos hacen de o la sincronizacin un punto cr o tico en la interaccin hardware/software. o

5.5.1.

Cerrojos (exclusin mutua) o

La operaciones de exclusin mutua (lock/unlock) se implementan utilizando un amo plio rango de algoritmos. Los algoritmos simples tienden a ser ms rpidos cuando a a existen poca contencin, pero son inecientes ante altas contenciones, mientras que los o algoritmos sosticados que se comportan bien en caso de contencin tienen un mayor o coste en el caso de baja contencin. o Implementacin de cerrojos usando coherencia o Antes de mostrar los distintos mecanismos de implementacin de la exclusin mutua o o es conveniente articular algunas metas de rendimiento que perseguimos en el caso de los cerrojos. Estas metas incluyen: Baja latencia. Si un cerrojo est libre y ningn otro procesador est tratando a u a de adquirirlo al mismo tiempo, un procesador debe ser capaz de adquirirlo con baja latencia. Bajo trco. Supongamos que varios o todos los procesadores intentan ada quirir un cerrojo al mismo tiempo. Deber ser posible la adquisicin del a o cerrojo de forma consecutiva con tan poca generacin de trco o transaco a ciones de bus como sea posible. Un alto trco puede ralentizar las adquisia ciones debido a la contencin, y tambin puede ralentizar transacciones no o e relacionadas que compiten por el bus. Escalabilidad. En relacin con el punto anterior, ni la latencia ni el trco o a deben variar ms rpidamente que el nmero de procesadores usados. Hay a a u que tener en cuenta que dado que el nmero de procesadores en un SMP bau sado en bus no es probable que sea grande, no es importante la escalabilidad asinttica. o Bajo coste de almacenamiento. La informacin que es necesaria debe ser o pequea y no debe escalar ms rpidamente que el nmero de procesadores. n a a u Imparcialidad. Idealmente, los procesadores deben adquirir un cerrojo en el mismo orden que sus peticiones fueron emitidas. Al menos se debe evitar la muerte por inanicin o una imparcialidad excesiva. o La primera implementacin que veremos es la implementacin de los spin locks: cerroo o jos que el procesador intenta adquirir continuamente ejecuanto un bucle. Como ya se coment, este tipo de cerrojos se usan cuando se espera que el tiempo que se va a estar o esperando es pequeo. n Una primera implementacin de un cerrojo de este tipo ser el que se presenta en o a el siguiente cdigo: o Ingenier Informtica a a Universidad de Valencia

5.5 Sincronizacin o
li exch bnez R2,#1 R2,0(R1) R2,lockit

65

lockit:

Una de las ventajas de esta implementacin se produce en el caso de que exista o una localidad en el acceso al cerrojo: es decir, el procesador que ha usado el cerrojo en ultimo lugar es probable que lo use de nuevo en un futuro cercano. En estos casos, el valor del cerrojo ya reside en la cach del procesador, reduciendo el tiempo necesario e para adquirir el cerrojo. Otra ventaja que nos permite la coherencia es que el test y la adquisicin del cerrojo o se pueda realizar sobre la copia local sin necesidad de transacciones de bus, reduciendo el trco del bus y los problemas de congestin. Para conseguir esta ventaja es necesario a o realizar un cambio en la implementacin. Con la implementacin actual, cada intento de o o intercambio requiere una operacin de escritura. Si varios procesadores intentan obtener o el cerrojo, cada uno generar una escritura. La mayor de estas escrituras darn lugar a a a a fallos de escritura, dado que cada procesador est intentando obtener la variable cerrojo a en un estado exclusivo. As podemos modicar la implementacin de tal manera que el bucle d lugar , o e a lecturas sobre una copia local del cerrojo hasta que observe que est disponible. El a procesador primero lee el valor de la variable para testear su estado. Un procesador sigue leyendo y testeando hasta que el valor de la lectura indica que el cerrojo est libre. El a procesador despus compite con el resto de procesadores que tambin pudiesen estar e e esperando. Todos los procesos utilizan una instruccin de intercambio que lee el valor o antiguo y almacena un 1 en la variable cerrojo. El ganador ver un 0, y los perdedores a un 1 en la variable cerrojo. El procesador ganador ejecuta el cdigo existente despus o e de la adquisicin del cerrojo y, cuando termina, almacena un 0 en la variable cerrojo o para liberarlo, con lo que comienza de nuevo la carrera para adquirirlo. A continuacin o se muestra el cdigo del cerrojo mejorado: o
lockit: lw bnez li exch bnez R2,0(R1) R2,lockit R2,#1 R2,0(R1) R2,lockit

Examinemos cmo este esquema usa el mecanismo de coherencia de la cach. La guo e ra 5.29 muestra el procesador y las operaciones de bus cuando varios procesos intentan adquirir la variable cerrojo usando un intercambio atmico. Una vez que el procesador o que tiene el cerrojo lo libera (almacena un 0), las dems cachs son invalidadas y deben a e obtener el nuevo valor para actualizar sus copias de la variable. Una de esas cachs e obtiene la copia con el nuevo valor del cerrojo (0) y realiza el intercambio. Cuando se satisface el fallo de cach para los otros procesadores, encuentran que la variable ya e est adquirida, as que vuelven al bucle de testeo. a Este ejemplo muestra otra ventaja de las primitivas load-linked/store-conditional : las operaciones de lectura y escritura estn expl a citamente separadas. La lectura no necesita producir ningn trco en el bus. Esto permite la siguiente secuencia de cdigo que u a o tiene las mismas caracter sticas que la versin de intercambio optimizada (R1 contiene o la direccin del cerrojo): o
lockit: ll R2,0(R1)

Ingenier Informtica a a

Universidad de Valencia

66

Multiprocesadores

Step 1 2 3

Processor P0 Has lock Set lock to 0

Processor P1 Spins, testing if lock = 0 (Invalidate received) Cache miss

Processor P2 Spins, testing if lock = 0 (Invalidate received) Cache miss

Coherence state of lock Shared Exclusive Shared

Bus/directory activity None Write invalidate of lock variable from P0 Bus/directory services P2 cache miss; write back from P0 Cache miss for P2 satisfied Cache miss for P1 satisfied Bus/directory services P2 cache miss; generates invalidate Bus/directory services P2 cache miss; generates write back None

4 5 6

(Waits while bus/ directory busy) Lock = 0 Executes swap, gets cache miss Swap completes and returns 1 Spins, testing if lock = 0

Lock = 0 Executes swap, gets cache miss Completes swap: returns 0 and sets Lock =1 Enter critical section

Shared Shared Exclusive

Shared

Figura 5.29: Pasos en la coherencia de la cach y trco en el bus para tres procesadores, e a P0, P1 y P2 que intentan adquirir un cerrojo en protocolo de coherencia por invalidacin. o
bnez li sc beqz R2,lockit R2,#1 R2,0(R1) R2,lockit

El primer bucle comprueba el cerrojo, mientras que el segundo resuelve las carreras cuando dos procesadores ven el cerrojo disponible de forma simultnea. a Aunque nuestro esquema de cerrojo es simple y convincente, tiene el problema a la hora de escalar debido al trco generado cuando se libera el cerrojo. Para entender por a qu no escala bien, imaginemos una mquina con todos los procesadores compitiendo e a por el mismo cerrojo. El bus acta como un punto de serializacin para todos los u o procesadores, dando lugar a mucha contencin. El siguiente ejemplo muestra cmo o o pueden ir de mal las cosas. Ejemplo Supongamos 20 procesadores en un bus, cada uno de ellos intentando obtener el acceso en exclusiva sobre una variable. Supongamos que cada transaccin del o bus (fallo de lectura o de escritura) tarda 50 ciclos. Vamos a ignorar el tiempo de acceso a la cach, as como el tiempo que el cerrojo permanece cerrado. Para detere minar el nmero de transacciones de bus necesarias para que los 20 procesadores u adquieran el cerrojo, suponiendo que todos estn en el bucle principal cuando se a libera el cerrojo en el tiempo 0. Cunto se tardar en procesar las 20 peticiones? a a Supongamos que el bus es totalmente justo de tal manera que cualquier peticin o pendiente se sirve antes de cualquier nueva peticin y que los procesadores son o iguales de rpidos. a Respuesta La gura 5.30 muestra la secuencia de eventos desde que se libera el cerrojo Ingenier Informtica a a Universidad de Valencia

5.5 Sincronizacin o

67

hasta la siguiente vez que se libera. Por supuesto, el nmero de procesadores comu pitiendo por el cerrojo desciende cada vez que se adquiere el mismo, lo que reduce el coste medio a 1525 ciclos. Por lo tanto, para 20 pares de eventos lock-unlock ser necesario ms de 30.000 ciclos para que todos los procesadores adquieran el a a cerrojo. Adems, un procesador estar esperando, en promedio, la mitad de este a a tiempo sin hacer nada, simplemente intentando obtener la variable. El nmero de u transacciones de bus generadas supera las 400.

Event Read miss by all waiting processors to fetch lock (20 50) Write miss by releasing processor and invalidates Read miss by all waiting processors (20 50)

Duration 1000 50 1000

Write miss by all waiting processors, one successful lock (50), and1000 invalidation of all lock copies (19 50) Total time for one processor to acquire and release lock 3050 clocks

Figura 5.30: Tiempo para adquirir y liberar un cerrojo cuando 20 procesadores estn a compitiendo por el mismo. La ra del problema est en la contencin y en el hecho de que los accesos se z a o serialicen. Para solucionar estos problemas vamos a estudiar una serie de algoritmos avanzados que intentarn tener baja latencia en el caso de poca o nula contencin y a o que minimice la serializacin en el caso de que la contencin sea signicativa. o o Algoritmos avanzados para cerrojos Como ya se ha comentado es deseable tener un unico proceso intentando obtener un cerrojo cuando ste se libera (ms que permitir que todos los procesadores intenten e a adquirirlo a la vez). Ser incluso ms deseable que unicamente un procesador incurriera a a en un fallo de lectura cuando se produce una liberacin. En primer lugar veremos una o modicacin del cerrojo optimizado que reduce la contencin retrasando articialmente o o los procesos cuando fallan en la adquisicin de un cerrojo. Posteriormente veremos dos o algoritmos: ticket lock (que garantiza la primera armacin) y array-based lock (que o garantiza ambas) y que aseguran que el acceso al cerrojo se realizar en una ordenacin a o FIFO. Spin lock con exponential back-os. Este mtodo opera retrasando articiale mente los procesos cuando no obtienen el cerrojo. El mejor rendimiento se obtiene cuando este retraso crece de forma exponencial en funcin del nmero de intentos para o u adquirir el cerrojo. La gura 5.31 muestra una implementacin de este algoritmo. Esta o implementacin intenta preservar una baja latencia cuando la contencin es pequea o o n no retrasando la primera iteracin. o Ticket Lock. Este algoritmo acta como un sistema de ticket. Cada proceso que u espera la adquisicin de un cerrojo toma un nmero, y realiza una espera activa sobre o u un nmero global que indica a quin se est sirviendo en la actualidad como el nmero u e a u que muestra la pantalla luminosa en un nmero de espera hasta que el nmero global u u Ingenier Informtica a a Universidad de Valencia

68

Multiprocesadores

li R3,1 ;R3 = initial delay lockit: ll R2,0(R1) ;load linked bnez R2,lockit ;not available-spin addi R2,R2,1 ;get locked value sc R2,0(R1) ;store conditional bnez R2,gotit ;branch if store succeeds sll R3,R3,1 ;increase delay by 2 pause R3 ;delays by value in R3 j lockit goit: use data protected by lock

Figura 5.31: Un cerrojo con exponential back-o. es igual al nmero que ha obtenido. Para liberar el cerrojo, un proceso simplemente inu crementa el nmero global. La primitiva atmica necesaria es del tipo fetch&increment, u o que utiliza un proceso para obtener su ticket del contador compartido. Esta primitiva puede implementarse mediante una instruccin atmica o usando LL-SC. Este cerrojo o o presenta una sobrecarga en el caso de ausencia de contencin similar a la del cerrojo o LL-SC. Sin embargo, al igual que el cerrojo LL-SC presenta todav un problema de a trco. La razn es que todos los procesadores iteran sobre la misma variable. Cuando a o la variable se modica en la liberacin, todas las copias en las cachs se invalidan e o e incurren en un fallo de lectura. (El cerrojo LL-SC presentaba un comportamiento un poco peor, ya que en ese caso ocurr otra invalidacin y un conjunto de lecturas cuando a o un procesador ten xito en su SC). Una manera de reducir este trco es introducir a e a algn tipo de espera. No queremos usar una espera exponencial ya que no queremos que u todos los procesos esperen cuando se libere el cerrojo y as ninguno intente adquirirlo durante algn tiempo. Un tcnica de compromiso es que cada procesador retrase la u e lectura del contador una cantidad proporcional al tiempo que estiman que tardar en a llegarle su turno; es decir, una cantidad proporcional a la diferencia entre su ticket y el nmero del contador en su ultima lectura. u Array-based Lock. La idea aqu es utilizar una instruccin fetch&increment para o obtener no un valor sino una localizacin unica sobre la que realizar la espera activa. Si o existen p procesadores que pueden completar un cerrojo, entonces el cerrojo contiene un array con p localizaciones sobre las cuales los procesos pueden iterar, idealmente cada una en un bloque de memoria separado para evitar la falsa comparticin. El mtodo de o e adquisicin es usar una operacin fetch&increment para obtener la siguiente direccin o o o disponible en el array sobre la cual iterar, el mtodo de espera es iterar sobre esta e localizacin, y el mtodo de liberacin consiste en escribir un valor que indica liberado o e o sobre la siguiente localizacin en el array. Slo el procesador que estaba iterando sobre o o esa localizacin tiene en su cach un bloque invalidado, y un posterior fallo de lectura o e le indica que ha obtenido el cerrojo. Como en el ticket lock, no es necesario realizar una operacin de testeo despus del fallo ya que unicamente se notica a un proceso la o e liberacin del cerrojo. Este cerrojo es claramente FIFO y por lo tanto justo. Su latencia o en el caso de ausencia de contencin es similar a de los cerrojos vistos hasta ahora y es o ms escalable que el algoritmo anterior ya que solamente un proceso incurre en un fallo a de lectura. El unico inconveniente es que el espacio usado es O(p) en lugar de O(1), pero dado que p y la constante de proporcionalidad son pequeos el problema no es n Ingenier Informtica a a Universidad de Valencia

5.5 Sincronizacin o

69

signicativo. Tambin presenta un inconveniente potencial en el caso de mquinas de e a memoria distribuida.

Algoritmos para cerrojos en sistemas escalables Al principio de esta seccin se han discutido los distintos tipos de cerrojos existentes, o cada uno de los cuales daba un paso ms en la reduccin del trco del bus y de la a o a equidad, pero a menudo a costa de una mayor sobrecarga. Por ejemplo, el ticket lock permite que unicamente un procesador pida el cerrojo cuando ste se libera, pero la e noticacin de la liberacin llega a todos los procesadores a travs de una invalidacin y o o e o el posterior fallo de lectura. El cerrojo basado en array soluciona este problema haciendo que cada proceso espere sobre diferentes localizaciones, y el procesador que libera el cerrojo unicamente notica la liberacin a un procesador escribiendo en la localizacin o o correspondiente. Sin embargo, las cerrojos basados en array tienen dos problemas potenciales en mquinas escalables con memoria f a sica distribuida. En primer lugar, cada cerrojo requiere un espacio proporcional al nmero de procesadores. En segundo lugar, y ms u a importante para las mquinas que no permiten tener en cach datos remotos, no hay a e forma de saber por anticipado sobre qu localizacin iterar un proceso concreto, dado e o a que dicha localizacin se determina en tiempo de ejecucin a travs de una operacin o o e o fetch&increment. Esto hace imposible almacenar las variables de sincronizacin de mao nera que la variable sobre la cual itera un proceso est siempre en su memoria local (de e hecho, todos los cerrojos del cap tulo anterior tienen este problema). En mquinas de a memoria distribuida sin coherencia de cachs, como la Cray T3D y T3E, ste es un gran e e problema, ya que los procesos iterar sobre localizaciones remotas, dando lugar a una an gran cantidad de trco y contencin. Afortunadamente, existe un algoritmo software a o que reduce la necesidad de espacio al tiempo que asegura que todas las iteraciones se realizarn sobre variables almacenadas localmente. a Software Queuing Lock. Este cerrojo es una implementacin software de un ceo rrojo totalmente hardware propuesto inicialmente en el proyecto Wisconsin Multicube. La idea es tener una lista distribuida o cola de procesos en espera de la liberacin del o cerrojo. El nodo cabecera de la lista representa el proceso que tiene el cerrojo. Los restantes nodos son procesos que estn a la espera, y estn la memoria local del proceso. a a Un nodo apunta al proceso (nodo) que ha intentado adquirir el cerrojo justo despus e de l. Tambin existe un puntero cola que apunta al ultimo nodo de la cola, es decir, el e e ultimo nodo que ha intentado adquirir el cerrojo. Veamos de una manera grca como a cambia la cola cuando los procesos adquieren y liberan el cerrojo. Supongamos que el cerrojo de la gura 5.32 est inicialmente libre. Cuando un a proceso A intenta adquirir el cerrojo, lo obtiene y la cola quedar como se muestra a en la gura 5.32(a). En el paso (b), el proceso B intenta adquirir el cerrojo, por lo que se pone a la cola y el puntero cola ahora apunta a l. El proceso C es tratado e de forma similar cuando intenta adquirir el cerrojo en el paso (c). B y C estn ahora a iterando sobre las variables locales asociadas con sus nodos en la cola mientras que A mantiene el cerrojo. En el paso (d), el proceso A libera el cerrojo. Despus despierta al e siguiente proceso, B, de la cola escribiendo en la variable asociada al nodo B, y dejando la cola. B tiene ahora el cerrojo, y es la cabeza de la cola. El puntero cola no cambia. En el paso (e), B libera el cerrojo de manera similar, pasndoselo a C. Si C libera el a cerrojo antes de que otro proceso intente adquirirlo, el puntero al cerrojo ser NULL a Ingenier Informtica a a Universidad de Valencia

70
(a) (b) (c)

Multiprocesadores

(d)

C
(e)

B C C L

Figura 5.32: Estados de la lista para un cerrojo cuando los procesos intentan adquirirlo y cuando lo liberan. y el cerrojo estar otra vez libre. De esta manera, los procesos tienen garantizado un a acceso al cerrojo en una ordenacin FIFO con respecto al orden en el que intentaron o adquirirlo. Debe quedar claro que en el cerrojo por cola software el espacio necesario es proporcional al nmero de procesos que estn esperando o participando en el cerrojo, no u a al nmero de procesos en el programa. Este ser el cerrojo que se elegir para mquiu a a a nas que soportan un espacio de memoria compartido con memoria distribuida pero sin coherencia de cachs. e En el caso de mquinas con coherencia de cach, al igual que con el resto de ala e goritmos que veamos, se pueden aplicar los mismos algoritmos teniendo en cuenta dos diferencias. Por una parte, las implicaciones de rendimiento de iterar sobre variables remotas son menos signicativas, dada la posibilidad de tener una copia de la variable en la cach local. El que cada procesador itere sobre una variable distinta es, por e supuesto, util ya que de esta forma no todos los procesadores deben ir al mismo nodo origen para solicitar el nuevo valor de la variable cuando esta se invalida, reduciendo la contencin. Sin embargo, existe una razn (muy poco probable) que puede ser muy o o importante para el rendimiento en el caso de que la variable sobre la cual itera un procesador est almacenada localmente: si la cach est unicada, es de asignacin directa e e a o y las instrucciones de bucle de iteracin entran en conicto con la propia variable, en o cuyo caso los fallos debido a conicto se satisfacen localmente. Un benecio menor de una buena ubicacin es convertir los fallos que ocurren despus de una invalidacin en o e o fallos de dos saltos en lugar de tres. Rendimiento de los cerrojos A continuacin examinaremos el rendimiento de diferentes cerrojos en el SGI Chao llenge, como se muestra en las gura 5.33. Todos los cerrojos se han implementado usando LL-SC, ya que Challenge unicamente proporciona estas instrucciones. El cerro jos test&set se han implementado simulando la instruccin test&set mediante instruco Ingenier Informtica a a Universidad de Valencia

5.5 Sincronizacin o

71

ciones LL-SC. En particular, cada vez que una SC falla en una escritura realizada sobre otra variable en el mismo bloque de cach, causa una invalidacin al igual que har e o a la instruccin test&set. Los resultados se muestran en funcin de dos parmetros: (c) o o a duracin de la seccin cr o o tica y (d) tiempo entre la liberacin del cerrojo y la siguiente o vez que se intenta adquirirlo. Es decir, el cdigo es un bucle sobre el siguiente cuerpo: o lock(L); critical section(c); unlock(L); delay(d) Vamos a considerar tres casos (i) c = 0, d = 0, (ii) c = 3,64s, d = 0, y (iii) c = 3,64s, d = 1,29s denominados nulo, seccin cr o tica y retraso, respectivamente. Recordar que en todos los casos c y d (multiplicado por el nmero de adquisiciones de u cerrojo por cada procesador) se substrae del tiempo total de ejecucin. o
7 6 5 array-based 5 4 3 2 1 0 1 3 5 7 Processors 9 11 13 15 1 0 1 3 5 7 9 11 13 15 Processors LL-SC 4 sec LL-SC, exp ticket 3 ticket, prop 2 sec

7 6

sec

7 6 5 4 3 2 1 0 1 3 5 7 Processors 9 11 13 15

array-based LL-SC LL-SC, exp ticket ticket, prop

sec

(a) null (c=0, d=0)

(b) critical-section (c=3.64 s, d=0)

(c) delay (c=3.64 s, d=1.29 s)

Figura 5.33: Rendimiento de los cerrojos en el SGI Challenge para tres posibles escenarios. Consideremos el caso de seccin cr o tica nula. En este caso se observa la implementacin LL-SC bsica del cerrojo se comporta mejor que las ms sosticadas ticket lock o a a y array-based lock. La razn del mejor comportamiento de los cerrojos LL-SC, particuo larmente para pocos procesadores, es que no son equitativos, y esta falta de equidad se explota en las interacciones a nivel de arquitectura. En particular, cuando un procesador que realiza una escritura para liberar un cerrojo realiza inmediatamente una lectura (LL) para su siguiente adquisicin, es muy probable que la lectura y la SC tengan xito o e en su cach antes de que otro procesador pueda leer el bloque en el bus.(En el caso e del Challenge la diferencia es mucho ms grande ya que el procesador que ha liberado a el cerrojo puede satisfacer su siguiente lectura a travs de su buer de escritura antes e incluso de que la correspondiente lectura exclusiva llegue al bus). La transferencia del cerrojo es muy rpida, y el rendimiento es bueno. Al incrementarse el nmero de procea u sadores, la probabilidad de autotransferencia desciende y el trco en el bus debido a las a invalidaciones y a fallos de lectura se incrementa, por lo que tambin se incrementa el e tiempo entre trasferencias del cerrojo. El retraso exponencial ayuda a reducir el trco a en rfagas y por tanto disminuye el ratio de escalada. a Al otro extremo (c = 3,64s, d = 1,29s), observamos que el cerrojo LL-SC no tiene un buen comportamiento, incluso para pocos procesadores. Esto es debido a que el procesador realiza una espera despus de liberar el cerrojo y antes de intentar adquirirlo e de nuevo, haciendo mucho ms probable que otros procesadores en espera adquieran el a Ingenier Informtica a a Universidad de Valencia

72

Multiprocesadores

cerrojo antes. Las autotransferencias son escasas, de tal manera que la transferencia del cerrojo es ms lenta incluso en el caso de dos procesadores. Es interesante observar que a el rendimiento para el caso de retraso exponencial es particularmente malo cuando el retraso d entre la liberacin y la siguiente adquisicin es distinto de cero y el nmero de o o u procesadores es pequeo. Esto se debe a que para pocos procesadores, es muy probable n que mientras que un procesador que acaba de liberar el candado est esperando a que a expire d antes de intentar su siguiente adquisicin, los otros procesadores estn en un o a periodo de espera y ni siquiera intentan obtener el cerrojo. Consideremos el resto de implementaciones. Estos son equitativos, de tal manera que cada transferencia de adquisicin es a un procesador diferente e implica transacciones de o bus en el camino cr tico de la transferencia. De aqu que todas impliquen cerca de tres transacciones de bus en el camino cr tico por transferencia de cerrojo incluso cuando se usan dos procesadores. Las diferencias reales en el tiempo se deben a las transacciones de bus exactas y a la latencia que pueda ser ocultada por parte del procesador. El ticket lock sin periodos de espera escala pobremente: Con todos los procesos intentando leer el contador de servicio, el nmero esperado de transacciones entre la liberacin u o y la lectura por parte del procesador correcto es p/2, dando lugar a una degradacin o lineal en la transferencia del cerrojo en el camino cr tico. Con una espera proporcional, es probable que el procesador correcto sea el que realice la lectura en primer lugar despus de la liberacin, de tal manera que el tiempo por transferencia no aumenta con e o p. El array-based lock tambin presenta una propiedad similar, dado que unicamente el e procesador correcto realiza la lectura, de tal manera que su rendimiento no se degrada con el incremento de procesadores. Los resultados ilustran la importancia de las interacciones de la arquitectura en la determinacin del rendimiento de los cerrojos, y que el cerrojo LL-SC se comporta o bastante bien en buses que tienen suciente ancho de banda (y nmero de procesadou res por buses reales). El rendimiento para los cerrojos LL-SC no equitativos aumenta hasta ser tan mala o un poco peor que el ms sosticado de los cerrojos para ms de a a 16 procesadores, debido al mayor trco, pero no demasiado debido al gran ancho de a banda. Cuando se utiliza la espera exponencial para reducir el trco, el cerrojo LL-SC a muestra el mejor tiempo de transferencia para todos los casos. Los resultados ilustran la dicultad y la importancia de la metodolog experimental en la evolucin de los a o algoritmos de sincronizacin. Las secciones cr o ticas nulas muestran algunos efectos interesantes, pero una comparacin signicativa depende de los patrones de sincronizacin o o en la aplicaciones reales. Un experimento que utiliza LL-SC pero garantiza una adquisicin en round-robin entre los procesos (equidad) usando una variable adicional muestra o un rendimiento muy similar al ticket lock, conrmando que la falta de equidad y las autotransferencias son la razn del mejor rendimiento para pocos procesadores. o

Rendimiento de los cerrojos para sistemas escalables Los experimentos realizados para ilustrar el rendimiento de la sincronizacin son los o mismos que se usaron en la seccin 5.5 para el SGI Challenge, usando de nuevo LL-SC o como primitiva para construir operaciones atmicas. El resultado para los algoritmos o que hemos discutido se muestran en la gura 5.34 para ejecuciones con 16 procesadores sobre la mquina SGI Origin2000. De nuevo se usan tres conjuntos diferentes de valores a para los retrasos dentro y despus de la seccin cr e o tica. Al igual que para el caso de memoria compartida, hasta que no se introducen retraIngenier Informtica a a Universidad de Valencia

5.5 Sincronizacin o
Time (microsec) 9 8 7 6 5 4 3 2 1 0 1 3 5 7 9 11 13 15 Time (microsec) 8 7 6 array-based 5 queuing 4LL-SC LL-SC, exp 3 ticket 2ticket, prop 1 0 1 3 5 7 9 11 13 15 Time (microsec) 8 7 6 5 4 3 2 1 0 1 3 5 7 9 11 13 15 array-based queuing LL-SC LL-SC, exp ticket ticket, prop

73

(a) null (c=0, d=0)

(b) critical-section (c=3.64 s, d=0)

(c) delay (c=3.64 s, d=1.29 s)

Figura 5.34: Rendimiento de los cerrojos son la mquina SGI Origin2000, para tres a escenarios diferentes. sos entre secciones cr ticas el comportamiento de los cerrojos no equitativos presenta un mayor rendimiento. El retraso exponencial ayuda al LL-SC cuando existe una seccin o cr tica nula, dado que en este caso es posible reducir la alta contencin que se produce. o En caso contrario, con secciones criticas nulas el cerrojo basado en ticket escala pobremente, aunque en el caso de usar retraso exponencial escala muy bien. Los cerrojos basados en arrays tambin escalan muy bien. En el caso de existir coherencia de cachs, e e el mejor emplazamiento de las variables cerrojo en la memoria principal proporcionada por el cerrojo por colas software no es particularmente util, y de hecho incurre en con tencin al realizar las operaciones de comparacin e intercambio (implementadas con o o LL-SC) y escala peor que el cerrojo basado en array. Si forzamos a los cerrojos a que tengan un comportamiento equitativo, su comportamiento es muy parecido al cerrojo basado en ticket sin retraso exponencial. Si usamos una seccin cr o tica no nula y un retraso entre los accesos al cerrojo (Figura 5.34(c)), suponiendo que todos los cerrojos se comportan equitativamente, el cerrojo LL-SC pierde su ventaja, mostrando su peor escalamiento. El cerrojo basado en array, el cerrojo por colas, y el cerrojo basado en ticket con retraso exponencial escalan muy bien. La mejor colocacin de los datos del cerrojo por colas no importa, pero su contencin no o o es peor que la del resto. En resumen, podemos concluir que el cerrojo basado en array y en ticket presentan un buen comportamiento y robustez para mquinas escalables con a coherencia de cach, al menos al ser implementadas con LL-SC, y el cerrojo LL-SC con e retraso exponencial se comporta mejor cuando no existe retraso entre la liberacin y o la siguiente adquisicin, debido a su repetido comportamiento no equitativo. El cerrojo o ms sosticado, el basado en cola, es innecesario pero tambin se comporta bien cuando a e existen retrasos entre la liberacin y la siguiente adquisicin. o o

5.5.2.

Eventos de sincronizacin punto a punto (banderas) o

La sincronizacin punto a punto dentro de un programa paralelo se implementa a o menudo usando una espera activa sobre variables ordinarias que actan como bandeu ras (ags). Si queremos utilizar bloqueo en lugar de espera activa, podemos utilizar semforos de una manera similar a la utilizada en la programacin concurrente y en los a o sistemas operativos. Las banderas son variables de control, usadas t picamente para comunicar que ha ocurrido un evento de sincronizacin ms que para transferir valores. Si dos procesos tieo a nen una relacin productor/consumidor en la variable compartida a, entonces se puede o utilizar una bandera para manejar la sincronizacin como se muestra a continuacin: o o Ingenier Informtica a a Universidad de Valencia

74

Multiprocesadores

P1 a=f(x); flag=1; /*set a */

P2 while (flag is 0) do nothing; /* use a */ b=g(a);

Si sabemos que la variable a se ha inicializado a un cierto valor, digamos 0, la cambiaremos a un nuevo valor si estamos interesados en este evento de produccin, o despus podemos usar el propio a como variable de sincronizacin, como sigue: e o

P1 a=f(x); /*set a */

P2 while (a is 0) do nothing; /* use a */ b=g(a);

Esto elimina la necesidad de una variable de bandera (ag) separado, y evita la escritura y la lectura de la variable.

5.5.3.

Eventos globales de sincronizacin (barreras) o

Una operacin de sincronizacin comn en los programas con bucles paralelos es la o o u barrera. Una barrera fuerza a todos los procesos a esperar hasta que todos ellos alcanzan la barrera y entonces se permite la continuacin de los mismos. o Algoritmos software Los algoritmos software para las barreras se implementan usando cerrojos, contadores compartidos y banderas. Una implementacin t o pica de la misma se puede conseguir con un cerrojo que protege el contador que lleva la cuenta de los procesos que llegan a a la barrera. La gura 5.35 muestra una implementacin t o pica de este tipo de barrera, denominado barrera centralizada.
LOCK(counterlock); if (count==0) release=0; count=count+1; UNLOCK(counterlock); if (count==total) { count=0; release=1; } else while (release==0); /* /* /* /* /* Garantiza actualizacin atmica o o el primero bloquea al resto cuenta los que van llegando libera el cerrojo del contador Si es el ltimo en llegar */ u */ */ */ */

/* reinicia la cuenta y */ /* activa el release */ /* sino, se espera a que se active el release */

Figura 5.35: Cdigo de una barrera centralizada. o En la prctica, se realiza una implementacin de la barrera un poco ms compleja. a o a Frecuentemente una barrera se usa dentro de un bucle, de tal manera que los procesos salen de la barrera para realizar algn trabajo para despus alcanzar la barrera de nuevo. u e Supongamos que uno de los procesos nunca deja la barrera (quedndose en la operacin a o spin), lo que puede ocurrir si el SO decide en ese momento ejecutar otro proceso. Ser a posible que uno de los procesos siguiera adelante y llegara a la barrera antes de que el Ingenier Informtica a a Universidad de Valencia

5.5 Sincronizacin o

75

ultimo proceso la hubiera dejado. El proceso rpido atrapa al proceso lento en la barrera a al resetear la bandera release. Ahora todos los procesos esperarn indenidamente ya a que el nmero de procesos nunca alcanzar el valor total. La observacin importante es u a o que el programador no hizo nada mal. Es la implementacin de la barrera la que hizo o suposiciones que no eran correctas. Una solucin obvia es contar los procesos cuando o salen de la barrera (al igual que hacemos en la entrada) y no permitir la reentrada de un proceso hasta que todos los procesos hayan dejado la instancia anterior de la barrera. Esto incrementar signicativamente la latencia de la barrera y la contencin, a o que como veremos posteriormente ya es bastante grande. Una solucin alternativa es o usar una sense-reversing barrier, que hace uso de una variable privada por proceso, local sense, que se inicializa a 1 para cada proceso. La gura 5.36 muestra el cdigo o para este tipo de barrera.
local_sense=!local_sense; /* Cambia local_sense */ LOCK(counterlock); /* Garantiza actualizacin atmica */ o o count=count+1; /* cuenta los que van llegando */ UNLOCK(counterlock); /* libera el cerrojo del contador */ if (count==total) /* Si es el ltimo en llegar */ u { count=0; /* reinicia la cuenta y */ release=local_sense; /* activa el release */ } else while (release!=local_sense); /* sino, se espera a que se active el release */

Figura 5.36: Cdigo para una barrera sense-reversing. o

Algoritmos para barreras en sistemas escalables El problema de eventos globales como las barreras es un preocupacin clave en o las mquinas escalables. Una cuestin de considerable debate es si es necesario un a o soporte hardware especial para las operaciones globales o si son sucientes los algoritmos software. El CM-5 representa una parte del espectro, con un red de control especial que proporciona barreras, reducciones, broadcasts y otras operaciones globales sobre un subrbol de la mquina. Cray T3D proporciona soporte hardware para las barreras, a a mientras que T3E no lo hace. Dado que es sencillo construir barreras que iteren sobre variables locales, la mayor de las mquinas escalables no proporcionan un soporte a a hardware especial para las barreras sino que se construyen en librer software usando as primitivas de intercambio o LL-SC. En la barrera centralizada usada en la mquinas basadas en bus, todos los procea sadores usan el mismo cerrojo para incrementar el mismo contador cuando indican su llegada a la barrera, y esperan sobre la misma variable de ag hasta que son liberados. En una mquina ms grande, la necesidad de que todos los procesadores accedan a a al mismo cerrojo y lean y escriban de las mismas variables puede dar lugar a mucho trco y contencin. De nuevo, esto es particularmente cierto en el caso de mquinas a o a sin coherencia de cachs, donde la variable se puede convertir en un punto caliente de e la red cuando varios procesadores iteran sobre ella. Es posible implementar la llegada y la salida de la barrera de una manera ms distria buida, donde no todos los procesadores tienen que acceder a la misma variable o cerrojo. La coordinacin de la llegada o liberacin puede realizarse en fases o rondas, con subo o conjuntos de procesos que se coordinan entre ellos, de tal manera que despus de algunas e Ingenier Informtica a a Universidad de Valencia

76

Multiprocesadores

fases todos los procesos estn sincronizados. La coordinacin de diferentes subconjuna o tos puede realizarse en paralelo, ya que no es necesario mantener ninguna serializacin o entre ellos. En una mquina basada en bus, distribuir las acciones de coordinacin no a o importa mucho ya que el bus serializa todas las acciones que requieren comunicacin; o sin embargo, puede ser muy importante en mquinas con memoria distribuida e intera conectada donde diferentes subconjuntos pueden coordinarse en diferentes partes de la red. Veamos algunos de estos algoritmos distribuidos. Arboles de combinacin software. Una manera sencilla de coordinar la llegada o o partida es a travs de una estructura de rbol. Un rbol de llegada es un rbol que e a a a usan los procesadores para indicar su llegada a la barrera. Se reemplaza un unico ce rrojo y contador por un rbol de contadores. El rbol puede ser de cualquier tipo, por a a ejemplo k-ario. En el caso ms simple, cada hoja del rbol es un proceso que participa a a en la barrera. Cuando un proceso llega a la barrera, indica su llegada realizando una operacin fetch&increment sobre el contador asociado a su padre. Despus chequea o e que el valor devuelto por la operacin para comprobar si es el ultimo de los hermao nos en llegar. Si no, simplemente espera a la liberacin. En caso contrario, el proceso o pasa a ser el representante de sus hermanos en el siguiente nivel del rbol y realiza a una operacin fetch&increment sobre el contador de ese nivel. De esta manera, cada o nodo del rbol env un unico representante al primer nivel del rbol donde todos los a a a procesos estn representados por ese nodo hijo que ha llegado. Para un rbol de grado a a k, ser necesario pasar por logk p niveles para completar noticacin de llegada de los a o p procesos. Si los subrboles de procesadores estn repartidos en diferentes partes de a a la red, y si las variables de los nodos del rbol estn distribuidas de manera apropiaa a da en la memoria, las operaciones fetch&increment sobre nodos que no tiene relacin o ascendiente-descendiente no necesitan serializacin. o Se puede utilizar una estructura de rbol similar para la liberacin, de tal manera a o que los procesadores no realicen una espera activa sobre la misma variable. Es decir, el ultimo proceso en llegar a la barrera pone a uno la variable de liberacin asociada con o la ra del rbol, sobre la cual estn realizando una espera activa k 1 procesos. Cada z a a uno de los k procesos pone a uno la variable de liberacin del siguiente nivel del rbol o a sobre la que estn realizando espera activa k 1 procesos, y as bajando en el rbol a a hasta que todos los procesos se liberan. La longitud del camino cr tico de la barrera en trminos del nmero de operaciones dependientes o serializadas (es decir, transacciones e u de red) es por tanto O(logk p), frente al O(p) para una la barrera centralizada u O(p) para cualquier barrera sobre un bus centralizado. Barreras en rbol con iteracin local. Existen dos formas de asegurarse de que a o un procesador itere sobre una variable local. Una es predeterminar qu procesador se e mover desde un nodo a su padre en el rbol basndose en el identicador del proceso y a a a el nmero de procesadores que participan en la barrera. En este caso, un rbol binario u a facilita la implementacin de la iteracin local, ya que la variable sobre la que se itera o o puede almacenarse en la memoria local del proceso en espera en lugar de aquel que pasa al nivel del padre. De hecho, en este caso es posible implementar la barrera sin operaciones atmicas, usando unicamente operaciones de lectura y escritura como sigue. o En la llegada, un proceso que llega a cada nodo simplemente itera sobre la variable de llegada asociada a ese nodo. El otro proceso asociado con el nodo simplemente escribe en la variable al llegar. El proceso cuyo papel sea iterar ahora simplemente itera sobre la variable liberada asociada a ese nodo, mientras que el otro proceso procede a ir al nodo padre. A este tipo de barrera de rbol binario se le denomina barrera por torneo, a dado que uno de los procesos puede pensarse como el perdedor del torneo en cada etapa Ingenier Informtica a a Universidad de Valencia

5.5 Sincronizacin o del rbol de llegada. a

77

Otra forma de asegurar la iteracin local es usar rboles p-nodo para implementar o a una barrera entre los p procesos, donde cada nodo del rbol (hoja o interno) se asigna a a un unico proceso. Los rboles de llegada y la activacin pueden ser los mismos, o a o pueden mantenerse como rboles con diferentes factores de ramaje. Cada nodo interno a (proceso) en el rbol mantiene un array de variables de llegada, con una entrada por a hijo, almacenadas en la memoria local del nodo. Cuando un proceso llega a la barrera, si su nodo en el rbol no es una hoja entonces comprueba en primer lugar su array de a ags de llegada y espera hasta que todos sus hijos hayan indicado su llegada poniendo a uno su correspondiente entrada en el array. A continuacin, pone a uno su entrada o en el array de llegada de su padre (remoto) y realiza una espera activa sobre el ag de liberacin asociado a su nodo en el rbol de liberacin. Cuando llega el proceso ra o a o z y todas los ags de llegada de su array estn activos, entonces todos los procesos han a llegado. La ra pone a uno los ags (remotos) de liberacin de todos sus hijos en el z o rbol de liberacin; estos procesos salen de su espera activa y ponen a uno los ags de a o sus hijos, y as hasta que todos los procesos se liberan. Rendimiento Las metas a alcanzar para una barrera son las misma que las que vimos para los cerrojos: Baja latencia (longitud del camino cr tico pequeo). Ignorando la contenn cin, nos gustar que el nmero de operaciones en la cadena de operaciones o a u dependientes necesarias para p procesadores para pasar la barrera sea pequea. n Bajo trco. Dado que las barreras son operaciones globales, es muy probaa ble que muchos procesadores intenten ejecutar la barrera al mismo tiempo. Nos gustar que el algoritmo reduzca el nmero de transacciones y por a u tanto una posible contencin. o Escalabilidad. En relacin con el punto anterior, nos gustar que una barrera o a escale bien en funcin del nmero de procesadores que vamos a usar. o u Bajo coste de almacenamiento. La informacin que es necesaria debe ser peo quea y no debe aumentar ms rpidamente que el nmero de procesadores. n a a u Imparcialidad. Esta meta no es importante en este caso ya que todos los procesadores se liberan al mismo tiempo, pero nos gustar asegurar que el a mismo procesador no sea el ultimo en salir de la barrera, o preservar una ordenacin FIFO. o En una barrera centralizada, cada procesador accede a la barrera una vez, de tal manera que el camino cr tico tiene longitud de al menos p. Consideremos el trco del bus. a Para completar sus operaciones, una barrera centralizada de p procesadores realiza 2p transacciones de bus para obtener el cerrojo e incrementar el contador, dos transacciones de bus para que el ultimo procesador ponga a cero el contador y libere la bandera, y otras p 1 transacciones para leer la bandera despus de que su valor haya sido e invalidado. Obsrvese que ste es mejor que el trco para que un cerrojo sea adquirido e e a por p procesadores, dado que en ese caso cada una de las p liberaciones dan lugar a Ingenier Informtica a a Universidad de Valencia

78

Multiprocesadores

una invalidacin dando lugar a O(p2 ) transacciones de bus. Sin embargo, la contencin o o resultante puede ser sustancial si muchos procesadores llegan a la barrera de forma simultnea. En la gura 5.37 se muestra el rendimiento de algunos algoritmos de barrera. a
35

30

25 Time (microsec) 20

15 Centralized Combining Tree 10 Tournament Dissemination 5

0 12345678

Figura 5.37: Rendimiento de algunas barreras en el SGI Challenge.

Mejora de los algoritmos de barrera en un bus Veamos si es posible obtener una barrera con un mejor comportamiento para un bus. Una parte del problema de la barrera centralizada es que todos los procesos compiten por el mismo cerrojo y variables de bandera. Para manejar esta situacin, podemos o construir barreras que hagan que menos procesadores compitan por la misma variable. Por ejemplo, los procesadores pueden indicar su llegada a la barrera a travs de un e rbol de combinacin software. En un rbol de combinacin binario, unicamente dos a o a o procesadores se intercomunican su llegada a cada nodo del rbol, y unicamente uno a de los dos se mueve hacia arriba para participar en el siguiente nivel del rbol. De a esta forma, unicamente dos procesadores acceden a una variable dada. En una red con mltiples caminos paralelos, como los existentes en la mquinas con gran nmero u a u de procesadores, un rbol de combinacin se comporta mucho mejor que una barrera a o centralizada ya que los diferentes pares de procesadores se pueden comunicar entre ellos en paralelo por diferentes partes de la red. Sin embargo, en una interconexin o centralizada como un bus, aunque cada par de procesadores se comuniquen a travs de e variables diferentes todos ellos generan transacciones y por tanto contencin sobre el o mismo bus. Dado que un rbol binario con p hojas tiene aproximadamente 2p nodos, un a rbol de combinacin necesita un nmero similar de transacciones de bus que la barrera a o u centralizada. Adems presenta mayor latencia ya que necesita log p pasos para llegar de a las hojas a la ra del rbol, y de hecho del orden de p transacciones de bus serializadas. z a La ventaja de un rbol de combinacin es que no usa cerrojos sino operaciones de a o lectura y escritura, que puede compensar si el nmero de procesadores en grande. El u resto de los algoritmos de barrera escalables los estudiaremos, junto con las barreras en rbol, en el contexto de las mquinas escalables. a a

5.6.

Generalidades sobre las redes de interconexin o

La red de interconexin es uno de los elementos ms importantes de cualquier aro a quitectura paralela puesto que va a modicar el rendimiento global del sistema y la Ingenier Informtica a a Universidad de Valencia

5.6 Generalidades sobre las redes de interconexin o

79

topolog de la arquitectura. La red de interconexin va a ser el veh a o culo a travs del e cual se van a comunicar los diferentes elementos del sistema, memoria con procesador, elementos perifricos, unos procesadores con otros en un computador matricial, etc. e Las redes de interconexin se utilizan en computadores matriciales as como en multio procesadores y multicomputadores, dependiendo del tipo de sistema los elementos que se interconectan pueden variar, pero la topolog de la red, as como los protocolos, a suelen ser comunes e independientes del tipo de sistema. En este cap tulo se estudiarn a precisamente las diferentes topolog de redes de interconexin sean cuales fueren los as o elementos a interconectar. En cuanto a la bibliograf de este tema, conviene consultar [DYN97] que es uno a de los libros de redes para multicomputadores ms completos y modernos. Tambin a e en [CSG99] se encuentra una buena seccin dedicada a las redes. Por ultimo, algunas o de las deniciones y parmetros se han tomado de [Wil96]. a

5.6.1.

Deniciones bsicas y parmetros que caracterizan las a a redes de interconexin o

En esta parte dedicada a las redes se vern diferentes topolog para la construccin a as o de redes de interconexin. La eciencia en la comunicacin en la capa de interconexin o o o es cr tica en el rendimiento de un computador paralelo. Lo que se espera es conseguir una red con latencia baja y una alta tasa de transferencia de datos y por tanto una ancho de banda amplio. Las propiedades de red que veremos a continuacin van a o ayudar a la hora de elegir el tipo de diseo para una arquitectura. Veamos por tanto n las deniciones que nos van a caracterizar una red: Tama o de la red n El tamao de la red es el nmero de nodos que contiene, es decir, el nmero de n u u elementos interconectados entre si. Estos nodos pueden ser procesadores, memorias, computadores, etc. Grado del nodo El nmero de canales que entran y salen de un nodo es el grado del nodo y lo u representaremos por d degree. En el caso de canales unidireccionales, el nmero de u canales que entran en el nodo es el grado de entrada y los que salen el grado de salida. El grado del nodo representa el nmero de puertos de E/S y por lo tanto el coste del u nodo. Esto quiere decir que el grado de los nodos deber ser lo ms reducido posible a a para reducir costes. Si adems el grado del nodo es constante se consigue que el sistema a pueda ser modular y fcilmente escalable con la adicin de nuevos mdulos. a o o Dimetro de la red a El dimetro D de una red es el mximo de los caminos ms cortos entre dos nodos a a a cualquiera de una red. D = maxi,jN (minpPij length(p)) Ingenier Informtica a a Universidad de Valencia

80

Multiprocesadores

donde Pij es el conjunto de caminos de i a j. La longitud del camino se mide por el nmero de enlaces por los que pasa el camino. El dimetro de la red nos da el nmero u a u mximo de saltos entre dos nodos, de manera que de esta forma tenemos una medida de a lo buena que es la comunicacin en la red. Por todo esto, el dimetro de la red deber o a a ser lo ms pequeo posible desde el punto de vista de la comunicacin. El dimetro se a n o a utiliz hasta nales de los 80 como la principal gura de mrito de una red, de ah la o e popularidad que tuvieron en esa poca redes de bajo dimetro como los hipercubos. e a

Anchura de la biseccin o El ancho de la biseccin, B, es el m o nimo nmero de canales que, al cortar, separa u la red en dos partes iguales. La biseccin del cableado, BW , es el nmero de cables que o u cruzan esta divisin de la red. BW = BW , donde W es el ancho de un canal en bits. o Este parmetro nos da una cota inferior de la densidad del cableado. Desde el punto de a vista del diseador, BW es un factor jo, y el ancho de la biseccin restringe la anchura n o de los canales a W = BW . La gura 5.38 muestra un ejemplo del clculo del ancho de a B la biseccin. o

(a)

(b)

Figura 5.38: Ejemplos del clculo del ancho de la biseccin: toro 2-D. (b) toro 3-D (no a o se muestran los enlaces de cierre). Cuando una red dada se divide en dos mitades iguales, al nmero m u nimo de canales que atraviesa el corte se le llama anchura de canal biseccional. En el caso de una red de comunicaciones, caso comn, cada canal estar compuesto por un nmero w de bits, u a u hilos o cables. De esta manera podemos denir la anchura de cable biseccional como B = bw. Este parmetro B reeja la densidad de cables en una red. Esta anchura de la a biseccin nos da una buena indicacin del ancho de banda mximo en una red a travs o o a e de un corte transversal realizado en la red. El resto de cortes estar acotados por esta an anchura de la biseccin. o

Longitud del cable La longitud del cable entre nodos es tambin importante puesto que tiene efectos e directos sobre la latencia de la seal, desfase del reloj, o incluso los requerimientos de n potencia. Ingenier Informtica a a Universidad de Valencia

5.6 Generalidades sobre las redes de interconexin o Redes simtricas e

81

Una red es simtrica si es isomorfa a ella misma independientemente del nodo que e consideremos como origen, es decir, una red es simtrica si la topolog de esta se ve igual e a desde cualquier nodo. Este tipo de redes tiene la ventaja de que simplica mucho de los problemas de manejo de recursos. Por ejemplo, dado un patrn de trco uniforme, o a en las redes simtricas se produce una carga uniforme de los canales de la red, cosa que e no ocurre en las redes asimtricas. e Otras propiedades como que si los nodos son homogneos, o si los canales tienen e memoria o son slo conmutadores, son otras propiedades utiles para caracterizar la red. o Rendimiento de la red Para resumir los puntos anteriormente expuestos, veamos cuales son los factores que intervienen en el rendimiento global de una red de interconexin: o Funcionalidad Esto indica cmo la red soporta el encaminamiento de datos, tratao miento de las interrupciones, sincronizacin, combinacin peticin/mensaje, y la o o o coherencia. Latencia de la red Indica el retraso de un mensaje, en el peor caso, a travs de la e red. Ancho de banda Indica la velocidad mxima de transmisin de datos, en Mbytes/s, a o transmitidos a travs de la red. e Complejidad hardware Indica el coste de implementacin como el coste de los cao bles, conmutadores, conectores, arbitraje, y lgica de interfaz. o Escalabilidad Indica la capacidad de una red para expandirse de forma modular con nuevos recursos en la mquina y sin mucho detrimento en el rendimiento global. a Capacidad de transmisin de la red o La capacidad de transmisin de una red se dene como el nmero total de datos que o u pueden ser transmitidos a travs de la red por unidad de tiempo. Una forma de estimar e la capacidad de transmisin es calcular la capacidad de la red, es decir, el nmero total o u de mensajes que pueden haber en la red a la vez. Normalmente, la mxima capacidad a de transmisin es una fraccin de su capacidad. o o Un punto caliente suele estar formado por un par de nodos que recogen una porcin o demasiado grande el trco total de la red. El trco en estos puntos calientes puede a a degradar el rendimiento de toda la red a causa de la congestin que producen. La o capacidad de transmisin en puntos calientes se dene como la mxima velocidad a la o a que se pueden enviar mensajes de un nodo espec co Pi a otro nodo espec co Pj . Las redes de dimensin pequea (2D,3D) operan mejor bajo cargas no uniformes o n ya que se comparten ms recursos. En una red de dimensiones ms elevadas, los cables a a se asignan a una dimensin particular y no pueden ser compartidas entre dimensiones. o Por ejemplo, en un n-cubo binario es posible que una l nea se sature mientras otra l nea f sicamente adyacente, pero asignada a una dimensin diferente, permanece inactiva. o En un toro, todas las l neas f sicamente adyacentes se combinan en un unico canal que es compartido por todos los mensajes. Ingenier Informtica a a Universidad de Valencia

82

Multiprocesadores

La latencia m nima de la red se alcanza cuando el parmetro k y la dimensin n se a o eligen de manera que las componentes de la latencia debida a la distancia D (enlaces entre nodos) y a la relacin L/W (longitud L del mensaje normalizada por la anchura o W ) quedan aproximadamente iguales. La menor latencia se obtiene con dimensiones muy bajas, 2 para hasta 10245 nodos. Las redes de dimensin baja reducen la contencin porque con pocos canales de o o ancho de banda amplio se consigue que se compartan mejor los recursos y, por tanto, un mejor rendimiento de las colas de espera al contrario que con muchos canales de banda estrecha. Mientras que la capacidad de la red y la latencia peor de bloque son independientes de la dimensin, las redes de dimensin pequea tienen una mayor o o n capacidad de transmisin mxima y una latencia de bloque media menor que las redes o a de dimensiones altas.

5.6.2.

Topolog control de ujo y encaminamiento a,

El diseo de una red se realiza sobre tres capas independientes: topolog encamin a, namiento y control de ujo. La topolog hace referencia al grafo de interconexin de la red I = G(N, C) a o donde N son los nodos del grafo y C es el conjunto de enlaces unidireccionales o bidireccionales que los conectan. Si pensamos en un multiprocesador como en un problema de asignacin de recursos, la topolog es la primera forma de asignacin o a o de los mismos. El control de ujo hace referencia al mtodo utilizado para regular el trco en e a la red. Es el encargado de evitar que los mensajes se entremezclen y controlar su avance para asegurar una progresin ordenada de los mismos a travs de la red. o e Si dos mensajes quieren usar el mismo canal al mismo tiempo, el control de ujo determina (1) qu mensaje obtiene el canal y (2) qu pasa con el otro mensaje. e e El encaminamiento hace referencia al mtodo que se usa para determinar el camie no que sigue un mensaje desde el nodo origen al nodo destino. El encaminamiento se puede ver como una relacin, C N C, que asigna al canal ocupado por la o cabecera del mensaje y en funcin del nodo destino un conjunto de canales que o pueden utilizarse a continuacin para que el mensaje llegue a su destino. El encao minamiento es una forma dinmica de asignacin de recursos. Dada una topolog a o a, un nodo actual, y un destino, la relacin de encaminamiento determina como llevar o un mensaje desde el nodo actual al nodo destino.

Topolog a Una topolog se evala en trminos de los siguientes cinco parmetros: Ancho de a u e a la biseccin, grado del nodo, dimetro de la red, longitud de la red y su simetr Estos o a a. parmetros ya fueron expuestos al principio de este cap a tulo. La topolog de la red tambin guarda una gran relacin con la construccin f a e o o sica de la red, especialmente con el empaquetamiento, que consiste en poner juntos todos los nodos procesadores de la red y sus interconexiones. En la gura 5.39 se muestra un ejemplo de empaquetamiento. Ingenier Informtica a a Universidad de Valencia

5.6 Generalidades sobre las redes de interconexin o


An Interboard Channel Being Connected Using the Backplane

83

Backplanes

. .. .. .. . . . . . . . . . .. .. .. .. .. .. .. .. .. .. . . .. .. .. . . . . .. .. .. .

. .. .. .. . . . . . . . . . .. .. .. .. .. .. .. .. .. .. .

....... .... .... . . . ........ . . . .... .... 1 . . . .. .. .. ..1. . .

....... .... .... ........... .... .... . . . ........ . . . .... .... . . . .. .. .. .. . . .

1 . .. .. ..1 . . . .. .. .. . . 1...... . .. .. .. .. . . . . . . . 1

1 ....... . .. .. .. . . . . . . . .

.... .... 1 . . . .. .. .. ..1. . .

.. ... 1 .. 1 . . . . . . . . . .. . .. .. .. . .Processor .and Memory. . . . Interface .Chips. ... ....... Cluster . . .Processor and Memory . . . . . . . . . . Router Chip . . . .. .. . .... .... .... . ..Chips.. . . ... Cluster. Interface . . .. .. .. .. .. . .

Cluster Interface 1 Router Chip

1 Router Chip1 Board Processor and Memory . ..Chips . . . . . . . .. .. .


. . .. .. .. .. .. . .

. . . . 1 . . Router Chip.. .. . . .... .. ......... . Processor .and Memory.. .. . . . . . . . . ... 1 .. .1.. .. .. .Interface. . . . Chips . . .. .. .. .. . . . . . . 1 Cluster . . Router Chip. . . . . ....... .. Processor and Memory . .Cluster..Interface .. .. .. .. . Chips . . .. .. .. .. .. . . 1 .Router. Chip. . . . .. . .... . . .1 . . . ........... .. . . .........
Processor and Memory . . . . . . . Chips

Cluster Interface 1

. .. Cluster........ .. .. . . . . . . . . .. .. .. . .Memory. .. .. ... .. . . .. ... . . . . .&.. .. . . .


Router .. ..Chips . .. . . Processor,

.. .. .. ... .. .. .. . .. .. . .

. . .. ... ... ... ... .. ... .. ... .. . . . .. .. .. . . . . . . . .

... . . .. .. .. .. .. . . . . . . . .... .... ....... ....... Board Pin-out An Interboard Channel Being Connected Using a Connector Cable

. . .............. . . . . . . .... .... .......

.. . . .

Pin-out from a Cluster Module

Cluster Module Containing Multiple Processing Nodes and Its Associated Router

Figura 5.39: Ejemplo de empaquetamiento de un multicomputador. Control de ujo El control de ujo se reere al mtodo usado para regular el trco en una red. e a Determina cuando un mensaje o parte de un mensaje puede avanzar. Tambin se hace e cargo de la pol tica de asignacin de los recursos: buers y canales; a las unidades de o informacin: mensajes, paquetes y its. o Mensaje. Es la unidad lgica de comunicacin. Dos objetos se comunican mediante o o el env de un mensaje. Es la unica unidad vista por los clientes de un servicio de o red. Paquete. Un mensaje se divide en uno o ms paquetes. Un paquete es la menor a unidad que contiene informacin de encaminamiento. Si existe ms de un paquete o a en un mensaje, cada paquete contiene adems un nmero de secuencia que permite a u su reensamblaje. Flit. Un paquete se puede dividir a su vez en d gitos de control de ujo o its, la menor unidad sobre la cual se puede realizar el control de ujo. Es decir, la comunicacin de recursos, cables y buers, se realizan en funcin de its. En general, o o un it no contiene informacin de encaminamiento. Unicamente el primer it de un o paquete sabe a donde se dirige. El resto de its debe seguir al it cabecera para determinar su encaminamiento. Ingenier Informtica a a Universidad de Valencia

84

Multiprocesadores

Una simple analog ilustra la diferencia entre los paquetes y los its. Los paquetes son a como los automviles. Dado que conocen a donde van, pueden entrelazarse libremente. o Los its, por otro lado, son como los vagones de un tren. deben seguir al it cabecera para encontrar su destino. No se pueden mezclar con los its de otros paquetes, o perder su unico contacto con su destino. an Otro aspecto importante que tiene que solucionar el control de ujo es el de bloqueo de un paquete. En este caso ser necesario disponer de algn espacio buer para su a u almacenamiento temporal. Cuando ya no existe ms espacio, el mecanismo de control a de ujo detiene la transmisin de informacin. Cuando el paquete avanza y aparece o o ms espacio buer disponible, la transmisin comienza de nuevo. Existe tambin la a o e alternativa de eliminar el paquete cuando deja de existir espacio disponible o desviarse a travs de otro canal. e

Encaminamiento El encaminamiento es el mtodo usado por un mensaje para elegir un camino entre e los canales de la red. El encaminamiento puede ser visto como un par (R, ), donde R C N C, : P (C) C.

La relacin de encaminamiento R identica los caminos permitidos que pueden ser o usados por un mensaje para alcanzar su destino. Dada la posicin actual del mensaje, o C, y su nodo destino, N , R identica un conjunto de canales permitidos, C, que pueden ser usados como siguiente paso en el camino. La funcin selecciona uno de los caminos de entre los permitidos. En cada paso o del encaminamiento, toma el conjunto de posibles canales siguientes, P (C), alguna informacin adicional acerca del estado de la red, , y elige en canal en concreto, C. La o informacin adicional, , puede ser constante, aleatoria, o basada en informacin sobre o o el trco de la red. a Los mtodos de encaminamiento pueden clasicarse en deterministas, inconscientes e (oblivious), o adaptativos. Con el encaminamiento determinista, el camino que sigue un mensaje depende unicamente de los nodos origen y destino. En este caso R es una funcin y es constante (no se proporciona informacin adicional). o o En un encaminamiento inconsciente se puede elegir varios caminos a travs de la e red, pero no se utiliza informacin acerca del estado de la red para elegir un camino. o El mensaje no es consciente del resto de trco en la red. Con un encaminamiento de a este tipo, R es una relacin (pueden existir varios caminos permisibles). Para que el o encaminamiento sea inconsciente, no puede contener informacin acerca del estado o de la red. Puede ser aleatoria, una funcin de tiempo, o una funcin del contenido del o o mensaje. El caso ms general es el encaminamiento adaptativo, donde el router puede usar a informacin acerca del estado de la red. Es este caso, puede ser cualquier funcin. o o Ingenier Informtica a a Universidad de Valencia

5.6 Generalidades sobre las redes de interconexin o

85

5.6.3.

Clasicacin de las redes de interconexin seg n su too o u polog a

Entre otros criterios, las redes de interconexin de han clasicado en funcin de o o modo de funcionamiento (s ncrono o as ncrono), y control de la red (centralizado, descentralizado, o distribuido). Hoy en d los multicomputadores, multiprocesadores, y a, NOWs dominan el mercado de los computadores paralelos. Todas estas arquitecturas utilizan redes as ncronas con control distribuido. Por lo tanto, nos centraremos en otros criterios que son ms signicativos en la actualidad. a La gura 5.40 muestra una clasicacin de las redes de interconexin conocidas en o o cuatro grupos en funcin principalmente de la topolog de la red: redes de medio comn, o a u redes directas, redes indirectas, y redes h bridas. Para cada grupo, la gura muestra una jerarqu de clases, indicando alguna implementacin real que utiliza dicha topolog a o a. En las redes de medio compartido, el medio de transmisin est compartido por o a todos los dispositivos que tienen posibilidad de comunicacin. Un enfoque alternativo o consiste en tener enlaces punto a punto que conecten de forma directa cada elemento de comunicacin con un subconjunto (normalmente reducido) de otros los dispositivos o existentes en la red. En este caso, la comunicacin entre elementos de comunicacin no o o vecinos requiere la transmisin de la informacin a travs de varios dispositivos intermeo o e dios. A estas redes se les denominan redes directas. En vez de conectar de forma directa los elementos de comunicacin, las redes indirectas los conectan mediante uno o ms o a conmutadores. Si existen varios conmutadores, estos suelen estar conectados entre ellos mediante enlaces punto a punto. En este caso, cualquier comunicacin entre distintos o dispositivos requiere transmitir la informacin a travs de uno o ms conmutadores. o e a Finalmente, es posible una aproximacin h o brida.

5.6.4.

Redes de medio compartido

La estructura de interconexin menos compleja es aquella en la que el medio de o transmisin est compartido por todos los elementos de comunicacin. En estas redes o a o de medio compartido, slo un dispositivo puede utilizar la red en un momento dado. o Cada elemento conectado a la red tiene circuitos para manejar el paso de direcciones y datos. La red en s misma acta, normalmente, como un elemento pasivo ya que no u genera mensajes. Un concepto importante es el de estrategia de arbitraje que determina cmo se o resuelven los conictos de acceso al medio. Una caracter stica de un medio compartido es la posibilidad de soportar un broadcast atmico en donde todos los dispositivos o conectados al medio pueden monitorizar actividades y recibir la informacin que se o est transmitiendo en el medio compartido. Esta propiedad es importante para un a soporte eciente de muchas aplicaciones que necesitan comunicaciones del tipo uno a todos o uno a muchos, como las barreras de sincronizacin y protocolos de coherencia o de cach basados en snoopy. Debido al limitado ancho de banda, un medio compartido e unicamente puede soportar un nmero limitado de dispositivos antes de convertirse en u un cuello de botella. Las redes de medio compartido pueden dividirse en dos grandes grupos: las redes de rea local, usadas principalmente en la construccin de redes de ordenadores cuya disa o tancia mxima no supera unos pocos kilmetros, y los buses usados en la comunicacin a o o Ingenier Informtica a a Universidad de Valencia

86

Multiprocesadores

Redes de medio compartido Redes de rea local a Bus de contencin (Ethernet) o Bus de tokens (Arenet) Anillo de tokens (FDDI Ring, IBM Token Ring) Bus de sistema (Sun Gigaplane, DEC AlphaServer8X00, SGI PoweerPath-2) Redes directas (Redes estticas basadas en encaminador) a Topolog estrictamente ortogonales as Malla Malla 2-D (Intel Paragon) Malla 3-D (MIT J-Machine) Toros (n-cubo k-arios) Toro 1-D unidireccional o anillo (KSR forst-level ring) Toro 2-D bidireccional (Intel/CMU iWarp) Toro 2-D bidireccional (Cray T3D, Cray T3E) Hipercubo (Intel iPSC, nCUBE) Otras topolog directas: Arboles, Ciclos cubo-conectados, Red de Bruijn, Graas fos en Estrella, etc. Redes Indirectas (Redes dinmicas basadas en conmutadores) a Topolog Regulares as Barra cruzada (Cray X/Y-MP, DEC GIGAswitch, Myrinet) Redes de Interconexin Multietapa (MIN) o Redes con bloqueos MIN Unidireccionales (NEC Cenju-3, IBM RP3) MIN Bidireccional (IBM SP, TMC CM-5, Meiko CS-2) Redes sin bloqueos: Red de Clos Topolog Irregulares (DEC Autonet, Myrinet, ServerNet) as Redes H bridas Buses de sistema mltiples (Sun XDBus) u Redes jerrquicas (Bridged LANs, KSR) a Redes basadas en Agrupaciones (Stanford DASH, HP/Convex Exemplar) Otras Topolog Hipergrafo: Hiperbuses, Hipermallas, etc. as Figura 5.40: Clasicacin de las redes de interconexin. (1-D = unidimensional; 2-D o o = bidimensional; 3-D = tridimensional; CMU = Carnegie Mellon University; DASH = Directory Architecture for Shared-Memory; DEC = Digital Equipment Corp.; FDDI = Fiber Distributed Data Interface; HP = Hewlett-Packard; KSR = Kendall Square Research; MIN = Multistage Interconnection Network; MIT = Massachusetts Institute of Technology; SGI = Silicon Graphics Inc.; TMC = Thinking Machines Corp.)

Ingenier Informtica a a

Universidad de Valencia

5.6 Generalidades sobre las redes de interconexin o interna de los uniprocesadores y multiprocesadores. Bus del sistema (Backplane bus)

87

Un bus del sistema es la estructura de interconexin ms simple para los multiproceo a sadores basados en bus. Se usa normalmente para interconectar procesadores y mdulos o de memoria para proporcionar una arquitectura UMA. La gura 5.41 muestra una red con un bus unico. Un bus de este tipo consta usualmente de 50 a 300 hilos f sicamente realizados mediante una placa base.
Bus

Figura 5.41: Una red con bus unico. (M = memoria; P = procesador.) Existen tres tipos de informacin en un bus de este tipo: datos, direcciones y seales o n de control. Las seales de control incluyen la seal de peticin del bus y la seal de n n o n permiso de acceso al bus, entre muchas otras. Adems del ancho de las l a neas de datos, el mximo ancho de banda depende de la tecnolog El nmero de procesadores que a a. u pueden conectarse al bus depende de varios factores, como la velocidad del procesador, el ancho de banda del bus, la arquitectura cach y el comportamiento del programa. e LANs de medio compartido Es posible utilizar una LAN de alta velocidad como una columna vertebral que permita interconectar ordenadores para proporcionar un entorno de computacin distribuio do. F sicamente, una LAN usa hilos de cobre o bra ptica como medio de transmisin. o o La topolog utilizada puede ser un bus o un anillo. Debido a razones de implementaa cin y rendimiento, no es prctico tener un control centralizado o algn mecanismo jo o a u de asignacin de acceso que determine quin puede acceder al bus. Las tres alternativas o e principales de LANs basadas en un control distribuido se describen a continuacin. o Bus de contencin: El mecanismo de arbitraje de bus ms popular es que todos los o a dispositivos compitan para tener el acceso exclusivo al bus. Debido a la comparticin del o medio todos los dispositivos pueden monitorizar el estado del bus y detectar colisiones. Aqu el trmino colisin signica que dos o ms dispositivos estn usando el bus al , e o a a mismo tiempo y sus datos colisionan. Cuando se detecta una colisin, los dispositivos o causantes de la misma abortan la transmisin para intentarlo posteriormente. Entre las o LANs que utilizan este mecanismo est la Ethernet que adopta el protocolo CSMA/CD a (Carrier-Sense Multiple Access with Collision Detection). El ancho de banda de la Ethernet es 10 Mbps y la distancia mxima es de 250 metros (cable coaxial). Para a romper la barrera de 10 Mbps ha aparecido Fast Ethernet que puede proporcionar un ancho de banda de 100 Mbps. Token Bus: Una desventaja del bus de contencin es su naturaleza no determinista, o ya que no puede garantizar cunto se debe esperar hasta ganar el acceso al bus. Por lo a tanto, el bus de contencin no es el idneo para soportar aplicaciones de tiempo real. o o Para eliminar el comportamiento no determinista, aparece un enfoque alternativo que implica pasar un testigo entre los dispositivos conectados a la red. El dispositivo que Ingenier Informtica a a Universidad de Valencia

88

Multiprocesadores

tiene el testigo tiene el acceso al bus. Cuando termina de transmitir sus datos, el testigo se pasa al siguiente dispositivo segn algn esquema prejado. Restringiendo el tiempo u u mximo que se puede estar en posesin del testigo se puede garantizar una cota superior a o al tiempo que un dispositivo debe esperar. Arcnet soporta token bus con un ancho de banda de 2.4 Mbps. Token Ring: Una extensin natural al token bus es la de utilizar una estructura de o anillo. El token ring de IBM proporciona anchos de banda de 4 y 16 Mbps sobre cable coaxial. El protocolo FDDI (Fiber Distributed Data Interface) es capaz de proporcionar un ancho de banda de 100 Mbps usando bra ptica. o

5.6.5.

Redes Directas

La escalabilidad es una caracter stica importante en el diseo de sistemas multipron cesador. Los sistemas basados en buses no son escalables al convertirse el bus en un cuello de botella cuando se aaden ms procesadores. Las redes directas o redes punto n a a punto son una arquitectura red popular y que escalan bien incluso con un nmero u elevado de procesadores. Las redes directas consisten en un conjunto de nodos, cada uno directamente conectado a un subconjunto (usualmente pequeo) de otros nodos en n la red. En la gura 5.43 se muestra varios tipos de redes directas. Los correspondientes patrones de interconexin se estudiarn posteriormente. Cada nodo es un ordenador o a programable con su propio procesador, memoria local, y otros dispositivos. Estos nodos pueden tener diferentes capacidades funcionales. Por ejemplo, el conjunto de nodos puede contener procesadores vectoriales, procesadores grcos, y procesadores de E/S. a La gura 5.42 muestra la arquitectura de un nodo genrico. Un componente comn e u en estos nodos es un encaminador (router) que se encarga de manejar la comunicacin entre los nodos a travs del env y recepcin de mensajes. Por esta razn, las o e o o o redes directas tambin son conocidas como redes basadas en routers. Cada router tiene e conexin directa con el router de sus vecinos. Normalmente, dos nodos vecinos estn o a conectados por un par de canales unidireccionales en direcciones opuestas. Tambin se e puede utilizar un canal bidireccional para conectar dos nodos. Aunque la funcin del o encaminador puede ser realizada por el procesador local, los encaminadores dedicados se han usado de forma habitual en multicomputadores de altas prestaciones, permitiendo el solapamiento de la computacin y las comunicaciones dentro de cada nodo. Al o aumentar el nmero de nodos en el sistema, el ancho de banda total de comunicaciones, u memoria y capacidad de procesamiento del sistema tambin aumenta. Es por esto que e las redes directas son una arquitectura popular para construir computadores paralelos de gran escala. Cada encaminador soporta un nmero de canales de entrada y salida. Los canau les internos o puertos conectan el procesador/memoria local al encaminador. Aunque normalmente existe unicamente un par de canales internos, algunos sistemas usan ms a canales internos para evitar el cuello de botella entre el procesador/memoria local y el router. Los canales externos se usan para comunicaciones entre los routers. Conectando los canales de entrada de un nodo a los canales de salida del otros nodos podemos denir la red directa. A no ser que se diga lo contrario, utilizaremos el trmino canal e para referirnos a un canal externo. A dos nodos conectados directamente se les llaman vecinos o nodos adyacentes. Normalmente, cada nodo tiene un nmero jo de canales u de entrada y salida, cada canal de entrada est emparejado con el correspondiente canal a de salida. A travs de todas las conexiones entre estos canales, existen varias maneras e de conectar los diferentes nodos. Obviamente, cada nodo de la red debe poder alcanzar Ingenier Informtica a a Universidad de Valencia

5.6 Generalidades sobre las redes de interconexin o

89

Other Functional Unit

Processor

Local Memory

Input Channels Router

Output Channels

Figura 5.42: Arquitectura de un nodo genrico. e cualquier otro nodo.

5.6.6.

Redes Indirectas

Las redes indirectas o basadas en conmutadores (switch) forman el tercer grupo de redes de interconexin. En lugar de proporcionar una conexin directa entre algunos o o nodos, la comunicacin entre cualquier pareja de nodos se realiza a travs de conmuo e tadores. Cada nodo tiene un adaptador de red que se conecta a un conmutador. Cada conmutador consta de un conjunto de puertos. Cada puerto consta de un enlace de entrada y otro de salida. Un conjunto (posiblemente vac de puertos en cada cono) mutador estn conectados a los procesadores o permanecen abiertos, mientras que el a resto de puertos estn conectados a puertos de otros conmutadores para proporcionar a conectividad entre los procesadores. La interconexin de estos conmutadores dene la o topolog de la red. a Las redes conmutadas han evolucionado considerablemente con el tiempo. Se han propuesto un amplio rango de topolog desde topolog regulares usadas en los proas, as cesadores array (matriciales) y multiprocesadores de memoria compartida UMA a las topolog irregulares utilizadas en la actualidad en los NOWs. Las topolog reguas as lares tienen patrones de conexin entre los conmutadores regulares mientras que las o topolog irregulares no siguen ningn patrn predenido. En el tema siguiente se esas u o tudiarn ms detenidamente las topolog regulares. La gura 5.44 muestra una red a a as conmutada t pica con topolog irregular. Ambos tipos de redes pueden clasicarse a adems segn el nmero de conmutadores que tiene que atravesar un mensaje para a u u llegar a su destino. Aunque esta clasicacin no es importante en el caso de topolog o as irregulares, puede signicar una gran diferencia en el caso de redes regulares ya que algunas propiedades espec cas se pueden derivar en funcin de este dato. o

5.6.7.

Redes H bridas

En esta seccin describiremos brevemente algunas topolog que no se encuadran o as en las vistas hasta ahora. En general, las redes h bridas combinan mecanismos de redes de medio compartido y redes directas o indirectas. Por tanto, incrementan el ancho de Ingenier Informtica a a Universidad de Valencia

90

Multiprocesadores

(a) 2ary 4cube (hypercube)

(b) 3ary 2cube

(c) 3ary 3D mesh

(d) Binary Tree

(e) Balanced Binary Tree


000 x 100 010 001 z y t u v w

101 110 111 011

u v w t z y

(f) Cube-Connected Cycles

(g) De Bruijn Network

(h) Star Graph

Figura 5.43: Algunas topolog propuestas para redes directas. as

5 6 1

0
Bidirectional Link

8
Processing Elements

Switches

Figura 5.44: Un red conmutada con topolog irregular. a Ingenier Informtica a a Universidad de Valencia

5.6 Generalidades sobre las redes de interconexin o

91

banda con respecto a las redes de medio compartido, y reducen la distancia entre nodos con respecto a las redes directas e indirectas. Existen varias aplicaciones concretas de las redes h bridas. Este es el caso de las bridged LANs. Sin embargo, para sistemas que necesitan muy alto rendimiento, las redes directas e indirectas consiguen una mejor escalabilidad que las redes h bridas ya que los enlaces punto a punto son ms sencillos a y ms rpidos que los buses de medio compartido. La mayor de los computadores a a a paralelos de alto rendimiento usan redes directas o indirectas. Recientemente las redes h bridas han ganado aceptacin de nuevo. El uso de tecnolog ptica permite la o a o implementacin de redes de alto rendimiento. o Se han propuesto redes h bridas para diferentes propsitos. En general, las redes o h bridas pueden modelarse mediante hipergrafos, donde los vrtices del hipergrafo ree presentan un conjunto de nodos de procesamiento, y las aristas representan el conjunto de canales de comunicacin y/o buses. Obsrvese que una arista en un hipergrafo pueo e de conectar un nmero arbitrario de nodos. Cuando una arista conecta exactamente u dos nodos entonces representa un canal punto a punto. En caso contrario representa un bus. En algunos diseos de redes, cada bus tiene un unico nodo conductor. Ningn n u otro dispositivo puede utilizar ese bus. En ese caso, no existe necesidad de arbitraje. Sin embargo, todav es posible la existencia de varios receptores en un tiempo dado, a mantenindose la capacidad de broadcast de los buses. Obviamente, cada nodo de la e red debe poder controlar al menos un bus, por lo que el nmero de buses necesarios no u puede ser menor que el nmero de nodos. En este caso, la topolog de la red se puede u a modelar mediante un hipergrafo directo.
Bus Bus Bus
Cluster Bus Cluster Bus
 

Global Bus

Device

Device

Device

(a)

(b)

Figura 5.45: Redes H bridas. (a) Una red multibus. (b) Una jerarqu de dos niveles de a buses.

Redes multibus Debido al ancho de banda limitado que proporcionan las redes de medio compartido, stas slo son capaz de soportar un nmero pequeo de dispositivos, tiene una distancia e o u n limitada, y no es escalable. Algunos investigadores han estudiado cmo podr elimio a narse ese cuello de botella. Una aproximacin para incrementar el ancho de banda de la o red se muestra en la gura 5.45a. Sin embargo, los problemas de cableado y el coste del interface hacen que sea de poca utilidad para el diseo de multiprocesadores. Debido n a las limitaciones elctricas de la tecnolog del encapsulado, es poco probable tener e a una red multibus con ms de cuatro buses. Sin embargo, utilizando otras tecnolog a as de empaquetado como la multiplexacin por divisin de la longitud de onda en bra o o ptica hace posible integracin de mltiples buses. o o u Ingenier Informtica a a Universidad de Valencia

92 Redes jerrquicas a

Multiprocesadores

Otra aproximacin para incrementar el ancho de banda de la red es la que se muestra o en la gura 5.45b. Diferentes buses se interconectan mediante routers o puentes para transferir informacin de un lado a otro de la red. Estos routers o puentes pueden ltrar o el trco de la red examinando la direccin destino de cada mensaje que le llegue. La a o red jerrquica permite expandir el rea de la red y manejar ms dispositivos, pero deja a a a de ser una red de medio compartido. Esta aproximacin se usa para interconectar varias o LANs. Normalmente, el bus global tiene un mayor ancho de banda. En caso contrario, se convertir en un cuello de botella. Esto se consigue utilizando una tecnolog ms a a a rpida. Las redes jerrquicas han sido tambin propuestas como esquema de interconea a e xin para los multiprocesadores de memoria compartida. Tambin en este caso, el bus o e global puede convertirse en un cuello de botella.

Cluster Bus

Cluster Bus

Cluster Bus

Cluster Bus

Cluster Bus

Cluster Bus

Cluster Bus

Cluster Bus

Cluster Bus

Cluster Bus

Cluster Bus

Cluster Bus

Figura 5.46: Malla bidimensional basada en clusters. Redes basadas en clusters Las redes basadas en clusters tambin tienen una estructura jerrquica. Incluso e a pueden considerarse como una subclase dentro de las redes jerrquicas. Estas redes a combinan las ventajas de dos o ms clases de redes a diferentes niveles en la jerarqu a a. Por ejemplo, es posible combinar las ventajas de los buses y los enlaces punto a punto usando buses en el nivel ms bajo de la jerarqu para formar clusters, y una topolog a a a directa para conectar los clusters en el nivel superior. Este es el caso del computador paralelo DASH (Stanford Directory Architecture for Shared-Memory). La gura 5.46 muestra la arquitectura bsica del este computador paralelo. En el nivel inferior cada a cluster consta de cuatro procesadores conectados mediante un bus. En el nivel superior, una malla 2-D conecta los clusters. La capacidad broadcast del bus se usa a nivel de cluster para implementar un protocolo snoopy para mantener la coherencia de la cach. e La red directa en el nivel superior elimina la limitacin del ancho de banda de un bus, o incrementando considerablemente la escalabilidad de la mquina. a Es posible realizar otras combinaciones. En lugar de combinar buses y redes directas, el multiprocesador HP/Convex Exemplar combinan redes directas e indirectas. Este multiprocesador consta de crossbar no bloqueantes de tamao 5 5 en en nivel n inferior de la jerarqu conectando cuatro bloques funcionales y un interface de E/S a, Ingenier Informtica a a Universidad de Valencia

5.6 Generalidades sobre las redes de interconexin o

93

para forma un cluster o hipernodo. Cada bloque funcional consta de dos procesadores, dos bancos de memoria e interfaces. Estos hipernodos se conectan a un segundo nivel denominado interconexin toroidal coherente formada por mltiples anillos usando el o u Interface de Coherencia Escalable (SCI). Cada anillo conecta un bloque funcional de todos hipernodos. En el nivel inferior de la jerarqu el crossbar permite a todos los a, procesadores dentro del hipernodo acceder a los mdulos de memoria entrelazada de o ese hipernodo. En el nivel superior, los anillos implementan un protocolo de coherencia de la cach. e

Figura 5.47: Una hipermalla bidimensional.

Otras topolog hipergrafo as Se han propuesto muchas otras topolog h as bridas. Entre ellas, una clase particularmente interesante en la de hipermallas. Una hipermalla es una topolog regular basada a en un conjunto de nodos dispuestos en varias dimensiones. En lugar de existir conexiones directas entre los vecinos de cada dimensin, cada nodo est conectado a todos lo o a nodos de la dimensin a travs de un bus. Existen varias formas de implementar una o e hipermalla. La ms directa consiste en conectar todos los nodo de cada dimensin a a o travs de un bus compartido. La gura 5.47 muestra una hipermalla 2-D. En esta red, e los buses estn dispuestos en dos dimensiones. Cada nodo se conecta a un bus en cada a dimensin. Esta topolog fue propuesta por Wittie2 , y se le denomina spanning-bus o a hypercube. La misma tiene un dimetro muy pequeo, y la distancia media entre noa n dos escala muy bien en funcin del tamao de la red. Sin embargo, el ancho de banda o n total no escala bien. Adems, los frecuentes cambios en el maestro del bus causan una a sobrecarga signicativa. Una implementacin alternativa que elimina las restricciones sealadas arriba cono n siste en reemplazar el bus compartido que conecta los nodos a lo largo de una dimensin o dada por un conjunto de tantos buses como nodos existan en esa dimensin. Esta es o la aproximacin propuesta en la Distributed Crossbar Switch Hypermesh (DCSH). La o
L. D. Wittie. Communications structures for large networks of microcomputers. IEEE Transactions on Computers, vol C-29, pp. 694-702, August 1980.
2

Ingenier Informtica a a

Universidad de Valencia

94
Single-Source Buses

Multiprocesadores

Switch Node

Switch Node

Switch Node

Switch Node

Figura 5.48: Una hipermalla unidimensional con conmutador crossbar distribuido. gura 5.48 muestra una dimensin de la red. Cada bus es controlado por un unico nodo. o Por tanto, no hay cambios en la pertenencia del bus. Adems, el ancho de banda escala a con el nmero de nodos. Los dos principales problemas, sin embargo, son el alto nmero u u de buses necesarios y el alto nmero de puertos de entrada y salida que necesita cada u nodo.

5.7.
5.7.1.

Redes de interconexin para multiprocesadores o


Redes de medio compartido. Buses

Un bus de sistema est formado por un conjunto de conductores para la transaccin a o de datos entre procesadores, mdulos de memoria, y dispositivos perifricos conectados o e al bus. En el bus slo puede haber una transaccin a un tiempo entre una fuente o o (maestro) y uno o varios destinos (esclavos). En el caso de que varios maestros quieran realizar transacciones, la lgica de arbitraje del bus debe decidir quien ser el siguiente o a que consiga el bus y realice la transaccin. o Por esta razn a los buses digitales se les llama buses de contencin o buses de tiempo o o compartido. Un sistema basado en bus tiene un coste bajo comparado con otros sistemas de conexin. Su uso est muy extendido en la industria y existen varios estndares del o a a IEEE disponibles. El bus es un camino de comunicaciones comn entre procesadores, memoria y los u subsistemas de entrada/salida. El bus se realiza en la mayor de los casos sobre una a placa de circuito impreso. Las tarjetas con los procesadores, memorias, etc. se conectan a este circuito impreso o placa madre a travs de conectores o cables. e El multiprocesador basado en bus es uno de los sistemas multiprocesador ms utilia zados en computadores de prestaciones medias. Ello es debido a su bajo coste, facilidad de diseo, etc. El principal problema que tienen es su baja escalabilidad lo que no pern mite tener sistemas con muchos procesadores de forma eciente. Dependiendo del ancho de banda del bus y de los requisitos de los procesadores que incorpora, un bus puede albergar entre 4 y 16 procesadores de forma eciente. Por encima de estos nmeros u mximos, que dependen del procesador y el bus, el canal de conexin, en este caso el a o bus, se convierte en el cuello de botella del sistema. A pesar de esto, y dado que los requisitos de la mayor de los sistemas informticos a a no necesitan de muchos procesadores, se suele utilizar el sistema basado en bus por su bajo coste y facilidad de diseo. Incluso en sistemas ms complejos se sigue utilizando n a Ingenier Informtica a a Universidad de Valencia

5.7 Redes de interconexin para multiprocesadores o

95

el bus, de manera que para aumentar la escalabilidad del sistema se disponen varios buses formando una jerarqu o bien, se interconectan varios buses entre s a travs de a, e una red. Hay varios estndares de buses disponibles para el diseador. Muchas veces estos a n buses han surgido a partir de un sistema concreto y se ha intentado luego que fuera lo ms estndar posible con los problemas que este tipo de pol a a tica suele acarrear. Ejemplos de esto los encontramos en el bus del PC, que actualmente es obsoleto, o el popular VME con sus sucesivas extensiones que sigue siendo, a pesar de todo, el bus ms utilizado en sistemas empotrados a medida. a Para evitar los problemas del paso del tiempo, y garantizar la portabilidad del bus independientemente del procesador, han aparecido en los ultimos tiempos buses que son independientes de una arquitectura espec ca y que adems han sido ideados para hacer a frente a los sucesivos avances tecnolgicos. Un ejemplo de bus de este tipo es el bus de o altas prestaciones Futurebus+, que es el estndar 896 del IEEE. Este bus fue creado a por un grupo de trabajo a partir de una hoja en blanco, sin tener en cuenta ningn u procesador en particular, y con la intencin de denir un bus de muy altas prestaciones o que hiciera frente a sucesivos avances tecnolgicos. Esta labor no ha sido sencilla y de o hecho se ha tardado entre 10 y 15 aos, desde que surgi la idea, en tener una denicin n o o completa del bus.

5.7.2.

Redes indirectas

Para aplicaciones de propsito general es necesario el uso de conexiones dinmicas o a que puedan soportar todos los patrones de comunicacin dependiendo de las demandas o del programa. En vez de usar conexiones jas, se utilizan conmutadores y rbitros en a los caminos de conexin para conseguir la conectividad dinmica. Ordenados por coste o a y rendimiento, las redes dinmicas principales son los buses, las redes de conexin mula o tietapa (MIN Multistage Interconnection Network), y las redes barras de conmutadores. El precio de estas redes es debido al coste de los cables, conmutadores, rbitros, a y conectores. El rendimiento viene dado por el ancho de banda de la red, la tasa de transmisin de datos, la latencia de la red, y los patrones de comunicacin soportados. o o Las redes indirectas se pueden modelar mediante un grafo G(N, C) donde N es el conjunto de conmutadores, y C es el conjunto de enlaces unidireccionales o bidireccionales entre conmutadores. Para el anlisis de la mayor de las propiedades, no es a a necesario incluir los nodos de procesamiento en el grafo. Este modelo nos permite estudiar algunas propiedades interesantes de la red. Dependiendo de las propiedades que se estn estudiando, un canal bidireccional podr ser modelado como un l e a nea o como dos arcos en direcciones opuestas (dos canales unidireccionales). Cada conmutador en una red indirecta puede estar conectado a cero, uno, o ms a procesadores. Unicamente los conmutadores conectados a algn procesador pueden ser u el origen o destino de un mensaje. Adems, la transmisin de datos de un nodo a otro a o requiere atravesar el enlace que une el nodo origen al conmutador, y el enlace entre el ultimo conmutador del camino recorrido por el mensaje y el nodo destino. Por lo tanto, la distancia entre dos nodos es la distancia entre los conmutadores que conectan esos nodos ms dos. De manera similar, el dimetro de la red, denido como la mxima a a a distancia entre dos nodos de la red, es la mxima distancia entre dos conmutadores a conectados a algn nodo ms dos. Obsrvese que la distancia entre dos nodos conectados u a e Ingenier Informtica a a Universidad de Valencia

96 a travs de un unico conmutador es dos. e

Multiprocesadores

Como ya se vio en el cap tulo dedicado a las redes, las redes de interconexin, y en el o caso que nos ocupa ahora, las redes indirectas, pueden caracterizarse por tres factores: topolog encaminamiento y conmutacin. La topolog dene cmo los conmutadores a, o a o estn interconectados a travs de los canales, y puede modelarse con un grafo como a e el indicado anteriormente. Para una red indirecta con N nodos, la topolog ideal coa nectar esos nodos a travs de un unico conmutador de N N . A dicho conmutador a e se le conoce con el nombre de crossbar. Sin embargo, el nmero de conexiones f u sicas de un conmutador est limitado por factores hardware tales como el nmero de pins a u disponibles y el la densidad mxima del cableado. Estas dicultades imposibilitan el a uso de crossbar en redes de gran tamao. Como consecuencia, se ha propuesto un gran n nmero de topolog alternativas. u as En esta seccin nos centraremos en las diferentes topolog existentes de redes o as indirectas, as como los algoritmos de encaminamiento utilizados en estas redes.

5.7.3.

Red de barra cruzada

El mayor ancho de banda y capacidad de interconexin se consigue con la red de o barra cruzada. Una red de barra cruzada se puede visualizar como una red de una sola etapa de conmutacin. Los conmutadores de cada cruce dan las conexiones dinmicas o a entre cada par destino-fuente, es decir, cada conmutador de cruce puede ofrecer un camino de conexin dedicado entre un par. Los conmutadores se pueden encender o o apagar (on/o) desde el programa. Una barra cruzada genrica de conmutadores se e muestra en la gura 5.49, donde los elementos V (vertical) y H (horizontal) pueden ser indistintamente procesadores, memorias, etc. Por ejemplo son t picas las conguraciones de procesador con memoria compartida, donde los mdulos verticales son todo o procesadores y los horizontales memorias, o al revs. e
V1 V2 V3

Vn

H1

H2

H3

Hn

Figura 5.49: La red de conmutacin en barra cruzada. o Hay que hace notar, para el caso de multiprocesadores con memoria compartida, que un mdulo de memoria slo puede satisfacer una peticin del procesador cada o o o vez. Cuando varias peticiones llegan al mismo mdulo de memoria, la propia red debe o resolver el conicto; el comportamiento de cada barra en el conmutador de barra cruzada es muy parecido al de un bus. Sin embargo, cada procesador puede generar una secuencia Ingenier Informtica a a Universidad de Valencia

5.7 Redes de interconexin para multiprocesadores o

97

de direcciones para acceder a varios mdulos de memoria de forma simultnea. Por lo o a tanto, tal como se muestra en la gura 5.49 suponiendo que los V son procesadores y los H memorias, slo un conmutador puede activarse en cada columna. Sin embargo, o varios conmutadores en diferentes columnas se pueden activar simultneamente para a soportar accesos a memoria paralelos o entrelazados. Otra aplicacin de la red de barra cruzada es la comunicacin entre procesadores. La o o barra cruzada entre procesadores permite conexiones por permutacin entre procesadoo res. Slo conexiones uno a uno son permitidas, por lo tanto, una barra cruzada n n o conecta como mucho n pares a un tiempo. Esta es la diferencia con la barra cruzada entre procesadores y memoria. Ambos tipos de barras cruzadas tienen operaciones y propsitos diferentes. o Las redes de barras cruzadas (crossbar ) permiten que cualquier procesador del sistema se conecte con cualquier otro procesador o unidad de memoria de tal manera que muchos procesadores pueden comunicarse simultneamente sin contencin. Es posible a o establecer una nueva conexin en cualquier momento siempre que los puertos de entrada o y salida solicitados estn libres. Las redes de crossbar se usan en el diseo de multiproe n cesadores de pequea escala pero alto rendimiento, en el diseo de routers para redes n n directas, y como componentes bsicos en el diseo de redes indirectas de gran escala. Un a n crossbar se puede denir como una redes conmutada con N entradas y M salidas, que permite hasta m n{N, M } interconexiones punto a punto sin contencin. La gura 5.49 o muestra un red crossbar de N N . Aunque lo normal es que N y M sean iguales, no es extrao encontrar redes en las que N y M dieren, especialmente en los crossbar que n conectan procesadores y mdulos de memoria. o El coste de una red de este tipo es O(N M ), lo que hace que sea prohibitiva para valores grandes de N y M . Los crossbars han sido utilizados tradicionalmente en multiprocesadores de memoria compartida de pequea escala, donde todos los procesadores n pueden acceder a la memoria de forma simultnea siempre que cada procesador lea de, o a escriba en, un modulo de memoria diferente. Cuando dos o ms procesadores compiten a por el mismo mdulo de memoria, el arbitraje deja proceder a un procesador mientras o que el otro espera. El rbitro en un crossbar se distribuye entre todos los puntos de a conmutacin que conectan a la misma salida. Sin embargo, el esquema de arbitraje o puede ser menos complejo que en el caso de un bus, ya que los conictos en un crossbar son la excepcin ms que la regla, y por tanto ms fciles de resolver. o a a a Para una red de barras cruzadas con control distribuido, cada punto de conmutacin o puede estar en uno de los cuatro estados que se muestran en la gura 5.50. En la gura 5.50a, la entrada de la la en la que se encuentra el punto de conmutacin tiene o acceso a la correspondiente salida mientras que las entradas de las las superiores que solicitaban la misma salida estn bloqueadas. En la gura 5.50b, a una entrada de una a la superior se le ha permitido el acceso a la salida. La entrada de la la en la que se encuentra el punto de conmutacin no ha solicitado dicha salida, y puede ser propagada o a otros conmutadores. En la gura 5.50c, una entrada de una la superior tiene acceso a la salida. Sin embargo, la entrada de la columna en la que se encuentra en punto de conmutacin tambin ha solicitado esa salida y est bloqueada. La conguracin o e a o de la gura 5.50(d) slo es necesaria si el crossbar tiene soporte para comunicaciones o multicast (uno a muchos). Los avances en VLSI permiten la integracin del hardware para miles de conmutao dores en un unico chip. Sin embargo, el nmero de pines de un chip VLSI no puede u excederse de algunos centenares, lo que restringe el tamao del mayor crossbar que n Ingenier Informtica a a Universidad de Valencia

98

Multiprocesadores

(a)

(b)

(c)

(d)

Figura 5.50: Estados de un punto de conmutacin en una red de barras cruzadas. o

puede integrarse en un unico chip VLSI. Crossbars de mayor tamao se pueden con n seguir mediante la particin del mismo en otros de menor tamao, cada uno de ellos o n implementado usando un unico chip. Por lo tanto, un crossbar de N N se puede implementar con (N/n)(N/n)crossbar de tamao n n. n

5.7.4.

Redes de interconexin multietapa (MIN) o

Los MIN (Multistage Interconnection Networks se han utilizado tanto en mquinas a MIMD como SIMD. La gura 5.51 muestra una red multietapa generalizada. Un nmero u de a b conmutadores se usa en cada etapa. Entre etapas adyacentes se utiliza una red de interconexin ja. Los conmutadores pueden ser programados dinmicamente para o a establecer las conexiones deseadas entre las entradas y salidas. Las redes de interconexin multietapa (MINs) conectan dispositivos de entrada a o dispositivos de salida a travs de un conjunto de etapas de conmutadores, donde cada e conmutador es una red de barra cruzada. El nmero de etapas y los patrones de conexin u o entre etapas determinan la capacidad de encaminamiento de las redes. Las MINs fueron inicialmente propuestas por las compa de telfonos y posteriornas e mente para los procesadores matriciales. En estos casos, un controlador central establece el camino entre la entrada y la salida. En casos en donde el nmero de entradas es igual u al nmero de salidas, cada entrada puede transmitir de manera s u ncrona un mensaje a una salida, y cada salida recibir un mensaje de exactamente una entrada. Este patrn o de comunicacin unicast puede representarse mediante una permutacin de la direccin o o o asociada a la entrada. Debido a esta aplicacin, las MINs se han popularizado como o redes de alineamiento que permiten acceder en paralelo a arrays almacenados en bancos de memoria. El almacenamiento del array se divide de tal manera que se permita un acceso sin conictos, y la red se utiliza para reordenar el array durante el acceso. Estas redes pueden congurarse con un nmero de entradas mayor que el nmero de u u salidas (concentradores) y viceversa (expansores). Por otra parte, en multiprocesadores as ncronos, el control centralizado y el encaminamiento basado en la permutacin es o inexible. En este caso, se requiere un algoritmo de encaminamiento que establezca un camino a travs de los diferentes estados de la MIN. e Dependiendo del esquema de interconexin empleado entre dos estados adyacentes y o el nmero de estados, se han propuesto varias MINs. Las MINs permiten la construccin u o de multiprocesadores con centenares de procesadores y han sido utilizadas en algunas mquinas comerciales. a Ingenier Informtica a a Universidad de Valencia

5.7 Redes de interconexin para multiprocesadores o

99

axb conmut. axb conmut.

axb conmut. axb conmut.

axb conmut. axb conmut.

CEE 1

CEE 2

CEE n

axb conmut. Etapa 1

axb conmut. Etapa 2

axb conmut. Etapa n

Figura 5.51: Estructura generalizada de una interconexin multietapa (MIN). o Un modelo MIN generalizado Existen muchas formas de interconectar etapas adyacentes. La gura 5.51 muestra una red de interconexin general con N entradas y M salidas. La red consta de g etapas, o G0 a Gg1 . Como se muestra en la gura 5.51, cada etapa, Gi , tiene wi conmutadores de tamao ai,j bi,j , donde 1 j wi . As la etapa Gi consta de pi entradas y qi n , salidas, donde
wi Switches a i, 1 b i, 1

p i = qi 1
Connection Links

a i, 2

b i, 2

q i =pi + 1
Connection Links

a i, w i Stage Gi

b i, w i

Ci

Ci+1

Figura 5.52: Visin detallada de una etapa Gi . o


wi wi

pi =
j=1

ai,j

qi =
j=1

bi,j

La conexin entre dos etapas adyacentes Gi1 y Gi , denotada por Ci , dene el patrn o o de conexin para pi = qi1 enlaces, donde p0 = N y qg1 = M . Por lo tanto, una MIN o Ingenier Informtica a a Universidad de Valencia

100 puede representarse como C0 (N )G0 (w0 )C1 (p1 )G1 (w1 ) . . . Gg1 (wg1 )Cg (M )

Multiprocesadores

Un patrn de conexin Ci (pi ) dene cmo deben de estar conectados los enlaces pi o o o entre las qi1 = pi salidas de la etapa Gi1 y las pi entradas de la etapa Gi . Patrones diferentes de conexin dan lugar a diferentes caracter o sticas y propiedades topolgicas o de las MINs. Los enlaces de Ci estn numerados de 0 a pi 1. a Desde un punto de vista prctico, es interesante que todos los conmutadores sean a idnticos, para amortizar el coste de diseo. Las redes Banyan son una clase de MINs e n con la propiedad de que existe un unico camino entre cada origen y destino. Una red Delta N-nodo es una subclase de red Banyan, que se construye a partir de k k conmutadores en n etapas. donde cada etapa contiene N conmutadores. Muchas de las k redes multietapa ms conocidas, como la Omega, Inversa, Cubo, Mariposa, y de L a nea base, pertenecen a la clase de redes Delta, habindose demostrado ser topolgica y e o funcionalmente equivalentes. En el caso de que los conmutadores tengan el mismo nmero de puertos de entrada u y salida, las MINs tambin tendrn el mismo nmero de puertos de entrada y salida. e a u Dado que existe una correspondencia uno a uno entre las entradas y las salidas, a estas conexiones se les denominan permutaciones. A continuacin deniremos cinco o permutaciones bsicas. Aunque estas permutaciones fueron originariamente denidas a para redes con conmutadores 2 2, la mayor de las deniciones se pueden extender a pare redes con conmutadores k k y que tienen N = k n entradas y salidas, donde n es un entero. Sin embargo, algunas de estas permutaciones slo estn denidas para el o a n caso de que N sea potencia de dos. Con N = k puertos, sea X = xn1 xn2 . . . x0 la codicacin de un puerto arbitrario, 0 X N 1, donde 0 xi k1, 0 i n1. o

5.7.5.

Tipos de etapas de permutacin para MIN o

Las diferentes clases de redes multietapa se diferencian en los mdulos conmutadores o empleados y en los patrones de la conexin entre etapas (CEE). El mdulo conmutador o o ms simple es el 2 2, y los patrones para la CEE ms usados suelen ser el barajado a a perfecto, mariposa, barajado multiv barra cruzada, conexin cubo, etc. Veamos a a, o continuacin algunos de estos patrones jos de interconexin. o o Conexin de barajado perfecto o El patrn de barajado perfecto tiene un amplio campo de aplicacin en las intercoo o nexiones multietapa. Fue originalmente propuesto para calcular la transformada rpida a de Fourier. La permutacin entre los elementos de entrada y salida de la red est basada o a en la mezcla perfecta de dos montones de cartas iguales que consiste en intercalar una a una las cartas de un montn con las del otro montn. La red de barajado perfecto toma o o la primera mitad de las entradas y la entremezcla con la segunda mitad, de manera que la primera mitad pasa a las posiciones pares de las salidas, y la segunda mitad a las impares. La permutacin k-baraje perfecto, k , se dene por o k (X) = (kX + Ingenier Informtica a a kX ) mod N N Universidad de Valencia

5.7 Redes de interconexin para multiprocesadores o Un modo ms slido de describir dicha conexin es a o o k (xn1 xn2 . . . x1 x0 ) = xn2 . . . x1 x0 xn1

101

La conexin k-baraje perfecto realiza un desplazamiento c o clico hacia la izquierda de los d gitos de X en una posicin. Para k = 2, esta accin se corresponde con el barajado o o perfecto de una baraja de N cartas, como se demuestra en la gura 5.53a para el caso de N = 8. El baraje perfecto corta la baraja en dos partes y las entremezcla empezando con la segunda parte. El baraje perfecto inverso realiza la accin contraria como se o dene a continuacin: o k (xn1 xn2 . . . x1 x0 ) = x0 xn1 . . . x2 x1
0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111) 0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111) 0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111) 0(000) 0(000) 1(001) 1(001) 2(010) 2(010) 3(011) 3(011) 4(100) 4(100) 5(101) 5(101) 6(110) 6(110) 7(111) 7(111)
1

0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111)

(a) Perfect Shuffle

(b) Inverse Perfect Shuffle

(c) Bit Reversal

Figura 5.53: Barajado perfecto, barajado perfecto inverso, y bit reversal para N = 8. Suponiendo que las entradas tienen la forma an1 an2 . . . a1 a0 , donde ai es el bit i-simo de la direccin de cada entrada, el barajado perfecto realiza la siguiente transe o formacin en la direccin: o o Baraja(an1 an2 . . . a1 a0 ) = an2 an3 . . . a1 a0 an1 (5.1) es decir, los bits de la direccin son desplazados c o clicamente una posicin hacia la o izquierda. La inversa del barajado perfecto los mueve c clicamente hacia la derecha. Conexin de d o gito inverso (Digit Reversal Connection) La permutacin de dgito inverso k est denida por o a k (xn1 xn2 . . . x1 x0 ) = x0 x1 . . . xn2 xn1 A esta permutacin se le suele denominar bit inverso, indicando claramente que fue o propuesta para k = 2. Sin embargo, la denicin es tambin vlida para k > 2. La o e a gura 5.53c muestra una conexin de bit inverso para el caso k = 2 y N = 8. o Conexin mariposa o La i-sima k-aria permutacin mariposa ik , para 0 i n 1, se dene como e o ik (xn1 . . . xi+1 xi xi1 . . . x1 x0 ) = xn1 . . . xi+1 x0 xi1 . . . x1 xi La i-sima permutacin mariposa intercambia los d e o gitos 0 e i-simo del e ndice. La gura 5.54 muestra la conexin mariposa para k = 2, i = 0, 1, 2 y N = 8. Observar que o k o o 0 dene una conexin uno a uno denominada conexin identidad, I. Ingenier Informtica a a Universidad de Valencia

102
0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111) 0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111) 0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111)

Multiprocesadores
0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111)

(a) Second Butterfly

(b) First Butterfly

(c) Zeroth Butterfly

Figura 5.54: La conexin mariposa para N = 8. o Conexin Cubo o por La i-sima conexin cubo Ei , para 0 i n 1, se dene unicamente para k = 2, e o

Ei (xn1 . . . xi+1 xi xi1 . . . x0 ) = xn1 . . . xi+1 xi xi1 . . . x0 La i-sima conexin cubo complementa el i-simo bit del e o e ndice. La gura 5.55 muestra la conexin cubo para i = 0, 1, 2 y N = 8. A E0 tambin se le denomina conexin o e o intercambio.
0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111) 0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111) 0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111) 0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111)

(a) Second Cube

(b) First Cube

(c) Zeroth Cube

Figura 5.55: La conexin cubo para N = 8. o Conexin en L o nea Base


k La i-sima k-aria permutacin en l e o nea base i , para 0 i n 1, se dene por k i (xn1 . . . xi+1 xi xi1 . . . x1 x0 ) = xn1 . . . xi+1 x0 xi xi1 . . . x1

La i-sima conexin de l e o nea base realiza un desplazamiento c clico del los i + 1 d gitos menos signicativos del ndice una posicin a la derecha. La gura 5.56 muestra una o k conexin en l o nea base para k = 2, i = 0, 1, 2 y N = 8. Observar que 0 dene la conexin identidad I. o Ingenier Informtica a a Universidad de Valencia

5.7 Redes de interconexin para multiprocesadores o


0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111) 0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111) 0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111) 0(000) 1(001) 2(010) 3(011) 4(100) 5(101) 6(110) 7(111)

103

(a) Second Baseline

(b) First Baseline

(c) Zeroth Baseline

Figura 5.56: La conexin en l o nea base para N = 8.

5.7.6.

Clasicacin de las redes MIN o

Dependiendo de la disponibilidad de caminos para establecer nuevas conexiones, las redes multietapa se han dividido tradicionalmente en tres clases: 1. Bloqueantes. La conexin entre un par entrada/salida libre no siempre es posible o debido a conictos entre las conexiones existentes. T picamente, existe un unico camino entre cada par entrada/salida, lo que minimiza el numero de conmutadores y los estados. Sin embargo, es posible proporcionar mltiples caminos para reducir u los conictos e incrementar la tolerancia a fallos. A estas redes bloqueantes tambin e se les denominan multicamino. No bloqueantes. Cualquier puerto de entrada puede conectarse a cualquier puerto de salida libre sin afectar a las conexiones ya existentes. Las redes no bloqueantes tienen la misma funcionalidad que un crossbar. Estar redes requieren que existan mltiples caminos entre cada entrada y salida, lo que lleva a etapas adicionales. u Recongurables. Cada puerto de entrada puede ser conectado a cada puerto de salida. Sin embargo, las conexiones existentes pueden requerir de un reajuste en sus caminos. Estas redes tambin necesitan de la existencia de mltiples caminos e u entre cada entrada y salida pero el numero de caminos y el coste es menor que en el caso de redes no bloqueantes.

2.

3.

La redes no bloqueantes son caras. Aunque son ms baratas que un crossbar del mismo a tamao, su costo es prohibitivo para tamaos grandes. El ejemplo ms conocido de red n n a no bloqueante multietapa es la red Clos, inicialmente propuesta para redes telefnicas. o Las redes recongurables requieren menos estados o conmutadores ms sencillos que a una red no bloqueante. El mejor ejemplo de red recongurable es la red Bene. La s n gura 5.57 muestra de una Bene de 8 8. Para 2 entradas, esta red necesita 2n 1 s etapas, y proporciona 2n1 caminos alternativos. Las redes recongurables requieren un controlador central para recongurar las conexiones, y fueron propuestas para los procesadores matriciales (array processors). Sin embargo, las conexiones no se pueden recongurar fcilmente en multiprocesadores, ya que el acceso de los procesadores a la a red es as ncrono. As las redes recongurables se comportan como redes bloqueantes , cuando los accesos son as ncronos. Nos centraremos en la redes bloqueantes. Ingenier Informtica a a Universidad de Valencia

104
C0 000 001 010 011 100 101 110 111 G0 C1 G1 C2 G2 C3 G3 C4

Multiprocesadores
G4 C 5 000 001 010 011 100 101 110 111

Figura 5.57: Una red Bene 8 8. s Dependiendo del tipo de canales y conmutadores, las redes multietapa pueden dividirse en dos clases: 1. 2. MINs unidireccionales. Los canales y conmutadores son unidireccionales. MINs bidireccionales. Los canales y conmutadores son bidireccionales. Esto implica que la informacin se puede transmitir simultneamente en direcciones opuestas o a entre conmutadores vecinos.

Redes de Interconexin Multietapa Unidireccionales o Los bloques bsicos de construccin de una red multietapa unidireccional son los a o conmutadores unidireccionales. Un conmutador a b es un crossbar con a entradas y b salidas. Si cada puerto de entrada puede conectarse a exactamente un puerto de salida, a lo ms existirn m a a n{a, b} conexiones simultneas. Si cada puerto de entrada a puede conectarse a varios puertos de salida, se necesita un diseo ms complicado n a para soportar la comunicacin multicast ( uno a varios). En el modo de comunicacin o o broadcast (uno a todos), cada puerto puede conectarse a todos los puertos de salida. La gura 5.58 muestra los cuatro posibles estados de un conmutador 2 2. Los ultimos dos estados se usan para soportar las comunicaciones uno a muchos y uno a todos.

(a) Straight

(b) Exchange

(c) Lower Broadcast

(d) Upper Broadcast

Figura 5.58: Cuatro posibles estados de un conmutador 2 2. En las redes multietapa con N = M , es habitual usar conmutadores con el mismo nmero de puertos de entrada y de salida (a = b). Si N > M , se usarn conmutau a dores con a > b. A estos conmutadores tambin se les denominan conmutadores de e concentracin. En el caso de N < M se usarn conmutadores de distribucin con a < b. o a o Se puede demostrar que con N puertos de entrada y salida, una red multietapa unidireccional con conmutadores k k necesita al menos logk N etapas para que Ingenier Informtica a a Universidad de Valencia

5.7 Redes de interconexin para multiprocesadores o

105

C0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

G0

C1

G1

C2

G2

C3

G3 C4 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

C0

G0

C1

G1

C2

G2

C3

G3 C4 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

(a) Multistage Baseline Network

(b) Multistage Butterfly Network

C0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

G0

C1

G1

C2

G2

C3

G3 C4 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

C0

G0

C1

G1

C2

G2

C3

G3 C4 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

(c) Multistage Cube Network

(d) Omega Network

Figura 5.59: Cuatro redes de interconexin unidireccionales multietapa de 16 16. o

Ingenier Informtica a a

Universidad de Valencia

106

Multiprocesadores

exista un camino entre cualquier puerto de entrada y de salida. Aadiendo etapas n adicionales es posible utilizar caminos alternativos para enviar un mensaje desde un puerto de entrada a un puerto de salida. Cualquier camino a travs de la MIN cruza e todos las etapas. Por tanto, todos los caminos tienen la misma longitud. A continuacin se consideran cuatro topolog equivalentes en redes multietapa o as unidireccionales. Estas redes pertenecen a la familia de redes Delta. Redes multietapa de l nea base (Baseline MINs). En una red multietapa de l nea base, el patrn de conexin Ci viene descrito por la (n i)-sima permutacin o o e o k en l nea base ni para 1 i n. El patrn de conexin para Co viene dado por o o k . La red de lnea base es un ejemplo de red con una forma muy conveniente de algo ritmo de autoencaminamiento, en el que los bits sucesivos de la direccin de destino o controlan las sucesivas etapas de la red. Cada etapa de la red divide el rango de encaminamiento en dos. La gura 5.60 muestra este tipo de red suponiendo 4 entradas y 4 salidas. El funcionamiento consiste en que la primera etapa divide el camino en dos v uno hacia la parte baja de la red, y el otro hacia la parte alta. Por as, tanto, el bit ms signicativo de la direccin de destino puede usarse para dirigir la a o entrada hacia la mitad alta de la segunda etapa si el bit es 0, o hacia la mitad baja si el bit es 1. La segunda etapa divide la ruta entre el cuarto ms alto o el segundo a cuarto si la mitad ms alta se hab seleccionado, o el cuarto ms bajo o el primero a a a si la mitad seleccionada era la baja. El segundo bit ms signicativo es usado para a decidir qu cuarto elegir. Este proceso se repite para todas las etapas que haya. Es e evidente que el nmero de bits necesarios para la direccin de las entradas dar el u o a nmero de etapas necesario para conectar completamente la entrada con la salida. u Por ultimo, el bit menos signicativo controla la ultima etapa. Este tipo de redes autorutadas sugiere la transmisin por conmutacin de paquetes. o o
000 001 Entradas 010 011 100 101 110 111 000 001 010 011 100 101 110 111

Figura 5.60: Red de l nea base 8 8. Es fcil ver que una red de este tipo se genera de forma recursiva, ya que se van a dividiendo las posibles rutas en mitades donde cada mitad es a su vez una red de l nea base y as sucesivamente hasta la ultima etapa. Los conmutadores son 2 2 con dos posibles estados, directo y cruzado, entre las entradas y salidas. Redes multietapa mariposa (Buttery MINs). En una red multietapa mariposa, el patrn de conexin Ci viene descrito por la i-sima permutacin mariposa ik para o o e o k 0 i n 1. El patrn de conexin de Cn es 0 . o o Redes multietapa cubo (Cube MINs). En una red multietapa cubo, el patrn o k de conexin Ci viene descrito por la (n i)-sima permutacin mariposa ni para o e o Ingenier Informtica a a Universidad de Valencia

Salidas

5.7 Redes de interconexin para multiprocesadores o

107

1 i n. El patrn de conexin de Co es k . o o Red Omega. En una red omega, el patrn de conexin Ci viene descrito por la o o permutacin k-baraje perfecto k para 0 i n 1. El patrn de conexin de o o o k Cn es es 0 . As todos los patrones de conexin menos el ultimo son idnticos. El , o e ultimo patrn de conexin no produce una permutacin. o o o La gura 5.61(b) muestra la red Omega para 16 elementos de entrada y 16 de salida. Tal y como se coment anteriormente, son necesarios log2 a etapas siendo a o el nmero de entradas a la red. Como cada etapa necesita n/2 conmutadores, la red u total requiere n(log2 n)/2 conmutadores, cada uno controlado de forma individual. La red Omega se propuso para el procesamiento de matrices utilizando conmutadores de cuatro estados (directo, intercambio, el de arriba a todos, y el de abajo a todos) y actualmente se utiliza en sistemas multiprocesadores. Red de barajado/intercambio. Es una red un tanto peculiar basada en la red omega. Para hacer todas las posibles interconexiones con el patrn de barajado, se o puede utilizar una red de recirculacin que devuelve las salidas de nuevo a las entrao das hasta que se consigue la interconexin deseada. Para poder hacer esto se aaden o n cajas de intercambio que no son ms que conmutadores 2 2. La gura 5.61(a) a muestra una red de este tipo para 16 elementos de entrada y 16 de salida. Si hay 2n entradas es necesario un mximo de n ciclos para realizar cualquier permutacin a o entre los elementos de entrada y salida.

Entradas

Entradas

Salidas

(a) Red de barajado-intercambio

(b) Red Omega

Figura 5.61: Redes basadas en el barajado perfecto. La equivalencia topolgica entre estas redes multietapa puede ser vista como sigue: o Consideremos que cada enlace de entrada del primer estado se numera usando una cadena de n d gitos sn1 . . . s0 , donde 0 si k 1 para 0 i n 1. El d gito menos signicativo s0 da la direccin del puerto de entrada en el correspondiente conmutador o y la direccin del conmutador viene dada por sn1 sn2 . . . s1 . En cada etapa, un conmuo tador dado es capaz de conectar cualquier puerto de entrada con cualquier puerto de salida. Esto puede interpretarse como el cambio del valor del d gito menos signicativo de la direccin. Para conseguir conectar cualquier entrada con cualquier salida de la o red, deber amos de ser capaces de cambiar el valor de todos los d gitos. Como cada conmutador slo es capaz de cambiar el d o gito menos signicativo de la direccin, los o Ingenier Informtica a a Universidad de Valencia

Salidas

108

Multiprocesadores

patrones de conexin entre las etapas se denen de tal forma que se permute la posicin o o de los d gitos, y despus de n etapas todos los d e gitos habrn ocupado la posicin menos a o signicativa. Por lo tanto, la MINs denidas arriba dieren en el orden en el que los d gitos de la direccin ocupan la posicin menos signicativa. o o La gura 5.59 muestra la topolog de cuatro redes de interconexin multietapa: (a) a o red baseline, (b) red buttery, (c) red cube, y (d) red omega. Redes de interconexin multietapa bidireccionales o La gura 5.62 ilustra un conmutador bidireccional en donde cada puerto est asoa ciado a un par de canales unidireccionales en direcciones opuestas. Esto implica que la informacin entre conmutadores vecinos puede transmitirse simultneamente en direco a ciones opuestas. Para facilitar la explicacin, supondremos que los nodos procesadores o estn en la parte izquierda de la red, como se muestra en la gura 5.63. Un conmutador a bidireccional soporta tres tipos de conexiones: hacia delante, hacia atrs y de vuelta a (ver gura 5.62). Dado que son posibles la conexiones de vuelta entre puertos del mismo lado del conmutador, los caminos tienen diferentes longitudes. En la gura 5.63 se muestra una MIN mariposa bidireccional de ocho nodos.

Forward

Backward

Turnaround

Figura 5.62: Conexiones en un conmutador bidireccional.


C0
000 001 010 011 100 101 110 111

G0

C1

G1

C2

G2

Nodes

Figura 5.63: Una MIN mariposa bidireccional de ocho nodos. Ingenier Informtica a a Universidad de Valencia

5.7 Redes de interconexin para multiprocesadores o


000

109

S 001
010

D 011
100 101 110 111

Figura 5.64: Caminos alternativos para una MIN mariposa bidireccional de ocho nodos. En las BMINs, los caminos se establecen cruzando etapas hacia delante, despus e estableciendo una conexin de vuelta, y nalmente cruzando los estados en direccin o o hacia atrs. A este mtodo se le denomina encaminamiento de vuelta (turnaround roua e ting). La gura 5.64 muestra dos caminos alternativos desde el nodo S al nodo D en una BMIN mariposa de ocho nodos. Cuando se cruzan las etapas hacia delante, existen varios caminos. En cada conmutador se puede seleccionar cualquiera de sus puertos de salida. Sin embargo, una vez cruzada la conexin de vuelta, existe un unico camino o hasta el nodo destino. En el peor caso, el establecimiento de un camino en una BMIN de n etapas requiere cruzar 2n 1 etapas. Este comportamiento es muy parecido al de las redes Bene. En efecto, la BMIN l s nea base puede considerarse como una red Bene s plegada. En la gura 5.65, se muestra un BMIN mariposa con encaminamiento de vuelta. En un fat tree, los procesadores se localizan en las hojas, y los vrtices internos son cone mutadores. El ancho de banda de la transmisin entre los conmutadores se incrementa o aadiendo ms enlaces en paralelo en los conmutadores cercanos al conmutador ra n a z. Cuando se encamina un mensaje desde un procesador a otro, se env hacia arriba en a el rbol hasta alcanzar el menor antecesor comn de ambos procesadores, y despus se a u e env hacia abajo hacia su destino. a

5.7.7.

Encaminamiento en redes MIN

En esta seccin describiremos diversos aspectos del encaminamiento en redes MINs. o Para procesadores matriciales, un controlador central establece el camino entre la entrada y la salida. En casos donde el nmero de entradas es igual al nmero de salidas, u u cada entrada transmite de forma s ncrona un mensaje a una salida, y cada salida recibe exactamente un mensaje de una entrada. Calcular las conexiones del conmutador para realizar dicha permutacin es una tarea compleja. Adems, algunas permutaciones pueo a den no ser posibles en un paso a travs de la red. En este caso, sern necesarios mltiples e a u pasos de los datos a travs de la red en cuyo caso el objetivo pasa a ser el minimizar e el nmero de pasadas. La complejidad del clculo de las conexiones del conmutador es u a proporcional al nmero de conmutadores. u Por otra parte, en multiprocesadores as ncronos, el control centralizado y el encaIngenier Informtica a a Universidad de Valencia

110

Multiprocesadores

0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101

1110
1111

(a) A 16Node Butterfly BMIN Built with 2 x 2 Switches

Ba

rw Fo

ard

ck wa rd

(b) A 16Node Fat Tree

Figura 5.65: Arbol grueso y BMIN mariposa.

Ingenier Informtica a a

Universidad de Valencia

5.7 Redes de interconexin para multiprocesadores o

111

minamiento por permutacin es poco exible. En este caso es necesario un algoritmo o de encaminamiento para establecer el camino por las diferentes etapas de la MIN. La solucin ms simple consiste en utilizar un encaminamiento en origen. En este caso, el o a nodo origen especica el camino completo. Dado que esta solucin produce una consio derable sobrecarga, nos centraremos en encaminamientos distribuidos. Los algoritmos de encaminamiento para MINs se describirn posteriormente. a Condicin de bloqueo en MINs o En este apartado obtendremos condiciones necesarias y sucientes para que se bloqueen dos circuitos, es decir, necesiten el mismo enlace intermedio. En un sistema con N procesadores, existen exactamente N enlaces entre cada etapa de los kk conmutadores. La red consta de n = logk N , donde cada etapa est compuesta de N conmutadores. Los a k patrones de enlaces intermedios conectan una salida de un conmutador en la etapa i con un entrada de un conmutador de la etapa i + 1. El bloqueo ocurre cuando dos paquetes deben atravesar la misma salida en un conmutador de la etapa i, i = 0, 1, . . . n 1.En cada etapa i, podemos numerar las salidas de dicha etapa desde 0 hasta N 1. A estas salidas se les denominan salidas intermedias en la etapa i. Si pensamos en la red como una caja negra, podemos representarla como se muestra en la gura 5.66 para el caso de una red Omega con conmutadores 2 2. Cada etapa de conmutadores y cada etapa de enlaces puede representarse como una funcin que permuta las entradas. En la o gura se muestra un ejemplo de un camino desde la entrada 6 a la salida 1. Las salidas intermedias para este camino tambin se han marcado. Estas son las salidas 4, 0 y 1 e para los conmutadores de las etapas 0, 1 y 2, respectivamente. Nuestra meta inicial es la siguiente: Dado un par entrada/salida, generar las direcciones de todas las salidas intermedias de ese camino, estas direcciones sern unicas. Dos caminos de entrada/salida a presentan un conicto si atraviesan el mismo enlace intermedio o comparten una salida comn en una etapa intermedia. u A continuacin obtendremos la condicin de bloqueo para la red Omega. Para otras o o redes es posible establecer condiciones equivalentes de manera similar. A partir de ahora todas las numeraciones de las entradas/salidas se representarn en base k. Para facilitar a el anlisis supondremos una red con conmutacin de circuitos. Consideremos que se a o ha establecido un circuito desde sn1 sn2 s1 s0 a dn1 dn2 d1 d0 . Consideremos la primera etapa de enlaces en la gura 5.66. Esta parte de la red establece la siguiente conexin entre sus entradas y salidas. o sn1 sn2 . . . s1 s0 sn2 sn3 . . . s1 s0 sn1 (5.2)

La parte derecha de la ecuacin anterior es la codicacin de la salida en el patrn o o o k-desplazamiento y la codicacin de la entrada al primer nivel de conmutadores. Cada o conmutador slo puede cambiar el d o gito menos signicativo de la codicacin actual. o Despus de la permutacin desplazamiento, ste es sn1 . As que la salida de la primera e o e etapa ser aquella que haga que el d a gito menos signicativo de la codicacin sea igual o a dn1 . Por lo tanto, la conexin entrada/salida establecida en la primera etapa de o conmutadores deber ser aquella que conecta la entrada a la salida como sigue: a sn2 sn3 . . . s1 s0 sn1 sn2 sn3 . . . s1 s0 dn1 (5.3)

La parte derecha de esta expresin es la codicacin de la entrada en la segunda o o Ingenier Informtica a a Universidad de Valencia

112
Omega Network: Structural View

Multiprocesadores

001

Intermediate Output at a Stage

110 Omega Network: Functional View

001

110

Shuffle 0

Switch 0

Shuffle 1

Switch 1

Shuffle 2

Switch 2

Figura 5.66: Vista funcional de la estructura de una red Omega multietapa. etapa de enlaces. Es tambin la salida de la primera etapa de conmutadores y por tanto e la primera salida intermedia. En la gura 5.66 se muestra un camino desde la entrada 6 a la salida 1 que tiene un total de tres salidas intermedias. De forma similar, podemos escribir la expresin de la salida intermedia en la etapa i como o sni2 sni3 . . . s0 dn1 dn2 . . . dni1 (5.4)

Esto es suponiendo que las etapas estn numeradas desde 0 hasta n 1. Ahora a podemos escribir la condicin de bloqueo. Para cualquier entrada/salida (S, D) y (R, T ), o los dos caminos pueden establecerse sin conictos si y slo si, i, 0 i n 1 o sni2 sni3 . . . s0 dn1 dn2 . . . dni1 = rni2 rni3 . . . r0 tn1 tn2 . . . tni1 (5.5)

La deteccin de bloqueos en dos pares de entrada/salida no es tan complicada como o podr parecer a primera vista. Observando la estructura de la condicin de bloqueo a o podemos observar que si los circuitos se bloquean, entonces los d gitos n i 1 menos signicativos de las direcciones origen son iguales y los i+1 d gitos ms signicativos de a las direcciones destino son iguales. Supongamos que tenemos una funcin (S, R) que o devuelve el mayor entero l tal que los l d gitos menos signicativos de S y R son iguales. De forma similar, supongamos que tenemos una funcin (D, T ) que devuelve el mayor o entero m tal que los m d gitos ms signicativos de D y T son iguales. Entonces dos a caminos (S, D) y (R, T ) pueden establecerse sin conictos si y slo si o (S, R) + (D, T ) < n Ingenier Informtica a a (5.6) Universidad de Valencia

5.7 Redes de interconexin para multiprocesadores o

113

donde N = k n . Desde un punto de vista prctico, el bloqueo se puede calcular mea diante secuencias de operaciones de desplazamiento y comparacin, como se indica a o continuacin: o sn1 sn2 . . . s2 s1 s0 dn1 dn2 . . . d3 d2 d1 d0 rn1 rn2 . . . r2 r1 r0 tn1 tn2 . . . t3 t2 t1 t0 Las direcciones de los dos pares entrada/salida se concatenan. Figurativamente, una ventana de tamao n se desplaza sobre ambos pares y se compara el contenido de ambas n ventanas. Si son iguales en algn punto, entonces existe un conicto en alguna etapa. El u orden de ejecucin es de O(logk N ). Para determinar si todos los caminos pueden estao blecerse sin conictos, deber amos realizar O(N 2 ) comparaciones cada una de las cuales tarda O(logk N ) pasos en realizarse dando lugar a un algoritmo de orden O(N 2 logk N ). En comparacin, el mejor algoritmo de conguracin de todos los conmutadores meo o diante un control centralizado necesita un tiempo de O(N logk N ). Sin embargo, cuando se utiliza la formulacin arriba indicada, muy a menudo no es necesario tener en cuenta o el nmero de comparaciones en el peor de los casos. A menudo, la propia estructura u del patrn de comunicaciones puede utilizarse para determinar si existe conicto entre o ellos. Algoritmos de autoencaminamiento para MINs. Una propiedad unica de las redes Delta es la propiedad de autoencaminamiento (selft-routing). Esta propiedad permite que en estas MINs las decisiones de encaminamiento se puedan realizar en funcin de la direccin destino, sin importar la direccin o o o origen. El autoencaminamiento se realiza usando etiquetas de encaminamiento. Para un conmutador k k, existen k puertos de salida. Si el valor de la etiqueta de encaminamiento correspondiente es i (0 i k 1), el paquete correspondiente ser enviado a a travs del puerto i. Para una MIN de n estados, la etiqueta de encaminamiento es e T = tn1 . . . t1 t0 , donde ti controla el conmutador de la etapa Gi . Cada conmutador slo es capaz de cambiar el d o gito menos signicativo de la direccin actual, Por lo tanto, las etiquetas de encaminamiento tendrn en cuenta qu d o a e gito es el menos signicativo en cada etapa, reemplazndolo por el correspondiente d a gito de la direccin destino. Para un destino dado dn1 dn2 . . . d0 , la etiqueta de encaminamieno to en una red mariposa se forma haciendo ti = di+1 para 0 i n 2 y tn1 = d0 . En una MIN cubo, la etiqueta est formada por ti = dni1 para 0 i n1. Finalmente, a en una red Omega, la etiqueta de encaminamiento se forma haciendo ti = dni1 para 0 i n 1. El siguiente ejemplo muestra los caminos seleccionados por el algoritmo de encaminamiento basado en etiquetas para una MIN mariposa de 16 nodos. Ejemplo La gura 5.67 muestra una red MIN de 16 nodos usando conmutadores 2 2, y los caminos seguidos por los paquetes del nodo 0100 al nodo 0011 y del nodo 1010 al nodo 1000. Como se indic anteriormente, la etiqueta o de encaminamiento para un destino dado dn1 dn2 . . . d0 se forma haciendo ti = di+1 para 0 i n2 y tn1 = d0 . As la etiqueta para el destino 0011 , es 1001. Esta etiqueta indica que el paquete debe elegir la salida superior del Ingenier Informtica a a Universidad de Valencia

114
C0 G0 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 C1 G1 C2 G2 C3 G3 C4 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111

Multiprocesadores

Figura 5.67: Seleccin del camino por el algoritmo de encaminamiento basado en etio quetas en una MIN mariposa de 16 nodos. conmutador (puerto 0) en los estados G2 y G1 , y la salida inferior (puerto 1) en los estados G3 y G0 . La etiqueta para el destino 1000 es 0100. Esta etiqueta indica que el paquete debe coger la salida superior de conmutador en los estados G3 , G1 y G0 , y la salida inferior del conmutador en el estado G2 . Una de las caracter sticas interesantes de las MINs tradicionales vistas anteriormente (TMINs) es que existe un algoritmo sencillo para encontrar un camino de longitud logk N entre cualquier par entrada/salida. Sin embargo, si un enlace se congestiona o falla, la propiedad de camino unico puede fcilmente interrumpir la comunicacin entre algunos a o pares entrada/salida. La congestin de paquetes sobre algunos canales causa el problema o conocido como punto caliente. Se han propuesto muchas soluciones para resolver este problema. Una aproximacin popular es proporcionar mltiples caminos alternativos o u entre cualquier par origen y destino con lo que se consigue reducir la congestin de o la red al mismo tiempo que se consigue tolerancia a fallos. Estos mtodos requieren e normalmente hardware adicional, como el uso de etapas extras o canales adicionales. El uso de canales adiciones da lugar a las MINs dilatadas. En una MIN d-dilatada (DMIN), cada conmutador se reemplaza por un conmutador d -dilatado. En este conmutador, cada puerto tiene d canales. Usando canales replicados, las DMINs ofrecen una mejora sustancial del throughput de la red. La etiqueta de encaminamiento en una DMIN puede determinarse mediante la direccin destino al igual que se mencion para o o las TMINs. Dentro de cada conmutador, los paquetes se env a un puerto de saan lida particular de forma aleatoria entre los canales libres. Si todos los canales estn a ocupados, el paquete se bloquea. Otra aproximacin al diseo de MINs consiste en permitir comunicaciones bidireco n cionales. En este caso, cada puerto del conmutador tiene canales duales. En una red mariposa (BMIN) construida con conmutadores k k, la direccin origen S y la dio reccin destino D se representan mediante nmeros k -arios sn1 . . . s1 s0 y dn1 . . . d1 d0 o u Ingenier Informtica a a Universidad de Valencia

5.7 Redes de interconexin para multiprocesadores o

115

respectivamente. La funcin F irstDif f erence (S, D) devuelve t, la posicin en donde o o existe la primera diferencia (ms a la izquierda) entre sn1 . . . s1 s0 y dn1 . . . d1 d0 . a Un camino de encaminamiento con vuelta atrs entre cualquier origen y destino a debe cumplir las siguientes restricciones: El camino consiste en algunos canales hacia delante, algunos canales hacia atrs, y a exactamente una conexin de vuelta. o El nmero de canales hacia adelante es igual al nmero de canales hacia atrs. u u a Ningn canal hacia adelante y hacia atrs a lo largo del camino son el canal pareja u a del mismo puerto. Obsrvese que la ultima condicin se utiliza para prevenir comunicaciones redundantes. e o Para encaminar un paquete desde el origen al destino, el paquete se env en primer a lugar a la etapa Gt . No importa a que conmutador llegue (en la etapa Gt ). Despus, e el paquete gira y se env de vuelta a su destino. Cuando se mueve hacia el estado Gt , a un paquete tiene varias opciones sobre qu canal de salida elegir. La decisin puede e o resolverse seleccionando aleatoriamente entre aquellos canales de salida que no estn a bloqueados por otros paquetes. Despus de que el paquete ha llegado a un conmutador e en el estado Gt , elige el unico camino desde ese conmutador hacia su destino. Este camino de vuelta puede determinarse mediante un algoritmo de encaminamiento basado en etiquetas para TMINs. Observar que los algoritmos de encaminamiento descritos arriba son algoritmos distribuidos, en donde cada conmutador determina el canal de salida basndose en la a informacin que lleva el propio paquete. El siguiente ejemplo muestra los caminos diso ponibles en una red BMIN mariposa de ocho nodos.
S 000
001 010 011 100 101 110 000

S 001
010

D 011
100 101 110 111

D 111

(a) FirstDifference(S, D) = 2

(b) FirstDifference(S, D) = 1

Figura 5.68: Caminos disponibles en una BMIN mariposa de ocho nodos. Ejemplo La gura 5.68 muestra los caminos disponibles para una red BMIN mariposa de ocho nodos usando conmutadores 22. La gura 5.68a muestra el caso en donde los nodos origen y destino son 000 y 111, respectivamente. En este caso F irstDif f erence(S, D) = 2. As los paquetes giran en la etapa G2 y existen , cuatro caminos diferentes disponibles. En la gura 5.68b, los nodos origen y destino son 001y 011, respectivamente. F irstDif f erence(S, D) = 1, y el paquete gira en la etapa G1 . Ingenier Informtica a a Universidad de Valencia

116

Multiprocesadores

5.7.8.

Resumen de las redes indirectas y equivalencias

En la tabla 5.2 se resumen las caracter sticas ms importantes de los buses, redes a multietapa, y conmutadores de barra cruzada, para la construccin de redes dinmicas. o a Evidentemente el bus es la opcin ms econmica pero tiene el problema del bajo ancho o a o de banda disponible para cada procesador, especialmente si hay muchos. Otro problema con el bus es que es sensible a los fallos, de manera que es necesario su duplicacin para o obtener sistemas tolerantes a fallos. Caracter sticas de la red Latencia m nima por unidad de transmisin o Ancho de banda por procesador Complejidad cableado Complejidad conmutadores Capacidad de rutado y conectado Bus Constante Multietapa O(logk n) de O(w) a O(nw) O(nw logk n) O(n logk n) Algunas permutaciones y broadcast si la red no est bloqueada. a BBN TC-2000 IBM RP3 MIN n n con conmutadores k k y l neas de w bits Barra cruzada Constante

de O(w/n) a O(w) O(w) O(n) Slo uno a uno cao da vez.

de O(w) a O(nw) O(n2 w) O(n2 ) Todas las permutaciones a la vez.

Computadores representativos Notas

Symmetry S-1 Encore Multimax Suponemos n procesadores; la anchura de banda es w

Cray Y-MP/816 Fujitsu VPP500 Barra cruzada nn con l neas de w bits

Cuadro 5.2: Resumen de las caracter sticas de las redes dinmicas. a El conmutador de barra cruzada es el ms caro de hacer, especialmente teniendo a en cuenta que su complejidad hardware crece con n2 . Sin embargo, la barra cruzada tiene el mayor ancho de banda y las mayor capacidad de rutado. Para una red con no demasiados elementos es la mejor opcin. o Las redes multietapa suponen un compromiso intermedio entre los dos extremos. La mayor ventaja de las MINs es su escalabilidad gracias a la construccin modular. o El problema de esta red es que la latencia crece con log n, es decir, con el nmero de u etapas en la red. Tambin, el coste asociado con los cables y los conmutadores puede e ser importante. Para la construccin de futuros MPP, algunas de las topolog estticas pueden o as a resultar ms interesantes por su alta escalabilidad en determinadas aplicaciones. Si las a tecnolog pticas y microelectrnicas avanzan rpidamente, los MINs a escala alta o as o o a las redes de barras cruzadas podr llegar a ser realizables o econmicamente rentables an o para la realizacin de conexiones dinmicas en computadores de propsito general. o a o Ingenier Informtica a a Universidad de Valencia

5.8 Conclusiones

117

5.8.

Conclusiones

Los procesadores simtricos de memoria compartida son una extensin natural de las e o estaciones de trabajo uniprocesador y de los PCs. Las aplicaciones secuenciales pueden ejecutarse sin necesidad de modicacin, y benecindose incluso en el rendimiento al o a tener el procesador por una fraccin de tiempo mayor y de una mayor cantidad de o memoria principal compartida y capacidades de E/S t picamente disponibles en estas mquinas. Las aplicaciones paralelas son tambin fcilmente portables a este entorno, a e a ya que todos los datos locales y compartidos son directamente accesibles por todos los procesadores utilizando operaciones de lectura y escritura ordinarias. Las porciones de clculo intensivo de una aplicacin secuencial pueden ser paralelizadas de forma a o selectiva. Una ventaja clave de las cargas de multiprogramacin es la granularidad na o con la que se pueden compartir los recursos entre los distintos procesos. Esto es cierto tanto en lo temporal, donde procesadores y/o pginas de la memoria principal pueden a ser reasignadas frecuentemente entre los diferentes procesos, como en lo f sico, donde la memoria principal puede dividirse entre las aplicaciones a nivel de pgina. Debido a a estas caracter sticas, los principales vendedores de ordenadores, desde las estaciones de trabajo suministradas por SUN, Silicon Graphics, Hewlett Packard, Digital e IBM hasta los suministradores de PCs como Intel y Compaq estn produciendo y vendiendo este a tipo de mquinas. De hecho, para algunos de los vendedores de estaciones de trabajo a este mercado constituye una fraccin substancial de sus ventas, y una mayor fraccin o o de sus benecios netos debido a los mayores mrgenes existentes en estas mquinas. a a El reto clave en el diseo de estas mquinas es la organizacin y la implementacin n a o o del subsistema de memoria compartida usado como comunicacin entre los procesos o adems de manejar el resto de accesos a memoria. La mayor de las mquinas de a a a pequea escala que se encuentran en la actualidad usan un bus como interconexin. En n o este caso el reto est en mantener coherentes en las cachs privadas de los procesadores a e los datos compartidos. Existen una gran cantidad de opciones disponibles, como hemos discutido, incluyendo el conjunto de estados asociados a los bloques de la cach, la e eleccin del tamao del bloque, y si usar invalidacin o actualizacin. La tarea clave o n o o de la arquitectura del sistema es realizar las elecciones oportunas en funcin de los o patrones de comparticin de datos predominantes en las aplicaciones para las que se o utilizar la mquina y de su facilidad de implementacin. a a o Conforme progresan los procesadores, el sistema de memoria, los circuitos integrados y la tecnolog de empaquetamiento, existen tres importantes razones que nos hace a pensar que los multiprocesadores de pequea escala continuarn siendo importantes en n a un futuro. La primera es que ofrecen un buen coste/rendimiento que har que indivia duos o pequeos grupos de personas pueden utilizarlos como un recurso compartido o n un servidor de cmputo o cheros. La segunda es que los microprocesadores actuales o estn diseados para poder ser utilizados como multiprocesadores por lo que ya no exisa n te un tiempo de espera signicativo entre el ultimo microprocesador y su incorporacin o a un multiprocesador. La tercera razn es que la tecnolog software para mquinas o a a paralelas (compiladores, sistemas operativos, lenguajes de programacin) est maduo a rando rpidamente para mquinas de memoria compartida de pequea escala, aunque a a n todav le queda un largo camino en el caso de mquinas de gran escala. Por ejemplo, a a la mayor de los vendedores de sistemas de ordenadores tienen una versin paralela de a o sus sistemas operativos para sus multiprocesadores basados en bus.

Ingenier Informtica a a

Universidad de Valencia

118

Multiprocesadores

Ingenier Informtica a a

Universidad de Valencia

Você também pode gostar