Your SlideShare is downloading. ×
  • Like
Aa
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply
Published

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
319
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
2
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. ARQUITECTURAS AVANZADAS Ingenier´ Informatica ıa ´ Profesor: Fernando Pardo Carpio Valencia, 30 de enero de 2002
  • 2. Prefacio El temario recogido en estos apuntes se corresponde con la asignatura de Arqui-tecturas Avanzadas de la Ingenier´ Inform´tica de la Universidad de Valencia. Esta ıa aasignatura corresponde al plan de 1993 y constaba de 6 cr´ditos te´ricos y 1.5 pr´cticos. e o aSe cursaba en quinto. Esta asignatura pretend´ ser la continuaci´n de la asignatura de Arquitectura de ıa oComputadores de cuarto curso del plan antiguo. El contenido principal son los sistemasparalelos, es decir, multiprocesadores y multicomputadores, sin olvidar otras arquitec-turas paralelas que ya tuvieron su momento en el pasado pero que todav´ se siguen ıautilizando hoy en d´ ıa. Estos apuntes toman como base los que se vinieron preparando desde el curso de1998. A principios del 2000 el profesor Antonio Flores Gil del Departamento de Inge-nier´ y Tecnolog´ de Computadores de la Facultad de Inform´tica de la Universidad ıa ıa ade Murcia, aport´ las fuentes de sus mucho m´s completos apuntes de Arquitectura de o aComputadores con el fin de que se pudiesen adaptar a las necesidades del temario. Conlos apuntes que ya se ten´ y con los del profesor Antonio Flores, se ha realizado esta ıannueva versi´n que todav´ est´ en construcci´n. o ıa a o Se incluyen las referencias bibliogr´ficas utilizadas en la elaboraci´n de los apuntes, a oincluy´ndose un peque˜ o ap´ndice donde se comentan los diferentes libros utilizados. e n eCon esto se ha pretendido dar una visi´n global a las arquitecturas avanzadas, ofre- oci´ndole al alumno un abanico amplio de posibilidades para ampliar informaci´n. e o Fernando Pardo en Valencia a 8 de octubre de 2001Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 3. ii PrefacioIngenier´ Inform´tica ıa a Universidad de Valencia
  • 4. ´Indice General1 Introducci´n a las arquitecturas paralelas o 1 1.1 Clasificaci´n de los sistemas paralelos . . . o . . . . . . . . . . . . . . . . 2 1.1.1 Clasificaci´n de Flynn . . . . . . . o . . . . . . . . . . . . . . . . 2 1.1.2 Otras clasificaciones . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Fuentes del paralelismo . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 1.2.1 El paralelismo de control . . . . . . . . . . . . . . . . . . . . . . 11 1.2.2 El paralelismo de datos . . . . . . . . . . . . . . . . . . . . . . . 11 1.2.3 El paralelismo de flujo . . . . . . . . . . . . . . . . . . . . . . . 132 El rendimiento de los sistemas paralelos 15 2.1 Magnitudes y medidas del rendimiento . . . . . . . . . . . . . . . . . . 15 2.1.1 Eficiencia, redundancia, utilizaci´n y calidad . . . . . . . . . . o . 15 2.1.2 Perfil del paralelismo en programas . . . . . . . . . . . . . . . . 16 2.1.3 Rendimiento medio arm´nico. Ley de Amdahl . . . . . . . . . o . 19 2.2 Modelos del rendimiento del speed-up . . . . . . . . . . . . . . . . . . . 23 2.2.1 Ley de Amdahl, limitaci´n por carga de trabajo fija . . . . . . o . 24 2.2.2 Ley de Gustafson, limitaci´n por tiempo fijo . . . . . . . . . . o . 25 2.2.3 Modelo del speed-up limitado por la memoria fija . . . . . . . . 27 2.3 Modelos del rendimiento seg´n la granularidad . . . . . . . . . . . . . u . 30 2.3.1 Modelo b´sico: 2 procesadores y comunicaciones no solapadas a . 32 2.3.2 Extensi´n a N procesadores . . . . . . . . . . . . . . . . . . . o . 33 2.3.3 Otras suposiciones para las comunicaciones . . . . . . . . . . . . 363 Procesadores vectoriales 43 3.1 Procesador vectorial b´sico . . . . . . . . . . . . . . . . . . a . . . . . . . 44 3.1.1 Arquitectura vectorial b´sica . . . . . . . . . . . . . a . . . . . . . 44 3.1.2 Instrucciones vectoriales b´sicas . . . . . . . . . . . a . . . . . . . 46 3.1.3 Ensamblador vectorial DLXV . . . . . . . . . . . . . . . . . . . 48 3.1.4 Tiempo de ejecuci´n vectorial . . . . . . . . . . . . o . . . . . . . 50 3.1.5 Unidades de carga/almacenamiento vectorial . . . . . . . . . . . 52 3.2 Memoria entrelazada o intercalada . . . . . . . . . . . . . . . . . . . . 53 3.2.1 Acceso concurrente a memoria (acceso C) . . . . . . . . . . . . 55 3.2.2 Acceso simult´neo a memoria (acceso S) . . . . . . a . . . . . . . 56 3.2.3 Memoria de acceso C/S . . . . . . . . . . . . . . . . . . . . . . 57 3.2.4 Rendimiento de la memoria entrelazada y tolerancia a fallos . . 57 3.3 Longitud del vector y separaci´n de elementos . . . . . . . o . . . . . . . 60 3.3.1 Control de la longitud del vector . . . . . . . . . . . . . . . . . 60 3.3.2 C´lculo del tiempo de ejecuci´n vectorial . . . . . . a o . . . . . . . 61 3.3.3 Separaci´n de elementos en el vector . . . . . . . . o . . . . . . . 63 3.4 Mejora del rendimiento de los procesadores vectoriales . . . . . . . . . 65 3.4.1 Encadenamiento de operaciones vectoriales . . . . . . . . . . . . 65 3.4.2 Sentencias condicionales . . . . . . . . . . . . . . . . . . . . . . 65 3.4.3 Matrices dispersas . . . . . . . . . . . . . . . . . . . . . . . . . 67 3.5 El rendimiento de los procesadores vectoriales . . . . . . . . . . . . . . 69Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 5. iv ´ Indice General 3.5.1 Rendimiento relativo entre vectorial y escalar . . . . . . . . . . 69 3.5.2 Medidas del rendimiento vectorial . . . . . . . . . . . . . . . . . 70 3.6 Historia y evoluci´n de los procesadores vectoriales . . . . . . . . . . . o 744 Procesadores matriciales 77 4.1 Organizaci´n b´sica . . . . . . . . . . . . . . . o a . . . . . . . . . . . . . . 77 4.2 Estructura interna de un elemento de proceso . . . . . . . . . . . . . . 78 4.3 Instrucciones matriciales . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.4 Programaci´n . . . . . . . . . . . . . . . . . . o . . . . . . . . . . . . . . 80 4.4.1 Multiplicaci´n SIMD de matrices . . . o . . . . . . . . . . . . . . 80 4.5 Procesadores asociativos . . . . . . . . . . . . . . . . . . . . . . . . . . 80 4.5.1 Memorias asociativas . . . . . . . . . . . . . . . . . . . . . . . . 80 4.5.2 Ejemplos de procesadores asociativos . . . . . . . . . . . . . . . 805 Generalidades sobre las redes de interconexi´n o 81 5.1 Definiciones b´sicas y par´metros que caracterizan las redes de interco- a a nexi´n . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 81 5.1.1 Topolog´ control de flujo y encaminamiento . . . . . . . . . . . ıa, 84 5.2 Clasificaci´n de las redes de interconexi´n seg´n su topolog´ . . . . . . o o u ıa 87 5.2.1 Redes de medio compartido . . . . . . . . . . . . . . . . . . . . 89 5.2.2 Redes Directas . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 5.2.3 Redes Indirectas . . . . . . . . . . . . . . . . . . . . . . . . . . 91 5.2.4 Redes H´ ıbridas . . . . . . . . . . . . . . . . . . . . . . . . . . . 936 Multiprocesadores 99 6.1 Redes de interconexi´n para multiprocesadores . . . . . . . o . . . . . . . 99 6.1.1 Redes de medio compartido. Buses . . . . . . . . . . . . . . . . 99 6.1.2 Redes indirectas . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 6.1.3 Red de barra cruzada . . . . . . . . . . . . . . . . . . . . . . . . 101 6.1.4 Redes de interconexi´n multietapa (MIN) . . . . . o . . . . . . . 103 6.1.5 Tipos de etapas de permutaci´n para MIN . . . . . o . . . . . . . 105 6.1.6 Clasificaci´n de las redes MIN . . . . . . . . . . . . o . . . . . . . 109 6.1.7 Encaminamiento en redes MIN . . . . . . . . . . . . . . . . . . 115 6.1.8 Resumen de las redes indirectas y equivalencias . . . . . . . . . 121 6.2 Modelos de consistencia de memoria . . . . . . . . . . . . . . . . . . . . 122 6.2.1 Consistencia secuencial . . . . . . . . . . . . . . . . . . . . . . . 123 6.2.2 Otros modelos de consistencia . . . . . . . . . . . . . . . . . . . 127 6.2.3 Implementaci´n de los modelos relajados . . . . . . o . . . . . . . 132 6.2.4 Rendimiento de los modelos relajados . . . . . . . . . . . . . . . 133 6.3 Coherencia de las cach´s . . . . . . . . . . . . . . . . . . . e . . . . . . . 134 6.3.1 El problema de la coherencia de las cach´s . . . . . e . . . . . . . 135 6.3.2 Direcciones f´ısicas y virtuales, problema del aliasing . . . . . . . 137 6.3.3 El problema de la falsa compartici´n . . . . . . . . o . . . . . . . 138 6.3.4 Soluciones a los problemas de coherencia . . . . . . . . . . . . . 138 6.3.5 Esquemas de coherencia de las cach´s . . . . . . . . e . . . . . . . 140 6.4 Protocolos de sondeo o snoopy (medio compartido) . . . . . . . . . . . 141 6.4.1 Protocolo de invalidaci´n de 3 estados (MSI) . . . . o . . . . . . . 143 6.4.2 Protocolo de invalidaci´n de 4 estados (MESI) . . . o . . . . . . . 148 6.4.3 Write once . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 6.4.4 Berkeley . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 6. ´Indice General v 6.4.5 Protocolo de actualizaci´n de 4 estados (Dragon) . o . . . . . . . 154 6.4.6 Firefly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156 6.4.7 Rendimiento de los protocolos de sondeo . . . . . . . . . . . . . 156 6.5 Esquemas de coherencia basados en directorio . . . . . . . . . . . . . . 158 6.5.1 Protocolos basados en directorio . . . . . . . . . . . . . . . . . . 158 6.5.2 Protocolo de mapeado completo . . . . . . . . . . . . . . . . . . 159 6.5.3 Protocolo de directorio limitado . . . . . . . . . . . . . . . . . . 160 6.5.4 Protocolo de directorio encadenado . . . . . . . . . . . . . . . . 161 6.5.5 Rendimiento de los protocolos basados en directorio . . . . . . . 163 6.6 Sincronizaci´n . . . . . . . . . . . . . . . . . . . . . . . . . o . . . . . . . 167 6.6.1 Cerrojos (exclusi´n mutua) . . . . . . . . . . . . . o . . . . . . . 171 6.6.2 Eventos de sincronizaci´n punto a punto (banderas) o . . . . . . . 181 6.6.3 Eventos globales de sincronizaci´n (barreras) . . . . o . . . . . . . 182 6.7 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1867 Multicomputadores 189 7.1 Redes de interconexi´n para multicomputadores . . . . . . . . . . . . . o 191 7.1.1 Topolog´ estrictamente ortogonales . . . . . . . . . . . . . . . ıas 193 7.1.2 Otras topolog´ directas . . . . . . . . . . . . . . . . . . . . . . ıas 195 7.1.3 Conclusiones sobre las redes directas . . . . . . . . . . . . . . . 200 7.2 La capa de conmutaci´n o control de flujo (switching) . . . . . . . . . . o 202 7.2.1 Elementos b´sicos de la conmutaci´n . . . . . . . . . . . . . . . a o 202 7.2.2 Conmutaci´n de circuitos . . . . . . . . . . . . . . . . . . . . . o 206 7.2.3 Conmutaci´n de paquetes . . . . . . . . . . . . . . . . . . . . . o 208 7.2.4 Conmutaci´n de paso a trav´s virtual, Virtual Cut-Through (VCT) o e 209 7.2.5 Conmutaci´n de lombriz (Wormhole) . . . . . . . . . . . . . . . o 211 7.2.6 Conmutaci´n cartero loco . . . . . . . . . . . . . . . . . . . . . o 213 7.2.7 Canales virtuales . . . . . . . . . . . . . . . . . . . . . . . . . . 216 7.2.8 Mecanismos h´ ıbridos de conmutaci´n . . . . . . . . . . . . . . . o 218 7.2.9 Comparaci´n de los mecanismos de conmutaci´n . . . . . . . . . o o 218 7.3 La capa de encaminamiento (routing) . . . . . . . . . . . . . . . . . . . 220 7.3.1 Clasificaci´n de los algoritmos de encaminamiento . . . . . . . . o 221 7.3.2 Bloqueos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 7.3.3 Teor´ para la evitaci´n de bloqueos mortales (deadlocks) . . . . ıa o 225 7.3.4 Algoritmos deterministas . . . . . . . . . . . . . . . . . . . . . . 231 7.3.5 Algoritmos parcialmente adaptativos . . . . . . . . . . . . . . . 234 7.3.6 Algoritmos completamente adaptativos . . . . . . . . . . . . . . 237 7.3.7 Comparaci´n de los algoritmos de encaminamiento . . . . . . . o 2388 Otras arquitecturas avanzadas 243 8.1 M´quinas de flujo de datos . . . . . . . . . . . a . . . . . . . . . . . . . . 244 8.1.1 Grafo de flujo de datos . . . . . . . . . . . . . . . . . . . . . . . 244 8.1.2 Estructura b´sica de un computador de a flujo de datos . . . . . . 246 8.2 Otras arquitecturas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 247A Comentarios sobre la bibliograf´ ıa 249Bibliograf´ ıa 251´Indice de Materias 253Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 7. vi ´ Indice GeneralIngenier´ Inform´tica ıa a Universidad de Valencia
  • 8. ´Indice de Figuras 1.1 Clasificaci´n de Flynn de las arquitecturas de computadores. o . . . . . . 3 1.2 Clasificaci´n de las arquitecturas paralelas. . . . . . . . . . . o . . . . . . 4 1.3 El modelo UMA de multiprocesador. . . . . . . . . . . . . . . . . . . . 5 1.4 El modelo NUMA de multiprocesador. . . . . . . . . . . . . . . . . . . 6 1.5 El modelo COMA de multiprocesador. . . . . . . . . . . . . . . . . . . 6 1.6 Diagrama de bloques de una m´quina de flujo de datos. . . . a . . . . . . 8 1.7 Paralelismo de control. . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 1.8 Ejemplo de paralelismo de control. . . . . . . . . . . . . . . . . . . . . 12 1.9 Paralelismo de datos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 1.10 Ejemplo de la aplicaci´n del paralelismo de datos a un bucle. o . . . . . . 13 1.11 Paralelismo de flujo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.1 Perfil del paralelismo de un algoritmo del tipo divide y vencer´s. . . . . a 17 2.2 Media arm´nica del speed-up con respecto a tres distribuciones de pro- o babilidad: π1 para la distribuci´n uniforme, π2 en favor de usar m´s o a procesadores y π3 en favor de usar menos procesadores. . . . . . . . . . 21 2.3 Mejora del rendimiento para diferentes valores de α, donde α es la frac- ci´n del cuello de botella secuencial. . . . . . . . . . . . . . . . . . . . . o 22 2.4 Modelos de rendimiento del speed-up. . . . . . . . . . . . . . . . . . . . 23 2.5 Modelo del speed-up de carga fija y la ley de Amdahl. . . . . . . . . . . 26 2.6 Modelo de speed-up de tiempo fijo y la ley de Gustafson. . . . . . . . . 28 2.7 Modelo de speed-up de memoria fija. . . . . . . . . . . . . . . . . . . . . 30 2.8 Tiempo de ejecuci´n para dos factores R/C diferentes. . . . . . . . . . o 33 3.1 La arquitectura de un supercomputador vectorial. . . . . . . . . . . . . 45 3.2 Estructura b´sica de una arquitectura vectorial con registros, DLXV. . a 46 3.3 Caracter´ ısticas de varias arquitecturas vectoriales. . . . . . . . . . . . . 47 3.4 Instrucciones vectoriales del DLXV. . . . . . . . . . . . . . . . . . . . . 49 3.5 Penalizaci´n por el tiempo de arranque en el DLXV. . . . . . . . . . . o 51 3.6 Tiempos de arranque y del primer y ultimo resultados para los convoys ´ 1-4. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 3.7 Dos organizaciones de memoria entrelazada con m = 2a m´dulos y w = o 2a palabras por m´dulo. . . . . . . . . . . . . . . . . . . . . . . . . . . o 54 3.8 Tiempo de acceso para las primeras 64 palabras de doble precisi´n en o una lectura. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 3.9 Acceso segmentado a 8 palabras contiguas en una memoria de acceso C. 56 3.10 Organizaci´n de acceso S para una memoria entrelazada de m v´ o ıas. . . 56 3.11 Organizaci´n de acceso C/S. . . . . . . . . . . . . . . . . . . . . . . . . o 57 3.12 Dos organizaciones de memoria entrelazada usando 8 m´dulos: (a) 2o bancos y 4 m´dulos entrelazados, (b) 4 bancos y 2 m´dulos entrelazados. o o 59 3.13 Un vector de longitud arbitraria procesado mediante seccionamiento. To- dos los bloques menos el primero son de longitud MVL. En esta figura, la variable m se usa en lugar de la expresi´n (n mod M V L). . . . . . . o 61 3.14 Tiempo de ejecuci´n por elemento en funci´n de la longitud del vector. o o 63Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 9. viii ´ Indice de Figuras 3.15 Temporizaci´n para la ejecuci´n no encadenada y encadenada. . . . . . o o 66 3.16 Rendimiento relativo escalar/vectorial. . . . . . . . . . . . . . . . . . . 69 3.17 Formaci´n de convoys en el bucle interior del c´digo DAXPY. . . . . . o o 70 3.18 Comparaci´n del rendimiento de los procesadores vectoriales y los mi- o croprocesadores escalares para la resoluci´n de un sistema de ecuaciones o lineales denso (tama˜ o de la matriz=n × n). . . . . . . . . . . . . . . . n 75 4.1 Computador matricial b´sico. . . . . . . . . . . . . . . . . . . . . . . . a 78 4.2 Componentes de un elemento de proceso (EP) en un computador matricial. 79 5.1 Ejemplos del c´lculo del ancho de la bisecci´n: toro 2-D. (b) toro 3-D a o (no se muestran los enlaces de cierre). . . . . . . . . . . . . . . . . . . . 83 5.2 Ejemplo de empaquetamiento de un multicomputador. . . . . . . . . . 85 5.3 Clasificaci´n de las redes de interconexi´n. (1-D = unidimensional; 2-D o o = bidimensional; 3-D = tridimensional; CMU = Carnegie Mellon Uni- versity; 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.) . . . . 88 5.4 Una red con bus unico. (M = memoria; P = procesador.) . . . . . . . . ´ 89 5.5 Arquitectura de un nodo gen´rico. . . . . . . . . . . . . . . . . . . . . . e 91 5.6 Algunas topolog´ propuestas para redes directas. . . . . . . . . . . . . ıas 92 5.7 Un red conmutada con topolog´ irregular. . . . . . . . . . . . . . . . . ıa 93 5.8 Redes H´ ıbridas. (a) Una red multibus. (b) Una jerarqu´ de dos niveles ıa de buses. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 5.9 Malla bidimensional basada en clusters. . . . . . . . . . . . . . . . . . . 95 5.10 Una hipermalla bidimensional. . . . . . . . . . . . . . . . . . . . . . . . 96 5.11 Una hipermalla unidimensional con conmutador crossbar distribuido. . 96 6.1 La red de conmutaci´n en barra cruzada. . . . . . . . . . . . . . . . . . 101 o 6.2 Estados de un punto de conmutaci´n en una red de barras cruzadas. . . 103 o 6.3 Estructura generalizada de una interconexi´n multietapa (MIN). . . . . 104 o 6.4 Visi´n detallada de una etapa Gi . . . . . . . . . . . . . . . . . . . . . . 104 o 6.5 Barajado perfecto, barajado perfecto inverso, y bit reversal para N = 8. 106 6.6 La conexi´n mariposa para N = 8. . . . . . . . . . . . . . . . . . . . . 107 o 6.7 La conexi´n cubo para N = 8. . . . . . . . . . . . . . . . . . . . . . . . 108 o 6.8 La conexi´n en l´ o ınea base para N = 8. . . . . . . . . . . . . . . . . . . 108 6.9 Una red Bene˘ 8 × 8. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 s 6.10 Cuatro posibles estados de un conmutador 2 × 2. . . . . . . . . . . . . 110 6.11 Cuatro redes de interconexi´n unidireccionales multietapa de 16 × 16. . 111 o 6.12 Red de l´ınea base 8 × 8. . . . . . . . . . . . . . . . . . . . . . . . . . . 112 6.13 Redes basadas en el barajado perfecto. . . . . . . . . . . . . . . . . . . 113 6.14 Conexiones en un conmutador bidireccional. . . . . . . . . . . . . . . . 114 6.15 Una MIN mariposa bidireccional de ocho nodos. . . . . . . . . . . . . . 114 6.16 Caminos alternativos para una MIN mariposa bidireccional de ocho nodos.115 6.17 ´ Arbol grueso y BMIN mariposa. . . . . . . . . . . . . . . . . . . . . . . 116 6.18 Vista funcional de la estructura de una red Omega multietapa. . . . . . 117 6.19 Selecci´n del camino por el algoritmo de encaminamiento basado en eti- o quetas en una MIN mariposa de 16 nodos. . . . . . . . . . . . . . . . . 119 6.20 Caminos disponibles en una BMIN mariposa de ocho nodos. . . . . . . 121Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 10. ´Indice de Figuras ix 6.21 Requisitos de un evento de sincronizaci´n mediante flags. . . . . . . . . 123 o 6.22 Abstracci´n desde el punto de vista del programador del subsistema de o memoria bajo el modelo de consistencia secuencial. . . . . . . . . . . . 125 ´ 6.23 Ordenes entre los accesos sin sincronizaci´n. . . . . . . . . . . . . . . . 125 o 6.24 Ejemplo que ilustra la importancia de la atomicidad de las escrituras para la consistencia secuencial. . . . . . . . . . . . . . . . . . . . . . . . 126 6.25 Modelos de consistencia de memoria. . . . . . . . . . . . . . . . . . . . 128 6.26 Ordenaciones impuestas por varios modelos de consistencia. Se muestran tanto los accesos ordinarios como los accesos a variables de sincronizaci´n.130o 6.27 Ejemplos de los cinco modelos de consistencia vistos en esta secci´n que o muestran la reducci´n en el n´mero de ´rdenes impuestos conforme los o u o modelos se hacen m´s relajados. . . . . . . . . . . . . . . . . . . . . . . 131 a 6.28 Rendimiento de los modelos de consistencia relajados sobre una variedad de mecanismos hardware. . . . . . . . . . . . . . . . . . . . . . . . . . . 134 6.29 El problema de la coherencia de cach´s con dos procesadores. . . . . . . 135 e 6.30 Ejemplo del problema de coherencia de las cach´s. . . . . . . . . . . . . 136 e 6.31 Direcciones f´ısicas y virtuales en la cach´. . . . . . . . . . . . . . . . . . 137 e 6.32 Protocolo b´sico de invalidaci´n con tres estados. . . . . . . . . . . . . 145 a o 6.33 Protocolo de invalidaci´n de 3 estados en acci´n para las transacciones o o mostradas en la figura 6.30. . . . . . . . . . . . . . . . . . . . . . . . . 146 6.34 Orden parcial en las operaciones de memoria para una ejecuci´n con elo protocolo MSI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 6.35 Diagrama de transici´n de estados para el protocolo Illinois MESI. . . . 149 o 6.36 Diagrama de transici´n del protocolo Write once. . . . . . . . . . . . . 151 o 6.37 Diagramas de transici´n del protocolo Berkeley. . . . . . . . . . . . . . 153 o 6.38 Diagrama de transici´n de estados del protocolo de actualizaci´n Dragon. 155 o o 6.39 Directorio en el protocolo de mapeado completo. . . . . . . . . . . . . . 159 6.40 Protocolo de directorio encadenado en el est´ndar SCI. . . . . . . . . . 162 a 6.41 Tasa de fallo en funci´n del n´mero de procesadores. . . . . . . . . . . 164 o u 6.42 Tasa de fallo en funci´n del tama˜ o de la cach´. . . . . . . . . . . . . . 165 o n e 6.43 Tasa de fallo en funci´n del tama˜ o del bloque suponiendo una cach´ de o n e 128 KB y 64 procesadores. . . . . . . . . . . . . . . . . . . . . . . . . . 165 6.44 N´mero de bytes por referencia en funci´n del tama˜ o del bloque. . . . 166 u o n 6.45 Caracter´ısticas de la m´quina basada en directorio del ejemplo. . . . . 167 a 6.46 La latencia efectiva de las referencias a memoria en una m´quina DSM a depende de la frecuencia relativa de los fallos de cach´ y de la localizaci´n e o de la memoria desde donde se producen los accesos. . . . . . . . . . . . 168 6.47 Implementaci´n de (a) un intercambio at´mico y (b) una operaci´n de o o o lectura e incremento (fetch-and-increment) utilizando las operaciones load linked y store conditional . . . . . . . . . . . . . . . . . . . . . . . 170 6.48 Pasos en la coherencia de la cach´ y tr´fico en el bus para tres proce- e a sadores, P0, P1 y P2 que intentan adquirir un cerrojo en protocolo de coherencia por invalidaci´n. . . . . . . . . . . . . . . . . . . . . . . . . 173 o 6.49 Tiempo para adquirir y liberar un cerrojo cuando 20 procesadores est´n a compitiendo por el mismo. . . . . . . . . . . . . . . . . . . . . . . . . . 175 6.50 Un cerrojo con exponential back-off. . . . . . . . . . . . . . . . . . . . . 175 6.51 Estados de la lista para un cerrojo cuando los procesos intentan adquirirlo y cuando lo liberan. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 6.52 Rendimiento de los cerrojos en el SGI Challenge para tres posibles esce- narios. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 11. x ´ Indice de Figuras 6.53 Rendimiento de los cerrojos son la m´quina SGI Origin2000, para tres a escenarios diferentes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 6.54 C´digo de una barrera centralizada. . . . . . . . . . . . . . . . . . . . . o 182 6.55 C´digo para una barrera sense-reversing. . . . . . . . . . . . . . . . . . o 183 6.56 Rendimiento de algunas barreras en el SGI Challenge. . . . . . . . . . . 186 7.1 Arquitectura b´sica de un multicomputador. . . . . . . . . . . . . . . . 190 a 7.2 Clasificaci´n de las redes de interconexi´n . . . . . . . . . . . . . . . . 192 o o 7.3 Variaciones de mallas y toros. . . . . . . . . . . . . . . . . . . . . . . . 194 7.4 Topolog´ estrictamente ortogonales en una red directa. . . . . . . . . 195 ıas 7.5 Hipercubos, ciclo cubos y n-cubos k-arios. . . . . . . . . . . . . . . . . 196 7.6 Otras topolog´ directas. . . . . . . . . . . . . . . . . . . . . . . . . . 197 ıas 7.7 Matriz lineal, anillos, y barril desplazado. . . . . . . . . . . . . . . . . . 198 7.8 Algunas topolog´ ´rbol. . . . . . . . . . . . . . . . . . . . . . . . . . . 199 ıas a 7.9 ´ Arbol, estrella y ´rbol grueso. . . . . . . . . . . . . . . . . . . . . . . . 200 a 7.10 Distintas unidades de control de flujo en un mensaje. . . . . . . . . . . 203 7.11 Un ejemplo de control de flujo as´ ıncrono de un canal f´ ısico. . . . . . . . 203 7.12 Un ejemplo de control de flujo s´ ıncrono de un canal f´ ısico. . . . . . . . 204 7.13 Modelo de encaminador (router ) gen´rico. (LC = Link controller.) . . . 205 e 7.14 C´lculo de la latencia en una red para el caso de ausencia de carga (R = a Encaminador o Router ). . . . . . . . . . . . . . . . . . . . . . . . . . . 206 7.15 Cronograma de un mensaje por conmutaci´n de circuitos. . . . . . . . . 207 o 7.16 Un ejemplo del formato en una trama de creaci´n de un circuito. (CHN o = N´mero de canal; DEST = Direcci´n destino; XXX = No definido.) . 207 u o 7.17 Cronograma de un mensaje por conmutaci´n de paquetes. . . . . . . . 209 o 7.18 Un ejemplo de formato de la cabecera del paquete. (DEST = Direcci´n o destino; LEN = Longitud del paquete en unidades de 192 bytes; XXX = No definido.) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 7.19 Cronograma para un mensaje conmutado por VCT. (tblocking = Tiempo de espera en un enlace de salida.) . . . . . . . . . . . . . . . . . . . . . 210 7.20 Cronograma de un mensaje conmutado mediante wormhole. . . . . . . 211 7.21 Un ejemplo de mensaje bloqueado con la t´cnica wormhole. . . . . . . . 212 e 7.22 Formato de los paquetes conmutados mediante wormhole en el Cray T3D.212 7.23 Cronograma de la transmisi´n de un mensaje usando la conmutaci´n del o o cartero loco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 7.24 Un ejemplo del formato de un mensaje en la t´cnica de conmutaci´n del e o cartero loco. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 7.25 Ejemplo de encaminamiento con la conmutaci´n del cartero loco y la o generaci´n de flits de direcci´n muertos. . . . . . . . . . . . . . . . . . 215 o o 7.26 Canales virtuales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 7.27 Un ejemplo de la reducci´n del retraso de la cabecera usando dos canales o virtuales por canal f´ ısico. . . . . . . . . . . . . . . . . . . . . . . . . . . 218 7.28 Latencia media del paquete vs. tr´fico aceptado normalizado en una a malla 16 × 16 para diferentes t´cnicas de conmutaci´n y capacidades de e o buffer. (VC = Virtual channel; VCT = Virtual cut-through.) . . . . . . 219 7.29 Una taxonom´ de los algoritmos de encaminamiento . . . . . . . . . . 221 ıa 7.30 Configuraci´n de bloqueo en una malla 2-D. . . . . . . . . . . . . . . . 223 o 7.31 Una clasificaci´n de las situaciones que pueden impedir el env´ de paquetes.224 o ıo 7.32 Configuraci´n ilegal para R. . . . . . . . . . . . . . . . . . . . . . . . . 226 o 7.33 Redes del ejemplo anterior. . . . . . . . . . . . . . . . . . . . . . . . . . 228Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 12. ´Indice de Figuras xi 7.34 Red del ejemplo anterior. . . . . . . . . . . . . . . . . . . . . . . . . . . 229 7.35 El algoritmo de encaminamiento XY para mallas 2-D. . . . . . . . . . 232 7.36 El algoritmo de encaminamiento por dimensiones para hipercubos. . . . 233 7.37 Grafo de dependencias entre canales para anillos unidireccionales. . . . 233 7.38 El algoritmo de encaminamiento por dimensiones para toros 2-D unidi- reccionales. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 7.39 Caminos permitidos en el encaminamiento totalmente adaptativo y adap- tativo por planos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 7.40 Redes crecientes y decrecientes en el plano Ai para el encaminamiento adaptativo por planos. . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 7.41 Latencia media del mensaje vs. tr´fico normalizado aceptado para mallas a 16 × 16 para una distribuci´n uniforme del destino de los mensajes. . . 239 o 7.42 Latencia media del mensaje vs. tr´fico normalizado aceptado para mallas a 8 × 8 × 8 para una distribuci´n uniforme del destino de los mensajes. . 240 o 7.43 Latencia media del mensaje vs. tr´fico normalizado aceptado para toros a 16 × 16 para una distribuci´n uniforme del destino de los mensajes. . . 241 o 7.44 Latencia media del mensaje vs. tr´fico normalizado aceptado para toros a 8 × 8 × 8 para una distribuci´n uniforme del destino de los mensajes. . 242 o 7.45 Desviaci´n est´ndar de la latencia vs. tr´fico normalizado aceptado en o a a un toro 8×8×8 para una distribuci´n uniforme del destino de los mensajes242 o 8.1 Grafo de flujo de datos para calcular N ! . . . . . . . . . . . . . . . . . 245 8.2 La m´quina MIT de flujo de datos. . . . . . . . a . . . . . . . . . . . . . 246 8.3 Ejemplo de m´quina de flujo de datos est´tica. . a a . . . . . . . . . . . . . 247 8.4 Ejemplo de m´quina de flujo de datos din´mica. a a . . . . . . . . . . . . . 248Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 13. xii ´ Indice de FigurasIngenier´ Inform´tica ıa a Universidad de Valencia
  • 14. Cap´ ıtulo 1Introducci´n a las arquitecturas oparalelas Hasta este momento se ha estudiado el procesamiento a nivel del procesador. Seha visto ya que la segmentaci´n es un primer mecanismo de paralelismo, ya que varias oinstrucciones consecutivas son ejecutadas de forma solapada casi en paralelo. Tambi´n ese vio que los procesadores superescalares realizan tambi´n procesamiento paralelo al elanzar dos o m´s instrucciones al mismo tiempo gracias a la presencia de varios cauces aparalelos. Sin embargo, todos estos sistemas est´n basados en la arquitectura Von Neumann acon un procesador y memoria donde se guardan datos y programa, es decir, una m´quina asecuencial que procesa datos escalares. Esta arquitectura se ha ido perfeccionandoincluyendo el paralelismo de las unidades de control, de c´lculo, etc., pero sigue siendo auna m´quina de ejecuci´n con un unico flujo de instrucciones. a o ´ No hay una frontera definida entre la arquitectura monoprocesador y las masiva-mente paralelas. De hecho, las actuales arquitecturas monoprocesador son realmentem´quinas paralelas a nivel de instrucci´n. La evoluci´n de la arquitectura basada en a o omonoprocesador ha venido ligada con la creaci´n de m´s y mejores supercomputadores o aque ten´ que librarse del concepto de monoprocesador para poder hacer frente a las ıandemandas de computaci´n. o El primer paso hacia la paralelizaci´n de las arquitecturas de los computadores, ose da con la aparici´n de los procesadores o sistemas vectoriales. Los procesadores ovectoriales extienden el concepto de paralelismo por segmentaci´n al tratamiento de ograndes cadenas de datos. El hecho de que los procesadores segmentados hayan venidoasociados a los supercomputadores paralelos, los pone en la entrada a lo que son lossistemas paralelos, si bien siguen siendo una extensi´n del concepto de segmentaci´n. o o Por todo esto, el resto de cap´ıtulos van a ir dedicados de alguna u otra maneraa supercomputadores paralelos. Se empieza por los procesadores vectoriales y se con-tin´an por los sistemas basados en m´ltiples procesadores, o fuertemente acoplados u u(multiprocesadores con memoria compartida), o moderadamente acoplados (multipro-cesadores con memoria local), o bien d´bilmente acoplados como los multicomputadores eo sistemas distribuidos. En cuanto a este cap´ ıtulo se repasar´n los conceptos b´sicos sobre sistemas para- a alelos, supercomputadores y su clasificaci´n. La bibliograf´ para este cap´ o ıa ıtulo es muyIngenier´ Inform´tica ıa a Universidad de Valencia
  • 15. 2 Introducci´n a las arquitecturas paralelas oamplia ya que en cualquier libro de arquitectura vienen los conceptos b´sicos sobre ar- aquitecturas paralelas, aunque por ejemplo se recomienda la clasificaci´n de los sistemas oen [Zar96], o las introducciones a estos temas paralelos de [Hwa93] o [HP96].1.1 Clasificaci´n de los sistemas paralelos o1.1.1 Clasificaci´n de Flynn oProbablemente la clasificaci´n m´s popular de computadores sea la clasificaci´n de o a oFlynn. Esta taxonom´ de las arquitecturas est´ basada en la clasificaci´n atendiendo ıa a oal flujo de datos e instrucciones en un sistema. Un flujo de instrucciones es el conjuntode instrucciones secuenciales que son ejecutadas por un unico procesador, y un flujo de ´datos es el flujo secuencial de datos requeridos por el flujo de instrucciones. Con estasconsideraciones, Flynn clasifica los sistemas en cuatro categor´ ıas:SISD (Single Instruction stream, Single Data stream) Flujo unico de instrucciones y ´ flujo unico de datos. Este el concepto de arquitectura serie de Von Neumann ´ donde, en cualquier momento, s´lo se est´ ejecutando una unica instrucci´n. A o a ´ o menudo a los SISD se les conoce como computadores serie escalares. Todas las m´quinas SISD poseen un registro simple que se llama contador de programa a que asegura la ejecuci´n en serie del programa. Conforme se van leyendo las o instrucciones de la memoria, el contador de programa se actualiza para que apunte a la siguiente instrucci´n a procesar en serie. Pr´cticamente ning´n computador o a u puramente SISD se fabrica hoy en d´ ya que la mayor´ de procesadores modernos ıa ıa incorporan alg´n grado de paralelizaci´n como es la segmentaci´n de instrucciones u o o o la posibilidad de lanzar dos instrucciones a un tiempo (superescalares).MISD (Multiple Instruction stream, Single Data stream) Flujo m´ltiple de instruccio- u nes y unico flujo de datos. Esto significa que varias instrucciones act´an sobre el ´ u mismo y unico trozo de datos. Este tipo de m´quinas se pueden interpretar de dos ´ a maneras. Una es considerar la clase de maquinas que requerir´ que unidades ıan de procesamiento diferentes recibieran instrucciones distintas operando sobre los mismos datos. Esta clase de arquitectura ha sido clasificada por numerosos arqui- tectos de computadores como impracticable o imposible, y en estos momentos no existen ejemplos que funcionen siguiendo este modelo. Otra forma de interpretar los MISD es como una clase de m´quinas donde un mismo flujo de datos fluye a a trav´s de numerosas unidades procesadoras. Arquitecturas altamente segmen- e tadas, como los arrays sist´licos o los procesadores vectoriales, son clasificados a o menudo bajo este tipo de m´quinas. Las arquitecturas segmentadas, o encauza- a das, realizan el procesamiento vectorial a trav´s de una serie de etapas, cada una e ejecutando una funci´n particular produciendo un resultado intermedio. La raz´n o o por la cual dichas arquitecturas son clasificadas como MISD es que los elementos de un vector pueden ser considerados como pertenecientes al mismo dato, y todas las etapas del cauce representan m´ltiples instrucciones que son aplicadas sobre u ese vector.SIMD Single Instruction stream, Multiple Data stream Flujo de instrucci´n simple y o flujo de datos m´ltiple. Esto significa que una unica instrucci´n es aplicada sobre u ´ o diferentes datos al mismo tiempo. En las m´quinas de este tipo, varias unidades a de procesado diferentes son invocadas por una unica unidad de control. Al igual ´ que las MISD, las SIMD soportan procesamiento vectorial (matricial) asignandoIngenier´ Inform´tica ıa a Universidad de Valencia
  • 16. 1.1 Clasificaci´n de los sistemas paralelos o 3 cada elemento del vector a una unidad funcional diferente para procesamiento concurrente. Por ejemplo, el c´lculo de la paga para cada trabajador en una em- a presa, es repetir la misma operaci´n sencilla para cada trabajador; si se dispone o de un arquitectura SIMD esto se puede calcular en paralelo para cada trabaja- dor. Por esta facilidad en la paralelizaci´n de vectores de datos (los trabajadores o formar´ un vector) se les llama tambi´n procesadores matriciales. ıan eMIMD (Multiple Instruction stream, Multiple Data stream) Flujo de instrucciones m´ltiple y flujo de datos m´ltiple. Son m´quinas que poseen varias unidades pro- u u a cesadoras en las cuales se pueden realizar m´ltiples instrucciones sobre datos dife- u rentes de forma simult´nea. Las MIMD son las m´s complejas, pero son tambi´n a a e las que potencialmente ofrecen una mayor eficiencia en la ejecuci´n concurren- o te o paralela. Aqu´ la concurrencia implica que no s´lo hay varios procesadores ı o operando simult´neamente, sino que adem´s hay varios programas (procesos) eje- a a cut´ndose tambi´n al mismo tiempo. a e La figura 1.1 muestra los esquemas de estos cuatro tipos de m´quinas clasificadas apor los flujos de instrucciones y datos. FI FI UC UC UC FI Memoria FI FI FI (Programa y datos) FD FD FD FD FI FD UP UP UP I/O UC UP UM I/O (a) SISD (monoprocesador) (b) MISD (array sist´lico) o FI FI FD UC UP FD FD EP ML I/O Datos Memoria FI cargados I/O UC FI del host FI FD Programa UC UP cargado FD FD FI EP ML del host (c) SIMD (procesador matricial) (d) MIMD (multiprocesador)Figura 1.1: Clasificaci´n de Flynn de las arquitecturas de computadores. (UC=Unidad ode Control, UP=Unidad de Procesamiento, UM=Unidad de Memoria, EP=Elementode Proceso, ML=Memoria Local, FI=Flujo de Instrucciones, FD=Flujo de datos.)1.1.2 Otras clasificacionesLa clasificaci´n de Flynn ha demostrado funcionar bastante bien para la tipificaci´n o ode sistemas, y se ha venido usando desde d´cadas por la mayor´ de los arquitectos e ıade computadores. Sin embargo, los avances en tecnolog´ y diferentes topolog´ han ıa ıas,llevado a sistemas que no son tan f´ciles de clasificar dentro de los 4 tipos de Flynn. Por aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 17. 4 Introducci´n a las arquitecturas paralelas oejemplo, los procesadores vectoriales no encajan adecuadamente en esta clasificaci´n, oni tampoco las arquitecturas h´ ıbridas. Para solucionar esto se han propuesto otrasclasificaciones, donde los tipos SIMD y MIMD de Flynn se suelen conservar, pero quesin duda no han tenido el ´xito de la de Flynn. e La figura 1.2 muestra una taxonom´ ampliada que incluye alguno de los avances ıaen arquitecturas de computadores en los ultimos a˜ os. No obstante, tampoco pretende ´ nser una caracterizaci´n completa de todas las arquitecturas paralelas existentes. o      UMA, CC-UMA    Multiprocesadores     NUMA, CC-NUMA       COMA   MIMD Paso de mensajes    Multicomputadores Memoria virtual compartida        Multi-multiprocesadores          M´quinas de flujo de datos a      SIMD  { Procesadores matriciales    Arquitecturas paralelas   Procesadores vectoriales segmentados   MISD     Arrays sist´licos o       M´quinas MIMD-SIMD a   H´  ıbridos    M´quinas MIMD-MISD a      Prop´sito  o Redes de neuronas    espec´  ıfico   Procesadores con l´gica difusa o Figura 1.2: Clasificaci´n de las arquitecturas paralelas. o Tal y como se ve en la figura, los de tipo MIMD pueden a su vez ser subdivididos enmultiprocesadores, multicomputadores, multi-multiprocesadores y m´quinas de flujo de adatos. Incluso los multiprocesadores pueden ser subdivididos en NUMA, UMA y COMAseg´n el modelo de memoria compartida. El tipo SIMD quedar´ con los procesadores u ıamatriciales y el MISD se subdividir´ en procesadores vectoriales y en arrays sist´licos. ıa oSe han a˜ adido dos tipos m´s que son el h´ n a ıbrido y los de aplicaci´n espec´ o ıfica.MultiprocesadoresUn multiprocesador se puede ver como un computador paralelo compuesto por variosprocesadores interconectados que pueden compartir un mismo sistema de memoria. Losprocesadores se pueden configurar para que ejecute cada uno una parte de un programao varios programas al mismo tiempo. Un diagrama de bloques de esta arquitectura semuestra en la figura 1.3. Tal y como se muestra en la figura, que corresponde a untipo particular de multiprocesador que se ver´ m´s adelante, un multiprocesador est´ a a ageneralmente formado por n procesadores y m m´dulos de memoria. A los procesadores olos llamamos P1 , P2 , . . . , Pn y a las memorias M1 , M2 , . . . , Mn . La red de interconexi´n oconecta cada procesador a un subconjunto de los m´dulos de memoria. oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 18. 1.1 Clasificaci´n de los sistemas paralelos o 5 Dado que los multiprocesadores comparten los diferentes m´dulos de memoria, pu- odiendo acceder varios procesadores a un mismo m´dulo, a los multiprocesadores tam- obi´n se les llama sistemas de memoria compartida. Dependiendo de la forma en que los eprocesadores comparten la memoria, podemos hacer una subdivisi´n de los multipro- ocesadores:UMA (Uniform Memory Access) En un modelo de Memoria de Acceso Uniforme, la memoria f´ ısica est´ uniformemente compartida por todos los procesadores. Esto a quiere decir que todos los procesadores tienen el mismo tiempo de acceso a todas las palabras de memoria. Cada procesador puede tener su cache privada, y los perif´ricos son tambi´n compartidos de alguna manera. e e A estos computadores se les suele llamar sistemas fuertemente acoplados dado el alto grado de compartici´n de los recursos. La red de interconexi´n toma la o o forma de bus com´n, conmutador cruzado, o una red multietapa como se ver´ en u a pr´ximos cap´ o ıtulos. Cuando todos los procesadores tienen el mismo acceso a todos los perif´ricos, el e sistema se llama multiprocesador sim´trico. En este caso, todos los procesadores e tienen la misma capacidad para ejecutar programas, tal como el Kernel o las rutinas de servicio de I/O. En un multiprocesador asim´trico, s´lo un subconjunto e o de los procesadores pueden ejecutar programas. A los que pueden, o al que puede ya que muchas veces es s´lo uno, se le llama maestro. Al resto de procesadores o se les llama procesadores adheridos (attached processors). La figura 1.3 muestra el modelo UMA de un multiprocesador. Es frecuente encontrar arquitecturas de acceso uniforme que adem´s tienen cohe- a rencia de cach´, a estos sistemas se les suele llamar CC-UMA (Cache-Coherent e Uniform Memory Access). P1 P2 Pn Red de interconexión Memoria compartida I/O M1 Mm Figura 1.3: El modelo UMA de multiprocesador.NUMA Un multiprocesador de tipo NUMA es un sistema de memoria compartida donde el tiempo de acceso var´ seg´n el lugar donde se encuentre localizado el ıa u acceso. La figura 1.4 muestra una posible configuraci´n de tipo NUMA, donde to- o da la memoria es compartida pero local a cada m´dulo procesador. Otras posibles o configuraciones incluyen los sistemas basados en agrupaciones (clusters) de siste- mas como el de la figura que se comunican a trav´s de otra red de comunicaci´n e o que puede incluir una memoria compartida global. La ventaja de estos sistemas es que el acceso a la memoria local es m´s r´pido a a que en los UMA aunque un acceso a memoria no local es m´s lento. Lo que se a intenta es que la memoria utilizada por los procesos que ejecuta cada procesador, se encuentre en la memoria de dicho procesador para que los accesos sean lo m´sa locales posible. Aparte de esto, se puede a˜ adir al sistema una memoria de acceso global. En n este caso se dan tres posibles patrones de acceso. El m´s r´pido es el acceso a a aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 19. 6 Introducci´n a las arquitecturas paralelas o memoria local. Le sigue el acceso a memoria global. El m´s lento es el acceso a a la memoria del resto de m´dulos. o Al igual que hay sistemas de tipo CC-UMA, tambi´n existe el modelo de acceso e a memoria no uniforme con coherencia de cach´ CC-NUMA (Cache-Coherent e Non-Uniform Memory Access) que consiste en memoria compartida distribuida y directorios de cache. Red de interconexión Pn P2 P1 LMn LM2 LM1 Figura 1.4: El modelo NUMA de multiprocesador.COMA (Cache Only Memory Access) Un multiprocesador que s´lo use cach´ como o e memoria es considerado de tipo COMA. La figura 1.5 muestra el modelo COMA de multiprocesador. En realidad, el modelo COMA es un caso especial del NU- MA donde las memorias distribuidas se convierten en cach´s. No hay jerarqu´ de e ıa memoria en cada m´dulo procesador. Todas las cach´s forman un mismo espacio o e global de direcciones. El acceso a las cach´s remotas se realiza a trav´s de los e e directorios distribuidos de las cach´s. Dependiendo de la red de interconexi´n e o empleada, se pueden utilizar jerarqu´ en los directorios para ayudar en la loca- ıas lizaci´n de copias de bloques de cach´. El emplazamiento inicial de datos no es o e cr´ıtico puesto que el dato acabar´ estando en el lugar en que se use m´s. a a Red de interconexión Directorio Directorio Directorio Caché Caché Caché Procesador Procesador Procesador Figura 1.5: El modelo COMA de multiprocesador.MulticomputadoresUn multicomputador se puede ver como un computador paralelo en el cual cada proce-sador tiene su propia memoria local. La memoria del sistema se encuentra distribuidaentre todos los procesadores y cada procesador s´lo puede direccionar su memoria lo- ocal; para acceder a las memorias de los dem´s procesadores debe hacerlo por paso de aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 20. 1.1 Clasificaci´n de los sistemas paralelos o 7mensajes. Esto significa que un procesador tiene acceso directo s´lo a su memoria lo- ocal, siendo indirecto el acceso al resto de memorias del resto de procesadores. Esteacceso local y privado a la memoria es lo que diferencia los multicomputadores de losmultiprocesadores. El diagrama de bloques de un multicomputador coincide con el visto en la figu-ra 1.4 que corresponde a un modelo NUMA de procesador, la diferencia viene dadaporque la red de interconexi´n no permite un acceso directo entre memorias, sino que ola comunicaci´n se realiza por paso de mensajes. o La transferencia de datos se realiza a trav´s de la red de interconexi´n que conecta e oun subconjunto de procesadores con otro subconjunto. La transferencia de unos pro-cesadores a otros se realiza por tanto por m´ltiples transferencias entre procesadores uconectados dependiendo de c´mo est´ establecida la red. o e Dado que la memoria est´ distribuida entre los diferentes elementos de proceso, a aestos sistemas se les llama distribuidos aunque no hay que olvidar que pueden habersistemas que tengan la memoria distribuida pero compartida y por lo tanto no sermulticomputadores. Adem´s, y dado que se explota mucho la localidad, a estos sis- atemas se les llama d´bilmente acoplados, ya que los m´dulos funcionan de forma casi e oindependiente unos de otros.Multicomputadores con memoria virtual compartidaEn un multicomputador, un proceso de usuario puede construir un espacio global dedireccionamiento virtual. El acceso a dicho espacio global de direccionamiento se puederealizar por software mediante un paso de mensajes expl´ ıcito. En las bibliotecas depaso de mensajes hay siempre rutinas que permiten a los procesos aceptar mensajesde otros procesos, con lo que cada proceso puede servir datos de su espacio virtual aotros procesos. Una lectura se realiza mediante el env´ de una petici´n al proceso que ıo ocontiene el objeto. La petici´n por medio del paso de mensajes puede quedar oculta al ousuario, ya que puede haber sido generada por el compilador que tradujo el c´digo de oacceso a una variable compartida. De esta manera el usuario se encuentra programando un sistema aparentementebasado en memoria compartida cuando en realidad se trata de un sistema basado en elpaso de mensajes. A este tipo de sistemas se les llama multicomputadores con memoriavirtual compartida. Otra forma de tener un espacio de memoria virtual compartido es mediante el uso dep´ginas. En estos sistemas una colecci´n de procesos tienen una regi´n de direcciones a o ocompartidas pero, para cada proceso, s´lo las p´ginas que son locales son accesibles de o aforma directa. Si se produce un acceso a una p´gina remota, entonces se genera un afallo de p´gina y el sistema operativo inicia una secuencia de pasos de mensaje para atransferir la p´gina y ponerla en el espacio de direcciones del usuario. aM´quinas de flujo de datos aHay dos formas de procesar la informaci´n, una es mediante la ejecuci´n en serie de una o olista de comandos y la otra es la ejecuci´n de un comando demandado por los datos odisponibles. La primera forma empez´ con la arquitectura de Von Neumann donde oun programa almacenaba las ´rdenes a ejecutar, sucesivas modificaciones, etc., han oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 21. 8 Introducci´n a las arquitecturas paralelas oconvertido esta sencilla arquitectura en los multiprocesadores para permitir paralelismo. La segunda forma de ver el procesamiento de datos quiz´ es algo menos directa, apero desde el punto de vista de la paralelizaci´n resulta mucho m´s interesante puesto o aque las instrucciones se ejecutan en el momento tienen los datos necesarios para ello, ynaturalmente se deber´ poder ejecutar todas las instrucciones demandadas en un mismo ıatiempo. Hay algunos lenguajes que se adaptan a este tipo de arquitectura comandadapor datos como son el Prolog, el ADA, etc., es decir, lenguajes que exploten de una uotra manera la concurrencia de instrucciones. En una arquitectura de flujo de datos una instrucci´n est´ lista para su ejecuci´n o a ocuando los datos que necesita est´n disponibles. La disponibilidad de los datos se consi- ague por la canalizaci´n de los resultados de las instrucciones ejecutadas con anterioridad oa los operandos de las instrucciones que esperan. Esta canalizaci´n forma un flujo de odatos que van disparando las instrucciones a ejecutar. Por esto se evita la ejecuci´n ode instrucciones basada en contador de programa que es la base de la arquitectura VonNeumann. Las instrucciones en un flujo de datos son puramente autocontenidas; es decir, nodireccionan variables en una memoria compartida global, sino que llevan los valoresde las variables en ellas mismas. En una maquina de este tipo, la ejecuci´n de una oinstrucci´n no afecta a otras que est´n listas para su ejecuci´n. De esta manera, varias o e oinstrucciones pueden ser ejecutadas simult´neamente lo que lleva a la posibilidad de un aalto grado de concurrencia y paralelizaci´n. o La figura 1.6 muestra el diagrama de bloques de una m´quina de flujo de datos. aLas instrucciones, junto con sus operandos, se encuentran almacenados en la memoriade datos e instrucciones (D/I). Cuando una instrucci´n est´ lista para ser ejecutada, o ase env´ a uno de los elementos de proceso (EP) a trav´s de la red de arbitraje. Cada ıa eEP es un procesador simple con memoria local limitada. El EP, despu´s de procesar la einstrucci´n, env´ el resultado a su destino a trav´s de la red de distribuci´n. o ıa e o EP EP EP I/D I/D Red de Red de distribución arbitraje I/D Memoria de Instrucciones y Datos Figura 1.6: Diagrama de bloques de una m´quina de flujo de datos. aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 22. 1.1 Clasificaci´n de los sistemas paralelos o 9Procesadores matricialesEsta arquitectura es la representativa del tipo SIMD, es decir, hay una sola instrucci´n oque opera concurrentemente sobre m´ltiples datos. u Un procesador matricial consiste en un conjunto de elementos de proceso y unprocesador escalar que operan bajo una unidad de control. La unidad de control busca ydecodifica las instrucciones de la memoria central y las manda bien al procesador escalaro bien a los nodos procesadores dependiendo del tipo de instrucci´n. La instrucci´n que o oejecutan los nodos procesadores es la misma simult´neamente, los datos ser´n los de a acada memoria de procesador y por tanto ser´n diferentes. Por todo esto, un procesador amatricial s´lo requiere un unico programa para controlar todas las unidades de proceso. o ´ La idea de utilizaci´n de los procesadores matriciales es explotar el paralelismo en los odatos de un problema m´s que paralelizar la secuencia de ejecuci´n de las instrucciones. a oEl problema se paraleliza dividiendo los datos en particiones sobre las que se puedenrealizar las mismas operaciones. Un tipo de datos altamente particionable es el formadopor vectores y matrices, por eso a estos procesadores se les llama matriciales.Procesadores vectorialesUn procesador vectorial ejecuta de forma segmentada instrucciones sobre vectores. Ladiferencia con los matriciales es que mientras los matriciales son comandados por lasinstrucciones, los vectoriales son comandados por flujos de datos continuos. A este tipose le considera MISD puesto que varias instrucciones son ejecutadas sobre un mismodato (el vector), si bien es una consideraci´n algo confusa aunque aceptada de forma omayoritaria.Arrays sist´licos oOtro tipo de m´quinas que se suelen considerar MISD son los arrays sist´licos. En un a oarray sist´lico hay un gran n´mero de elementos de proceso (EPs) id´nticos con una o u elimitada memoria local. Los EPs est´n colocados en forma de matriz (array) de manera aque s´lo est´n permitidas las conexiones con los EPs vecinos. Por lo tanto, todos los o aprocesadores se encuentran organizados en una estructura segmentada de forma linealo matricial. Los datos fluyen de unos EPs a sus vecinos a cada ciclo de reloj, y duranteese ciclo de reloj, o varios, los elementos de proceso realizan una operaci´n sencilla. oEl adjetivo sist´lico viene precisamente del hecho de que todos los procesadores vienen osincronizados por un unico reloj que hace de “coraz´n” que hace moverse a la m´quina. ´ o aArquitecturas h´ ıbridasHemos visto dos formas de explotar el paralelismo. Por un lado estaba la paralelizaci´n ode c´digo que se consigue con las m´quinas de tipo MIMD, y por otro lado estaba la o aparalelizaci´n de los datos conseguida con arquitecturas SIMD y MISD. En la pr´ctica, o ael mayor beneficio en paralelismo viene de la paralelizaci´n de los datos. Esto es debido oa que el paralelismo de los datos explota el paralelismo en proporci´n a la cantidad de olos datos que forman el c´lculo a realizar. Sin embargo, muchas veces resulta imposible aexplotar el paralelismo inherente en los datos del problema y se hace necesario utilizarIngenier´ Inform´tica ıa a Universidad de Valencia
  • 23. 10 Introducci´n a las arquitecturas paralelas otanto el paralelismo de control como el de datos. Por lo tanto, procesadores que tienencaracter´ısticas de MIMD y SIMD (o MISD) a un tiempo, pueden resolver de formaefectiva un elevado rango de problemas.Arquitecturas espec´ ıficasLas arquitecturas espec´ıficas son muchas veces conocidas tambi´n con el nombre de earquitecturas VLSI ya que muchas veces llevan consigo la elaboraci´n de circuitos es- opec´ ıficos con una alta escala de integraci´n. o Un ejemplo de arquitectura de prop´sito espec´ o ıfico son las redes neuronales (ANNde Artificial Neural Network). Las ANN consisten en un elevado n´mero de elementos ude proceso muy simples que operan en paralelo. Estas arquitecturas se pueden utilizarpara resolver el tipo de problemas que a un humano le resultan f´ciles y a una m´quina a atan dif´ ıciles, como el reconocimiento de patrones, comprensi´n del lenguaje, etc. La odiferencia con las arquitecturas cl´sicas es la forma en que se programa; mientras en auna arquitectura Von Neumann se aplica un programa o algoritmo para resolver unproblema, una red de neuronas aprende a fuerza de aplicarle patrones de comporta-miento. La idea es la misma que en el cerebro humano. Cada elemento de proceso es comouna neurona con numerosas entradas provenientes de otros elementos de proceso y unaunica salida que va a otras neuronas o a la salida del sistema. Dependiendo de los´est´ ımulos recibidos por las entradas a la neurona la salida se activar´ o no dependiendo ade una funci´n de activaci´n. Este esquema permite dos cosas, por un lado que la o ored realice una determinada funci´n seg´n el umbral de activaci´n interno de cada o u oneurona, y por otro, va a permitir que pueda programarse la red mediante la t´cnica ede ensayo-error. Otro ejemplo de dispositivo de uso espec´ ıfico son los procesadores basados en l´gica odifusa. Estos procesadores tienen que ver con los principios del razonamiento apro-ximado. La l´gica difusa intenta tratar con la complejidad de los procesos humanos oeludiendo los inconvenientes asociados a l´gica de dos valores cl´sica. o a1.2 Fuentes del paralelismoEl procesamiento paralelo tiene como principal objetivo explotar el paralelismo inheren-te a las aplicaciones inform´ticas. Todas las aplicaciones no presentan el mismo perfil acara al paralelismo: unas se pueden paralelizar mucho y en cambio otras muy poco.Al lado de este factor cuantitativo evidente, es necesario considerar tambi´n un factor ecualitativo: la manera a trav´s de la cual se explota el paralelismo. Cada t´cnica de e eexplotaci´n del paralelismo se denomina fuente. Distinguiremos tres fuentes principales: o• El paralelismo de control• El paralelismo de datos• El paralelismo de flujoIngenier´ Inform´tica ıa a Universidad de Valencia
  • 24. 1.2 Fuentes del paralelismo 111.2.1 El paralelismo de controlLa explotaci´n del paralelismo de control proviene de la constataci´n natural de que en o ouna aplicaci´n existen acciones que podemos “hacer al mismo tiempo”. Las acciones, ollamadas tambi´n tareas o procesos pueden ejecutarse de manera m´s o menos inde- e apendiente sobre unos recursos de c´lculo llamados tambi´n procesadores elementales (o a ePE). La figura 1.7 muestra el concepto que subyace tras el paralelismo de control datos cálculos Figura 1.7: Paralelismo de control. En el caso de que todas las acciones sean independientes es suficiente asociar unrecurso de c´lculo a cada una de ellas para obtener una ganancia en tiempo de ejecuci´n a oque ser´ lineal: N acciones independientes se ejecutar´n N veces m´s r´pido sobre N a a a aElementos de Proceso (PE) que sobre uno solo. Este es el caso ideal, pero las acciones deun programa real suelen presentar dependencias entre ellas. Distinguiremos dos clasesde dependencias que suponen una sobrecarga de trabajo:• Dependencia de control de secuencia: corresponde a la secuenciaci´n en un algoritmo o cl´sico. a• Dependencia de control de comunicaci´n: una acci´n env´ informaciones a otra o o ıa acci´n. oLa explotaci´n del paralelismo de control consiste en administrar las dependencias entre olas acciones de un programa para obtener as´ una asignaci´n de recursos de c´lculo lo ı o am´s eficaz posible, minimizando estas dependencias. La figura 1.8 muestra un ejemplo ade paralelismo de control aplicado a la ejecuci´n simult´nea de instrucciones. o a1.2.2 El paralelismo de datosLa explotaci´n del paralelismo de datos proviene de la constataci´n natural de que o ociertas aplicaciones trabajan con estructuras de datos muy regulares (vectores, matrices)repitiendo una misma acci´n sobre cada elemento de la estructura. Los recursos de oc´lculo se asocian entonces a los datos. A menudo existe un gran n´mero (millares o a uincluso millones) de datos id´nticos. Si el n´mero de PE es inferior al de datos, ´stos e u ese reparten en los PE disponibles. La figura 1.9 muestra de forma gr´fica el concepto ade paralelismo de datos. Como las acciones efectuadas en paralelo sobre los PE son id´nticas, es posible ecentralizar el control. Siendo los datos similares, la acci´n a repetir tomar´ el mismo o aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 25. 12 Introducci´n a las arquitecturas paralelas o a=b+1 a=b+1 a=a+c Usa a,b,c y d a=a+c d=5*d d=5*d a=2*a a=2*a e=a-1 e=a-1 Usa a,e,d y f f=d*3 f=d*3 f=f-1 f=f*4 f=f-1 Usa f f=f*4 Figura 1.8: Ejemplo de paralelismo de control. datos cálculos Figura 1.9: Paralelismo de datos.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 26. 1.2 Fuentes del paralelismo 13tiempo sobre todos los PE y el controlador podr´ enviar, de manera s´ a ıncrona, la acci´n oa ejecutar a todos los PE. Las limitaciones de este tipo de paralelismo vienen dadas por la necesidad de dividirlos datos vectoriales para adecuarlos al tama˜ o soportado por la m´quina, la existencia n ade datos escalares que limitan el rendimiento y la existencia de operaciones de difusi´n o(un escalar se reproduce varias veces convirti´ndose en un vector) y β-reducciones que eno son puramente paralelas. En la figura 1.10 se muestra un ejemplo de paralelismo dedatos. do i=1,20 a(i)=b(i)*c(i) enddo 1 do i=1,60 20 do i=21,40 a(i)=b(i)*c(i) 21 a(i)=b(i)*c(i) enddo enddo 40 41 do i=41,60 60 a(i)=b(i)*c(i) enddo Figura 1.10: Ejemplo de la aplicaci´n del paralelismo de datos a un bucle. o1.2.3 El paralelismo de flujoLa explotaci´n del paralelismo de flujo proviene de la constataci´n natural de que ciertas o oaplicaciones funcionan en modo cadena: disponemos de un flujo de datos, generalmentesemejantes, sobre los que debemos efectuar una sucesi´n de operaciones en cascada. La ofigura 1.11 muestra de forma gr´fica el concepto de paralelismo de flujo. a datos cálculos Figura 1.11: Paralelismo de flujo. Los recursos de c´lculo se asocian a las acciones y en cadena, de manera que los aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 27. 14 Introducci´n a las arquitecturas paralelas oresultados de las acciones efectuadas en el instante t pasen en el instante t + 1 al PEsiguiente. Este modo de funcionamiento se llama tambi´n segmentaci´n o pipeline. e o El flujo de datos puede provenir de dos fuentes:• Datos de tipo vectorial ubicados en memoria. Existe entonces una dualidad fuerte con el caso del paralelismo de datos.• Datos de tipo escalar provenientes de un dispositivo de entrada. Este dispositivo se asocia a menudo a otro de captura de datos, colocado en un entorno de tiempo real. En ambos casos, la ganancia obtenida est´ en relaci´n con el n´mero de etapas a o u(n´mero de PE). Todos los PEs no estar´n ocupados mientras el primer dato no haya u arecorrido todo el cauce, lo mismo ocurrir´ al final del flujo. Si el flujo presenta frecuentes adiscontinuidades, las fases transitorias del principio y del fin pueden degradar seriamentela ganancia. La existencia de bifurcaciones tambi´n limita la ganancia obtenida. eIngenier´ Inform´tica ıa a Universidad de Valencia
  • 28. Cap´ ıtulo 2El rendimiento de los sistemasparalelos2.1 Magnitudes y medidas del rendimientoEn esta secci´n se definir´n algunas de las medidas m´s utilizadas a la hora de deter- o a aminar el rendimiento de una arquitectura paralela. As´ se introducen los conceptos ı,de: speed-up, eficiencia de un sistema, utilizaci´n, redundancia, etc. Esta secci´n y la o osiguiente se encuentran completas en [Hwa93].2.1.1 Eficiencia, redundancia, utilizaci´n y calidad oRuby Lee (1980) defini´ varios par´metros para evaluar el c´lculo paralelo. A conti- o a anuaci´n se muestra la definici´n de dichos par´metros. o o a Eficiencia del sistema. Sea O(n) el n´mero total de operaciones elementales urealizadas por un sistema con n elementos de proceso, y T (n) el tiempo de ejecuci´n en opasos unitarios de tiempo. En general, T (n) < O(n) si los n procesadores realizan m´s ade una operaci´n por unidad de tiempo, donde n ≥ 2. Supongamos que T (1) = O(1) en oun sistema mono-procesador. El factor de mejora del rendimiento (speed-up) se definecomo S(n) = T (1)/T (n) La eficiencia del sistema para un sistema con n procesadores se define como S(n) T (1) E(n) = = n nT (n) La eficiencia es una comparaci´n del grado de speed-up conseguido frente al valor om´ximo. Dado que 1 ≤ S(n) ≤ n, tenemos 1/n ≤ E(n) ≤ 1. a La eficiencia m´s baja (E(n) → 0 corresponde al caso en que todo el programa se aejecuta en un unico procesador de forma serie. La eficiencia m´xima (E(n) = 1) se ´ aobtiene cuando todos los procesadores est´n siendo completamente utilizados durante atodo el periodo de ejecuci´n. oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 29. 16 El rendimiento de los sistemas paralelos Escalabilidad. Un sistema se dice que es escalable para un determinado rango deprocesadores [1..n], si la eficiencia E(n) del sistema se mantiene constante y cercana ala unidad en todo ese rango. Normalmente todos los sistemas tienen un determinadon´mero de procesadores a partir del cual la eficiencia empieza a disminuir de forma m´s u ao menos brusca. Un sistema es m´s escalable que otro si este n´mero de procesadores, a ua partir del cual la eficiencia disminuye, es menor que el otro. No hay que confundir escalabilidad con ampliabilidad. Un sistema es ampliable sif´ ısicamente se le pueden poner m´s m´dulos (m´s memorias, m´s procesadores, m´s a o a a atarjetas de entrada/salida, etc). Que un sistema sea ampliable no significa que seaescalable, es decir, que un sistema sea capaz de ampliarse con muchos procesadoresno significa que el rendimiento vaya a aumentar de forma proporcional, por lo que laeficiencia no tiene por qu´ mantenerse constante y por tanto el sistema podr´ no ser e ıaescalable. Redundancia y utilizaci´n. La redundancia en un c´lculo paralelo se define como o ala relaci´n entre O(n) y O(1): o R(n) = O(n)/O(1) Esta proporci´n indica la relaci´n entre el paralelismo software y hardware. Ob- o oviamente, 1 ≤ R(n) ≤ n. La utilizaci´n del sistema en un c´lculo paralelo se define o acomo O(n) U (n) = R(n)E(n) = nT (n) La utilizaci´n del sistema indica el porcentaje de recursos (procesadores, memoria, orecursos, etc.) que se utilizan durante la ejecuci´n de un programa paralelo. Es intere- osante observar la siguiente relaci´n: 1/n ≤ E(n) ≤ U (n) ≤ 1 y 1 ≤ R(n) ≤ 1/E(n) ≤ n. o Calidad del paralelismo. La calidad de un c´lculo paralelo es directamente pro- aporcional al speed-up y la eficiencia, inversamente proporcional a la redundancia. As´ ı,tenemos S(n)E(n) T 3 (1) Q(n) = = R(n) nT 2 (n)O(n) Dado que E(n) es siempre una fracci´n y R(n) es un n´mero entre 1 y n, la calidad o uQ(n) est´ siempre limitada por el speed-up S(n). a Para terminar con esta discusi´n acerca de los ´ o ındices del rendimiento, usamos elspeed-up S(n) para indicar el grado de ganancia de velocidad de una computaci´n oparalela. La eficiencia E(n) mide la porci´n util del trabajo total realizado por n o ´procesadores. La redundancia R(n) mide el grado del incremento de la carga. La utilizaci´n U (n) indica el grado de utilizaci´n de recursos durante un c´lculo o o aparalelo. Finalmente, la calidad Q(n) combina el efecto del speed-up, eficiencia y re-dundancia en una unica expresi´n para indicar el m´rito relativo de un c´lculo paralelo ´ o e asobre un sistema.2.1.2 Perfil del paralelismo en programasEl grado de paralelismo refleja c´mo el paralelismo software se adapta al paralelismo ohardware. En primer lugar caracterizaremos el perfil del paralelismo de un programaIngenier´ Inform´tica ıa a Universidad de Valencia
  • 30. 2.1 Magnitudes y medidas del rendimiento 17para a continuaci´n introducir los conceptos de paralelismo medio y definir el speed-up oideal en una m´quina con recursos ilimitados. a Grado de paralelismo. Es el n´mero de procesos paralelos en los que se puede udividir un programa en un instante dado. La ejecuci´n de un programa en un ordenador oparalelo puede utilizar un n´mero diferente de procesadores en diferentes periodos de utiempo. Para cada periodo de tiempo, el n´mero de procesadores que se puede llegar a uusar para ejecutar el programa se define como el grado de paralelismo (GDP). A la gr´fica 2.1, que muestra el GDP en funci´n del tiempo, se la denomina perfil del a oparalelismo de un programa dado. Por simplicidad, nos concentraremos en el an´lisis ade los perfiles de un unico programa. En la figura se muestra un ejemplo de perfil del ´paralelismo del algoritmo divide y vencer´s. a Figura 2.1: Perfil del paralelismo de un algoritmo del tipo divide y vencer´s. a Las fluctuaciones en el perfil durante un periodo de observaci´n depende de la es- otructura del algoritmo, la optimizaci´n del programa, la utilizaci´n de recursos, y las o ocondiciones de ejecuci´n del sistema donde se ejecuta el programa. o Paralelismo medio. Consideremos un procesador paralelo compuesto por n ele-mentos de proceso homog´neos. Llamamos m al paralelismo m´ximo en un perfil. En e ael caso ideal n m. Llamamos ∆ a la capacidad de c´mputo de un procesador, expre- osada en MIPS o Mflops, sin considerar las penalizaciones debidas al acceso a memoria,latencia de las comunicaciones, o sobrecarga del sistema. Cuando i procesadores est´n aocupados durante un periodo de tiempo, se tiene que GDP= i en ese periodo. La cantidad de trabajo realizado, a la que llamaremos W, es proporcional al ´rea abajo la curva de perfil paralelo:Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 31. 18 El rendimiento de los sistemas paralelos t2 W =∆ GDP(t) dt t1 Esta integral se calcula frecuentemente mediante el siguiente sumatorio: m W =∆ i · ti i=1 mdonde ti es el tiempo que GDP= i y i=1 ti = t2 − t1 es el tiempo total de ejecuci´n. o El paralelismo medio, que llamaremos A, ser´ por tanto a t2 1 A= GDP(t) dt t2 − t1 t1o en su forma discreta m i=1 i · ti A= m (2.1) i=1 ti Speed-up asint´tico. Si denotamos por Wi = i∆ti al trabajo realizado cuando oGDP= i, entonces podemos escribir W = m Wi . Esto est´ suponiendo que no hay i=1 asobrecarga de ning´n tipo, es decir, se trata del caso ideal de paralelizaci´n. u o El tiempo de ejecuci´n de Wi sobre un unico procesador es ti (1) = Wi /∆. El tiempo o ´de ejecuci´n de Wi sobre k procesadores es ti (k) = Wi /k∆. Con un n´mero infinito de o uprocesadores disponibles, ti (∞) = Wi /i∆, para 1 ≤ i ≤ m. As´ podemos escribir el ı,tiempo de respuesta para un procesador e infinitos procesadores como: m m Wi T (1) = ti (1) = i=1 i=1 ∆ m m Wi T (∞) = ti (∞) = i=1 i=1 i∆ El speed-up asint´tico S∞ se define como el cociente de T (1) y T (∞), es decir, es oun par´metro que mide la aceleraci´n del tiempo de c´lculo por el hecho de poder a o aparalelizar al m´ximo la aplicaci´n: a o m T (1) i=1 Wi S∞ = = m Wi (2.2) T (∞) i=1 i Si comparamos esta f´rmula (2.2) con la del paralelismo medio, A (2.1), se observa oque S∞ = A en el caso ideal. En general, S∞ ≤ A si se consideran las latencias debidasa las comunicaciones y otras sobrecargas del sistema. Observar que tanto S∞ como Aest´n definidos bajo la suposici´n de que n = ∞ o n a o m. Paralelismo disponible. Como ya vimos en las primeras secciones de este tema,existe un amplio grado de paralelismo potencial en los programas. Los c´digos cient´ o ıficospresentan un alto grado de paralelismo, debido al paralelismo inherente de los propiosIngenier´ Inform´tica ıa a Universidad de Valencia
  • 32. 2.1 Magnitudes y medidas del rendimiento 19datos. Manoj Kumar (1988) indica que en c´digos de c´lculo intensivo es posible o aejecutar de 500 a 3.500 operaciones aritm´ticas simult´neas. Nicolau y Fisher (1984) e amostraron que un con programa Fortran est´ndar era posible la ejecuci´n simult´nea de a o a90 instrucciones para arquitecturas VLIW. Estos n´meros muestran el lado optimista udel paralelismo disponible. David Wall (1991) indica que el l´ımite del ILP (paralelismo a nivel de instrucci´n) oes de alrededor de 5, raramente sobrepasando el 7. Bulter et al. (1991) indican quecuando se eliminan todas las restricciones el GDP puede exceder 17 instrucciones porciclo. Si el hardware est´ perfectamente balanceado es posible conseguir de 2.0 a 5.8 ainstrucciones por ciclo en un procesador superescalar. Estos n´meros muestran el lado upesimista del paralelismo disponible.2.1.3 Rendimiento medio arm´nico. Ley de Amdahl oConsideremos un sistema paralelo con n procesadores ejecutando m programas en variosmodos con diferentes niveles de rendimiento. Queremos definir el rendimiento mediode este tipo de multiprocesadores. Con una distribuci´n de peso podemos definir una oexpresi´n del rendimiento. o Cada modo de ejecuci´n puede corresponder a un tipo de ejecuci´n como por ejemplo o oprocesamiento escalar, vectorial, secuencial o paralela. Cada programa puede ejecutarsemediante una combinaci´n de estos modos. El rendimiento medio arm´nico proporciona o oun rendimiento medio sobre la ejecuci´n de un gran n´mero de programas ejecut´ndose o u aen varios modos. Antes de obtener dicha expresi´n, estudiaremos las expresiones de la media aritm´tica o ey geom´trica obtenidas por James Smith (1988). La velocidad de ejecuci´n Ri para el e oprograma i-´simo se mide en MIPS o Mflops. e Media aritm´tica del rendimiento. Sea el conjunto {Ri } de las velocidades de eejecuci´n de los programas i = 1, 2, . . . , m. La media aritm´tica de la velocidad de o eejecuci´n se define como o m Ri Ra = i=1 m La expresi´n Ra supone que los m programas tienen el mismo peso (1/m). Si existe ouna distribuci´n de pesos de los distintos programas π = {fi para i = 1, 2, . . . , m}, odefinimos la media aritm´tica ponderada de la velocidad de ejecuci´n como: e o m ∗ Ra = (fi Ri ) i=1 Esta media aritm´tica es proporcional a la suma de los inversos de los tiempos ede ejecuci´n; no es inversamente proporcional a la suma de los tiempos de ejecuci´n. o oPor lo tanto, la media aritm´tica falla al representar el tiempo real consumido por los ebenchmarks. Media geom´trica del rendimiento. La media geom´trica de la velocidad de e eIngenier´ Inform´tica ıa a Universidad de Valencia
  • 33. 20 El rendimiento de los sistemas paralelosejecuci´n para m programas se define como o m 1/m Rg = Ri i=1 Con una distribuci´n de pesos π = {fi para i = 1, 2, . . . , m}, podemos definir una omedia geom´trica ponderada de la velocidad de ejecuci´n como: e o m ∗ f Rg = Ri i i=1 La media geom´trica tampoco capta el rendimiento real, ya que no presenta una erelaci´n inversa con el tiempo total. La media geom´trica ha sido defendida para el uso o econ cifras de rendimiento que han sido normalizadas con respecto a una m´quina de areferencia con la que se est´ comparando. a Rendimiento medio arm´nico. Debido a los problemas que presentan la media oaritm´tica y geom´trica, necesitamos otra expresi´n del rendimiento medio basado en e e ola media aritm´tica del tiempo de ejecuci´n. De hecho, Ti = 1/Ri , es el tiempo medio e ode ejecuci´n por instrucci´n para el programa i. La media aritm´tica del tiempo de o o eejecuci´n por instrucci´n se define como o o m m 1 1 1 Ta = Ti = m i=1 m i=1 Ri La media arm´nica de la velocidad de ejecuci´n sobre m programas de prueba se o odefine por el hecho de que Rh = T1a : m Rh = m 1 i=1 Ri Con esto, el rendimiento medio arm´nico est´ de verdad relacionado con el tiempo o amedio de ejecuci´n. Si consideramos una distribuci´n de pesos, podemos definir el o orendimiento medio arm´nico ponderado como: o ∗ 1 Rh = m fi i=1 Ri Speed-up arm´nico medio. Otra forma de aplicar el concepto de media arm´nica o oes ligar los distintos modos de un programa con el n´mero de procesadores usados. uSupongamos que un programa (o una carga formada por la combinaci´n de varios pro- ogramas) se ejecutan en un sistema con n procesadores. Durante el periodo de ejecuci´n,oel programa puede usar i = 1, 2, . . . n procesadores en diferentes periodos de tiempo. Decimos que el programa se ejecuta en modo i si usamos i procesadores. Ri se usapara reflejar la velocidad conjunta de i procesadores. Supongamos que T1 = 1/R1 = 1 esel tiempo de ejecuci´n secuencial en un mono-procesador con una velocidad de ejecuci´n o oR1 = 1. Entonces Ti = 1/Ri = 1/i es el tiempo de ejecuci´n usando i procesadores con ouna velocidad de ejecuci´n combinada de Ri = i en el caso ideal. oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 34. 2.1 Magnitudes y medidas del rendimiento 21 Supongamos que un programa dado se ejecuta en n modos de ejecuci´n con una dis- otribuci´n de pesos w = {fi para i = 1, 2, . . . , n}. El speed-up arm´nico medio ponderado o ose define como: 1 S = T1 /T ∗ = (2.3) n fi i=1 Ridonde T ∗ = 1/Rh es la media arm´nica ponderada del tiempo de ejecuci´n para los n ∗ o omodos de ejecuci´n. o La figura 2.2 muestra el comportamiento del speed-up para tres funciones de pesodistintas.Figura 2.2: Media arm´nica del speed-up con respecto a tres distribuciones de probabi- olidad: π1 para la distribuci´n uniforme, π2 en favor de usar m´s procesadores y π3 en o afavor de usar menos procesadores. Ley de Amdahl. De la expresi´n (2.3) de S se puede derivar la ley de Amdahl ocomo sigue: En primer lugar supongamos que Ri = i y w = (α, 0, 0, . . . , 0, 1 − α). Estoimplica que el sistema usa un modo secuencial puro con una probabilidad de α, o losn procesadores con una probabilidad de 1 − α. Sustituyendo R1 = 1, Rn = n y w en laecuaci´n de S (2.3), obtenemos la siguiente expresi´n para el speed-up: o o n Sn = (2.4) 1 + (n − 1)α A esta expresi´n se le conoce como la ley de Amdahl. La implicaci´n es que S → 1/α o ocuando n → ∞. En otras palabras, independientemente del n´mero de procesadores uque se emplee, existe un l´ ımite superior del speed-up debido a la parte serie de todoprograma. En la figura 2.3 se han trazado las curvas correspondientes a la ecuaci´n (2.4) para o4 valores de α. El speed-up ideal se obtiene para α = 0, es decir, el caso en que no hayparte serie a ejecutar y todo el c´digo es paralelizable. A poco que el valor de α sea no onulo, el speed-up m´ximo empieza a decaer muy deprisa. aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 35. 22 El rendimiento de los sistemas paralelosFigura 2.3: Mejora del rendimiento para diferentes valores de α, donde α es la fracci´n odel cuello de botella secuencial. Esta ley de Amdahl se puede generalizar y es aplicable a cualquier problema quetenga una parte mejorable y otra que no se pueda mejorar. Si llamamos Fm a la fracci´n odel problema que se puede mejorar, la fracci´n de problema que no se puede mejorar oser´ (1 − Fm ). Dado el problema se tiene una magnitud que es la que mejora con arespecto a la inicial, a la magnitud inicial la podemos llamar Mini y a la magnitud unavez aplicadas las mejoras Mmej . La mejora Sup es siempre el cociente entre las dos: Mini Sup = MmejEste cociente se puede poner en funci´n de las fracciones que son mejorables y las que ono, ya que Mini = K · ((1 − Fm ) + Fm ) = K, y Mmej = K · ((1 − Fm ) + Fm /Sm ), dondela K es una proporcionalidad con las unidades de la magnitud del problema, y Sm esel factor de mejora de la parte mejorable. Con todo esto se puede reescribir la mejoratotal del sistema al intentar mejorar Sm veces la parte mejorable como: 1 Sup = Fm 1 − Fm + Smque es la expresi´n de la ley de Amdahl generalizada que se puede aplicar a cualquier oobjeto que se quiera mejorar y s´lo una parte sea mejorable. En el caso de los multi- oprocesadores el factor de mejora de la parte mejorable (paralelizable) es precisamenten, es decir, el n´mero de procesadores. Por otro lado, la fracci´n que no es mejorable u oes la parte serie no paralelizable que llam´bamos α. Con todo esto, sustituyendo los adiferentes valores en la expresi´n anterior, y multiplicando por n/n, se tiene: o 1 n n Sup = 1−α = = α+ n 1 + nα − α 1 + (n − 1)αque es exactamente la misma expresi´n obtenida aplicando el speed-up medio arm´nico. o o La expresi´n de la ley de Amdahl generalizada se puede aplicar a cualquier problema. oPor ejemplo, el rendimiento relativo vectorial/escalar en los procesadores vectoriales,Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 36. 2.2 Modelos del rendimiento del speed-up 23no es m´s que la aplicaci´n de esta ley al caso en que un programa tenga una parte a ovectorizable (parte que va a mejorar) y otra escalar, cuyo rendimiento no va a mejorarpor el hecho de estar utilizando un procesador vectorial.2.2 Modelos del rendimiento del speed-upEn esta secci´n se describen tres modelos de medici´n del speed-up. La ley de Amdahl o o(1967) se basa una carga de trabajo fija o en un problema de tama˜ o fijo. La ley de nGustafson (1987) se aplica a problemas escalables, donde el tama˜ o del problema se nincrementa al aumentar el tama˜ o de la m´quina o se dispone de un tiempo fijo para n arealizar una determinada tarea. El modelo de speed-up de Sun y Ni (1993) se aplicaa problemas escalables limitados por la capacidad de la memoria. En la figura 2.4 semuestra un esquema de los tres modelos utilizados. Figura 2.4: Modelos de rendimiento del speed-up.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 37. 24 El rendimiento de los sistemas paralelos2.2.1 Ley de Amdahl, limitaci´n por carga de trabajo fija oEn muchas aplicaciones pr´cticas, donde es importante la respuesta m´s r´pida posible, a a ala carga de trabajo se mantiene fija y es el tiempo de ejecuci´n lo que se debe intentar oreducir. Al incrementarse el n´mero de procesadores en el sistema paralelo, la carga ufija se distribuye entre m´s procesadores para la ejecuci´n paralela. Por lo tanto, el a oobjetivo principal es obtener los resultados lo m´s pronto posible. En otras palabras, adisminuir el tiempo de respuesta es nuestra principal meta. A la ganancia de tiempoobtenida para este tipo de aplicaciones donde el tiempo de ejecuci´n es cr´ o ıtico se ledenomina speed-up bajo carga fija. Speed-up bajo carga fija. La f´rmula vista en el apartado anterior se basa en ouna carga de trabajo fija, sin importar el tama˜ o de la m´quina. Las formulaciones n atradicionales del speed-up, incluyendo la ley de Amdahl, est´n basadas en un problema ade tama˜ o fijo y por lo tanto en una carga fija. En este caso, el factor de speed-up est´ n aacotado superiormente por el cuello de botella secuencial. A continuaci´n se consideran las dos posibles situaciones: GDP< n ´ GDP≥ n. o oConsideremos el caso donde el GDP= i ≥ n. Supongamos que todos los n procesadoresse usan para ejecutar Wi exclusivamente. El tiempo de ejecuci´n de Wi es o Wi i ti (n) = i∆ n De esta manera el tiempo de respuesta es m Wi i T (n) = i=1 i∆ n Observar que si i < n, entonces ti (n) = ti (∞) = Wi /i∆. Ahora, definimos elspeed-up para carga fija como : m T (1) i=1 Wi Sn = = m Wi i T (n) i=1 i n Observar que Sn ≤ S∞ ≤ A. Existe una gran cantidad de factores que se han ignorado que pueden rebajar elspeed-up. Estos factores incluyen latencias de comunicaciones debidas a retrasos en elacceso a la memoria, comunicaciones a trav´s de un bus o red, o sobrecarga del sistema eoperativo y retrasos causados por las interrupciones. Si Q(n) es la suma de todas lassobrecargas del sistema en un sistema con n procesadores, entonces: m T (1) i=1 Wi Sn = = m Wi i (2.5) T (n) + Q(n) i=1 i n + Q(n)El retraso por sobrecarga Q(n) depende siempre de la aplicaci´n y de la m´quina. Es o amuy dif´ obtener una expresi´n para Q(n). A no ser de que se especifique otra cosa ıcil ose supondr´ que Q(n) = 0 para simplificar la explicaci´n. a o Ley de Amdahl revisada. En 1967, Gene Amdahl deriv´ un speed-up para el ocaso particular donde el computador opera en modo puramente secuencial (GDP= 1)Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 38. 2.2 Modelos del rendimiento del speed-up 25o en modo totalmente paralelo (GDP= n). Es decir, Wi = 0 si i = 1 ´ i = n. En este ocaso, el speed-up viene dado por: W1 + Wn Sn = (2.6) W1 + Wn /n La ley de Amdahl supone que la parte secuencia del programa Wi no cambia conrespecto a tama˜ o n de la m´quina. Sin embargo, la porci´n paralela se ejecuta equita- n a otivamente por los n procesadores reduci´ndose el tiempo de ejecuci´n para esta parte. e o Suponiendo una situaci´n normalizada en la cual W1 = α y Wn = 1 − α se tiene oque W1 + Wn = α + 1 − α = 1. Con esta sustituci´n, la ecuaci´n (2.4) y (2.6) son la o omisma. Igual que en aquella expresi´n α es la fracci´n serie del programa y (1 − α) la o oparalelizable. La ley de Amdahl se ilustra en la figura 2.5. Cuando el n´mero de procesadores uaumenta, la carga ejecutada en cada procesador decrece. Sin embargo, la cantidad totalde trabajo (carga) W1 + Wn se mantiene constante como se muestra en la figura 2.5a.En la figura 2.5b, el tiempo total de ejecuci´n decrece porque Tn = Wn /n. Finalmente, oel t´rmino secuencial domina el rendimiento porque Tn → 0 al hacer n muy grande esiendo T1 constante. Cuello de botella secuencial. La figura 2.5c muestra una gr´fica de la ley de aAmdahl para diferentes valores de 0 ≤ α ≤ 1. El m´ximo speed-up, Sn = n, se obtiene apara α = 0. El m´ ınimo speed-up, Sn = 1, se obtiene para α = 1. Cuando n → ∞, elvalor l´ ımite es S∞ = 1/α. Esto implica que el speed-up est´ acotado superiormente por a1/α, independientemente del tama˜ o de la m´quina. n a La curva del speed-up en la figura 2.5c cae r´pidamente al aumentar α. Esto significa aque con un peque˜ o porcentaje de c´digo secuencial, el rendimiento total no puede ser n osuperior a 1/α. A este α se le denomina cuello de botella secuencial de un programa. El problema de un cuello de botella secuencial no puede resolverse incrementandoel n´mero de procesadores del sistema. El problema real est´ en la existencia de una u afracci´n secuencial (s) del c´digo. Esta propiedad ha impuesto una visi´n muy pesimista o o odel procesamiento paralelo en las pasadas dos d´cadas. e De hecho, se observaron dos impactos de esta ley en la industria de los computadoresparalelos. En primer lugar, los fabricantes dejaron de lado la construcci´n de compu- otadores paralelos de gran escala. En segundo lugar, una parte del esfuerzo investigadorse desplaz´ al campo de desarrollo de compiladores paralelos en un intento de reducir oel valor de α y mejorar de esa forma el rendimiento.2.2.2 Ley de Gustafson, limitaci´n por tiempo fijo oUno de los mayores inconvenientes de aplicar la ley de Amdahl es que el problema (lacarga de trabajo) no puede aumentarse para corresponderse con el poder de c´mputo al oaumentar el tama˜ o de la m´quina. En otras palabras, el tama˜ o fijo impide el escalado n a ndel rendimiento. Aunque el cuello de botella secuencial es un problema importante,puede aliviarse en gran medida eliminando la restricci´n de la carga fija (o tama˜ o fijo o ndel problema). John Gustafson (1988) ha propuesto el concepto de tiempo fijo que dalugar a un modelo del speed-up escalado.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 39. 26 El rendimiento de los sistemas paralelos Figura 2.5: Modelo del speed-up de carga fija y la ley de Amdahl. Escalado para conseguir una mayor precisi´n. Las aplicaciones de tiempo- oreal son la causa principal del desarrollo de un modelo de speed-up de carga fija y laley de Amdahl. Existen muchas otras aplicaciones que enfatizan la precisi´n m´s que o ael tiempo de respuesta. Al aumentar el tama˜ o de la m´quina para obtener mayor n apotencia de c´lculo, queremos incrementar el tama˜ o del problema para obtener una a nmayor carga de trabajo, produciendo una soluci´n m´s precisa y manteniendo el tiempo o ade ejecuci´n. o Un ejemplo de este tipo de problemas es el c´lculo de la predicci´n meteorol´gica. a o oHabitualmente se tiene un tiempo fijo para calcular el tiempo que har´ en unas horas, anaturalmente se debe realizar el c´lculo antes de que la lluvia llegue. Normalmente se asuele imponer un tiempo fijo de unos 45 minutos a una hora. En ese tiempo se tieneque obtener la mayor precisi´n posible. Para calcular la predicci´n se sigue un modelo o of´ ısico que divide el ´rea terrestre a analizar en cuadrados, de manera que los c´lculos a aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 40. 2.2 Modelos del rendimiento del speed-up 27realizados en cada uno de estos cuadrados se puede hacer en paralelo. Si se disponende muchos procesadores se podr´n hacer cuadros m´s peque˜ os con lo que la precisi´n a a n oaumenta manteniendo el tiempo de ejecuci´n. o Speed-up de tiempo fijo. En aplicaciones de precisi´n cr´ o ıtica, se desea resolver elproblema de mayor tama˜ o en una m´quina mayor con el aproximadamente el mismo n atiempo de ejecuci´n que costar´ resolver un problema menor en una m´quina menor. o ıa aAl aumentar el tama˜ o de la m´quina, tendremos una nueva carga de trabajo y por lo n atanto un nuevo perfil del paralelismo. Sea m el m´ximo GDP con respecto al problema aescalado y Wi la carga de trabajo con GDP= i. Observar que, en general, Wi > Wi para 2 ≤ i ≤ m y W1 = W1 . El speed-up detiempo fijo se define bajo el supuesto de que T (1) = T (n), donde T (n) es el tiempode ejecuci´n del problema escalado y T (1) se corresponde con el problema original sin oescalar. As´ tenemos que ı, m m Wi i Wi = + Q(n) i=1 i=1 i n Una f´rmula general para el speed-up de tiempo fijo se define por Sn = T (1)/T (n) = oT (1)/T (1). Por analog´ con la ecuaci´n (2.5) se obtiene la expresi´n para el speed-up ıa o ode tiempo fijo: m m W W S n = m W i=1 i = i=1 i m (2.7) i=1 Wi i i i=1 i + Q(n) n Ley de Gustafson. El speed-up de tiempo fijo fue desarrollado por Gustafson paraun perfil de paralelismo especial con Wi = 0 si i = 1 y i = n. De forma similar a laley de Amdahl, podemos reescribir la ecuaci´n anterior (2.7) como sigue (suponemos oQ(n) = 0): m W W + Wn W1 + nWn S n = i=1 i = 1 m = i=1 Wi W1 + Wn W1 + Wn La figura 2.6a muestra la relaci´n del escalado de la carga de trabajo con el speed-up oescalado de Gustafson. De hecho, la ley de Gustafson puede reformularse en t´rminos ede α = W1 y 1 − α = Wn , bajo la suposici´n de que W1 + Wn = 1, como sigue: o α + n(1 − α) Sn= = n − α(n − 1) α + (1 − α) Obs´rvese que la pendiente de la curva Sn en la figura 2.6c es mucho m´s plana que e aen la figura 2.5c. Esto implica que la ley de Gustafson soporta el rendimiento escalableal aumentar el tama˜ o de la m´quina. La idea es mantener a todos los procesadores n aocupados incrementando el tama˜ o del problema. n2.2.3 Modelo del speed-up limitado por la memoria fijaXian-He Sun y Lionel Ni (1993) han desarrollado un modelo del speed-up limitado porla memoria que generaliza la ley de Amdahl y Gustafson para maximizar el uso de laCPU y la memoria. La idea es resolver el mayor problema posible, limitado por elIngenier´ Inform´tica ıa a Universidad de Valencia
  • 41. 28 El rendimiento de los sistemas paralelos Figura 2.6: Modelo de speed-up de tiempo fijo y la ley de Gustafson.espacio de memoria. En este caso tambi´n es necesario una carga de trabajo escalada, eproporcionando un mayor speed-up, mayor precisi´n y mejor utilizaci´n de los recursos. o o Problemas limitados por el espacio de memoria. Los c´lculos cient´ a ıficos y lasaplicaciones de ingenier´ suelen necesitar una gran cantidad de memoria. De hecho, ıamuchas aplicaciones de los ordenadores paralelos surgen de la limitaci´n de la memoria om´s que de la CPU o la E/S. Esto es especialmente cierto en sistemas multicomputador acon memoria distribuida. Cada elemento de proceso est´ limitado a usar su propia amemoria local por lo que s´lo puede hacer frente a un peque˜ o subproblema. o n Cuando se utiliza un mayor n´mero de nodos para resolver un problema grande, la ucapacidad de memoria total se incrementa de forma proporcional. Esto le permite alsistema resolver un problema escalado mediante el particionamiento del programa y ladescomposici´n del conjunto de datos. o En lugar de mantener fijo el tiempo de ejecuci´n, uno puede querer usar toda la omemoria disponible para aumentar a´n m´s el tama˜ o del problema. En otras palabras, u a nsi se tiene un espacio de memoria adecuado y el problema escalado cumple el l´ ımite deIngenier´ Inform´tica ıa a Universidad de Valencia
  • 42. 2.2 Modelos del rendimiento del speed-up 29tiempo impuesto por la ley de Gustafson, se puede incrementar el tama˜ o del problema, nconsiguiendo una mejor soluci´n o una soluci´n m´s precisa. o o a El modelo de limitaci´n de la memoria se desarroll´ bajo esta filosof´ La idea es o o ıa.resolver el mayor problema posible, limitado unicamente por la capacidad de memoria ´disponible. Speed-up de memoria fija. Sea M el requisito de memoria para un problemadado y W la carga computacional. Ambos factores est´n relacionados de varias formas, adependiendo del direccionamiento del espacio y las restricciones de la arquitectura. As´ ı,podemos escribir W = g(M ) o M = g −1 (W ). En un multicomputador, y en la mayor´ de multiprocesadores, la capacidad total ıade la memoria se incrementa linealmente con el n´mero de nodos disponibles. Sea u mW = i=1 Wi la carga para una ejecuci´n secuencial del programa en un unico nodo, y o ´ ∗ m∗ ∗ ∗W = i=1 Wi la carga para el problema para n nodos, donde m es el m´ximo GDP adel problema escalado. Los requisitos de memoria para un nodo activo est´ limitado apor M = g −1 ( m Wi ). i=1 El speed-up con memoria fija se define de forma similar al caso de la ecuaci´n (2.7): o m∗ ∗ ∗ i=1 Wi Sn = m∗ Wi ∗ i (2.8) i=1 i n + Q(n) La carga de trabajo para la ejecuci´n secuencial en un unico procesador es inde- o ´pendiente del tama˜ o del problema o del tama˜ o del sistema. As´ podemos escribir n n ı, ∗W1 = W 1 = W1 para los tres modelos de speed-up. Consideremos el caso especial condos modos de operaci´n: ejecuci´n secuencial frente a perfectamente paralela. La mejora o o a o ∗en la memoria est´ relacionada con la carga escalada mediante la f´rmula Wn = g ∗ (nM ),donde nM es el incremento en la capacidad de la memoria para un multicomputadorcon n nodos. Supongamos adem´s que g ∗ (nM ) = G(n)g(M ) = G(n)Wn , donde Wn = g(M ) y g ∗ aes una funci´n homog´nea. El factor G(n) refleja el incremento en la carga al aumentar o ela memoria n veces. Esto nos permite rescribir la f´rmula anterior bajo la suposici´n o ode que Wi = 0 si i = 1 o n y Q(n) = 0: ∗ ∗ ∗ W1 + Wn W1 + G(n)Wn Sn = ∗ ∗ /n = (2.9) W1 + Wn W1 + G(n)Wn /n Rigurosamente hablando este modelo s´lo es v´lido bajo estas dos suposiciones: (1) o aEl conjunto de toda la memoria forma un espacio global de direcciones (en otras pala-bras, suponemos un espacio de memoria compartido distribuido); (2) Todo el espacio dememoria disponible se utiliza para el problema escalado. Existen tres casos especialesdonde se puede aplicar la ecuaci´n (2.9): o1. G(n) = 1. Se corresponde con el caso donde el tama˜ o del problema es fijo, siendo n equivalente a la ley de Amdahl.2. G(n) = n. Se aplica al caso en el que la carga se incrementa n veces cuando la memoria se incrementa n veces. En este caso, la ecuaci´n se corresponde con la o ley de Gustafson con un tiempo de ejecuci´n fijo. o3. G(n) > n. Se corresponde con la situaci´n donde la carga computacional se incre- o menta m´s r´pidamente que los requisitos de memoria. En este caso, el modelo de a a memoria fija da posiblemente todav´ un mayor speed-up que el de tiempo fijo. ıaIngenier´ Inform´tica ıa a Universidad de Valencia
  • 43. 30 El rendimiento de los sistemas paralelos Figura 2.7: Modelo de speed-up de memoria fija.De este an´lisis se pueden obtener las siguientes conclusiones: la ley de Amdahl y la ade Gustafson son casos particulares del modelo de tiempo fijo. Cuando la computaci´n ocrece m´s r´pidamente que los requisitos de memoria, lo que es frecuente en el caso a ade algunas simulaciones cient´ ıficas y aplicaciones de ingenier´ el modelo de memoria ıa, ∗fija (figura 2.7) da lugar a un mayor speed-up (es decir, Sn ≥ S n ≥ Sn ) y una mejorutilizaci´n de los recursos. o2.3 Modelos del rendimiento seg´ n la granularidad uEl contenido de esta secci´n y resto del cap´ o ıtulo se encuentran en el libro [Sto93]. Un par´metro que se suele a dar para caracterizar los sistemas multiprocesadoreses el rendimiento de pico o rendimiento m´ximo del sistema. Habitualmente es- ate rendimiento de pico se suele calcular como el n´mero de procesadores del sistema umultiplicado por el rendimiento de cada uno de los procesadores. Cuando el sistema opera al rendimiento m´ximo todos los procesadores est´n rea- a alizando un trabajo util; ning´n procesador est´ parado y ning´n procesador ejecuta ´ u a ualguna instrucci´n extra que no estuviera en el algoritmo original. En este estado ode rendimiento de pico todos los n procesadores est´n contribuyendo al rendimiento aefectivo del sistema y la velocidad de procesamiento viene incrementada por un factorn. El estado de rendimiento m´ximo o de pico es un estado raro que dif´ a ıcilmente sepuede alcanzar. Hay varios factores que introducen ineficiencia. Algunos de estosfactores son los siguientes:• Retrasos introducidos por las comunicaciones entre procesos.• La sobrecarga de trabajo debida a la necesidad de sincronizar el trabajo entre los distintos procesadores.• La p´rdida de eficiencia cuando alg´n procesador se queda sin trabajo para realizar. e u• La p´rdida de eficiencia cuando uno o m´s procesadores realizan alg´n esfuerzo e a u in´til. uIngenier´ Inform´tica ıa a Universidad de Valencia
  • 44. 2.3 Modelos del rendimiento seg´n la granularidad u 31• El coste de procesamiento para controlar el sistema y la programaci´n de operacio- o nes. Estos problemas se hacen realmente serios cuando el n´mero de procesadores es ele- uvado, es decir, es dif´ mantener un bajo grado de ineficiencia al aumentar el n´mero ıcil ude procesadores. Normalmente se obtiene una eficiencia bastante alta con sistemascon pocos procesadores (4-16) pero esta eficiencia se ve seriamente reducida cuandoel n´mero de procesadores es alto. Dar el rendimiento de pico de un multiprocesador ucon pocos procesadores puede dar una idea de su rendimiento efectivo, pero el rendi-miento de pico en un multiprocesador con muchos procesadores s´lo debe considerarse ocomo parte de las especificaciones, ya que no tiene por qu´ dar una estimaci´n real del e orendimiento del sistema. A continuaci´n se pretende estudiar la influencia de la sobrecarga de procesamiento opor el hecho de a˜ adir m´s procesadores al c´lculo. Se va a comprobar que el rendi- n a amiento de un sistema multiprocesador depende fuertemente de la relaci´n R/C, donde oR es una unidad de ejecuci´n (con unidades de tiempo o instrucciones por segundo), y oC es la sobrecarga debida a las comunicaciones producidas por R. El cociente de los dosda la cantidad de sobrecarga que aparece por unidad de c´mputo. Cuando la relaci´n es o opeque˜ a no resulta provechoso paralelizar porque aparece mucha sobrecarga. Cuando nla relaci´n da un n´mero muy alto entonces es beneficioso paralelizar puesto que la so- o ubrecarga que aparece es peque˜ a. Normalmente el factor R/C da un valor alto siempre nque se divida el problema en trozos grandes, ya que entonces las comunicaciones ser´napeque˜ as comparativamente. n El factor R/C da tambi´n idea de la granularidad del sistema, es decir, de lo mucho eque se ha dividido el problema en pedazos:Grano grueso: Un sistema cuyo paralelismo es de grano grueso suele tener un factor R/C relativamente grande puesto que los trozos R son grandes y producen un coste de comunicaciones relativamente peque˜ o. Si un sistema es de grano grueso n es beneficioso paralelizar puesto que R/C es grande, pero si los trozos en que se divide el problema son grandes, el problema queda dividido en pocos trozos y el rendimiento m´ximo no es muy alto (pocas unidades funcionando en paralelo). aGrano fino: Un sistema cuyo paralelismo es de grano fino suele tener un factor R/C peque˜ o puesto que los trozos R en que se ha dividido el problema son peque˜ os. n n Normalmente, si se divide el problema en trozos muy peque˜ os se obtiene un R/C n peque˜ o por lo que no resulta muy beneficioso paralelizar, pero al ser los trozos n peque˜ os el problema puede quedar muy dividido y cada unidad funcional puede n realizar una tarea distinta. En estos casos se podr´ alcanzar un gran rendimiento ıa por el gran paralelismo existente, pero no se alcanza puesto que el factor R/C es peque˜ o. n En resumen: si se tiene un problema muy paralelizable (divisible en muchos peda-zos) normalmente no va a ser interesante paralelizar tanto puesto que las sobrecargas novan a permitir aprovechar todo ese rendimiento potencial. Si un problema es poco pa-ralelizable (divisible en pocos pedazos) en rendimiento m´ximo alcanzable es peque˜ o, a nya que se ha dividido el problema en pocos trozos que se ejecutar´n en paralelo, pero el aparalelismo obtenido ser´ bastante eficiente puesto que las comunicaciones entre trozos agrandes son escasas.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 45. 32 El rendimiento de los sistemas paralelos2.3.1 Modelo b´sico: 2 procesadores y comunicaciones no so- a lapadasVamos a suponer que cierta aplicaci´n tiene M tareas a realizar las cuales se pueden ollevar a cabo de forma paralela. El objetivo est´ en ejecutar estas M tareas en un asistema con N procesadores en el menor tiempo posible. Para empezar el an´lisis se acomenzar´ con N = 2 procesadores y luego se extender´ el razonamiento a cualquier a an´mero de procesadores. u Como punto de partida realizaremos las siguientes suposiciones (m´s tarde se pueden arelajar para obtener resultados m´s realistas): a 1. Cada tarea se ejecuta en R unidades de tiempo. 2. Cada tarea de un procesador se comunica con todas las tareas del resto de proce- sadores con un coste de sobrecarga de C unidades de tiempo. El coste de comuni- caciones con las tareas en el mismo procesador es cero. Si se tienen dos procesadores se pueden repartir las tareas entre ellos. En un casoextremo se le pueden dar todas las tareas a un unico procesador, y en el otro caso ´extremo se puede realizar un reparto igualitario de tareas entre los dos procesadores.Entre estos dos extremos se tienen situaciones donde un procesador tiene k tareasmientras que el otro tiene (M − k) donde k puede ser cualquier reparto entre 0 yM . En cualquier caso el tiempo de ejecuci´n va a tener dos t´rminos, uno debido al o ecoste de ejecuci´n de las tareas (funci´n de R) y otro debido a la sobrecarga por las o ocomunicaciones (funci´n de C). La expresi´n que se obtiene para el tiempo de ejecuci´n o o o(Te ) es la siguiente: Te = R max{M − k, k} + C(M − k)k (2.10) El tiempo propio de ejecuci´n de las tareas es el t´rmino R max(M − k, k) y es o elineal con k. El t´rmino debido a la sobrecarga es C(M − k)k y es un t´rmino que e ecrece cuadr´ticamente con k. Cuanto m´s repartidas se encuentran las tareas menor es a ael t´rmino debido a R y mayor es el debido a C. Esto significa que, o bien el tiempo em´ ınimo se obtiene cuando las tareas est´n igualitariamente repartidas, o bien cuando as´lo un procesador ejecuta todas las tareas, no hay t´rmino medio. o e Las contribuciones de R y C al tiempo de ejecuci´n total se pueden ver mejor en ola figura 2.8. En la figura 2.8(a) se muestra la situaci´n en la cual el coste de las ocomunicaciones es tan alto que resulta m´s provechoso ejecutar todas las tareas en aun unico procesador. En la figura 2.8(b) se da la situaci´n en la cual el coste de las ´ ocomunicaciones es menor que la ganancia obtenida por el hecho de paralelizar, por loque en este caso es rentable dividir las tareas entre los dos procesadores. Para obtener la relaci´n R/C a partir de la cual es beneficioso paralelizar basta con oigualar el tiempo de ejecuci´n con reparto igualitario (k = M/2 reparto igualitario) con oel tiempo de ejecuci´n con un unico procesador (RM ) e igualar los t´rminos debidos a o ´ eR y C, es decir: M MM RM = R + C 2 2 2 M MM R =C 2 2 2realizando unas operaciones b´sicas de sustituci´n se tiene finalmente una cota para a oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 46. 2.3 Modelos del rendimiento seg´n la granularidad u 33R/C: R M = (2.11) C 2esto quiere decir que si R/C > M/2 entonces resulta beneficioso paralelizar, y en casocontrario resulta mejor dejar todas las tareas en un unico procesador. ´ 110 M =50 Tiempo total R/C =10 90 Tiempo total de ejecución 70 Tiempo de comunicaciones 50 30 Tiempo de ejecución 10 0 10 20 30 40 50 Parámetro de reparto k (a) 60 M =50 R/C =40 50 Tiempo total de ejecución Tiempo total 40 Tiempo de ejecución 30 20 Tiempo de comunicaciones 10 0 10 20 30 40 50 Parámetro de reparto k (b) Figura 2.8: Tiempo de ejecuci´n para dos factores R/C diferentes. o2.3.2 Extensi´n a N procesadores oEn el caso de tener N procesadores se puede suponer que cada uno ejecuta ki tareas, demanera que M = N ki . Con esto se puede generalizar la ecuaci´n 2.10 obteni´ndose i=1 o eIngenier´ Inform´tica ıa a Universidad de Valencia
  • 47. 34 El rendimiento de los sistemas paralelosla siguiente expresi´n para el tiempo total de ejecuci´n con N procesadores: o o C N Te = R max{ki } + 2 ki (M − ki ) i=1 (2.12) = R max{ki } + C 2 M − N ki 2 i=1 2 Al igual que ocurr´ en el caso anterior, el m´ ıa ınimo de esta funci´n se obtiene, o bien ocuando s´lo un procesador tiene todas las tareas, o bien, cuando se reparten de forma oigualitaria las tareas. En este ultimo caso el reparto igualitario es un tanto especial, ya ´que se deben repartir d´ndole a cada procesador un n´mero M de tareas hasta que a u N Mqueden menos de N tareas que se le asignan a uno de los procesadores que queden;esto significa que pueden haber algunos procesadores que no reciban ninguna tarea. Por lo tanto, el reparto igualitario deja a p procesadores con M tareas, a otro se Nle asignan M − M p tareas, y el resto de procesadores no tiene ninguna. Se puede Ndemostrar que este reparto, y no otro, es el que da el m´ ınimo. La demostraci´n es ocomo sigue: Supongamos que k1 = M es el m´ximo n´mero de tareas que tiene un N a uprocesador. Con el reparto propuesto s´lo puede haber un procesador con menos de oestas tareas a menos que no tenga ninguna. Vamos a suponer que hay dos procesadoresque tienen menos tareas, en vez de uno, y veremos c´mo al aumentar las tareas de uno ode ellos se reduce el tiempo total de ejecuci´n. o En efecto, sean k2 y k3 las tareas asignadas a dos procesadores que cumplen quek1 > k2 ≥ k3 ≥ 1. Supongamos a continuaci´n que pasamos una tarea del procesador oque tiene k3 al procesador que tiene k2 . El coste de ejecuci´n debido a R no cambia, oya que el m´ximo de tareas sigue siendo el mismo. Sin embargo el tiempo de ejecuci´n a odebido a las comunicaciones var´ En efecto, inicialmente el t´rmino exacto que var´ ıa. e ıaes: C C 2 M 2 − (k1 + k2 + k3 + . . .) 2 2 2 2si ahora se hace k2 = k2 + 1 y k3 = k3 − 1, el t´rmino anterior pasa a ser: e C = 2 (M 2 − (k1 + (k2 + 1)2 + (k3 − 1)2 + . . .)) 2 C = 2 (M 2 − (k1 + k2 + 1 + 2k2 + k3 + 1 − 2k3 + . . .)) 2 2 2 C = 2 (M 2 − (k1 + k2 + k3 + . . .)) − C (1 + 2k2 − 2k3 ) 2 2 2 2 C < 2 (M 2 − (k1 + k2 + k3 + . . .)) 2 2 2es decir, al pasar una tarea de un procesador que tiene unas tareas k3 a otro procesadorque tiene las mismas o m´s tareas k2 pero sin llegar al m´ximo, se reduce el tiempo de a aejecuci´n en un factor (C/2)(1 + 2k2 − 2k3 ), que como k2 ≥ k3 siempre ser´ mayor que o acero. El umbral del factor R/C a partir del cual resulta interesante el reparto de tareascoincide con el visto para los dos procesadores y es R/C = M/2. Para hacer la demos-traci´n para N procesadores cualesquiera basta con igualar el tiempo de ejecuci´n con o oun procesador (RM ) y el tiempo de ejecuci´n con los N procesadores: o RM CM 2 CM 2 RM = + − N 2 2N N −1 M 1 R =C 1− N 2 NIngenier´ Inform´tica ıa a Universidad de Valencia
  • 48. 2.3 Modelos del rendimiento seg´n la granularidad u 35 R 1 M 1 1− = 1− C N 2 N R M = C 2 Resulta interesante calcular el speed-up para ver c´mo influye el factor R/C en la omejora del rendimiento por el hecho de a˜ adir procesadores al sistema. El speed-up es nsiempre la relaci´n entre el tiempo de ejecuci´n con un procesador y con muchos: o o RM Speedup = RM CM 2 CM 2 + − N 2 2N R = R CM (1 − 1/N ) + N 2 R N = C R M (N − 1) + C 2 R M (N −1) Si C 2 entonces Speedup ≈ N , es decir, si el tiempo debido a la sobrecargaes muy peque˜ o comparado con el coste de ejecuci´n entonces el sistema es bastante n oeficiente puesto que el speed-up crece con el n´mero de procesadores. Llega un momento uen que no importa lo grande que sea el factor R/C, ya que siempre hay un n´mero de uprocesadores a partir del cual este factor ya no se puede considerar peque˜ o y el speed-up ndeja de crecer linealmente con N . Al igual que ocurre con la ley de Amdahl llega un momento en que a˜ adir m´s n aprocesadores aumenta muy poco el rendimiento lleg´ndose a un l´ a ımite de mejora queno se puede superar. En efecto, haciendo el l´ ımite para N → ∞, se llega a que laas´ ıntota para el speed-up es: R Sasint = 2 CM Como resumen se puede decir que la sobrecarga debida a las comunicaciones juegaun gran papel en la mejora del rendimiento en un sistema. No importa el rendimientode pico que pueda tener un sistema; si la sobrecarga debida a las comunicaciones esrelativamente alta, bastar´n unos pocos procesadores para obtener mejor rendimiento aque con muchos procesadores. En esto, la correcta divisi´n del software, es decir, la ogranularidad de la aplicaci´n, juega tambi´n un papel importante en el rendimiento o efinal del sistema.Tareas no uniformesAl principio de esta secci´n se hac´ la suposici´n de que todas las M tareas se ejecuta- o ıa oban en el mismo tiempo R. El caso habitual es que cada tarea tenga su propio tiempode ejecuci´n lo que puede complicar bastante el an´lisis del reparto de tareas. o a La forma de repartir las tareas cuando cada una tiene un tiempo de ejecuci´n dife- orente ser´ la siguiente: ıaIngenier´ Inform´tica ıa a Universidad de Valencia
  • 49. 36 El rendimiento de los sistemas paralelos1. El t´rmino debido a R se minimiza siempre que se tenga un reparto igualitario, e pero la igualdad se refiere al tiempo y no al n´mero de tareas, por lo tanto se u intentar´ repartir las tareas de manera que el tiempo de ejecuci´n de todos los a o procesadores sea el mismo. Esto implicar´ que algunos procesadores tengan m´s a a tareas que otros.2. El t´rmino debido a las comunicaciones se puede minimizar realizando un reparto e lo m´s desparejo posible. Esto significa que manteniendo la regla anterior hay a que intentar agrupar las tareas de manera que unos procesadores tengan muchas y otros procesadores tengan muy pocas.3. Las dos reglas anteriores no aseguran que se vaya a obtener un tiempo de ejecuci´n o m´ınimo por lo que habr´ que revisar el reparto obtenido. a Esta forma de repartir tareas entre procesadores no asegura la obtenci´n del tiem- opo m´ınimo de ejecuci´n aunque puede llegar a acercarse bastante. Existen m´todos o eestad´ ısticos para obtener de forma segura repartos mejores.2.3.3 Otras suposiciones para las comunicacionesEn la secci´n anterior se hab´ supuesto que unas tareas en unos procesadores se comu- o ıanicaban con otras tareas en otros procesadores y viceversa, lo que provocaba la aparici´n ode un t´rmino debido a las comunicaciones que crec´ de forma cuadr´tica con el n´mero e ıa a ude tareas. A continuaci´n se comentan otras suposiciones algo m´s optimistas y que se o aencuentran tambi´n en sistemas procesadores reales. eUn modelo con coste de comunicaciones linealEn este modelo se va a suponer que las tareas de un procesador se comunican con elresto de tareas del resto de procesadores, pero en vez de suponer que cada tarea deun procesador se comunica con cada tarea del resto de procesadores, lo que se va asuponer es que cada tarea de un procesador se comunica con el resto de procesadores yno con cada tarea dentro de cada procesador; el procesador ya se encarga de difundiresta comunicaci´n entre las tareas. De esta manera el coste de comunicaciones ser´ o aproporcional al coste por tarea y al n´mero de procesadores, siendo un coste linean con uel n´mero de tareas: u Te = R max{ki } + CN (2.13) Aunque la f´rmula es diferente a la del modelo obtenido anteriormente, se puede odemostrar que aplicando los mismos criterios de reparto utilizados entonces (repartoigualitario pero intentando que sea a la vez disparejo) se obtiene el tiempo de ejecuci´n om´ınimo. La diferencia es que con este modelo hay un mayor speed-up disponible. En una distribuci´n equitativa el primer t´rmino de la ejecuci´n es aproximadamente o e oRM/N que decrece al aumentar N. Por otro lado, el t´rmino debido a las comunicaciones e(CN ) crece al aumentar N, por lo que llega un momento a partir del cual el tiempo dejade disminuir para hacerse m´s grande. Esto quiere decir que a˜ adir m´s procesadores a n ano s´lo no disminuye el tiempo de ejecuci´n sino que lo aumenta. El tiempo de ejecuci´n o o oa partir del cual a˜ adir m´s procesadores empeora el rendimiento es un m´ n a ınimo localde la expresi´n (2.13), por lo que es f´cil calcular el n´mero de procesadores umbral o a uderivando la expresi´n anterior con respecto a N e igual´ndola a cero para calcular el o aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 50. 2.3 Modelos del rendimiento seg´n la granularidad u 37m´ ınimo: RM − +C =0 N2 RM C= N2dando finalmente que: RM Numbral = C Esta ra´ cuadrada que se obtiene es un desastre. Uno espera que M tareas puedan ızllevarse a cabo velozmente en N = M procesadores, pero este modelo dice que debidoal coste de las comunicaciones, el paralelismo efectivo se reduce a la ra´ cuadrada de lo ızque se hab´ previsto. Estas malas noticias se pueden mitigar con un factor R/C m´s ıa aalto por lo que la granularidad gruesa es mejor en este caso, aunque este efecto tambi´n ese encuentra dentro de la ra´ız. Estos resultados son todav´ m´s pesimistas si se considera el coste de los procesado- ıa ares extra en relaci´n con su beneficio. Dado que el tiempo de ejcuci´n ya no disminuye o ouna vez alcanzado Numbral se puede decir que, mucho antes de que N llegue a este um-bral, se habr´ alcanzado el punto donde la mejora obtenida al a˜ adir un procesador no a njustifica su coste. Por ejemplo, una aplicaci´n que en principio tiene unas 10.000 tareas ose podr´ ejecutar como mucho en 100 procesadores para obtener el tiempo m´ ıa ınimo, peros´lo en unos 10 si adem´s queremos que el sistema sea econ´micamente aprovechable. o a o El modelo presentado difiere del modelo original en el segundo t´rmino. En el modelo eoriginal el coste del segundo t´rmino crec´ de forma cuadr´tica con la constante M . Las e ıa acontribuciones al tiempo de ejecuci´n variaban inversamente con N . Para N grande, oel tiempo de ejecuci´n se hac´ del orden de CM 2 /2 que no crece por mucho que se o ıaincremente N . Como ambos miembros de la ecuaci´n decrec´ con N el tiempo siempre o ıandecrece al aumentar el n´mero de procesadores. u En el modelo propuesto ahora el segundo t´rmino crece con N y esto es por lo que eaparece el umbral a partir del cual el rendimiento decae. Los dos modelos muestranque la penalizaci´n por sobrecarga existe y que se manifiesta limitando el uso efectivo odel paralelismo. En un caso el paralelismo viene limitado por el n´mero de tareas a uejecutar y en el otro viene limitado por el n´mero de procesadores efectivos que son uinteresantes utilizar.Un modelo optimista: comunicaciones completamente solapadasHasta ahora se ha supuesto que el procesador se encontraba ocupado, o bien realizandoun trabajo util R, o bien, comunic´ndose con el resto de procesadores y tareas. Esta ´ asuposici´n es cierta puesto que lo normal es que haya recursos compartidos y no se opuedan hacer las dos cosas al mismo tiempo. Sin embargo, hay sistemas donde se puedeconsiderar que mientras se est´ realizando la comunicaci´n tambi´n se est´ llevando a a o e acabo un trabajo util. A continuaci´n se propone un modelo para el caso extremo en el ´ ocual todo el coste de comunicaciones se puede llevar a cabo en paralelo con el trabajoutil.´ Para este nuevo modelo se supone que si el coste debido a las comunicaciones est´ apor debajo del trabajo util, entonces s´lo se considera el trabajo util y no hay por tanto ´ o ´Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 51. 38 El rendimiento de los sistemas paralelosning´n coste adicional por el hecho de comunicar unas tareas con otras. Esto se expresa uen la siguiente ecuaci´n: o N C Te = max R max {ki } , ki (M − ki ) (2.14) 2 i=1 Las gr´ficas de la figura 2.8 pueden servir para ver el resultado de esta ecuaci´n a opara dos procesadores. En esta figura aparecen las dos componentes, una debida a lascomunicaciones (par´bola invertida), y la otra debida al trabajo util (l´ a ´ ıneas rectas),el m´ximo formado por ambos t´rminos da el tiempo de ejecuci´n para este modelo a e ooptimista. Las intersecciones de ambas curvas dan las situaciones donde el tiempode ejecuci´n es m´ o ınimo. Si no hay intersecciones porque las comunicaciones se sola-pan completamente con el trabajo util entonces el m´ ´ ınimo se encuentra en el repartoequitativo. Los puntos de intersecci´n de ambos t´rminos se dan cuando: o e R(M − k) = C(M − k)kobteni´ndose entonces el reparto: e R k= Csiempre que 1 ≤ k ≤ M/2. Si se sustituye esta condici´n en la ecuaci´n (2.14), el tiempo de ejecuci´n ser´: o o o a R(M − R/C)y el speed-up queda como: R 1/(1 − ) CM Como k est´ restringido en un rango, lo mismo le ocurrir´ a R/C quedando 1 ≤ a aR/C ≤ M/2. Para R/C dentro de este rango, el speed-up para dos procesadores est´ en ael rango de 1 a 2 y es m´ximo cuando R/C = M/2 que es el mismo valor obtenido para ael primer modelo de todos. Si no hay solapamiento completo entonces la distribuci´nobuena ya no es la igualitaria, aunque en realidad ´sta se puede obtener haciendo R/C elo suficientemente grande. Para N procesadores este modelo es f´cil de analizar debido a los resultados siguien- ates. Para cualquier valor ki m´ximo obtenido del tiempo de ejecuci´n (t´rmino R), el a o ereparto equitativo da el m´ximo tiempo de comunicaciones. Por lo tanto, la condici´n a oa partir de la cual se da el tiempo m´ınimo (reparto igualitario) ser´ cuando coincidan ael tiempo m´ ınimo de ejecuci´n y el m´ximo de comunicaciones: o a RM CM 2 1 = 1− N 2 Nque para N grande ocurre m´s o menos cuando: a R M = N C 2Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 52. 2.3 Modelos del rendimiento seg´n la granularidad u 39En este caso, para un tiempo total m´ınimo, el n´mero de procesadores en funci´n de u oR/C y M viene dado por la siguiente funci´n: o 2 R N= MCobteni´ndose que la opci´n ´ptima para el n´mero de procesadores es inversamente e o o uproporcional al n´mero de tareas disponibles. u Si aumenta el paralelismo disponible (M ) la mejor estrategia consiste en disminuirel n´mero de procesadores. El decrecimiento de N con M viene del hecho de que el ucoste de la sobrecarga crece M veces m´s r´pido que el tiempo de ejecuci´n. a a oUn modelo con varios enlaces de comunicacionesUna suposici´n com´n al resto de modelos expuestos hasta ahora, era que el paralelis- o umo permite que el tiempo de ejecuci´n (R) se solape entre los procesadores, pero las ooperaciones de sobrecarga (C) se realizaban de forma secuencial. Si se considera quelas operaciones de sobrecarga son solamente las debidas a las comunicaciones, entoncesestos modelos sirven para sistemas en los cuales s´lo existe un canal de comunicaci´n o ocom´n para todos los procesadores. Este es el caso en el que todos los procesadores uest´n conectados a un bus com´n o red en anillo o comparten una memoria com´n a a u ula que se accede de forma exclusiva. Es posible replicar los enlaces de comunicaci´n (redes complejas) y otras carac- oter´ ısticas arquitect´nicas que contribuyan al t´rmino de sobrecarga del modelo. Ha- o eciendo esto se obtiene que C ya no es constante sino que se convierte en una funci´n ode N . Supongamos que se tiene un sistema en el cual los enlaces de intercomunicaci´n ocrecen con N de manera que cada procesador tiene un enlace dedicado a cada unodel resto de procesadores. Con esta suposici´n las comunicaciones entre procesadores oquedan solapadas unas con otras. Sin embargo, incluso con O(N 2 ) enlaces, todav´ no ıaes posible establecer m´s de O(N ) conversaciones concurrentes porque cada procesador apuede enviar o recibir informaci´n de un unico procesador a un tiempo. o ´ En este caso se puede dividir el segundo t´rmino de la ecuaci´n (2.12) por N obte- e oni´ndose: e N C Te = R max{ki } + ki (M − ki ) (2.15) 2N i=1Esta ecuaci´n supone que un procesador est´ o calculando o comunicando o sin hacer o anada, y que el coste total debido a las comunicaciones decrece inversamente con N , yaque pueden haber N conversaciones a un tiempo. El tiempo sin hacer nada viene enparte por el tiempo que tienen que esperar los procesadores que acaban pronto a losque les cuesta m´s. a Los dos t´rminos de la ecuaci´n (2.15) tienden a decrecer con N . Esta expresi´n es e o omuy similar a la del modelo inicial de la ecuaci´n (2.12) salvo por la aparici´n de N en o oel segundo t´rmino. Una distribuci´n igualitaria minimiza el primer t´rmino, pero no e o eel segundo que sigue siendo m´ınimo para el caso m´s dispar posible. Suponiendo como asiempre que el reparto es igualitario, el m´ ınimo tiempo posible ser´: a RM CM 2 1 Te = + 1− N 2N NIngenier´ Inform´tica ıa a Universidad de Valencia
  • 53. 40 El rendimiento de los sistemas paralelos El paralelismo es util en este caso pero s´lo hasta que el tiempo de ejecuci´n deja ´ o ode decrecer cuando se a˜ aden nuevos procesadores. Esto quiere decir que este tiempo nde ejecuci´n alcanza un m´ o ınimo. Para calcular este m´ ınimo se deriva Te con respecto aN e igualamos a cero: RM CM 2 2CM 2 − 2 − + =0 N 2N 2 2N 3 CM CM =R+ N 2obteni´ndose que: e CM 2 N= CM = 2R <2 R+ 2 CM +1Esto quiere decir que el tiempo de ejecuci´n siempre mejora con la adici´n de procesa- o odores, salvo que se tenga un procesador solamente. Para saber si N procesadores dan mejor tiempo que un unico procesador hay que ´igualar los tiempos de un procesador con los de varios: RM CM 2 1 RM = + 1− N 2N NSimplificando se obtiene que el punto a partir del cual es menor el tiempo con Nprocesadores se da cuando se cumple: R M = C 2N En este caso el factor de granularidad R/C y N est´n inversamente relacionados aen el umbral. Por lo tanto, cuanto m´s grande sea N menor granularidad se puede apermitir. En el umbral la m´quina paralela tiene un coste realmente alto, por un lado ano se gana nada en tiempo y, por otro, el n´mero de procesadores es del orden de N y uel n´mero de enlaces es del orden de N 2 . u La conclusi´n de este modelo es que a˜ adiendo enlaces al sistema (aumentando el o nancho de banda de las comunicaciones) se puede permitir una granularidad menor queen otros casos. Sin embargo, esta menor granularidad genera un coste que crece m´s ar´pido que s´lo el incremento del coste de procesamiento. La decisi´n de si el aumento a o ode velocidad obtenido por el aumento del ancho de banda vale la pena o no, dependefuertemente de la tecnolog´ utilizada para las comunicaciones entre procesadores. ıaResumen de los modelos presentadosA continuaci´n se resumen los hallazgos encontrados a partir de los modelos presentados: o1. Las arquitecturas multiprocesador producen un coste por sobrecarga adicional que no est´ presente en los mono-procesadores, procesadores vectoriales, u otros tipos a de procesadores donde hay un unico flujo de instrucciones. El coste por sobrecarga ´ incluye el coste de preparaci´n de tareas, contenci´n en los recursos compartidos, o o sincronizaci´n, y comunicaciones entre procesadores. o2. Aunque el tiempo de ejecuci´n para un trozo de programa tiende a disminuir con o el n´mero de procesadores que trabajan en ese trozo de programa. El coste por u sobrecarga tiende a crecer con el n´mero de procesadores. De hecho, es posible u que el coste de la sobrecarga m´s r´pido que lineal en el n´mero de procesadores. a a uIngenier´ Inform´tica ıa a Universidad de Valencia
  • 54. 2.3 Modelos del rendimiento seg´n la granularidad u 413. La relaci´n R/C es una medida de la cantidad de ejecuci´n de programa (tiempo o o de ejecuci´n util) por unidad de sobrecarga (tiempo de comunicaciones), dentro de o ´ la implementaci´n de un programa en una arquitectura espec´ o ıfica. Cuando m´sa grande sea esta relaci´n m´s eficiente ser´ la computaci´n, ya que una porci´n o a a o o peque˜ a del tiempo est´ dedicada a la sobrecarga. Sin embargo, si la relaci´n n a o R/C se hace grande al particionar el c´lculo en pocos trozos grandes en vez de a muchos trozos peque˜ os, el paralelismo disponible se reduce enormemente, lo que n limita la mejora que se puede obtener de un multiprocesador. Con esto aparece un dilema claro: por un lado R/C debe ser peque˜ o para poder ntener un gran n´mero de tareas potencialmente paralelas, y por otro lado, R/C debe user grande para evitar los costes de sobrecarga. Debido a esto no se puede esperar tenerun sistema de alto rendimiento sin m´s que construir el multiprocesador con el mayor an´mero de procesadores posible permitido por la tecnolog´ u ıa. Existe alg´n n´mero m´ximo de procesadores por debajo del cual es coste est´ u u a ajustificado, y este n´mero m´ximo depende mayormente de la arquitectura del sistema, u ala tecnolog´ utilizada (especialmente comunicaciones), y de las caracter´ ıa ısticas de laaplicaci´n espec´ o ıfica que se tenga que ejecutar.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 55. 42 El rendimiento de los sistemas paralelosIngenier´ Inform´tica ıa a Universidad de Valencia
  • 56. Cap´ ıtulo 3Procesadores vectorialesEn el camino hacia los multiprocesadores y multicomputadores nos encontramos conlos procesadores vectoriales que son una forma tambi´n de procesamiento paralelo. e Normalmente el c´lculo cient´ a ıfico y matem´tico precisa de la realizaci´n de un a on´mero elevado de operaciones en muy poco tiempo. La mayor´ de los problemas u ıaf´ ısicos y matem´ticos se pueden expresar f´cilmente mediante la utilizaci´n de matrices a a oy vectores. Aparte de que esto supone una posible claridad en el lenguaje, va a permitirexplotar al m´ximo un tipo de arquitectura espec´ a ıfica para este tipo de tipos de datos,y es la de los procesadores vectoriales. El paralelismo viene de que al operar con matrices, normalmente, los elementosde las matrices son independientes entre s´ es decir, no existen dependencias de datos ı,dentro de las propias matrices, en general. Esto permite que todas las operaciones entreelementos de unas matrices con otras puedan realizarse en paralelo, o al menos en elmismo cauce de instrucciones sin que haya un conflicto entre los datos. Otra ventaja del c´lculo matricial es que va a permitir replicar las unidades de c´lculo a asin necesidad de replicar las unidades de control. Se tendr´ en este caso una especie de ıamultiprocesador sin necesidad de tener que replicar tanto la unidad de control como lade c´lculo, eso s´ el n´mero de tareas que un sistema de este tipo podr´ abordar son a ı, u ıalimitadas. Los procesadores vectoriales se caracterizan porque van a ofrecer una serie de ope-raciones de alto nivel que operan sobre vectores, es decir, matrices lineales de n´meros. uUna operaci´n t´ o ıpica de un procesador vectorial ser´ la suma de dos vectores de coma ıaflotante de 64 elementos para obtener el vector de 64 elementos resultante. La instruc-ci´n en este caso es equivalente a un lazo software que a cada iteraci´n opera sobre o ouno de los 64 elementos. Un procesador vectorial realiza este lazo por hardware apro-vechando un cauce m´s profundo, la localidad de los datos, y una eventual repetici´n a ode las unidades de c´lculo. a Las instrucciones vectoriales tienen unas propiedades importantes que se resumen acontinuaci´n aunque previamente ya se han dado unas pinceladas: o• El c´lculo de cada resultado es independiente de los resultados anteriores en el a mismo vector, lo que permite un cauce muy profundo sin generar riesgos por las dependencias de datos. La ausencia de estos riesgos viene decidida por el compilador o el programador cuando se decidi´ que la instrucci´n pod´ ser utilizada. o o ıa• Una sola instrucci´n vectorial especifica una gran cantidad de trabajo, ya que equi- oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 57. 44 Procesadores vectoriales vale a ejecutar un bucle completo. Por lo tanto, el requisito de anchura de banda de las instrucciones se reduce considerablemente. En los procesadores no vectoriales, donde se precisan muchas m´s instrucciones, la b´squeda y decodificaci´n de las a u o instrucciones puede representar un cuello de botella, que fue detectado por Flynn en 1966 y por eso se le llama cuello de botella de Flynn.• Las instrucciones vectoriales que acceden a memoria tienen un patr´n de acceso o conocido. Si los elementos de la matriz son todos adyacentes, entonces extraer el vector de un conjunto de bancos de memoria entrelazada funciona muy bien. La alta latencia de iniciar un acceso a memoria principal, en comparaci´n con acceder o a una cache, se amortiza porque se inicia un acceso para el vector completo en lugar de para un unico elemento. Por ello, el coste de la latencia a memoria principal se ´ paga una sola vez para el vector completo, en lugar de una vez por cada elemento del vector.• Como se sustituye un bucle completo por una instrucci´n vectorial cuyo compor- o tamiento est´ predeterminado, los riesgos de control en el cauce, que normalmente a podr´ surgir del salto del bucle, son inexistentes. ıan Por estas razones, las operaciones vectoriales pueden hacerse m´s r´pidas que una a asecuencia de operaciones escalares sobre el mismo n´mero de elementos de datos, y ulos dise˜ adores est´n motivados para incluir unidades vectoriales si el conjunto de las n aaplicaciones las puede usar frecuentemente. El presente cap´ ıtulo ha sido elaborado a partir de [HP96], [HP93] y [Hwa93]. Comolecturas adicionales se puede ampliar la informaci´n con [Sto93] y [HB87]. o3.1 Procesador vectorial b´sico a3.1.1 Arquitectura vectorial b´sica aUn procesador vectorial est´ compuesto t´ a ıpicamente por una unidad escalar y una uni-dad vectorial. La parte vectorial permite que los vectores sean tratados como n´meros uen coma flotante, como enteros o como datos l´gicos. La unidad escalar es un procesador osegmentado normal y corriente. Hay dos tipos de arquitecturas vectoriales:M´quina vectorial con registros: en una m´quina de este tipo, todas las opera- a a ciones vectoriales, excepto las de carga y almacenamiento, operan con vectores almacenados en registros. Estas m´quinas son el equivalente vectorial de una ar- a quitectura escalar de carga/almacenamiento. La mayor´ de m´quinas vectoriales ıa a modernas utilizan este tipo de arquitectura. Ejemplos: Cray Research (CRAY-1, CRAY-2, X-MP, Y-MP y C-90), los supercomputadores japoneses (NEC SX/2 y SX/3, las Fujitsu VP200 y VP400 y la Hitachi S820)M´quina vectorial memoria-memoria: en estas m´quinas, todas las operaciones a a vectoriales son de memoria a memoria. Como la complejidad interna, as´ como el ı coste, son menores, es la primera arquitectura vectorial que se emple´. Ejemplo: o el CDC. El resto del cap´ıtulo trata sobre las m´quinas vectoriales con registros, ya que las ade memoria han ca´ en desuso por su menor rendimiento. ıdoIngenier´ Inform´tica ıa a Universidad de Valencia
  • 58. 3.1 Procesador vectorial b´sico a 45 La figura 3.1 muestra la arquitectura t´ıpica de una m´quina vectorial con registros. aLos registros se utilizan para almacenar los operandos. Los cauces vectoriales fun-cionales cogen los operandos, y dejan los resultados, en los registros vectoriales. Cadaregistro vectorial est´ equipado con un contador de componente que lleva el seguimiento adel componente de los registros en ciclos sucesivos del cauce. Procesador escalar Cauces funcionales escalares Instrucciones escalares Procesador vectorial Unidad de control Instrucciones vectoriales Unidad de control escalar vectorial Control Instrucciones Cauce func. vectorial Datos Memoria principal Datos escalares (Programa y datos) vectoriales Registros Vectoriales Almacenamiento Computador masivo anfitrión Cauce func. vectorial E/S Usuario Figura 3.1: La arquitectura de un supercomputador vectorial. La longitud de cada registro es habitualmente fija, como por ejemplo 64 componentesde 64 bits cada uno como en un Cray. Otras m´quinas, como algunas de Fujitsu, utilizan aregistros vectoriales reconfigurables para encajar din´micamente la longitud del registro acon la longitud de los operandos. Por lo general, el n´mero de registros vectoriales y el de unidades funcionales es ufijo en un procesador vectorial. Por lo tanto, ambos recursos deben reservarse conantelaci´n para evitar conflictos entre diferentes operaciones vectoriales. o Los supercomputadores vectoriales empezaron con modelos uniprocesadores comoel Cray 1 en 1976. Los supercomputadores vectoriales recientes ofrecen ambos modelos,el monoprocesador y el multiprocesador. La mayor´ de supercomputadores de altas ıaprestaciones modernos ofrecen multiprocesadores con hardware vectorial como una ca-racter´ ıstica m´s de los equipos. a Resulta interesante definirse una arquitectura vectorial sobre la que explicar lasnociones de arquitecturas vectoriales. Esta arquitectura tendr´ como parte entera la ıapropia del DLX, y su parte vectorial ser´ la extensi´n vectorial l´gica de DLX. Los ıa o ocomponentes b´sicos de esta arquitectura, parecida a la de Cray 1, se muestra en la afigura 3.2. Los componentes principales del conjunto de instrucciones de la m´quina DLXV ason:Registros vectoriales. Cada registro vectorial es un banco de longitud fija que contie- ne un solo vector. DLXV tiene ocho registros vectoriales, y cada registro vectorial contiene 64 dobles palabras. Cada registro vectorial debe tener como m´ ınimo dos puertos de lectura y uno de escritura en DLXV. Esto permite un alto grado de solapamiento entre las operaciones vectoriales que usan diferentes registros vec- toriales.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 59. 46 Procesadores vectoriales Memoria principal Carga/almacenamiento vectorial suma/resta FP multiplicación FP división FP Registros vectoriales Entero Lógico Registros escalares Figura 3.2: Estructura b´sica de una arquitectura vectorial con registros, DLXV. aUnidades funcionales vectoriales. Cada unidad se encuentra completamente seg- mentada y puede comenzar una nueva operaci´n a cada ciclo de reloj. Se necesita o una unidad de control para detectar conflictos en las unidades funcionales (riesgos estructurales) y conflictos en los accesos a registros (riesgos por dependencias de datos).Unidad de carga/almacenamiento de vectores. Es una unidad que carga o alma- cena un vector en o desde la memoria. Las cargas y almacenamientos en DLXV est´n completamente segmentadas, para que las palabras puedan ser transferidas a entre los registros vectoriales y memoria, con un ancho de banda de una palabra por ciclo de reloj tras una latencia inicial.Conjunto de registros escalares. Estos tambi´n pueden proporcionar datos como e entradas a las unidades funcionales vectoriales, as´ como calcular direcciones para ı pasar a la unidad de carga/almacenamiento de vectores. Estos ser´ los 32 ıan registros normales de prop´sito general y los 32 registros de punto flotante del o DLX. La figura 3.3 muestra las caracter´ ısticas de algunos procesadores vectoriales, inclu-yendo el tama˜ o y el n´mero de registros, el n´mero y tipo de unidades funcionales, y n u uel n´mero de unidades de carga/almacenamiento. u3.1.2 Instrucciones vectoriales b´sicas aPrincipalmente las instrucciones vectoriales se pueden dividir en seis tipos diferentes.El criterio de divisi´n viene dado por el tipo de operandos y resultados de las diferentes oinstrucciones vectoriales: 1. Vector-vector: Las instrucciones vector-vector son aquellas cuyos operandos son vectores y el resultado tambi´n es un vector. Suponiendo que Vi , Vj y Vk son e registros vectoriales, este tipo de instrucciones implementan el siguiente tipo de funciones: f1 : Vi → VjIngenier´ Inform´tica ıa a Universidad de Valencia
  • 60. 3.1 Procesador vectorial b´sico a 47 Clock Elements per Year rate register (64-bit Load-store Processor announced (MHz) Registers elements) Functional units units CRAY-1 1976 80 8 64 6: add, multiply, reciprocal, 1 integer add, logical, shift CRAY X-MP 1983 120 8 64 8: FP add, FP multiply, FP re- 2 loads CRAY Y-MP 1988 166 ciprocal, integer add, 2 logical, 1 store shift, population count/parity CRAY-2 1985 166 8 64 5: FP add, FP multiply, FP re- 1 ciprocal/sqrt, integer (add shift, population count), logical Fujitsu 1982 133 8-256 32-1024 3: FP or integer add/logical, 2 VP100/200 multiply, divide Hitachi 1983 71 32 256 4: 2 integer add/logical, 4 S810/820 1 multiply-add, and 1 multiply/ divide-add unit Convex C-1 1985 10 8 128 4: multiply, add, divide, integer/ 1 logical NEC SX/2 1984 160 8 + 8192 256 variable 16: 4 integer add/logical, 4 FP 8 multiply/divide, 4 FP add, 4 shift DLXV 1990 200 8 64 5: multiply, divide, add, 1 integer add, logical Cray C-90 1991 240 8 128 8: FP add, FP multiply, FP re- 4 ciprocal, integer add, 2 logical, shift, population count/parity Convex C-4 1994 135 16 128 3: each is full integer, logical, and FP (including multiply-add) NEC SX/4 1995 400 8 + 8192 256 variable 16: 4 integer add/logical, 4 FP 8 multiply/divide, 4 FP add, 4 shift Cray J-90 1995 100 8 64 4: FP add, FP multiply, FP re- ciprocal, integer/logical Cray T-90 1996 ~500 8 128 8: FP add, FP multiply, FP re- 4 ciprocal, integer add, 2 logical, shift, population count/parity Figura 3.3: Caracter´ ısticas de varias arquitecturas vectoriales. f2 : Vj × Vk → Vi Algunos ejemplos son: V1 = sin(V2 ) o V3 = V1 + V2 .2. Vector-escalar: Son instrucciones en cuyos operandos interviene alg´n escalar y u el resultado es un vector. Si s es un escalar son las instrucciones que siguen el siguiente tipo de funci´n: o f3 : d × Vi → Vj Un ejemplo es el producto escalar, que el resultado es un vector tras multiplicar el vector origen por el escalar elemento a elemento.3. Vector-memoria: Suponiendo que M es el comienzo de un vector en memoria, se tienen las instrucciones de carga y almacenamiento de un vector: f4 : M → V Carga del vector f5 : V → M Almacenamiento del vector4. Reducci´n de vectores: Son instrucciones cuyos operandos son vectores y el o resultado es un escalar, por eso se llaman de reducci´n. Los tipos de funciones que o describen estas instrucciones son los siguientes: f6 : Vi → sjIngenier´ Inform´tica ıa a Universidad de Valencia
  • 61. 48 Procesadores vectoriales f7 : Vi × Vj → sk El m´ximo, la suma, la media, etc., son ejemplos de f6 , mientras que el producto a punto (s = n ai × bi ) es un ejemplo de f7 . i=15. Reunir y Esparcir: Estas funciones sirven para almacenar/cargar vectores dis- persos en memoria. Se necesitan dos vectores para reunir o esparcir el vector de/a la memoria. Estas son las funciones para reunir y esparcir: f8 : M → V1 × V0 Reunir f9 : V 1 × V 0 → M Esparcir La operaci´n reunir toma de la memoria los elementos no nulos de un vector o disperso usando unos ´ ındices. La operaci´n esparcir hace lo contrario, almacena o en la memoria un vector en un vector disperso cuyas entradas no nulas est´n a indexadas. El registro vectorial V1 contiene los datos y el V0 los ´ındices de los elementos no nulos.6. Enmascaramiento: En estas instrucciones se utiliza un vector de m´scara para a comprimir o expandir un vector a un vector ´ ındice. La aplicaci´n que tiene lugar o es la siguiente: f10 : V0 × Vm → V13.1.3 Ensamblador vectorial DLXVEn DLXV las operaciones vectoriales usan los mismos mnemot´cnicos que las opera- eciones DLX, pero a˜ adiendo la letra V (ADDV). Si una de las entradas es un escalar nse indicar´ a˜ adiendo el sufijo “SV” (ADDSV). La figura 3.4 muestra las instrucciones a nvectoriales del DLXV.Ejemplo: el bucle DAXPYExiste un bucle t´ ıpico para evaluar sistemas vectoriales y multiprocesadores que consisteen realizar la operaci´n: o Y =a·X +Ydonde X e Y son vectores que residen inicialmente en memoria, mientras que a esun escalar. A este bucle, que es bastante conocido, se le llama SAXPY o DAXPYdependiendo de si la operaci´n se realiza en simple o doble precisi´n. A esta operaci´n o o onos referiremos a la hora de hacer c´lculos de rendimiento y poner ejemplos. Estos bucles aforman el bucle interno del benchmark Linpack. (SAXPY viene de single-precision a×Xplus Y; DAXPY viene de double-precision a×X plus Y.) Linpack es un conjunto derutinas de ´lgebra lineal, y rutinas para realizar el m´todo de eliminaci´n de Gauss. a e o Para los ejemplos que siguen vamos a suponer que el n´mero de elementos, o lon- ugitud, de un registro vectorial coincide con la longitud de la operaci´n vectorial en la oque estamos interesados. M´s adelante se estudiar´ el caso en que esto no sea as´ a a ı. Resulta interesante, para las explicaciones que siguen, dar los programas en ensam-blador para realizar el c´lculo del bucle DAXPY. El siguiente programa ser´ el c´digo a ıa oescalar utilizando el juego de instrucciones DLX:Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 62. 3.1 Procesador vectorial b´sico a 49 Instruction Operands Function ADDV V1,V2,V3 Add elements of V2 and V3, then put each result in V1. ADDSV V1,F0,V2 Add F0 to each element of V2, then put each result in V1. SUBV V1,V2,V3 Subtract elements of V3 from V2, then put each result in V1. SUBVS V1,V2,F0 Subtract F0 from elements of V2, then put each result in V1. SUBSV V1,F0,V2 Subtract elements of V2 from F0, then put each result in V1. MULTV V1,V2,V3 Multiply elements of V2 and V3, then put each result in V1. MULTSV V1,F0,V2 Multiply F0 by each element of V2, then put each result in V1. DIVV V1,V2,V3 Divide elements of V2 by V3, then put each result in V1. DIVVS V1,V2,F0 Divide elements of V2 by F0, then put each result in V1. DIVSV V1,F0,V2 Divide F0 by elements of V2, then put each result in V1. LV V1,R1 Load vector register V1 from memory starting at address R1. SV R1,V1 Store vector register V1 into memory starting at address R1. LVWS V1,(R1,R2) Load V1 from address at R1 with stride in R2, i.e., R1+i × R2. SVWS (R1,R2),V1 Store V1 from address at R1 with stride in R2, i.e., R1+i × R2. LVI V1,(R1+V2) Load V1 with vector whose elements are at R1+V2(i), i.e., V2 is an index. SVI (R1+V2),V1 Store V1 to vector whose elements are at R1+V2(i), i.e., V2 is an index. CVI V1,R1 Create an index vector by storing the values 0, 1 × R1, 2 × R1,...,63 × R1 into V1. S--V V1,V2 Compare the elements (EQ, NE, GT, LT, GE, LE) in V1 and V2. If condition is true, S--SV F0,V1 put a 1 in the corresponding bit vector; otherwise put 0. Put resulting bit vector in vector-mask register (VM). The instruction S--SV performs the same compare but using a scalar value as one operand. POP R1,VM Count the 1s in the vector-mask register and store count in R1. CVM Set the vector-mask register to all 1s. MOVI2S VLR,R1 Move contents of R1 to the vector-length register. MOVS2I R1,VLR Move the contents of the vector-length register to R1. MOVF2S VM,F0 Move contents of F0 to the vector-mask register. MOVS2F F0,VM Move contents of vector-mask register to F0. Figura 3.4: Instrucciones vectoriales del DLXV. LD F0,a ADDI R4,Rx,#512 ; ´ltima direcci´n a cargar u oloop: LD F2,0(Rx) ; carga X(i) en un registro MULTD F2,F0,F2 ; a.X(i) LD F4,0(Ry) ; carga Y(i) en un registro ADDD F4,F2,F4 ; a.X(i)+Y(i) SD 0(Ry),F4 ; almacena resultado en Y(i) ADDI Rx,Rx,#8 ; incrementa el ´ndice de X ı ADDI Ry,Ry,#8 ; incrementa el ´ndice de Y ı SUB R20,R4,Rx ; calcula l´mite ı BNZ R20,loop ; comprueba si fin. El programa correspondiente en una arquitectura vectorial, como la DLXV, ser´ ıade la siguiente forma: LD F0,a ; carga escalar a LV V1,Rx ; carga vector X MULTSV V2,F0,V1 ; a*X(i) LV V3,Ry ; carga vector Y ADDV V4,V2,V3 ; suma SV Ry,V4 ; almacena el resultado De los c´digos anteriores se desprenden dos cosas. Por un lado la m´quina vectorial o areduce considerablemente el n´mero de instrucciones a ejecutar, ya que se requieren uIngenier´ Inform´tica ıa a Universidad de Valencia
  • 63. 50 Procesadores vectorialess´lo 6 frente a casi las 600 del bucle escalar. Por otro lado, en la ejecuci´n escalar, debe o obloquearse la suma, ya que comparte datos con la multiplicaci´n previa; en la ejecuci´n o ovectorial, tanto la multiplicaci´n como la suma son independientes y, por tanto, no se obloquea el cauce durante la ejecuci´n de cada instrucci´n sino entre una instrucci´n y la o o ootra, es decir, una sola vez. Estos bloqueos se pueden eliminar utilizando segmentaci´n osoftware o desarrollando el bucle, sin embargo, el ancho de banda de las instruccionesser´ mucho m´s alto sin posibilidad de reducirlo. a a3.1.4 Tiempo de ejecuci´n vectorial oTres son los factores que influyen en el tiempo de ejecuci´n de una secuencia de opera- ociones vectoriales:• La longitud de los vectores sobre los que se opera.• Los riesgos estructurales entre las operaciones.• Las dependencias de datos. Dada la longitud del vector y la velocidad de inicializaci´n, que es la velocidad a ola cual una unidad vectorial consume nuevos operandos y produce nuevos resultados,podemos calcular el tiempo para una instrucci´n vectorial. Lo normal es que esta ovelocidad sea de uno por ciclo del reloj. Sin embargo, algunos supercomputadoresproducen 2 o m´s resultados por ciclo de reloj, y otros, tienen unidades que pueden no aestar completamente segmentadas. Por simplicidad se supondr´ que esta velocidad es aefectivamente la unidad. Para simplificar la discusi´n del tiempo de ejecuci´n se introduce la noci´n de convoy, o o oque es el conjunto de instrucciones vectoriales que podr´ potencialmente iniciar su ıanejecuci´n en el mismo ciclo de reloj. Las instrucciones en un convoy no deben incluir oni riesgos estructurales ni de datos (aunque esto se puede relajar m´s adelante); si aestos riesgos estuvieran presentes, las instrucciones potenciales en el convoy habr´ ıaque serializarlas e inicializarlas en convoyes diferentes. Para simplificar diremos quelas instrucciones de un convoy deben terminar de ejecutarse antes que cualquier otrainstrucci´n, vectorial o escalar, pueda empezar a ejecutarse. Esto se puede relajar outilizando un m´todo m´s complejo de lanzar instrucciones. e a Junto con la noci´n de convoy est´ la de toque o campanada (chime) que puede ser o ausado para evaluar el rendimiento de una secuencia de vectores formada por convoyes.Un toque o campanada es una medida aproximada del tiempo de ejecuci´n para una osecuencia de vectores; la medida de la campanada es independiente de la longitud delvector. Por tanto, para una secuencia de vectores que consiste en m convoyes se ejecutaen m campanadas, y para una longitud de vector de n, ser´ aproximadamente n × m aciclos de reloj. Esta aproximaci´n ignora algunas sobrecargas sobre el procesador que oadem´s dependen de la longitud del vector. Por consiguiente, la medida del tiempo en acampanadas es una mejor aproximaci´n para vectores largos. Se usar´ esta medida, en o avez de los periodos de reloj, para indicar expl´ ıcitamente que ciertas sobrecargas est´n asiendo ignoradas. Para poner las cosas un poco m´s claras, analicemos el siguiente c´digo y extraiga- a omos de ´l los convoyes: eLD F0,a ; carga el escalar en F0LV V1,Rx ; carga vector XMULTSV V2,F0,V1 ; multiplicaci´n vector-escalar oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 64. 3.1 Procesador vectorial b´sico a 51LV V3,Ry ; carga vector YADDV V4,V2,V3 ; suma vectorialSV Ry,V4 ; almacena el resultado. Dejando de lado la primera instrucci´n, que es puramente escalar, el primer convoy olo ocupa la primera instrucci´n vectorial que es LV. La MULTSV depende de la primera opor eso no puede ir en el primer convoy, en cambio, la siguiente LV s´ que puede. ADDV ıdepende de esta LV por tanto tendr´ que ir en otro convoy, y SV depende de esta, as´ a ıque tendr´ que ir en otro convoy aparte. Los convoyes ser´n por tanto: a a 1. LV 2. MULTSV LV 3. ADDV 4. SV Como esta secuencia est´ formada por 4 convoyes requerir´ 4 campanadas para su a aejecuci´n. o Esta aproximaci´n es buena para vectores largos. Por ejemplo, para vectores de 64 oelementos, el tiempo en campanadas ser´ de 4, de manera que la secuencia tomar´ ıa ıaunos 256 ciclos de reloj. La sobrecarga de eventualmente lanzar el convoy 2 en dosciclos diferentes ser´ peque˜ a en comparaci´n a 256. ıa n oTiempo de arranque vectorial y tasa de inicializaci´n oLa fuente de sobrecarga m´s importante, no considerada en el modelo de campanadas, aes el tiempo de arranque vectorial. El tiempo de arranque viene de la latencia del caucede la operaci´n vectorial y est´ determinada principalmente por la profundidad del o acauce en relaci´n con la unidad funcional empleada. El tiempo de arranque incrementa oel tiempo efectivo en ejecutar un convoy en m´s de una campanada. Adem´s, este a atiempo de arranque retrasa la ejecuci´n de convoyes sucesivos. Por lo tanto, el tiempo onecesario para la ejecuci´n de un convoy viene dado por el tiempo de arranque y la olongitud del vector. Si la longitud del vector tendiera a infinito, entonces el tiempo dearranque ser´ despreciable, pero lo normal es que el tiempo de arranque sea de 6 a 12 ıaciclos, lo que significa un porcentaje alto en vectores t´ ıpicos que como mucho rondar´nalos 64 elementos o ciclos. Operation Start-up penalty Vector add 6 Vector multiply 7 Vector divide 20 Vector load 12 Figura 3.5: Penalizaci´n por el tiempo de arranque en el DLXV. o Siguiendo con el ejemplo mostrado anteriormente, supongamos que cargar y salvartienen un tiempo de arranque de 12 ciclos, la multiplicaci´n 7 y la suma 6 tal y como se odesprende de la figura 3.5. Las sumas de los arranques de cada convoy para este ejemploser´ 12+12+6+12=42, como estamos calculando el n´mero de campanadas reales para ıa uIngenier´ Inform´tica ıa a Universidad de Valencia
  • 65. 52 Procesadores vectorialesvectores de 64 elementos, la divisi´n 42/64=0.65 da el n´mero de campanadas totales, o uque ser´ entonces 4.65, es decir, el tiempo de ejecuci´n teniendo en cuenta la sobrecarga a ode arranque es 1.16 veces mayor. En la figura 3.6 se muestra el tiempo en que se iniciacada instrucci´n as´ como el tiempo total para su ejecuci´n en funci´n de n que es el o ı o on´mero de elementos del vector. u Convoy Starting time First-result time Last-result time 1. LV 0 12 11 + n 2. MULTSV LV 12 + n 12 + n + 12 23 + 2n 3. ADDV 24 + 2n 24 + 2n + 6 29 + 3n 4. SV 30 + 3n 30 + 3n + 12 41 + 4nFigura 3.6: Tiempos de arranque y del primer y ultimo resultados para los convoys 1-4. ´ El tiempo de arranque de una instrucci´n es t´ o ıpicamente la profundidad del caucede la unidad funcional que realiza dicha instrucci´n. Si lo que se quiere es poder lanzar ouna instrucci´n por ciclo de reloj (tasa de inicializaci´n igual a uno), entonces o o Tiempo total de ejecuci´n de la unidad o Profundidad del cauce = (3.1) Periodo de reloj Por ejemplo, si una operaci´n necesita 10 ciclos de reloj para completarse, entonces ohace falta un cauce con una profundidad de 10 para que se pueda inicializar una ins-trucci´n por cada ciclo de reloj. Las profundidades de las unidades funcionales var´ o ıanampliamente (no es raro ver cauces de profundidad 20) aunque lo normal es que tenganprofundidades entre 4 y 8 ciclos.3.1.5 Unidades de carga/almacenamiento vectorialEl comportamiento de la unidad de carga/almacenamiento es m´s complicado que el ade las unidades aritm´ticas. El tiempo de arranque para una carga es el tiempo para ecoger la primera palabra de la memoria y guardarla en un registro. Si el resto del vectorse puede coger sin paradas, la tasa de inicializaci´n es la misma que la velocidad a la oque las nuevas palabras son tra´ ıdas y almacenadas. Al contrario que en las unidadesfuncionales, la tasa de inicializaci´n puede no ser necesariamente una instrucci´n por o ociclo. Normalmente, el tiempo de arranque para las unidades de carga/almacenamientoes algo mayor que para las unidades funcionales, pudiendo llegar hasta los 50 ciclos.T´ıpicamente, estos valores rondan entre los 9 y los 17 ciclos (Cray 1 y Cray X-MP) Para conseguir una tasa (o velocidad) de inicializaci´n de una palabra por ciclo, oel sistema de memoria debe ser capaz de producir o aceptar esta cantidad de datos.Esto se puede conseguir mediante la creaci´n de bancos de memoria m´ltiples como se o uexplica en la secci´n 3.2. Teniendo un n´mero significativo de bancos se puede conseguir o uacceder a la memoria por filas o por columnas de datos. El n´mero de bancos en la memoria del sistema para las unidades de carga y alma- ucenamiento, as´ como la profundidad del cauce en unidades funcionales son de alguna ıIngenier´ Inform´tica ıa a Universidad de Valencia
  • 66. 3.2 Memoria entrelazada o intercalada 53manera equivalentes, ya que ambas determinan las tasas de inicializaci´n de las ope- oraciones utilizando estas unidades. El procesador no puede acceder a un banco dememoria m´s deprisa que en un ciclo de reloj. Para los sistemas de memoria que sopor- atan m´ltiples accesos vectoriales simult´neos o que permiten accesos no secuenciales en u ala carga o almacenamiento de vectores, el n´mero de bancos de memoria deber´ ser u ıam´s grande que el m´ a ınimo, de otra manera existir´ conflictos en los bancos. ıan3.2 Memoria entrelazada o intercaladaLa mayor parte de esta secci´n se encuentra en el [Hwa93], aunque se puede encontrar ouna peque˜ a parte en el [HP96] en el cap´ n ıtulo dedicado a los procesadores vectoriales. Para poder salvar el salto de velocidad entre la CPU/cach´ y la memoria principal erealizada con m´dulos de RAM, se presenta una t´cnica de entrelazado que permite el o eacceso segmentado a los diferentes m´dulos de memoria paralelos. o Vamos a suponer que la memoria principal se encuentra construida a partir de variosm´dulos. Estos m´dulos de memoria se encuentran normalmente conectados a un bus o odel sistema, o a una red de conmutadores, a la cual se conectan otros dispositivos delsistema como procesadores o subsistemas de entrada/salida. Cuando se presenta una direcci´n en un m´dulo de memoria esta devuelve la palabra o ocorrespondiente. Es posible presentar diferentes direcciones a diferentes m´dulos de omemoria de manera que se puede realizar un acceso paralelo a diferentes palabras dememoria. Ambos tipos de acceso, el paralelo y el segmentado, son formas paralelaspracticadas en una organizaci´n de memoria paralela. o Consideremos una memoria principal formada por m = 2a m´dulos, cada uno con ow = 2b palabras o celdas de memoria. La capacidad total de la memoria es m w = 2a+bpalabras. A estas palabras se les asignan direcciones de forma lineal. Las diferentesformas en las que se asignan linealmente las direcciones producen diferentes formas deorganizar la memoria. Aparte de los accesos aleatorios, la memoria principal es accedida habitualmentemediante bloques de direcciones consecutivas. Los accesos en bloque son necesariospara traerse una secuencia de instrucciones o para acceder a una estructura lineal dedatos, etc. En un sistema basado en cache la longitud del bloque suele correspondersecon la longitud de una l´ ınea en la cach´, o con varias l´ e ıneas de cach´. Tambi´n en e elos procesadores vectoriales el acceso a la memoria tiene habitualmente una estructuralineal, ya que los elementos de los vectores se encuentran consecutivos. Por todo es-to, resulta preferible dise˜ ar la memoria principal para facilitar el acceso en bloque a npalabras contiguas. La figura 3.7 muestra dos formatos de direcciones para realizar una memoria entre-lazada. El entrelazado de orden bajo (figura 3.7(a)) reparte las localizaciones contiguasde memoria entre los m m´dulos de forma horizontal. Esto implica que los a bits de oorden bajo de la direcci´n se utilizan para identificar el m´dulo de memoria. Los b bits o ode orden m´s alto forman la direcci´n de la palabra dentro de cada m´dulo. Hay que a o ohacer notar que la misma direcci´n de palabra est´ siendo aplicada a todos los m´dulos o a ode forma simult´nea. Un decodificador de direcciones se emplea para distribuir la se- alecci´n de los m´dulos. Este esquema no es bueno para tolerancia a fallos, ya que en o ocaso de fallo de un m´dulo toda la memoria queda inutilizable. oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 67. 54 Procesadores vectoriales El entrelazado de orden alto (figura 3.7(b)) utiliza los a bits de orden alto comoselector de m´dulo, y los b bits de orden bajo como la direcci´n de la palabra dentro o ode cada m´dulo. Localizaciones contiguas en la memoria est´n asignadas por tanto a o aun mismo m´dulo de memoria. En un ciclo de memoria, s´lo se accede a una palabra o odel m´dulo. Por lo tanto, el entrelazado de orden alto no permite el acceso en bloque a oposiciones contiguas de memoria. Este esquema viene muy bien para tolerancia a fallos. Por otro lado, el entrelazado de orden bajo soporta el acceso de bloque de formasegmentada. A no ser que se diga otra cosa, se supondr´ para el resto del cap´ a ıtulo quela memoria es del tipo entrelazado de orden bajo. Buffer de las direcciones de Decodificador BDM BDM BDM módulo Direcciones 0 M0 1 M1 m-1 M m-1 Dirección a m m+1 2m-1 de memoria Palabra Módulo m(w-1) m(w-1)+1 mw-1 b Buffer de BDP dirección BDM BDM BDM Buffer de de palabra datos de memoria Bus de datos (a) Memoria de m v´ entrelazada de orden bajo (esquema C de acceso ıas a memoria). Buffer de las direcciones de Decodificador BDM BDM BDM módulo Direcciones 0 M0 w M1 (m-1)w M m-1 a Dirección 1 w+1 (m-1)w+1 de memoria Módulo Palabra w-1 2w-1 mw-1 b Buffer de dirección BDP BDM BDM BDM Buffer de de palabra datos de memoria Bus de datos (b) Memoria de m v´ entrelazada de orden alto. ıasFigura 3.7: Dos organizaciones de memoria entrelazada con m = 2a m´dulos y w = 2a opalabras por m´dulo. oEjemplo de memoria modular en un procesador vectorialSupongamos que queremos captar un vector de 64 elementos que empieza en la direcci´n o136, y que un acceso a memoria supone 6 ciclos de reloj. ¿Cu´ntos bancos de memoria adebemos tener para acceder a cada elemento en un unico ciclo de reloj? ¿Con qu´ ´ edirecci´n se accede a estos bancos? ¿Cu´ndo llegar´n los elementos a la CPU?. o a aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 68. 3.2 Memoria entrelazada o intercalada 55 Respuesta Con seis ciclos por acceso, necesitamos al menos seis bancos de memoria,pero como queremos que el n´mero de bancos sea potencia de dos, elegiremos ocho ubancos. La figura 3.1 muestra las direcciones a las que se accede en cada banco en cadaperiodo de tiempo. Beginning Bank at clock no. 0 1 2 3 4 5 6 7 0 192 136 144 152 160 168 176 184 6 256 200 208 216 224 232 240 248 14 320 264 272 280 288 296 304 312 22 384 328 336 344 352 360 368 376Tabla 3.1: Direcciones de memoria (en bytes) y momento en el cual comienza el accesoa cada banco. La figura 3.8 muestra la temporizaci´n de los primeros accesos a un sistema de ocho obancos con una latencia de acceso de seis ciclos de reloj. Existen dos observacionesimportantes con respecto a la tabla 3.1 y la figura 3.8: La primera es que la direcci´n oexacta proporcionada por un banco est´ muy determinada por los bits de menor orden; asin embargo, el acceso inicial a un banco est´ siempre entre las ocho primeras dobles apalabras de la direcci´n inicial. La segunda es que una vez se ha producido la latencia oinicial (seis ciclos en este caso), el patr´n es acceder a un banco cada n ciclos, donde n oes el n´mero total de bancos (n = 8 en este caso). u Next access# Next access# Deliver # Memory# + deliver last# + deliver last# last# Action access 8 words 8 words 8 words Time 0 6 14 22 62 70Figura 3.8: Tiempo de acceso para las primeras 64 palabras de doble precisi´n en una olectura.3.2.1 Acceso concurrente a memoria (acceso C)Los accesos a los m m´dulos de una memoria se pueden solapar de forma segmentada. oPara esto, el ciclo de memoria (llamado ciclo mayor de memoria se subdivide en mciclos menores. Sea θ el tiempo para la ejecuci´n del ciclo mayor y τ para el menor. Estos dos otiempos se relacionan de la siguiente manera: θ τ= (3.2) mdonde m es el grado de entrelazado. La temporizaci´n del acceso segmentado de 8 pala- obras contiguas en memoria se muestra en la figura 3.9. A este tipo de acceso concurrentea palabras contiguas se le llama acceso C a memoria. El ciclo mayor θ es el tiempototal necesario para completar el acceso a una palabra simple de un m´dulo. El ciclo oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 69. 56 Procesadores vectorialesmenor τ es el tiempo necesario para producir una palabra asumiendo la superposici´n ode accesos de m´dulos de memoria sucesivos separados un ciclo menor τ . o Hay que hacer notar que el acceso segmentado al bloque de 8 palabras contiguasest´ emparedado entre otros accesos de bloque segmentados antes y despu´s del bloque a eactual. Incluso a pesar de que el tiempo total de acceso del bloque es 2θ, el tiempoefectivo de acceso de cada palabra es solamente τ al ser la memoria contiguamenteaccedida de forma segmentada. W7 W6 W5 θ Ciclo mayor W4 W3 τ=θ/m Ciclo menor W2 W1 m Grado de entrelazado W0 θ τ Tiempo 2θ Figura 3.9: Acceso segmentado a 8 palabras contiguas en una memoria de acceso C.3.2.2 Acceso simult´neo a memoria (acceso S) aLa memoria entrelazada de orden bajo puede ser dispuesta de manera que permitaaccesos simult´neos, o accesos S, tal y como se muestra en la figura 3.10. a Ciclo de búsqueda Ciclo de acceso Latch Lectura Módulo 0 Escritura Módulo Acceso a palabra 1 Multiplexor Módulo m-1 (n-a) bits de orden alto a bits de orden bajo Figura 3.10: Organizaci´n de acceso S para una memoria entrelazada de m v´ o ıas. Al final de cada ciclo de memoria, m = 2a palabras consecutivas son capturadas enlos buffers de datos de forma simult´nea. Los a bits de orden bajo se emplean entonces apara multiplexar las m palabras hacia fuera, una por cada ciclo menor. Si se elige elciclo menor para que valga un 1/m de la duraci´n del ciclo mayor (Ec. 3.2), entonces ose necesitan dos ciclos de memoria para acceder a m palabras consecutivas.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 70. 3.2 Memoria entrelazada o intercalada 57 Sin embargo, si la fase de acceso del ultimo acceso, se superpone con la fase de ´b´squeda del acceso actual, entonces son m palabras las que pueden ser accedidas en uun unico ciclo de memoria. ´3.2.3 Memoria de acceso C/SUna organizaci´n de memoria que permite los accesos de tipo C y tambi´n los de tipo o eS se denomina memoria de acceso C/S. Este esquema de funcionamiento se muestraen la figura 3.11, donde n buses de acceso se utilizan junto a m m´dulos de memoria oentrelazada conectados a cada bus. Los m m´dulos en cada bus son entrelazados de m ov´ para permitir accesos C. Los n buses operan en paralelo para permitir los accesos ıasS. En cada ciclo de memoria, al menos m · n palabras son capturadas si se empleancompletamente los n buses con accesos a memoria segmentados. Procesadores Memorias P(0) MC(0) Interconexión M(0,0) M(0,1) M(0,m-1) P(1) MC(1) Barra Cruzada M(1,0) M(1,1) M(1,m-1) P(n-1) MC(n-1) M(n-1,0) M(n-1,1) M(n-1,m-1) Figura 3.11: Organizaci´n de acceso C/S. o La memoria C/S est´ especialmente indicada para ser usada en configuraciones de amultiprocesadores vectoriales, ya que provee acceso segmentado en paralelo de un con-junto vectorial de datos con un alto ancho de banda. Una cache vectorial especialmentedise˜ ada es necesaria en el interior de cada m´dulo de proceso para poder garantizar n oel movimiento suave entre la memoria y varios procesadores vectoriales.3.2.4 Rendimiento de la memoria entrelazada y tolerancia a fallosCon la memoria pasa algo parecido que con los procesadores: no por poner m m´dulos oparalelos en el sistema de memoria se puede acceder m veces m´s r´pido. Existe un a amodelo m´s o menos emp´ a ırico que da el aumento del ancho de banda por el hechode aumentar el n´mero de bancos de la memoria. Este modelo fue introducido por uHellerman y da el ancho de banda B en funci´n del n´mero de bancos m: o u √ B = m0.56 ≈ m Esta ra´ cuadrada da una estimaci´n pesimista del aumento de las prestaciones de ız ola memoria. Si por ejemplo se ponen 16 m´dulos en la memoria entrelazada, s´lo se o oobtiene un aumento de 4 veces el ancho de banda. Este resultado lejano a lo esperadoviene de que en la memoria principal de los multiprocesadores los accesos entrelazadosse mezclan con los accesos simples o con los accesos de bloque de longitudes dispares.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 71. 58 Procesadores vectoriales Para los procesadores vectoriales esta estimaci´n no es realista, ya que las tran- osacciones con la memoria suelen ser casi siempre vectoriales y, por tanto, pueden serf´cilmente entrelazadas. a En 1992 Cragon estim´ el tiempo de acceso a una memoria entrelazada vectorial de ola siguiente manera: Primero se supone que los n elementos de un vector se encuen-tran consecutivos en una memoria de m m´dulos. A continuaci´n, y con ayuda de la o ofigura 3.9, no es dif´ inferir que el tiempo que tarda en accederse a un vector de n ıcilelementos es la suma de lo que tarda el primer elemento (θ), que tendr´ que recorrer atodo el cauce, y lo que tardan los (n − 1) elementos restantes (θ(n − 1)/m) que estar´n acompletamente encauzados. El tiempo que tarda un elemento (t1 ) se obtiene entoncesdividiendo lo que tarda el vector completo entre n: θ(n − 1) θ+ θ θ(n − 1) θ m n−1 θ m−1 t1 = m = + = + = 1+ n n nm m n n m nPor lo tanto el tiempo medio t1 requerido para acceder a un elemento en la memoriaha resultado ser: θ m−1 t1 = 1+ m nCuando n → ∞ (vector muy grande), t1 → θ/m = τ tal y como se deriv´ en la oecuaci´n (3.2). Adem´s si m = 1, no hay memoria entrelazada y t1 = θ. La ecuaci´n o a oque se acaba de obtener anuncia que la memoria entrelazada se aprovecha del accesosegmentado de los vectores, por lo tanto, cuanto mayor es el vector m´s rendimiento se aobtiene.Tolerancia a fallosLa divisi´n de la memoria en bancos puede tener dos objetivos: por un lado permite un oacceso concurrente lo que disminuye el acceso a la memoria (memoria entrelazada), porotro lado se pueden configurar los m´dulos de manera que el sistema de memoria pueda oseguir funcionando en el caso de que alg´n m´dulo deje de funcionar. Si los m´dulos u o oforman una memoria entrelazada el tiempo de acceso ser´ menor pero el sistema no aser´ tolerante a fallos, ya que al perder un m´dulo se pierden palabras en posiciones a osalteadas en toda la memoria, con lo que resulta dif´ seguir trabajando. Si por el ıcilcontrario los bancos se han elegido por bloques de memoria (entrelazado de orden alto)en vez de palabras sueltas, en el caso en que falle un bloque lo programas podr´n seguir atrabajando con los bancos restantes aisl´ndose ese bloque de memoria err´neo del resto. a o En muchas ocasiones interesa tener ambas caracter´ısticas a un tiempo, es decir, porun lado interesa tener memoria entrelazada de orden bajo para acelerar el acceso a lamemoria, pero por otro interesa tambi´n una memoria entrelazada de orden alto para etener la memoria dividida en bloques y poder seguir trabajando en caso de fallo de unm´dulo o banco. Para estos casos en que se requiere alto rendimiento y tolerancia a ofallos se puede dise˜ ar una memoria mixta que contenga m´dulos de acceso entrelazado, n oy bancos para tolerancia a fallos. La figura 3.12 muestra dos alternativas que combinan el entrelazado de orden altocon el de orden bajo. Ambas alternativas ofrecen una mejora del rendimiento de la me-moria junto con la posibilidad de tolerancia a fallos. En el primer ejemplo (figura 3.12a)Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 72. 3.2 Memoria entrelazada o intercalada 59se muestra una memoria de cuatro m´dulos de orden bajo y dos bancos de memoria. oEn el segundo ejemplo (figura 3.12b) se cuenta con el mismo n´mero de m´dulos pero u odispuestos de manera que hay un entrelazado de dos m´dulos y cuatro bancos de me- omoria. El primer ejemplo presenta un mayor entrelazado por lo que tendr´ un mayor arendimiento que el segundo, pero tambi´n presenta menos bancos por lo que en caso ede fallo se pierde una mayor cantidad de memoria, aparte de que el da˜ o que se puede ncausar al sistema es mayor.Figura 3.12: Dos organizaciones de memoria entrelazada usando 8 m´dulos: (a) 2 obancos y 4 m´dulos entrelazados, (b) 4 bancos y 2 m´dulos entrelazados. o o Si la tolerancia a fallos es fundamental para un sistema, entonces hay que establecerun compromiso entre el grado de entrelazado para aumentar la velocidad y el n´mero de ubancos para aumentar la tolerancia a fallos. Cada banco de memoria es independientede las condiciones de otros bancos y por tanto ofrece un mejor aislamiento en caso deaver´ıa.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 73. 60 Procesadores vectoriales3.3 Longitud del vector y separaci´n de elementos oEsta secci´n pretende dar respuesta a dos problemas que surgen en la vida real, uno oes qu´ hacer cuando la longitud del vector es diferente a la longitud de los registros evectoriales (por ejemplo 64 elementos), y la otra es c´mo acceder a la memoria si los oelementos del vector no est´n contiguos o se encuentran dispersos. a3.3.1 Control de la longitud del vectorLa longitud natural de un vector viene determinada por el n´mero de elementos en los uregistros vectoriales. Esta longitud, casi siempre 64, no suele coincidir muchas vecescon la longitud de los vectores reales del programa. Aun m´s, en un programa real ase desconoce incluso la longitud de cierto vector u operaci´n incluso en tiempo de ocompilaci´n. De hecho, un mismo trozo de c´digo puede requerir diferentes longitudes o oen funci´n de par´metros que cambien durante la ejecuci´n de un programa. El siguiente o a oejemplo en Fortran muestra justo este caso: do 10 i=1,n10 Y(i)=a*X(i)+Y(i) La soluci´n de estos problemas es la creaci´n de un registro de longitud vectorial VLR o o(Vector-Length register). El VLR controla la longitud de cualquier operaci´n vectorial oincluyendo las de carga y almacenamiento. De todas formas, el vector en el VLR nopuede ser mayor que la longitud de los registros vectoriales. Por lo tanto, esto resuelveel problema siempre que la longitud real sea menor que la longitud vectorial m´xima aMVL (Maximum Vector Length) definida por el procesador. Para el caso en el que la longitud del vector real sea mayor que el MVL se utilizauna t´cnica denominada seccionamiento (strip mining). El seccionamiento consiste en la egeneraci´n de c´digo de manera que cada operaci´n vectorial se realiza con un tama˜ o o o o ninferior o igual que el del MVL. Esta t´cnica es similar a la de desenrollamiento de ebucles, es decir, se crea un bucle que consiste en varias iteraciones con un tama˜ o como nel del MVL, y luego otra iteraci´n m´s que ser´ siempre menor que el MVL. La versi´n o a a oseccionada del bucle DAXPY escrita en Fortran se da a continuaci´n: o low=1 VL=(n mod MVL) /* Para encontrar el pedazo aparte */ do 1 j=0,(n/MVL) /* Bucle externo */ do 10 i=low,low+VL-1 /* Ejecuta VL veces */ Y(i)=a*X(i)+Y(i) /* Operaci´n principal o */10 continue low=low+VL /* Comienzo del vector siguiente */ VL=MVL /* Pone la longitud al m´ximo */ a1 continue En este bucle primero se calcula la parte que sobra del vector (que se calcula con elmodulo de n y MVL) y luego ejecuta ya las veces que sea necesario con una longitud devector m´xima. O sea, el primer vector tiene una longitud de (n mod MVL) y el resto atiene una longitud de MVL tal y como se muestra en la figura 3.13. Normalmente loscompiladores hacen estas cosas de forma autom´tica. a Junto con la sobrecarga por el tiempo de arranque, hay que considerar la sobrecargapor la introducci´n del bucle del seccionamiento. Esta sobrecarga por seccionamiento, oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 74. 3.3 Longitud del vector y separaci´n de elementos o 61 Value of j 0 12 3 ... ... n/MVL Range of i 1..m (m+1).. (m+ (m+2 * ... ... (n-MVL m+MVL MVL+1) MVL+1) +1).. n .. m+2 * ..m+3 * MVL MVLFigura 3.13: Un vector de longitud arbitraria procesado mediante seccionamiento. To-dos los bloques menos el primero son de longitud MVL. En esta figura, la variable mse usa en lugar de la expresi´n (n mod M V L). oque aparece de la necesidad de reiniciar la secuencia vectorial y asignar el VLR, efec-tivamente se suma al tiempo de arranque del vector, asumiendo que el convoy no sesolapa con otras instrucciones. Si la sobrecarga de un convoy es de 10 ciclos, entoncesla sobrecarga efectiva por cada 64 elementos se incrementa en 10, o lo que es lo mismo0.15 ciclos por elemento del vector real.3.3.2 C´lculo del tiempo de ejecuci´n vectorial a oCon todo lo visto hasta ahora se puede dar un modelo sencillo para el c´lculo del tiempo ade ejecuci´n de las instrucciones en un procesador vectorial. Repasemos estos costes: o1. Por un lado tenemos el n´mero de convoyes en el bucle que nos determina el u n´mero de campanadas. Usaremos la notaci´n Tcampanada para indicar el tiempo u o en campanadas.2. La sobrecarga para cada secuencia seccionada de convoyes. Esta sobrecarga con- siste en el coste de ejecutar el c´digo escalar para seccionar cada bloque, Tbucle , o m´s el coste de arranque para cada convoy, Tarranque . a3. Tambi´n podr´ haber una sobrecarga fija asociada con la preparaci´n de la se- e ıa o cuencia vectorial la primera vez, pero en procesadores vectoriales modernos esta sobrecarga se ha convertido en algo muy peque˜ o por lo que no se considerar´ en n a la expresi´n de carga total. En algunos libros donde todav´ aparece este tiempo o ıa se le llama Tbase . Con todo esto se puede dar una expresi´n para calcular el tiempo de ejecuci´n para o ouna secuencia vectorial de operaciones de longitud n, que llamaremos Tn : n Tn = × (Tbucle + Tarranque ) + n × Tcampanada (3.3) MVLLos valores para Tarranque , Tbucle y Tcampanada dependen del procesador y del compiladorque se utilice. Un valor t´ ıpico para Tbucle es 15 (Cray 1). Podr´ parecer que este tiempo ıadeber´ ser mayor, pero lo cierto es que muchas de las operaciones de esta sobrecarga ıase solapan con las instrucciones vectoriales. Para aclarar todo esto veamos un ejemplo. Se trata de averiguar el tiempo quetarda un procesador vectorial en realizar la operaci´n A = B × s, donde s es un escalar, oA y B son vectores con una longitud de 200 elementos. Lo que se hace primero esver el c´digo en ensamblador que realiza esta operaci´n. Para ello supondremos que las o odirecciones de A y B son inicialmente Ra y Rb, y que s se encuentra en Fs. Supondremosque R0 siempre contiene 0 (DLX). Como 200 mod 64=8, la primera iteraci´n del bucle oseccionado se realizar´ sobre un vector de longitud 8, y el resto con una longitud de aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 75. 62 Procesadores vectoriales64 elementos. La direcci´n del byte de comienzo del segmento siguiente de cada vector oes ocho veces la longitud del vector. Como la longitud del vector es u ocho o 64, seincrementa el registro de direcci´n por 8 × 8 = 64 despu´s del primer segmento, y por o e8 × 64 = 512 para el resto. El n´mero total de bytes en el vector es 8 × 200 = 1600, y se ucomprueba que ha terminado comparando la direcci´n del segmento vectorial siguiente ocon la direcci´n inicial m´s 1600. A continuaci´n se da el c´digo: o a o o ADDI R2,R0,#1600 ; Bytes en el vector ADD R2,R2,Ra ; Final del vector A ADDI R1,R0,#8 ; Longitud del 1er segmento MOVI2S VLR,R1 ; Carga longitud del vector en VLR ADDI R1,R0,#64 ; Longitud del 1er segmento ADDI R3,R0,#64 ; Longitud del resto de segmentosLOOP: LV V1,Rb ; Carga B MULTVS V2,V1,Fs ; Vector * escalar SV Ra,V2 ; Guarda A ADD Ra,Ra,R1 ; Direcci´n del siguiente segmento de A o ADD Rb,Rb,R1 ; Direcci´n del siguiente segmento de B o ADDI R1,R0,#512 ; Byte offset del siguiente segmento MOVI2S VLR,R3 ; Longitud 64 elementos SUB R4,R2,Ra ; Final de A? BNZ R4,LOOP ; sino, repite. Las tres instrucciones vectoriales del bucle dependen unas de otras y deben ir entres convoyes separados, por lo tanto Tcampanada = 3. El tiempo del bucle ya hab´ ıamosdicho que ronda los 15 ciclos. El valor del tiempo de arranque ser´ la suma de tres acosas:• El tiempo de arranque de la instrucci´n de carga, que supondremos 12 ciclos. o• El tiempo de arranque de la multiplicaci´n, 7 ciclos. o• El tiempo de arranque del almacenamiento, otros 12 ciclos.Por lo tanto obtenemos un valor Tarranque = 12 + 7 + 12 = 31 ciclos de reloj. Con todoesto, y aplicando la ecuaci´n (3.3), se obtiene un tiempo total de proceso de T200 = 784 ociclos de reloj. Si dividimos por el n´mero de elementos obtendremos el tiempo de uejecuci´n por elemento, es decir, 784/200 = 3.9 ciclos de reloj por elemento del vector. oComparado con Tcampanada , que es el tiempo sin considerar las sobrecargas, vemos queefectivamente la sobrecarga puede llegar a tener un valor significativamente alto. Resumiendo las operaciones realizadas se tiene el siguiente proceso hasta llegar alresultado final: n Tn = × (Tloop + Tarranque ) + n × Tcampanada MV L T200 = 4 × (15 + Tstart ) + 200 × 3 T200 = 60 + (4 × Tstart ) + 600 = 660 + (4 × Tstart ) Tstart=12+7+12=31 T200 = 660 + 4 × 31 = 784 La figura 3.14 muestra la sobrecarga y el tiempo total de ejecuci´n por elemento odel ejemplo que estamos considerando. El modelo que s´lo considera las campanadas otendr´ un coste de 3 ciclos, mientras que el modelo m´s preciso que incorpora la ıa asobrecarga a˜ ade 0.9 a este valor. nIngenier´ Inform´tica ıa a Universidad de Valencia
  • 76. 3.3 Longitud del vector y separaci´n de elementos o 63 8 7 6 Ciclos de reloj por elemento 5 Tiempo total por elemento 4 3 2 Sobrecarga total por elemento 1 0 20 40 60 80 100 120 140 160 180 200 Elementos en el vector Figura 3.14: Tiempo de ejecuci´n por elemento en funci´n de la longitud del vector. o o3.3.3 Separaci´n de elementos en el vector oEl otro problema que se presenta en la programaci´n real es que la posici´n en memoria o ode elementos adyacentes no siempre son contiguas. Por ejemplo, consideremos el c´digo ot´ ıpico para multiplicaci´n de matrices: o do 10 i=1,100 do 10 j=1,100 A(i,j)=0.0 do 10 k=1,10010 A(i,j)=A(i,j)+B(i,k)*C(k,j) En la sentencia con etiqueta 10, se puede vectorizar la multiplicaci´n de cada fila ode B con cada columna de C, y seccionar el bucle interior usando k como variable´ındice. Cuando una matriz se ubica en memoria, se lineariza organiz´ndola en filas ao en columnas. El almacenamiento por filas, utilizado por muchos lenguajes menosel Fortran, consiste en asignar posiciones consecutivas a elementos consecutivos en lafila, haciendo adyacentes los elementos B(i, j) y B(i, j + 1). El almacenamiento porcolumnas, utilizado en Fortran, hace adyacentes los elementos B(i, j) y B(i + 1, j). Suponiendo que utilizamos el almacenamiento por columnas de Fortran nos encon-tramos con que los accesos a la matriz B no son adyacentes en memoria sino que seencuentran separados por una fila completa de elementos. En este caso, los elemen-tos de B que son accedidos en el lazo interior, est´n separados por el tama˜ o de fila a nmultiplicado por 8 (n´mero de bytes por elemento) lo que hace un total de 800 bytes. u A esta distancia en memoria entre elementos consecutivos se le llama separaci´n o(stride). Con el ejemplo que estamos viendo podemos decir que los elementos de CIngenier´ Inform´tica ıa a Universidad de Valencia
  • 77. 64 Procesadores vectorialestienen una separaci´n de 1, (1 palabra doble, 8 bytes), mientras que la matriz B tiene ouna separaci´n de 100 (100 palabras dobles, 800 bytes). o Una vez cargados estos elementos adyacentes en el registro vectorial, los elementosson l´gicamente contiguos. Por todo esto, y para aumentar el rendimiento de la carga oy almacenamiento de vectores con elementos separados, resulta interesante disponer deinstrucciones que tengan en cuenta la separaci´n entre elementos contiguos de un vector. oLa forma de introducir esto en el lenguaje ensamblador es mediante la incorporaci´n ode dos instrucciones nuevas, una de carga y otra de almacenamiento, que tengan encuenta no s´lo la direcci´n de comienzo del vector, como hasta ahora, sino tambi´n el o o epaso o la separaci´n entre elementos. En DLXV, por ejemplo, existen las instrucciones oLVWS para carga con separaci´n, y SVWS para almacenamiento con separaci´n. As´ la o o ı,instrucci´n LVWS V1,(R1,R2) carga en V1 lo que hay a partir de R1 con un paso o oseparaci´n de elementos de R2, y SVWS (R1,R2),V1 guarda los elementos del vector V1 oen la posici´n apuntada por R1 con paso R2. o Naturalmente, el que los elementos no est´n separados de forma unitaria crea com- eplicaciones en la unidad de memoria. Se hab´ comprobado que una operaci´n memoria- ıa oregistro vectorial pod´ proceder a velocidad completa si el n´mero de bancos en me- ıa umoria era al menos tan grande el tiempo de acceso a memoria en ciclos de reloj. Sinembargo, para determinadas separaciones entre elementos, puede ocurrir que accesosconsecutivos se realicen al mismo banco, llegando incluso a darse el caso de que todoslos elementos del vector se encuentren en el mismo banco. A esta situaci´n se le llama oconflicto del banco de memoria y hace que cada carga necesite un mayor tiempo deacceso a memoria. El conflicto del banco de memoria se presenta cuando se le pide almismo banco que realice un acceso cuando el anterior a´n no se hab´ completado. Por u ıaconsiguiente, la condici´n para que se produzca un conflicto del banco de memoria ser´: o a M´ com´n mult.(separaci´n, n´m. m´dulos) ın. u o u o < Latencia acceso a memoria Separaci´n o Los conflictos en los m´dulos no se presentan si la separaci´n entre los elementos y o oel n´mero de bancos son relativamente primos entre s´ y adem´s hay suficientes bancos u ı, apara evitar conflictos en el caso de separaci´n unitaria. El aumento de n´mero de o ubancos de memoria a un n´mero mayor del m´ u ınimo, para prevenir detenciones con unaseparaci´n 1, disminuir´ la frecuencia de detenciones para las dem´s separaciones. Por o a aejemplo, con 64 bancos, una separaci´n de 32 parar´ cada dos accesos en lugar de cada o aacceso. Si originalmente tuvi´semos una separaci´n de 8 con 16 bancos, parar´ cada e o ıados accesos; mientras que con 64 bancos, una separaci´n de 8 parar´ cada 8 accesos. Si o atenemos acceso a varios vectores simult´neamente, tambi´n se necesitar´n m´s bancos a e a apara prevenir conflictos. La mayor´ de supercomputadores vectoriales actuales tienen ıacomo m´ ınimo 64 bancos, y algunos llegan a 512. Veamos un ejemplo. Supongamos que tenemos 16 bancos de memoria con un tiempode acceso de 12 ciclos de reloj. Calcular el tiempo que se tarda en leer un vector de 64elementos separados unitariamente. Repetir el c´lculo suponiendo que la separaci´n es a ode 32. Como el n´mero de bancos es mayor que la latencia, la velocidad de acceso ser´ u ade elemento por ciclo, por tanto 64 ciclos, pero a esto hay que a˜ adirle el tiempo de narranque que supondremos 12, por tanto la lectura se realizar´ en 12 + 64 = 76 ciclos de areloj. La peor separaci´n es aquella en la que la separaci´n sea un m´ltiplo del n´mero o o u ude bancos, como en este caso que tenemos una separaci´n de 32 y 16 bancos. En este ocaso siempre se accede al mismo banco con lo que cada acceso colisiona con el anterior,Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 78. 3.4 Mejora del rendimiento de los procesadores vectoriales 65esto nos lleva a un tiempo de acceso de 12 ciclos por elemento y un tiempo total de12 × 64 = 768 ciclos de reloj.3.4 Mejora del rendimiento de los procesadores vec- toriales3.4.1 Encadenamiento de operaciones vectorialesHasta ahora, se hab´ considerado separadas, y por tanto en convoyes diferentes, ıaninstrucciones sobre vectores que utilizaran el mismo o los mismos registros vectoriales.Este es el caso, por ejemplo de dos instrucciones como MULTV V1,V2,V3 ADDV V4,V1,V5 Si se trata en este caso al vector V1 no como una entidad, sino como una serie deelementos, resulta sencillo entender que la operaci´n de suma pueda iniciarse unos ciclos odespu´s de la de multiplicaci´n, y no despu´s de que termine, ya que los elementos que la e o esuma puede ir necesitando ya los ha generado la multiplicaci´n. A esta idea, que permite osolapar dos instrucciones, se le llama encadenamiento. El encadenamiento permite queuna operaci´n vectorial comience tan pronto como los elementos individuales de su ooperando vectorial fuente est´n disponibles, es decir, los resultados de la primera unidad efuncional de la cadena se adelantan a la segunda unidad funcional. Naturalmente debenser unidades funcionales diferentes, de lo contrario surge un conflicto temporal. Si las unidades est´n completamente segmentadas, basta retrasar el comienzo de la asiguiente instrucci´n durante el tiempo de arranque de la primera unidad. El tiempo ototal de ejecuci´n para la secuencia anterior ser´ o ıa:Longitud del vector + Tiempo de arranque suma + Tiempo de arranque multiplicaci´n o La figura 3.15 muestra los tiempos de una versi´n de ejecuci´n no encadenada y o ode otra encadenada del par de instrucciones anterior suponiendo una longitud de 64elementos. El tiempo total de la ejecuci´n encadenada es de 77 ciclos de reloj que es osensiblemente inferior a los 145 ciclos de la ejecuci´n sin encadenar. Con 128 operaciones oen punto flotante realizadas en ese tiempo, se obtiene 1.7 FLOP por ciclo de reloj,mientras que con la versi´n no encadenada la tasa ser´ de 0.9 FLOP por ciclo de reloj. o ıa3.4.2 Sentencias condicionalesSe puede comprobar mediante programas de test, que los niveles de vectorizaci´n en omuchas aplicaciones no son muy altos [HP96]. Debido a la ley de Amdahl el aumentode velocidad en estos programas est´ muy limitado. Dos razones por las que no se aobtiene un alto grado de vectorizaci´n son la presencia de condicionales (sentencias oif) dentro de los bucles y el uso de matrices dispersas. Los programas que contienensentencias if en los bucles no se pueden ejecutar en modo vectorial utilizando las t´cnicas eexpuestas en este cap´ ıtulo porque las sentencias condicionales introducen control de flujoen el bucle. De igual forma, las matrices dispersas no se pueden tratar eficientementeIngenier´ Inform´tica ıa a Universidad de Valencia
  • 79. 66 Procesadores vectoriales 7 64 6 64 No encadenada Total=141 MULTV ADDV 7 64 MULTV Encadenada 6 64 Total=77 ADDV Figura 3.15: Temporizaci´n para la ejecuci´n no encadenada y encadenada. o outilizando algunas de las capacidades que se han mostrado; esto es por ejemplo un factorimportante en la falta de vectorizaci´n de Spice. Se explican a continuaci´n algunas o ot´cnicas para poder ejecutar de forma vectorial algunas de estas estructuras. e Dado el siguiente bucle: do 100 i=1,64 if (A(i) .ne. 0) then A(i)=A(i)-B(i) endif100 continue Este bucle no puede vectorizarse a causa de la ejecuci´n condicional del cuerpo. oSin embargo, si el bucle anterior se pudiera ejecutar en las iteraciones para las cualesA(i) = 0 entonces se podr´ vectorizar la resta. Para solucionarlo se emplea una m´scara ıa asobre el vector. El control de m´scara vectorial es un vector booleano de longitud MVL. Cuando se acarga el registro de m´scara vectorial con el resultado de un test del vector, cualquier ainstrucci´n vectorial que se vaya a ejecutar solamente opera sobre los elementos del ovector cuyas entradas correspondientes en el registro de m´scara vectorial sean 1. Las aentradas del registro vectorial destino que corresponden a un 0 en el registro de m´scara ano se modifican por la operaci´n del vector. Para que no act´e, el registro de m´scara o u avectorial se inicializa todo a 1, haciendo que las instrucciones posteriores al vectoroperen con todos los elementos del vector. Con esto podemos reescribir el c´digo anterior opara que sea vectorizable: LV V1,Ra ; Carga vector A en V1 LV V2,Rb ; Carga vector B en V2 LD F0,#0 ; Carga F0 con 0 en punto flotante SNESV F0,V1 ; Inicializa VM a 1 si V1(i)!=0 SUBV V1,V1,V2 ; Resta bajo el control de la m´scara a CVM ; Pone la m´scara todo a unos a SV Ra,V1 ; guarda el resultado en A. El uso del vector de m´scara tiene alguna desventaja. Primero, la operaci´n se a orealiza para todos los elementos del vector, por lo que da lo mismo que la condici´n se ocumpla o no, siempre consume tiempo de ejecuci´n. De todas formas, incluso con una om´scara repleta de ceros, el tiempo de ejecuci´n del c´digo en forma vectorial suele ser a o omenor que la versi´n escalar. Segundo, en algunos procesadores lo que hace la m´scara o aes deshabilitar el almacenamiento en el registro del resultado de la operaci´n, pero la ooperaci´n se hace en cualquier caso. Esto tiene el problema de que si por ejemplo oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 80. 3.4 Mejora del rendimiento de los procesadores vectoriales 67estamos dividiendo, y no queremos dividir por cero (para evitar la excepci´n) lo normal oes comprobar los elementos que sean cero y no dividir, pero en un procesador cuyam´scara s´lo deshabilite el almacenamiento y no la operaci´n, realizar´ la divisi´n por a o o a ocero generando la excepci´n que se pretend´ evitar. o ıa3.4.3 Matrices dispersasLas matrices dispersas son matrices que tienen una gran cantidad de elementos, siendola mayor´ de ellos cero. Este tipo de matrices, que habitualmente ocupar´ mucha ıa ıanmemoria de forma innecesaria, se encuentran almacenadas de forma compacta y sonaccedidas indirectamente. Para una representaci´n t´ o ıpica de una matriz dispersa nospodemos encontrar con c´digo como el siguiente: o do 100 i=1,n100 A(K(i))=A(K(i))+C(M(i)) Este c´digo realiza la suma de los vectores dispersos A y C, usando como ´ o ındices losvectores K y M que designan los elementos de A y B que no son cero (ambas matricesdeben tener el mismo n´mero de elementos no nulos). Otra forma com´n de representar u ulas matrices dispersas utiliza un vector de bits como m´scara para indicar qu´ elementos a eexisten y otro vector para almacenar sus valores. A menudo ambas representacionescoexisten en el mismo programa. Este tipo de matrices se encuentran en muchos c´digos, oy hay muchas formas de tratar con ellas dependiendo de la estructura de datos utilizadaen el programa. Un primer mecanismo consiste en las operaciones de dispersi´n y agrupamiento outilizando vectores ´ ındices. El objetivo es moverse de una representaci´n densa a la odispersa normal y viceversa. La operaci´n de agrupamiento coge el vector ´ o ındice ybusca en memoria el vector cuyos elementos se encuentran en las direcciones dadaspor la suma de una direcci´n base y los desplazamientos dados por el vector ´ o ındice.El resultado es un vector no disperso (denso) en un registro vectorial. Una vez sehan realizado las operaciones sobre este vector denso, se pueden almacenar de nuevoen memoria de forma expandida mediante la operaci´n de dispersi´n que utilizar´ el o o amismo vector de ´ ındices. El soporte hardware para estas operaciones se denominadispersar-agrupar (scatter-gather). En el ensamblador vienen dos instrucciones pararealizar este tipo de tareas. En el caso del DLXV se tiene LVI (cargar vector indexado),SVI (almacenar vector indexado), y CVI (crear vector ´ ındice, por ejemplo CVI V1,R1introduce en V1 los valores 0,R1,2*R1,3*R1,...,63*R1). Por ejemplo, suponer que Ra, Rc,Rk y Rm contienen las direcciones de comienzo de los vectores de la secuencia anterior,entonces el bucle interno de la secuencia se podr´ codificar como: ıa LV Vk,Rk ; Carga K LVI Va,(Ra+Vk) ; Carga A(K(i)) LV Vm,Rm ; Carga M LVI Vc,(Rc+Vm) ; Carga C(M(i)) ADDV Va,Va,Vc ; Los suma SVI (Ra+Vk),Va ; Almacena A(K(i)) De esta manera queda vectorizada la parte de c´lculo con matrices dispersas. El ac´digo en Fortran dado con anterioridad nunca se vectorizar´ de forma autom´tica o ıa apuesto que el compilador no sabr´ si existe dependencia de datos, ya que no sabe a ıapriori lo que contiene el vector K.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 81. 68 Procesadores vectoriales Algo parecido se puede realizar mediante el uso de la m´scara que se vio en las asentencias condicionales. El registro de m´scara se usa en este caso para indicar los aelementos no nulos y as´ poder formar el vector denso a partir de un vector disperso. ı La capacidad de dispersar/agrupar (scatter-gather ) est´ incluida en muchos de los asupercomputadores recientes. Estas operaciones rara vez alcanzan la velocidad de unelemento por ciclo, pero son mucho m´s r´pidas que la alternativa de utilizar un bucle a aescalar. Si la propiedad de dispersi´n de un matriz cambia, es necesario calcular un onuevo vector ´ındice. Muchos procesadores proporcionan soporte para un c´lculo r´pido a ade dicho vector. La instrucci´n CVI (Create Vector Index) del DLX crea un vector o´ındice dado un valor de salto (m), cuyos valores son 0, m, 2 × m, ..., 63 × m. Algunosprocesadores proporcionan una instrucci´n para crear un vector ´ o ındice comprimidocuyas entradas se corresponden con las posiciones a 1 en el registro m´scara. En DLX, adefinimos la instrucci´n CVI para que cree un vector ´ o ındice usando el vector m´scara. aCuando el vector m´scara tiene todas sus entradas a uno, se crea un vector ´ a ındiceest´ndar. a Las cargas y almacenamientos indexados y la instrucci´n CVI proporcionan un om´todo alternativo para soportar la ejecuci´n condicional. A continuaci´n se mues- e o otra la secuencia de instrucciones que implementa el bucle que vimos al estudiar esteproblema y que corresponde con el bucle mostrado en la p´gina 66: a LV V1,Ra ; Carga vector A en V1 LD F0,#0 ; Carga F0 con cero en punto flotante SNESV F0,V1 ; Pone VM(i) a 1 si V1(i)<>F0 CVI V2,#8 ; Genera ´ndices en V2 ı POP R1,VM ; Calcula el n´mero de unos en VM u MOVI2S VLR,R1 ; Carga registro de longitud vectorial CVM ; Pone a 1 los elementos de la m´scara a LVI V3,(Ra+V2) ; Carga los elementos de A distintos de cero LVI V4,(Rb+V2) ; Carga los elementos correspondientes de B SUBV V3,V3,V4 ; Hace la resta SVI (Ra+V2),V3 ; Almacena A El que la implementaci´n utilizando dispersar/agrupar (scatter-gather ) sea mejor oque la versi´n utilizando la ejecuci´n condicional, depende de la frecuencia con la que o ose cumpla la condici´n y el coste de las operaciones. Ignorando el encadenamiento, oel tiempo de ejecuci´n para la primera versi´n es 5n + c1 . El tiempo de ejecuci´n de o o ola segunda versi´n, utilizando cargas y almacenamiento indexados con un tiempo de oejecuci´n de un elemento por ciclo, es 4n + 4 × f × n + c2 , donde f es la fracci´n de o oelementos para la cual la condici´n es cierta (es decir, A = 0. Si suponemos que los ovalores c1 y c2 son comparables, y que son mucho m´s peque˜ os que n, entonces para a nque la segunda t´cnica sea mejor que la primera se tendr´ que cumplir e a 5n ≥ 4n + 4 × f × n 1lo que ocurre cuando 4 ≥ f. Es decir, el segundo m´todo es m´s r´pido que el primero si menos de la cuarta e a aparte de los elementos son no nulos. En muchos casos la frecuencia de ejecuci´n esomucho menor. Si el mismo vector de ´ ındices puede ser usado varias veces, o si crece eln´mero de sentencias vectoriales con la sentencia if, la ventaja de la aproximaci´n de u odispersar/agrupar aumentar´ claramente. aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 82. 3.5 El rendimiento de los procesadores vectoriales 693.5 El rendimiento de los procesadores vectoriales3.5.1 Rendimiento relativo entre vectorial y escalarA partir de la ley de Amdahl es relativamente sencillo calcular el rendimiento relativoentre la ejecuci´n vectorial y la escalar, es decir, lo que se gana al ejecutar un programa ode forma vectorial frente a la escalar tradicional. Supongamos que r es la relaci´n de ovelocidad entre escalar y vectorial, y que f es la relaci´n de vectorizaci´n. Con esto, se o opuede definir el siguiente rendimiento relativo: 1 r P = = (3.4) (1 − f ) + f /r (1 − f )r + fEste rendimiento relativo mide el aumento de la velocidad de ejecuci´n del procesador ovectorial sobre el escalar. La relaci´n hardware de velocidad r es decisi´n del dise˜ ador. o o nEl factor de vectorizaci´n f refleja el porcentaje de c´digo en un programa de usuario o oque se vectoriza. El rendimiento relativo es bastante sensible al valor de f . Este valorse puede incrementar utilizando un buen compilador vectorial o a trav´s de transfor- emaciones del programa. Cuanto m´s grande es r tanto mayor es este rendimiento relativo, pero si f es apeque˜ o, no importa lo grande que sea r, ya que el rendimiento relativo estar´ cercano n aa la unidad. Fabricantes como IBM tienen una r que ronda entre 3 y 5, ya que supol´ ıtica es la de tener cierto balance entre las aplicaciones cient´ ıficas y las de negocios.Sin embargo, empresas como Cray y algunas japonesas eligen valores mucho m´s altos apara r, ya que la principal utilizaci´n de estas m´quinas es el c´lculo cient´ o a a ıfico. Enestos casos la r ronda entre los 10 y 25. La figura 3.16 muestra el rendimiento relativopara una m´quina vectorial en funci´n de r y para varios valores de f . a o 5.5 90% 5 4.5 4 Rendimiento relativo (P) 80% 3.5 3 70% 2.5 2 50% 1.5 30% 1 1 2 3 4 5 6 7 8 9 10 relacion de velocidad escalar/vectorial (r) Figura 3.16: Rendimiento relativo escalar/vectorial.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 83. 70 Procesadores vectoriales3.5.2 Medidas del rendimiento vectorialDado que la longitud del vector es tan importante en el establecimiento del rendimientode un procesador, veremos las medidas relacionadas con la longitud adem´s del tiempo ade ejecuci´n y los MFLOPS obtenidos. Estas medidas relacionadas con la longitud otienden a variar de forma muy importante dependiendo del procesador y que son im-portantes de comparar. (Recordar, sin embargo, que el tiempo es siempre la medida deinter´s cuando se compara la velocidad relativa de dos procesadores.) Las tres medidas em´s importantes relacionadas con la longitud son a• Rn . Es la velocidad de ejecuci´n, dada en MFLOPS, para un vector de longitud n. o• R∞ . Es la velocidad de ejecuci´n, dada en MFLOPS, para un vector de longitud in- o finita. Aunque esta medida puede ser de utilidad para medir el rendimiento m´ximo, a los problemas reales no manejan vectores ilimitados, y la sobrecarga existente en los problemas reales puede ser mayor.• N1/2 . La longitud de vector necesaria para alcanzar la mitad de R∞ . Esta es una buena medida del impacto de la sobrecarga.• Nv . La longitud de vector a partir de la cual el modo vectorial es m´s r´pido que a a el modo escalar. Esta medida tiene en cuenta la sobrecarga y la velocidad relativa del modo escalar respecto al vectorial.Veamos como se pueden determinar estas medidas en el problema DAXPY ejecutadoen el DLXV. Cuando existe el encadenamiento de instrucciones, el bucle interior delc´digo DAXPY en convoys es el que se muestra en la figura 3.17 (suponiendo que Rx oy Ry contienen la direcci´n de inicio). o LV V1,Rx MULTSV V2,F0,V1 Convoy 1: chained load and multiply LV V3,Ry ADDV V4,V2,V3 Convoy 2: second load and ADD, chained SV Ry,V4 Convoy 3: store the result Figura 3.17: Formaci´n de convoys en el bucle interior del c´digo DAXPY. o o El tiempo de ejecuci´n de un bucle vectorial con n elementos, Tn , es: o n Tn = × (Tbucle + Tarranque ) + n × Tcampanada MV L El encadenamiento permite que el bucle se ejecute en tres campanadas y no me-nos, dado que existe un cauce de memoria; as´ Tcampanada = 3. Si Tcampanada fuera ıuna indicaci´n completa del rendimiento, el bucle podr´ ejecutarse a una tasa de o ıa2/3 × tasa del reloj MFLOPS (ya que hay 2 FLOPs por iteraci´n). As´ utilizando o ı,unicamente Tcampanada , un DLXV a 200 MHz ejecutar´ este bucle a 133 MFLOPS su-´ ıaponiendo la no existencia de seccionamiento (strip-mining) y el coste de inicio. Existenvarias maneras de aumentar el rendimiento: a˜ adir unidades de carga-almacenamiento nadicionales, permitir el solapamiento de convoys para reducir el impacto de los costes deinicio, y decrementar el n´mero de cargas necesarias mediante la utilizaci´n de registros u ovectoriales.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 84. 3.5 El rendimiento de los procesadores vectoriales 71Rendimiento m´ximo del DLXV en el DAXPY aEn primer lugar debemos determinar el significado real del rendimiento m´ximo, R∞ . aPor ahora, continuaremos suponiendo que un convoy no puede comenzar hasta que todaslas instrucciones del convoy anterior hayan finalizado; posteriormente eliminaremos estarestricci´n. Teniendo en cuenta esta restricci´n, la sobrecarga de inicio para la secuencia o ovectorial es simplemente la suma de los tiempos de inicio de las instrucciones: Tarranque = 12 + 7 + 12 + 6 + 12 = 49 Usando M V L = 64, Tloop = 15, Tstart = 49, y Tchime = 3 en la ecuaci´n del orendimiento, y suponiendo que n no es un m´ltiplo exacto de 64, el tiempo para una uoperaci´n de n elementos es o n Tn = × (15 + 49) + 3n = (n + 64) + 3n = 4n + 64 64 La velocidad sostenida est´ por encima de 4 ciclos de reloj por iteraci´n, m´s que la a o avelocidad te´rica de 3 campanadas, que ignora los costes adicionales. La mayor parte ode esta diferencia es el coste de inicio para cada bloque de 64 elementos (49 ciclos frentea 15 de la sobrecarga del bucle). Podemos calcular R∞ para una frecuencia de reloj de 200 MHz como Operaciones por iteraci´n × f recuencia de reloj o R∞ = limn→∞ Ciclos de reloj por iteraci´n o El numerador es independiente de n, por lo que Operaciones por iteraci´n × f recuencia de reloj o R∞ = limn→∞ (Ciclos de reloj por iteraci´n) o Tn 4n + 64 limn→∞ (Ciclos de reloj por iteraci´n) = limn→∞ o = limn→∞ =4 n n 2 × 200 M Hz R∞ = = 100 M F LOP S 4 El rendimiento sin el coste de inicio, que es el rendimiento m´ximo dada la estructura ade la unidad funcional vectorial, es 1.33 veces superior. En realidad, la distancia entreel rendimiento de pico y el sostenido puede ser incluso mayor.Rendimiento sostenido del DLXV en el Benchmark LinpackEl benchmark Linpack es una eliminaci´n de Gauss sobre una matriz de 100 × 100. As´ o ı,la longitud de los elementos van desde 99 hasta 1. Un vector de longitud k se usa kveces. As´ la longitud media del vector viene dada por ı, 99 2 i=1 i 99 = 66.3 i=1 iIngenier´ Inform´tica ıa a Universidad de Valencia
  • 85. 72 Procesadores vectoriales Ahora podemos determinar de forma m´s precisa el rendimiento del DAXPY usando auna longitud de vector de 66. Tn = 2 × (15 + 49) + 3 × 66 = 128 + 198 = 326 2 × 66 × 200 MHz R66 = = 81 MFLOPS 326 El rendimiento m´ximo, ignorando los costes de inicio, es 1.64 veces superior que ael rendimiento sostenido que hemos calculado. En realidad, el benchmark Linpackcontiene una fracci´n no trivial de c´digo que no puede vectorizarse. Aunque este o oc´digo supone menos del 20% del tiempo antes de la vectorizaci´n, se ejecuta a menos o ode una d´cima parte del rendimiento cuando se mide en FLOPs. As´ la ley de Amdahl e ı,nos dice que el rendimiento total ser´ significativamente menor que el rendimiento aestimado al analizar el bucle interno. Dado que la longitud del vector tiene un impacto significativo en el rendimiento, lasmedidas N1/2 y Nv se usan a menudo para comparar m´quinas vectoriales. aEjemplo Calcular N1/2 para el bucle interno de DAXPY para el DLXV con un reloj de 200 MHz.Respuesta Usando R∞ como velocidad m´xima, queremos saber para qu´ longitud del a e vector obtendremos 50 MFLOPS. Empezaremos con la f´rmula para MFLOPS o suponiendo que las medidas se realizan para N1/2 elementos: F LOP s ejecutados en N1/2 iteraciones Ciclos de reloj M F LOP S = × × 10−6 Ciclos de reloj para N1/2 iteraciones Segundos 2 × N1/2 50 = × 200 TN1/2 Simplificando esta expresi´n y suponiendo que N1/2 ≤ 64, tenemos que Tn≤64 = o 1 × 64 + 3 × n, lo que da lugar a TN1/2 = 8 × N1/2 1 × 64 + 3 × N1/2 = 8 × N1/2 5 × N1/2 = 64 N1/2 = 12.8 Por lo tanto, N1/2 = 13; es decir, un vector de longitud 13 proporciona aproxima- damente la mitad del rendimiento m´ximo del DLXV en el bucle DAXPY. aEjemplo ¿Cu´l es la longitud del vector, Nv , para que la operaci´n vectorial se ejecute a o m´s r´pidamente que la escalar? a aRespuesta De nuevo, sabemos que Rv < 64. El tiempo de una iteraci´n en modoo escalar se puede estimar como 10 + 12 + 12 + 7 + 6 + 12 = 59 ciclos de reloj, donde 10 es el tiempo estimado de la sobrecarga del bucle. En el ejemplo anterior se vio que Tn≤64 = 64 + 3 × n ciclos de reloj. Por lo tanto, 64 + 3 × Nv = 59 Nv 64 Nv = 56 Nv = 2Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 86. 3.5 El rendimiento de los procesadores vectoriales 73Rendimiento del DAXPY en un DLXV mejoradoEl rendimiento del DAXPY, como en muchos problemas vectoriales, viene limitadopor la memoria. Consecuentemente, ´ste se puede mejorar a˜ adiendo m´s unidades de e n aacceso a memoria. Esta es la principal diferencia arquitect´nica entre el CRAY X-MP (y olos procesadores posteriores) y el CRAY-1. El CRAY X-MP tiene tres cauces de accesoa memoria, en comparaci´n con el unico cauce a memoria del CRAY-1, permitiendo o ´adem´s un encadenamiento m´s flexible. ¿C´mo afectan estos factores al rendimiento? a a oEjemplo ¿Cu´l ser´ el valor de T66 para el bucle DAXPY en el DLXV si a˜ adimos a ıa n dos cauces m´s de acceso a memoria?. aRespuesta Con tres canales de acceso a memoria, todas las operaciones caben en un unico convoy. Los tiempos de inicio son los mismos, por lo que ´ 66 T66 = × (Tloop + Tarranque ) + 66 × Tcampanada 64 T66 = 2 × (15 + 49) + 66 × 1 = 194 Con tres cauces de acceso a memoria, hemos reducido el tiempo para el rendi- miento sostenido de 326 a 194, un factor de 1.7. Observaci´n del efecto de la ley o de Amdahl: Hemos mejorado la velocidad m´xima te´rica, medida en el n´mero a o u de campanadas, en un factor de 3, pero la mejora total es de 1.7 en el rendimiento sostenido. Otra mejora se puede conseguir del solapamiento de diferentes convoys y del coste delbucle escalar con las instrucciones vectoriales. Esta mejora requiere que una operaci´n ovectorial pueda usar una unidad funcional antes de que otra operaci´n haya finalizado, ocomplicando la l´gica de emisi´n de instrucciones. o o Para conseguir una m´xima ocultaci´n de la sobrecarga del seccionamiento (strip- a omining), es necesario poder solapar diferentes instancias del bucle, permitiendo la eje-cuci´n simult´nea de dos instancias de un convoy y del c´digo escalar. Esta t´cnica, o a o edenominada tailgating, se us´ en el Cray-2. Alternativamente, podemos desenrollar el obucle exterior para crear varias instancias de la secuencia vectorial utilizando diferentesconjuntos de registros (suponiendo la existencia de suficientes registros). Permitiendoel m´ximo solapamiento entre los convoys y la sobrecarga del bucle escalar, el tiempo ade inicio y de la ejecuci´n del bucle s´lo ser´ observable una unica vez en cada convoy. o o ıa ´De esta manera, un procesador con registros vectoriales puede conseguir unos costes dearranque bajos para vectores cortos y un alto rendimiento m´ximo para vectores muy agrandes.Ejemplo ¿Cuales ser´ los valores de R∞ y T66 para el bucle DAXPY en el DLXV ıan si a˜ adimos dos cauces m´s de acceso a memoria y permitimos que los costes del n a seccionamiento (strip-mining) y de arranque se solapen totalmente?.Respuesta Operaciones por iteraci´n × f recuencia de reloj o R∞ = limn→∞ Ciclos de reloj por iteraci´n o Tn limn→∞ (Ciclos de reloj por iteraci´n) = limn→∞ o nIngenier´ Inform´tica ıa a Universidad de Valencia
  • 87. 74 Procesadores vectoriales Dado que la sobrecarga s´lo se observa una vez, Tn = n + 49 + 15 = n + 64. As´ o ı, Tn n + 64 limn→∞ = limn→∞ =1 n n 2 × 200 MHz R∞ = = 400 MFLOPS 1 A˜ adir unidades adicionales de acceso a memoria y una l´gica de emisi´n m´s n o o a flexible da lugar a una mejora en el rendimiento m´ximo de un factor de 4. Sin a embargo, T66 = 130, por lo que para vectores cortos, la mejora en el rendimiento sostenido es de 326 = 2.5 veces. 1003.6 Historia y evoluci´n de los procesadores vecto- o rialesPara finalizar, la figura 3.18 muestra una comparaci´n de la diferencia de rendimiento oentre los procesadores vectoriales y los procesadores superescalares de ultima genera- ´ci´n. En esta figura podemos comprobar c´mo en los ultimos a˜ os se ha ido reduciendo o o ´ nla diferencia en rendimiento de ambas arquitecturas.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 88. 3.6 Historia y evoluci´n de los procesadores vectoriales o 75 10000 1000 T94 C90 DEC 8200 Ymp IBM Power2/990 Xmp 100 MIPS R4400Linpack MFLOPS Xmp HP9000/735 DEC Alpha AXP Cray 1s HP 9000/750 IBM RS6000/540 10 Cray n=1000 MIPS M/2000 Cray n=100 MIPS M/120 Micro n=1000 Micro n=100 1 Sun 4/260 1975 1980 1985 1990 1995 2000Figura 3.18: Comparaci´n del rendimiento de los procesadores vectoriales y los micro- oprocesadores escalares para la resoluci´n de un sistema de ecuaciones lineales denso o(tama˜ o de la matriz=n × n). nIngenier´ Inform´tica ıa a Universidad de Valencia
  • 89. 76 Procesadores vectorialesIngenier´ Inform´tica ıa a Universidad de Valencia
  • 90. Cap´ ıtulo 4Procesadores matricialesSeg´n la clasificaci´n de Flynn uno de los cuatro tipos de sistemas es el SIMD (Single u oInstruction stream Multiple Data stream) Este tipo de sistemas explotan el paralelismoinherente en los datos m´s que en las instrucciones. El computador de tipo SIMD acl´sico es el computador matricial. a La bibliograf´ para este tema se encuentra en [HB87] y [Hwa93]. ıa4.1 Organizaci´n b´sica o aLa configuraci´n b´sica de un procesador matricial se muestra en la figura 4.1. Como o avemos se trata de N elementos de proceso (EP) sincronizados y bajo el control de unaunica unidad de control (UC). Cada elemento de proceso est´ formado b´sicamente por´ a auna unidad aritm´tico l´gica, asociada a unos registros de trabajo, y una memoria local e opara el almacenamiento de datos distribuidos. La unidad de control, que muchas veceses un procesador escalar, tiene su propia memoria para almacenar el programa y datos.Las instrucciones escalares y de control como saltos, etc. se ejecutan directamente enla unidad de control. Las instrucciones vectoriales son transmitidas a los EPs parasu ejecuci´n. De esta manera se alcanza un alto grado de paralelismo gracias a la omultiplicidad de los elementos procesadores. Este esquema que se acaba de comentar y que corresponde al de la figura 4.1, es elmodelo de computador matricial con memoria distribuida. Otra posibilidad consiste entener la memoria compartida intercalando la red de interconexi´n entre los elementos ode proceso y las memorias. Las diferencias con el modelo anterior son que las memoriasligadas a los EPs son sustituidas por m´dulos en paralelo que son compartidos por otodos los EPs mediante la red de interconexi´n. La otra diferencia es que la red de ointerconexi´n del modelo de la figura se intercambia por la red de interconexi´n o o oalineamiento entre los elementos de proceso y las memorias. Un modelo operacional para los computadores matriciales viene especificado por lasiguiente qu´ ıntupla: M = N, C, I, M, R (4.1)donde:1. N es el n´mero de elementos de proceso en la m´quina. Por ejemplo, la Illiac IV u a tiene 64 EPs, mientras que la Connection Machine CM-2 tiene 65.536 EPs.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 91. 78 Procesadores matriciales Unidad de control EP1 EP2 EPN Proc. 1 Proc. 2 Proc. N Mem. 1 Mem. 2 Mem. N Red de interconexión Figura 4.1: Computador matricial b´sico. a2. C es el conjunto de instrucciones ejecutadas directamente por la unidad de control incluyendo las instrucciones escalares y las de control del flujo de ejecuci´n. o3. I es el conjunto de instrucciones que la unidad de control env´ a todos los EPs ıa para su ejecuci´n en paralelo. Estas instrucciones son aritm´ticas, l´gicas, rutado o e o de datos, enmascaramiento, y otras operaciones locales que son ejecutadas por los EPs sobre la memoria local.4. M es el conjunto de posibilidades de enmascaramiento donde cada m´scara se a encarga de dividir el conjunto de EPs en subconjuntos de EPs habilitados o des- habilitados.5. R es el conjunto de funciones de rutado que especifican varios patrones para ser establecidos en la red de interconexi´n para intercomunicaci´n entre EPs. o o4.2 Estructura interna de un elemento de procesoAunque las caracter´ısticas de un EP en un procesador matricial pueden variar de unasm´quinas a otras, se van a dar aqu´ unas nociones generales de los elementos b´sicos a ı aque forman los EPs en un computador matricial. La figura 4.2 muestra un procesadorejemplo para ilustrar las explicaciones. Vamos a suponer que cada elemento de proceso EPi tiene su memoria local MEPi .Internamente al EP habr´ un conjunto de registros e indicadores formado por Ai , Bi ,Ci ay Si , una unidad aritm´tico-l´gica, un registro ´ e o ındice local Ii , un registro de direccionesDi , y un registro de encaminamiento de datos Ri . El Ri de cada EPi est´ conectado aal Rj de otros EPs vecinos mediante la red de interconexi´n. Cuando se producen otransferencias de datos entre los los EPs, son los contenidos de Ri los que se transfieren.Representamos los N EPs como EPi para i = 0, 1, . . . , N − 1, donde el ´ ındice i es ladirecci´n del EPi . Definimos una constante m que ser´ el n´mero de bits necesarios o a upara codificar el n´mero N . El registro Di se utiliza entonces para contener los m bits ude la direcci´n del EPi . Esta estructura que se cuenta aqu´ est´ basada en el dise˜ o del o ı a nIlliac-IV. Algunos procesadores matriciales pueden usar dos registros de encaminamiento, unopara la entrada y otro para la salida. Se considerar´ en nuestro caso un unico registro a ´Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 92. 4.2 Estructura interna de un elemento de proceso 79 A la unidad de control Ai Bi Ci A otros EPs a EPi Di Ii Ri través de la red de interconexión Si ALU MEP iFigura 4.2: Componentes de un elemento de proceso (EP) en un computador matricial.(Ri ) en el cual las entradas y salidas est´n totalmente aisladas gracias al uso de bies- atables maestro-esclavo. Cada EPi est´ o bien en modo activo o bien en modo inactivo adurante cada ciclo de instrucci´n. Si un EPi est´ activo, ejecuta la instrucci´n que le o a oha enviado la unidad de control (UC). Si est´ inactivo no ejecuta la instrucci´n que a oreciba. Los esquemas de enmascaramiento se utilizan para modificar los indicadores deestado Si , supondremos que si Si = 1 entonces el EPi est´ activo, y sino, est´ inactivo. a a El conjunto de indicadores Si para i = 0, 1, . . . , N − 1, forma un registro de estadoS para todos los EPs. En la unidad de control hay un registro que se llama M quesirve de m´scara para establecer el estado de los EPs, por lo tanto M tiene N bits. aObs´rvese que las configuraciones de bits de los registros M y S son intercambiables ebajo el control de la UC cuando se va a establecer un enmascaramiento. Desde el punto de vista hardware, la longitud f´ısica de un vector est´ determinada apor el n´mero de EPs. La UC realiza la partici´n de un vector largo en bucles vectoria- u oles, el establecimiento de una direcci´n base global y el incremento de desplazamiento orespecto de esa direcci´n base. La distribuci´n de los elementos vectoriales sobre las o odiferentes MEP es crucial para la utilizaci´n eficaz de una colecci´n de EPs. Idealmente o ose deber´ poder obtener N elementos simult´neamente procedentes de las diferentes ıan aMEP. En el peor caso, todos los elementos del vector estar´ alojados en una sola ıanMEP. En tal situaci´n, tendr´ que ser accedidos de forma secuencial, uno tras otro. o ıan Un vector lineal unidimensional de n elementos puede ser almacenado en todas lasMEP si n ≤ N . Los vectores largos (n > N ) pueden ser almacenados distribuyendolos n elementos c´ıclicamente entre los N EPs. El c´lculo de matrices bidimensionales apuede causar problemas, ya que pueden ser necesarios c´lculos intermedios entre filas ay columnas. La matriz deber´ almacenarse de modo que fuera posible el acceso en ıaparalelo a una fila, una columna, o una diagonal en un ciclo de memoria. En un procesador matricial, los operandos vectoriales pueden ser especificados porlos registros a utilizar o por las direcciones de memoria a referenciar. Para instruccio-nes de referencia a memoria, cada EPi accede a la MEPi local, con el desplazamientoindicado por su propio registro ´ ındice Ii . El registro Ii modifica la direcci´n de me- omoria global difundida desde la UC. As´ diferentes posiciones pueden ser accedidas en ı,diferentes MEPi simult´neamente con la misma direcci´n global especificada por la UC. a oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 93. 80 Procesadores matriciales La utilizaci´n del registro ´ o ındice local (Ii ) es evidente cuando se quiere acceder a loselementos de la diagonal de una matriz. Si la matriz se encuentra colocada de formaconsecutiva a partir de la direcci´n 100, habr´ que cargar cada registro ´ o a ındice con eldesplazamiento correspondiente a cada elemento de la diagonal. Una vez inicializadoslos ´ ındices, se pasar´ como operando la direcci´n 100 que es la del comienzo de la a omatriz, y cada procesador leer´ un elemento distinto indicado por el ´ a ındice, en estecaso la diagonal de la matriz. Aparte del propio paralelismo obtenido por el c´lculo en paralelo sobre los elemen- atos de un vector, el propio encaminamiento de los datos reduce el tiempo de ejecuci´n ode determinadas tareas. Por ejemplo, en el tratamiento de im´genes, donde muchas aoperaciones son c´lculos entre p´ a ıxels vecinos, una arquitectura matricial paraleliza confacilidad los c´lculos. Tambi´n en operaciones donde unos datos en un vector depen- a eden de resultados anteriores sobre ese vector puede beneficiarse de la flexibilidad deinterconexi´n entre los EPs. o Los procesadores matriciales son computadores de prop´sito espec´ o ıfico destinados alimitadas aplicaciones cient´ıficas donde pueden alcanzar un rendimiento elevado. Sinembargo, los procesadores matriciales tienen algunos problemas de vectorizaci´n y pro- ogramaci´n dif´ o ıciles de resolver. Lo cierto es que los computadores matriciales no sonpopulares entre los fabricantes de supercomputadores comerciales.4.3 Instrucciones matriciales4.4 Programaci´n o4.4.1 Multiplicaci´n SIMD de matrices o4.5 Procesadores asociativos4.5.1 Memorias asociativas4.5.2 Ejemplos de procesadores asociativosIngenier´ Inform´tica ıa a Universidad de Valencia
  • 94. Cap´ ıtulo 5Generalidades sobre las redes deinterconexi´n oLa red de interconexi´n es uno de los elementos m´s importantes de cualquier arquitec- o atura paralela puesto que va a modificar el rendimiento global del sistema y la topolog´ ıade la arquitectura. La red de interconexi´n va a ser el veh´ o ıculo a trav´s del cual se van ea comunicar los diferentes elementos del sistema, memoria con procesador, elementosperif´ricos, unos procesadores con otros en un computador matricial, etc. Las redes de einterconexi´n se utilizan en computadores matriciales as´ como en multiprocesadores y o ımulticomputadores, dependiendo del tipo de sistema los elementos que se interconectanpueden variar, pero la topolog´ de la red, as´ como los protocolos, suelen ser comu- ıa ınes e independientes del tipo de sistema. En este cap´ ıtulo se estudiar´n precisamente alas diferentes topolog´ de redes de interconexi´n sean cuales fueren los elementos a ıas ointerconectar. En cuanto a la bibliograf´ de este tema, conviene consultar [DYN97] que es uno ıade los libros de redes para multicomputadores m´s completos y modernos. Tambi´n a een [CSG99] se encuentra una buena secci´n dedicada a las redes. Por ultimo, algunas o ´de las definiciones y par´metros se han tomado de [Wil96]. a5.1 Definiciones b´sicas y par´metros que caracte- a a rizan las redes de interconexi´n oEn esta parte dedicada a las redes se ver´n diferentes topolog´ para la construcci´n a ıas ode redes de interconexi´n. La eficiencia en la comunicaci´n en la capa de interconexi´n o o oes cr´ ıtica en el rendimiento de un computador paralelo. Lo que se espera es conseguiruna red con latencia baja y una alta tasa de transferencia de datos y por tanto unaancho de banda amplio. Las propiedades de red que veremos a continuaci´n van aoayudar a la hora de elegir el tipo de dise˜ o para una arquitectura. Veamos por tanto nlas definiciones que nos van a caracterizar una red:Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 95. 82 Generalidades sobre las redes de interconexi´n oTama˜ o de la red nEl tama˜ o de la red es el n´mero de nodos que contiene, es decir, el n´mero de elementos n u uinterconectados entre si. Estos nodos pueden ser procesadores, memorias, computado-res, etc.Grado del nodoEl n´mero de canales que entran y salen de un nodo es el grado del nodo y lo represen- utaremos por d degree. En el caso de canales unidireccionales, el n´mero de canales que uentran en el nodo es el grado de entrada y los que salen el grado de salida. El gradodel nodo representa el n´mero de puertos de E/S y por lo tanto el coste del nodo. Esto uquiere decir que el grado de los nodos deber´ ser lo m´s reducido posible para reducir ıa acostes. Si adem´s el grado del nodo es constante se consigue que el sistema pueda ser amodular y f´cilmente escalable con la adici´n de nuevos m´dulos. a o oDi´metro de la red aEl di´metro D de una red es el m´ximo de los caminos m´s cortos entre dos nodos a a acualquiera de una red. D = maxi,j∈N (minp∈Pij length(p))donde Pij es el conjunto de caminos de i a j. La longitud del camino se mide por eln´mero de enlaces por los que pasa el camino. El di´metro de la red nos da el n´mero u a um´ximo de saltos entre dos nodos, de manera que de esta forma tenemos una medida de alo buena que es la comunicaci´n en la red. Por todo esto, el di´metro de la red deber´ o a ıaser lo m´s peque˜ o posible desde el punto de vista de la comunicaci´n. El di´metro se a n o autiliz´ hasta finales de los 80 como la principal figura de m´rito de una red, de ah´ la o e ıpopularidad que tuvieron en esa ´poca redes de bajo di´metro como los hipercubos. e aAnchura de la bisecci´n oEl ancho de la bisecci´n, B, es el m´ o ınimo n´mero de canales que, al cortar, separa la ured en dos partes iguales. La bisecci´n del cableado, BW , es el n´mero de cables que o ucruzan esta divisi´n de la red. BW = BW , donde W es el ancho de un canal en bits. oEste par´metro nos da una cota inferior de la densidad del cableado. Desde el punto de avista del dise˜ ador, BW es un factor fijo, y el ancho de la bisecci´n restringe la anchura n o BWde los canales a W = B . La figura 5.1 muestra un ejemplo del c´lculo del ancho de la abisecci´n. o Cuando una red dada se divide en dos mitades iguales, al n´mero m´ u ınimo de canalesque atraviesa el corte se le llama anchura de canal biseccional. En el caso de una redde comunicaciones, caso com´n, cada canal estar´ compuesto por un n´mero w de bits, u a uhilos o cables. De esta manera podemos definir la anchura de cable biseccional comoB = bw. Este par´metro B refleja la densidad de cables en una red. Esta anchura de la abisecci´n nos da una buena indicaci´n del ancho de banda m´ximo en una red a trav´s o o a ede un corte transversal realizado en la red. El resto de cortes estar´ acotados por esta ıananchura de la bisecci´n. oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 96. 5.1 Definiciones b´sicas y par´metros que caracterizan las redes de interconexi´n a a o 83 (a) (b)Figura 5.1: Ejemplos del c´lculo del ancho de la bisecci´n: toro 2-D. (b) toro 3-D (no a ose muestran los enlaces de cierre).Longitud del cableLa longitud del cable entre nodos es tambi´n importante puesto que tiene efectos directos esobre la latencia de la se˜ al, desfase del reloj, o incluso los requerimientos de potencia. nRedes sim´tricas eUna red es sim´trica si es isomorfa a ella misma independientemente del nodo que econsideremos como origen, es decir, una red es sim´trica si la topolog´ de esta se e ıave igual desde cualquier nodo. Este tipo de redes tiene la ventaja de que simplificamucho de los problemas de manejo de recursos. Por ejemplo, dado un patr´n de tr´fico o auniforme, en las redes sim´tricas se produce una carga uniforme de los canales de la ered, cosa que no ocurre en las redes asim´tricas. e Otras propiedades como que si los nodos son homog´neos, o si los canales tienen ememoria o son s´lo conmutadores, son otras propiedades utiles para caracterizar la red. o ´Rendimiento de la redPara resumir los puntos anteriormente expuestos, veamos cuales son los factores queintervienen en el rendimiento global de una red de interconexi´n:oFuncionalidad Esto indica c´mo la red soporta el encaminamiento de datos, trata- o miento de las interrupciones, sincronizaci´n, combinaci´n petici´n/mensaje, y la o o o coherencia.Latencia de la red Indica el retraso de un mensaje, en el peor caso, a trav´s de la e red.Ancho de banda Indica la velocidad m´xima de transmisi´n de datos, en Mbytes/s, a o transmitidos a trav´s de la red. eComplejidad hardware Indica el coste de implementaci´n como el coste de los ca- o bles, conmutadores, conectores, arbitraje, y l´gica de interfaz. oEscalabilidad Indica la capacidad de una red para expandirse de forma modular con nuevos recursos en la m´quina y sin mucho detrimento en el rendimiento global. aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 97. 84 Generalidades sobre las redes de interconexi´n oCapacidad de transmisi´n de la red oLa capacidad de transmisi´n de una red se define como el n´mero total de datos que o upueden ser transmitidos a trav´s de la red por unidad de tiempo. Una forma de estimar ela capacidad de transmisi´n es calcular la capacidad de la red, es decir, el n´mero total o ude mensajes que pueden haber en la red a la vez. Normalmente, la m´xima capacidad ade transmisi´n es una fracci´n de su capacidad. o o Un punto caliente suele estar formado por un par de nodos que recogen una porci´n odemasiado grande el tr´fico total de la red. El tr´fico en estos puntos calientes puede a adegradar el rendimiento de toda la red a causa de la congesti´n que producen. La ocapacidad de transmisi´n en puntos calientes se define como la m´xima velocidad a la o aque se pueden enviar mensajes de un nodo espec´ ıfico Pi a otro nodo espec´ ıfico Pj . Las redes de dimensi´n peque˜ a (2D,3D) operan mejor bajo cargas no uniformes o nya que se comparten m´s recursos. En una red de dimensiones m´s elevadas, los cables a ase asignan a una dimensi´n particular y no pueden ser compartidas entre dimensiones. oPor ejemplo, en un n-cubo binario es posible que una l´ ınea se sature mientras otra l´ ıneaf´ ısicamente adyacente, pero asignada a una dimensi´n diferente, permanece inactiva. oEn un toro, todas las l´ ıneas f´ ısicamente adyacentes se combinan en un unico canal que ´es compartido por todos los mensajes. La latencia m´ ınima de la red se alcanza cuando el par´metro k y la dimensi´n n se a oeligen de manera que las componentes de la latencia debida a la distancia D (enlacesentre nodos) y a la relaci´n L/W (longitud L del mensaje normalizada por la anchura oW ) quedan aproximadamente iguales. La menor latencia se obtiene con dimensionesmuy bajas, 2 para hasta 10245 nodos. Las redes de dimensi´n baja reducen la contenci´n porque con pocos canales de o oancho 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 debanda estrecha. Mientras que la capacidad de la red y la latencia peor de bloqueson independientes de la dimensi´n, las redes de dimensi´n peque˜ a tienen una mayor o o ncapacidad de transmisi´n m´xima y una latencia de bloque media menor que las redes o ade dimensiones altas.5.1.1 Topolog´ control de flujo y encaminamiento ıa,El dise˜ o de una red se realiza sobre tres capas independientes: topolog´ encamina- n ıa,miento y control de flujo.• La topolog´ hace referencia al grafo de interconexi´n 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 asignaci´n de recursos, la topolog´ es la primera forma de asignaci´n o ıa o de los mismos.• El control de flujo hace referencia al m´todo utilizado para regular el tr´fico en e a la red. Es el encargado de evitar que los mensajes se entremezclen y controlar su avance para asegurar una progresi´n ordenada de los mismos a trav´s de la red. o e Si dos mensajes quieren usar el mismo canal al mismo tiempo, el control de flujo determina (1) qu´ mensaje obtiene el canal y (2) qu´ pasa con el otro mensaje. e e• El encaminamiento hace referencia al m´todo que se usa para determinar el cami- eIngenier´ Inform´tica ıa a Universidad de Valencia
  • 98. 5.1 Definiciones b´sicas y par´metros que caracterizan las redes de interconexi´n a a o 85 no que sigue un mensaje desde el nodo origen al nodo destino. El encaminamiento se puede ver como una relaci´n, C × N × C, que asigna al canal ocupado por la o cabecera del mensaje y en funci´n del nodo destino un conjunto de canales que o pueden utilizarse a continuaci´n para que el mensaje llegue a su destino. El enca- o minamiento es una forma din´mica de asignaci´n de recursos. Dada una topolog´ a o ıa, un nodo actual, y un destino, la relaci´n de encaminamiento determina como llevar o un mensaje desde el nodo actual al nodo destino.Topolog´ ıaUna topolog´ se eval´a en t´rminos de los siguientes cinco par´metros: Ancho de la ıa u e abisecci´n, grado del nodo, di´metro de la red, longitud de la red y su simetr´ Estos o a ıa.par´metros ya fueron expuestos al principio de este cap´ a ıtulo. La topolog´ de la red tambi´n guarda una gran relaci´n con la construcci´n f´ ıa e o o ısicade la red, especialmente con el empaquetamiento, que consiste en poner juntos todoslos nodos procesadores de la red y sus interconexiones. En la figura 5.2 se muestra unejemplo de empaquetamiento. An Interboard Channel Being Connected Using the Backplane Backplanes . .. .. .. . . . . . . . . . .. .. .. . . . . . . . . ....... ....... .... .... .... .... . .. .. .. .. .. .. .. .. .. .. . . .. .. .. .. .. .. .. .. .. .. . . . . ........ . . . ........... 1 . .. .. ..1 . . . .. .. .. . .... .... 1 .... .... . .. .. .. . . . . .. .. .. . . . . . .. .. .. ..1. . . . . . ........ . . . 1 1...... .... .... 1 .... .... ....... . .. .. .. .. . . . . . . . . . . .. .. .. ..1. . . . . . .. .. .. .. . . . . .. .. .. . . . . . . . . Router Chip 1 Cluster Interface 1 1 1 Cluster Interface .. ... 1 . . . . 1 . . Router Chip.. .. . . .. .... .. 1 . . . . . . . . . . .. .. .. . .Processor .and Memory. . Chips .. . ... 1 ......... . Processor .and Memory.. .. . . . . . . . .. Chips Cluster. Interface . ..... ....... .. .. .. .. . . . . . . 1 . Cluster . . . . . . . .1.. .. .. Interface . . . . Router Chip . . .Processor and Memory . . . . . . . . ....... Router Chip. . . . . .. Processor and Memory . . .. .. . .... .... .... . ..Chips.. . . 1 Cluster. Interface ... . . .. .. .. .. .. . . . . .. .. .. .. .. . . . .Cluster..Interface .. .. .. .. . Chips 1 .Router. Chip. . . Router Chip1 .... . . .1. . .. . Processor and Memory Board Processor and Memory . ..Chips . . . . . . . .. .. . . .. . . .... . . . . . . . Chips . . .. .. .. .. .. . . Cluster...... .. .. . . . . .. .. .. . . .............. . . . . . . .... .. .. .. ... .. .. .. . .. .. . . Processor, . . .. ... ... ... ... .. ... .. ... .. . . . .Memory. .. .. ... .. .. ... . . .. . . .. .. .. .. .. . . . . . . . ... . . .............. . . . . . . . . .&.. .. . . .... .... .... .... Router . .. .. .. . . . . . . . . . .. ..Chips . . . . . . .. . . ....... ....... ....... Board Pin-out Cluster Module Containing Multiple Processing Nodes Pin-out from a An Interboard Channel and Its Associated Router Cluster Module Being Connected Using a Connector Cable Figura 5.2: Ejemplo de empaquetamiento de un multicomputador.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 99. 86 Generalidades sobre las redes de interconexi´n oControl de flujoEl control de flujo se refiere al m´todo usado para regular el tr´fico en una red. De- e atermina cuando un mensaje o parte de un mensaje puede avanzar. Tambi´n se hace ecargo de la pol´ ıtica de asignaci´n de los recursos: buffers y canales; a las unidades de oinformaci´n: mensajes, paquetes y flits. o• Mensaje. Es la unidad l´gica de comunicaci´n. 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 m´s paquetes. Un paquete es la menor a unidad que contiene informaci´n de encaminamiento. Si existe m´s de un paquete o a en un mensaje, cada paquete contiene adem´s un n´mero de secuencia que permite a u su reensamblaje.• Flit. Un paquete se puede dividir a su vez en d´ ıgitos de control de flujo o flits, la menor unidad sobre la cual se puede realizar el control de flujo. Es decir, la comunicaci´n de recursos, cables y buffers, se realizan en funci´n de flits. En general, o o ´ un flit no contiene informaci´n de encaminamiento. Unicamente el primer flit de un o paquete sabe a donde se dirige. El resto de flits debe seguir al flit cabecera para determinar su encaminamiento.Una simple analog´ ilustra la diferencia entre los paquetes y los flits. Los paquetes son ıacomo los autom´viles. Dado que conocen a donde van, pueden entrelazarse libremente. oLos flits, por otro lado, son como los vagones de un tren. deben seguir al flit cabecerapara encontrar su destino. No se pueden mezclar con los flits de otros paquetes, operder´ su unico contacto con su destino. ıan ´ Otro aspecto importante que tiene que solucionar el control de flujo es el de bloqueode un paquete. En este caso ser´ necesario disponer de alg´n espacio buffer para su a ualmacenamiento temporal. Cuando ya no existe m´s espacio, el mecanismo de control ade flujo detiene la transmisi´n de informaci´n. Cuando el paquete avanza y aparece o om´s espacio buffer disponible, la transmisi´n comienza de nuevo. Existe tambi´n la a o ealternativa de eliminar el paquete cuando deja de existir espacio disponible o desviarsea trav´s de otro canal. eEncaminamientoEl encaminamiento es el m´todo usado por un mensaje para elegir un camino entre los ecanales de la red. El encaminamiento puede ser visto como un par (R, ρ), donde R ⊂ C × N × C, ρ : P (C) × α −→ C. La relaci´n de encaminamiento R identifica los caminos permitidos que pueden ser ousados por un mensaje para alcanzar su destino. Dada la posici´n actual del mensaje, oC, y su nodo destino, N , R identifica un conjunto de canales permitidos, C, que puedenser usados como siguiente paso en el camino. La funci´n ρ selecciona uno de los caminos de entre los permitidos. En cada paso odel encaminamiento, ρ toma el conjunto de posibles canales siguientes, P (C), algunaIngenier´ Inform´tica ıa a Universidad de Valencia
  • 100. 5.2 Clasificaci´n de las redes de interconexi´n seg´n su topolog´ o o u ıa 87informaci´n adicional acerca del estado de la red, α, y elige en canal en concreto, C. oLa informaci´n adicional, α, puede ser constante, aleatoria, o basada en informaci´n o osobre el tr´fico de la red. a Los m´todos de encaminamiento pueden clasificarse en deterministas, inconscientes e(oblivious), o adaptativos. Con el encaminamiento determinista, el camino que sigueun mensaje depende unicamente de los nodos origen y destino. En este caso R es una ´funci´n y α es constante (no se proporciona informaci´n adicional). o o En un encaminamiento inconsciente se puede elegir varios caminos a trav´s de la ered, pero no se utiliza informaci´n acerca del estado de la red para elegir un camino. oEl mensaje no es consciente del resto de tr´fico en la red. Con un encaminamiento de aeste tipo, R es una relaci´n (pueden existir varios caminos permisibles). Para que el oencaminamiento sea inconsciente, α no puede contener informaci´n acerca del estado ode la red. Puede ser aleatoria, una funci´n de tiempo, o una funci´n del contenido del o omensaje. El caso m´s general es el encaminamiento adaptativo, donde el router puede usar ainformaci´n acerca del estado de la red. Es este caso, α puede ser cualquier funci´n. o o5.2 Clasificaci´n de las redes de interconexi´n seg´ n o o u su topolog´ ıaEntre otros criterios, las redes de interconexi´n de han clasificado en funci´n de modo o ode funcionamiento (s´ ıncrono o as´ıncrono), y control de la red (centralizado, descentra-lizado, o distribuido). Hoy en d´ los multicomputadores, multiprocesadores, y NOWs ıa,dominan el mercado de los computadores paralelos. Todas estas arquitecturas utilizanredes as´ ıncronas con control distribuido. Por lo tanto, nos centraremos en otros criteriosque son m´s significativos en la actualidad. a La figura 5.3 muestra una clasificaci´n de las redes de interconexi´n conocidas en o ocuatro grupos en funci´n principalmente de la topolog´ de la red: redes de medio o ıacom´n, redes directas, redes indirectas, y redes h´ u ıbridas. Para cada grupo, la figuramuestra una jerarqu´ de clases, indicando alguna implementaci´n real que utiliza dicha ıa otopolog´ ıa. En las redes de medio compartido, el medio de transmisi´n est´ compartido por o atodos los dispositivos que tienen posibilidad de comunicaci´n. Un enfoque alternativo oconsiste en tener enlaces punto a punto que conecten de forma directa cada elementode comunicaci´n con un subconjunto (normalmente reducido) de otros los dispositivos oexistentes en la red. En este caso, la comunicaci´n entre elementos de comunicaci´n o ono vecinos requiere la transmisi´n de la informaci´n a trav´s de varios dispositivos o o eintermedios. A estas redes se les denominan redes directas. En vez de conectar deforma directa los elementos de comunicaci´n, las redes indirectas los conectan mediante ouno o m´s conmutadores. Si existen varios conmutadores, estos suelen estar conectados aentre ellos mediante enlaces punto a punto. En este caso, cualquier comunicaci´n oentre distintos dispositivos requiere transmitir la informaci´n a trav´s de uno o m´s o e aconmutadores. Finalmente, es posible una aproximaci´n h´o ıbrida.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 101. 88 Generalidades sobre las redes de interconexi´n o• Redes de medio compartido – Redes de ´rea local a ∗ Bus de contenci´n (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 est´ticas 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, Gra- ıas fos en Estrella, etc.• Redes Indirectas (Redes din´micas basadas en conmutadores) a – Topolog´ Regulares ıas ∗ Barra cruzada (Cray X/Y-MP, DEC GIGAswitch, Myrinet) ∗ Redes de Interconexi´n 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 m´ltiples (Sun XDBus) u – Redes jer´rquicas (Bridged LANs, KSR) a ∗ Redes basadas en Agrupaciones (Stanford DASH, HP/Convex Exemplar) – Otras Topolog´ Hipergrafo: Hiperbuses, Hipermallas, etc. ıasFigura 5.3: Clasificaci´n de las redes de interconexi´n. (1-D = unidimensional; 2-D = o obidimensional; 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 SquareResearch; MIN = Multistage Interconnection Network; MIT = Massachusetts Instituteof Technology; SGI = Silicon Graphics Inc.; TMC = Thinking Machines Corp.)Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 102. 5.2 Clasificaci´n de las redes de interconexi´n seg´n su topolog´ o o u ıa 895.2.1 Redes de medio compartidoLa estructura de interconexi´n menos compleja es aquella en la que el medio de trans- omisi´n est´ compartido por todos los elementos de comunicaci´n. En estas redes de o a omedio compartido, s´lo un dispositivo puede utilizar la red en un momento dado. Cada oelemento conectado a la red tiene circuitos para manejar el paso de direcciones y datos.La red en s´ misma act´a, normalmente, como un elemento pasivo ya que no genera ı umensajes. Un concepto importante es el de estrategia de arbitraje que determina c´mo se oresuelven los conflictos de acceso al medio. Una caracter´ ıstica de un medio compartidoes la posibilidad de soportar un broadcast at´mico en donde todos los dispositivos oconectados al medio pueden monitorizar actividades y recibir la informaci´n que se oest´ transmitiendo en el medio compartido. Esta propiedad es importante para un asoporte eficiente de muchas aplicaciones que necesitan comunicaciones del tipo “uno atodos” o “uno a muchos”, como las barreras de sincronizaci´n y protocolos de coherencia ode cach´ basados en snoopy. Debido al limitado ancho de banda, un medio compartido eunicamente puede soportar un n´mero limitado de dispositivos antes de convertirse en´ uun cuello de botella. Las redes de medio compartido pueden dividirse en dos grandes grupos: las redes de´rea local, usadas principalmente en la construcci´n de redes de ordenadores cuya dis-a otancia m´xima no supera unos pocos kil´metros, y los buses usados en la comunicaci´n a o ointerna de los uniprocesadores y multiprocesadores.Bus del sistema (Backplane bus)Un bus del sistema es la estructura de interconexi´n m´s simple para los multiprocesa- o adores basados en bus. Se usa normalmente para interconectar procesadores y m´dulos ode memoria para proporcionar una arquitectura UMA. La figura 5.4 muestra una redcon un bus unico. Un bus de este tipo consta usualmente de 50 a 300 hilos f´ ´ ısicamenterealizados mediante una placa base. Bus   P P M M Figura 5.4: Una red con bus unico. (M = memoria; P = procesador.) ´ Existen tres tipos de informaci´n en un bus de este tipo: datos, direcciones y se˜ ales o nde control. Las se˜ ales de control incluyen la se˜ al de petici´n del bus y la se˜ al de n n o npermiso de acceso al bus, entre muchas otras. Adem´s del ancho de las l´ a ıneas de datos,el m´ximo ancho de banda depende de la tecnolog´ El n´mero de procesadores que a ıa. upueden 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. eLANs de medio compartidoEs posible utilizar una LAN de alta velocidad como una columna vertebral que permitainterconectar ordenadores para proporcionar un entorno de computaci´n distribuido. oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 103. 90 Generalidades sobre las redes de interconexi´n oF´ısicamente, una LAN usa hilos de cobre o fibra ´ptica como medio de transmisi´n. La o otopolog´ utilizada puede ser un bus o un anillo. Debido a razones de implementaci´n ıa oy rendimiento, no es pr´ctico tener un control centralizado o alg´n mecanismo fijo de a uasignaci´n de acceso que determine qui´n puede acceder al bus. Las tres alternativas o eprincipales de LANs basadas en un control distribuido se describen a continuaci´n. o Bus de contenci´n: El mecanismo de arbitraje de bus m´s popular es que todos los o adispositivos compitan para tener el acceso exclusivo al bus. Debido a la compartici´n del omedio todos los dispositivos pueden monitorizar el estado del bus y detectar colisiones.Aqu´ el t´rmino “colisi´n” significa que dos o m´s dispositivos est´n usando el bus al ı, e o a amismo tiempo y sus datos colisionan. Cuando se detecta una colisi´n, los dispositivos ocausantes de la misma abortan la transmisi´n para intentarlo posteriormente. Entre las oLANs 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 laEthernet es 10 Mbps y la distancia m´xima es de 250 metros (cable coaxial). Para aromper la barrera de 10 Mbps ha aparecido Fast Ethernet que puede proporcionar unancho de banda de 100 Mbps. Token Bus: Una desventaja del bus de contenci´n es su naturaleza no determinista, oya que no puede garantizar cu´nto se debe esperar hasta ganar el acceso al bus. Por alo tanto, el bus de contenci´n no es el id´neo para soportar aplicaciones de tiempo o oreal. Para eliminar el comportamiento no determinista, aparece un enfoque alternativoque implica pasar un testigo entre los dispositivos conectados a la red. El dispositivoque tiene el testigo tiene el acceso al bus. Cuando termina de transmitir sus datos, eltestigo se pasa al siguiente dispositivo seg´n alg´n esquema prefijado. Restringiendo el u utiempo m´ximo que se puede estar en posesi´n del testigo se puede garantizar una cota a osuperior al tiempo que un dispositivo debe esperar. Arcnet soporta token bus con unancho de banda de 2.4 Mbps. Token Ring: Una extensi´n natural al token bus es la de utilizar una estructura de oanillo. El token ring de IBM proporciona anchos de banda de 4 y 16 Mbps sobre cablecoaxial. El protocolo FDDI (Fiber Distributed Data Interface) es capaz de proporcionarun ancho de banda de 100 Mbps usando fibra ´ptica. o5.2.2 Redes DirectasLa escalabilidad es una caracter´ıstica importante en el dise˜ o de sistemas multiprocesa- ndor. Los sistemas basados en buses no son escalables al convertirse el bus en un cuellode botella cuando se a˜ aden m´s procesadores. Las redes directas o redes punto a punto n ason una arquitectura red popular y que escalan bien incluso con un n´mero elevado de uprocesadores. Las redes directas consisten en un conjunto de nodos, cada uno directa-mente conectado a un subconjunto (usualmente peque˜ o) de otros nodos en la red. En nla figura 5.6 se muestra varios tipos de redes directas. Los correspondientes patrones deinterconexi´n se estudiar´n posteriormente. Cada nodo es un ordenador programable o acon su propio procesador, memoria local, y otros dispositivos. Estos nodos pueden tenerdiferentes capacidades funcionales. Por ejemplo, el conjunto de nodos puede contenerprocesadores vectoriales, procesadores gr´ficos, y procesadores de E/S. La figura 5.5 amuestra la arquitectura de un nodo gen´rico. Un componente com´n en estos nodos es e uun encaminador (router) que se encarga de manejar la comunicaci´n entre los nodos oa trav´s del env´ y recepci´n de mensajes. Por esta raz´n, las redes directas tambi´n e ıo o o eson conocidas como redes basadas en routers. Cada router tiene conexi´n directa con oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 104. 5.2 Clasificaci´n de las redes de interconexi´n seg´n su topolog´ o o u ıa 91el router de sus vecinos. Normalmente, dos nodos vecinos est´n conectados por un par ade canales unidireccionales en direcciones opuestas. Tambi´n se puede utilizar un canal ebidireccional para conectar dos nodos. Aunque la funci´n del encaminador puede ser orealizada por el procesador local, los encaminadores dedicados se han usado de formahabitual en multicomputadores de altas prestaciones, permitiendo el solapamiento dela computaci´n y las comunicaciones dentro de cada nodo. Al aumentar el n´mero de o unodos en el sistema, el ancho de banda total de comunicaciones, memoria y capacidadde procesamiento del sistema tambi´n aumenta. Es por esto que las redes directas son euna arquitectura popular para construir computadores paralelos de gran escala. Other   Local Functional Processor £ ¢ Memory ¡ Unit ¤ Input ¦ Output Channels Channels Router ¥ Figura 5.5: Arquitectura de un nodo gen´rico. e Cada encaminador soporta un n´mero de canales de entrada y salida. Los canales uinternos o puertos conectan el procesador/memoria local al encaminador. Aunquenormalmente existe unicamente un par de canales internos, algunos sistemas usan m´s ´ acanales internos para evitar el cuello de botella entre el procesador/memoria local y elrouter. Los canales externos se usan para comunicaciones entre los routers. Conectandolos canales de entrada de un nodo a los canales de salida del otros nodos podemos definirla red directa. A no ser que se diga lo contrario, utilizaremos el t´rmino “canal” para ereferirnos a un canal externo. A dos nodos conectados directamente se les llamanvecinos o nodos adyacentes. Normalmente, cada nodo tiene un n´mero fijo de canales ude entrada y salida, cada canal de entrada est´ emparejado con el correspondiente canal ade salida. A trav´s de todas las conexiones entre estos canales, existen varias maneras ede conectar los diferentes nodos. Obviamente, cada nodo de la red debe poder alcanzarcualquier otro nodo.5.2.3 Redes IndirectasLas redes indirectas o basadas en conmutadores (switch) forman el tercer grupo de redesde interconexi´n. En lugar de proporcionar una conexi´n directa entre algunos nodos, la o ocomunicaci´n entre cualquier pareja de nodos se realiza a trav´s de conmutadores. Cada o enodo tiene un adaptador de red que se conecta a un conmutador. Cada conmutadorconsta de un conjunto de puertos. Cada puerto consta de un enlace de entrada y otrode salida. Un conjunto (posiblemente vac´ de puertos en cada conmutador est´n ıo) aconectados a los procesadores o permanecen abiertos, mientras que el resto de puertosIngenier´ Inform´tica ıa a Universidad de Valencia
  • 105. 92 Generalidades sobre las redes de interconexi´n o (a) 2−ary 4−cube (hypercube) (b) 3−ary 2−cube (c) 3−ary 3−D mesh       (d) Binary Tree (e) Balanced Binary Tree t 000 x u 100 001 y v 010 z w u x 101 v y 110 011 w z 111 t (f) Cube-Connected Cycles (g) De Bruijn Network (h) Star Graph Figura 5.6: Algunas topolog´ propuestas para redes directas. ıasIngenier´ Inform´tica ıa a Universidad de Valencia
  • 106. 5.2 Clasificaci´n de las redes de interconexi´n seg´n su topolog´ o o u ıa 93est´n conectados a puertos de otros conmutadores para proporcionar conectividad entre alos procesadores. La interconexi´n de estos conmutadores define la topolog´ de la red. o ıa 5 3 0 6 Bidirectional Link 1 4 8 Switches Processing Elements 7 2 Figura 5.7: Un red conmutada con topolog´ irregular. ıa Las redes conmutadas han evolucionado considerablemente con el tiempo. Se hanpropuesto un amplio rango de topolog´ ıas, desde topolog´ regulares usadas en los ıasprocesadores array (matriciales) y multiprocesadores de memoria compartida UMA alas topolog´ irregulares utilizadas en la actualidad en los NOWs. Las topolog´ ıas ıasregulares tienen patrones de conexi´n entre los conmutadores regulares mientras que olas topolog´ irregulares no siguen ning´n patr´n predefinido. En el tema siguiente ıas u ose estudiar´n m´s detenidamente las topolog´ regulares. La figura 5.7 muestra una a a ıasred conmutada t´ ıpica con topolog´ irregular. Ambos tipos de redes pueden clasificarse ıaadem´s seg´n el n´mero de conmutadores que tiene que atravesar un mensaje para a u ullegar a su destino. Aunque esta clasificaci´n no es importante en el caso de topolog´ o ıasirregulares, puede significar una gran diferencia en el caso de redes regulares ya quealgunas propiedades espec´ ıficas se pueden derivar en funci´n de este dato. o5.2.4 Redes H´ ıbridasEn esta secci´n describiremos brevemente algunas topolog´ que no se encuadran en o ıaslas vistas hasta ahora. En general, las redes h´ ıbridas combinan mecanismos de redesde medio compartido y redes directas o indirectas. Por tanto, incrementan el ancho debanda con respecto a las redes de medio compartido, y reducen la distancia entre nodoscon respecto a las redes directas e indirectas. Existen varias aplicaciones concretas delas redes h´ıbridas. Este es el caso de las bridged LANs. Sin embargo, para sistemasque necesitan muy alto rendimiento, las redes directas e indirectas consiguen una mejorescalabilidad que las redes h´ ıbridas ya que los enlaces punto a punto son m´s sencillos ay m´s r´pidos que los buses de medio compartido. La mayor´ de los computadores a a ıaparalelos de alto rendimiento usan redes directas o indirectas. Recientemente las re-des h´ıbridas han ganado aceptaci´n de nuevo. El uso de tecnolog´ ´ptica permite la o ıa oimplementaci´n de redes de alto rendimiento. o Se han propuesto redes h´ıbridas para diferentes prop´sitos. En general, las redes oh´ ıbridas pueden modelarse mediante hipergrafos, donde los v´rtices del hipergrafo re- epresentan un conjunto de nodos de procesamiento, y las aristas representan el conjuntoIngenier´ Inform´tica ıa a Universidad de Valencia
  • 107. 94 Generalidades sobre las redes de interconexi´n ode canales de comunicaci´n y/o buses. Obs´rvese que una arista en un hipergrafo puede o econectar un n´mero arbitrario de nodos. Cuando una arista conecta exactamente dos unodos entonces representa un canal punto a punto. En caso contrario representa unbus. En algunos dise˜ os de redes, cada bus tiene un unico nodo conductor. Ning´n n ´ uotro 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, ıamanteni´ndose la capacidad de broadcast de los buses. Obviamente, cada nodo de la ered debe poder controlar al menos un bus, por lo que el n´mero de buses necesarios no upuede ser menor que el n´mero de nodos. En este caso, la topolog´ de la red se puede u ıamodelar mediante un hipergrafo directo. Global Bus   Bus  ¢ ¡ ¢ £¤¡£¤ Bus Bus Cluster Bus Cluster Bus ¡ ¡ ¡¡¥ ¥¦ ¥¦ §¨ ¡§¨ © ¡© Device Device Device(a) (b)Figura 5.8: Redes H´ ıbridas. (a) Una red multibus. (b) Una jerarqu´ de dos niveles de ıabuses.Redes multibusDebido al ancho de banda limitado que proporcionan las redes de medio compartido,´stas s´lo son capaz de soportar un n´mero peque˜ o de dispositivos, tiene una distanciae o u nlimitada, y no es escalable. Algunos investigadores han estudiado c´mo podr´ elimi- o ıanarse ese cuello de botella. Una aproximaci´n para incrementar el ancho de banda de la ored se muestra en la figura 5.8a. Sin embargo, los problemas de cableado y el coste delinterface hacen que sea de poca utilidad para el dise˜ o de multiprocesadores. Debido na las limitaciones el´ctricas de la tecnolog´ del encapsulado, es poco probable tener e ıauna red multibus con m´s de cuatro buses. Sin embargo, utilizando otras tecnolog´ a ıasde empaquetado como la multiplexaci´n por divisi´n de la longitud de onda en fibra o o´ptica hace posible integraci´n de m´ltiples buses.o o uRedes jer´rquicas aOtra aproximaci´n para incrementar el ancho de banda de la red es la que se muestra oen la figura 5.8b. Diferentes buses se interconectan mediante routers o puentes paratransferir informaci´n de un lado a otro de la red. Estos routers o puentes pueden fil- otrar el tr´fico de la red examinando la direcci´n destino de cada mensaje que le llegue. a oLa red jer´rquica permite expandir el ´rea de la red y manejar m´s dispositivos, pero a a adeja de ser una red de medio compartido. Esta aproximaci´n se usa para interconectar ovarias LANs. Normalmente, el bus global tiene un mayor ancho de banda. En casocontrario, se convertir´ en un cuello de botella. Esto se consigue utilizando una tec- ıanolog´ m´s r´pida. Las redes jer´rquicas han sido tambi´n propuestas como esquema ıa a a a eIngenier´ Inform´tica ıa a Universidad de Valencia
  • 108. 5.2 Clasificaci´n de las redes de interconexi´n seg´n su topolog´ o o u ıa 95de interconexi´n para los multiprocesadores de memoria compartida. Tambi´n en este o ecaso, el bus 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.9: Malla bidimensional basada en clusters.Redes basadas en clustersLas redes basadas en clusters tambi´n tienen una estructura jer´rquica. Incluso pueden e aconsiderarse como una subclase dentro de las redes jer´rquicas. Estas redes combinan alas ventajas de dos o m´s clases de redes a diferentes niveles en la jerarqu´ a ıa. Porejemplo, es posible combinar las ventajas de los buses y los enlaces punto a puntousando buses en el nivel m´s bajo de la jerarqu´ para formar clusters, y una topolog´ a ıa ıadirecta para conectar los clusters en el nivel superior. Este es el caso del computadorparalelo DASH (Stanford Directory Architecture for Shared-Memory). La figura 5.9muestra la arquitectura b´sica del este computador paralelo. En el nivel inferior cada acluster 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 decluster para implementar un protocolo snoopy para mantener la coherencia de la cach´.eLa red directa en el nivel superior elimina la limitaci´n del ancho de banda de un bus, oincrementando considerablemente la escalabilidad de la m´quina. a Es posible realizar otras combinaciones. En lugar de combinar buses y redes directas,el multiprocesador HP/Convex Exemplar combinan redes directas e indirectas. Estemultiprocesador consta de crossbar no bloqueantes de tama˜ o 5 × 5 en en nivel inferior nde la jerarqu´ conectando cuatro bloques funcionales y un interface de E/S para ıa,forma un cluster o hipernodo. Cada bloque funcional consta de dos procesadores, dosbancos de memoria e interfaces. Estos hipernodos se conectan a un segundo niveldenominado interconexi´n toroidal coherente formada por m´ltiples anillos usando el o uInterface de Coherencia Escalable (SCI). Cada anillo conecta un bloque funcional detodos hipernodos. En el nivel inferior de la jerarqu´ el crossbar permite a todos los ıa,procesadores dentro del hipernodo acceder a los m´dulos de memoria entrelazada de oese hipernodo. En el nivel superior, los anillos implementan un protocolo de coherenciade la cach´. eIngenier´ Inform´tica ıa a Universidad de Valencia
  • 109. 96 Generalidades sobre las redes de interconexi´n o Figura 5.10: Una hipermalla bidimensional.Otras topolog´ hipergrafo ıasSe han propuesto muchas otras topolog´ h´ıas ıbridas. Entre ellas, una clase particular-mente interesante en la de hipermallas. Una hipermalla es una topolog´ regular basada ıaen un conjunto de nodos dispuestos en varias dimensiones. En lugar de existir conexio-nes directas entre los vecinos de cada dimensi´n, cada nodo est´ conectado a todos lo o anodos de la dimensi´n a trav´s de un bus. Existen varias formas de implementar una o ehipermalla. La m´s directa consiste en conectar todos los nodo de cada dimensi´n a a otrav´s de un bus compartido. La figura 5.10 muestra una hipermalla 2-D. En esta red, elos buses est´n dispuestos en dos dimensiones. Cada nodo se conecta a un bus en cada adimensi´n. Esta topolog´ fue propuesta por Wittie1 , y se le denomina spanning-bus o ıahypercube. La misma tiene un di´metro muy peque˜ o, y la distancia media entre nodos a nescala muy bien en funci´n del tama˜ o de la red. Sin embargo, el ancho de banda o ntotal no escala bien. Adem´s, los frecuentes cambios en el maestro del bus causan una asobrecarga significativa. Single-Source Buses Switch Switch Switch Switch Node Node Node Node Figura 5.11: Una hipermalla unidimensional con conmutador crossbar distribuido. Una implementaci´n alternativa que elimina las restricciones se˜ aladas arriba con- o nsiste en reemplazar el bus compartido que conecta los nodos a lo largo de una dimensi´n o 1 L. D. Wittie. Communications structures for large networks of microcomputers. IEEE Transac-tions on Computers, vol C-29, pp. 694-702, August 1980.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 110. 5.2 Clasificaci´n de las redes de interconexi´n seg´n su topolog´ o o u ıa 97dada por un conjunto de tantos buses como nodos existan en esa dimensi´n. Esta es ola aproximaci´n propuesta en la Distributed Crossbar Switch Hypermesh (DCSH). La ofigura 5.11 muestra una dimensi´n de la red. Cada bus es controlado por un unico o ´nodo. Por tanto, no hay cambios en la pertenencia del bus. Adem´s, el ancho de banda aescala con el n´mero de nodos. Los dos principales problemas, sin embargo, son el alto un´mero de buses necesarios y el alto n´mero de puertos de entrada y salida que necesita u ucada nodo.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 111. 98 Generalidades sobre las redes de interconexi´n oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 112. Cap´ ıtulo 6MultiprocesadoresLos multiprocesadores son sistemas MIMD basados en varios procesadores funcionandode forma paralela e independiente. La principal caracter´ ıstica de los multiprocesadoreses que la memoria est´ compartida, es decir, todos los procesadores comparten el mismo aespacio de direccionamiento. El libro [CSG99] contiene la mayor parte de los temas tratados en este cap´ ıtulo,adem´s se trata de un libro muy completo sobre multiprocesadores. a6.1 Redes de interconexi´n para multiprocesadores o6.1.1 Redes de medio compartido. BusesUn bus de sistema est´ formado por un conjunto de conductores para la transacci´n de a odatos entre procesadores, m´dulos de memoria, y dispositivos perif´ricos conectados al o ebus. En el bus s´lo puede haber una transacci´n a un tiempo entre una fuente (maestro) o oy uno o varios destinos (esclavos). En el caso de que varios maestros quieran realizartransacciones, la l´gica de arbitraje del bus debe decidir quien ser´ el siguiente que o aconsiga el bus y realice la transacci´n. o Por esta raz´n a los buses digitales se les llama buses de contenci´n o buses de tiempo o ocompartido. Un sistema basado en bus tiene un coste bajo comparado con otros sistemasde conexi´n. Su uso est´ muy extendido en la industria y existen varios est´ndares del o a aIEEE disponibles. El bus es un camino de comunicaciones com´n entre procesadores, memoria y los usubsistemas de entrada/salida. El bus se realiza en la mayor´ de los casos sobre una ıaplaca de circuito impreso. Las tarjetas con los procesadores, memorias, etc. se conectana este circuito impreso o placa madre a trav´s de conectores o cables. e El multiprocesador basado en bus es uno de los sistemas multiprocesador m´s utili- azados en computadores de prestaciones medias. Ello es debido a su bajo coste, facilidadde dise˜ o, etc. El principal problema que tienen es su baja escalabilidad lo que no per- nmite tener sistemas con muchos procesadores de forma eficiente. Dependiendo del anchode banda del bus y de los requisitos de los procesadores que incorpora, un bus puedealbergar entre 4 y 16 procesadores de forma eficiente. Por encima de estos n´meros um´ximos, que dependen del procesador y el bus, el canal de conexi´n, en este caso el a oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 113. 100 Multiprocesadoresbus, se convierte en el cuello de botella del sistema. A pesar de esto, y dado que los requisitos de la mayor´ de los sistemas inform´ticos ıa ano necesitan de muchos procesadores, se suele utilizar el sistema basado en bus por subajo coste y facilidad de dise˜ o. Incluso en sistemas m´s complejos se sigue utilizando n ael bus, de manera que para aumentar la escalabilidad del sistema se disponen variosbuses formando una jerarqu´ o bien, se interconectan varios buses entre s´ a trav´s de ıa, ı euna red. Hay varios est´ndares de buses disponibles para el dise˜ ador. Muchas veces estos a nbuses han surgido a partir de un sistema concreto y se ha intentado luego que fueralo m´s est´ndar 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 elpopular VME con sus sucesivas extensiones que sigue siendo, a pesar de todo, el busm´s utilizado en sistemas empotrados a medida. a Para evitar los problemas del paso del tiempo, y garantizar la portabilidad del busindependientemente del procesador, han aparecido en los ultimos tiempos buses que son ´independientes de una arquitectura espec´ ıfica y que adem´s han sido ideados para hacer afrente a los sucesivos avances tecnol´gicos. Un ejemplo de bus de este tipo es el bus de oaltas prestaciones Futurebus+, que es el est´ndar 896 del IEEE. Este bus fue creado apor un grupo de trabajo a partir de una hoja en blanco, sin tener en cuenta ning´n uprocesador en particular, y con la intenci´n de definir un bus de muy altas prestaciones oque hiciera frente a sucesivos avances tecnol´gicos. Esta labor no ha sido sencilla y de ohecho se ha tardado entre 10 y 15 a˜ os, desde que surgi´ la idea, en tener una definici´n n o ocompleta del bus.6.1.2 Redes indirectasPara aplicaciones de prop´sito general es necesario el uso de conexiones din´micas que o apuedan soportar todos los patrones de comunicaci´n dependiendo de las demandas del oprograma. En vez de usar conexiones fijas, se utilizan conmutadores y ´rbitros en los acaminos de conexi´n para conseguir la conectividad din´mica. Ordenados por coste y o arendimiento, las redes din´micas principales son los buses, las redes de conexi´n multie- a otapa (MIN Multistage Interconnection Network), y las redes barras de conmutadores. El precio de estas redes es debido al coste de los cables, conmutadores, ´rbitros, ay conectores. El rendimiento viene dado por el ancho de banda de la red, la tasa detransmisi´n de datos, la latencia de la red, y los patrones de comunicaci´n soportados. o o Las redes indirectas se pueden modelar mediante un grafo G(N, C) donde N es elconjunto de conmutadores, y C es el conjunto de enlaces unidireccionales o bidirec-cionales entre conmutadores. Para el an´lisis de la mayor´ de las propiedades, no es a ıanecesario incluir los nodos de procesamiento en el grafo. Este modelo nos permite es-tudiar algunas propiedades interesantes de la red. Dependiendo de las propiedades quese est´n estudiando, un canal bidireccional podr´ ser modelado como un l´ e a ınea o comodos arcos en direcciones opuestas (dos canales unidireccionales). Cada conmutador en una red indirecta puede estar conectado a cero, uno, o m´s a ´procesadores. Unicamente los conmutadores conectados a alg´n procesador pueden ser uel origen o destino de un mensaje. Adem´s, la transmisi´n de datos de un nodo a otro a orequiere atravesar el enlace que une el nodo origen al conmutador, y el enlace entre elultimo conmutador del camino recorrido por el mensaje y el nodo destino. Por lo tanto,´Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 114. 6.1 Redes de interconexi´n para multiprocesadores o 101la distancia entre dos nodos es la distancia entre los conmutadores que conectan esosnodos m´s dos. De manera similar, el di´metro de la red, definido como la m´xima a a adistancia entre dos nodos de la red, es la m´xima distancia entre dos conmutadores aconectados a alg´n nodo m´s dos. Obs´rvese que la distancia entre dos nodos conectados u a ea trav´s de un unico conmutador es dos. e ´ Como ya se vio en el cap´ ıtulo dedicado a las redes, las redes de interconexi´n, y en el ocaso que nos ocupa ahora, las redes indirectas, pueden caracterizarse por tres factores:topolog´ encaminamiento y conmutaci´n. La topolog´ define c´mo los conmutadores ıa, o ıa oest´n interconectados a trav´s de los canales, y puede modelarse con un grafo como a eel indicado anteriormente. Para una red indirecta con N nodos, la topolog´ ideal ıaconectar´ esos nodos a trav´s de un unico conmutador de N × N . A dicho conmutador ıa e ´se le conoce con el nombre de crossbar. Sin embargo, el n´mero de conexiones f´ u ısicasde un conmutador est´ limitado por factores hardware tales como el n´mero de pins a udisponibles y el la densidad m´xima del cableado. Estas dificultades imposibilitan el auso de crossbar en redes de gran tama˜ o. Como consecuencia, se ha propuesto un gran nn´mero de topolog´ alternativas. u ıas En esta secci´n nos centraremos en las diferentes topolog´ existentes de redes o ıasindirectas, as´ como los algoritmos de encaminamiento utilizados en estas redes. ı6.1.3 Red de barra cruzadaEl mayor ancho de banda y capacidad de interconexi´n se consigue con la red de ba- orra cruzada. Una red de barra cruzada se puede visualizar como una red de una solaetapa de conmutaci´n. Los conmutadores de cada cruce dan las conexiones din´micas o aentre cada par destino-fuente, es decir, cada conmutador de cruce puede ofrecer uncamino de conexi´n dedicado entre un par. Los conmutadores se pueden encender o oapagar (on/off) desde el programa. Una barra cruzada gen´rica de conmutadores se emuestra en la figura 6.1, donde los elementos V (vertical) y H (horizontal) pueden serindistintamente procesadores, memorias, etc. Por ejemplo son t´ ıpicas las configura-ciones de procesador con memoria compartida, donde los m´dulos verticales son todo oprocesadores y los horizontales memorias, o al rev´s. e V1 V2 V3 Vn H1 H2 H3 Hn Figura 6.1: La red de conmutaci´n en barra cruzada. o Hay que hace notar, para el caso de multiprocesadores con memoria compartida,Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 115. 102 Multiprocesadoresque un m´dulo de memoria s´lo puede satisfacer una petici´n del procesador cada o o ovez. Cuando varias peticiones llegan al mismo m´dulo de memoria, la propia red odebe resolver el conflicto; el comportamiento de cada barra en el conmutador de barracruzada es muy parecido al de un bus. Sin embargo, cada procesador puede generar unasecuencia de direcciones para acceder a varios m´dulos de memoria de forma simult´nea. o aPor lo tanto, tal como se muestra en la figura 6.1 suponiendo que los V son procesadoresy los H memorias, s´lo un conmutador puede activarse en cada columna. Sin embargo, ovarios conmutadores en diferentes columnas se pueden activar simult´neamente para asoportar accesos a memoria paralelos o entrelazados. Otra aplicaci´n de la red de barra cruzada es la comunicaci´n entre procesadores. o oLa barra cruzada entre procesadores permite conexiones por permutaci´n entre procesa- odores. S´lo conexiones uno a uno son permitidas, por lo tanto, una barra cruzada n × n oconecta como mucho n pares a un tiempo. Esta es la diferencia con la barra cruzadaentre procesadores y memoria. Ambos tipos de barras cruzadas tienen operaciones yprop´sitos diferentes. o Las redes de barras cruzadas (crossbar ) permiten que cualquier procesador del sis-tema se conecte con cualquier otro procesador o unidad de memoria de tal manera quemuchos procesadores pueden comunicarse simult´neamente sin contenci´n. Es posible a oestablecer una nueva conexi´n en cualquier momento siempre que los puertos de en- otrada y salida solicitados est´n libres. Las redes de crossbar se usan en el dise˜ o de e nmultiprocesadores de peque˜ a escala pero alto rendimiento, en el dise˜ o de routers n npara redes directas, y como componentes b´sicos en el dise˜ o de redes indirectas de a ngran escala. Un crossbar se puede definir como una redes conmutada con N entradas yM salidas, que permite hasta min{N, M } interconexiones punto a punto sin contenci´n. oLa figura 6.1 muestra un red crossbar de N × N . Aunque lo normal es que N y M seaniguales, no es extra˜ o encontrar redes en las que N y M difieren, especialmente en los ncrossbar que conectan procesadores y m´dulos de memoria. o El coste de una red de este tipo es O(N M ), lo que hace que sea prohibitiva paravalores grandes de N y M . Los crossbars han sido utilizados tradicionalmente en multi-procesadores de memoria compartida de peque˜ a escala, donde todos los procesadores npueden acceder a la memoria de forma simult´nea siempre que cada procesador lea de, o aescriba en, un modulo de memoria diferente. Cuando dos o m´s procesadores compiten apor el mismo m´dulo de memoria, el arbitraje deja proceder a un procesador mientras oque el otro espera. El ´rbitro en un crossbar se distribuye entre todos los puntos de aconmutaci´n que conectan a la misma salida. Sin embargo, el esquema de arbitraci´n o opuede ser menos complejo que en el caso de un bus ya que los conflictos en un crossbarson la excepci´n m´s que la regla, y por tanto m´s f´ciles de resolver. o a a a Para una red de barras cruzadas con control distribuido, cada punto de conmutaci´nopuede estar en uno de los cuatro estados que se muestran en la figura 6.2. En lafigura 6.2a, la entrada de la fila en la que se encuentra el punto de conmutaci´n tiene oacceso a la correspondiente salida mientras que las entradas de las filas superiores quesolicitaban la misma salida est´n bloqueadas. En la figura 6.2b, a una entrada de una afila superior se le ha permitido el acceso a la salida. La entrada de la fila en la que seencuentra el punto de conmutaci´n no ha solicitado dicha salida, y puede ser propagada oa otros conmutadores. En la figura 6.2c, una entrada de una fila superior tiene accesoa la salida. Sin embargo, la entrada de la columna en la que se encuentra en punto deconmutaci´n tambi´n ha solicitado esa salida y est´ bloqueada. La configuraci´n de la o e a ofigura 6.2(d) s´lo es necesaria si el crossbar tiene soporte para comunicaciones multicast o(uno a muchos).Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 116. 6.1 Redes de interconexi´n para multiprocesadores o 103 (a) (b) (c) (d) Figura 6.2: Estados de un punto de conmutaci´n en una red de barras cruzadas. o Los avances en VLSI permiten la integraci´n del hardware para miles de conmuta- odores en un unico chip. Sin embargo, el n´mero de pines de un chip VLSI no puede ´ uexcederse de algunos centenares, lo que restringe el tama˜ o del mayor crossbar que npuede integrarse en un unico chip VLSI. Crossbars de mayor tama˜ o se pueden con- ´ nseguir mediante la partici´n del mismo en otros de menor tama˜ o, cada uno de ellos o nimplementado usando un unico chip. Por lo tanto, un crossbar de N × N se puede ´implementar con (N/n)(N/n)crossbar de tama˜ o n × n. n6.1.4 Redes de interconexi´n multietapa (MIN) oLos MIN (Multistage Interconnection Networks se han utilizado tanto en m´quinasaMIMD como SIMD. La figura 6.3 muestra una red multietapa generalizada. Un n´mero ude a × b conmutadores se usa en cada etapa. Entre etapas adyacentes se utiliza una redde interconexi´n fija. Los conmutadores pueden ser programados din´micamente para o aestablecer las conexiones deseadas entre las entradas y salidas. Las redes de interconexi´n multietapa (MINs) conectan dispositivos de entrada a odispositivos de salida a trav´s de un conjunto de etapas de conmutadores, donde cada econmutador es una red de barra cruzada. El n´mero de etapas y los patrones de uconexi´n entre etapas determinan la capacidad de encaminamiento de las redes. o Las MINs fueron inicialmente propuestas por las compa˜´ de tel´fonos y poste- n ıas eriormente para los procesadores matriciales. En estos casos, un controlador centralestablece el camino entre la entrada y la salida. En casos en donde el n´mero de entra- udas es igual al n´mero de salidas, cada entrada puede transmitir de manera s´ u ıncrona unmensaje a una salida, y cada salida recibir un mensaje de exactamente una entrada. Es-te patr´n de comunicaci´n unicast puede representarse mediante una permutaci´n de la o o odirecci´n asociada a la entrada. Debido a esta aplicaci´n, las MINs se han popularizado o ocomo redes de alineamiento que permiten acceder en paralelo a arrays almacenados enbancos de memoria. El almacenamiento del array se divide de tal manera que se permi-ta un acceso sin conflictos, y la red se utiliza para reordenar el array durante el acceso.Estas redes pueden configurarse con un n´mero de entradas mayor que el n´mero de u usalidas (concentradores) y viceversa (expansores). Por otra parte, en multiprocesadoresas´ ıncronos, el control centralizado y el encaminamiento basado en la permutaci´n es oinflexible. En este caso, se requiere un algoritmo de encaminamiento que establezca uncamino a trav´s de los diferentes estados de la MIN. e Dependiendo del esquema de interconexi´n empleado entre dos estados adyacentes y oel n´mero de estados, se han propuesto varias MINs. Las MINs permiten la construcci´n u ode multiprocesadores con centenares de procesadores y han sido utilizadas en algunasm´quinas comerciales. aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 117. 104 MultiprocesadoresUn modelo MIN generalizado axb axb axb conmut. conmut. conmut. axb axb axb conmut. CEE 1 conmut. CEE 2 CEE n conmut. axb axb axb conmut. conmut. conmut. Etapa 1 Etapa 2 Etapa n Figura 6.3: Estructura generalizada de una interconexi´n multietapa (MIN). o Existen muchas formas de interconectar etapas adyacentes. La figura 6.3 muestrauna red de interconexi´n general con N entradas y M salidas. La red consta de g etapas, oG0 a Gg−1 . Como se muestra en la figura 6.3, cada etapa, Gi , tiene wi conmutadores detama˜ o ai,j × bi,j , donde 1 ≤ j ≤ wi . As´ la etapa Gi consta de pi entradas y qi salidas, n ı,donde wi ¡ Switches a i, 1 b i, 1 p i = qi − 1 ¡ ¡ a i, 2 b i, 2 q i =pi + 1 Connection Connection Links Links a i, w i  b i, w i   Stage Ci Gi Ci+1 ¡ Figura 6.4: Visi´n detallada de una etapa Gi . o wi wi pi = ai,j y qi = bi,j j=1 j=1 La conexi´n entre dos etapas adyacentes Gi−1 y Gi , denotada por Ci , define el patr´n o ode conexi´n para pi = qi−1 enlaces, donde p0 = N y qg−1 = M . Por lo tanto, una MIN oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 118. 6.1 Redes de interconexi´n para multiprocesadores o 105puede representarse como C0 (N )G0 (w0 )C1 (p1 )G1 (w1 ) . . . Gg−1 (wg−1 )Cg (M ) Un patr´n de conexi´n Ci (pi ) define c´mo deben de estar conectados los enlaces pi o o oentre las qi−1 = pi salidas de la etapa Gi−1 y las pi entradas de la etapa Gi . Patronesdiferentes de conexi´n dan lugar a diferentes caracter´ o ısticas y propiedades topol´gicas ode las MINs. Los enlaces de Ci est´n numerados de 0 a pi − 1. a Desde un punto de vista pr´ctico, es interesante que todos los conmutadores sean aid´nticos, para amortizar el coste de dise˜ o. Las redes Banyan son una clase de MINs e ncon 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 × kconmutadores en n etapas. donde cada etapa contiene N conmutadores. Muchas de las kredes multietapa m´s conocidas, como la Omega, Inversa, Cubo, Mariposa, y de L´ a ıneabase , pertenecen a la clase de redes Delta, habi´ndose demostrado ser topol´gica y e ofuncionalmente equivalentes. En el caso de que los conmutadores tengan el mismo n´mero de puertos de entrada uy salida, las MINs tambi´n tendr´n el mismo n´mero de puertos de entrada y salida. e a uDado que existe una correspondencia uno a uno entre las entradas y las salidas, aestas conexiones se les denominan permutaciones. A continuaci´n definiremos cinco opermutaciones b´sicas. Aunque estas permutaciones fueron originariamente definidas apara redes con conmutadores 2 × 2, la mayor´ de las definiciones se pueden extender ıapare redes con conmutadores k × k y que tienen N = k n entradas y salidas, donde nes un entero. Sin embargo, algunas de estas permutaciones s´lo est´n definidas para o ael caso de que N sea potencia de dos. Con N = k n puertos, sea X = xn−1 xn−2 . . . x0la codificaci´n de un puerto arbitrario, 0 ≤ X ≤ N − 1, donde 0 ≤ xi ≤ k − 1, o0 ≤ i ≤ n − 1.6.1.5 Tipos de etapas de permutaci´n para MIN oLas diferentes clases de redes multietapa se diferencian en los m´dulos conmutadores oempleados y en los patrones de la conexi´n entre etapas (CEE). El m´dulo conmutador o om´s simple es el 2 × 2, y los patrones para la CEE m´s usados suelen ser el barajado a aperfecto, mariposa, barajado multiv´ barra cruzada, conexi´n cubo, etc. Veamos a ıa, ocontinuaci´n algunos de estos patrones fijos de interconexi´n. o oConexi´n de barajado perfecto oEl patr´n de barajado perfecto tiene un amplio campo de aplicaci´n en las interconexio- o ones multietapa. Fue originalmente propuesto para calcular la transformada r´pida de aFourier. La permutaci´n entre los elementos de entrada y salida de la red est´ basada o aen la mezcla perfecta de dos montones de cartas iguales que consiste en intercalar una auna las cartas de un mont´n con las del otro mont´n. La red de barajado perfecto toma o ola primera mitad de las entradas y la entremezcla con la segunda mitad, de manera quela primera mitad pasa a las posiciones pares de las salidas, y la segunda mitad a lasimpares.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 119. 106 Multiprocesadores La permutaci´n k-baraje perfecto, σ k , se define por o kX σ k (X) = (kX + ) mod N NUn modo m´s s´lido de describir dicha conexi´n es a o o σ k (xn−1 xn−2 . . . x1 x0 ) = xn−2 . . . x1 x0 xn−1La conexi´n k-baraje perfecto realiza un desplazamiento c´ o ıclico hacia la izquierda de losd´ ıgitos de X en una posici´n. Para k = 2, esta acci´n se corresponde con el barajado o operfecto de una baraja de N cartas, como se demuestra en la figura 6.5a para el caso deN = 8. El baraje perfecto corta la baraja en dos partes y las entremezcla empezandocon la segunda parte. El baraje perfecto inverso realiza la acci´n contraria como se odefine a continuaci´n: o −1 σ k (xn−1 xn−2 . . . x1 x0 ) = x0 xn−1 . . . x2 x1 0(000) 0(000) 0(000) 0(000) 0(000) 0(000) 1(001) 1(001) 1(001) 1(001) 1(001) 1(001) 2(010) 2(010) 2(010) 2(010) 2(010) 2(010) 3(011) 3(011) 3(011) 3(011) 3(011) 3(011) 4(100) 4(100) 4(100)     4(100) 4(100) 4(100)         5(101) 5(101) 5(101) 5(101) 5(101) 5(101) 6(110) 6(110) 6(110) 6(110) 6(110) 6(110) 7(111) 7(111) 7(111) 7(111) 7(111) 7(111) (a) Perfect Shuffle (b) Inverse Perfect Shuffle (c) Bit Reversal Figura 6.5: Barajado perfecto, barajado perfecto inverso, y bit reversal para N = 8. Suponiendo que las entradas tienen la forma an−1 an−2 . . . a1 a0 , donde ai es el biti-´simo de la direcci´n de cada entrada, el barajado perfecto realiza la siguiente trans- e oformaci´n en la direcci´n: o o Baraja(an−1 an−2 . . . a1 a0 ) = an−2 an−3 . . . a1 a0 an−1 (6.1)es decir, los bits de la direcci´n son desplazados c´ o ıclicamente una posici´n hacia la oizquierda. La inversa del barajado perfecto los mueve c´ıclicamente hacia la derecha.Conexi´n de d´ o ıgito inverso (Digit Reversal Connection)La permutaci´n de d´gito inverso ρk est´ definida por o ı a ρk (xn−1 xn−2 . . . x1 x0 ) = x0 x1 . . . xn−2 xn−1A esta permutaci´n se le suele denominar bit inverso, indicando claramente que fue opropuesta para k = 2. Sin embargo, la definici´n es tambi´n v´lida para k > 2. La o e afigura 6.5c muestra una conexi´n de bit inverso para el caso k = 2 y N = 8. oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 120. 6.1 Redes de interconexi´n para multiprocesadores o 107Conexi´n mariposa oLa i-´sima k-aria permutaci´n mariposa βik , para 0 ≤ i ≤ n − 1, se define como e o βik (xn−1 . . . xi+1 xi xi−1 . . . x1 x0 ) = xn−1 . . . xi+1 x0 xi−1 . . . x1 xiLa i-´sima permutaci´n mariposa intercambia los d´ e o ıgitos 0 e i-´simo del ´ e ındice. Lafigura 6.6 muestra la conexi´n mariposa para k = 2, i = 0, 1, 2 y N = 8. Observar que o kβ0 define una conexi´n uno a uno denominada conexi´n identidad, I. o o 0(000) 0(000) 0(000) 0(000) 1(001) 1(001) 1(001) 1(001) 2(010) 2(010) 2(010) 2(010) 3(011) 3(011) 3(011) 3(011) 4(100) 4(100) 4(100) 4(100)         5(101) 5(101) 5(101) 5(101) 6(110) 6(110) 6(110) 6(110) 7(111) 7(111) 7(111) 7(111) (a) Second Butterfly (b) First Butterfly (c) Zeroth Butterfly Figura 6.6: La conexi´n mariposa para N = 8. oConexi´n Cubo oLa i-´sima conexi´n cubo Ei , para 0 ≤ i ≤ n − 1, se define unicamente para k = 2, por e o ´ Ei (xn−1 . . . xi+1 xi xi−1 . . . x0 ) = xn−1 . . . xi+1 xi xi−1 . . . x0La i-´sima conexi´n cubo complementa el i-´simo bit del ´ e o e ındice. La figura 6.7 muestrala conexi´n cubo para i = 0, 1, 2 y N = 8. A E0 tambi´n se le denomina conexi´n o e ointercambio.Conexi´n en L´ o ınea Base kLa i-´sima k-aria permutaci´n en l´ e o ınea base δi , para 0 ≤ i ≤ n − 1, se define por k δi (xn−1 . . . xi+1 xi xi−1 . . . x1 x0 ) = xn−1 . . . xi+1 x0 xi xi−1 . . . x1La i-´sima conexi´n de l´ e o ınea base realiza un desplazamiento c´ ıclico del los i + 1 d´ ıgitosmenos significativos del ´ındice una posici´n a la derecha. La figura 6.8 muestra una o kconexi´n en l´ o ınea base para k = 2, i = 0, 1, 2 y N = 8. Observar que δ0 define laconexi´n identidad I. oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 121. 108 Multiprocesadores 0(000) 0(000) 0(000) 0(000) 1(001) 1(001) 1(001) 1(001) 2(010) 2(010) 2(010) 2(010) 3(011) 3(011) 3(011) 3(011) 4(100) 4(100) 4(100) 4(100)         5(101) 5(101) 5(101) 5(101) 6(110) 6(110) 6(110) 6(110) 7(111) 7(111) 7(111) 7(111) (a) Second Cube (b) First Cube (c) Zeroth Cube Figura 6.7: La conexi´n cubo para N = 8. o 0(000) 0(000) 0(000) 0(000) 1(001) 1(001) 1(001) 1(001) 2(010) 2(010) 2(010) 2(010) 3(011) 3(011) 3(011) 3(011) 4(100) 4(100) 4(100) 4(100)         5(101) 5(101) 5(101) 5(101) 6(110) 6(110) 6(110) 6(110) 7(111) 7(111) 7(111) 7(111) (a) Second Baseline (b) First Baseline (c) Zeroth Baseline Figura 6.8: La conexi´n en l´ o ınea base para N = 8.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 122. 6.1 Redes de interconexi´n para multiprocesadores o 1096.1.6 Clasificaci´n de las redes MIN oDependiendo de la disponibilidad de caminos para establecer nuevas conexiones, lasredes multietapa se han dividido tradicionalmente en tres clases:1. Bloqueantes. La conexi´n entre un par entrada/salida libre no siempre es posible o debido a conflictos 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 m´ltiples caminos para reducir u los conflictos e incrementar la tolerancia a fallos. A estas redes bloqueantes tambi´n e se les denominan multicamino.2. 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 m´ltiples caminos entre cada entrada y salida, lo que lleva a etapas adicionales. u3. Reconfigurables. 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 tambi´n necesitan de la existencia de m´ltiples 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.La redes no bloqueantes son caras. Aunque son m´s baratas que un crossbar del mismo atama˜ o, su costo es prohibitivo para tama˜ os grandes. El ejemplo m´s conocido de red n n ano bloqueante multietapa es la red Clos, inicialmente propuesta para redes telef´nicas. oLas redes reconfigurables requieren menos estados o conmutadores m´s sencillos que auna red no bloqueante. El mejor ejemplo de red reconfigurable es la red Bene˘. La sfigura 6.9 muestra de una Bene˘ de 8 × 8. Para 2n entradas, esta red necesita 2n − 1 setapas, y proporciona 2n−1 caminos alternativos. Las redes reconfigurables requierenun controlador central para reconfigurar las conexiones, y fueron propuestas para losprocesadores matriciales (array processors). Sin embargo, las conexiones no se puedenreconfigurar f´cilmente en multiprocesadores ya que el acceso de los procesadores a la ared es as´ ıncrono. As´ las redes reconfigurables se comportan como redes bloqueantes ı,cuando los accesos son as´ıncronos. Nos centraremos en la redes bloqueantes. C0 G0 C1 G1 C2 G2 C3 G3 C4 G4 C 5 000 000 001 001 010 010 011 011 100 100 101 101 110 110 111 111 Figura 6.9: Una red Bene˘ 8 × 8. s Dependiendo del tipo de canales y conmutadores, las redes multietapa pueden divi-dirse en dos clases:Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 123. 110 Multiprocesadores1. MINs unidireccionales. Los canales y conmutadores son unidireccionales.2. MINs bidireccionales. Los canales y conmutadores son bidireccionales. Esto impli- ca que la informaci´n se puede transmitir simult´neamente en direcciones opuestas o a entre conmutadores vecinos.Redes de Interconexi´n Multietapa Unidireccionales oLos bloques b´sicos de construcci´n de una red multietapa unidireccional son los con- a omutadores unidireccionales. Un conmutador a × b es un crossbar con a entradas y bsalidas. Si cada puerto de entrada puede conectarse a exactamente un puerto de salida,a lo m´s existir´n min{a, b} conexiones simult´neas. Si cada puerto de entrada puede a a aconectarse a varios puertos de salida, se necesita un dise˜ o m´s complicado para sopor- n atar la comunicaci´n multicast ( uno a varios). En el modo de comunicaci´n broadcast o o(uno a todos), cada puerto puede conectarse a todos los puertos de salida. La figura 6.10muestra 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 (d) Upper Broadcast Broadcast Figura 6.10: Cuatro posibles estados de un conmutador 2 × 2. En las redes multietapa con N = M , es habitual usar conmutadores con el mismon´mero de puertos de entrada y de salida (a = b). Si N > M , se usar´n conmu- u atadores con a > b. A estos conmutadores tambi´n se les denominan conmutadores de econcentraci´n. En el caso de N < M se usar´n conmutadores de distribuci´n con a < b. o a o Se puede demostrar que con N puertos de entrada y salida, una red multietapaunidireccional con conmutadores k × k necesita al menos logk N etapas para queexista un camino entre cualquier puerto de entrada y de salida. A˜ adiendo etapas nadicionales es posible utilizar caminos alternativos para enviar un mensaje desde unpuerto de entrada a un puerto de salida. Cualquier camino a trav´s de la MIN cruza etodos las etapas. Por tanto, todos los caminos tienen la misma longitud. A continuaci´n se consideran cuatro topolog´ equivalentes en redes multietapa o ıasunidireccionales. 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 patr´n de conexi´n Ci viene descrito por la (n − i)-´sima permutaci´n o o e o k en l´ınea base δn−i para 1 ≤ i ≤ n. El patr´n de conexi´n para Co viene dado por o o σk . La red de l´nea base es un ejemplo de red con una forma muy conveniente de algo- ı ritmo de autoencaminamiento, en el que los bits sucesivos de la direcci´n de destino o controlan las sucesivas etapas de la red. Cada etapa de la red divide el rango de encaminamiento en dos. La figura 6.12 muestra este tipo de red suponiendo 4 entra- das 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 m´s significativo de la direcci´n de destino puede usarse para dirigir la a oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 124. 6.1 Redes de interconexi´n para multiprocesadores o 111 C0 G0 C1 G1 C2 G2 C3 G3 C4 C0 G0 C1 G1 C2 G2 C3 G3 C4 0000 0000 0000 0000 0001 0001 0001 0001 0010 0010 0010 0010 0011 0011 0011 0011 0100 0100 0100 0100 0101 0101 0101 0101 0110 0110 0110 0110 0111 0111 0111 0111 1000 1000 1000 1000 1001 1001 1001 1001 1010 1010 1010 1010 1011 1011 1011 1011 1100 1100 1100 1100 1101 1101 1101 1101 1110 1110 1110 1110 1111 1111 1111 1111 (a) Multistage Baseline Network (b) Multistage Butterfly Network C0 G0 C1 G1 C2 G2 C3 G3 C4 C0 G0 C1 G1 C2 G2 C3 G3 C4 0000 0000 0000 0000 0001 0001 0001 0001 0010 0010 0010 0010 0011 0011 0011 0011 0100 0100 0100 0100 0101 0101 0101 0101 0110 0110 0110 0110 0111 0111 0111 0111 1000 1000 1000 1000 1001 1001 1001 1001 1010 1010 1010 1010 1011 1011 1011 1011 1100 1100 1100 1100 1101 1101 1101 1101 1110 1110 1110 1110 1111 1111 1111 1111 (c) Multistage Cube Network (d) Omega Network Figura 6.11: Cuatro redes de interconexi´n unidireccionales multietapa de 16 × 16. oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 125. 112 Multiprocesadores 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 m´s alto o el segundo a cuarto si la mitad m´s alta se hab´ seleccionado, o el cuarto m´s bajo o el primero a ıa a si la mitad seleccionada era la baja. El segundo bit m´s significativo es usado para a decidir qu´ cuarto elegir. Este proceso se repite para todas las etapas que haya. Es e evidente que el n´mero de bits necesarios para la direcci´n de las entradas dar´ el u o a n´mero de etapas necesario para conectar completamente la entrada con la salida. u Por ultimo, el bit menos significativo controla la ultima etapa. Este tipo de redes ´ ´ autorutadas sugiere la transmisi´n por conmutaci´n de paquetes. o o 000 000 001 001 010 010 Entradas Salidas 011 011 100 100 101 101 110 110 111 111 Figura 6.12: Red de l´ ınea base 8 × 8. Es f´cil 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 (Butterfly MINs). En una red multietapa mariposa, el patr´n de conexi´n Ci viene descrito por la i-´sima permutaci´n mariposa βik para o o e o k 0 ≤ i ≤ n − 1. El patr´n de conexi´n de Cn es β0 . o o• Redes multietapa cubo (Cube MINs). En una red multietapa cubo, el patr´n o k de conexi´n Ci viene descrito por la (n − i)-´sima permutaci´n mariposa βn−i para o e o 1 ≤ i ≤ n. El patr´n de conexi´n de Co es σ k . o o• Red Omega. En una red omega, el patr´n de conexi´n Ci viene descrito por la o o permutaci´n k-baraje perfecto σ k para 0 ≤ i ≤ n − 1. El patr´n de conexi´n de o o o k Cn es es β0 . As´ todos los patrones de conexi´n menos el ultimo son id´nticos. El ı, o ´ e ultimo patr´n de conexi´n no produce una permutaci´n. ´ o o o La figura 6.13(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 n´mero 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 patr´n de barajado, se o puede utilizar una red de recirculaci´n que devuelve las salidas de nuevo a las entra- o das hasta que se consigue la interconexi´n deseada. Para poder hacer esto se a˜ aden o n cajas de intercambio que no son m´s que conmutadores 2×2. La figura 6.13(a) mues- a tra una red de este tipo para 16 elementos de entrada y 16 de salida. Si hay 2nIngenier´ Inform´tica ıa a Universidad de Valencia
  • 126. 6.1 Redes de interconexi´n para multiprocesadores o 113 entradas es necesario un m´ximo de n ciclos para realizar cualquier permutaci´n a o entre los elementos de entrada y salida.Entradas Entradas Salidas Salidas (a) Red de barajado-intercambio (b) Red Omega Figura 6.13: Redes basadas en el barajado perfecto. La equivalencia topol´gica entre estas redes multietapa puede ser vista como sigue: oConsideremos que cada enlace de entrada del primer estado se numera usando una ca-dena de n d´ ıgitos sn−1 . . . s0 , donde 0 ≤ si ≤ k − 1 para 0 ≤ i ≤ n − 1. El d´ ıgito menossignificativo s0 da la direcci´n del puerto de entrada en el correspondiente conmutador oy la direcci´n del conmutador viene dada por sn−1 sn−2 . . . s1 . En cada etapa, un con- omutador dado es capaz de conectar cualquier puerto de entrada con cualquier puerto desalida. Esto puede interpretarse como el cambio del valor del d´ ıgito menos significativode la direcci´n. Para conseguir conectar cualquier entrada con cualquier salida de la ored, deber´ ıamos de ser capaces de cambiar el valor de todos los d´ ıgitos. Como cadaconmutador s´lo es capaz de cambiar el d´ o ıgito menos significativo de la direcci´n, los opatrones de conexi´n entre las etapas se definen de tal forma que se permute la posici´n o ode los d´ıgitos, y despu´s de n etapas todos los d´ e ıgitos habr´n ocupado la posici´n menos a osignificativa. Por lo tanto, la MINs definidas arriba difieren en el orden en el que losd´ıgitos de la direcci´n ocupan la posici´n menos significativa. o o La figura 6.11 muestra la topolog´ de cuatro redes de interconexi´n multietapa: (a) ıa ored baseline, (b) red butterfly, (c) red cube, y (d) red omega.Redes de interconexi´n multietapa bidireccionales oLa figura 6.14 ilustra un conmutador bidireccional en donde cada puerto est´ asociado aa un par de canales unidireccionales en direcciones opuestas. Esto implica que la infor-maci´n entre conmutadores vecinos puede transmitirse simult´neamente en direcciones o aopuestas. Para facilitar la explicaci´n, supondremos que los nodos procesadores est´n o aen la parte izquierda de la red, como se muestra en la figura 6.15. Un conmutadorbidireccional soporta tres tipos de conexiones: hacia delante, hacia atr´s y de vuelta a(ver figura 6.14). Dado que son posibles la conexiones de vuelta entre puertos del mis-mo lado del conmutador, los caminos tienen diferentes longitudes. En la figura 6.15 seIngenier´ Inform´tica ıa a Universidad de Valencia
  • 127. 114 Multiprocesadoresmuestra una MIN mariposa bidireccional de ocho nodos. Forward Backward Turnaround Figura 6.14: Conexiones en un conmutador bidireccional. C0 G0 C1 G1 C2 G2 ¢ £ ¢ £ ¢ £ 000   001   010   011   100 101 110 111 Nodes ¡ Figura 6.15: Una MIN mariposa bidireccional de ocho nodos. En las BMINs, los caminos se establecen cruzando etapas hacia delante, despu´s eestableciendo una conexi´n de vuelta, y finalmente cruzando los estados en direcci´n o ohacia atr´s. A este m´todo se le denomina encaminamiento de vuelta (turnaround a erouting). La figura 6.16 muestra dos caminos alternativos desde el nodo S al nodo Den una BMIN mariposa de ocho nodos. Cuando se cruzan las etapas hacia delante,existen varios caminos. En cada conmutador se puede seleccionar cualquiera de suspuertos de salida. Sin embargo, una vez cruzada la conexi´n de vuelta, existe un unico o ´camino hasta el nodo destino. En el peor caso, el establecimiento de un camino en unaBMIN de n etapas requiere cruzar 2n−1 etapas. Este comportamiento es muy parecidoal de las redes Bene˘. En efecto, la BMIN l´ s ınea base puede considerarse como una redBene˘ plegada. s En la figura 6.17, se muestra un BMIN mariposa con encaminamiento de vuelta. Enun fat tree, los procesadores se localizan en las hojas, y los v´rtices internos son con- emutadores. El ancho de banda de la transmisi´n entre los conmutadores se incrementa oa˜ adiendo m´s 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 ıael ´rbol hasta alcanzar el menor antecesor com´n de ambos procesadores, y despu´s se a u eenv´ hacia abajo hacia su destino. ıaIngenier´ Inform´tica ıa a Universidad de Valencia
  • 128. 6.1 Redes de interconexi´n para multiprocesadores o 115 000   S 001   010   D 011   100 101 110 111Figura 6.16: Caminos alternativos para una MIN mariposa bidireccional de ocho nodos.6.1.7 Encaminamiento en redes MINEn esta secci´n describiremos diversos aspectos del encaminamiento en redes MINs. oPara procesadores matriciales, un controlador central establece el camino entre la en-trada y la salida. En casos donde el n´mero de entradas es igual al n´mero de salidas, u ucada entrada transmite de forma s´ıncrona un mensaje a una salida, y cada salida recibeexactamente un mensaje de una entrada. Calcular las conexiones del conmutador pa-ra realizar dicha permutaci´n es una tarea compleja. Adem´s, algunas permutaciones o apueden no ser posibles en un paso a trav´s de la red. En este caso, ser´n necesarios e am´ltiples pasos de los datos a trav´s de la red en cuyo caso el objetivo pasa a ser u eel minimizar el n´mero de pasadas. La complejidad del c´lculo de las conexiones del u aconmutador es proporcional al n´mero de conmutadores. u Por otra parte, en multiprocesadores as´ıncronos, el control centralizado y el enca-minamiento por permutaci´n es poco flexible. En este caso es necesario un algoritmo ode encaminamiento para establecer el camino por las diferentes etapas de la MIN. Lasoluci´n m´s simple consiste en utilizar un encaminamiento en origen. En este caso, el o anodo origen especifica el camino completo. Dado que esta soluci´n produce una consi- oderable sobrecarga, nos centraremos en encaminamientos distribuidos. Los algoritmosde encaminamiento para MINs se describir´n posteriormente. aCondici´n de bloqueo en MINs oEn este apartado obtendremos condiciones necesarias y suficientes para que se bloqueendos circuitos, es decir, necesiten el mismo enlace intermedio. En un sistema con Nprocesadores, existen exactamente N enlaces entre cada etapa de los k×k conmutadores.La red consta de n = logk N , donde cada etapa est´ compuesta de N conmutadores. Los a kpatrones de enlaces intermedios conectan una salida de un conmutador en la etapa i conun entrada de un conmutador de la etapa i + 1. El bloqueo ocurre cuando dos paquetesdeben atravesar la misma salida en un conmutador de la etapa i, i = 0, 1, . . . n − 1.Encada etapa i, podemos numerar las salidas de dicha etapa desde 0 hasta N − 1. Aestas salidas se les denominan salidas intermedias en la etapa i. Si pensamos en la redcomo una caja negra, podemos representarla como se muestra en la figura 6.18 para elcaso de una red Omega con conmutadores 2 × 2. Cada etapa de conmutadores y cadaIngenier´ Inform´tica ıa a Universidad de Valencia
  • 129. 116 Multiprocesadores 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 (a) A 16−Node Butterfly BMIN Built with 2 x 2 Switches ¡ Ba rd wa ck r wa Fo   rd (b) A 16−Node Fat Tree ¡ ´ Figura 6.17: Arbol grueso y BMIN mariposa.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 130. 6.1 Redes de interconexi´n para multiprocesadores o 117etapa de enlaces puede representarse como una funci´n que permuta las entradas. En ola figura se muestra un ejemplo de un camino desde la entrada 6 a la salida 1. Lassalidas intermedias para este camino tambi´n se han marcado. Estas son las salidas e4, 0 y 1 para los conmutadores de las etapas 0, 1 y 2, respectivamente. Nuestra metainicial es la siguiente: Dado un par entrada/salida, generar las direcciones de todaslas salidas intermedias de ese camino, estas direcciones ser´n unicas. Dos caminos a ´de entrada/salida presentan un conflicto si atraviesan el mismo enlace intermedio ocomparten una salida com´n en una etapa intermedia. u Omega Network: Structural View 001 Intermediate Output at a Stage 110 Omega Network: Functional View 001 110 Shuffle Switch Shuffle Switch Shuffle Switch 0 0 1 1 2 2 Figura 6.18: Vista funcional de la estructura de una red Omega multietapa. A continuaci´n obtendremos la condici´n de bloqueo para la red Omega. Para otras o oredes es posible establecer condiciones equivalentes de manera similar. A partir de ahoratodas las numeraciones de las entradas/salidas se representar´n en base k. Para facilitar ael an´lisis supondremos una red con conmutaci´n de circuitos. Consideremos que se a oha establecido un circuito desde sn−1 sn−2 · · · s1 s0 a dn−1 dn−2 · · · d1 d0 . Consideremos laprimera etapa de enlaces en la figura 6.18. Esta parte de la red establece la siguienteconexi´n entre sus entradas y salidas. o sn−1 sn−2 . . . s1 s0 → sn−2 sn−3 . . . s1 s0 sn−1 (6.2) La parte derecha de la ecuaci´n anterior es la codificaci´n de la salida en el patr´n o o ok-desplazamiento y la codificaci´n de la entrada al primer nivel de conmutadores. Cada oconmutador s´lo puede cambiar el d´ o ıgito menos significativo de la codificaci´n actual. oDespu´s de la permutaci´n desplazamiento, ´ste es sn−1 . As´ que la salida de la primera e o e ıetapa ser´ aquella que haga que el d´ a ıgito menos significativo de la codificaci´n sea igual oa dn−1 . Por lo tanto, la conexi´n entrada/salida establecida en la primera etapa de oconmutadores deber´ ser aquella que conecta la entrada a la salida como sigue: aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 131. 118 Multiprocesadores sn−2 sn−3 . . . s1 s0 sn−1 → sn−2 sn−3 . . . s1 s0 dn−1 (6.3) La parte derecha de esta expresi´n es la codificaci´n de la entrada en la segunda o oetapa de enlaces. Es tambi´n la salida de la primera etapa de conmutadores y por tanto ela primera salida intermedia. En la figura 6.18 se muestra un camino desde la entrada 6a la salida 1 que tiene un total de tres salidas intermedias. De forma similar, podemosescribir la expresi´n de la salida intermedia en la etapa i como o sn−i−2 sn−i−3 . . . s0 dn−1 dn−2 . . . dn−i−1 (6.4) Esto es suponiendo que las etapas est´n numeradas desde 0 hasta n − 1. Ahora apodemos escribir la condici´n de bloqueo. Para cualquier entrada/salida (S, D) y (R, T ), olos dos caminos pueden establecerse sin conflictos si y s´lo si, ∀i, 0 ≤ i ≤ n − 1 o sn−i−2 sn−i−3 . . . s0 dn−1 dn−2 . . . dn−i−1 = rn−i−2 rn−i−3 . . . r0 tn−1 tn−2 . . . tn−i−1 (6.5) La detecci´n de bloqueos en dos pares de entrada/salida no es tan complicada como opodr´ parecer a primera vista. Observando la estructura de la condici´n de bloqueo ıa opodemos observar que si los circuitos se bloquean, entonces los d´ ıgitos n − i − 1 menossignificativos de las direcciones origen son iguales y los i+1 d´ ıgitos m´s significativos de alas direcciones destino son iguales. Supongamos que tenemos una funci´n φ(S, R) que odevuelve el mayor entero l tal que los l d´ ıgitos menos significativos de S y R son iguales.De forma similar, supongamos que tenemos una funci´n ψ(D, T ) que devuelve el mayor oentero m tal que los m d´ ıgitos m´s significativos de D y T son iguales. Entonces dos acaminos (S, D) y (R, T ) pueden establecerse sin conflictos si y s´lo si o φ(S, R) + ψ(D, T ) < n (6.6) donde N = k n . Desde un punto de vista pr´ctico, el bloqueo se puede calcular amediante secuencias de operaciones de desplazamiento y comparaci´n, como se indica oa continuaci´n: o sn−1 sn−2 . . . s2 s1 s0 dn−1 dn−2 . . . d3 d2 d1 d0 rn−1 rn−2 . . . r2 r1 r0 tn−1 tn−2 . . . t3 t2 t1 t0 Las direcciones de los dos pares entrada/salida se concatenan. Figurativamente,una ventana de tama˜ o n se desplaza sobre ambos pares y se compara el contenido nde ambas ventanas. Si son iguales en alg´n punto, entonces existe un conflicto en ualguna etapa. El orden de ejecuci´n es de O(logk N ). Para determinar si todos los ocaminos pueden establecerse sin conflictos, deber´ ıamos realizar O(N 2 ) comparacionescada una de las cuales tarda O(logk N ) pasos en realizarse dando lugar a un algoritmode orden O(N 2 logk N ). En comparaci´n, el mejor algoritmo de configuraci´n de todos o olos conmutadores mediante un control centralizado necesita un tiempo de O(N logk N ).Sin embargo, cuando se utiliza la formulaci´n arriba indicada, muy a menudo no es onecesario tener en cuenta el n´mero de comparaciones en el peor de los casos. A menudo, ula propia estructura del patr´n de comunicaciones puede utilizarse para determinar si oexiste conflicto entre ellos.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 132. 6.1 Redes de interconexi´n para multiprocesadores o 119Algoritmos 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 encaminamientose puedan realizar en funci´n de la direcci´n destino, sin importar la direcci´n ori- o o ogen. El autoencaminamiento se realiza usando etiquetas de encaminamiento. Para unconmutador k × k, existen k puertos de salida. Si el valor de la etiqueta de encamina-miento correspondiente es i (0 ≤ i ≤ k − 1), el paquete correspondiente ser´ enviado aa trav´s del puerto i. Para una MIN de n estados, la etiqueta de encaminamiento es eT = tn−1 . . . t1 t0 , donde ti controla el conmutador de la etapa Gi . Cada conmutador s´lo es capaz de cambiar el d´ o ıgito menos significativo de la direc-ci´n actual, Por lo tanto, las etiquetas de encaminamiento tendr´n en cuenta qu´ d´ o a e ıgitoes el menos significativo en cada etapa, reemplaz´ndolo por el correspondiente d´ a ıgito dela direcci´n destino. Para un destino dado dn−1 dn−2 . . . d0 , la etiqueta de encaminamien- oto en una red mariposa se forma haciendo ti = di+1 para 0 ≤ i ≤ n − 2 y tn−1 = d0 . Enuna MIN cubo, la etiqueta est´ formada por ti = dn−i−1 para 0 ≤ i ≤ n−1. Finalmente, aen una red Omega, la etiqueta de encaminamiento se forma haciendo ti = dn−i−1 para0 ≤ i ≤ n − 1. El siguiente ejemplo muestra los caminos seleccionados por el algoritmode encaminamiento basado en etiquetas para una MIN mariposa de 16 nodos. C0 G0 C1 G1 C2 G2 C3 G3 C4 0000 0000 0001 0001 0010 0010 0011 0011 0100 0100 0101 0101 0110 0110 0111 0111 1000 1000 1001 1001 1010 1010 1011 1011 1100 1100 1101 1101 1110 1110 1111 1111Figura 6.19: Selecci´n del camino por el algoritmo de encaminamiento basado en eti- oquetas en una MIN mariposa de 16 nodos. Ejemplo La figura 6.19 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 dn−1 dn−2 . . . d0 se forma haciendo ti = di+1 para 0 ≤ i ≤ n−2 y tn−1 = d0 . As´ la etiqueta para el destino 0011 ı, es 1001. Esta etiqueta indica que el paquete debe elegir la salida superior delIngenier´ Inform´tica ıa a Universidad de Valencia
  • 133. 120 Multiprocesadores 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 Nentre cualquier par entrada/salida. Sin embargo, si un enlace se congestiona o falla, lapropiedad de camino unico puede f´cilmente interrumpir la comunicaci´n entre algunos ´ a opares entrada/salida. La congesti´n de paquetes sobre algunos canales causa el proble- oma conocido como punto caliente. Se han propuesto muchas soluciones para resolvereste problema. Una aproximaci´n popular es proporcionar m´ltiples caminos alterna- o utivos entre cualquier par origen y destino con lo que se consigue reducir la congesti´n ode la red al mismo tiempo que se consigue tolerancia a fallos. Estos m´todos requieren enormalmente 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 con-mutador, cada puerto tiene d canales. Usando canales replicados, las DMINs ofrecenuna mejora sustancial del throughput de la red. La etiqueta de encaminamiento enuna DMIN puede determinarse mediante la direcci´n destino al igual que se mencion´ o opara las TMINs. Dentro de cada conmutador, los paquetes se env´ a un puerto de ıansalida particular de forma aleatoria entre los canales libres. Si todos los canales est´n aocupados, el paquete se bloquea. Otra aproximaci´n al dise˜ o de MINs consiste en permitir comunicaciones bidirec- o ncionales. En este caso, cada puerto del conmutador tiene canales duales. En una redmariposa (BMIN) construida con conmutadores k × k, la direcci´n origen S y la di- orecci´n destino D se representan mediante n´meros k -arios sn−1 . . . s1 s0 y dn−1 . . . d1 d0 o urespectivamente. La funci´n F irstDif f erence (S, D) devuelve t, la posici´n en donde o oexiste la primera diferencia (m´s a la izquierda) entre sn−1 . . . s1 s0 y dn−1 . . . d1 d0 . a Un camino de encaminamiento con vuelta atr´s entre cualquier origen y destino adebe cumplir las siguientes restricciones:• El camino consiste en algunos canales hacia delante, algunos canales hacia atr´s, y a exactamente una conexi´n de vuelta. o• El n´mero de canales hacia adelante es igual al n´mero de canales hacia atr´s. u u a• Ning´n canal hacia adelante y hacia atr´s a lo largo del camino son el canal pareja u a del mismo puerto.Obs´rvese que la ultima condici´n se utiliza para prevenir comunicaciones redundantes. e ´ oPara encaminar un paquete desde el origen al destino, el paquete se env´ en primer ıalugar a la etapa Gt . No importa a que conmutador llegue (en la etapa Gt ). Despu´s, eel paquete gira y se env´ de vuelta a su destino. Cuando se mueve hacia el estado Gt , ıaun paquete tiene varias opciones sobre qu´ canal de salida elegir. La decisi´n puede e oresolverse seleccionando aleatoriamente entre aquellos canales de salida que no est´n abloqueados por otros paquetes. Despu´s de que el paquete ha llegado a un conmutador een el estado Gt , elige el unico camino desde ese conmutador hacia su destino. Este ´camino de vuelta puede determinarse mediante un algoritmo de encaminamiento basadoen etiquetas para TMINs.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 134. 6.1 Redes de interconexi´n para multiprocesadores o 121 Observar que los algoritmos de encaminamiento descritos arriba son algoritmos dis-tribuidos, en donde cada conmutador determina el canal de salida bas´ndose en la ainformaci´n que lleva el propio paquete. El siguiente ejemplo muestra los caminos odisponibles en una red BMIN mariposa de ocho nodos. S 000 000     S 001   001   010   010   D 011   011   100 100 101 101 110 110 D 111 111 (a) FirstDifference(S, D) = 2 (b) FirstDifference(S, D) = 1 Figura 6.20: Caminos disponibles en una BMIN mariposa de ocho nodos. Ejemplo La figura 6.20 muestra los caminos disponibles para una red BMIN mariposa de ocho nodos usando conmutadores 2 × 2. La figura 6.20a 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 figura 6.20b, los nodos origen y destino son 001y 011, respectivamente. F irstDif f erence(S, D) = 1, y el paquete gira en la etapa G1 .6.1.8 Resumen de las redes indirectas y equivalenciasEn la tabla 6.1 se resumen las caracter´ ısticas m´s importantes de los buses, redes amultietapa, y conmutadores de barra cruzada, para la construcci´n de redes din´micas. o aEvidentemente el bus es la opci´n m´s econ´mica pero tiene el problema del bajo ancho o a ode banda disponible para cada procesador, especialmente si hay muchos. Otro problemacon el bus es que es sensible a los fallos, de manera que es necesario su duplicaci´n para oobtener sistemas tolerantes a fallos. El conmutador de barra cruzada es el m´s caro de hacer, especialmente teniendo aen cuenta que su complejidad hardware crece con n2 . Sin embargo, la barra cruzadatiene el mayor ancho de banda y las mayor capacidad de rutado. Para una red con nodemasiados elementos es la mejor opci´n. o Las redes multietapa suponen un compromiso intermedio entre los dos extremos.La mayor ventaja de las MINs es su escalabilidad gracias a la construcci´n modular. oEl problema de esta red es que la latencia crece con log n, es decir, con el n´mero de uetapas en la red. Tambi´n, el coste asociado con los cables y los conmutadores puede eser importante. Para la construcci´n de futuros MPP, algunas de las topolog´ est´ticas pueden o ıas aresultar m´s interesantes por su alta escalabilidad en determinadas aplicaciones. Si las aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 135. 122 Multiprocesadores Caracter´ ısticas de Bus Multietapa Barra cruzada la red Latencia m´ ınima Constante O(logk n) Constante por unidad de transmisi´n o Ancho de banda de O(w/n) a O(w) de O(w) a O(nw) de O(w) a O(nw) por procesador Complejidad O(w) O(nw logk n) O(n2 w) cableado Complejidad con- O(n) O(n logk n) O(n2 ) mutadores Capacidad de ruta- S´lo uno a uno ca- o Algunas permuta- Todas las permuta- do y conectado da vez. ciones y broadcast ciones a la vez. si la red no est´a bloqueada. Computadores re- Symmetry S-1 BBN TC-2000 Cray Y-MP/816 presentativos Encore Multimax IBM RP3 Fujitsu VPP500 Notas Suponemos n pro- MIN n×n con con- Barra cruzada n × cesadores; la an- mutadores k × k y n con l´ıneas de w chura de banda es l´ ıneas de w bits bits w Tabla 6.1: Resumen de las caracter´ ısticas de las redes din´micas. atecnolog´ ´pticas y microelectr´nicas avanzan r´pidamente, los MINs a escala alta o ıas o o alas redes de barras cruzadas podr´ llegar a ser realizables o econ´micamente rentables ıan opara la realizaci´n de conexiones din´micas en computadores de prop´sito general. o a o6.2 Modelos de consistencia de memoriaEste apartado se encuentra principalmente en [Tan95] y [CSG99], pero se puede ampliarel tema en [CDK96], [Hwa93] y [HP96]. La coherencia es esencial si se quiere transmitir informaci´n entre procesadores omediante la escritura de uno en una localizaci´n que leer´ el segundo. Sin embargo, o ano se dice nada acerca de cuando el valor escrito debe hacerse visible. A menudo, enla escritura de un programa paralelo queremos asegurarnos que una lectura devuelve elvalor de una determinada escritura. Es decir, queremos establecer un orden entre unaescritura y una lectura. Normalmente, usamos alguna forma de evento de sincronizaci´n opara asegurarnos esta dependencia. Consideremos, por ejemplo, los fragmentos de c´digo que se muestran en la figu- ora 6.21 y que son ejecutados por los procesadores P1 y P2 . De este c´digo se deduce oque el programador quiere que el proceso que se ejecuta en P2 realice una espera activahasta que el valor de la variable compartida flag cambie a 1, y despu´s imprimir el valor ede la variable A que deber´ ser 1, dado que dicho valor ha sido actualizado antes del ıavalor de flag por el procesador P1 . En este caso, estamos accediendo a otra localizaci´n oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 136. 6.2 Modelos de consistencia de memoria 123(flag) para preservar el orden entre los diferentes accesos a la misma localizaci´n (A). oEn particular, estamos suponiendo que la escritura de A es visible para el procesadorP2 antes que la escritura a flag, y que la lectura de flag por P2 que hace que salgamosdel bucle while se ha completado antes que la lectura de A. Esta ordenaci´n entre los oaccesos 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 necesariamenteantes de que el nuevo valor de flag sea observado. /* El valor inicial de A y flag es 0 */ P1 P2 A=1 while (flag == 0); /* bucle vac´ */ ıo flag=1 print A Figura 6.21: Requisitos de un evento de sincronizaci´n mediante flags. o Claramente, estamos esperando m´s del sistema de memoria que devolver el “´ltimo a uvalor escrito” para cada localizaci´n: Establecer un orden entre los accesos realizados opor diferentes procesos a la localizaci´n (digamos A), en algunos casos esperamos que oun sistema de memoria respete el orden de las lecturas y escrituras a diferentes localiza-ciones (A y flag) realizadas por un proceso dado. La coherencia no dice nada acerca delorden en el cual las escrituras realizadas por P1 deben hacerse visibles a P2 , dado queestas operaciones se realizan sobre diferentes localizaciones. De manera similar, no dicenada acerca del orden en el cual las lecturas realizadas a diferentes localizaciones porP2 se realizan de forma relativa a P1 . Por lo tanto, la coherencia por si sola no evita unresultado de 0 en el ejemplo. Claramente, necesitamos algo m´s que la coherencia para adar a un espacio de direcciones compartido una sem´ntica clara, es decir, un modelo ade ordenaci´n que los programadores puedan usar para razonar acerca de los posibles oresultados y por tanto de la correcci´n de sus programas. o Un modelo de consistencia de la memoria para un espacio de direcciones compartidoespecifica las restricciones en el orden en el cual las operaciones de memoria debenparecer haberse realizado (es decir, hacerse visibles a los procesadores) entre ellas. Estoincluye operaciones a las mismas localizaciones o diferentes localizaciones, y por elmismo proceso o por diferentes procesos. Por lo tanto, la consistencia de la memoriaincluye la coherencia.6.2.1 Consistencia secuencialAntes de ver el modelo de consistencia secuencial, que es sin duda uno de los m´s aimplementados, se introduce el problema de la consistencia de la memoria con un modeloideal que no es implementable en la pr´ctica, pero que es lo que probablemente uno aesperar´ del comportamiento de un sistema multiprocesador cualquiera. ıaModelo de consistencia estrictaEste modelo es el caso ideal en el cual cualquier escritura se ve instant´neamente por acualquier lectura posterior. Dicho de otra manera m´s formal: “Cualquier lectura de aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 137. 124 Multiprocesadorescierta posici´n de memoria X devuelve el valor almacenado por la escritura m´s reciente o arealizada sobre X”. Hay que hacer notar que este modelo de consistencia no se puede implemen-tar en ning´ n sistema real. Efectivamente, como la distancia entre los procesadores uy la memoria no es nula, la se˜ al que viaja entre el procesador que escribe y la memoria nsufre un cierto retraso. Si durante este retraso, en el cual la memoria no tiene a´n el unuevo dato escrito, otro procesador decide leer, no va a leer el valor que se acaba demandar a la memoria, que a´n no ha llegado, sino el que hubiera anteriormente. u Por lo tanto, la unica forma en la que se podr´ implementar este modelo es su- ´ ıaponiendo que los datos viajan de forma instant´nea (velocidad infinita), lo cual va en acontra de la teor´ general de relatividad. ıaEl modelo de consistencia secuencialCuando se discutieron las caracter´ ısticas de dise˜ o fundamentales de una arquitectura nde comunicaci´n, se describi´ de forma informal un modelo de ordenaci´n deseable o o opara un espacio de direcciones compartido: el que nos asegura que el resultado deun programa multihilo (multithread ) ejecut´ndose con cualquier solapamiento de los adistintos hilos sobre un sistema monoprocesador sigue siendo el mismo en el caso de quealgunos de los hilos se ejecuten en paralelo sobre diferentes procesadores. La ordenaci´n ode los accesos a los datos dentro de un proceso es la del programa, y entre los procesosviene dada por alguno de los posibles solapamientos entre los ordenes de los diferentesprogramas. As´ en el caso del multiprocesador, ´ste no debe ser capaz de hacer que los ı, eresultados sean visibles en el espacio de direcciones compartido en un forma diferente ala que se pueda generar por los accesos solapados de diferentes procesos. Este modelointuitivo fue formalizado por Lamport en 1979 como consistencia secuencial, que sedefine como sigue: Consistencia secuencial. Un multiprocesador es secuencialmente consistente si el resultado de cualquier ejecuci´n es la misma que si las operaciones o de todos los procesadores se realizaran en alg´n orden secuencial, y las u operaciones de cada procesador individual ocurren en esta secuencia en el orden especificado por el programa.La figura 6.22 representa el modelo de abstracci´n proporcionado a los programadores opor un sistema de consistencia secuencial. Varios procesadores parecen compartir unaunica memoria l´gica, incluso aunque en la m´quina real la memoria principal pueda´ o aestar distribuida entre varios procesadores, incluso con sus cach´s y buffers de escritura eprivados. Cada procesador parece emitir y completar las operaciones a la memoria deuna vez y de forma at´mica en el orden del programa —es decir, una operaci´n a la o omemoria no parece haber sido emitida hasta que la previa ha sido completada— y lamemoria com´n parece servir a estas peticiones una cada vez, de manera entrelazada de uacuerdo con un orden arbitrario. Las operaciones a la memoria aparecen como at´micas odentro de este orden; es decir, deben aparecer globalmente (a todos los procesadores)como si una operaci´n en este orden entrelazado consistente se ejecuta y se completa oantes de que empiece la siguiente. Al igual que en el caso de la coherencia, no es importante en qu´ orden se emitan erealmente las operaciones a la memoria o incluso cu´ndo se completan. Lo que im- aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 138. 6.2 Modelos de consistencia de memoria 125 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 MemoriaFigura 6.22: Abstracci´n desde el punto de vista del programador del subsistema de omemoria bajo el modelo de consistencia secuencial.porta es que parezcan completarse en un orden que no viole la consistencia secuencial.Ve´moslo mediante el ejemplo que se muestra en la figura 6.23. a P1 P2 (1a) A = 1; (2a) print B; (1b) B = 2; (2b) print A; ´ Figura 6.23: Ordenes entre los accesos sin sincronizaci´n. o En este ejemplo, el resultado (0,2) para (A,B) no estar´ permitido bajo la consis- ıatencia secuencial (preservando nuestra intuici´n) dado que parecer´ que las escrituras o ıade A y B en el proceso P1 se han ejecutado fuera de orden. Sin embargo, las operacionesde memoria podr´ ejecutarse y completarse en el orden 1b, 1a, 2b, 2a. No importa ıanque se hayan completado fuera de orden, dado que el resultado (1,2) de la ejecuci´n es la omisma que si las operaciones se hubiesen ejecutado y completado en el orden del progra-ma. Por otra parte, la ejecuci´n 1b, 2a, 2b, 1a no cumplir´ la consistencia secuencial, o ıaya que producir´ el resultado (0,2) que no est´ permitido bajo este paradigma. ıa a La implementaci´n de la consistencia secuencial hace necesario que el sistema (soft- oware y hardware) preserve las restricciones intuitivas definidas arriba. Existen dosrestricciones. La primera es que las operaciones de memoria de un proceso se haganvisibles en el orden del programa. El segundo requisito, necesario para garantizar queel orden total sea consistente para todos los procesos, es que las operaciones aparezcanat´micas; es decir, que parezca que una operaci´n se ha completado con respecto a o otodos los procesos antes que la siguiente operaci´n en el orden total haya sido emitida. oEl truco de la segunda restricci´n es hacer que las escrituras parezcan at´micas, espe- o ocialmente en un sistema con varias copias de un bloque que necesita ser informado anteuna escritura. La atomicidad de las escrituras, incluidas en la definici´n de consistencia osecuencial, implica que la posici´n en la cual parece realizarse una escritura en el orden ototal debe ser la misma con respecto a todos los procesadores. Esto asegura que nada delo que un procesador haga despu´s de que haya visto el nuevo valor producido por una eIngenier´ Inform´tica ıa a Universidad de Valencia
  • 139. 126 Multiprocesadoresescritura se hace visible a los otros procesadores antes de que ellos tambi´n hayan visto eel nuevo valor para esa escritura. De hecho, mientras que la coherencia (serializaci´n de olas escrituras) dice que las escrituras a la misma localizaci´n deben parecerles a todos olos procesadores que han ocurrido en el mismo orden, la consistencia secuencial diceque todas las escrituras (a cualquier localizaci´n) deben parecerles a todos los proce- osadores que han ocurrido en el mismo orden. El siguiente ejemplo muestra por qu´ es eimportante la escritura at´mica. oEjemplo Consideremos los tres procesos que se muestran en la figura 6.24. Mostrar c´mo la no preservaci´n de la atomicidad en la escritura viola la consistencia o o secuencial.Respuesta Dado que P2 espera hasta que A sea 1 y despu´s hace que B valga 1, y e dado que P3 espera hasta que B vale 1 y unicamente despu´s lee el valor de A, ´ e por transitividad podr´ıamos deducir que P3 encontrar´ que A vale 1. Si P2 puede a continuar despu´s 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 intuici´n de la consistencia secuencial. e o P1 P2 P3 A=1; −→ while (A==0); B=1; −→ while (B==0); print AFigura 6.24: Ejemplo que ilustra la importancia de la atomicidad de las escrituras parala consistencia secuencial. El orden del programa de cada proceso impone un orden parcial sobre el conjunto detodas las operaciones; es decir, impone una ordenaci´n sobre el conjunto de operaciones oque emite dicho proceso. Un intercalamiento de las operaciones de diferentes procesosdefinen un orden total en el conjunto de todos las operaciones. En realidad, para cadaposible intercalamiento se define un orden total diferente dando lugar a un gran n´mero ude posibles ´rdenes totales. Este hecho da lugar a las siguientes definiciones: o Ejecuci´n secuencialmente consistente. Una ejecuci´n 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 definido anteriormente). Es decir, debe existir un orden total o intercalaci´n de ´rdenes de los programas de los procesos que den lugar al o o mismo resultado. Sistema secuencialmente consistente. Un sistema es secuencialmente con- sistente si cualquier posible ejecuci´n de ese sistema se corresponde con o (produce el mismo resultado que) alguno de los posibles ordenes totales definidos arriba.Condiciones suficientes para preservar la consistencia secuencialEs posible definir un conjunto de condiciones suficientes que garanticen la consistenciasecuencial en un multiprocesador. El siguiente conjunto se usa de forma habitual debidoa su relativa simplicidad sin ser excesivamente restrictivas:Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 140. 6.2 Modelos de consistencia de memoria 1271. Todo proceso emite las peticiones a la memoria en el orden especificado por el programa.2. Despu´s de emitir una operaci´n de escritura, el proceso que la emiti´ espera ha e o o que se haya realizado la escritura antes de emitir su siguiente operaci´n. o3. Despu´s de emitir una operaci´n de lectura, el proceso que la emiti´ espera a que e o o la lectura se haya completado, y tambi´n espera a que se complete la escritura que e gener´ el valor devuelto por la lectura, antes de emitir su siguiente operaci´n. Es o o 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 condici´n es la que asegura la atomicidad de la escritura, y es bastante oexigente. No es simplemente una restricci´n local, ya que la lectura debe esperar hasta oque escritura que le precede de forma l´gica sea visible de forma global. Obs´rvese o eque estas son condiciones suficientes, m´s que condiciones necesarias. La consistencia asecuencial puede preservarse con menos serializaci´n en muchas situaciones. o6.2.2 Otros modelos de consistenciaCon el orden del programa definido en t´rminos del programa fuente, est´ claro que e apara que se cumplan estas condiciones el compilador no debe cambiar el orden delas operaciones a la memoria en su presentaci´n al procesador. Desafortunadamente, omuchas de las optimizaciones empleadas en los compiladores y procesadores violanesta condici´n. Por ejemplo, los compiladores reordenan rutinariamente los accesos a odiferentes 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 s´lo se preocupan de opreservar las dependencias a la misma localizaci´n. o Incluso en el caso de que el compilador preserve el orden del programa, los modernosprocesadores usan mecanismos sofisticados como buffers de escritura, memoria entre- e o ´lazada, encauzamiento y t´cnicas de ejecuci´n desordenada. Estas permiten que lasoperaciones a la memoria de un proceso sean emitidas, ejecutadas y/o completadas sinseguir el orden del programa. Estas optimizaciones en la arquitectura y el compiladorfuncionan en los programas secuenciales ya que en ellos s´lo es necesario preservar las odependencias entre los accesos a la misma localizaci´n de la memoria. o Debido a las fuertes restricciones que impone la consistencia secuencial, se han pro-puesto otros modelos m´s relajados que permiten implementaciones de m´s rendimiento a ay que todav´ preservan un modelo de programaci´n simple. De hecho, existen ciertos ıa omodelos relajados que mantienen la propiedad de una sem´ntica de ejecuci´n id´ntica a a o ela que ser´ bajo un modelo de consistencia secuencial. En la figura 6.25 se muestran al- ıagunos de los modelos propuestos. Una flecha de un modelo a otro indica que el segundopermite m´s optimizaciones que el primero y, por tanto, proporciona mayores presta- aciones a costa, posiblemente, de un interfaz m´s complejo. Dos modelos no conectados acon flechas no pueden compararse en t´rminos de rendimiento o programabilidad. Las eflechas discontinuas aparecen en el caso de considerar un revisi´n particular de proces- osor consistency y release consistency propuesta por J. Hennessy, K. Gharachorloo y A.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 141. 128 MultiprocesadoresGupta1 . -- Sequential Consistency Other New Models? Weak Ordering Total Store Ordering Processor Consistency Release Consistency (RCsc) Partial Store Ordering Release Consistency (RCpc) Figura 6.25: Modelos de consistencia de memoria. Para entender las diferencias entre los diferentes modelos relajados y las posiblesimplicaciones para una implementaci´n de los mismos, la forma m´s sencilla es definir o alos modelos en t´rminos de las ordenaciones entre lecturas y escrituras realizadas por un eunico procesador que preserva cada modelo. Es posible establecer cuatro ordenaciones´en funci´n de las cuatro posibles dependencias existentes entre dos instrucciones: o1. R → R: una lectura seguida de una lectura.2. R → W : una lectura seguida de una escritura, que siempre se preserva si las ope- raciones son sobre la misma direcci´n, dado que se trata de una antidependencia. o3. W → W : una escritura seguida de otra escritura, que siempre se preserva si las operaciones son sobre la misma direcci´n, dado que se trata de una dependencia o de salida.4. W → R: una escritura seguida de una lectura, que siempre se preserva si son sobre la misma direcci´n, dado que se trata de una dependencia verdadera. oSi existe una dependencia entre una lectura y una escritura, la sem´ntica de un progra- ama ejecutado sobre un uniprocesador exige que las operaciones est´n ordenadas. Si no eexisten dependencias, el modelo de consistencia de la memoria determina qu´ ´rdenes eodeben preservarse. Un modelo de consistencia secuencial exige que se preserven loscuatro ´rdenes, lo que equivale a considerar un unico m´dulo de memoria centralizado o ´ oque serializa las operaciones de todos los procesadores, o asumir que todas las lecturasy escrituras a la memoria se comportan como barreras. Cuando se relaja una ordenaci´n, simplemente queremos decir que permitimos la ofinalizaci´n anticipada de una operaci´n por parte de un procesador. Por ejemplo, o orelajar la ordenaci´n W → R significa que permitimos que una lectura que era posterior oa una 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 despu´s de un fallo en una operaci´n de escritura anterior pero e oantes de que las invalidaciones se hayan realizado ya no se preserva este orden. En realidad, un modelo de consistencia no restringe el orden de los eventos, sino quedice qu´ ordenaciones pueden ser observadas. Por ejemplo, en la consistencia secuencial, e 1 Revision to “Memory Consistency and Event Ordering in Scalable Shared-Memory Multiproces-sors”, Technical Repor CSL-TR-93-568, Stanford University, April 1993.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 142. 6.2 Modelos de consistencia de memoria 129el sistema debe parecer que preserva los cuatro ordenes descritos anteriormente, aunqueen la pr´ctica se permite la reordenaci´n. Este sutileza permite implementaciones a oque usan trucos que reordenan eventos sin permitir que dichas reordenaciones seanobservadas. En la consistencia secuencial una implementaci´n puede, por ejemplo, opermitir que un procesador, P, inicie otra escritura antes de que la escritura anteriorhaya 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 tambi´n debe definir la ordenaci´n existente entre los e oaccesos a las variables de sincronizaci´n, que act´an como barreras, y el resto de los o uaccesos. Cuando una m´quina implementa la consistencia secuencial, todas las lecturas ay escrituras, incluyendo los accesos de sincronizaci´n, son barreras y por tanto deben omantenerse ordenadas. Para modelos m´s d´biles, debemos especificar las restricciones a een la ordenaci´n impuestas por los accesos de sincronizaci´n, al igual que las restric- o ociones sobre las variables ordinarias. La restricci´n en la ordenaci´n m´s simple es que o o aque todo acceso de sincronizaci´n se comporta como una barrera. Si utilizamos S pa- ora indicar un acceso a una variable de sincronizaci´n, tambi´n podremos indicar estas o erestricciones con la notaci´n S → W , S → R, W → S y R → S. Hay que recordar que oun acceso de sincronizaci´n es tambi´n una lectura o una escritura y que est´ afectado o e apor la ordenaci´n respecto a otros accesos de sincronizaci´n, lo que significa que existe o ouna ordenaci´n impl´ o ıcita S → S.Modelo de consistencia PRAM o de procesadorEl primer modelo que examinaremos relaja la ordenaci´n entre una escritura y una olectura (a direcciones diferentes), eliminando la ordenaci´n W → R; este modelo fue ousado por primera vez en la arquitectura IBM 370. Estos modelos permiten almacenarlas escrituras en buffers que pueden ser sobrepasadas por las lecturas, lo que ocurresiempre que el procesador permita que una lectura proceda antes de garantizar queuna escritura anterior de ese procesador ha sido vista por todos los procesadores. Estemodelo permite a la m´quina ocultar algo de la latencia de una operaci´n de escritura. a oAdem´s, relajando unicamente una ordenaci´n, muchas aplicaciones, incluso aquellas a ´ oque no est´n sincronizadas, funcionan correctamente, aunque ser´ necesaria una ope- a araci´n de sincronizaci´n para asegurar que se complete una escritura antes de que se o orealice una lectura. Si se ejecuta una operaci´n de sincronizaci´n antes de una lectura o o(por ejemplo, un patr´n W...S...R), entonces las ordenaciones W → S y S → R nos oaseguran que la escritura ser´ realizada antes que la lectura. A este modelo se le ha adenominado Processor consistency o total store ordering (TSO), y muchas m´quinasahan utilizado de forma impl´ ıcita este m´todo. Este modelo es equivalente a realizar las eescrituras con barreras. En la figura 6.26 resumiremos todos los modelos, mostrandolos ordenes impuestos, y mostraremos un ejemplo en la figura 6.27.Ordenamiento por almacenamiento parcialSi permitimos que las escrituras no conflictivas se completen de forma desordenada,relajando la ordenaci´n W → W , llegamos a un modelo que ha sido denominado como opartial store ordering (PSO). Desde el punto de vista de la implementaci´n, esto permite oel encauzamiento o solapamiento de las operaciones de escritura.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 143. 130 MultiprocesadoresConsistencia d´bil eUna tercera clase de modelos relajados eliminan las ordenaciones R → R y R → W ,adem´s de las otras dos. Estos modelos, denominados weak ordering, no preservan el aorden entre las referencias, a excepci´n de las siguientes: o• Una lectura o escritura se completar´ antes que cualquier operaci´n de sincroniza- a o ci´n ejecutada por el procesador despu´s de la lectura o escritura seg´n el orden del o e u programa.• Una operaci´n de sincronizaci´n se completar´ antes que cualquier lectura o escri- o o a tura que ocurra seg´n el orden del programa despu´s de la operaci´n u e oComo se muestra en la figura 6.26, las unicas ordenaciones impuestas por la ordenaci´n ´ od´bil son las creadas por las operaciones de sincronizaci´n. Aunque hemos eliminado e olos ordenes R → R y R → W , el procesador s´lo puede aprovecharse de este hecho osi dispone de lecturas no bloqueantes. En caso contrario, el procesador implementaimpl´ıcitamente estos dos ´rdenes, dado que no se pueden ejecutar m´s instrucciones o ahasta que se complete la lectura. Incluso con lecturas no bloqueantes, la ventaja delprocesador puede verse limitada dado que la principal ventaja ocurre cuando una lec-tura produce un fallo de cach´ y es improbable que el procesador pueda mantenerse eocupado durante los centenares de ciclos que se necesita para manejar un fallo de cach´. eEn general, la principal ventaja de todos los modelos de consistencia d´bil viene del eocultamiento de la latencia de escritura m´s que de las latencias de lectura. a Model Used in Ordinary orderings Synchronization orderings Sequential consistency Most machines as R → R, R → W , W →R, S→W, S→R, R→S, W→S, S→S an optional mode W →W Total store order or IBMS/370, DEC R → R, R → W , W → W S→W, S→R, R→S, W→S, S→S processor consistency VAX, SPARC Partial store order SPARC R → R, R → W S→W, S→R, R→S, W→S, S→S Weak ordering PowerPC S→W, S→R, R→S, W→S, S→S Release consistency Alpha, MIPS SA→W, SA→R, R→SA, W→SR, SA→SA, SA→SR, SR→SA, SR→SRFigura 6.26: Ordenaciones impuestas por varios modelos de consistencia. Se muestrantanto los accesos ordinarios como los accesos a variables de sincronizaci´n. oModelo de consistencia de liberaci´n (release) oEs posible obtener un modelo m´s relajado todav´ extendiendo la ordenaci´n d´bil. a ıa o eEste modelo, llamado release consistency (consistencia en la liberaci´n), distingue en- otre operaciones de sincronizaci´n que se usan para adquirir el acceso a una variable ocompartida (denotadas por SA ) y aquellas que liberan un objeto para permitir que otroprocesador puede adquirir el acceso (denotadas por SR ). La consistencia en la libera-ci´n se basa en la observaci´n de que en los programas sincronizados es necesaria una o ooperaci´n de adquisici´n antes de usar un dato compartido, y que una operaci´n de li- o o oberaci´n deber seguir a todas las actualizaciones a los datos compartidos y preceder en oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 144. 6.2 Modelos de consistencia de memoria 131el tiempo a la siguiente operaci´n de adquisici´n. Esto nos permite relajar ligeramente o ola ordenaci´n observando que una lectura o escritura que precede a una adquisici´n no o onecesitan completarse antes de la adquisici´n, y que una lectura o escritura que sigue oa una liberaci´n no necesitan esperar a dicha liberaci´n. Por tanto, las ordenaciones o oque se preservan son las que implican unicamente a SA y SR , como se muestra en la ´figura 6.26; como muestra en el ejemplo de la figura 6.27, este modelo impone el menorn´mero de ordenes de los cinco modelos. u Sequential TSO (total store PSO (partial Weak ordering Release consistency order) or store order) consistency processor consistency = A = A = A = A = A B = B = B = B = B = acquire (S); acquire (S); acquire (S); acquire (S); acquire (S); C = C = C = C = C = = D = D = D = D = D # release (S); release (S); release (S); release (S); release (S); E = E = E = E = E = F = F = F = F = F =Figura 6.27: Ejemplos de los cinco modelos de consistencia vistos en esta secci´n que omuestran la reducci´n en el n´mero de ´rdenes impuestos conforme los modelos se o u ohacen m´s relajados. a Para comparar los modelos de release consistency y weak ordering, consideremosqu´ ordenaciones son necesarias para este ultimo modelo, para ello descompondremos e ´cada S en SA y SR . Esto nos llevar´ a ocho ordenaciones en relaci´n con los accesos ıa osincronizados y los accesos ordinarios y cuatro ordenaciones en relaci´n unicamente con o ´los accesos sincronizados. Con esta descripci´n, podemos ver que cuatro de las orde- onaciones 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 unf´cil chequeo y asegurando el funcionamiento de los programas sincronizados. Mientras aque la mayor´ de las operaciones son una adquisici´n o una liberaci´n (una adquisici´n ıa o o onormalmente lee una variable de sincronizaci´n y la actualiza de forma at´mica, una o oliberaci´n unicamente escribe en ella), algunas operaciones, como una barrera, act´a o ´ ude adquisici´n y liberaci´n a la vez en cuyo caso el modelo pasa a ser equivalente al o omodelo de weak ordering. Tambi´n es posible considerar ordenaciones m´s d´biles. Por ejemplo, en el modelo e a ede release consistency no asociamos localizaciones de memoria a variables de sincroni-zaci´n espec´ o ıficas. Si obligamos a la adquisici´n de la misma variable de sincronizaci´n, o oV, antes de acceder a una direcci´n de memoria particular, M, podemos relajar el orden ode accesos a M y la adquisici´n y relajaci´n de las variables de sincronizaci´n distintas o o ode V.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 145. 132 MultiprocesadoresConsistencia de liberaci´n perezosa oConsistencia de ingreso6.2.3 Implementaci´n de los modelos relajados oLos modelos de consistencia relajados pueden implementarse mediante la utilizaci´n ode un poco de hardware adicional. La mayor parte de la complejidad recae sobre laimplementaci´n de memorias o de los sistemas de interconexi´n que saquen provecho o ode un modelo relajado. Por ejemplo, si la memoria o la interconexi´n no permite la om´ltiples peticiones por parte de un procesador, los beneficios de los modelos relajados um´s ambiciosos ser´n peque˜ os. Afortunadamente, la mayor´ de los beneficios pueden a a n ıaconseguirse permitiendo un peque˜ o n´mero de peticiones en curso de escritura y una n ude lectura por procesador. En esta secci´n describiremos implementaciones directas de olos modelos processor consistency y release consistency. El modelo TSO (processor consistency) se implementa permitiendo que un fallo delectura sobrepase a las escrituras pendientes. Un buffer de escritura que soporte unchequeo para determinar si existen operaciones de escritura pendientes en el buffer ala misma direcci´n que una operaci´n de lectura, junto con una memoria y un sistema o ode interconexi´n que soporte dos referencias pendientes por nodo, es suficiente para oimplementar este esquema. Cualitativamente, la ventaja de la consistencia a nivel deprocesador sobre la consistencia secuencial es que permite ocultar la latencia de losfallos en las escrituras. El modelo de release consistency permite una ocultaci´n adicional de la latencia ode escritura, y si el procesador soporta lecturas no bloqueantes, permite ocultar lalatencia de las lecturas. Para permitir el ocultamiento de la latencia de las escriturastanto como sea posible, el procesador debe permitir varias escrituras pendientes y quelos fallos en las lecturas sobrepasen a las escrituras pendientes. Para maximizar elrendimiento, las escrituras deben completarse y eliminarse el buffer de escritura tanpronto como sea posible, lo que permite el avance de las lecturas pendientes. El soportede la finalizaci´n temprana de las escrituras requiere que una escritura se complete tan opronto como los datos est´n disponibles y antes de que se completen las invalidaciones ependientes (dado que nuestro modelo de consistencia lo permite). Para implementareste esquema, el procesador debe ser capaz de llevar la cuenta de las invalidaciones decada escritura emitida. Despu´s de que cada invalidaci´n sea confirmada, el contador de e oinvalidaciones pendientes para esa escritura se decrementa. Debemos asegurarnos quetodas las invalidaciones pendientes de todas las escrituras emitidas se han completadoantes de permitir que se complete una operaci´n de liberaci´n, de tal manera que o os´lo es necesario chequear los contadores de invalidaciones pendientes sobre cualquier oescritura emitida cuando se ejecuta una liberaci´n. La liberaci´n se retiene hasta que o otodas las invalidaciones de todas las escrituras se han completado. En la pr´ctica, se alimita el n´mero de escrituras pendientes en un momento dado, con lo que se facilita el useguimiento de las mismas y de las invalidaciones pendientes. Para ocultar la latencia de las escrituras debemos disponer de una m´quina que apermita lecturas no bloqueantes; en caso contrario, cuando el procesador se bloquea, elprogreso ser´ m´ ıa ınimo. Si las lecturas son no bloqueantes podemos simplemente permitirque se ejecuten, sabiendo que las dependencias entre los datos preservar´n una ejecuci´n a ocorrecta. Es poco probable, sin embargo, que la adici´n de lecturas no bloqueantes a un omodelo de consistencia relajado mejore el rendimiento sustancialmente. Esta gananciaIngenier´ Inform´tica ıa a Universidad de Valencia
  • 146. 6.2 Modelos de consistencia de memoria 133limitada se debe al hecho de que los tiempo de respuesta en un multiprocesador enel caso de fallo en una lectura sea grande y la habilidad de ocultar esta latencia porparte del procesador es limitada. Por ejemplo, si las lecturas son no bloqueantes perose ejecutan en orden por parte del procesador, entonces ´ste se bloquear´ despu´s de e a ealgunos ciclos de forma casi segura. Si el procesador soporta lecturas no bloqueantesy ejecuci´n desordenada, se bloquear´ tan pronto como el buffer de reordenaci´n o las o a oestaciones de reserva se llenen. Es muy probable que este hecho ocurra en un centenarde ciclos, mientras que un fallo puede costar un millar de ciclos.6.2.4 Rendimiento de los modelos relajadosEl rendimiento potencial de un modelo de consistencia m´s relajado depende de las acapacidades de la m´quina y de la aplicaci´n que se ejecute. Para examinar el rendi- a omiento de un modelo de consistencia de la memoria, debemos definir en primer lugarlas caracter´ ısticas del hardware:• El cauce emite una instrucci´n por ciclo de reloj y el manejo puede ser est´tico o o a din´mico. 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 buffer de escritura con capacidad para 16 escrituras.• Las cach´s son de 64KB y el tama˜ o de las l´ e n ıneas es de 16 bytes.Para dar una visi´n de los aspectos que afectan al rendimiento potencial con diferentes ocapacidades hardware, consideraremos cuatro modelos hardware:1. SSBR (statically scheduled with blocking reads) El procesador realiza una ejecuci´n o est´tica y las lecturas que incurren en fallo en la cach´ bloquean al procesador. a e2. SS (statically scheduled ) El procesador realiza una ejecuci´n est´tica pero las lec- o a turas no causan el bloqueo del procesador hasta que se usa el resultado.3. DS16 (dynamically scheduled with a 16-entry reorder buffer ) El procesador permite una ejecuci´n din´mica y tiene un buffer de reordenaci´n que permite tener hasta o a o 16 instrucciones pendientes de cualquier tipo, incluyendo 16 instrucciones de acceso a memoria.4. DS64 (dynamically scheduled with a 64-entry reorder buffer ) El procesador permi- te una ejecuci´n din´mica y tiene un buffer de reordenaci´n que permite hasta 64 o a o instrucciones pendientes de cualquier tipo. Este buffer es, potencialmente, lo sufi- cientemente grande para ocultar la totalidad de la latencia ante un fallo de lectura en la cach´. e La figura 6.28 muestra el rendimiento relativo para dos programas paralelos, LU yOcean, para estos cuatro modelos hardware y para dos modelos de consistencia dife-rentes: TSO y release consistency. El rendimiento mostrado es relativo al rendimientobajo una implementaci´n directa de la consistencia secuencial. El aumento de rendi- omiento observado es mucho mayor en el caso de Ocean, ya que este programa presentaun ratio de fallos de cach´ mucho mayor y tiene una fracci´n significativa de fallos de e oescritura. Al interpretar los datos de la figura 6.28 hay que recordar que las cach´s son ebastantes peque˜ as. Muchos dise˜ adores habr´ incrementado el tama˜ o de la cach´ n n ıan n eantes de incluir lecturas no bloqueantes o empezar a pensar en ejecuci´n din´mica de o alas instrucciones. Esto hubiera hecho descender el ratio de fallos y las ventajas de losmodelos relajados, al menos sobre estas aplicaciones.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 147. 134 Multiprocesadores LU Ocean 1.6 4.0 3.8 1.4 1.4 3.5 1.2 1.2 1.2 1.1 1.1 1.1 1.1 1.1 3.0 1.0 2.5 2.2 1.9 2.0 Performance relative to# 0.8 Performance relative to# 2.0 sequential consistency sequential consistency 1.4 1.4 1.5 0.6 1.5 1.3 0.4 1.0 0.2 0.5 0.0 0.0 SSBR SS DS16 DS64 SSBR SS DS16 DS64 Hardware models Hardware models Total store order Release consistencyFigura 6.28: Rendimiento de los modelos de consistencia relajados sobre una variedadde mecanismos hardware. Para finalizar, decir que, en la actualidad, la mayor´ de las m´quinas que soportan ıa aalguna clase de modelo de consistencia relajado, variando desde la consistencia a nivelde procesador a la consistencia en la liberaci´n, y casi todos soportan la consistencia osecuencial como una opci´n. Dado que la sincronizaci´n depende mucho de la m´quina o o ay es causa de errores, las expectativas nos dicen que la mayor´ de los programadores ıausar´n librer´ est´ndar de sincronizaci´n para escribir sus programas sincronizados, a ıas a ohaciendo la elecci´n de un modelo de consistencia relajado invisible al programador y opermitiendo mayor rendimiento.6.3 Coherencia de las cach´s eLa bibliograf´ sobre la coherencia de cach´ para multiprocesadores es bastante amplia, ıa ecasi cualquier libro de arquitectura de computadores incluye alguna cosa. Los m´s com- apletos sin embargo son [Hwa93], [HP96], [Zar96] y [Fly95]. Los apuntes se han realizadosobre todo a partir del [Hwa93] y del [Zar96]. Del [Fly95] se han extra´ algunos de ıdolos diagramas de estados y constituye una buena lectura adicional. Del [HP96] se hanextra´ algunas ideas y definiciones y vienen algunos experimentos sobre rendimiento ıdoque no se han incluido en los apuntes. La memoria es uno de los componentes principales de cualquier sistema. La es-tructura de la memoria va a tener un importante impacto en el rendimiento general delsistema. Se analizan en esta parte los diferentes protocolos de coherencia fundamentalesen los actuales sistemas multiprocesadores con memoria compartida. En cursos anteriores el alumno se ha encontrado ya con el tema de las cach´s y su ecoherencia en sistemas con un unico procesador y una sola cach´. No se explicar´n aqu´ ´ e a ılos diversos tipos de cach´ ni su realizaci´n, ya que se supone que es un tema conocido. e oLo que se expone a continuaci´n es el problema de mantener la coherencia del sistema ode memoria en sistemas multiprocesadores con varias cach´s y memoria compartida. eIngenier´ Inform´tica ıa a Universidad de Valencia
  • 148. 6.3 Coherencia de las cach´s e 1356.3.1 El problema de la coherencia de las cach´s ePensemos por un momento cu´l es el modelo intuitivo que tenemos de lo que debe aser una memoria. La memoria debe proporcionar un conjunto de direcciones paraalmacenar valores, y cuando se lea una de estas direcciones debe devolver el ultimo valor ´escrito en ella. Es en esta propiedad fundamental de las memorias en la que descansanlos programas secuenciales cuando usamos la memoria para comunicar un valor desdeun punto del programa donde se calcula a otros puntos donde es usado. Tambi´n nos ebasamos en esta propiedad cuando el sistema usa un espacio de direcciones compartidopara comunicar datos entre hebras o procesos que se est´n ejecutando en un procesador. aUna lectura devuelve el ultimo valor escrito en esa direcci´n, sin importar el proceso que ´ oescribi´ dicho valor. Las cach´s (antememorias) no interfieren con el uso de m´ltiples o e uprocesos en un procesador, ya que todos ellos ven la memoria a trav´s de la misma ejerarqu´ de cach´s. En el caso de usar varios procesadores, nos gustar´ poder basarnos ıa e ıaen la misma propiedad cuando dos procesos se ejecuten sobre diferentes procesadores detal forma que el resultado de ejecutar un programa que usa varios procesos sea el mismoindependientemente de si los procesos se ejecutan o no en diferentes procesadores f´ ısicos.Sin embargo, cuando dos procesos ven la memoria compartida a trav´s de diferentes ecach´s, existe el peligro de que uno vea el nuevo valor en su cach´ mientras que el otro e etodav´ vea el antiguo. ıa El problema de la coherencia en sistemas multiprocesadores se puede ver claramentemediante un ejemplo. Supongamos dos procesadores, cada uno con su cach´, conectados ea una memoria compartida. Supongamos que ambos procesadores acceden a una mismaposici´n X en memoria principal. La figura 6.29 muestra los contenidos de las cach´s y o ememoria principal asumiendo que ninguna cach´ contiene inicialmente la variable que evale inicialmente 1. Tambi´n se asume una cach´ write-through. Despu´s de que el valor e e een X ha sido escrito por A, la cach´ de A y la memoria contienen el nuevo valor, pero ela cache de B no, y si B lee el valor de X, ¡leer´ 1 y no 0 que es el valor de la memoria! aEste es el problema de la coherencia de cach´s en multiprocesadores. e Time Acci´n o Cach´ A e Cach´ B e Memoria (X) 1 CPU A lee X 1 1 2 CPU B lee X 1 1 1 3 CPU A escribe 0 en X 0 1 0 Figura 6.29: El problema de la coherencia de cach´s con dos procesadores. e Informalmente se puede decir que un sistema de memoria es coherente si cualquierlectura de un dato devuelve el valor m´s recientemente escrito de ese dato. Esta defi- anici´n, aunque intuitivamente correcta, es vaga y simple; la realidad es bastante m´s o acompleja. Esta definici´n simple contiene dos aspectos diferentes del comportamiento odel sistema de memoria, siendo los dos cr´ ıticos a la hora de escribir programas en me-moria compartida. El primer aspecto, llamado coherencia definen los datos devueltospor una lectura. El segundo aspecto, llamado consistencia, determina cuando un valorescrito ser´ devuelto por una lectura. a Demos primero una definici´n formal para la coherencia. Se dice que un sistema de omemoria es coherente si se cumple:1. Una lectura por un procesador P de una posici´n X, que sigue de una escritura de oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 149. 136 Multiprocesadores P a X, sin que ning´n 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 posici´n X, que sigue una escritura por otro o procesador a X, devuelve el valor escrito si la lectura y escritura est´n suficiente- a mente separados y no hay otras escrituras sobre X entre los dos accesos.3. Las escrituras a la misma posici´n est´n serializadas, es decir, dos escrituras a la o a misma posici´n 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 posici´n, los o procesadores nunca pueden leer el valor 2 y luego el 1. La primera condici´n preserva el orden del programa y debe ser as´ incluso para o ımonoprocesadores. La segunda condici´n define lo que se entiende por tener una visi´n o ocoherente de la memoria. Con estas condiciones el problema para tener un sistemacoherente 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 conobservar que en realidad no es necesario que una lectura sobre X recoja el valor escritode X por otro procesador. Si por ejemplo, una escritura sobre X precede una lecturasobre X por otro procesador en un tiempo muy peque˜ o, puede ser imposible asegurar nque la lectura devuelva el valor tan recientemente escrito, ya que el valor a escribirpuede incluso no haber abandonado el procesador que escribe. La cuesti´n sobre cu´ndo o aexactamente un valor escrito debe ser visto por una lectura se define por el modelo deconsistenciade la memoria. Otro ejemplo que ilustra el problema de incoherencia de la memoria se puede veren la figura 6.30. En esta figura se muestran tres procesadores con cach´s propias y econectados a trav´s de un bus com´n a una memoria compartida. La secuencia de e uaccesos a la localizaci´n u hecha por cada procesador es la que se indica mediante los on´meros que aparecen al lado de cada arco. Veamos cu´les son los valores le´ u a ıdos porP1 y P2 dependiendo del tipo de cach´ utilizada. e P1 P2 P3 u=? u=? u=7 Cache 4 Cache 5 Cache 3 u:5 u:5 1 u:5 2 Memoria Figura 6.30: Ejemplo del problema de coherencia de las cach´s. e• Si consideramos una cach´ write-through la modificaci´n 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.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 150. 6.3 Coherencia de las cach´s e 137• Si considera una cach´ writeback la situaci´n empeora. En este caso el procesador e o P3 unicamente activar´ el bit de modificado 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´, tambi´n leer´ el valor antiguo de la memoria principal. e e a Por ultimo, si varios procesadores escriben distintos valores en la localizaci´n u con ´ o este tipo de cach´s, el valor final 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´ tambi´n ocurren cuando utilizamos un unico e e ´procesador en el caso de las operaciones de E/S. La mayor´ de estas operaciones se ıarealizan a trav´s de dispositivos DMA con lo que es posible que que el contenido de ela memoria principal y la memoria cach´ dejen de ser coherentes. Sin embargo, dado eque las operaciones de E/S son mucho menos frecuentes que las operaciones de accesoa memoria, se han adoptado soluciones sencillas como usar direcciones de memoria quese marcan como no almacenables en la memoria cach´ o eliminar todos los bloques exis- etentes en las cach´s de las p´ginas que se van a utilizar en la operaci´n de E/S antes de e a oproceder a realizar dicha operaci´n. En la actualidad, casi todos los microprocesadores oproporcionan mecanismos para soportar la coherencia de cach´s. e6.3.2 Direcciones f´ ısicas y virtuales, problema del aliasingHay dos formas de conectar la cach´ al procesador. Una manera consiste en colocar ela cach´ despu´s de los bloques TLB (Transaction Lookaside Buffer) o MMU (Memory e eManagement Unit) que realizan la transformaci´n de direcci´n virtual a direcci´n f´ o o o ısica.A estas cach´s conectadas de esta forma se les llama cach´s con direcciones f´ e e ısicas, yun esquema de su conexionado se muestra en la figura 6.31(a). La otra posibilidad consiste en conectar la cach´ directamente a las direcciones del eprocesador, es decir, a las direcciones virtuales tal y como se muestra en la figura 6.31(b).En este caso tenemos las cach´s con direcciones virtuales. Ambas tienen sus ventajas e einconvenientes como veremos a continuaci´n. o DV DF DF DV DF MMU Caché MMU D/I Memoria Memoria CPU CPU D/I Principal Principal D/I Caché D/I (a) Cach´ con direcciones f´ e ısicas. (b) Cach´ con direcciones virtuales. eFigura 6.31: Direcciones f´ ısicas y virtuales en la cach´. e (DV=Direcci´n Virtual, oDF=Direcci´n F´ o ısica, D/I=Datos o Instrucciones). Las cach´s con direcci´n f´ e o ısica son sencillas de realizar puesto que la direcci´n que ose especifica en la etiqueta de la cach´ (tag) es unica y no existe el problema del aliasing e ´que tienen las cach´s con direcci´n virtual. Como no tiene problemas de aliasing no e oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 151. 138 Multiprocesadoreses necesario vaciar (flush la cach´, y adem´s el sistema operativo tiene menos bugs de e acach´ en su n´cleo. e u El problema de las cach´s con direcciones f´ e ısicas es que cuesta m´s tiempo acceder aa la cach´ puesto que hay que esperar a que la unidad MMU/TLB acabe de traducir ela direcci´n. La integraci´n de la MMU/TLB y cach´ en el mismo VLSI chip, muchas o o eveces incluso con el procesador, alivia este problema. Lo cierto es que la mayor´ de sistemas convencionales utilizan la cach´ con direc- ıa eciones f´ ısicas puesto que son muy simples y requieren una casi nula intervenci´n del on´cleo del sistema operativo. u En la cach´ con direcciones virtuales, el acceso a la cach´ se realiza al mismo tiempo e ey en paralelo con la traducci´n de direcci´n por parte de la MMU. Esto permite un o oacceso a la cach´ m´s r´pido que con las direcciones f´ e a a ısicas. Pero con las direcciones virtuales surge el problema del aliasing. Es a veces fre-cuente que dos procesos diferentes utilicen las mismas direcciones virtuales cuando enrealidad las direcciones f´ ısicas van a ser diferentes puesto que nada tiene que ver unproceso con el otro. Cuando esto ocurre, resulta que el ´ ındice/etiqueta en la cach´ecoincide en ambos casos cuando en realidad se trata de direcciones reales diferentes. Laforma de solucionar esto consiste en vaciar completamente la cach´ cada vez que hay eun problema de aliasing, lo cual ocurre siempre que se cambia de contexto en Unix porejemplo. Estas operaciones de vaciado continuo de la cach´ produce un rendimiento muy bajo een la cach´ y del sistema en general al ocupar el bus en vaciar una y otra vez la cach´. e eEn Unix incluso el vaciado de la cach´ puede no ser suficiente para realizar ciertas eoperaciones del n´cleo, llamadas al sistema y operaciones de I/O. Tambi´n el depurado u ede programas resulta pr´cticamente imposible con este tipo de cach´. a e Una soluci´n consiste en a˜ adir informaci´n sobre el proceso, o contexto, a la eti- o n oqueta de la cach´, o tambi´n, a˜ adir la direcci´n f´ e e n o ısica, pero estos m´todos pueden eeventualmente tambi´n degradar el rendimiento del sistema. e6.3.3 El problema de la falsa compartici´n o6.3.4 Soluciones a los problemas de coherenciaAntes de estudiar las diferentes t´cnicas para solucionar el problema de coherencia, eser´ interesante realizar una definici´n m´s formal de la propiedad de coherencia. ıa o a En primer lugar empezaremos con la definici´n de algunos t´rminos en el contexto o ede los sistemas de memoria uniprocesador, para despu´s extender dicha definici´n para e omultiprocesadores.Operaci´n de Memoria Un acceso a una direcci´n de la memoria para realizar una o o lectura, escritura u operaci´n at´mica de lectura-modificaci´n-escritura. Las ins- o o o trucciones que realizan m´ltiples 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 especifica en la instrucci´n. oEjecuci´n at´mica Las operaciones de memoria de una instrucci´n se ejecutan de o o o forma at´mica una respecto a la otra seg´n el orden especificado. Es decir, to- o uIngenier´ Inform´tica ıa a Universidad de Valencia
  • 152. 6.3 Coherencia de las cach´s e 139 dos los aspectos de una operaci´n deben parecer que se han ejecutado antes de o cualquier aspecto de la operaci´n siguiente. oEmisi´n Una operaci´n de memoria es emitida cuando deja el entorno interno del o o procesador y se presenta en el sistema de memoria, que incluye las cach´s, los e buffers de escritura, el bus, y los m´dulos de memoria. Un punto muy importante o es que el procesador s´lo observa el estado del sistema de memoria mediante la o emisi´n de operaciones de memoria; es decir, nuestra noci´n de lo que significa o o que una operaci´n de memoria haya sido realizada es que parezca que ha tenido o lugar desde la perspectiva del procesador.Realizada con respecto a un procesador Una operaci´n 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 operaci´n 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 aplicaral caso paralelo; basta con reemplazar en la definici´n “el procesador” por “un proce- osador”. El problema que aparece con el concepto de orden y de las nociones intuitivasde ’posterior’ y ’´ltima’, es que ahora ya no tenemos un orden definido por el programa usino ´rdenes de programas separados para cada proceso y esos ´rdenes de programa in- o oteract´an cuando acceden al sistema de memoria. Una manera agudizar nuestra noci´n u ointuitiva de sistema de memoria coherente es determinar qu´ pasar´ en el caso de que e ıano existieran cach´s. Cada escritura y lectura a una localizaci´n de memoria acceder´ e o ıaa la memoria f´ ısica principal y se realizar´ con respecto a todos los procesadores en ıadicho punto, as´ la memoria impondr´ un orden secuencial entre todas las operaciones ı ıade lectura y escritura realizadas en dicha localizaci´n. Adem´s, las lecturas y escrituras o aa una localizaci´n desde cualquier procesador individual deber´n mantener el orden del o aprograma dentro de esta ordenaci´n secuencial. No hay raz´n para creer que el siste- o oma de memoria deba intercalar los accesos independientes desde distintos procesadoresen una forma predeterminada, as´ cualquier intercalado que preserve la ordenaci´n de ı ocada programa individual es razonable. Podemos asumir algunos hechos b´sicos; las aoperaciones de cada procesador ser´ realizadas en alg´n momento dado. Adem´s, nues- a u atra noci´n intuitiva de “´ltimo” puede ser vista como el m´s reciente en alguno de las o u ahipot´ticas ordenaciones secuenciales que mantienen las propiedades discutidas en este ep´rrafo. a Dado que este orden secuencial debe ser consistente, es importante que todos losprocesadores vean las escrituras a una localizaci´n en el mismo orden. o Por supuesto, no es necesario construir una ordenaci´n total en cualquier punto de ola m´quina mientras que se ejecuta el programa. Particularmente, en un sistema con acach´s no queremos que la memoria principal vea todas las operaciones de memoria, y equeremos evitar la serializaci´n siempre que sea posible. S´lo necesitamos estar seguros o ode que el programa se comporta como si se estuviese forzando un determinado ordensecuencial. M´s formalmente, decimos que un sistema de memoria multiprocesador es coherente asi el resultado de cualquier ejecuci´n de un programa es tal que, para cada localizaci´n, o oes posible construir una hipot´tica ordenaci´n secuencial de todas las operaciones reali- e ozadas sobre dicha localizaci´n (es decir, ordenar totalmente todas las lecturas/escrituras oemitidas por todos los procesadores) que sea consistente con los resultados de la ejecu-Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 153. 140 Multiprocesadoresci´n y en el cual: o1. las operaciones emitidas por un procesador particular ocurre en la secuencia arri- ba indicada en el orden en las cuales se emiten al sistema de memoria por ese procesador, y2. el valor devuelto por cada operaci´n de lectura es el valor escrito por la ultima o ´ escritura en esa localizaci´n en la secuencia arriba indicada. oEst´ impl´ a ıcita en la definici´n de coherencia la propiedad de que todas las escrituras oa una localizaci´n (desde el mismo o diferente procesador) son vistas en el mismo oorden por todos los procesadores. A esta propiedad se le denomina serializaci´n de olas escrituras. Esto significa que si las operaciones de lectura del procesador P1 a unalocalizaci´n ven el valor producido por la escritura w1 (de, por ejemplo, P2 ) antes que oel valor producido por la escritura w2 (de, por ejemplo, P3 ), entonces las lecturas deotro procesador P4 (o P2 o P3 ) no deben poder ver w2 antes que w1 . No hay necesidadde un concepto an´logo para la serializaci´n de las lecturas, dado que los efectos de las a olecturas 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 lasoperaciones de lectura que realiza, quiz´s aumentado con un conjunto impl´ a ıcito delecturas a todas las localizaciones al final del programa. De los resultados no podemosdeterminar el orden en el cual las operaciones se realizaron realmente por la m´quina, asino el orden en el que parece que se ejecutaron. De hecho, no es importante en qu´ eorden las cosas ocurren realmente en la m´quina o cu´ndo cambi´ cada bit, dado que a a ono es detectable; todo lo que importa es el orden en el cual las cosas parecen haberocurrido, como detectable a partir de los resultados de una ejecuci´n. Este concepto ser´ o am´s importante cuando discutamos los modelos de consistencia de la memoria. Para afinalizar, una definici´n adicional que necesitamos en el caso de los multiprocesadores oes la de completitud de una operaci´n: Una operaci´n de lectura o escritura se dice que o ose ha completado cuando se ha realizada con respecto a todos los procesadores.6.3.5 Esquemas de coherencia de las cach´s eExisten numerosos protocolos para mantener la coherencia de las cach´s en un sistema emultiprocesador con memoria compartida. En primer lugar hay dos formas de abordarel problema. Una forma es resolver el problema de la coherencia por software, lo queimplica la realizaci´n de compiladores que eviten la incoherencia entre cach´s de datos o ecompartidos. La otra aproximaci´n es proveer mecanismos hardware que mantengan de oforma continua la coherencia en el sistema, siendo adem´s transparente al programador. aComo esta segunda forma es la m´s utilizada, nos centraremos en ella de manera que atodos los protocolos que siguen se refieren a soluciones hardware al problema de lacoherencia. Podemos distinguir tambi´n dos tipos de sistemas multiprocesadores; por un lado eest´n los sistemas basados en un unico bus, con un n´mero no demasiado grande de a ´ uprocesadores, cada uno con su cach´, y por otro lado est´n los sistemas m´s complejos e a acon varios buses o varias subredes con un gran n´mero de nodos procesadores. En el uprimero parece m´s adecuado un tipo de protocolo que est´ continuamente sondeando a eo fisgando el bus com´n para ver qu´ transacciones podr´ introducir incoherencia y u e ıanactuar en consecuencia. A estos protocolos se les llama de sondeo o snoopy puesto quefisgan el bus para detectar incoherencia. B´sicamente cada nodo procesador tendr´ a aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 154. 6.4 Protocolos de sondeo o snoopy (medio compartido) 141los bits necesarios para indicar el estado de cada l´ ınea de su cach´ y as´ realizar las e ıtransacciones de coherencia necesarias seg´n lo que ocurra en el bus en cada momento. u En el segundo tipo de sistemas, con varias subredes locales y un amplio n´mero de uprocesadores, un protocolo de sondeo es complicado de realizar puesto que las activi-dades en los sub-buses son dif´ ıciles de fisgar, ya que las transacciones van a ser localesa estos. Para estos sistemas m´s complejos se utiliza un tipo de protocolo basado en adirectorio, que consiste en la existencia de un directorio com´n donde se guardan el es- utado de validez de las l´ ıneas de las cach´s, de manera que cualquier nodo puede acceder ea este directorio com´n. u Dado que los sistemas multiprocesadores basados en memoria compartida y cach´ esuelen estar basados en bus, o una jerarqu´ de buses con no muchos niveles, los proto- ıacolos de coherencia suelen ser de sondeo, por esto se le dedica una atenci´n especial a oeste tipo de protocolos. Entre los protocolos de coherencia, tanto si son de sondeo como si no, existen engeneral dos pol´ ıticas para mantener la coherencia: invalidaci´n en escritura (write oinvalidate) y actualizaci´n en escritura (write update). En la pol´ o ıtica de invalidaci´n en oescritura (tambi´n llamada pol´ e ıtica de coherencia din´mica), siempre que un procesador amodifica un dato de un bloque en la cach´, invalida todas las dem´s copias de ese bloque e aguardadas en las otras cach´s. Por contra, la pol´ e ıtica de actualizaci´n en escritura oactualiza las copias existentes en las otras cach´s en vez de invalidarlas. e En estas pol´ ıticas, los protocolos usados para la invalidaci´n o actualizaci´n de las o ootras copias dependen de la red de interconexi´n empleada. Cuando la red de interco- onexi´n permite el broadcast (como en un bus), los comandos de invalidaci´n y actua- o olizaci´n pueden ser enviados a todas las cach´s de forma simult´nea. A los protocolos o e aque utilizan esta t´cnica se les denominan, tal y como se ha comentado antes, proto- ecolos de de sondeo o snoopy, dado que cada cach´ monitoriza las transacciones de las edem´s cach´s. En otras redes de interconexi´n, donde el broadcast no es posible o causa a e odegradaci´n (como en las redes multietapa), el comando de invalidaci´n/actualizaci´n o o ose env´ unicamente a aquellas cach´s que tienen una copia del bloque. Para hacer ıa ´ eesto, se usa frecuentemente un directorio centralizado o distribuido. Este directoriotiene una entrada para cada bloque. La entrada por cada bloque contiene un puntero acada cach´ que tiene una copia del bloque. Tambi´n contiene un bit que especifica si el e epermiso de actualizar el bloque s´lo lo tiene una determinada cach´. A los protocolos o eque usan este esquema se les denominan protocolos de cach´ basados en directorio. e6.4 Protocolos de sondeo o snoopy (medio compar- tido)Tal y como se ha comentado antes, hay dos tipos de protocolos atendiendo al mecanismoque utilizan. As´ se tienen el write-update o write-broadcast o actualizar en escritura, y ıel write-invalidate o invalidar en escritura. El primer m´todo, el de invalidar en escritura, se basa en asegurar que un pro- ecesador tiene acceso exclusivo a un dato antes de que acceda a ´l. Esto se consigue einvalidando todas las l´ ıneas de todas las cach´s que contengan un dato que est´ siendo e aescrito en ese momento. Este protocolo es con diferencia el m´s usado tanto en pro- atocolos de sondeo como en los de directorio. El acceso exclusivo asegura que no hayIngenier´ Inform´tica ıa a Universidad de Valencia
  • 155. 142 Multiprocesadoresotras copias le´ ıbles o escribibles del dato cuando se realiza la escritura, ya que todas lascopias del dato se invalidan en el momento de la escritura. Esto asegura que cuandootro procesador quiera leer el dato falle su cach´ y tenga que ir a memoria principal a ebuscarlo. Si dos procesadores intentan escribir a la vez el mismo dato, hay uno que ganar´ anecesariamente, mientras que el otro deber´ esperar a que este escriba momento en el acual deber´ volver a obtener la copia buena para poder volver a escribir. Por lo tanto, aeste protocolo asegura la escritura en serie. El segundo m´todo, alternativa al anterior, es el de actualizar todas las copias de las ecach´s cuando se escribe un determinado dato. Este protocolo se llama actualizar en eescritura. 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 ano, o sea, que se encuentra tambi´n en otras cach´s. Si no est´ compartida entonces no e e aes necesario actualizar el resto de cach´s. e La belleza de la coherencia de cach´ basada en snooping reside en que toda la ma- equinaria para resolver un problema complicado se reduce a una peque˜ a cantidad de ninterpretaci´n extra de eventos que ocurren de forma natural en el sistema. El proce- osador permanece inalterado. No existen operaciones expl´ ıcitas de coherencia insertadasen el programa. Extendiendo los requisitos del controlador de la cach´ y explotando las epropiedades del bus, las lecturas y escrituras que son inherentes al programa se usan deforma impl´ ıcita para mantener la coherencia de las cach´s mientras que la serializaci´n e odel bus mantiene la consistencia. Cada controlador de cach´ observa e interpreta las etransacciones de memoria de los otros controladores para mantener su propio estadointerno. Para conseguir un uso eficiente de ancho de banda limitado que proporcionaun bus compartido nos centraremos en protocolos que usan cach´s del tipo post-escritura (write-back ) lo eque permite que varios procesadores escriban a diferentes bloques en sus cach´s locales ede forma simult´nea sin ninguna transacci´n en el bus. En este caso es necesario tener a oespecial cuidado para asegurarnos de que se transmite la suficiente informaci´n sobre oel bus para poder mantener la coherencia. Tambi´n comprobaremos que los protocolos eproporcionan restricciones suficientes en la ordenaci´n para mantener la serializaci´n o ode las escrituras y un modelo de consistencia de memoria secuencial. Recordemos que en un uniprocesador con una cach´ con post-escritura. Un fallo de eescritura en la cach´ hace que ´sta lea todo el bloque de la memoria, actualice e e una palabra, y retenga el bloque como modificado de tal forma que la actualizaci´n en omemoria principal ocurre cuando el bloque es reemplazado. En un multiprocesador, esteestado de modificado tambi´n se usa por parte del protocolo para indicar la pertenencia ede forma exclusiva del bloque por parte de la cach´. En general, se dice que una cach´ es e epropietaria de un bloque si debe suministrar los datos ante una petici´n de ese bloque. oSe dice que una cach´ tiene una copia exclusiva de un bloque si es la unica cach´ con e ´ euna copia v´lida del bloque (la memoria principal puede o no tener una copia v´lida). a aLa exclusividad implica que la cach´ puede modificar el bloque sin notific´rselo a nadie. e aSi una cach´ no tiene la exclusividad, entonces no puede escribir un e nuevo valor en el bloque antes de poner un transacci´n en el bus para comunicarse ocon las otras cach´s. Si una cach´ tiene el bloque en estado modificado, entonces e edicho nodo es el propietario y tiene la exclusividad. (La necesidad de distinguir entrepropiedad y exclusividad se aclarar´ muy pronto.) aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 156. 6.4 Protocolos de sondeo o snoopy (medio compartido) 143 En un fallo de escritura, una forma especial de transacci´n llamada lectura exclusiva ose usa para impedir a las otras cach´s la escritura o adquirir una copia del bloque con epropiedad exclusiva. Esto hace que el bloque de la cach´ pase a estado modificado epermitiendo la escritura. Varios procesadores no pueden escribir el mismo bloque deforma concurrente, lo que llevar´ a valores inconsistentes: Las transacciones de lectura ıaexclusiva generadas por sus escrituras aparecer´n de forma secuencial en el bus, as´ a ıque s´lo una de ellas puede obtener la propiedad exclusiva del bloque en un momento odado. Las acciones de coherencia de cach´ se consiguen mediante estos dos tipos de etransacciones: lectura y lectura exclusiva. Eventualmente, cuando un bloque modifica-do se reemplaza en la cach´, los datos se actualizan en la memoria, pero este evento no eest´ producido por una operaci´n de memoria sobre ese bloque y su importancia en el a oprotocolo es incidental. Un bloque que no ha sido modificado no tiene que se escrito enla memoria y puede ser descartado. Tambi´n debemos considerar los protocolos basados en la actualizaci´n. En este e ocaso, cuando se escribe en una localizaci´n compartida, el valor actualizado se transfiere oa todos los procesadores que tienen ese bloque en la cach´. De esta forma, cuando los eprocesadores acceden a ese bloque posteriormente, pueden hacerlo desde sus cach´s con ebaja latencia. Las cach´s de todos los dem´s procesadores se actualizan con una unica e a ´transacci´n del bus, conservando el ancho de banda. Por contra, con los protocolos obasados en la invalidaci´n, en una operaci´n de escritura el estado de la cach´ de ese o o ebloque de memoria en todos los dem´s procesadores son declarados inv´lidos. Las a aventajas e inconvenientes de ambos protocolos son complejos y dependen de la cargade trabajo. En general, las estrategias basadas en la invalidaci´n se han mostrado m´s o arobustas y se proporcionan como el protocolo b´sico por la mayor´ de los vendedores. a ıaAlgunos vendedores proporcionan un protocolo de actualizaci´n como una opci´n a ser o outilizada para bloques correspondientes a estructuras de datos espec´ ıficas o p´ginas. a La tabla 6.2 resume los principales protocolos e implementaciones para mantener lacoherencia en sistemas basados en bus. El n´mero de protocolos del tipo de invalidar uen escritura es mayor puesto que son los protocolos que se utilizan m´s. a A continuaci´n veremos los protocolos MSI, MESI (conocido tambi´n como Illinois), o eWrite once y Berkeley como ejemplos de protocolos basados en invalidaci´n en escritura, oy Dragon y Firefly que se incluyen como ejemplos de protocolos de actualizaci´n enoescritura.6.4.1 Protocolo de invalidaci´n de 3 estados (MSI) oEl primer protocolo que consideraremos es un protocolo de invalidaci´n b´sico para o acach´s post-escritura. Es muy similar al protocolo que fue usado en la serie de multipro- ecesadores Silicon Graphics 4D. El protocolo usa los tres estados necesarios en cualquiercach´ post-escritura para distinguir bloques v´lidos que no han sido modificados (clean) e ade aquellos que han sido modificados (dirty). Espec´ ıficamente, los estados son inv´lido a(I), compartido (S) y modificado (M). El estado de inv´lido tiene un significado claro. aCompartido significa que el bloque est´ presente en la cach´ y no ha sido modificado, a ela memoria principal est´ actualizada y cero o m´s cach´s adicionales pueden tener a a etambi´n una copia actualizada (compartida). Modificado significa que unicamente este e ´procesador tiene una copia v´lida del bloque en su cach´, la copia en la memoria prin- a ecipal est´ anticuada y ninguna otra cach´ puede tener una copia v´lida del bloque (ni a e aen estado modificado ni compartido). Antes de que un bloque compartido pueda serIngenier´ Inform´tica ıa a Universidad de Valencia
  • 157. 144 Multiprocesadores Nombre Tipo de Escritura a memoria Caracter´ ısticas M´quinas a protocolo Write Write Write back despu´s e Primer protocolo de Sequent once invalidate de la primera escritu- sondeo Symmetry ra Synapse Write Write back Estado expl´ ıcito don- M´quinas a N+1 invalidate de la memoria es pro- Synapse; pietaria primeras disponibles Berkeley Write Write back Estado propietario Berkeley invalidate compartido SPUR Illinois Write Write back Estado privado lim- SGI Power MESI invalidate pio; puede entregar y series datos desde cualquier Challenge cach´ con copias lim- e pias Firefly Write Write back si priva- Memoria actualizada Actualmente update do, write through si para todos en desuso; compartido SPARCCen- ter 2000 Dragon Write Write back si priva- update do, write through si compartido Tabla 6.2: Protocolos de sondeo para la coherencia de cach´s. eescrito y pasar al estado modificado, todas las dem´s copias potenciales deben de ser ainvalidadas v´ una transacci´n de bus de lectura exclusiva. Esta transacci´n sirve para ıa o oordenar la escritura al mismo tiempo que causa la invalidaciones y por tanto aseguraque la escritura se hace visible a los dem´s. 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 ea uno que no existe. En el ultimo caso, el bloque que est´ en la cach´ en la actualidad ´ e eser´ reemplazado por el nuevo bloque, y si el bloque actual est´ en el estado modificado a asu 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 direcci´n en el bus y e o pide una copia que no piensa modificar. El sistema de memoria (posiblemente otra cach´) proporciona el dato. Esta transacci´n se genera por un PrRd que falla en la e o cach´ y el procesador espera como resultado de esta transacci´n el dato solicitado. e o• Lectura exclusiva del bus (BusRdX): El controlador de la cach´ pone la direcci´n e o en el bus y pide una copia exclusiva que piensa modificar. El sistema de memoria (posiblemente otra cach´) proporciona el dato. Todas las dem´s cach´s necesitan e a e ser invalidadas. Esta transacci´n se genera por una PrWr a un bloque que, o no est´ o a en la cach´ o est´ en la cach´ en un estado distinto al modificado. Una vez la cach´ e a e e obtiene la copia exclusiva, la escritura puede realizarse en la cach´. El procesador eIngenier´ Inform´tica ıa a Universidad de Valencia
  • 158. 6.4 Protocolos de sondeo o snoopy (medio compartido) 145 puede solicitar una confirmaci´n como resultado de esta o transacci´n. o• Escritura (BusWB): El controlador de la cach´ pone la direcci´n y el contenido e o para el bloque de la memoria en el bus. La memoria principal se actualiza con el ultimo contenido. Esta transacci´n 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 transacci´n que puede no existir excepto para ola coherencia de la cach´. Otro nuevo concepto necesario para soportar los protocolos ede post-escritura es que junto con el cambio de estado de cada bloque en la cach´, el econtrolador de la cach´ puede intervenir en las transacciones del bus y poner el contenido edel bloque referenciado en el bus, en vez de permitir que la memoria proporcione el dato.Por supuesto, el controlador de la cach´ tambi´n puede iniciar nuevas transacciones, e eproporcionar datos para las post-escrituras, o coger los datos proporcionados por elsistema de memoria. PrRd / -- PrWr / -- M BusRd / Flush PrWr / BusRdX S BusRdX / Flush BusRdX / -- PrRd / BusRd PrRd / -- BusRd / -- PrWr / BusRdX I Figura 6.32: Protocolo b´sico de invalidaci´n con tres estados. a o El diagrama de estados que gobierna un bloque en cada cach´ en este protocolo se emuestra en la figura 6.32. Los estados est´n organizados de tal manera que conforme un aestado est´ m´s cerca de la parte superior m´s ligado est´ el bloque a ese procesador. La a a a alectura de un bloque inv´lido por parte de un procesador (incluyendo los no presentes) aproduce una transacci´n BusRd. El bloque recientemente cargado se promociona desde oel estado inv´lido al estado compartido dependiendo de si otra cach´ tiene una copia del a ebloque. Cualquier otra cach´ con el bloque en el estado compartido observa el BusRd, epero no toma ninguna acci´n especial, permitiendo que la memoria responda con el dato. oSin embargo, si una cach´ tiene el bloque en el estado modificado (y unicamente puede e ´haber una) y observa una transacci´n BusRd en el bus, debe participar en la transacci´n o oya que la copia existente en memoria no es v´lida. Esta cach´ env´ los datos al bus en a e ıalugar de la memoria y degrada su copia del bloque al estado compartido. La memoriaIngenier´ Inform´tica ıa a Universidad de Valencia
  • 159. 146 Multiprocesadoresy la cach´ que ped´ el dato son actualizadas. Esto puede conseguirse mediante una e ıatransferencia directa entre las cach´s a trav´s del bus durante esta transacci´n BusRd e e oo indicando un error en la transacci´n BusRd y generando una transacci´n de escritura o opara actualizar la memoria. En el ultimo caso, la cach´ original volver´ a realizar su ´ e ıasolicitud para obtener el bloque de la memoria. (Tambi´n es posible hacer que el dato epuesto en el bus sea tomado por la cach´ que realiz´ la petici´n pero no por la memoria, e o odejando la memoria sin actualizar, pero este caso requiere m´s estados). a Una escritura en un bloque inv´lido implica cargar el bloque entero y despu´s modi- a eficar los bytes que se deseen. En este caso se genera una transacci´n de lectura exclusiva oen el bus, que causa que todas las otras copias del bloque sean invalidadas, asegurandoa la cach´ que realiza la petici´n la propiedad exclusiva del bloque. El bloque asciende e oal estado de modificado y despu´s se escribe. Si otra cach´ realiza una petici´n posterior e e ode acceso exclusivo, en respuesta a su transacci´n BusRdX el bloque se degradar´ al o aestado de invalido despu´s de poner la copia exclusiva en el bus. e La transacci´n m´s interesante ocurre cuando se escribe en un bloque compartido. o aEl tratamiento en este caso es igual al de una escritura en un bloque inv´lido, usando auna transacci´n de lectura exclusiva en el bus para adquirir la propiedad exclusiva del obloque. Los datos que nos devuelve el bus pueden ser ignorados en este caso ya queya existen en la cach´. De hecho, una optimizaci´n com´n para reducir el tr´fico en el e o u abus es introducir una nueva transacci´n, llamada actualizaci´n del bus o BusUpgr, para o oesta situaci´n. Un BusUpgr obtiene la propiedad exclusiva al igual que un BusRdX, oinvalidando las dem´s copias, pero no devuelve el bloque al que realiz´ la petici´n. a o oIndependientemente de la transacci´n utilizada, el bloque pasa al estado modificado. oPosteriores escrituras en el bloque mientras permanece en ese estado no generan nuevastransacciones. El reemplazamiento de un bloque de la cach´ lleva a dicho bloque al estado de einv´lido (no presente) elimin´ndolo de la cach´. Por lo tanto, un reemplazamiento a a esupone que dos bloques cambien de estado en la cach´: el que es reemplazado pasa de esu estado actual al estado de inv´lido, el que ocupa su lugar de inv´lido a su nuevo a aestado. El ultimo cambio no puede tener lugar antes del primero. Si el bloque a ser ´reemplazado estaba en el estado de modificado, la transici´n de reemplazamiento de M a oI genera una transacci´n de post-escritura. Si estaba en el estado inv´lido o compartido, o ano es necesario hacer nada. El resultado de aplicar el protocolo MSI al ejemplo mostrado en la figura 6.30 sepuede ver en la figura 6.33. Acci´n Proces. o Est. P1 Est. P2 Est. P3 Acc. bus Datos sumin. por 1. P1 lee u S – – BusRd Memoria 2. P3 lee u S – S BusRd Memoria 3. P3 escribe u I – M BusRdX Memoria 4. P1 lee u S – S BusRd Cach´ de P3 e 5. P2 lee u S S S BusRd MemoriaFigura 6.33: Protocolo de invalidaci´n de 3 estados en acci´n para las transacciones o omostradas en la figura 6.30.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 160. 6.4 Protocolos de sondeo o snoopy (medio compartido) 147Satisfacci´n de la coherencia oDado que pueden existir lecturas y escrituras a cach´s locales de forma simult´nea, no e aes obvio que se satisfaga la condici´n de coherencia y mucho menos la de consistencia osecuencial. Examinemos en primer lugar la coherencia. Las transacciones de lecturaexclusiva aseguran que la cach´ en donde se realiza la escritura tiene la unica copia e ´v´lida cuando el bloque se modifica en la cach´. El unico problema que podr´ existir a e ´ ıaes que no todas las escrituras generan transacciones en el bus. Sin embargo, la claveaqu´ es que entre dos transacciones de bus para un bloque, unicamente un procesador ı ´puede realizar las escrituras; el que realiz´ la transacci´n de lectura exclusiva m´s o o areciente. En la serializaci´n, esta secuencia de escrituras aparecer´ en el orden indicado o apor el programa entre esa transacci´n y la siguiente transacci´n para ese bloque. Las o olecturas que realice dicho procesador tambi´n aparecer´n en orden con respecto a las e aotras escrituras. Para una lectura de otro procesador, existir´ al menos una transacci´n a odel bus que separar´ la finalizaci´n de la lectura de la finalizaci´n de esas escrituras. a o oEsa transacci´n en el bus asegura que la lectura ver´ todas o a las escrituras en un orden secuencial consistente. Por lo tanto, las lecturas de todoslos procesadores ven todas las escrituras en el mismo orden.Satisfacci´n de la consistencia secuencial oPara comprobar que se cumple la consistencia secuencial, veamos en primer lugar cu´l aes la propia definici´n y c´mo puede construirse una consistencia global entrelazando o otodas las operaciones de memoria. La serializaci´n del bus, de hecho, define un orden ototal sobre las transacciones de todos los bloques, no s´lo aquellas que afectan a un ounico bloque. Todos los controladores de cach´s observan las transacciones de lectura´ ey lectura exclusiva en el mismo orden y realizan las invalidaciones en ese orden. Entretransacciones consecutivas del bus, cada procesador realiza una secuencia de operacionesa la memoria (lecturas y escrituras) en el orden del programa. Por lo tanto, cualquierejecuci´n de un programa define un orden parcial natural: o Una operaci´n de memoria Mj es posterior a la operaci´n Mi si (i) las o o operaciones son emitidas por el mismo procesador y Mj aparece despu´s e que Mi en el orden del programa, o (ii) Mj genera una transacci´n del bus o posterior a la operaci´n de memoria Mi . oEste orden parcial puede expresarse gr´ficamente como se muestra en la figura . Entre atransacciones del bus, cualquiera de las secuencias que se pueden formar entrelazandolas distintas operaciones da lugar a un orden total consistente. En un segmento entretransacciones del bus, un procesador puede observar las escrituras de otros procesadores,ordenadas por transacciones de bus previas que genera, al mismo tiempo que sus propiasescrituras est´n ordenadas por el propio programa. a Tambi´n podemos ver c´mo se cumple la CS en t´rminos de las condiciones suficien- e o etes. La detecci´n de la finalizaci´n de la escritura se realiza a trav´s la aparici´n de una o o e otransacci´n de lectura exclusiva en el bus y la realizaci´n de la escritura en la cach´. La o o etercera condici´n, que proporciona la escritura at´mica, se consigue bien porque una o olectura (i) causa una transacci´n en el bus que es posterior a aquella transacci´n de o oescritura cuyo valor desea obtener, en cuyo caso la escritura debe haberse completadoIngenier´ Inform´tica ıa a Universidad de Valencia
  • 161. 148 Multiprocesadores P0: R W R Rd R W W P1: W W R R R RdX P2: W R W W R WFigura 6.34: Orden parcial en las operaciones de memoria para una ejecuci´n con el oprotocolo MSI.de forma global antes de la lectura, o (ii) porque es posterior en el orden del programacomo es el caso de una lectura dentro del mismo procesador, o (iii) porque es posterioren el orden del programa del mismo procesador que realiz´ la escritura, en cuyo caso oel procesador ya ha esperado el resultado de una transacci´n de lectura exclusiva y ola escritura se ha completado de forma global. As´ se cumplen todas las condiciones ı,suficientes.6.4.2 Protocolo de invalidaci´n de 4 estados (MESI) oEl protocolo MSI presenta un problema si consideramos una aplicaci´n secuencial en oun multiprocesador; este uso de la multiprogramaci´n es de hecho la carga m´s usual o ade multiprocesadores de peque˜ a escala. Cuando el programa lee y modifica un dato, nel protocolo MSI debe generar dos transacciones incluso en el caso de que no existacompartici´n del dato. La primera es una transacci´n BusRd que obtiene el bloque de o ola memoria en estado S, y la segunda en una transacci´n BusRdX (o BusUpgr) que oconvierte el bloque del estado S al M. A˜ adiendo un estado que indique que el bloque nes la unica copia (exclusiva) pero que no est´ modificado y cargando el bloque en ese ´ aestado, podr´ıamos evitarnos la ultima transacci´n ya que el estado indica que ning´n ´ o uotro procesador tiene el bloque en cach´. Este nuevo estado indica un nivel intermedio eentre compartido y modificado. Al ser exclusivo es posible realizar una escritura opasar al estado modificado sin ninguna transacci´n del bus, al contrario que en el caso ode estar en el estado compartido; pero no implica pertenencia, as´ que al contrario que ıen el estado modificado la cach´ no necesita responder al observar una petici´n de dicho e obloque (la memoria tiene una copia v´lida). Variantes de este protocolo MESI se usan aen muchos de los microprocesadores modernos, incluyendo el Pentium, PowerPC 601y el MIPS R4400 usado en los multiprocesadores Silicon Graphics Challenge. A esteprotocolo tambi´n se le conoce como protocolo Illinois por haber sido publicado por einvestigadores de la Universidad de Illinois en 1984. El protocolo MESI consiste en cuatro estados: modificado (M), exclusivo (E), com-partido (S) e inv´lido (I). I y M tienen la misma sem´ntica que antes. El estado ex- a aclusivo, E, significa que unicamente una cach´ (esta cach´) tiene una copia del bloque, ´ e ey no ha sido modificado (es decir, la memoria principal est´ actualizada). El estado S asignifica que potencialmente dos o m´s procesadores tienen este bloque en su cach´ en a eun estado no modificado. Cuando un procesador lee por primera vez un bloque, si existe una copia v´lida aIngenier´ Inform´tica ıa a Universidad de Valencia
  • 162. 6.4 Protocolos de sondeo o snoopy (medio compartido) 149en otra cach´ entra en la cach´ del procesador con el estado S. Sin embargo, si no e eexiste otra copia en ese instante (por ejemplo, en una aplicaci´n secuencial), entra con oel estado E. Cuando ese bloque se actualiza por medio de una escritura puede pasardirectamente del estado E a M sin generar otra transacci´n en el bus, dado que no existe ootra copia. Si mientras tanto otra cach´ ha obtenido una copia del bloque, el estado edel bloque deber´ pasar de E a S. Este protocolo necesita que el bus proporcione una ase˜ al adicional (S) que est´ disponible para que los controladores puedan determinar n een una transacci´n BusRd si existe otra cach´ que tenga el mismo bloque. Durante o ela fase en la que se indica en el bus la direcci´n del bloque al que se quiere acceder, otodas las cach´s determinan si tienen el bloque que se solicita y, si eso ocurre, activan ela se˜ al compartida. Esta es una l´ n ınea cableada como un OR, con lo que el controladorque realiza la petici´n puede observar si existe otro procesador que tenga en su cach´ o eel bloque de memoria referenciado y decidir si la carga del bloque se debe realizar en elestado S o E. PrRd / -- PrWr / -- M BusRdX / Flush BusRd / Flush PrWr / -- E BusRd / PrWr / BusRdX Flush PrRd / -- BusRdX / Flush PrWr / BusRdX S PrRd / BusRdX / Flush BusRd(S) PrRd / -- BusRd / Flush PrRd / BusRd(S) I Figura 6.35: Diagrama de transici´n de estados para el protocolo Illinois MESI. o El diagrama de transici´n de estados para este protocolo se muestra en la figura 6.35. oLa notaci´n BusRd(S) significa que cuando la transacci´n de lectura en el bus ocurre, o ose activa la se˜ al S, y BusRd(S) significa que S no est´ activada. Una transacci´n n a oBusRd significa que no nos importa el valor de S en esa transacci´n. Una escritura oa un bloque en cualquier estado hace que este pase al estado M, pero si estaba enel estado E no se necesita una transacci´n del bus. La aparici´n de un BusRd hace o oque el bloque pase del estado E al S, dado que existe otra copia del bloque. Comoocurr´ anteriormente, la aparici´n de una transacci´n BusRd hace que un bloque que ıa o oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 163. 150 Multiprocesadoresestuviese en el estado M pase al estado S y dicho bloque sea puesto en el bus. Tal comoocurr´ en el protocolo MSI es posible hacer que dicho bloque no sea actualizado en ıala memoria principal, pero ser´ necesarios nuevos estados. Obs´rvese que es posible ıan eque un bloque est´ en el estado S incluso sin existir otras copias, dado que estas copias epueden ser reemplazadas sin que las dem´s cach´s sean notificadas. Los argumentos a epara comprobar que el protocolo mantiene la consistencia secuencial y la coherencia delas cach´s es el mismo que en el caso del protocolo MSI. e El nombre del protocolo (MESI) viene de los nombres de los estados que puedetomar una l´ ınea: modificada, exclusiva, compartida e inv´lida que en ingl´s significan a eModified, Exclusive, Shared y Invalid, y lo cierto es que este nombre se usa m´s que el ade Illinois. Una l´ınea que es propiedad de cualquier cach´ puede estar como exclusiva o modifica- eda. Las l´ ıneas que est´n en el estado compartida no son propiedad de nadie en concreto. aLa aproximaci´n MESI permite la determinaci´n de si una l´ o o ınea es compartida o nocuando se carga. Una l´ ınea modificada es enviada directamente al peticionario desde lacach´ que la contiene. Esto evita la necesidad de enviar comandos de invalidaci´n para e otodas aquellas l´ ıneas que no estaban compartidas. Veamos las transiciones seg´n las operaciones realizadas sobre las cach´s: u eFallo 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´ modificada a entonces se escribe esta l´ ınea tambi´n a la memoria al mismo tiempo. Si es e compartida, 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´ modificada a entonces se escribe esta l´ ınea tambi´n a la memoria al mismo tiempo. Si es e compartida, la cach´ con mayor prioridad es la que entrega la l´ e ınea. La l´ınea le´ se actualiza y se pone en estado modificada. El resto de l´ ıda ıneas pasan al estado invalidas. Hay que hacer notar que este protocolo s´lo permite un unico o ´ escribiente, es decir, una l´ınea modificada s´lo est´ presente en una unica cach´. o a ´ eAcierto de escritura: Si la cach´ peticionaria es la propietaria (l´ e ınea modificada o exclusiva), se actualiza la l´ ınea en la cach´ sin m´s. Si la l´ e a ınea est´ compartida a por otras cach´s (compartida), se actualiza la l´ e ınea despu´s de haber invalidado el e resto de l´ıneas. Una vez actualizada la l´ ınea pasa a ser modificada en cualquiera de los casos anteriores.6.4.3 Write onceA veces se le conoce tambi´n como write invalidate directamente, ya que es el primero eque se pens´ de este tipo y tambi´n es el primero de los protocolos de sondeo. En o eocasiones se le conoce como el protocolo de Goodman puesto que fue propuesto porJames Goodman en 1983. Este protocolo de coherencia se puede describir mediante un grafo de transicionesde 4 estados tal y como se muestra en la figura 6.36. Los 4 estados son los siguientes:V´lida: La l´ a ınea de cach´, que es consistente con la copia en memoria, ha sido le´ e ıdaIngenier´ Inform´tica ıa a Universidad de Valencia
  • 164. 6.4 Protocolos de sondeo o snoopy (medio compartido) 151 PrWr / −− PrRd / −− S BusRd / Flush PrWr / BusRdX BusRdX / Flush PrWr / −− R BusRd / −− PrWr / BusWrX PrRd / −− BusRdX / Flush V BusRdX / −− BusWrX / −− PrRd / −− PrRd / BusRd / −− BusRd I Figura 6.36: Diagrama de transici´n del protocolo Write once. o de la memoria principal y no ha sido modificada.Inv´lida: 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 m´s 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 v´lida ase la conoce tambi´n como consistente m´ltiple, a la reservada como consistente unica, e u ´y la sucia como inconsistente unica, la v´lida se queda con el mismo nombre. ´ a En realidad este protocolo de escribir una vez est´ basado en un protocolo m´s a asencillo con s´lo tres estados para las copias que son v´lida, inv´lida y sucia. El estado o a areservada se ha a˜ adido para el caso en que se modifique una l´ n ınea una sola vez, demanera que se aprovecha mejor el ancho de banda del bus. Para mantener la consistencia el protocolo requiere dos conjuntos de comandos.Las l´ ıneas s´lidas de la figura 6.36 se corresponden con los comandos emitidos por el oprocesador 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 v´lida. El aprimer acierto de escritura lleva a la l´ ınea a su estado de reservada. Los aciertos deIngenier´ Inform´tica ıa a Universidad de Valencia
  • 165. 152 Multiprocesadoresescritura posteriores cambian el estado a sucia. Las l´ ıneas discontinuas se corresponden con los comandos de invalidaci´n emitidos opor el resto de procesadores a trav´s del bus de sondeo compartido. El comando in- evalidar en lectura lee una l´ınea o bloque e invalida el resto de copias. El comandoinvalidar en escritura invalida todas las copias de una l´ ınea. El comando lectura de busse corresponde con una lectura normal a memoria por otro procesador. Con estas consideraciones, los eventos y acciones que tienen lugar en el sistema dememoria son:Fallo de lectura: Cuando un procesador quiere leer un bloque que no est´ en la cach´ a e se produce un fallo de lectura. Entonces se inicia una operaci´n de lectura en el o bus. Si no hay copias de esta l´ ınea en otras cach´s entonces se trae la l´ e ınea de la memoria principal, pasando el estado a exclusiva puesto que es la unica cach´ con ´ e esa l´ ınea. Si hay alguna copia exclusiva en alguna otra cach´, entonces se coge la e copia de la memoria o de esa cach´, pasando ambas copias al estado de v´lidas. Si e a existe alguna copia sucia en otra cach´, esa cach´ inhibir´ la memoria principal y e e a mandar´ esa copia a la cach´ que hizo la petici´n as´ como a la memoria principal, a e o ı ambas copias resultantes pasar´n al estado de v´lidas. a aAcierto 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 v´lida entonces se a manda un comando de invalidar en escritura a todas las cach´s 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 s´lo hay o una copia que es reservada o sucia de una determinada l´ ınea en todas las cach´s. eFallo 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 cach´s lo que invalidar´ todas e a las cach´s. La copia local es actualizada terminando en un estado de sucia puesto e que no se ha actualizado la memoria despu´s de la escritura. eAcierto de lectura: Nunca hay una transici´n en este caso, se lee de la cach´ local y o e ya est´. aCambio de l´ ınea: Si una copia est´ sucia debe escribirse en alg´n 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 v´lida, exclusiva a o inv´lida, no se realiza ning´n cambio. a u Para poder implementar este protocolo en un bus, son necesarias unas l´ ıneas adi-cionales para inhibir la memoria principal cuando se produce un fallo de lectura y haycopias sucias. Muchos de los buses est´ndar no incluyen estas l´ a ıneas por lo que resultacomplicado implantar protocolos de coherencia de cach´, a pesar de que estos buses eincluyen multiprocesadores.6.4.4 BerkeleyEl protocolo Berkeley, tambi´n llamado Berkeley-SPUR, usa la idea de propietario de ela l´ ınea de cach´. En cualquier instante una l´ e ınea de cach´ s´lo puede ser propiedad de e ouna sola de las cach´s, y si ninguna tiene esa l´ e ınea entonces se encuentra en memoriaprincipal. Hay cuatro estados para realizar esto: invalida, s´lo lectura, sucia compartida oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 166. 6.4 Protocolos de sondeo o snoopy (medio compartido) 153y sucia privada. Cuando una l´ınea est´ compartida, s´lo el propietario tiene esa l´ a o ınea enel estado sucia compartida; todos los dem´s deber´n tener esa l´ a a ınea como s´lo lectura. oPor lo tanto, una l´ ınea de cach´ s´lo puede estar en el estado sucia compartida o sucia e oprivada en una unica cach´, que ser´ la propietaria de esa l´ ´ e a ınea. La figura 6.37 muestra el diagrama de estados correspondiente a este protocolo; ala izquierda se muestra el diagrama para las operaciones que realiza el procesador y ala derecha el diagrama para las ´rdenes que vienen a trav´s del bus realizadas por el o eresto de procesadores. PrRd / −− PrWr / −− SP PrWr / BusRdX BusRd / Flush SC BusRdX / Flush PrWr / BusRdX PrRd / −− BusRd / Flush BusRdX / Flush PrWr / BusRdX SL BusRdX / Flush PrRd / PrRd / −− BusRd BusRd / Flush I Figura 6.37: Diagramas de transici´n del protocolo Berkeley. o Veamos a continuaci´n las acciones a realizar dependiendo de las operaciones de la oCPU: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 inv´lida o de a s´lo lectura en el resto de cach´s) 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 s´lo lectura. Si la l´ o ınea que se pide se encuentra en el estado de s´loo lectura en el resto de las cach´s, entonces el dato lo coge de la memoria y el estado e que se le asigna es el de s´lo 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 m´s copias de esa l´ a ınea en otras cach´s.eFallo de escritura: En un fallo de escritura, la l´ ınea viene directamente del propieta- rio (memoria u otra cach´). El resto de cach´s 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.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 167. 154 MultiprocesadoresAcierto 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. S´lo en el caso en que la l´ o ınea fuera sucia privada no es necesaria ni la invalidaci´n ni la actualizaci´n a memoria principal, o o con lo que la escritura se realiza local a la cach´. e6.4.5 Protocolo de actualizaci´n de 4 estados (Dragon) oA continuaci´n estudiaremos un protocolo de actualizaci´n b´sico para cach´s de post- o o a eescritura. Esta es una versi´n mejorada del protocolo usado por los multiprocesadores oSUN SparcServer. Este protocolo fue inicialmente propuesto por los investigadores deXerox PARC para su sistema multiprocesador Dragon. El protocolo Dragon consta de 4 estados: exclusivo (E), compartido (SC), compartidomodificado (SM) y modificado (M). El estado exclusivo significa que s´lo existe una ocach´ (esta cach´) con una copia del bloque y que dicho bloque no ha sido modificado. e eLa causa de a˜ adir el estado E en Dragon es la misma que en el protocolo MESI. nSC significa que potencialmente dos o m´s procesadores (incluyendo esta cach´) tienen a eeste bloque en su cach´ y que la memoria principal puede estar o no actualizada. SM esignifica que potencialmente dos o m´s procesadores tienen este bloque en su cach´, la a ememoria principal no est´ actualizada y este procesador es el responsable de actualizar ala memoria principal cuando este bloque sea reemplazado en la cach´. Un bloque s´lo e opuede estar en el estado SM en una unica cach´ en un momento dado. Sin embargo, es ´ eposible que una cach´ tenga el bloque en estado SM mientras que en las otras aparezca een el estado SC. M significa, como anteriormente, que el bloque ha sido modificadounicamente en esta memoria, la memoria principal tiene un valor anticuado, y este´procesador es el responsable de actualizar la memoria principal cuando el bloque sea reemplazado. Obs´rvese que no existe un estado expl´ e ıcito debloque inv´lido (I) como en los protocolos anteriores. Esto es debido a que el protocolo aDragon es un protocolo basado en la actualizaci´n; el protocolo siempre mantiene los obloque de la cach´ actualizados, as´ que siempre es posible utilizar los datos existentes e ıen la cach´. e Las peticiones del procesador, las transacciones del bus y las acciones a realizarpor el protocolo son similares a las vistas en el protocolo Illinois MESI. El procesadortodav´ env´ peticiones de lectura (PrRd) y escritura (PrWr). Sin embargo, dado que ıa ıano tenemos un estado de invalidaci´n en el protocolo, para especificar las acciones a orealizar cuando un bloque de memoria se pide por primera vez, se han a˜ adido dos ntipos m´s de peticiones: lectura con fallo de cach´ (PrRdMiss) y escritura con fallo a ede cach´ (PrWrMiss). Para las transacciones de bus, tenemos lectura en bus (BusRd), eactualizaci´n en bus (BusUpd) y escritura en bus ( BusWB ). Las transacciones BusRd oy BusWB tienen la sem´ntica usual vista en los protocolos anteriores. BusUpd es una anueva transacci´n que toma como par´metro la palabra modificada por el procesador o ay la env´ a todos los procesadores a trav´s del bus de tal manera que se actualicen las ıa ecach´s de los dem´s procesadores. Enviando unicamente la palabra modificada en lugar e a ´de todo el bloque, se espera una utilizaci´n m´s eficiente del ancho del banda del bus. o aAl igual que en el caso del protocolo MESI aparece la se˜ al S para soportar el estado nE. La figura 6.38 muestra el diagrama de transici´n de estados para este protocolo. oA continuaci´n se exponen las acciones a realizar cuando un procesador incurre en un oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 168. 6.4 Protocolos de sondeo o snoopy (medio compartido) 155 PrRd / -- PrRd / -- BusUpd / Update BusRd / -- PrRdMiss / BusRd(S) E SC PrRdMiss / BusRd(S) PrWr / -- PrWr / BusUpd(S) PrWr / BusUpd(S) BusUpd / Update BusRd / Flush PrWrMiss / BusRd(S); BusUpd PrWrMiss / BusRd(S); SM PrWr / BusUpd(S) M PrRd / -- PrRd / -- PrWr / BusUpd(S) PrWr / -- BusRd / FlushFigura 6.38: Diagrama de transici´n de estados del protocolo de actualizaci´n Dragon. o ofallo de cach´ en una lectura, un acierto de cach´ en una escritura o un fallo de cach´ e e een una escritura (en el caso de un acierto de cach´ en una lectura no hay que realizar eninguna acci´n). o Fallo en una lectura: Se genera una transacci´n BusRd. Dependiendo o del estado de la se˜ al compartida (S), el bloque se carga en el estado E o n SC en la cach´ local. M´s concretamente, si el bloque est´ en el estado M o e a a SM en una de las otras cach´s, esa cach´ activar´ la l´ e e a ınea S y proporcionar´ a el ultimo valor para ese bloque en el bus, y el bloque se cargar´ en la cach´ ´ a e local en el estado SC (tambi´n se actualiza la memoria principal; si no e quisi´ramos 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 es a e necesario realizar ninguna acci´n. Si el bloque est´ en el estado E en la o a cach´ local, el bloque cambia internamente al estado M, no siendo necesaria e ninguna acci´n adicional. Sin embargo, si el bloque est´ en el estado SC, se o a genera una transacci´n BusUpd. Si alguna otra cach´ tiene una copia del o e dato, actualizan sus copias y cambian su estado a SC. La cach´ local tambi´n e e actualiza su copia del bloque y cambia su estado a SM. Si no existe otra copia del dato, la se˜ al S permanecer´ inactiva y la copia local se actualizar´ n a a cambiando al estado M. Finalmente, si en una escritura el bloque no est´ a presente en la cach´, la escritura se trata como una transacci´n del tipo fallo e o en la lectura seguida de una transacci´n de escritura. Por lo tanto, primero o se genera un BusRd y si el bloque se tambi´n se encuentra en otras cach´s e e un BusUpd.Ingenier´ Inform´tica ıa a Universidad de Valencia
  • 169. 156 Multiprocesadores Reemplazo: En el caso de reemplazo de un bloque (los arcos no se muestran en la figura), el bloque se escribe en la memoria principal utilizando una transacci´n del bus unicamente si se encuentra en el estado M o SM. Si est´ o ´ a en el estado SC, existir´ otra cach´ con ese bloque en estado SM, o nadie lo a e tiene en cuyo caso el bloque es v´lido en memoria principal. a6.4.6 FireflyEste es el unico protocolo del tipo actualizar en escritura que se va a ver puesto que ´pr´cticamente no se usan ninguno de este tipo. a El Firefly tiene 4 estados aunque en realidad s´lo utiliza tres que son: lectura privada, olectura compartida y sucia privada. El estado inv´lida se utiliza s´lo para definir la a ocondici´n inicial de una l´ o ınea de cach´. El Firefly utiliza el esquema de actualizaci´n e oen vez del de invalidaci´n, es decir, las escrituras a la cach´ son vistas por todos y se o eescribe a la memoria principal. El resto de cach´s que comparten la l´ e ınea, fisgan el busactualizando sus copias. Por lo tanto, ninguna l´ ınea de cach´ ser´ inv´lida despu´s de e a a eser cargada. Hay una l´ ınea especial del bus, la L´ıneaCompartida, que se activa paraindicar que al menos otra cach´ comparte la l´ e ınea. Veamos las transiciones a realizar seg´n los casos: uFallo de lectura: Si otra cach´ tiene una copia de la l´ e ınea, ´sta la entrega a la cach´ e e peticionaria, 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 cach´s que comparten dicha l´ e ınea ponen su estado a lectura compartida. Si no hay cach´s 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 cach´s 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 escritura privada, se escribe a la a cach´ sin m´s. En el ultimo caso se cambia el estado a privada sucia. Si el estado es e a ´ el de lectura compartida entonces adem´s de a la cach´ debe escribir a la memoria. a e El resto de cach´s que comparten la l´ e ınea capturan los datos del bus actualizando as´ sus l´ ı ıneas. Adem´s, estas cach´s activan la l´ a e ınea L´ıneaCompartida. Esto es necesario para que as´ la cach´ que est´ escribiendo pueda saber si la l´ ı e a ınea est´ a compartida o no. Si la l´ ınea no est´ compartida, se puede evitar la escritura “a a todos” (broadcast), en cuyo caso se actualiza como lectura privada, de otra manera se carga como lectura compartida.6.4.7 Rendimiento de los protocolos de sondeoA la hora de determinar el rendimiento de un multiprocesador con arquitecturas comolas vistas hasta ahora, existen varios fen´menos que se combinan. En particular, el orendimiento total de la cach´ es una combinaci´n del comportamiento de tr´fico causado e o apor fallos de cach´ en un uniprocesador y el trafico causado por la comunicaci´n entre e oIngenier´ Inform´tica ıa a Universidad de Valencia
  • 170. 6.4 Protocolos de sondeo o snoopy (medio compartido) 157cach´s, lo que puede dar lugar a invalidaciones y posteriores fallos de cach´. El cambio e edel n´mero de procesadores, tama˜ o de la cach´ y tama˜ o del bloque pueden afectar a u n e nestos dos componentes de diferente manera, llevando al sistema a un comportamientoque es una combinaci´n de los dos efectos. o Las diferencias de rendimiento entre los protocolos de invalidaci´n y actualizaci´n o ose basan en las tres caracter´ısticas siguientes: 1. Varias escrituras a la misma palabra sin lecturas intermedias precisan varias escritu- ras a todos en el protocolo de actualizaci´n, pero s´lo una escritura de invalidaci´n o o o en el de invalidaci´n. o 2. 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 actualizaci´n, mientras que s´lo la primera o o escritura de cualquier palabra en la l´ ınea es necesaria en el de invalidaci´n. Los o protocolos de invalidaci´n trabajan sobre bloques de cach´, mientras que en el de o e actualizaci´n deben trabajar sobre palabras para aumentar la eficiencia. o 3. El retraso entre la escritura de una palabra en un procesador y la lectura de ese valor escrito por otro procesador es habitualmente menor en un multiprocesador de actualizaci´n, debido a que los datos escritos son actualizados de forma inmediata o en la cach´ del que lee (si es que el procesador que lee ya ten´ copia de esa e ıa l´ ınea). Por comparaci´n, en un protocolo de invalidaci´n, el que va a leer se o o invalida primero, luego cuando llega la operaci´n de lectura debe esperar a que o est´ disponible. e Como el ancho de banda del bus y la memoria es lo que m´s se demanda en un amultiprocesador basado en bus, los protocolos de invalidaci´n son los que m´s se han o autilizado en estos casos. Los protocolos de actualizaci´n tambi´n causan problemas o eseg´n los modelos de consistencia, reduciendo las ganancias de rendimiento potenciales umostradas en el punto 3 anterior. En dise˜ os con pocos procesadores (2–4) donde los