ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf ·...

22
Arquitectura de Computadoras 7. Multiprocesadores Santiago E. Felipe/UTM-2020 1 7. Multiprocesadores 7.1 Introducción De 1986 a 2002, el rendimiento de los procesadores se incrementó en promedio un 50% al año debido a avances en la tecnología para la construcción de circuitos integrados y a mejoras arquitectónicas en los equipos. Como resultado de las mejoras arquitectónicas, los procesadores modernos con técnicas super-escalares permiten un paralelismo al nivel de instrucciones, la emisión múltiple de instrucciones y la ejecución de instrucciones fuera de orden. Además, la jerarquía de memorias complementa el desempeño del procesador al minimizar el costo por detenciones debidas a la espera de instrucciones y datos. Ese incremento constante en el rendimiento de los procesadores hasta hace pocos años hacía que los desarrolladores de software únicamente tuviesen que esperar una versión de procesadores con mayor velocidad para generar aplicaciones más rápidas. Sin embargo, en los últimos años ha habido un auge importante hacia el cómputo paralelo, las tendencias para aumentar el rendimiento van más hacia el uso de sistemas con múltiples procesadores que a la mejora de arquitecturas con procesadores monolíticos. Un sistema con muchos procesadores parece ser la solución para incrementar el rendimiento, sin embargo, no se trata sólo de conectar muchas computadoras pequeñas para obtener una computadora de alto desempeño. Un sistema multiprocesador debe ser escalable en hardware y software, de manera que los usuarios puedan incrementar el número de procesadores si su presupuesto se los permite, en espera de que el software los utilice para incrementar el rendimiento. El software escalable también implica que el sistema pueda continuar operando en presencia de hardware roto, esto es, si uno de n procesadores falla, el sistema debe continuar trabajando con n–1 procesadores. Los sistemas multiprocesadores deben tener el más alto rendimiento absoluto, es decir, deben ser más rápidos que el sistema uniprocesador más rápido. Las expectativas para un sistema multiprocesador son altas, si una tarea se realiza en t segundos con un procesador, se esperaría que con n procesadores el tiempo de ejecución fuera de t/n segundos. Esto no es posible porque hay secciones de las tareas que no se pueden paralelizar y se requiere tiempo para que los procesadores se coordinen en las tareas paralelizables. Actualmente las computadoras son capaces de realizar múltiples tareas en tiempo compartido, con ayuda del sistema operativo, aún con un solo procesador. De manera que al incorporar múltiples procesadores a un sistema generalmente se hace una distribución de tareas, por ello, comercialmente en sistemas multiprocesadores se considera un alto rendimiento como una alta productividad para tareas independientes.

Transcript of ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf ·...

Page 1: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 1

7. Multiprocesadores

7.1 Introducción

De 1986 a 2002, el rendimiento de los procesadores se incrementó en promedio un 50%al año debido a avances en la tecnología para la construcción de circuitos integrados y amejoras arquitectónicas en los equipos. Como resultado de las mejoras arquitectónicas,los procesadores modernos con técnicas super-escalares permiten un paralelismo al nivelde instrucciones, la emisión múltiple de instrucciones y la ejecución de instruccionesfuera de orden. Además, la jerarquía de memorias complementa el desempeño delprocesador al minimizar el costo por detenciones debidas a la espera de instrucciones ydatos.

Ese incremento constante en el rendimiento de los procesadores hasta hace pocos añoshacía que los desarrolladores de software únicamente tuviesen que esperar una versión deprocesadores con mayor velocidad para generar aplicaciones más rápidas. Sin embargo,en los últimos años ha habido un auge importante hacia el cómputo paralelo, lastendencias para aumentar el rendimiento van más hacia el uso de sistemas con múltiplesprocesadores que a la mejora de arquitecturas con procesadores monolíticos.

Un sistema con muchos procesadores parece ser la solución para incrementar elrendimiento, sin embargo, no se trata sólo de conectar muchas computadoras pequeñaspara obtener una computadora de alto desempeño. Un sistema multiprocesador debe serescalable en hardware y software, de manera que los usuarios puedan incrementar elnúmero de procesadores si su presupuesto se los permite, en espera de que el software losutilice para incrementar el rendimiento. El software escalable también implica que elsistema pueda continuar operando en presencia de hardware roto, esto es, si uno de nprocesadores falla, el sistema debe continuar trabajando con n – 1 procesadores.

Los sistemas multiprocesadores deben tener el más alto rendimiento absoluto, es decir,deben ser más rápidos que el sistema uniprocesador más rápido. Las expectativas para unsistema multiprocesador son altas, si una tarea se realiza en t segundos con un procesador,se esperaría que con n procesadores el tiempo de ejecución fuera de t/n segundos. Esto noes posible porque hay secciones de las tareas que no se pueden paralelizar y se requieretiempo para que los procesadores se coordinen en las tareas paralelizables.

Actualmente las computadoras son capaces de realizar múltiples tareas en tiempocompartido, con ayuda del sistema operativo, aún con un solo procesador. De manera queal incorporar múltiples procesadores a un sistema generalmente se hace una distribuciónde tareas, por ello, comercialmente en sistemas multiprocesadores se considera un altorendimiento como una alta productividad para tareas independientes.

Page 2: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 2

Considerando el procesamiento paralelo como la ejecución de una tarea por diversosprocesadores, las preguntas importantes que surgen para sistemas multiprocesadores son:¿Cómo es que los procesadores se coordinan y comparten datos? ¿Cuántos procesadoresse pueden conectar?

7.2 Taxonomía de Flynn

La taxonomía propuesta por Michael J. Flynn, en 1972, ayuda a clasificar los diferentessistemas de computadoras. La taxonomía se basa en el número de instruccionesconcurrentes y los flujos de datos que van a ser tratados durante su ejecución, esto dalugar a 4 categorías que se muestran en la figura 1.

Figura 1. Taxonomía de Flynn.Las categorías son:

1. SISD (Una instrucción, un flujo de datos): equipos tradicionales con 1 procesadorque ejecutan un único programa.

2. MISD (Múltiples instrucciones, un flujo de datos): no es factible la construcción desistemas de este tipo.

3. SIMD (Una instrucción, múltiples flujos de datos): este tipo de computadoras tienediversos procesadores y todos reciben las mismas instrucciones al mismo tiempo, lasinstrucciones son ejecutadas sobre un arreglo de datos permitiendo el paralelismo.

4. MIMD (Múltiples instrucciones, múltiples flujos de datos): se tienen variosprocesadores que trabajan en forma autónoma, ejecutando simultáneamentediferentes instrucciones sobre diferentes flujos de datos.

Page 3: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 3

Un sistema SIMD está hecho para realizar un procesamiento paralelo. Algunosprocesadores superescalares modernos dentro de su repertorio incluyen instruccionesSIMD, su arquitectura con múltiples unidades funcionales les permite operar sobrematrices o arreglos de datos. La estructura SIMD también es usada por Unidades deProcesamiento Gráfico (GPU), la GPU complementa a la CPU, descargándola delprocesamiento de datos para el manejo de gráficos.

En la clasificación MIMD existen dos alternativas: el modelo de memoria compartida(shared memory) y el modelo de memoria distribuida (distributed memory). Algunascomputadoras de escritorio y smart phones son ejemplos de sistemas con memoriacompartida. Las computadoras de gama-alta y clusters son sistemas con memoriadistribuida. Los clusters son grupos de computadoras que con ayuda del sistemaoperativo ayudan a distribuir la carga de trabajo, son sistemas escalables y de altadisponibilidad, esto es, el sistema puede crecer en el número de procesadores, memoria ydisco y estar disponible las 24 horas los 365 días del año.

Con sistemas MIMD también es posible el procesamiento paralelo, es decir, múltiplesprocesadores van a trabajar sobre el mismo programa con los mecanismos adecuadospara sincronizarse y compartir datos. Esta categoría es la natural para sistemasmultiprocesadores, un sistema MIMD con memoria compartida puede operar como unsistema SIMD.

7.3 Cómputo de Alto Rendimiento

El computo de alto rendimiento (HPC, High Performance Computing) surge cuando lastareas necesitan de un número muy alto de operaciones y el manejo de grandes cantidadesde datos, tanto de manera permanente como durante el tiempo en que se realiza elprocesamiento para generar más información. El HPC se presenta al resolver problemasmodernos en distintas áreas de conocimiento, algunos ejemplos son:

1. Modelado de eventos climáticos para entender el entorno y predecir eventos, en lassimulaciones se estudia la interacción entre la atmósfera, los océanos, la tierra,corrientes de aire, el hielo de los polos, entre otros.

2. Modelado de procesos biológicos, físicos y químicos, algunos trabajos relacionadosson:a) En el Oak Ridge National Laboratory se simula a 20 pFlops (20x1015

operaciones de punto flotante por segundo) el proceso de combustión demoléculas de combustibles complejos en condiciones muy turbulentas (2011).

b) El proyecto Folding@Home usa un grid de más de 160 mil computadoras parasimular el proceso de plegamiento proteico, útil para el estudio de

Page 4: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 4

configuraciones de moléculas que tienen que ver con enfermedades como elParkinson o Huntington.

c) Búsqueda de nuevas medicinas: el proyecto de investigación sobre el estudio delgenoma trata de identificar secuencias y mutaciones críticas en el desarrollo decáncer en los humanos (1997).

3. Análisis de datos: para el procesamiento de información astronómica, imágenesmédicas, buscadores Web, entre muchas otras. Una referencia que cabe destacar eneste apartado es el proyecto SETI@Home desarrollado por el Space SciencesLaboratory, de la Universidad de California en Berkeley (U.S.) que usa el tiempo deejecución libre en equipos de cómputo de voluntarios para procesar de maneradistribuida señales de radio buscando evidencia de inteligencia extraterrestre.

4. Investigación sobre defensa y armamento: simulación de armas nucleares, cálculo detrayectorias para el lanzamiento de misiles, entre otros.

5. Visualización de datos: en áreas como ciencias de los materiales, análisis de reservasde agua, simulación de choques de autos y nano-tecnología, se requiere visualizar yprocesar gran cantidad de información para determinar resultados de experimentos.

7.4 Programación de multiprocesadores

En esta sección se revisa la forma en que se realiza la programación paralela, se evalúanlas dos alternativas para sistemas MIMD, memoria compartida y memoria distribuida,por medio de un ejemplo se observa que hay secciones en los programas que no puedeparalelizarse, independientemente del modelo de memoria.

7.4.1 Sistemas con memoria compartida

Los sistemas con memoria compartida ofrecen al programador un espacio único dedirecciones que todos los procesadores comparten. Los procesadores tienen acceso acualquier localidad de memoria a través de cargas y almacenamientos. La comunicaciónentre procesadores se realiza por medio de variables compartidas. Cuando trabajan enparalelo, los procesadores deben coordinarse para operar sobre datos compartidos; de otramanera, un procesador podría intentar leer datos antes de que otro finalice su escritura.Un mecanismo para sincronizar el acceso a datos compartidos es un semáforo o cerradura,los procesadores deben esperar hasta que la cerradura esté abierta, esto puede sergenerado por otro procesador o como una combinación de todos los procesadores.

Hay dos tipos de multiprocesadores con memoria compartida, el primero corresponde alos multiprocesadores con acceso uniforme a memoria (UMA, uniform memory access) omultiptocesadores simétricos (SMP, symmetric multiprocessors), se caracterizan porque eltiempo de acceso a memoria principal es el mismo para todos los procesadores, sinimportar la palabra a leer. El segundo tipo son los multiprocesadores con acceso no

Page 5: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 5

uniforme a memoria (NUMA, nonuniform memory access), donde algunos accesos amemoria son más rápidos que otros dependiendo de cual procesador y la palabra. Tales.Las máquinas UMA son más fáciles de programar pero las máquinas NUMA se puedenescalar a grandes tamaños y por lo tanto tienen el potencial para alcanzar un rendimientomás alto.

En el siguiente ejemplo se revisa la solución a un problema en forma paralela, empleandouna barrera de sincronización para coordinar las operaciones.

Ejemplo: Programa paralelo (memoria compartida)

Realizar un programa paralelo que sume 100, 000 números en una computadora con 10procesadores, los procesadores tienen un número de identificación único Pn (entre 0 y 9)y tienen acceso al mismo espacio de memoria.

Respuesta:

El primer paso consiste en dividir el conjunto de números en subconjuntos del mismotamaño, los subconjuntos tendrán diferentes direcciones de inicio que usará cadaprocesador. Los procesadores inician el programa ejecutando un lazo que suma sussubconjuntos de números:

Sum[ Pn ] = 0;For ( i = 10000*Pn; i < 10000*(Pn + 1); i = i + 1 )

Sum[ Pn ] = Sum[Pn] + A[i]; /* Suman sus áreas asignadas */

Este lazo utiliza instrucciones de carga para llevar el subconjunto correcto de números alas cachés de cada procesador desde la memoria principal común, cada procesador debecontar con su propia versión de la variable de control de lazo i, de manera que se debeindicar que es una variable privada (private).

El siguiente paso consiste en sumar los resultados parciales, con una estrategia del tipodivide y vencerás, la mitad de los procesadores suma dos resultados, después un cuartosuma un par de nuevos resultados hasta obtener una única suma final.

NP = 10; // Inicialmente son 10 procesadoresDo { // NP debe ser privada

Synch(); // Espera que todos estén listosIf ( NP % 2 != 0 && Pn == 0 ) // Cuando es un número impar

Sum[0] = Sum[0] + Sum[NP – 1];

Page 6: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 6

NP = NP / 2; // División sobre los que sumanIf ( Pn < NP )

Sum[ Pn ] = Sum[ Pn ] + Sum[ Pn + NP ];} while ( NP != 1); // Resultado en Sum[0]

La función Synch( ) establece una barrera de sincronización, los procesadores debenesperar hasta que todos alcancen la barrera y entonces proceden. La barrera puedeimplementarse con software utilizando una cerradura o con un hardware especial quecombine una señal “listo” de cada procesador en una señal global que todos losprocesadores pueden probar.

7.4.2 Sistemas con memoria distribuida

Para el desarrollo de programas paralelos en sistemas con memoria distribuida, lacomunicación y sincronización se realiza mediante el paso de mensajes entreprocesadores. Puesto que los procesadores tienen memorias privadas, su sistemaoperativo debe incluir rutinas para enviar y recibir mensajes, la coordinación esconstruida con el intercambio de mensajes, el procesador emisor sabe cuando ha enviadoun mensaje y el procesador receptor detecta cuando ha llegado un mensaje.

Si es necesario, el receptor debe enviar un mensaje de confirmación al emisor indicandoque el mensaje ha llegado. Como un ejemplo extremo, los procesadores en diferentescomputadoras de escritorio se comunican pasando mensajes sobre una red de área local oen Internet.

Ejemplo: Programa paralelo (Memoria distribuida)

Nuevamente se realizará la suma de 100, 000 números, pero ahora en un sistema con 100procesadores y cada uno con su memoria privada.

Respuesta:

Dado que se tienen múltiples espacios de direcciones, se debe asegurar que los 100, 000números están distribuidos en la memoria de cada procesador. Cada procesador tendrá1000 números en su memoria privada. Esta distribución se puede realizar desde elmomento en que los datos se obtienen de un periférico o bien, un procesador obtiene elconjunto de datos y envía cada subconjunto a los otros procesadores. La primera opciónes más conveniente.

Page 7: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 7

El siguiente paso consiste en obtener la suma de cada subconjunto. Este paso essimplemente un lazo que cada unidad de ejecución sigue; lee una palabra de memorialocal y la suma a una variable local.

Sum= 0;For ( i = 0; i < 1000; i = i + 1 ) // Lazo local

Sum = Sum + A[i]; // Suma local

El último paso consiste en sumar las 100 sumas parciales, sólo que cada suma parcial estálocalizada en una diferente unidad de ejecución. Por lo tanto, mediante mensajes seenviarán las sumas parciales para acumular la suma final. Primero, la mitad de lasunidades de ejecución enviará su suma parcial a la otra mitad de unidades de ejecución,donde se sumarán las dos sumas parciales. Después, un cuarto de unidades de ejecución(la mitad de la mitad) enviará su nueva suma parcial al otro cuarto de la unidad deejecución (la restante mitad de la mitad) para la siguiente ronda de sumas. Nuevamente elnúmero de procesadores será dividido a la mitad, hasta que un sólo procesador contengala suma de todos los números.

Cada procesador tiene su identificador (de 0 a 99) y las funciones a emplear en lacomunicación son: send(d, p) envía el valor d al procesador p y receive() acepta elvalor destinado a este procesador. Se debe poner atención a la frontera entre emisores yreceptores cuando el número de procesadores es impar.

Limit = 100; // Procesadores emisores */Do {

Half = ( Half + 1) / 2; // División entre emisores y receptoresIf ( Pn >= Half && Pn < Limit ) // Emisores

Send( sum, Pn – Half);If ( Pn < (limit/2) ) // Receptores

Sum = Sum + receive();Limit = Half; // Nuevo límite

} while ( Half != 1); // Termina con la suma final

El total de procesadores se divide en emisores o receptores, si en una iteración el númerode procesadores es impar el procesador intermedio se queda inactivo. Se puede inferirque un procesador receptor esperará hasta que el dato esté disponible, entonces, el envíoy recepción se utilizan como primitivas para sincronización y comunicación.

Independientemente de la forma en que un sistema multiprocesador maneja su memoria,éstos se pueden clasificar considerando cómo es que físicamente se encuentran

Page 8: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 8

conectados los procesadores, en este sentido se tienen dos categorías, multiprocesadoresconectados por un bus y multiprocesadores conectados a través de una red.

En la tabla 1 se muestra el número de procesadores para los diferentes modelos decomunicación y conexión física, cabe señalar que se pueden hacer combinaciones entrelas diferentes categorías. Lo natural para un sistema basado en un bus es el manejo de unespacio de direcciones compartidas, sin embargo, no se descarta el paso de mensajes. Demanera similar, lo más conveniente para procesadores conectados a un red es el paso demensajes, no obstante, podría manejarse un espacio de direcciones compartidas aunque setuviera un acceso no uniforme a memoria.

Tabla 1. Opciones en estilo de comunicación y comunicación física para multiprocesadores.Categoría Opciones Número de Procesadores

Modelo decomunicación

Direccionescompartidas

UMA 2 - 64NUMA 8 - 256

Paso de Mensajes 8 - 256

Conexión físicaBus 2 - 36Red 8 - 256

7.5 Multiprocesadores conectados por un solo bus

Para sistemas multiprocesadores conectados por un bus se tienen dos posibilidades, unmicroprocesador con varios núcleos en un sólo chip o múltiples microprocesadores (cadauno en un chip) dentro de una computadora. En ambos casos la conexión mediante un buscomún es posible porque:

Cada procesador tiene su memoria caché y con ello se reduce el tráfico del bus. Se tienen los mecanismos para mantener la consistencia entre la caché y la memoria

principal común, así como caché y memoria deben estar consistentes con I/O, parasimplificar la programación.

La figura 2 muestra un multiprocesador genérico de un solo bus y en la tabla 2 se listanalgunas características de computadoras comerciales de un solo bus. El número deprocesadores generalmente está entre 2 y 32.

El tráfico por procesador y el ancho de banda del bus determinan el número útil deprocesadores en estos sistemas. Las cachés replican información para reducir la latenciaen el acceso a los datos y aminorar el tráfico de memoria sobre el bus.

Page 9: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 9

Figura 2.Multiprocesadores con un solo bus.

Tabla 2. Computadoras conectadas por un solo bus disponibles en el mercado en 1997.

Con procesamiento paralelo los procesadores trabajan con datos compartidos, estoocasiona que en diferentes cachés se tengan copias repetidas del mismo bloque deinformación. Se genera un problema de inconsistencia cuando un procesador modifica unbloque de su caché porque los otros procesadores no tienen la información más reciente(y tampoco está en la memoria principal).

Para detectar y resolver estas inconsistencias se emplean protocolos que involucranhardware y software, uno de estos protocolos es conocido como espionaje (snooping) yconsiste en agregar un control para espiar (snoop) al bus y determinar si se ha hecho unacopia de un bloque compartido. En la figura 3 se observa el resultado de agregar estecomponente de hardware.

Page 10: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 10

Figura 3.Multiprocesadores con un solo bus usando espionaje para la coherencia de caché.

Para mantener la coherencia se consideran las operaciones básicas: lectura y escritura. Lalectura no es un problema, se pueden tener múltiples copias de datos en diferentes cachés.En cuanto a la escritura, sólo un procesador debe tener acceso para modificar un bloque,sin embargo, los procesadores deben tener la copia mas reciente de un objeto, de maneraque todos los procesadores deben obtener nuevos valores después de una escritura. Paraello, el protocolo de espionaje debe localizar las cachés que comparten un objeto escrito.Como consecuencia de una escritura a datos compartidos el control de la caché puederealizar una de dos acciones: invalidar el bloque local o actualizar el bloque con losvalores más recientes. Los bits de estado en un bloque deben ser ampliados para incluir lainformación de interés para el protocolo.

Las acciones que puede realizar el protocolo, ante una escritura de datos compartidos,son:

Invalidación de Escritura (write-invalidate): La escritura de un procesador obliga aque las copias en otras caches se marquen como inválidas antes de que cambien sucopia local; se tiene la libertad de actualizar los datos locales hasta que seanrequeridos. Con la escritura se emite una señal de invalidación sobre el bus y todaslas cachés observan para ver si tienen una copia del bloque; si es así, se marca comoinválido al bloque que contiene la palabra modificada

Actualización de Escritura (write-update): Ante una escritura el procesador emite elnuevo dato sobre el bus y todas las copias son actualizadas con el nuevo valor. Esteesquema, también llamado emisión de escritura (write-broadcast), continuamenteemite escrituras a datos compartidos, mientras que el método de Invalidación deEscritura “borra” todas las otras copias de manera que hay solamente una copiaactualizada.

Page 11: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 11

Con el protocolo de Actualización de Escritura se utiliza el bus de manera continua, porlo que se requiere de un ancho de banda alto, sin embargo, se reduce la latencia para lalectura de datos compartidos, los efectos contrarios ocurren en el protocolo deInvalidación de Escritura. Comercialmente los multiprocesadores conectados por un bususan el protocolo de Invalidación de Escritura porque al reducir el tráfico del bus esposible conectar más procesadores en un único bus.

En la figura 4 se muestra un protocolo de invalidación de escritura de 3 estados, losestados posibles para cada bloque son:

I (Inválido) : El bloque no tiene información de interés. S (shared - compartido) : El bloque está en la caché y no ha sido modificado. Otras

cachés pueden tener una copia de este bloque. M (Modificado) : El bloque fue modificado por la caché y por lo tanto sólo hay una

copia válida que tampoco es consistente con la memoria principal.

Figura 4. Protocolo de invalidación de escritura.

Page 12: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 12

La transición entre los estados puede deberse a acciones del procesador con efecto en elbus o acciones en el bus debidas a otros procesadores y detectadas por el controlador deespionaje. Las acciones son:

PrRd: El procesador solicita la lectura de un bloque. PrWr: El procesador solicita la escritura de un bloque. BusRd: En el bus se detecta que este bloque será leído por otro procesador. BusRdX: En el bus se detecta que este bloque será escrito por otro procesador. Replace: Este bloque será remplazado. Flush: El bloque es copiado de caché a memoria principal.

Hay variaciones de caché que son más complicadas que este modelo simple. Por ejemplo,los procesadores Pentium Pro y Power PC utilizan un protocolo llamado MESI, que es unacrónimo de cuatro estados: Modificado, Exclusivo, Compartido e Inválido (Modified,Exclusive, Shared, Invalid). El estado S de la figura 4 es separado en dos estados (S y E),S significa que hay múltiples copias de este bloque (Compartido) y E que sólo hay una(Exclusivo). Con este estado extra si la escritura de un dato se realiza en un bloqueExclusivo no se requiere el envío de señales de invalidación.

Acceso a datos compartidos

Los procesadores que están trabajando en una tarea común se deben coordinar alcompartir datos para escritura. Típicamente un programador utiliza variables comocerraduras (también conocidas como semáforos) para coordinar o sincronizar losprocesos. La arquitectura debe proporcionar un mecanismo para decidir cual procesadorabre la cerradura y no permitir el acceso a los otros procesadores. En sistemas con unúnico bus este mecanismo no es complicado porque el bus es la única ruta a la memoria ya I/O.

En la figura 5 se muestra un procedimiento típico de acceso a datos compartidos, todoslos procesadores tienen una copia de una variable que funciona como cerradura para losdatos compartidos, la lectura de 0 significa abierto y 1 significa cerrado. Losprocesadores leen la cerradura para probar su estado, en caso de que esté cerrada debenesperar hasta que sea posible el acceso.

Con la cerradura en 0 los procesadores compiten para ver quien toma el acceso, para ellorealizan el negado lógico de la cerradura esperando leer un 1, está es una operaciónatómica, es decir, sin perder el acceso al bus se realiza la lectura, negado y escritura,después del negado sólo escribe en la cerradura el procesador que obtiene 1 y es quientiene el acceso a los datos, los demás obtendrán un 0 porque estarán negando el 1 escritopor el ganador.

Page 13: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 13

Figura 5. Uso de una cerradura para acceso a datos compartidos.

La cantidad de tráfico en el bus se reduce porque los procesadores tienen una copia localde la cerradura y esa copia es la que cada procesador evalúa, cuando un procesadormodifica la cerradura la copia en la caché de cada procesador se invalida y el nuevo valordebe quedar disponible en el bus para que los procesadores escriban el nuevo valor de lacerradura.

Page 14: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 14

En la tabla 3 se muestra la coordinación entre 3 procesadores para el acceso a datoscompartidos. Se muestra el valor de la cerradura (variable Lock) en la memoria principaly las copias locales en las memorias caché de cada procesador. La variable se invalidacuando un procesador la modifica, el estado se actualiza en el paso inmediato.

Este esquema tiene la dificultad de escalar a muchos procesadores debido al tráfico quese genera cuando la cerradura es abierta.

Tabla 3. Pasos para la coordinación y acceso a datos compartidos entre 3 procesadores.Paso Procesador 0 Procesador 1 Procesador 2 Actividad del bus Lock (MP)

1Tiene la llaveLock = 1

Espera mientrasLock = 1

Espera mientrasLock = 1

Ninguna 1

2

Termina el accesoa datos

compartidos,escribe Lock = 0

P0 invalida elbloque quecontiene lacerradura

1

3Emite la escriturade Lock = 1

0

4 Falla en caché Falla en caché El bus sirve a P2 0

5Espera que el busesté disponible

Lee Lock = 0Fallo satisfecho

para P20

6Conmuta: Lock = 1y escribe Lock = 1

El bus sirve a P1 0

7 Lee Lock = 0Espera que el busesté disponible

Fallo satisfechopara P1

0

8Conmuta: Lock = 1y escribe Lock = 1

Emite la escriturade Lock = 1

P2 invalida elbloque quecontiene lacerradura

1

9 Falla en cachéTiene la llaveAcceso a datoscompartidos

El bus sirve a P1 1

10 Lee Lock = 1Fallo satisfecho

para P11

11Espera mientrasLock = 1

Ninguna 1

7.6 Multiprocesadores conectados por una Red

Los diseños de un solo bus son atractivos, pero limitados por que tres característicasdeseables en el bus son incompatibles: Alto ancho de banda, baja latencia y longitudgrande. Hay también un límite para el ancho de banda por que se tiene un solo módulo dememoria anexo al bus. Entonces, un bus único impone restricciones prácticas sobre el

Page 15: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 15

número de procesadores que pueden ser conectados a él. Por ello, el número más grandede procesadores conectados a un bus en computadoras comerciales es de 36 y estenúmero parece estar disminuyendo sobre el tiempo.

Si la meta es conectar muchos procesadores, entonces los diseñadores de computadorasnecesitan usar más que un solo bus. En la figura 6 se muestra como puede hacerse estaorganización, a cada procesador se le ha anexado su propia memoria y la comunicaciónentre procesadores ahora se realiza por una red, en lugar de un bus. En la tabla 4 se listandiferentes máquinas conectadas a través de redes.

Figura 6.Multiprocesadores conectados a través de una red.

Tabla 4. Computadoras conectadas por una red disponibles en el mercado en 1997.

Page 16: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 16

En máquinas sin un solo bus global de direcciones la comunicación es explícita; elprogramador o el compilador deben enviar mensajes para mandar datos a otro nodo ydeben recibir mensajes para aceptar datos de otro nodo.

Procesadores Paralelos de Gran Escala

La procesadores paralelos de gran escala usan memoria distribuida; en otro caso resultamuy difícil o caro construir máquinas que se puedan escalar a cualquier número deprocesadores con cualquier cantidad de módulos de memoria.

Un aspecto importante en sistemas con memoria distribuida es la comunicación. Lasolución mas simple en hardware es el paso de mensajes con envíos y recepciones enlugar de una comunicación implícita como parte de cargas y almacenamientos. El paso demensajes también tiene la ventaja de que hace más simple al programador laoptimización de la comunicación: Es más simple traslapar código de cómputo concomunicación usando envío y recepción explícita en lugar que cargas y almacenamientosimplícitos.

El uso de cargas y almacenamientos normalmente tiene una comunicación mucho máslenta porque debe agregar una capa de software, apoyada por el sistema operativo, queproporcione un espacio de direcciones único de manera que la comunicación sea posiblepor este medio. Para ello se maneja un esquema de traducción similar al de la memoriavirtual, pero ahora las direcciones deben ser traducidas para determinar si hacenreferencia a datos en la memoria local, a un datos en la memoria de otro procesador o endisco.

Sin importar cómo se realice la comunicación, las cachés son importantes para elrendimiento, de manera que se desearía que los datos compartidos estuvieran en la cachedel procesador propietario de los datos y también en los procesadores que solicitan losdatos. Esto genera nuevamente el problema de coherencia de caché, dado que haymúltiples copias de datos con la misma dirección en diferentes procesadores.

Es claro que el protocolo de espionaje para un solo bus no funciona por que no hay unbus único sobre el cual todas las referencias a memoria son transmitidas. La alternativaen sistemas con memoria distribuida consiste en el uso de directorios. El directorio es unun espacio adicional para cada procesador que mantiene el estado de cada bloque de lacaché, incluyendo información sobre cual caché tiene copias de los bloques, permisos deacceso y si el bloque está sucio. Con los directorios los sistemas son escalables porque sucontenido puede ser distribuido de manera que las peticiones de un procesador pueden ira diferentes memorias.

Page 17: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 17

Los directorios mantienen la característica que los estados compartidos de un bloqueestán siempre en localidades conocidas, haciendo factible un sistema con procesadoresparalelos a gran escala. Ahora, en lugar de observar un bus para ver si hay alguna peticiónque requiera que un bloque de una caché local sea actualizado o invalidado, elcontrolador del directorio envía comandos explícitos a cada procesador que tiene unacopia de los datos. Tales mensajes pueden ser enviados por medio de la red.

En la figura 7 se muestra el uso de directorios para mantener la coherencia de datos enprocesadores conectados por una red, el rectángulo sombreado representa a los datosreplicados. En (a) los datos originales están en la memoria de un solo procesador y lascopias son replicadas en las cachés, el directorio especifica la ubicación de la informaciónen memoria principal. En (b) los datos también son replicados en la memoria principal decada procesador, además de ubicarse en sus memorias cachés. En ambos casos, si losdatos compartidos son modificados en una memoria caché, con el apoyo del directorio seconoce la ubicación de las copias para enviar mensajes de invalidación para una posterioractualización.

Figura 7. Uso de directorios en multiprocesadores conectados a través de una red

En la figura 8 se compara el costo y rendimiento de sistemas multiprocesadoresconectados por un bus con sistemas multiprocesadores conectados en red. La red tiene uncosto inicial más pequeño pero después crece más rápidamente que las máquinasconectadas con un solo bus. El rendimiento para ambas máquinas crece linealmente hastaque el bus alcanza su límite, y entonces el rendimiento se mantiene no importandocuantos procesadores sean utilizados.

Cuando estos dos efectos se combinan, se observa que la conexión en red tiene unrendimiento por unidad de costo constante, mientras que la máquina conectada por un bustiene una meseta dominante. La meseta sugiere que los consumidores necesitan ser más

Page 18: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 18

selectivos con multiprocesadores conectados por un bus que los que están conectados poruna red, y los diseñadores de máquinas con bus necesitan ubicar la meseta en un puntoque se ajuste con las necesidades de la mayoría de consumidores.

Figura 8. Comparación del costo, rendimiento y costo/rendimiento de multiprocesadores conectados porun bus con multiprocesadores conectados en red.

Page 19: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 19

7.7 Topologías de red

Una forma simple de conectar nodos de procesador-memoria consiste en contar con unaliga de comunicación directa entre cada nodo, esto conformaría una red completamenteconectada con un alto costo/rendimiento que es el extremo opuesto a un bus. Entre estosdos extremos están un conjunto de topologías de red que constituyen un amplio rango deposibilidades en costo/rendimiento.

El costo de la red incluye el número de switches, el número de enlaces (links) sobre unswitch para conectarse a la red, el número de bits por enlace y la longitud de lasconexiones. En un sistema que escala entre decenas y centenas de procesadores, algunosenlaces pueden ser rectángulos metálicos dentro de un chip que tienen unos cuantosmilímetros de longitud y otros pueden ser cables que deben alcanzar varios metros desdeun gabinete a otro. El rendimiento de la red también es multifacético, debe considerarsela latencia para enviar y recibir mensajes, la productividad en términos del númeromáximo de mensajes que pueden ser transmitidos en un periodo de tiempo dado y lamodalidad o protocolo de comunicación. Otro compromiso de la red es la tolerancia antefallos, dado que muchos sistemas grandes pueden requerir operar en la presencia decomponentes caídos.

Las redes normalmente se dibujan como grafos, con cada arco del grafo representando unenlace de comunicación en la red. El nodo procesador-memoria es mostrado como uncuadro negro y el switch es mostrado como un circulo en color. Los enlaces sonbidireccionales; esto es, la información puede fluir en cualquier dirección. Todas las redesconsisten de switches cuyos links van a los nodos procesador- memoria o a otrosswitches.

La primera mejora sobre un bus es una red con topología de anillo (Figura 9), queconecta una secuencia de nodos conjuntamente. Dado que algunos nodos no estánconectados directamente, algunos mensajes tendrán que brincar a lo largo de nodosintermedios hasta llegar a su destino. A diferencia de un bus, un anillo es capaz derealizar transferencias simultáneas.

Figura 9. Topología de anillo

Page 20: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 20

Para comparar el rendimiento de las diferentes topologías hay dos métricas populares:

1. El ancho de banda de la red total, es el ancho de banda de un enlace multiplicado porel número de enlaces.

2. El ancho de banda bisección, se calcula dividiendo el sistema en dos partes, cada unacon la mitad de nodos. Entonces se suma el ancho de banda los enlaces que cruzanesa línea imaginaría.

Para una red de anillo con P procesadores, el ancho de banda de la red total es P veces elancho de banda de un enlace y el ancho de banda bisección es dos veces el ancho debanda de un enlace.

Dado que algunas topologías no son simétricas, la división del sistema para obtener elancho de banda bisección se realiza buscando la peor situación, esto porque losprogramas paralelos están limitados por el menor número de enlaces en el canal decomunicación.

En una red completamente conectada con P procesadores el ancho de banda de la redtotal es P x ( P – 1 ) / 2, y el ancho de banda bisección es (P/2)2.

En la figura 10 se ilustran dos topologías populares que han sido empleadas enprocesadores paralelos comerciales. Las máquinas reales frecuentemente agregan enlacesextras a estas topologías para mejorar el rendimiento y la fiabilidad.

(a) (b)Figura 10. Topologías populares: (a) Rejilla en 2D o malla de 16 nodos y (b) Cubo de 8 nodos.

Una alternativa para minimizar el costo y mantener el rendimiento consiste en usar sóloun switch en algunos nodos en lugar de un procesador-memoria-switch. Los switches sonmas pequeños de manera que pueden ser empaquetados mas densamente con lo tambiénque se reduce la distancia. Tales redes frecuentemente son llamadas redes multietapaspara reflejar los múltiples pasos que un mensaje puede viajar.

Page 21: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 21

Los tipos de redes multietapas son tan numerosos como las redes de etapa única; en lafigura 11 se ilustran dos organizaciones multietapas populares. Una red completamenteconectada o de cruce (fig. 11-a) permite a cualquier nodo comunicarse con cualquier otronodo en un paso a través de la red. Una red Omega (fig. 11-b) usa menos hardware queuna red de cruce (2n log2(n) vs. n2 switches), pero pueden ocurrir disputas entre losmensajes, dependiendo de la modalidad de comunicación. Por ejemplo, la red Omega nopuede enviar un mensaje de P0 a P6 y al mismo tiempo enviar un mensaje de P1 a P7.

(a) (b)

(c)Figura 11. Topologías de red multietapas populares de ocho nodos: (a) red de cruce, (b) Red Omega.

(c) Caja con los switches en la red Omega.

Este simple análisis de redes ignora importantes consideraciones prácticas en laconstrucción de una red. La distancia de cada enlace afecta el costo de comunicación enuna alta frecuencia de reloj. La distancia mas larga es de mayor costo, en distancias cortases mas fácil asignar mas alambres a un enlace, también la potencia que manejan muchosalambres desde un chip es menor si los alambres son cortos. Los alambres cortos son másbaratos que los alambres largos. Una limitación práctica final es que los dibujos en tresdimensiones deben ser mapeados en chips y tarjetas que son esencialmente en dosdimensiones. Las líneas inferiores que en las topologías aparecen elegantes cuando sonesbozadas en papel, puede ser difíciles de tratar cuando se construyen con chips, cables,tarjetas y cajas.

Page 22: ArquitecturadeComputadoras 7.Multiprocesadoresfsantiag/ArqElectronica/7a_Unidad_2020A.pdf · 2020-01-13 · ArquitecturadeComputadoras 7.Multiprocesadores SantiagoE.Felipe/UTM-2020

Arquitectura de Computadoras 7. Multiprocesadores

Santiago E. Felipe/UTM-2020 22

Ejercicios:

1. Consideremos las siguientes porciones de dos diferentes programas ejecutándose almismo tiempo en un SMP. Supongamos que antes de este código las variables x y ycontenían 0.

Procesador 1: . . . ; x = x + 1; y = x + y; . . .Procesador 2: . . . ; y = x + 1; . . .

¿Cuáles son los posibles valores resultantes para x y y, suponiendo que el código esimplementado usando una arquitectura de carga-almacenamiento? Para cada posibleresultado, explique como x y y obtuvieron esos valores. (Sugerencia: Es posibleexaminar al nivel del lenguaje ensamblador).

2. En el ejemplo del programa paralelo con paso de mensajes, suponiendo que fueron10 los procesadores que obtuvieron los 100, 000 números de módulos I/O, desarrolleel código por medio del cual se haga una distribución uniforme a los 100procesadores. Suponer que los procesadores P0 a P9 son los que tienen los datos, porlo que cada uno tendría 10 000 números.

3. Se tiene una máquina con 4 procesadores y se quiere contar el número de 1’s en unamatriz binaria de n x n (sólo contiene 0’s y 1’s). Ignorando como se obtuvo la matrizde datos, con base en los ejemplos de la sección 7.4, esboce el programa queresolvería este problema considerando:

a) Que se tiene un espacio de memoria compartida.b) Que la memoria está distribuida y la comunicación se realiza con paso de

mensajes.

Nota: Por esbozar considere escribir el código que resuelve la parte principal delproblema, sin entrar a detalles como la declaración de variables. Indique todas lassuposiciones que se realicen.

4. Otra posible topología de red es una rejilla 3D de 4 nodos por lado, para un total de64 nodos (expansión de la figura 10), dibuje la rejilla 3D e indique cuál es el anchode banda de la red total y el ancho de banda bisección.