Você está na página 1de 96

INSTITUTO TECNOLGICO DE

TAPACHULA
CARRERA

INGENIERA EN SISTEMAS COMPUTACIONALES


ASIGNATURA

ARQUITECTURA DE COMPUTADORAS
DOCENTE

ING. ROSEL MUOZ LPEZ


TRABAJO

PROCESAMIENTO PARALELO
ESTUDIANTES

DE LA PARRA AGUIRRE RICARDO ENRIQUE


LABRAS CASTILLO PHIL
RUZ CRUZ JESS

UNIDAD
4

TAPACHULA, CHIS.
07 DE DICIEMBRE DE 2015
1

CONTENIDO
Unidad 4
4. Procesamiento paralelo
4.1 Aspectos bsicos de la computacin paralela
4.2 Tipos de computacin paralela
4.2.1 Taxonoma de las arquitecturas paralelas
4.2.2 Arquitectura de los computadores secuenciales
4.2.2.1 Taxonoma de Flynn
4.2.2.2 Organizacin del espacio de direcciones
de memoria
4.3 Sistemas de memoria compartida: Multiprocesadores
4.3.1 Redes de interconexin dinmicas o indirectas
4.3.1.1 Redes de medio compartido
4.3.1.2 Redes conmutadas
4.3.2 Coherencia de cache
4.4 Sistema de memoria distribuida Multicomputadores: Clusters
4.4.1 Redes de interconexin estticas
4.4.2 Clusters
4.4.3 Programacin de Clusters
4.4.4 Consideraciones sobre el rendimiento de los Clusters
4.4.5 Casos de Estudios

INDICE
Pagina
INTRODUCCION
4. Procesamiento paralelo

4.1 Aspectos bsicos de la computacin paralela

10

4.2 Tipos de computacin paralela

35

4.2.1 Taxonoma de las arquitecturas paralelas

38

4.2.2 Arquitectura de los computadores secuenciales

39

4.2.2.1 Taxonoma de Flynn

39

4.2.2.2 Organizacin del espacio de direcciones de memoria

43

4.3 Sistemas de memoria compartida: Multiprocesadores

43

4.3.1 Redes de interconexin dinmicas o indirectas

54

4.3.1.1 Redes de medio compartido

64

4.3.1.2 Redes conmutadas

67

4.3.2 Coherencia de cache

70

4.4 Sistema de memoria distribuida Multicomputadores: Clusters

83

4.4.1 Redes de interconexin estticas

83

4.4.2 Clusters

87

4.4.3 Programacin de Clusters

91

4.4.4 Consideraciones sobre el rendimiento de los Clusters

92

4.4.5 Casos de Estudios

92

INTRODUCCION
A lo largo de la historia de la computacin, se ha marcado una clara e importante
tendencia en el mundo del procesamiento debido a la importancia que este
representa, el modo y la eficiencia de este es cada vez ms demandado conforme
avanza, a cada innovacin que este ha presentado, inmediatamente deja de ser
suficiente y el uso que se le da este a menudo le es inservible rpidamente, as
mismo se han desarrollado diferentes formas de procesamiento y una de ellas es el
procesamiento en paralelo que es lo que se estudiara en esta unidad, el cual ofrece
una solucin muy eficiente y satisfactoria en especial para aquellos usuarios y/o
procesos que por naturaleza requieren a a cada vez de ms estudios, velocidad,
cantidad de procesos y gran cantidad de precisin como en el caso de la medicina
que en la actualidad su gran avance se lo debe a la tecnologa computacional.
Estos procesos son en gran parte responsabilidad de la programacin con que son
asumidos en la solucin que se les d, y no solamente lograr llegar a un resultado
sino ms bien de qu forma se llega a ello, que tantos factores fueron reducidos,
as como el tiempo, cantidad de personas fsicas, esfuerzos, etc. Y es as como el
paralelismo logra abrir un camino hacia el avance tan deseado por tantos usuarios
que exigen de un trabajo concurrente y complejo en poco tiempo.

4. Procesamiento Paralelo.
El procesamiento paralelo es un tipo de procesamiento de la informacin, que
permite que se ejecuten varios procesos concurrentemente. El procesamiento
paralelo puede ser de diferentes tipos: i) Un tipo es ejecutar procesos
independientes simultneamente, los cuales son controlados por el sistema
operativo (usando tiempo compartido, multiprogramacin y multiprocesamiento). ii)
Otro tipo es descomponer los programas en tareas (controladas por el sistema
operativo, los compiladores, los lenguajes de programacin, etc.), algunas de las
cuales pueden ser ejecutadas en paralelo. iii) Finalmente, el ltimo tipo se basa en
usar tcnicas de encauzamiento para introducir paralelismo a nivel de instrucciones,
lo que implica dividirlas en pasos sucesivos que pueden ser ejecutados en paralelo,
cada uno procesando datos diferentes.
Es difcil determinar qu resulta ms natural, s el procesamiento paralelo o el
secuencial. Los enfoques paralelos resultan una necesidad, dada la constante
afirmacin de que la velocidad mxima en procesamiento secuencial se alcanzar
prontamente, excepto que aparezcan avances en otras reas que definan nuevos
mecanismos de procesamiento, los cuales pueden venir de nuevos descubrimientos
en reas tales como computacin AND, computacin cuntica, etc. En los ltimos
aos, el uso extensivo del paralelismo ha estado ligada a varios hechos:
- La necesidad de mayor potencia de clculo: independientemente de que la
potencia de los procesadores aumente, siempre habr un lmite que depender de
la tecnologa del momento. Para aumentar la potencia de clculo, adems de los
progresos tecnolgicos que permitan aumentar la velocidad de clculo, se requieren
nuevos paradigmas basados en clculo paralelo. Es decir, una manera de aumentar
la velocidad de clculo es usar mltiples procesadores juntos. As, un problema es
dividido en partes, cada una de las cuales es ejecutada en paralelo en diferentes
procesadores. La programacin para esta forma de clculo es conocida como
programacin paralela, y las plataformas computacionales donde pueden ser
ejecutadas estas aplicaciones son los sistemas paralelos y distribuidos. La idea que
se usa es que al tener n computadores se debera tener n veces ms poder de
clculo, lo que conllevara a que el problema pudiera resolverse en 1/n veces del
tiempo requerido por el secuencial. Por supuesto, esto bajo condiciones ideales que
raramente se consiguen en la prctica. Sin embargo, mejoras sustanciales pueden
ser alcanzadas dependiendo del problema y la cantidad de paralelismo presente en
el mismo.
- Una mejor relacin costo/rendimiento: en el orden econmico, es muy importante
tener mquinas con excelente relacin costo/rendimiento. Normalmente, el mayor
poder de clculo genera una explosin de costos que a veces lo hacen prohibitivo.
Una manera para lograr mayor poder de clculo sin costos excesivos es hacer
cooperar muchos elementos de clculo de bajo poder, y, por consiguiente, de bajos
costos.

- Potencia expresiva de los modelos de procesamiento paralelo: muchos problemas


son ms fciles de modelar usando paradigmas paralelos, ya sea por la estructura
que se usa para su resolucin o porque el problema es intrnsecamente paralelo.
Es decir, si desde el principio se puede pensar en los mecanismos
paralelos/concurrentes para resolver un problema, eso puede facilitar la
implantacin del modelo computacional. Esto podra permitir obtener mejores
soluciones para los problemas a resolver, en tiempos razonables de ejecucin. As,
este enfoque permite el surgimiento de modelos de clculos diferentes, a los
modelos secuenciales. En pocas palabras, adems del procesamiento de
paralelismo para mejorar los tiempos de ejecucin se agrega la ganancia
conceptual, al poder resolver los problemas con nuevos mtodos de resolucin
hasta ahora imposibles de ejecutarse en mquinas secuenciales.
As, la computacin paralela est jugando un papel fundamental en el avance de
todas las ciencias, abriendo las puertas para explotar, ms all de las fronteras ya
conocidas, impresionantes poderes de clculo que permiten modelos ms realistas
(pasar de la segunda a la tercera dimensin, etc.). A pesar de que del rea de
computacin paralela se habla mucho, en realidad es poco lo que se conoce. Quizs
el mayor problema en computacin paralela y distribuida es que no son ideas fciles
para entender e implementar. Existen diferentes enfoques para aplicar paralelismo.
Incluso, para ciertas aplicaciones algunos enfoques pueden ser contraproducentes.
Adems, existen varios tipos de arquitecturas, modelos de programacin, lenguajes
y compiladores, compitiendo por conquistar el mercado. Por otro lado, actualmente
los precios baratos de los PC, con su incremento en poder de clculo, los hacen un
formidable competidor contra los emergentes computadores paralelos. Tambin las
estaciones de trabajo, las cuales ofrecen amigables y poderosas interfaces, son
otras fuertes competidoras.
Hay muchas reas de aplicacin donde el poder de clculo de una computadora
simple es insuficiente para obtener los resultados deseados. Las computadoras
paralelas y distribuidas pueden producir resultados ms rpidos. Por ejemplo, en
algunas reas de clculo cientfico, el tiempo estimado de computacin para obtener
resultados interesantes usando un computador simple, podra ser tan largo que
excedera el tiempo esperado en que el mismo puede fallar. O peor an, en el rea
industrial una simulacin que tome algunas semanas para alcanzar resultados, es
usualmente inaceptable en ambientes de diseo, en los cuales los tiempos con los
que cuenta el diseador son cortos.
Adems, hay ciertos problemas que tienen fechas lmites especficas para
calcularse (por ejemplo, si el programa de prediccin del tiempo para el da de
maana dura dos das perdera el sentido ejecutarlo). Un punto inicial de arranque
sera conocer qu reas de aplicacin podran beneficiarse al usar paralelismo.
Indudablemente, el primer grupo seran aquellas reas donde el paralelismo es
aparente, aunque no se pueda explotar en mquinas secuenciales. A continuacin,
se mencionan algunas reas:

Procesamiento de imgenes: Con este trmino se pueden abarcar las


transformaciones de imgenes, anlisis de imgenes, reconocimiento de patrones,
visin por computadora, etc. Existen dos aspectos bsicos que hacen apropiado
esta rea para procesamiento paralelo: el primero tiene que ver con la gran cantidad
de datos que estn envueltos en el procesamiento. El segundo tiene que ver con la
velocidad requerida para procesar esas imgenes. A su vez, este segundo aspecto
puede ser caracterizado por dos razones. Primero, muchas aplicaciones de
procesamiento de imgenes ocurren en ambientes donde la tasa de procesamiento
requerida tiene fuertes restricciones a nivel de tiempo. En otras palabras, la
velocidad de respuesta del sistema es crucial para el xito de la tarea que se est
llevando a cabo. La segunda gran razn es que el procesamiento de imgenes usa
estructuras de datos (y operaciones) intrnsecamente paralelas.
Modelado matemtico: La computacin juega un papel fundamental en las ciencias
y las ingenieras, permitiendo a los cientficos e ingenieros construir y probar
modelos con nuevas teoras para describir fenmenos naturales o para resolver
problemas de la vida real. Estos modelos matemticos altamente complejos son
gobernados, por ejemplo, por ecuaciones diferenciales parciales o elementos finitos
cuyas soluciones pueden requerir grandes poderes de clculo. El modelado
matemtico consiste en describir entidades (estructuras complejas, procesos
qumicos o biolgicos, etc.) en trminos de ecuaciones que comprenden variables
y constantes. Por ejemplo, para el diseo de la suspensin de un carro su estructura
puede ser aproximada por series de elementos planos (por ejemplo, rectngulos,
tringulos), cuyas propiedades mecnicas pueden ser descritas por ecuaciones que
tienen constantes (tal como la tensin del acero) y variables (tales como la presin
aplicada en ciertos puntos). Naturalmente, las variables pueden depender en un
punto dado de sus vecinas (los cuales a su vez son dependientes de sus vecinas),
tal que las ecuaciones que definen toda la estructura estn enlazadas. La idea es
aplicar sobre el modelo fuerzas externas, en forma tal que se pueda medir, por
ejemplo, su punto de ruptura. Es claro que, para la estructura del carro, la exactitud
de los resultados depende de la fineza de los elementos modelados. Esto implica,
que para modelos complejos probablemente muchos miles de elementos se
requieren usar. Otras aplicaciones son en reas tales como estudio de las
interacciones de partculas en materiales cristalinos o amorfos, clculo de la
estabilidad de partculas, fsica de plasmas, mecnica cuntica, reacciones
qumicas, dinmica molecular, etc.
Computacin inteligente: Existen muchos aspectos intrnsecamente paralelos en
esta rea. Quiz el ms significativo es que la computacin inteligente trata de imitar
el comportamiento inteligente de los humanos, lo que hace pensar que para emular
la estructura intrnsecamente paralela del cerebro se requiere este tipo de
procesamiento. En el rea de las redes neuronales artificiales, el procesamiento
consiste en la interaccin de un grupo de neuronas cuyos elementos van
describiendo la dinmica del sistema. Aqu parece que las neuronas pueden
aprovechar un procesamiento paralelo para hacer ms eficiente su tiempo de
ejecucin. A nivel de la computacin evolutiva existen muchos aspectos
intrnsecamente paralelos, por ejemplo, el procesamiento paralelo de cada individuo
7

que conforma la poblacin bajo manipulacin. As, el procesamiento de los


individuos (a nivel de su reproduccin o evaluacin) es intrnsecamente paralelo.
Manipulacin de base de datos: La idea de base es reducir el tiempo de ejecucin
al asignar segmentos de las bases de datos a elementos de procesamiento paralelo.
Esto pasa por definir las estructuras de datos adecuadas y las operaciones
transaccionales a realizar.
Prediccin del tiempo: sta es un buen ejemplo de una aplicacin que requiere
mucho poder de clculo. Esta aplicacin podra haber sido incluida en el grupo de
las aplicaciones con modelos matemticos complejos, pero sta tiene un segundo
elemento clave, la rapidez con que se deben realizar sus clculos. La atmsfera es
modelada dividindola en regiones o celdas de tres dimensiones, usando
ecuaciones matemticas complejas para capturar varios efectos. Bsicamente, las
condiciones en cada celda (temperatura, presin, humedad, velocidad y direccin
del viento, etc.) son calculadas en intervalos de tiempo, usando las condiciones
existentes en intervalos de tiempo previos. Los clculos en cada celda son repetidos
para modelar el paso del tiempo. La caracterstica clave que hace eficiente esta
aplicacin es el nmero de celdas que use. Supongamos que la atmsfera terrestre
la quisiramos dividir en celdas de 1.6 Km*1.6Km*1.6Km, as cada 16 Km. requieren
10 celdas. Para cubrir toda la atmsfera terrestre se requerira aproximadamente de
5x108 celdas. Supongamos que cada clculo en un cubo requiere 200 operaciones
de punto flotante. Solamente para un intervalo de tiempo se requerira 1011
operaciones de punto flotante. Si quisiramos predecir el tiempo de los prximos 10
das con intervalos de tiempo de 10 minutos, se necesitaran 103 pasos y 1014
operaciones de punto flotante. Un computador a 100 Mflop (108 operaciones de
punto flotante/segundo) tomara 106 segundos para ejecutar el clculo. Para
ejecutarlo en tiempos cortos se requerira de ms de 1 teraflops (1x1012
operaciones de punto flotante por segundo).
Otras reas que podran aprovecharse de un procesamiento paralelo son las
siguientes: biologa, ciencias aeroespaciales, sismologa, diseo de VLSI, robtica,
previsin (modelado socioeconmico, etc.), exploracin (oceanografa, astrofsica,
geologa, etc.), mquinas inteligentes (planificacin, sistemas expertos, mecanismo
de aprendizaje, etc.), medicina (tomografa, sntesis de protenas, etc.),
automatizacin industrial, aplicaciones militares y multimedia, investigacin y diseo
farmacutico, en reas donde se han establecido bien los modelos de computacin
en dos dimensiones tal que en un futuro prximo tiendan a tres dimensiones para
mejorarlos y puedan parecerse ms al mundo real, etc. Las caractersticas
genricas de estas aplicaciones son las siguientes: requieren enormes clculos
repetidos sobre grandes cantidades de datos para obtener resultados vlidos, y el
clculo debe terminarse en un perodo de ejecucin razonable. Esto implica que
para atacar estos problemas se requiere de hardwares rpidos y softwares
eficientes.
Durante varios aos, cientficos e ingenieros han estado confrontndose con
mquinas paralelas. Los usuarios han visto como un reto usar estos sistemas,
8

algunas veces teniendo muchos xitos al usarlas, pero frecuentemente frustrados


por las dificultades para obtener buenos resultados. Parte de los elementos que
pueden extender el uso de estas mquinas son:
-

Programacin familiar: programas para estas plataformas deben ser escritos


en lenguajes familiares, o variaciones fciles de entender.
Estabilidad de rendimiento: los rendimientos deben ser estables, tal que la
tasa de clculo no vare mucho entre un computador y otro.
Portabilidad: el cdigo debe ser fcil de mover entre mquinas.

Mucho esfuerzo se requiere en el desarrollo de software para estas plataformas,


ms
que en la proposicin de elementos de hardware eficientes. As, a nivel de software
del
sistema es donde se concentran los grandes retos en la actualidad, tanto a nivel de
desarrollo de sistemas operativos, compiladores, como de libreras de
programacin.
Algo importante para orientar futuros diseos es que los usuarios aceptan ms
fcilmente
cambios en su software, que cambiar a nuevos productos, aun cuando sean
revolucionarios. En pocas palabras, prefieren una evolucin en sus herramientas de
software a nuevos productos diferentes a los ya conocidos, por mejores que sean.
Un
clsico ejemplo es a nivel de Fortran, a travs de los aos, los cientficos han
preferido
adaptar sus cdigos a las extensiones que se les han ido incorporando a ste, que
pasar a
nuevos lenguajes de programacin.
Algunos de los actuales problemas en esta rea son:
-

La latencia: la latencia de una mquina paralela es ms grande que la de una


mquina secuencial. Esto es debido a la propia arquitectura (memoria
distribuida, manejo de copias locales que implican problemas de coherencia,
etc.). La sola forma de resolverlo es optimizando el uso de la plataforma (por
ejemplo, usando esquemas de pre-paginacin en la memoria, protocolos de
coherencia global, etc.). Quizs los hilos de ejecucin pueden ser otra fuente
de ayuda para reducir el problema de latencia.
Los anchos de banda: muchas redes de interconexin se han diseados
(mallas, etc.), algunas con terribles rendimientos y problemas de conflictos.
La determinacin de los mecanismos de control de ejecucin paralela: SIMD
(Single Instruction-Multiple Data) y MIMD (Multiple Instruction-Multiple Data)
han estado compitiendo estos ltimos aos, pero como se ha visto SIMD
puede sobrevivir para casos especficos y MIMD es ms general.
La capacidad de acceso a los datos: los mecanismos de pase de mensajes
o memoria compartida tienen una repercusin directa en el rendimiento del
sistema. En particular, el problema de direccionamiento de memoria en cada
9

estilo envuelve diferentes mecanismos en hardware y software, as como


especficos estilos de programacin y lenguajes.
Los modelos de programacin: muchas proposiciones se han hecho sobre
cmo pensar en programas paralelos. Los modelos van desde proposiciones
de diseo con un bajo nivel de sincronizacin entre instrucciones, hasta
modelos que permiten que el cdigo secuencial se ejecute automticamente
en paralelo. Algunos lenguajes de programacin se han ido modificando (por
ejemplo, HPF) para aprovechar el rendimiento exhibido por las mquinas
paralelas. Pero, as como muchos idiomas y dialectos han sobrevivido,
modelos de programacin, lenguajes y estilos no convergern en uno, ni hay
razn para que as sea, ya que cada uno responde a una necesidad diferente.
Los Compiladores y Sistemas Operativos: una eficiente explotacin de una
plataforma paralela pasa por mejores compiladores y sistemas operativos. A
pesar de que sustanciales mejoras se han hecho, aun se requieren ms; en
particular, para manejar grandes cantidades de datos de manera paralela en
la jerarqua de memoria, en tareas de planificacin (por ejemplo, para lazos
de ejecucin), entre otras.

Es razonable pensar que la naturaleza humana vislumbre nuevas aplicaciones que


excedan las capacidades de los sistemas computacionales. Por ejemplo, las
actuales aplicaciones de realidad virtual requieren considerables velocidades de
clculo para obtener resultados interesantes en tiempo real. Esto nos refleja la
necesidad permanente de realizar estudios sobre nuevos esquemas de
optimizacin en el mbito computacional.
4.1 Aspectos bsicos de la computacin paralela.
En general, la eficiencia de una mquina, para resolver un problema dado, depende
de la implementacin del algoritmo de resolucin. En particular, las mquinas
paralelas ofrecen un poder de clculo enorme, pero explotar todas sus
potencialidades no es fcil. Por otro lado, los problemas tienen diferentes
caractersticas factibles a explotar, cuando se desean desarrollar aplicaciones
paralelas para resolverlos. La mejor implementacin secuencial de resolucin de un
problema dado no conlleva obligatoriamente al mejor algoritmo paralelo, ya que para
desarrollar un algoritmo paralelo se deben explotar lo que denominaremos las
fuentes de paralelismo del problema. Bsicamente, existen dos modos de ver el
paralelismo:
- Modo Concurrente: supongamos una aplicacin paralela compuesta de tareas,
donde, adems, existe una estructura de intercambio de informacin entre las
tareas. Los sistemas concurrentes buscan ejecutar simultneamente las que se
pueden (si no existen dependencia entre ellas, etc.). La red de intercambio de
informacin es asimtrica y los intercambios asincrnicos. Los problemas de
asignacin de tareas y gestin de la red de interconexin son dos de los problemas
ms importantes a resolver. Este enfoque implica que las tareas a paralelizar deben
ser explcitamente definidas.
10

Figura 4.1.1 Modo concurrente


-

Modo Paralelo: las tareas de la aplicacin se organizan en forma de una


estructura regular como una tabla. Las tareas son lo ms parecido posible
entre ellas, y la red de interconexin es sncrona y simtrica espacialmente.
Muchas veces, esto conlleva a que las aplicaciones pasen por una fase de
pre-tratamiento para espaciarlas y transformarlas en tareas simtricas. Es
ms fcil construir mquinas paralelas para que exploten este modo.
Normalmente, en este caso, el paralelismo es implcito, por lo que extraer su
paralelismo es uno de los problemas fundamentales a resolver.

11

Figura 4.1.2 Modo paralelo


Para ambos modos se han desarrollado diferentes lenguajes de programacin,
ambientes de desarrollo, etc.
4.1.1 Perfil de Paralelismo
El perfil de paralelismo de una aplicacin es definido como la cantidad de
paralelismo que una aplicacin posee. Dicha cantidad est caracterizada por dos
parmetros: grado y grano de paralelismo.
4.1.1.1

Granularidad

El grano de paralelismo es definido como el tamao promedio de las acciones


(tamao promedio de una tarea elemental) en termino de:
- Nmero de instrucciones ejecutadas.
- Nmero de palabras de memorias usadas.
- Duracin de su tiempo de ejecucin.
Tambin puede definirse como la cantidad de procesamiento que una tarea realiza
antes de necesitar comunicarse con otra tarea. Por supuesto, un grano puede crecer
o decrecer agrupando o desagrupando tareas. Esto establece una relacin entre el
tiempo de clculo con respecto al nmero de eventos de comunicacin
12

(granularidad de la aplicacin). As, la granularidad, es la relacin entre la


computacin y la comunicacin, a lo interno de una aplicacin. Una granularidad
pequea (grano fino) implica ms comunicacin y cambios de contextos entre las
tareas (es una aplicacin con comunicacin intensiva). Una granularidad grande
(grano fuerte) implica menos comunicacin, pero puede que potenciales tareas
concurrentes queden agrupadas, y, por consiguiente, ejecutadas secuencialmente.
As, la determinacin del grano ideal, para una aplicacin dada, es importante, para
definir la mejor relacin entre paralelismo (grano pequeo) y comunicacin (grano
grande). El problema de determinacin del tamao ptimo del grano para una
aplicacin dada es un problema de optimizacin del tipo MaxMin (Maximizar
paralelismo y Minimizar comunicacin), y debe estar vinculado a la mquina donde
se ejecuta la aplicacin. El paralelismo a grano fuerte, es normalmente usado en las
arquitecturas tipo MIMD, mientras que el paralelismo a grano fino es especialmente
usado en las mquinas SIMD.

Tabla 4.1.1.1.1 El problema de granularidad


Como se ve en la tabla 4.1.1.1,1 el grano de paralelismo va desde el tamao de un
programa entero (miles de millones de instrucciones) a la de un bit. Dentro de un
programa es posible variar la granularidad para aumentar los clculos o reducir las
comunicaciones. La idea central es explotar la localidad a lo interno de las
aplicaciones:
tareas que usan la misma informacin, deben ser agrupadas y ejecutadas
secuencialmente, para reducir las comunicaciones.
4.1.1.2 Grado de Paralelismo
El grado de paralelismo es definido como el nmero de acciones (tareas) que se
pueden ejecutar en paralelo durante la ejecucin de una aplicacin. Es decir,
corresponde a una medida del nmero de operaciones que se pueden ejecutar
simultneamente, y refleja el nmero de procesadores a utilizar en paralelo durante
la ejecucin de la aplicacin. Puede ser calculado estticamente, segn la
estructura de la aplicacin, o dinmicamente, a partir de medidas durante la
ejecucin. El grado de paralelismo puede ser diferente a travs de las diferentes
partes de un programa, por lo que se habla de un grado de paralelismo mximo,
mnimo y promedio. El grado mximo es el lmite superior en cuanto al nmero de
procesadores que podran utilizarse. Con ese nmero de procesadores la ejecucin
de la aplicacin quizs sera la ms rpida posible, pero su eficacidad podra ser
mediocre si ese valor mximo excede en mucho al grado promedio de paralelismo
(muchos procesadores pasaran inactivos durante gran parte de la ejecucin del
13

programa). En el Captulo 5 veremos cmo obtener el nmero de procesadores


idneos para una aplicacin dada, a partir del grado de paralelismo de sta.
4.1.2 Fuentes de Paralelismo
Las mquinas paralelas tienen por finalidad explotar el paralelismo inherente en las
aplicaciones paralelas. Todas las aplicaciones no tienen el mismo tipo ni la misma
cantidad de paralelismo. El primer aspecto tiene que ver con una caracterstica
cualitativa: la manera como el paralelismo puede ser explotado, denominado fuente
de paralelismo. Bsicamente, existen tres tipos de paralelismo: de control, de datos
y de flujo. Usaremos el siguiente ejemplo para visualizar los diferentes tipos de
paralelismo.
4.1.2.1

Paralelismo de Control

Consiste en hacer cosas diferentes al mismo tiempo. Este tipo de paralelismo surge
de la constatacin natural de que una aplicacin paralela est compuesta de
acciones que se pueden hacer al mismo tiempo. Las acciones (tareas o procesos)
pueden ser ejecutadas de manera ms o menos independiente sobre diferentes
procesadores. El paradigma de programacin divide y vencers es tpico de esta
fuente de paralelismo.
En este enfoque se requiere una primera fase de descomposicin del programa en
tareas, para despus definir cules se pueden ejecutar simultneamente o se deben
ejecutar secuencialmente. Los criterios importantes a considerar son el nmero de
tareas, el grano de paralelismo, y las dependencias entre las diferentes tareas. Una
dependencia surge cuando una accin (tarea) se debe terminar para que otra
contine. Existen dos clases de dependencias:
- Dependencia de Control de Secuencia: Es el secuenciamiento clsico de los
algoritmos secuenciales.
- Dependencia de Control de Comunicacin: Es cuando una tarea enva informacin
a otra tarea, la cual no puede continuar hasta recibir dicha informacin.
Los dos casos de dependencias deben optimizar el siguiente criterio a la hora de
asignar las tareas a los procesadores: minimizar los lapsos de tiempo que pasan los
procesadores desocupados, o a la espera, debido a dichas dependencias. Bajo la
nocin de manejo de recursos, la explotacin de paralelismo de control consiste en
manejar las dependencias entre las tareas de una aplicacin, para obtener una
asignacin de ellas, tan eficaz como sea posible.

14

Figura 4.1.2.1.1 Dependencias de Tareas.


En la figura 4.1.2.1.1 vemos un ejemplo de dependencias en la ejecucin de las
tareas. Cuando T1 termina, el procesador 1 queda libre para ejecutar a T2 y el
procesador 2 puede ejecutar a T3. T4 no puede comenzar hasta que T2 y T3
terminen. Como T2 es menos largo que T3, el procesador 1 estar inactivo despus
que T2 termine, hasta que T3 finalice (en este caso no se han considerado los
tiempos de comunicacin entre los procesadores, lo cual aumentara an ms los
tiempos de espera).
De la figura anterior podemos concluir que los tiempos de ejecucin de las tareas
que se ejecutan concurrentemente deben ser ms o menos semejantes. Si existen
tareas que no pueden comenzar hasta que otras terminen, habr que esperar a que
la tarea que antecede que tome ms tiempo termine, antes de poder comenzar la
ejecucin de la nueva tarea.
Supongamos ahora otro caso de un programa compuesto por tres tareas T1, T2 y
T3, tal que T2 y T3 pueden ejecutarse simultneamente, cada tarea dura t1 (son todas
iguales a nivel de tiempo de ejecucin), y el tiempo para iniciar una tarea es t2 (aqu
se incluye tiempos de asignacin, de comunicacin, etc.). El tiempo del programa
secuencial seria 3t1 y del paralelo 2(t1+ t2). Si t2 > t1/2 la ejecucin paralela es ms
lenta que la secuencial. Una manera de mejorarlo es disminuyendo t2 o aumentando
el grano de las tareas.

15

Las principales limitaciones que se encuentran en este paralelismo son las


siguientes:
- Dependencias Temporales: ligadas al problema de secuenciamiento y
comunicacin entre las tareas.
- Dependencias Espaciales: ligadas al nmero limitado de recursos. Si no existen
suficientes procesadores, un fenmeno de cuello de botella se produce, tal que es
necesario ejecutar secuencialmente parte del trabajo.
- Sobrecosto por la gestin de los granos: cuando el tamao del grano de
paralelismo es muy pequeo, los tiempos de gestin (activacin, suspensin, etc.)
son cada vez ms grandes con respecto al trabajo efectuado por el sistema para
ejecutar las tareas.
- El tamao de las tareas que se ejecutan concurrentemente debe ser similar. Un
desequilibrio en el mismo puede conllevar a tiempos en los que slo pocos
procesadores estn trabajando.
- En mquinas de memorias distribuidas o mquinas con jerarqua de memoria, hay
que aadir el problema de comunicacin tpico de estas arquitecturas.
Las caractersticas bsicas a considerar en este paralelismo son:
- Un programa paralelo consiste de una o ms tareas, algunas de las cuales pueden
ejecutarse concurrentemente mientras que otras dependen de la ejecucin previa
de otras tareas.
- Una tarea encapsula un programa secuencial y normalmente requiere
comunicarse con su ambiente u otras tareas del mismo programa (compartiendo
espacios de memoria o enviando mensajes).
- El tamao de las tareas debe ser lo suficientemente grande, para que el tiempo
para iniciar la ejecucin de una tarea no sea importante.
- Se deben resolver los problemas de planificacin de la ejecucin de las tareas, de
asignacin de las tareas a los procesadores, etc., con la idea de reducir sus tiempos
de ejecucin.
- Las tareas pueden ser asignadas a los procesadores segn diferentes criterios:
distribuyendo la carga de trabajo, minimizando los costos de comunicacin entre
ellas, etc.
4.1.2.2 Paralelismo de Datos
La explotacin del paralelismo de datos proviene de la constatacin de que ciertas
aplicaciones actan sobre estructuras de datos regulares (vectores, matrices, etc.),
repitiendo un mismo clculo sobre cada elemento de la estructura. As,
normalmente, se habla de programas que manipulan estructuras de datos
regulares. La idea es explotar la regularidad de los datos, realizando en paralelo un
mismo clculo sobre datos distintos, por ejemplo: aumentarle el salario a todos los
empleados con ms de 5 aos de servicio. Este tipo de paralelismo es explotado
en el primer caso del ejemplo 2.2.

16

En este tipo de paralelismo se asocian directamente los datos a los procesadores.


Como los clculos se realizan en paralelo sobre procesadores idnticos, es posible
centralizar el control. Al ser los datos similares, la operacin a repetir toma el mismo
tiempo sobre todos los procesadores, y el controlador puede enviar de manera
sncrona la operacin a ejecutar a todos los procesadores. Normalmente, este es
un tipo de paralelismo de grano fino, por lo cual se requieren plataformas del tipo
SIMD.

Figura 4.1.2.2.1 Paralelismo de datos.


En la figura 4.1.2.2.1 vemos un ejemplo de paralelismo de datos. Las tareas T 1, T2
y T3 se ejecutan secuencialmente como en un algoritmo secuencial clsico. El
programador tiene la impresin de tener un programa secuencial donde las
operaciones no se ejecutan sobre datos escalares (reales, entero, etc.), sino sobre
arreglos de datos. En el caso de la ejecucin de T4, slo un procesador es usado.
Las principales limitaciones que se encuentran en este paralelismo son las
siguientes:
- Manejo de Vectores: si el tamao de la mquina es ms pequeo que el tamao
de los datos vectoriales, hay que descomponerlos, lo que agrega un tiempo extra
de asignacin y de gestin de tareas.
- Manejo de Escalares: las aplicaciones que manipulan datos vectoriales, usan
frecuentemente datos escalares. Cuando se procesa el escalar, slo un procesador
17

trabaja y el resto permanece ocioso (caso de la tarea T4 en la figura 4.1.2.1).


- Operaciones de difusin y reduccin: estas operaciones sobre los datos vectoriales
normalmente no son realizadas en paralelo, aunque realmente esto depende de la
topologa de la plataforma.
Algunos aspectos son importantes a considerar cuando se desea explotar este tipo
de paralelismo. Dichos aspectos son los siguientes:
a) Distribucin de los Datos
Los datos son normalmente numerosos, mucho mayor al nmero de procesadores
en el sistema. Esto obliga a que los datos sean repartidos entre los diferentes
procesadores disponibles. La regularidad de las estructuras de datos permite
distribuirlos de manera regular. Por ejemplo, una matriz n*m sobre p procesadores
podra ser distribuida en forma tal que cada uno tenga n/p lneas. El procesador
sera responsable de realizar todas las operaciones sobre esas lneas de la matriz.
En el caso general, si suponemos p el nmero de procesadores y n el tamao de
los datos (n mltiplo de p), los esquemas ms comunes de distribucin o reparticin
sobre los procesadores son (cada procesador es denotado por Pi, "i =0, p-1, y tendr
asignado todos los datos dj, "j=0, n-1):
- Por bloques (procesador Pi tendr asignado todos los datos dj, tal que i*n/p j
<(i+1)n/p),
- Cclicos (procesador Pi tendr asignado todos los datos dj, tal que i = j mod(p)),
- Bloques cclicos (procesador Pi tendr asignado todos los datos dj, tal que i =
mod(p), donde b es el tamao de los bloques y es divisor de p).

Figura 4.1.2.2.2 Esquema de distribucin de los datos sobre los


procesadores.
b) Ejecucin Sncrona
El paralelismo de datos es clsicamente usado en mquinas SIMD con control
centralizado, por lo que se puede ver como un flujo de control sobre mltiples datos.
En este caso, la sincronizacin es automtica al existir un slo controlador.
c) Dependencia de Datos
Hasta ahora en todos los ejemplos presentados se ha considerado que todos los
elementos de un vector pueden ser ejecutados simultneamente (llamados en la
literatura como lazos paralelos). Pero existen situaciones menos favorables,
18

donde la dependencia entre los elementos de un mismo vector prohbe ciertos


clculos paralelos.
Existen dos operaciones bsicas en el paralelismo de datos, a travs de las cuales
se puede expresar todo el paralelismo encontrado en l: j-notacin y b-reduccin. jnotacin es descrita por una funcin f de dimensin n y n vectores del mismo
tamao. j- notacin aplica en paralelo la funcin f sobre el conjunto de vectores. Por
ejemplo, la operacin r (j (+v1, v2) suma los vectores v1 y v2 para producir el vector
resultado r. Esto permite la aparicin del paralelismo de datos. La operacin breduccin es una funcin binaria f sobre un nico vector r, tal que se aplica la funcin
f sobre los dos primeros elementos de v, y despus, se aplica f sobre el resultado
del clculo precedente y el elemento siguiente del vector v. Por ejemplo, b (+, v)
calcula la suma de todos los elementos del vector v. Con ciertos cambios sobre esta
operacin, para explotar la propiedad asociativa (paradigmas del rbol binario o
divides y vencers), es posible generar un esquema paralelo de ejecucin.
j y b son lo suficientemente generales como para expresar un gran nmero de
operaciones sobre datos regulares, como vectores y matrices, al tratar de explotar
el paralelismo de datos.
4.1.2.3 Paralelismo del Flujo de Ejecucin
Este tipo de paralelismo corresponde al principio de trabajo en cadena. Est
inspirado en la constatacin de que muchas aplicaciones funcionan segn el modo
de trabajo en cadena: se dispone de un flujo de datos, generalmente similares,
sobre los cuales se deben efectuar un conjunto de operaciones en cascada/cadena.
Es decir, una secuencia de operaciones debe ser aplicada en cadena a una serie
de datos similares. Las operaciones a realizar son asociadas a procesadores, los
cuales estn conectados en cadena de manera de que la entrada de un procesador
(operacin) sea la salida del procesador (operacin) que le antecede. As, los
resultados de las operaciones realizadas en el tiempo T son pasados en el tiempo
T+1 a los procesadores siguientes. Este tipo de paralelismo implica un
procesamiento de tipo encauzamiento, explotando la regularidad de los datos
. Este paralelismo es muy usado en el clculo vectorial.
Las mismas operaciones j y b, anteriormente mencionadas, pueden ser usadas para
expresar este paralelismo, slo que aqu estas operaciones no son realizadas en
paralelo sino secuencialmente, y cada elemento es tratado uno despus del otro.
As, si se quiere ejecutar en paralelo una adicin vectorial, se aplica la operacin de
adicin simultneamente sobre los diferentes elementos del vector, pero en modo
encauzamiento. Esto consiste en descomponer la adicin en una cadena de trabajo.
La extraccin de operaciones vectoriales en un programa puede ser hecha por el
usuario o el compilador. Como los datos y las etapas deben ser independientes para
que el paralelismo de flujo sea posible, los otros dos tipos de paralelismo pueden
ser explotados. Si los datos se tienen en memoria, es preferible reemplazar el
paralelismo de flujo por uno de datos. El paralelismo de control se impone cuando
19

las duraciones de las etapas son muy diferentes entre ellas. El modo de
procesamiento por encauzamiento se justifica solamente, si la llegada de los datos
es secuencial y si los diferentes elementos de procesamiento son especializados
cada uno en una operacin particular.
4.1.2 Aspectos de Diseo de Programas Paralelos
Existen dos estrategias para disear aplicaciones paralelas, ellas se diferencian
entre s segn las consideraciones iniciales en las que se basan. Por otro lado, las
caractersticas estructurales de los programas paralelos estn basadas en ciertos
paradigmas. En esta seccin nos dedicaremos a presentar todos estos aspectos.
4.1.2.1 Paralelizando un Programa Secuencial
En esta primera estrategia, se parte de un programa secuencial, el cual se desea
paralelizar. Existen varias formas para paralelizar aplicaciones secuenciales:
4.1.2.1.1 Paralelizacin Automtica
Dependiendo de la mquina paralela, existen un conjunto de tareas que se deben
realizar, con el fin de obtener un eficiente cdigo paralelo para un programa
secuencial. Algunos de los ejemplos de posibles tareas a realizar son los siguientes:
- Distribuir los datos a travs del conjunto de procesadores,
- Establecer referencias a memoria cercanas (entorno a una misma regin de
memoria) para hacer un uso eficiente de la jerarqua de memoria (problema de
localidad).
- Crear mltiples cadenas de control,
- Sincronizar el acceso a las localidades de memoria (en memorias compartidas).
Dichas tareas estarn ligadas a las caractersticas de la mquina paralela donde se
ejecutar la aplicacin. El objetivo de la paralelizacin automtica (compiladores,
etc.) consiste en eliminar al programador de la responsabilidad de paralelizar el
cdigo, en la medida de lo posible. Por ejemplo, el compilador recibira una versin
de un cdigo secuencial y producira un eficiente cdigo paralelo sin adicional
trabajo para el programador. Qu tan realista es?, es una difcil respuesta, ya que
los diseadores de compiladores pueden construir ejemplos que sus compiladores
pueden manejar, pero quizs no son representativos de la gran extensin de los
problemas reales que requieren de compiladores paralelos.
Una posible opcin ha sido la de formular extensiones a los lenguajes secuenciales
existentes (por ejemplo, FORTRAN o C). El esfuerzo mayor en esta rea ha sido en
torno a FORTRAN y al manejo de arreglo de datos. HPF (High Performance Fortran)
y Fortran 90 son ejemplos de ello, cuya idea ha sido facilitarle al programador la
incorporacin de nuevas primitivas simples, fciles de aprender, para permitirle al
compilador hacer el trabajo difcil (insertar locks o primitivas de pase de mensajes,
replicar datos compartidos, etc.). Otro posible enfoque es desarrollar pre20

procesadores que tomen el cdigo secuencial y produzcan la correspondiente


fuente en lenguaje paralelo (el cual puede entonces ser enviado al compilador). Este
tipo de enfoque necesita una interaccin sustancial con el usuario.

4.1.2.1.1.1 Paralelizaran Automtica


4.1.2.1.2 Libreras Paralelas
En esta estrategia, la idea de base es que normalmente el tiempo de cmputo en
las aplicaciones est concentrada en una sola parte del mismo. Si se trata de
optimizar esas partes, por ejemplo, produciendo versiones paralelas eficientes de
las mismas en forma de rutinas, se podran desarrollar libreras paralelas de ellas.
As, a pesar de que no toda la aplicacin sea paralelizable, la parte de mayor
demanda computacional tpicamente si lo es. Este enfoque ha sido usado por
mucho tiempo en las mquinas vectoriales, para las cuales se han desarrollado
rutinas ptimas. Normalmente, las libreras desarrolladas han estado ligadas a
requerimientos que provienen de aplicaciones cientficas.

Figura 4.1.2.1.2.1 Libreras Paralelas


Este enfoque puede trabajar bien, ya que slo hay que concentrarse en pequeas
partes. Adems, es fcil asegurar su escalabilidad ante avances tecnolgicos, en
las plataformas computacionales (programacin multihilos, etc.), ya que el esfuerzo
est dedicado a incorporar estos avances en el cdigo desarrollado para esas
partes. Por otro lado, esto es completamente invisible al cdigo secuencial (el
programador no necesita saber que hay partes paralelas en su cdigo). Incluso, se
podra extender esta idea, para que el usuario decida qu versin usar segn la

21

plataforma computacional que disponga (por ejemplo, se dispondran de varias


versiones por rutina, una por cada plataforma computacional).
4.1.2.1.3 Recodificacin de Partes
De acuerdo a la plataforma computacional disponible, rehacer parte del cdigo es
otra posibilidad. Detalles como no dependencia entre iteraciones de un lazo, si la
aplicacin es susceptible a explotar un grano fino, pueden ser determinantes a la
hora de querer paralelizar un cdigo secuencial. La idea es explotar esas
caractersticas para maximizar la generacin de tareas con posibilidad de ser
ejecutadas concurrentemente. Un punto importante a resaltar es el hecho cuando
se trabaja en una plataforma de procesamiento distribuida heterognea (lo que
implica diferentes lenguajes, estructuras de control, etc.). En este caso, se aade el
problema de tener que portar las porciones de las aplicaciones, a cada una de las
diferentes arquitecturas.

Figura 4.1.2.1.3.1 Recodificacin del cdigo Secuencial


4.1.2.2

Paradigmas de Programacin Paralela

A la hora de disear algoritmos paralelos, existen un conjunto de paradigmas de


programacin que pueden ser usados. Estos paradigmas permiten guiar el
desarrollo eficiente del cdigo paralelo, algunos de los cuales ya han sido usados
con xito en el desarrollo de cdigo secuencial. Los paradigmas no son algoritmos,
son estrategias de resolucin de problemas. Los propsitos de los paradigmas son
dos:
- Tener ideas que nos permitan resolver problemas diferentes por medios similares,
- Permitir desarrollar herramientas de diseo que ayuden a los programadores.
En el caso de los paradigmas de programacin paralela, estos encapsulan
informacin sobre los patrones de comunicacin y el esquema de descomposicin
de tareas. Existen muchos paradigmas, a continuacin, presentaremos algunos de
ellos:
- Maestro/Esclavo: consiste en dividir el trabajo en subtareas que sern realizadas
por los diferentes esclavos bajo control del maestro. Esquemas MIMD con Memoria
Compartida trabajan perfectamente bajo este enfoque.

22

- Divides y Vencers: es un esquema en que la resolucin del problema se


descompone en varios subproblemas, los cuales a su vez se subdividen en
subproblemas, hasta llegar a un nivel donde los subproblemas no pueden (o deben)
ser ms divididos. Cuando los subproblemas son resueltos, ellos regresan sus
resultados a sus niveles superiores. Cada subproblema puede ser resuelto
independientemente y sus resultados combinados dan el resultado final. En
computacin paralela, dichos subproblemas pueden ser resueltos al mismo tiempo,
si se tienen suficientes procesadores disponibles. Algn pre-procesamiento y postprocesamiento son requeridos para partir el problema en subproblemas y para
construir la solucin del problema a partir de las soluciones de los subproblemas.
- rbol Binario: es un caso particular del paradigma anterior, tal que los clculos
sobre N datos (n1, , nN) son descompuestos en clculos sobre (n1, , nN/2) y
(nN/2+1, ..., nN) datos. Por ejemplo, para sumar N enteros (n1, , nN), donde N es
mltiple de 2, y si colocamos los datos en las hojas del rbol, dicho clculo podra
hacerse de la siguiente forma: N/2 procesadores son empleados para calcular la
suma de pares (n1, n2), , (nN-1, nN) en un solo paso. Despus, N/4 procesadores
ejecutan la misma tarea para los pares de elementos de datos recin calculados, y
as sucesivamente. El clculo procede desde las hojas a la raz del rbol. Existe un
problema que consiste cuando un nodo padre se descompone en varios nodos hijos,
los cuales duran diferentes tiempos de ejecucin. Eso implica que los procesadores
con los nodos hijos que duran menos tiempo, pueden llegar a pasar grandes
perodos de tiempo ociosos.

Figura 4.1.2.2.1 Paradigma rbol Binario


- Otros paradigmas: el paradigma basado en la programacin sistlica para
procesadores a memoria no compartida es otro ejemplo de paradigma. El
paradigma sistlico consiste en descomponer el programa en subprogramas que
son asignados a procesadores dedicados. Los datos fluyen a travs de los
procesadores, visitando subconjunto de procesadores para completar los clculos.
Tiene como propiedad importante la localidad de la comunicacin (los procesadores
slo requieren comunicarse con un subconjunto dado de procesadores). Existen
otros paradigmas como el de expandir un rbol o Calcular-Agrupar-Propagar. Este
ltimo consiste en tres fases: a) fase de clculo: que computa operaciones que van
desde operaciones simples a programas enteros, las mismas ejecutadas en cada
23

uno de los procesadores que componen el sistema, b) fase de agregacin: que


combina los datos locales, con los que eventualmente recibe, y c) fase de
propagacin: que enva los datos almacenados localmente a los diferentes
procesadores que componen el sistema.
4.1.3 Metodologa para Desarrollar Programas Paralelos
4.1.3.1

Generalidades

A la hora de desarrollar aplicaciones paralelas, los siguientes aspectos se deben


considerar:
- Definir el enfoque/paradigma apropiado para cada arquitectura.
- Separar los tiempos de comunicacin, de Entradas/Salidas y de clculo en la
aplicacin, si es posible (esto nos permitir identificar qu partes de la aplicacin se
deben optimizar).
- Usar los modelos de rendimiento que incluyan los aspectos ms relevantes de la
aplicacin.
- Realizar pruebas en una variedad de situaciones y configuraciones de mquinas
paralelas. Se debe estar seguro que el tamao de la mquina y las pruebas
(benchmark) correspondan entre ellos.
- Definir las caractersticas del paralelismo: si es escondido o es explcito, cual es la
fuente de paralelismo, etc.
4.1.3.2

Metodologa

El diseo de programas paralelos no es fcil y requiere de una gran creatividad, as


que el conjunto de pasos que daremos a continuacin slo debe ser entendido como
una gua para maximizar la definicin de eficientes programas paralelos. El
algoritmo paralelo final puede ser muy diferente a su versin secuencial, si es que
existe.
Los pasos que se presentarn a continuacin, se repiten en ciclos de diseo, a
travs de una metodologa tipo espiral que va retrasando decisiones de hardware,
considerando inicialmente aspectos ms vinculados al software (las primeras
decisiones de diseo no consideran la mquina donde se ejecutar la aplicacin).
Existen cuatro pasos que se repiten en esta metodologa tipo espiral:
descomposicin, comunicacin, agrupamiento y asignacin. Los dos primeros
pasos estudian el problema de escalabilidad y concurrencia, mientras que los dos
ltimos estudian el problema de localidad y mejoras en el rendimiento
computacional. Los cuatros pasos, mezclados con la metodologa espiral, hacen
que se repitan estos pasos las veces que sean necesarios, por lo que se va
haciendo un diseo en forma incremental y, redefiniendo las decisiones tomadas
previamente.

24

Figura 4.1.3.2.1 Metodologa de Desarrollo de Aplicaciones Paralelas

La flexibilidad de esta metodologa radica en que se permite que las tareas puedan
ser creadas o eliminadas dinmicamente, para diferentes tipos de plataformas
computacionales. Las cuatros fases, a pesar de que parecieran secuenciales, son
realizadas permanentemente, segn la metodologa espiral, con diferentes niveles
de agregacin y sobre diferentes componentes, por lo que se va haciendo en forma
incremental. En las primeras fases de la metodologa espiral, los pasos de
descomposicin y comunicacin son los ms relevantes, mientras que en las ltimas
fases de dicha metodologa los pasos ms relevantes son agrupamiento y
asignacin.
Un aspecto genrico a considerar tiene que ver con el diseo lgico (ver figura
4.1.3.2.1).
El diseo lgico captura el paralelismo mximo que existe en un algoritmo dado. Su
mapeo a una plataforma especifica puede reducir ese paralelismo mximo (adems,
puede ser muy complicado).

25

Figura 4.1.3.2.1 Pasos claves del proceso de diseo.


4.1.3.2.1 Mecanismo Espiral
El mecanismo espiral permite realizar un diseo ptimo de programas paralelos
basado en dos premisas:
- Explotar el conocimiento que se va adquiriendo durante el desarrollo.
- Disear inicialmente las partes claves de la aplicacin, y despus, poco a poco,
aadirle las otras partes.
Aprovechar la experiencia y conocimiento ganado sobre el hardware y software
disponible, durante el desarrollo de la aplicacin, permite un diseo final ms
eficiente. Se parte del hecho de que al minimizar el nmero de restricciones posibles
(sobre las caractersticas de la mquina, con respecto al software disponible, etc.),
se pueden generar ideas iniciales de diseo, que pueden tener un impacto
fundamental en las caractersticas finales del cdigo a generar. Al final, se deben
considerar los aspectos especficos de la arquitectura y software disponible para
acoplar el diseo a las especificaciones de la plataforma donde se ejecutar. Esta
ltima etapa aprovechar todo el conocimiento y experiencias obtenidas en los
ciclos previos.
Por otro lado, el diseo incremental permite ir mejorando el cdigo, adems de
considerar slo al inicio las partes ms importantes del mismo. La idea es que de
los mdulos claves que se tengan que desarrollar, se pueda tener un prototipo
temprano, en el ciclo de diseo. Una vez que el corazn de la aplicacin est
26

correcto, otras piezas de cdigo pueden ser poco a poco incorporadas. Esto
permite, por ejemplo, que la fase de desarrollo de interfaces a otros sistemas y
usuarios (algo comn con las aplicaciones secuenciales), puedan ser aadidas
fcilmente al final, una vez que la parte clave de la aplicacin paralela est
optimizada.
4.1.3.2.2 Descomposicin
La idea en esta fase es vislumbrar las oportunidades de paralelismo, al disear el
mayor nmero de pequeas tareas posibles, las cuales determinarn el mximo
paralelismo que se puede encontrar en dicha aplicacin. Esta fase consiste en
dividir o descomponer un programa en componentes que pueden ser ejecutados
concurrentemente. Esto no implica necesariamente descomponer el programa en
un nmero igual al nmero de procesadores que se tenga. El principal objetivo en
esta fase es asegurar un eficiente uso de los recursos por parte de la aplicacin y
esconder la latencia. Un buen mecanismo de particin, debe considerar tanto a los
datos como a los clculos.
Un eficiente uso de los recursos se refiere a cmo el rendimiento de una aplicacin
dada vara segn el nmero de procesadores disponibles. Por ejemplo, en ciertos
casos, un programa secuencial podra ejecutarse ms rpido que uno paralelo,
cuando el nmero de procesadores es pequeo (se puede atribuir a los costos de
comunicacin, sincronizacin, etc.). El tiempo de ejecucin del programa paralelo
puede ser mejorado aadiendo procesadores, hasta un lmite dado, donde no hay
ms mejoras, ya que no hay suficiente trabajo para tener ocupados a todos los
procesadores por la influencia de la comunicacin.
Por otro lado, normalmente es preferible tener muchas ms tareas que
procesadores,
tal que se pueda esconder la latencia. La latencia es el tiempo de comunicacin
entre los diferentes componentes de la arquitectura (procesadores, memoria, etc.),
derivado de la ejecucin de la aplicacin (bloqueos en las tareas, acceso
concurrente a la memoria, etc.). Al usar la multiprogramacin, para mantener
ocupados a los procesadores mientras otras tareas esperan, estaremos
escondiendo la latencia.
Los esquemas de particin estn muy atados a las fuentes de paralelismo.
Bsicamente, tres esquemas de particin pueden ser usados:
- Descomposicin por Dominio: en este caso, el diseador se concentra en partir los
datos y en como asociar los clculos a esos datos. La idea central es dividir dichas
estructuras de datos en componentes que pueden ser manipulados
independientemente (concurrentemente). Si es posible, los datos se dividen de igual
tamao a condicin de que los procesadores sean de igual poder. Adems, los
clculos a realizar tambin se descomponen tpicamente, para asociar los clculos
con los datos sobre los cuales se ejecutan. Diferentes particiones son posibles,
segn la estructura de datos que se tenga y los clculos que se requieren realizar.
27

Esto implica que tanto las estructuras de datos como los clculos a realizar deben
ser estudiados simultneamente. Se pueden usar en aplicaciones con una gran
cantidad de datos regulares. Ejemplos de estos casos son las matrices. La figura
4.1.3.2.1.1 muestra dos formas clsicas de partir una matriz, por columnas o una
descomposicin por bloques.

Figura 4.1.3.2.1.1. Posibles particiones de una matriz


Supongamos la descomposicin de B por columnas en un problema de
multiplicacin de matrices (AxB=C). Vemos que para calcular una columna de la
matriz resultado C, los clculos entre las correspondientes columnas de B por cada
fila de A pueden ser ejecutados completamente independientes, por consiguiente,
en paralelo (ver figura 4.1.3.2.1.1).

28

Figura 4.1.3.2.1.2 Multiplicacin de matrices segn una particin por


columnas
La escalabilidad de esa particin est gobernada por el nmero de elementos de la
particin (en nuestro ejemplo, por el nmero de columnas de B). Esto implica que,
para mantener las mejoras en rendimiento, es necesario que el nmero de las
particiones se corresponda con el nmero de procesadores (si el nmero de
componentes de la particin es menor, con ms procesadores no se obtienen
mejoras). Hay una implcita suposicin en este tipo de descomposicin, y tiene que
ver con el tamao de los datos y la regularidad en el patrn de comunicacin; una
particin regular de los datos supone una divisin regular del trabajo, por
consiguiente, no es necesario balancear la carga. Este es un punto de inicio para el
diseo de programas, pero muchas veces el patrn de comunicacin envuelto para
resolver el problema tiene poca relacin con la descomposicin de los datos, y
puede generar desequilibrios de cargas de trabajo. Por ejemplo, en dinmica de
fluidos, con una estructura de datos regular, algunos puntos en el campo de fluidos
pueden tener una nica propiedad, los cuales pueden necesitar de clculos
globales.
- Descomposicin Funcional: aqu, el trabajo se concentra en descomponer los
clculos a realizar. La descomposicin funcional es una herramienta fundamental
de diseo estructurado de programas, ya que esta descomposicin del clculo lleva
consigo, en muchos casos, la descomposicin del cdigo tambin. La estrategia
consiste en dividir las funciones de un programa y operarlas concurrentemente. Por
ejemplo, para una funcin f(x) se quiere calcular su integral en el intervalo [a, b].
Una descomposicin funcional consiste en dividir el intervalo en n trozos de rea w.
Cada rea podr ser calculada independientemente y concurrentemente, y el rea
total ser simplemente la suma de cada una. En este ejemplo tambin se suponen
clculos semejantes, por lo que no se requiere balancear la carga y la escalabilidad
depende del nmero de trozos. Este tipo de particin es complementaria a la
anterior. Si se pueden dividir los clculos, entonces se pasa a estudiar los datos, si
los datos son descompuestos, entonces la particin es completa.
29

Figura 4.1.3.2.1.3 Descomposicin funcional para el problema del clculo del


Integral
En general, la descomposicin funcional es ms compleja que el caso presentado
en el ejemplo anterior, donde los componentes de la descomposicin no son
similares, y, por consiguiente, no auto-balanceados. Por ejemplo, consideremos la
estructura tpica de un compilador de un lenguaje de alto nivel (ver figura
4.1.3.2.1.3).

Figura 4.1.3.2.1.4 Estructura Programada de un compilador de un lenguaje de


alto nivel
Una descomposicin funcional podra primero focalizarse en la descomposicin
completa del compilador, y despus revisar a cada uno de sus componentes. La
descomposicin funcional abarca el procesamiento por encauzamiento. El uso de
encauzamiento es limitado por la velocidad del elemento ms lento, por lo que se
debe decidir qu aspectos del procesamiento por encauzamiento deben ser
mejorados (descompuestos) para mejorar los tiempos. Otro ejemplo, es en el mismo
clculo del integral, para

, cuando sucede lo siguiente:

30

Figura 4.1.3.2.1.5 Calculo de la integral con desequilibrio de la Carga de


Trabajo
- Descomposicin de problemas irregulares: en este caso, la estructura del
programa evoluciona dinmicamente durante su ejecucin y no puede ser
determinada a priori. Ejemplos son los clculos en dinmica de fluidos, etc. La idea
es definir un modelo que cambie dinmicamente cuando el programa se ejecuta
(por ejemplo, un rbol), de esta manera dicho modelo puede ser usado para partir
dinmicamente el programa Esto conlleva a que cuando el tamao de las
particiones vara, algn mtodo de equilibrio de la carga es necesario, El esquema
para usar en la divisin, depende de la estructura del modelo, del costo de las
comunicaciones y del esquema de equilibro de la carga usado. Por ejemplo, la figura
2.23 muestra dos estrategias para descomponer rboles, en una se escoge un nivel
en el rbol, donde el nmero de hojas es grande, y se descompone en subrboles,
en el segundo se divide el rbol regularmente.

Figura 4.1.3.2.1.6 Posibles particiones de un rbol


Detalles como que la mejor descomposicin en una fase es de una forma y en la
otra es diferente, son factibles de considerar, lo que puede conllevar a la necesidad
de adaptar los datos, para poder ser usados en ambas fases (amoldar las
estructuras de datos de cada fase, lo que implica aadir una fase explcita de
reestructuracin de datos, etc.).

31

4.1.3.2.3 Comunicacin
Las tareas que se van definiendo, son diseadas para que en su mayora puedan
ser ejecutadas concurrentemente, pero muchas veces eso no es posible, ya que no
pueden ejecutarse independientemente. Los clculos a realizar en una tarea,
pueden requerir datos de otras tareas, lo que implica que se deben transferir esos
datos entre las tareas. Definir la estructura comunicacional de la aplicacin es clave
en el futuro desempeo de una aplicacin. El diseo de la estructura comunicacional
se puede descomponer en dos fases: en la primera se definen los enlaces entre las
tareas. Despus, se especifican los mensajes a intercambiarse entre ellos.
En la descomposicin por dominio, la comunicacin puede ser difcil de determinar
(hay que identificar las operaciones que requieren datos de diferentes fuentes). En
contraste, en la descomposicin funcional, es fcil de determinar, ya que las
interrelaciones entre las tareas vienen dadas por las funciones que realiza cada una,
y de las cuales quizs la otra depende. A continuacin, pasamos a categorizar los
tipos de comunicacin:
- Comunicacin local y global: en la comunicacin local una tarea se comunica
solamente con sus vecinos. En la comunicacin global cada tarea se comunica con
todas, o casi todas. As, en una comunicacin global, muchas tareas pueden
participar, lo que puede conllevar a muchas comunicaciones.
- Comunicacin estructurada y no estructurada: es un tipo de comunicacin donde
el patrn de comunicacin de una tarea con sus vecinos forma una estructura
regular, por ejemplo, del tipo rbol o malla. Las no estructuradas pueden generar
grafos de comunicacin arbitrarios.
- Comunicacin esttica o dinmica: la comunicacin esttica establece patrones
de comunicacin que no cambian en el tiempo, mientras que la dinmica puede ser
solamente determinada durante el tiempo de ejecucin de la aplicacin.
- Comunicacin sncrona o asncrona: en el caso de la sncrona implica que las
tareas se ejecutan coordinadamente (es decir, se deben sincronizar entre ellas), en
contraste, la asncrona significa que cada tarea puede ejecutarse al obtener los
datos que requiere, sin tener que esperar por otras tareas.
4.1.3.2.4 Agrupamiento
El algoritmo hasta ahora es una abstraccin, en el sentido de que an no estn
especificados los detalles para asegurar su eficiente ejecucin, sobre un
computador particular. De hecho, puede ser bastante ineficiente, si se crean muchas
tareas pequeas y la arquitectura que se posee no es apta para este tipo de diseo
de programas. Las tareas y estructuras comunicacionales definidas previamente,
deben ser evaluadas segn los requerimientos de rendimiento y costos de
implementacin. As, en esta fase se revisan las decisiones de descomposicin y
comunicacin, para obtener un algoritmo que se ejecuta eficientemente sobre un
computador paralelo dado. En particular, se determina si se deben agrupar tareas
identificadas en la fase de descomposicin o si se deben replicar datos y/o clculos.
La reduccin de tareas puede llevar consigo el objetivo de que exista una tarea por
32

procesador, dependiendo del tipo de plataforma computacional que se tenga. Los


procesos de agrupamiento y replicacin deben considerar:
- Aumentar la cantidad de clculos y reducir los costos comunicacionales: al llegar
a esta fase, normalmente se tiene un nmero grande de tareas (ya que se ha tratado
de maximizar el paralelismo que se puede extraer), pero un gran nmero de tareas,
no implica un eficiente paralelismo, en particular, por los costos comunicacionales,
por lo que se deben reducir estos costos. Estos costos pueden ser reducidos de dos
formas: enviando menos datos o menos mensajes. Esto porque el costo
comunicacional depende tanto de la cantidad de datos a transferir como del costo
inicial por establecer una comunicacin. Ambos costos pueden ser reducidos por
agrupamiento. La replicacin tambin puede reducir los requerimientos
comunicacionales, introduciendo clculos redundantes se pueden evitar costos
comunicacionales.

Figura 4.1.3.2.4.1 Costos comunicacionales


Suponga el problema de sumar n nmeros, tal que la distribucin de la suma es
distribuida entre n tareas Ti, tal que 0in-1. Las tareas estn conectadas en un
anillo (ver figura 4.1.3.2.4.1, para n=4). Cada tarea espera la suma parcial desde su
vecino izquierdo, aade est a su resultado local, y lo enva a su vecino a la derecha.
Finalmente, la tarea T0 recibe la suma parcial y lo aade a su valor local para
obtener la suma completa. Este algoritmo distribuye las comunicaciones y
adiciones, y permite concurrente ejecutar mltiples sumas. El arreglo de tareas es
usado como un encauce, por el cual fluyen sumas parciales, as una suma simple
toma n pasos. Ahora, supongamos que los resultados de la suma de las n tareas se
deben replicar en cada tarea, una forma de hacerlo es seguir el mismo
procedimiento y al final difundir los resultados a las n tareas (se puede usar la misma
estructura de comunicacin), lo que implica que se deben realizar 2(n-1) pasos y
comunicaciones. Una variante es suponer que todas las tareas conectadas en el
anillo ejecutan el mismo algoritmo, tal que n sumas parciales se hacen
simultneamente. Despus de n-1 pasos/comunicaciones la suma completa es
replicada en cada tarea, lo que evita la fase de difusin de resultados, pero con (n1)2 clculos redundantes (ver figura 4.1.3.2.4.1, siempre para n=4).

33

Figura 4.1.3.2.4.2 Clculos Redundantes


Una posible extensin para el ejemplo anterior con n nmeros y m procesadores
(m<<n), tal que m=3 y n=300, es que cada procesador ejecute una parte de los
nmeros (ver figura 4.1.3.2.4.3).

Figura 4.1.3.2.4.3 Distribucin del trabajo


Si el tiempo de comunicar un valor al vecino es igual a 10 veces el tiempo de una
adicin, entonces para m=3 y n=300, una nueva distribucin no tiene sentido, por
consiguiente, pasa a ser ms interesante que cada procesador haga el clculo
completo para todos los elementos.
La agrupacin es tambin importante, cuando se analizan los requerimientos
comunicacionales y se determina que ciertas tareas no pueden ejecutarse
concurrentemente, por sus dependencias. Por ejemplo, en el caso de un rbol de
ejecucin slo las tareas que estn en el mismo nivel pueden ejecutarse
concurrentemente, as, tareas en diferentes niveles se agrupan sin reducir las
posibilidades de ejecucin concurrente entre las tareas.
- Aumentar la flexibilidad con respecto a la escalabilidad y proceso de decisin de
las asignaciones: un buen algoritmo debe ser diseado para ser inmune a cambios
en el nmero de procesadores. Detalles como solapar la ejecucin de una tarea,
con la comunicacin de otra tarea en un mismo procesador, puede ser crtico a la
hora de determinar el agrupamiento. La flexibilidad no necesariamente requiere que
existan ms tareas que procesadores, pero s que la granularidad pueda ser
controlada al momento de la compilacin o en tiempo de ejecucin. Esto evita la
34

innecesaria incorporacin de lmites en el nmero de tareas a crear, y permite que


se explote ms eficientemente la plataforma computacional.
- Reducir costos de diseo de software: a este nivel se consideran los costos de
desarrollo. Si la aglomeracin lleva consigo la posibilidad de reutilizar el cdigo
secuencial eficiente dentro del programa paralelo, bienvenida sea. Lo importante es
facilitar el desarrollo de la aplicacin, evitando el cdigo extensivo (tamao) de las
diferentes partes y facilitando su integracin.
4.1.3.2.5 Asignacin
En este paso se especifica donde ser ejecutada cada tarea. Las tareas son
asignadas a los procesadores de manera de maximizar la utilizacin de los
procesadores y minimizar los costos comunicacionales. Este problema no existe en
sistemas uniprocesadores o computadores a memoria compartida y/o distribuida
con automtica planificacin de tareas. En el ltimo caso, el sistema operativo es el
que realiza la distribucin de las tareas. En general, este es un problema difcil y su
objetivo es minimizar el tiempo total de ejecucin de la aplicacin a travs de dos
ideas:
a) Colocar tareas concurrentes en diferentes procesadores.
b) Colocar tareas que se comunican frecuentemente en el mismo procesador.
En general, este problema es NP-completo, sin embargo, muchas tcnicas
heursticas se han desarrollado con resultados eficientes. La asignacin puede ser
esttica o dinmica, usando algoritmos de equilibro de la carga de trabajo u otros
criterios. Los mecanismos de asignacin dinmicos son ms interesantes, cuando
los problemas no tienen una estructura comunicacional regular (particularmente,
cuando la cantidad de clculo o comunicacin cambia dinmicamente durante la
ejecucin de un programa). El sobrecosto que se introduce, debe ser controlado
para maximizar los beneficios y evitar que el costo para determinar la ptima
asignacin sea grande (por la periodicidad con que debe ser ejecutado).
4.2 Tipos de Computacin Paralela

La computacin paralela es una forma de cmputo en la que muchas instrucciones


se ejecutan simultneamente, operando sobre el principio de que problemas
grandes, a menudo se pueden dividir en unos ms pequeos, que luego son
resueltos simultneamente (en paralelo). Hay varias formas diferentes de
computacin paralela: paralelismo a nivel de bit, paralelismo a nivel de instruccin,
paralelismo de datos y paralelismo de tareas. El paralelismo se ha empleado
durante muchos aos, sobre todo en la computacin de altas prestaciones, pero el
inters en ella ha crecido ltimamente debido a las limitaciones fsicas que impiden
el aumento de la frecuencia n. Como el consumo de energa y por consiguiente
la generacin de calor de las computadoras constituye una preocupacin en los
ltimos aos, la computacin en paralelo se ha convertido en el paradigma
35

dominante en la arquitectura de computadores, principalmente en forma de


procesadores multincleo.
Las computadoras paralelas pueden clasificarse segn el nivel de paralelismo que
admite su hardware: equipos con procesadores multincleo y multi-procesador que
tienen mltiples elementos de procesamiento dentro de una sola mquina y los
clsteres, MPPS y grids que utilizan varios equipos para trabajar en la misma tarea.
Muchas veces, para acelerar las tareas especficas, se utilizan arquitecturas
especializadas de computacin en paralelo junto a procesadores tradicionales.
Los programas informticos paralelos son ms difciles de escribir que los
secuenciales, porque la concurrencia introduce nuevos tipos de errores de software,
siendo las condiciones de carrera los ms comunes. La comunicacin y
sincronizacin entre diferentes subtareas son algunos de los mayores obstculos
para obtener un buen rendimiento del programa paralelo.
Paralelismo a nivel de Bit
Desde el advenimiento de la integracin a gran escala (VLSI) como tecnologa de
fabricacin de chips de computadora en la dcada de 1970 hasta alrededor de 1986,
la aceleracin en la arquitectura de computadores se lograba en gran medida
duplicando el tamao de la palabra en la computadora, la cantidad de informacin
que el procesador puede manejar por ciclo.
El aumento del tamao de la palabra reduce el nmero de instrucciones que el
procesador debe ejecutar para realizar una operacin en variables cuyos tamaos
son mayores que la longitud de la palabra. Por ejemplo, cuando un procesador de
8 bits debe sumar dos enteros de 16 bits, el procesador primero debe adicionar los
8 bits de orden inferior de cada nmero entero con la instruccin de adicin, a
continuacin, aadir los 8 bits de orden superior utilizando la instruccin de adicin
con acarreo que tiene en cuenta el bit de acarreo de la adicin de orden inferior, en
este caso un procesador de 8 bits requiere dos instrucciones para completar una
sola operacin, en donde un procesador de 16 bits necesita una sola instruccin
para poder completarla. Histricamente, los microprocesadores de 4 bits fueron
sustituidos por unos de 8 bits, luego de 16 bits y 32 bits, esta tendencia general lleg
a su fin con la introduccin de procesadores de 64 bits, lo que ha sido un estndar
en la computacin de propsito general durante la ltima dcada.
Paralelismo a nivel de instruccin
Un programa de ordenador es, en esencia, una secuencia de instrucciones
ejecutadas por un procesador. Estas instrucciones pueden reordenarse y
combinarse en grupos que luego son ejecutadas en paralelo sin cambiar el resultado
del programa. Esto se conoce como paralelismo a nivel de instruccin. Los avances
en el paralelismo a nivel de instruccin dominaron la arquitectura de computadores
desde mediados de 1980 hasta mediados de la dcada de 1990.
36

Los procesadores modernos tienen ''pipeline'' de instrucciones de varias etapas.


Cada etapa en el pipeline corresponde a una accin diferente que el procesador
realiza en la instruccin correspondiente a la etapa un procesador con un pipeline
de N etapas puede tener hasta n instrucciones diferentes en diferentes etapas de
finalizacin. El ejemplo cannico de un procesador segmentado es un procesador
RISC, con cinco etapas: pedir instruccin, decodificar, ejecutar, acceso a la memoria
y escritura. El procesador Pentium 4 tena un pipeline de 35 etapas.
Adems del paralelismo a nivel de instruccin del pipelining, algunos procesadores
pueden ejecutar ms de una instruccin a la vez. Estos son conocidos como
procesadores superescalares. Las instrucciones pueden agruparse juntas slo si no
hay dependencia de datos entre ellas. El scoreboarding y el algoritmo de Tomasulo
que es similar a scoreboarding pero hace uso del renombre de registros son
dos de las tcnicas ms comunes para implementar la ejecucin fuera de orden y
la paralelizacin a nivel de instruccin.
IF
i

ID
IF

EX
ID
IF

MEM
EX
ID
IF

WB
MEM
EX
ID
IF

WB
MEM
EX
ID

WB
MEM
EX

WB
MEM

WB

Un pipeline cannico de cinco etapas en una mquina RISC (IF = Pedido de


Instruccin, ID = Decodificacin de instruccin, EX = Ejecutar, MEM = Acceso a la
memoria, WB = Escritura).
Paralelismo de datos
El paralelismo de datos es el paralelismo inherente en programas con ciclos, que
se centra en la distribucin de los datos entre los diferentes nodos computacionales
que deben tratarse en paralelo. La paralelizacin de ciclos conduce a menudo a
secuencias similares de operaciones no necesariamente idnticas o funciones
que se realizan en los elementos de una gran estructura de datos. Muchas de las
aplicaciones cientficas y de ingeniera muestran paralelismo de datos. Una
dependencia de terminacin de ciclo es la dependencia de una iteracin de un ciclo
en la salida de una o ms iteraciones anteriores. Las dependencias de terminacin
de ciclo evitan la paralelizacin de ciclos.

37

IF
IF
i
t

ID
ID
IF
IF

EX
EX
ID
ID
IF
IF

MEM
MEM
EX
EX
ID
ID
IF
IF

WB
WB
MEM
MEM
EX
EX
ID
ID
IF
IF

WB
WB
MEM
MEM
EX
EX
ID
ID

WB
WB
MEM
MEM
EX
EX

WB
WB
MEM WB
MEM WB

Un procesador superescalar con pipeline de cinco etapas, capaz de ejecutar dos


instrucciones por ciclo. Puede tener dos instrucciones en cada etapa del pipeline,
para un total de hasta 10 instrucciones (se muestra en verde) ejecutadas
simultneamente.
Paralelismo de tareas
El paralelismo de tareas es la caracterstica de un programa paralelo en la que
clculos completamente diferentes se pueden realizar en cualquier conjunto igual o
diferente de datos. Esto contrasta con el paralelismo de datos, donde se realiza el
mismo clculo en distintos o mismos grupos de datos. El paralelismo de tareas por
lo general no escala con el tamao de un problema.
4.2.1 Taxonoma de las arquitecturas paralelas.
La clasificacin de Flynn ha demostrado funcionar bastante bien para la tipificacin
de sistemas, y se ha venido usando desde dcadas por la mayora de los arquitectos
de computadores. Sin embargo, los avances en tecnologa y diferentes topologas,
han llevado a sistemas que no son tan fciles de clasificar dentro de los 4 tipos de
Flynn. Por ejemplo, los procesadores vectoriales no encajan adecuadamente en
esta clasificacin, ni tampoco las arquitecturas hibridas. Para solucionar esto se han
propuesto otras clasificaciones, donde los tipos SIMD y MIMD de Flynn se suelen
conservar, pero que sin duda no han tenido el xito de la de Flynn. La figura 4.2
muestra una taxonoma ampliada que incluye alguno de los avances en
arquitecturas de computadores en los ltimos aos. No obstante, tampoco pretende
ser una caracterizacin completa de todas las arquitecturas paralelas existentes.

38

Figura 4.2.1.1 Clasificacin de las arquitecturas paralelas


4.2.2 Arquitecturas de los computadores secuenciales
A diferencia de los sistemas combinacionales, en los sistemas secuenciales, los
valores de las salidas, en un momento dado, no dependen exclusivamente de los
valores de las entradas en dicho momento, sino tambin de los valores anteriores.
El sistema secuencial ms simple es el biestable.
La mayora de los sistemas secuenciales estn gobernados por seales de reloj. A
stos se los denomina "sncronos" o "sincrnicos", a diferencia de los "asncronos"
o "asincrnicos" que son aquellos que no son controlados por seales de reloj. A
continuacin, se indican los principales sistemas secuenciales que pueden
encontrarse en forma de circuito integrado o como estructuras en sistemas
programados:
* Contador
* Registros
4.2.2.1

Taxonoma de Flynn.

La taxonoma de Flynn es la clsica clasificacin usada en computacin paralela, la


cual usa ideas familiares al campo de la computacin convencional para proponer
una taxonoma de arquitecturas de computadores. Esta es una de las ms viejas,
pero es la ms conocida hasta nuestros das. La idea central que se usa se basa en
el anlisis del flujo de instrucciones y de datos, los cuales pueden ser simples o
mltiples, originando la aparicin de 4 tipos de mquinas. Es decir, esta clasificacin
est basada en el nmero de flujos de instrucciones y de datos simultneos que
pueden ser tratados por el sistema computacional durante la ejecucin de un
programa. Un flujo de instruccin es una secuencia de instrucciones transmitidas
desde una unidad de control a uno o ms procesadores. Un flujo de datos es una
secuencia de datos que viene desde un rea de memoria a un procesador y
39

viceversa. Se pueden definir las variables ni y nd como el nmero de flujos de


instrucciones y datos, respectivamente, los cuales pueden ser concurrentemente
procesados en un computador. Segn eso, las posibles categoras son:
SISD (Single Instruction Stream, Single Data Stream)
Esta representa la clsica mquina de Von-Neumann, en la cual un nico programa
es ejecutado usando solamente un conjunto de datos especficos a l. Est
compuesto de una memoria central donde se guardan los datos y los programas, y
de un procesador (unidad de control y unidad de procesamiento), ver figura 1.2. En
este caso, ni = nd =1. En esta plataforma slo se puede dar un tipo de paralelismo
virtual a travs del paradigma de multitareas, en el cual el tiempo del procesador es
compartido entre diferentes programas. As, ms que paralelismo lo que soporta
esta plataforma es un tipo de concurrencia. Los PC son un ejemplo de mquinas
que siguen este tipo de procesamiento.

Figura 4.2.2.1.1 Arquitectura tipo SISD (Mquina Von-Neuman)


SIMD (Single Instruction Stream, Multiple Data Stream)
Arreglo de elementos de procesamiento, todos los cuales ejecutan la misma
instruccin al mismo tiempo. En este caso, ni =1 y nd > 1. El enfoque de paralelismo
usado aqu se denomina paralelismo de datos. Los arreglos de procesadores son
tpicos ejemplos de esta clase de arquitectura. En estas arquitecturas, un
controlador recibe y decodifica secuencias de instrucciones a ejecutar, para
despus enviarlas a mltiples procesadores esclavos. El arreglo de procesadores
procesa los datos que llegan a los diferentes procesadores, usando la instruccin
enviada por el controlador. Los procesadores estn conectados a travs de una red.
Los datos a tratar pueden estar en un espacio de memoria que es comn a todos
los procesadores o en un espacio de memoria propio a cada unidad de
procesamiento (ver figura 4.2.2.1.2). Todos los procesadores trabajan con una
perfecta sincronizacin. SIMD hace un uso eficiente de la memoria, y facilita un
manejo eficiente del grado de paralelismo. La gran desventaja es el tipo de

40

procesamiento (no es un tipo de procesamiento que aparece frecuentemente), ya


que el cdigo debe tener una dependencia de datos que le permita descomponerse.
Su funcionamiento es el siguiente: un simple controlador enva las instrucciones,
una a una, a un arreglo de procesadores que operan en el esquema maestroesclavo. Es decir, las instrucciones son difundidas desde la memoria a un conjunto
de procesadores. As, cada procesador es simplemente una unidad aritmticalgica y se tiene una sola unidad de control. Todos los procesadores ejecutan cada
operacin recibida al mismo tiempo, por lo cual, cada uno ejecuta la misma
instruccin sobre diferentes datos. Los sistemas modernos SIMD tienen un CPU
adicional para procesamiento escalar, de tal manera de mezclar operaciones entre
el arreglo de procesadores y el procesador secuencial estndar; esto es debido a
que en la mayora de las aplicaciones paralelas se tienen fases de cdigo secuencial
y de cdigo paralelo. De esta forma, la parte de cdigo secuencial es ejecutado en
el CPU adicional. Esto tambin implica dos procesos diferentes para mover los
datos entre el arreglo de procesadores y el procesador secuencial: en un caso se
difunden los datos desde el procesador secuencial al arreglo de procesadores; en
el otro caso, al moverse los datos del arreglo de procesadores al procesador
secuencial, los datos son reducidos.
Para el programador pareciera que se ejecutara su programa de manera secuencial,
con la diferencia de que sus intrucciones se ejecutan de manera mltiple sobre
diferentes datos y no una sola vez (por lo que para el usuario sigue siendo una
mquina secuencial desde el punto de vista de la programacin). Este tipo de
plataforma computacional se ha desarrollado debido al gran nmero de aplicaciones
cientficas y de ingeniera que se adaptan bien a l (procesamiento de imgenes,
simulacin de partculas, mtodos de elementos finitos, sistemas moleculares, etc.),
en las cuales se tiene una simple secuencia de instrucciones, operando al mismo
tiempo sobre un conjunto de datos. Un ejemplo de mquina que trabaja bajo este
enfoque es la CM-2.

Figura 4.2.2.1.2 Arquitectura tipo SIMD

41

MISD (Multiple Instruction Stream, Single Data Stream)


Estas son computadoras con elementos de procesamiento, cada uno ejecutando
una tarea diferente, de tal forma que todos los datos a procesar deben ser pasados
a travs de cada elemento de procesamiento para su procesamiento (ver figura
4.2.2.1.2). En este caso, ni > 1 y nd = 1. Implementaciones de esta arquitectura no
existen realmente, excepto ciertas realizaciones a nivel de mecanismos de
procesamiento tipo encauzamiento (pipelining en ingles) (internamente en los
procesadores RISC, etc.) o sistemas de tolerancia a fallas. Muchos autores
consideran que esta clase no corresponde a un modo de funcionamiento realista.
Otros autores consideran que representan el modo de procesamiento por
encauzamiento.
La idea es descomponer las unidades de procesamiento en fases, en donde cada
una se encarga de una parte de las operaciones a realizar. De esta manera, parte
de los datos pueden ser procesados en la fase 1 mientras otros son procesados en
la 2, otros en la tres, y as sucesivamente. El flujo de informacin es continuo y la
velocidad de procesamiento crece con las etapas. Este tipo de clasificacin de Flynn
puede ser incluida dentro de la clasificacin SIMD si se asemeja el efecto de estas
mquinas, al tener mltiples cadenas de datos (los flujos) sobre las etapas de
procesamiento, aunque tambin puede ser visto como un modo MIMD, en la medida
de que hay varias unidades y flujos de datos y cada etapa est procesando datos
diferentes.

Figura 4.2.2.1.3 Arquitectura tipo MISD


MIMD (Multiple Instruction Stream, Multiple Data Stream)
Es el modelo ms general de paralelismo, y debido a su flexibilidad, una gran
variedad de tipos de paralelismo puede ser explotados. Las ideas bsicas son que
mltiples tareas heterogneas puedan ser ejecutadas al mismo tiempo, y que cada
procesador opere independientemente con ocasionales sincronizaciones con otros.
Est compuesto por un conjunto de elementos de procesamiento donde cada uno
realiza una tarea, independiente o no, con respecto a los otros procesadores. La
conectividad entre los elementos no se especifica y usualmente se explota un
paralelismo funcional. La forma de programacin usualmente utilizada es del tipo
42

concurrente, en la cual mltiples tareas, quizs diferentes entre ellas, se pueden


ejecutar simultneamente. En este caso, ni > 1 y nd > 1. Muchos sistemas de
multiprocesadores y sistemas de mltiples computadores estn en esta categora.
Un computador MIMD es fuertemente acoplado si existe mucha interaccin entre
los procesadores, de lo contrario es dbilmente acoplado.
Las MIMD se pueden distinguir entre sistemas con mltiples espacios de
direcciones y sistemas con espacios de direcciones compartidos. En el primer caso,
los computadores se comunican explcitamente usando pase de mensajes entre
ellos segn una arquitectura NUMA (non-uniform memory access). En el segundo
caso, al usarse una memoria centralizada, se trabaja con modelos UMA. En el
primer caso se habla de MIMD a memoria distribuida y en el otro de MIMD a
memoria compartida. Por el problema de gestin del acceso concurrente a la
informacin compartida, se origina un cierto no determinismo en las aplicaciones
sobre estas plataformas.
4.2.2.2

Organizacin del espacio de direcciones de memoria.

La memoria de acceso secuencial son memorias en la cuales para acceder a un


registro
en
particular
se
tienen
que
leer
registro por registro desde el inicio hasta alcanzar el registro
particular
que contiene el dato que se requiere. Estas memorias se clasifican en:
Registros de desplazamiento
Dispositivos por acoplamiento por carga
Memorias de burbuja
4.3 Sistemas de memoria compartida: multiprocesadores
Se denomina multiprocesador a un sistema que cuenta con ms de un
microprocesador, funcionando de modo paralelo e independiente del resto, para la
ejecucin de una o varias tareas, bajo el control de un nico sistema operativo. Son,
pues, sistemas MIMD, en los cuales varias unidades funcionales realizan diferentes
operaciones sobre diferentes datos. Una de las caractersticas ms interesantes de
estos sistemas es el uso de memoria compartida, mediante el cual todos los
procesadores disponen de un espacio de direccionamiento comn1.
Una forma de reducir ms la contencin de accesos a memoria es mediante la
utilizacin de bancos de memoria a los que se pueda acceder en paralelo y la
incorporacin de memorias cachs. Sin embargo, de resultas de esta divisin en
mdulos de memoria y de la integracin de las cachs aparecen dos problemas: la
consistencia de memoria y la coherencia de cach. La consistencia tiene que ver
1

http://www.atc.uniovi.es/inf_superior/4atc/trabajos/paralelas/4SM%20de%20Memoria%20Compartida%20comerciales-memoria.pdf

43

con el orden relativo de escrituras en memoria, y la coherencia tiene que ver con la
visibilidad de una escritura en memoria por parte de todos los procesos
Los multiprocesadores son computadores que tienen memoria compartida y se
pueden clasificar en UMA (uniform memory access), NUMA (nonuniform memory
access) y COMA (cache only memory access).
Los nombres que reciben las arquitecturas multiprocesador UMA y NUMA tienen
que ver con el tiempo de acceso a la memoria principal, no tenindose en cuenta la
diferencia de tiempo entre un acierto o un fallo en cach. De lo contrario, tambin
deberamos considerar arquitectura NUMA a cualquier sistema con jerarqua de
memoria, incluidos los uniprocesadores.
En cuanto a la arquitectura COMA, que no tuvo mucho xito, se basa en tener la
memoria compartida como si fuera una gran cach.
UMA2
En este tipo de arquitectura, como bien dice su nombre, todos los accesos a
memoria tardan el mismo tiempo. Seguramente podemos pensar que es difcil que
tengamos el mismo tiempo de acceso si la memoria, aunque compartida, est
dividida en mdulos a los que se accede a travs de una red de interconexin
basada en switches. Eso es cierto y, para conseguir esta uniformidad de acceso, se
tiene que aumentar el tiempo de los accesos ms rpidos.
Switch. Es un dispositivo que interconecta dos o ms segmentos de red (links),
pasando datos de un segmento a otro segn la configuracin de conexiones y la
direccin que deba tomar el dato a transferir.
Por qu se busca esta uniformidad de tiempo de acceso? Porque para los
programadores es ms fcil deducir qu parmetros ayudarn a mejorar sus
programas si el tiempo de acceso es igual para cualquier acceso. De lo contrario,
como pasa con las arquitecturas NUMA*, deberan ser mucho ms conscientes de
la arquitectura que tiene el computador y de cmo estn distribuidos los datos en la
arquitectura en cuestin.
La figura 4.3.1 muestra un sistema multiprocesador donde los procesadores se
conectan a la memoria compartida utilizando un bus (dato y direcciones). Las
conexiones a travs de un bus son fciles de construir, pero pueden tener mayor
contencin de acceso a memoria que otras redes de interconexin. Sin embargo, el
hecho de que todos los procesadores accedan al mismo bus para acceder a
memoria puede significar un cuello de botella. Una alternativa a tener un nico bus
sera tener varios buses, de tal forma que se distribuiran los accesos a los mdulos
de memoria. Tambin se podra usar una red de interconexin ms compleja, como
2

https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arqui
tecturas_de_computadores_avanzadas_(Modulo_2).pdf P. 10

44

una red crossbar, que permita evitar conflictos entre los accesos a las memorias
que no van al mismo mdulo, tal y como se muestra en la figura 4.3.2.

Figura 4.3.1. Multiprocesador de memoria compartida a travs de un bus.

Figura 4.3.2. Multiprocesador de memoria compartida a travs de un crossbar.

Por otra parte, una forma de reducir la contencin de los accesos a memoria* es
reduciendo la cantidad de estos accesos por parte de los procesadores, y se puede
conseguir incorporando jerarquas de memoria en los mismos. De esta forma, si los
programas explotan la localidad de datos, los accesos a memoria se reducirn.
Las mquinas UMA se hicieron ms y ms populares desde aproximadamente el
ao 2000, ao en el que podramos decir que hubo un punto de inflexin en la
tendencia de los diseos de las arquitecturas de los uniprocesadores, debido
bsicamente al consumo energtico y a la consecuente bajada de rendimiento en
las aplicaciones. La aparicin de los procesadores CMP o chip multi-processors
fueron el resultado natural de intentar aprovechar las mejoras tecnolgicas
existentes, y aprovechar as mejor el rea del chip, sin aumentar considerablemente
el consumo energtico.
Los procesadores CMP son procesadores de tipo UMA que incorporan ms de una
unidad de procesamiento dentro de un nico chip. Algunos ejemplos con unidades
de procesamiento homogneas (todas las CPU son iguales) son los Intel Core2 Duo
(con 2 CPU), Intel Nehalemi7 (con 4 CPU), AMD Istanbul (con 6 CPU), Sun
SPARC64-VIIIfx (con 8 CPU), IBM Power7 (con 8 CPU), etc. Pero tambin existen

45

con unidades heterogneas, como es el caso del Intel Sandy Bridge, que tiene un
procesador de carcter general y una unidad de procesamiento grfico.
NUMA3
En los multiprocesadores NUMA, a diferencia de los UMA, los accesos a memoria
pueden tener tiempos distintos. En estas mquinas la memoria tambin est
compartida, pero los mdulos de memoria estn distribuidos entre los diferentes
procesadores con el objetivo de reducir la contencin de acceso a memoria.
El mdulo de memoria que est junto a un procesador en un mismo nodo recibe el
nombre de memoria local a este procesador. As, los accesos de un procesador a
su memoria local suelen ser mucho ms rpidos que los accesos a la memoria local
de otro procesador (memoria remota). La figura 4.3.3 muestra un esquema bsico
de la distribucin de memoria en este tipo de multiprocesadores, donde se observa
la distribucin de los mdulos entre los diferentes nodos. Estos nodos tienen un bus
local para acceder a la memoria local, y se conectan a la red de interconexin para
acceder a la memoria situada en otros nodos. Tambin observamos un hardware
llamado directorio que sirve para mantener la coherencia de los datos y que
explicaremos, ms adelante, en el mdulo. Las redes de interconexin tpicas de
estos sistemas son las redes de tipo tree y las de bus jerrquico.

Figura 4.3.3. Multiprocesador NUMA de memoria compartida.

Desde el punto de vista del programador, ste deber ser consciente de la


arquitectura NUMA para poder acercar los datos a la memoria local del procesador
que tenga que operar con esos datos. De esta forma se podrn reducir los accesos

https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arquit
ecturas_de_computadores_avanzadas_(Modulo_2).pdf P. 12

46

a memorias locales de otros procesadores (memorias remotas) y, como


consecuencia, se mejorar el tiempo de ejecucin de la aplicacin.
Por otra parte, al igual que pasaba con las arquitecturas UMA, tambin se
incorporaron las cachs para reducir la contencin de memoria. Pero, adems, con
estas cachs tambin se intenta ocultar la diferencia de tiempo de acceso a
memoria entre memoria local y remota. Segn tengan o no cach, los
multiprocesadores NUMA se clasifican en cache coherence NUMA (ccNUMA) o
Non-Coherence NUMA respectivamente. El trmino de coherencia o no coherencia
proviene de mantenerla o no en los datos duplicados en las cachs.
Un ejemplo de multiprocesador ccNUMA es la SGI Altix UV 1000, que est formado
por 224 procesadores Intel Xeon X7542 de 64 bits, a 2,66 GHz de 6 ncleos, con
un total de 1.344 ncleos de clculo. Otros ejemplos de mquinas NUMA son la SGI
Origin 3000, el Cray T3E y el AMD Opteron.
COMA4
Aunque las arquitecturas ccNUMA ayudan a ocultar la diferencia de tiempo entre
accesos locales y remotos, esto dependender de la localidad de datos que se
explote y la capacidad de las cachs. As, en el caso de que el volumen de los datos
a los que se accede sea mayor que la capacidad de la cach, o el patrn de acceso
no ayude, volveremos a tener fallos de cach y el rendimiento de las aplicaciones
no ser bueno.
Las arquitecturas COMA (cache only memory access) intentan solucionar este
problema haciendo que la memoria local a cada procesador se convierta en parte
de una memoria cach grande. En este tipo de arquitecturas, las pginas de
memoria desaparecen y todos los datos se tratan como lneas de cach. Sin
embargo, con esta estrategia surgen nuevos interrogantes: cmo se localizan las
lneas de cach? y cuando una lnea se tiene que reemplazar, qu sucede si esta
es la ltima? Estas preguntas no tienen fcil solucin y pueden requerir de soporte
hardware adicional. Normalmente se implementan utilizando un mecanismo de
directorio distribuido
As, aunque este tipo de mquinas prometan mejor rendimiento que las ccNUMA,
se han construido pocas. Las primeras COMA que se construyeron fueron la KSR1 y la data diffusion machine.

Multiprocesadores basados en un bus.

https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arquit
ecturas_de_computadores_avanzadas_(Modulo_2).pdf P.13

47

En un sistema multiprocesador basado en bus, todos los procesadores comparten


este medio. El bus es la forma ms fcil de conectar los procesadores con la
memoria y el que mejor escala desde el punto de vista econmico con el nmero de
nodos/procesadores conectados al bus. La figura 4.3.4 muestra la estructura de un
multiprocesador
CPU

CPU

CPU

Memoria
bus

Figura 4.3.4. Estructura de un multiprocesador.

Otra ventaja de este sistema es que todos los procesadores estn conectados con
la memoria de forma directa, y todos estn a una distancia de un bus. La figura
4.3.5 muestra la conexin de dos procesadores a la memoria a travs de un bus.
En estas conexiones una parte del bus se utiliza para comunicar la direccin de
memoria a la que se quiere acceder, otra para los datos, y otra para las seales de
control.

Figura 4.3.5 Multiprocesador de memoria compartida a travs de un bus


(datos, direccin y control).

Para evitar que dos o ms CPUs intenten el acceso a la memoria al mismo tiempo,
se necesita algn tipo de arbitraje del bus. El CPU debe pedir permiso para
conseguir el bus. La concesin puede hacerse de forma centralizada, utilizando un
dispositivo de arbitraje de bus, o de forma descentralizada, donde el primer CPU
que realice una solicitud en el bus ganar cualquier conflicto.
La desventaja es la sobrecarga del bus.
Una solucin sera equipar a cada CPU con un cach husmeador (figura 4.3.6).
CPU

CPU

CPU

Cache

Cache

Cache

Memoria

bus

48

Figura 4.3.6. Estructura de un multiprocesador con cach husmeador.

Un protocolo en particular comn es el de escritura a travs del cach. Cuando un


CPU lee por primera vez una palabra de memoria, esa palabra es llevada por el bus
y guardada en el cach del CPU solicitante.
Puede suceder que una palabra en particular se oculte en dos o ms CPU al mismo
tiempo.
Operacin de lectura.

Si la palabra no est en el cach, entonces buscarla en la memoria y copiarla


a su cach.

Si la palabra est en el cach, tomar el dato de ah.

Operacin de escritura

Si ningn CPU tiene la palabra en su cach, entonces la palabra es


actualizada en memoria, como si el ocultamiento no hubiera sido utilizado.

Si el CPU (que realiza la escritura) tiene la nica copia de la palabra, se


actualiza su cach y tambin la memoria mediante el bus.

Si dos o ms CPU tienen la palabra, entonces se actualiza la palabra en el


cach y en la memoria, y se invalidan las entradas de esa palabra en los
cachs de los otros CPU. As la palabra slo la tendr la memoria y un colo
cach.

Una alternativa a invalidar otras entradas de cach es actualizarlas todas, pero esto
puede resultar ms lento.
Una ventaja de este protocolo es que es fcil de entender e implantar, la desventaja
es que todas las escrituras utilizan el bus.
Existe otro tipo de protocolos como el protocolo de membresa. Una versin de este
protocolo plantea lo siguiente. Se manejan bloques de cach, cada uno de los
cuales puede estar en uno de los siguientes estados (figura 4.3.7):
1. INVALIDO: Este bloque de cach no contiene datos vlidos.
2. LIMPIO: La memoria est actualizada, el bloque puede estar en otros cachs.
3. SUCIO: La memoria es incorrecta; ningn otro cach puede contener al
bloque.
49

La memoria
es correcta
B

Estado inicial. La palabra


W que contiene el valor
w1 est en la memoria y
tambin est en el cach
de B

W1

W1

limpio

W1

W1
limpio

W2

W1

bus

La memoria
es correcta

W1

limpio

bus

W1

sucio

La memoria
ya no es
correcta

bus

A lee la palabra W y
obtiene W1. B no
responde a la lectura,
pero la memoria s.

A escribe un valor W2. B


husmea en el bus, ve la
escritura e invalida su
entrada. La copia de A se
marca como sucio.

invalido

W3

W1

W1

sucio

La memoria
ya no es
correcta

bus

A escribe W de nuevo.
Esta y las escrituras
posteriores por A se
realizan de manera local,
sin trfico en el bus.

invalido

W3

W1

W3

W1

invalido
invalido

La memoria
ya no es
correcta

bus
sucio

C lee o escribe W. A ve la
solicitud al husmear en el bus,
proporciona el valor e invalida
su propia entrada. C tiene
ahora la nica copia vlida.

50

Figura 4.3.7. Protocolo de membresa.

La palabra permanece el estado SUCIO hasta que se elimine del cach donde se
encuentra en la actualidad por razones de espacio. En este momento, desaparece
de todos los cachs y se escribe en la memoria. Este protocolo tiene tres
propiedades importantes:
1. La consistencia se logra haciendo que todos los cachs husmeen el bus.
2. El protocolo se integra dentro de la unidad de administracin de memoria.
3. Todo el algoritmo se realiza en un ciclo de memoria.
La desventaja es que no funciona para multiprocesadores de mayor tamao y nada
es vlido para la memoria compartida distribuida.
Multiprocesadores basados en un anillo
Ejemplo: Memnet
En Memnet, un espacio de direcciones se divide en una parte privada y una
compartida (vase figura 4.3.8).
La parte compartida se divide en bloques de 32 bytes, unidad mediante la cual se
realizan las transferencias entre las mquinas.
Las mquinas Memnet estn conectadas mediante un anillo de fichas modificado.
El anillo consta de 20 cables paralelos, que juntos permiten enviar 16 bits de datos
y 4 bits de control cada 100 nanosegundos, para una velocidad de datos de 160
Mb/seg.
Dispositivo
Memnet
MMU

Cache

Interrupcin

Mem. de origen
Exclusivo

CPU

Figura 4.3.8. Memnet.


Valido

Origen

Posicin

51

Un bloque exclusivo de lectura puede estar presente en varias mquinas, uno de


lectura-escritura debe estar presente en una sola mquina.
Los bits en el dispositivo Memnet indican uno o ms de los siguientes estados:
VALIDO: El bloque est presente en el cach y est actualizado.
EXCLUSIVO: La copia local es la nica.
ORIGEN: Se activa si sta es la mquina origen del bloque.
INTERRUPCION: Se utiliza para forzar interrupciones.
POSICION: Indica la localizacin del bloque en el cach si est presente y es vlido.

Protocolo Memnet.
Lectura.
Cuando un CPU desea leer una palabra de la memoria compartida, la direccin de
memoria por leer se transfiere al dispositivo Memnet, el cual verifica la tabla del
bloque para ver si est presente. Si es as, la solicitud es satisfecha de inmediato.
En caso contrario, el dispositivo Memnet espera hasta capturar la ficha que circula;
despus, cooca un paquete de solicitud en el anillo y suspende el CPU. El paquete
de solicitud contiene la direccin deseada y un campo vaco de 32 bytes.
Cada dispositivo Memnet en el anillo verifica si tiene el bloque. De ser as, coloca el
bloque en el campo vaco y modifica el encabezado del paquete para inhibir la
accin de las mquinas posteriores.
Si el bit exclusivo del bloque est activo, se limpia. Cuando el paquete regresa al
emisor, se garantiza que contiene al bloque solicitado. El CPU que enva la solicitud
guarda el bloque, satisface la solicitud y libera al CPU.
Si la mquina solicitante no tiene espacio libre en su cach para contener el bloque
recibido, entonces toma al azar un bloque oculto y lo enva a su origen, con lo que
libera un espacio de cach. Los bloques cuyo bit origen estn activados nunca se
eligen, pues se encuentran en su origen.
Escritura.
Tenemos tres casos:
a) Si el bloque contiene la palabra por escribir est presente y es la nica
copia en el sistema, (el bit exclusivo est activado) la palabra solo se
escribe de manera local.
b) Si est presente el bloque, pero no es la nica copia, se enva primero
un paquete de invalidacin por el anillo para que las otras mquinas
52

desechen sus copias del bloque por escribir. Cuando el paquete de


invalidacin regresa al solicitante, el bit exclusivo se activa para ese
bloque y se procede a la escritura local.
c) Si el bloque no est presente, se enva un paquete que combina una
solicitud de lectura y una de invalidacin. La primera mquina que
tenga el bloque lo copia en el paquete y desecha su copia. Todas las
mquinas posteriores solo desechan el bloque de sus cachs. Cuando
el paquete regresa al emisor, ste lo guarda y escribe en l.
La ventaja de este protocolo es que se puede aplicar a multicomputadoras.

Principales Aproximaciones a DSM


Existen tres aproximaciones a la implementacin de memoria compartida
distribuida, las cuales involucran el uso de hardware, memoria virtual o bibliotecas
de soporte. Estos no son mutuamente exclusivas necesariamente.
Basada en hardware. Por ejemplo, Dash y PLUS. El conjunto de procesadores y
los mdulos de memoria estn conectados va una red de alta velocidad. El
problema es la escalabilidad.
Basado en pginas. Poe ejemplo Ivy, Munin, Mirage, Clouds, Choices, COOL y
Mether, todas implanta DSM como una regin de memoria virtual que ocupa el
mismo rango de direccin en el espacio de direcciones de cada proceso
participante. En cada caso el kernel mantiene la consistencia de datos dentro de las
regiones DSM como parte del manejo de fallo de pgina.
Basado en bibliotecas. Algunos lenguajes o extensiones de lenguaje tales como
ORCA y Linda soportan formas de DSM.

53

4.3.1 Redes de interconexin dinmicas o indirectas5


Las redes de interconexin dinmicas son convenientes en los casos en q se desee
una red de propsito general ya que son fcilmente reconfigurables. Tambin por o,
este tipo de redes facilitan mucho la escalabilidad. En general, las redes dinmicas
necesitan de elementos de conexin especficos como pueden ser rbitros de bus,
conmutadores, etc. Las principales topologas de redes dinmicas son las
siguientes:
Buses
Podramos definir un bus como un conjunto de lneas que permite comunicar
selectivamente un cierto nmero de componentes o dispositivos de acuerdo a
ciertas normas de componentes que se conectan son procesadores, bancos de e
de un bus es que slo permite una transferencia al mise que haya varias
peticiones de comunicacin simultneas, debe haber un rbitro de bus que vaya
ordenando y dando paso, una a una, a las diferentes peticiones. Este rbitro ser
un circuito digital que lleve control de los momentos en que el bus est ocupado.
Para recalcar ms esta forma de funcionamiento, a veces a los buses tambin se
les denomina buses de tiempo compartido. Los buses son una forma barata de
comunicacin que tiene la ventaja de ser muy fcilmente reconfigurables. Sus
inconvenientes son su bajo ancho de banda y su gran latencia debida a las esperas
que tienen que efectuar las peticiones de comunicacin. En la figura 4.3.1.1(a) se
muestra una estructura de bus. Existen variantes de esta estructura que,
incrementando muy poco el coste, pueden mejorar notablemente las prestaciones:
estas variantes se basan en disponer de una jerarqua de buses, de forma que en
cada uno de ellos pueda establecerse una comunicacin en su nivel de forma
independiente y simultnea a los dems. Un ejemplo de este tipo de estructura se
ilustra en la figura 4.3.1.1(b).
Redes de lneas cruzadas o matriz de conmutacin (crossbar)
En esta red, cada nodo est conectado con todos los dems a travs de un
conmutador de lneas cruzadas (crossbar switch) en la forma indicada en la
figura 4.3.1.2. La red de lneas cruzadas puede interpre- tarse como una central
telefnica que conecta los nodos en funcin de las necesidades de cada momento.
Cada conmutador puede proporcionar una conexin dedicada entre cada par de
elementos que se quiera conectar. La posicin de cada conmutador se cambia dinmicamente segn las necesidades del programa. Este tipo de redes se ha
empleado para conectar procesadores con mdulos de memoria. Un ejemplo de ello
es el multiproce- sador C.mpp de la Universidad Carnegie-Mellon (Wulf & Bell,
1972). Como fcilmente puede comprenderse, en ese caso, cada mdulo de
memoria slo puede responder a una sola peticin en cada momento, aunque varios
procesadores (si fuera necesario, todos) pueden acceder a diferentes mdulos de
5

http://www.infor.uva.es/~bastida/Arquitecturas%20Avanzadas/Redes.pdf P. 100

54

memoria simultneamente. Tambin pueden utilizarse las redes de lneas cruzadas


para conectar N procesadores con ellos mismos; de esta forma, si se efectan todas
las conexiones posibles, de todas las formas distintas, podran construir las N!
permutaciones de los N procesadores.
Las principales ventajas de las redes de lneas cruzadas es que no son bloqueantes
y son fcilmente escalables. Su mayor inconveniente es que precisa gran nmero
de conmutadores, ya que son necesarios N 2 conmutadores para una red cuadrada
de lado N.
Redes multietapa o MIN (Multistage interconnection network)
Una red de este tipo est formada por una serie de capas de mdulos conmutadores
p q. Estos conmutadores pueden cambiar dinmicamente de posicin para
establecer las conexiones deseadas en cada momento. Las diferentes clases de
redes multietapa que se vern a continuacin, difieren en el tipo de mdulo
conmutador empleado y en la forma de interconectarlos (interconexin entre etapas,
ISC: interstage connection). Un esquema genrico de una red multietapa se muestra
en la figura 4.3.1.3. La ventaja de las redes multietapa sobre las de lneas cruzadas
es el menor nmero de conmutadores, que es del orden de log 2 , aunque vara
en funcin del tipo concreto de red, sin embargo, algunas de ellas son bloqueantes.

55

Figura 4.3.1.1. Estructura de bus nico (a) y bus jerarquizado (b).

56

Figura 4.3.1.2. Red de lneas cruzadas (crossbar).

Las principales clases de redes multietapa son:

Redes omega: esta red de N entradas est formada por log 2 etapas de

/2 mdulos conmutadores 2 2 cada una. En total, la red tendr ( 2 ) log 2


conmutadores. Por supuesto, cada conmutador se gobierna de forma
independiente a los dems. El patrn de interconexin entre las etapas es un
perfect shffle. Un esquema de este tipo se muestra en la figura 4.3.1.4.
Redes de lnea base (Wu & Feng, 1980): las redes de lnea base estn
formadas por mdulos conmutadores de lneas cruzadas, 2 2, y se pueden
generar recursivamente de la siguiente forma: se unen las entradas de cada
pareja de conmutadores del ltimo nivel, mediante un perfect shuffle, a las
salidas de los conmutadores de la etapa anterior. Se agrupan las entradas
de doble nmero de conmutadores en esa etapa, formando otro perfect
shuffle hacia el nivel anterior. Se repite este proceso hasta llegar a un nico
perfect shuffle que una las salidas de todos los conmutadores del que ser
el primer nivel. En la figura 4.3.1.5(a) se muestra una red de lnea base de
16 16 y en (b) puede verse la construccin recursiva de una red de lnea
57

base genrica de a partir de otras dos de /2 /2. Evidentemente,


si se mira esta red desde las entradas, se vern permutaciones de perfect
shuffle inverso.

Figura 4.3.1.3. Red genrica multietapa.

Figura 4.3.1.4. Estructura de una red omega.


58

Figura 4.3.1.5. (a) Red de lnea base y (b) su construccin recursiva.

Redes mariposa (butterfly network): Una red mariposa de est


formado por columnas de 1 conmutadores unidas por 1

59

permutaciones mariposa de base y orden 1 hasta 1. En la figura 4.3.1.5


pude verse una red mariposa de 23 23 .
Es curioso observar que una red mariposa de se puede construir a
partir de dos redes mariposa 1 1 , aadiendo una columna de 1
conmutadores y uniendo las dos redes con la nueva columna mediante una
permutacin mariposa de base y orden 1.

Redes Delta: una red delta se define como una red de interconexin de
con etapas formadas por mdulos conmutadores de lneas cruzadas de
y cuya red de interconexin de etapas es un a-shuffle. En la figura
4.3.1.6 se muestra una red delta genrica de . En la figura 4.3.1.7
puede verse el ejemplo de una red delta de 23 23 . Una caracterstica de
esta red es que la primera etapa tiene 1 mdulos conmutadores, por tanto,
la segunda etapa tendr 2 conmutadores ya que, a cada uno de los
conmutadores de la etapa anterior habr que multiplicarlo por el nmero de
salidas, , y dividirlo por el nmero de entradas, , para obtener el nmero
de conmutadores de la etapa siguiente. En general, la etapa tendr 1
y, por tanto, la ltima etapa() tendr 1 conmutadores. Esto hace que la
red tenga salidas. Se puede demostrar que el nmero total de
conmutadores de una red delta es:

1 =

60

Figura 4.3.1.5. Red mariposa de .

Figura 4.3.1.6. Red delta genrica de .

61

Figura 4.3.1.7. Red delta de .

Redes de Closs: estas redes constan de tres etapas construidas con


conmutadores de lneas cruzadas, pero de diferentes tamaos en cada
etapa. Cada red de Closs se caracterizan por tres parmetros: , y ; el
nmero de entradas de la red es = . La primera etapa dispone de
conmutadores de entradas y salidas, la segunda etapa contiene
conmutadores de entradas y salidas. La conexin entre ambas etapas se
efectan de la forma siguiente: la salida del conmutador de la primera
etapa se conecta con la entrada del conmutador de la segunda (esto en
realidad es un r-shuffle). La tercera etapa tiene conmutadores de
entradas y salidas, siendo las conexiones entre las dos ltimas etapas
simtricas respecto a las de las dos primeras (es decir forman un m-shuffle).
Una de las ventajas de las redes Closs es que, dimensionndolas
convenientemente, se puede conseguir que sea reacondicionable o, incluso,
no bloqueante (vase la figura 4.3.1.8).
Redes de Benes: Una red de Benes (vase la figura 4.3.1.9) es un red de
Closs con = 2 y = 2, en que los conmutadores de la etapa central son,
a su vez, redes de Closs con = 2, = 2, siendo la mitad de la de la red
completa. Esto significa que las permutaciones entre etapas son perfect

62

shuffle inverso (de la primera a la segunda) y perfect shuffle, de la segunda


a la tercera.

Figura 4.3.1.8. Red de Closs.

Figura 4.3.1.9. Red de Benes.

63

4.3.1.1 Redes de medio compartido6


La estructura de interconexin menos compleja es aquella en la que el medio de
transmisin est compartido por todos los elementos de comunicacin. En estas
redes de medio compartido, slo un dispositivo puede utilizar la red en un momento
dado. Cada elemento conectado a la red tiene circuitos para manejar el paso de
direcciones y datos. La red en s misma acta, normalmente, como un elemento
pasivo ya que no genera mensajes.
Un concepto importante es el de estrategia de arbitraje que determina cmo se
resuelven los conflictos de acceso al medio. Una caracterstica de un medio
compartido es la posibilidad de soportar un broadcast atmico en donde todos los
dispositivos conectados al medio pueden monitorizar actividades y recibir la
informacin que se est transmitiendo en el medio compartido. Esta propiedad es
importante para un soporte eficiente de muchas aplicaciones que necesitan
comunicaciones del tipo uno a todos o uno a muchos, como las barreras de
sincronizacin y protocolos de coherencia de cach basados en snoopy. Debido al
limitado ancho de banda, un medio compartido nicamente puede soportar un
nmero limitado de dispositivos antes de convertirse en un cuello de botella.
Las redes de medio compartido pueden dividirse en dos grandes grupos: las redes
de rea local, usadas principalmente en la construccin de redes de ordenadores
cuya distancia mxima no supera unos pocos kilmetros, y los buses usados en la
comunicacin interna de los uniprocesadores y multiprocesadores.
Bus del sistema (Backplane bus)
Un bus del sistema es la estructura de interconexin ms simple para los
multiprocesadores basados en bus. Se usa normalmente para interconectar
procesadores y mdulos de memoria para proporcionar una arquitectura UMA. La
figura 4.3.1.1.1 muestra una red con un bus nico. Un bus de este tipo consta
usualmente de 50 a 300 hilos fsicamente realizados mediante una placa base.
Bus

Figura 4.3.1.1.1. Una red con bus nico. (M = memoria; P = procesador.).

Existen tres tipos de informacin en un bus de este tipo: datos, direcciones y seales
de control. Las seales de control incluyen la seal de peticin del bus y la seal de
6

http://informatica.uv.es/guia/asignatu/AAC/AA/apuntes/aa.pdf P. 89 y 99

64

permiso de acceso al bus, entre muchas otras. Adems del ancho de las lneas de
datos, el mximo ancho de banda depende de la tecnologa. El nmero de
procesadores que pueden conectarse al bus depende de varios factores, como la
velocidad del procesador, el ancho de banda del bus, la arquitectura cach y el
comportamiento del programa.
Un bus de sistema est formado por un conjunto de conductores para la transaccin
de datos entre procesadores, mdulos de memoria, y dispositivos perifricos
conectados al bus. En el bus slo puede haber una transaccin a un tiempo entre
una fuente (maestro) y uno o varios destinos (esclavos). En el caso de que varios
maestros quieran realizar transacciones, la lgica de arbitraje del bus debe decidir
quin ser el siguiente que consiga el bus y realice la transaccin.
Por esta razn a los buses digitales se les llama buses de contencin o buses de
tiempo compartido. Un sistema basado en bus tiene un coste bajo comparado con
otros sistemas de conexin. Su uso est muy extendido en la industria y existen
varios estndares del IEEE disponibles.
El bus es un camino de comunicaciones comn entre procesadores, memoria y los
subsistemas de entrada/salida. El bus se realiza en la mayora de los casos sobre
una placa de circuito impreso. Las tarjetas con los procesadores, memorias, etc. se
conectan a este circuito impreso o placa madre a travs de conectores o cables.
El multiprocesador basado en bus es uno de los sistemas multiprocesador ms
utilizados en computadores de prestaciones medias. Ello es debido a su bajo coste,
facilidad de diseo, etc. El principal problema que tienen es su baja escalabilidad lo
que no permite tener sistemas con muchos procesadores de forma eficiente.
Dependiendo del ancho de banda del bus y de los requisitos de los procesadores
que incorpora, un bus puede albergar entre 4 y 16 procesadores de forma eficiente.
Por encima de estos nmeros mximos, que dependen del procesador y el bus, el
canal de conexin, en este caso el bus, se convierte en el cuello de botella del
sistema.
A pesar de esto, y dado que los requisitos de la mayora de los sistemas informticos
no necesitan de muchos procesadores, se suele utilizar el sistema basado en bus
por su bajo coste y facilidad de diseo. Incluso en sistemas ms complejos se sigue
utilizando el bus, de manera que para aumentar la escalabilidad del sistema se
disponen varios buses formando una jerarqua, o bien, se interconectan varios
buses entre s a travs de una red.
Hay varios estndares de buses disponibles para el diseador. Muchas veces estos
buses han surgido a partir de un sistema concreto y se ha intentado luego que fuera
lo ms estndar posible con los problemas que este tipo de poltica suele acarrear.
Ejemplos de esto los encontramos en el bus del PC, que actualmente es obsoleto,
o el popular VME con sus sucesivas extensiones que sigue siendo, a pesar de todo,
el bus ms utilizado en sistemas empotrados a medida.
65

Para evitar los problemas del paso del tiempo, y garantizar la portabilidad del bus
independientemente del procesador, han aparecido en los ltimos tiempos buses
que son independientes de una arquitectura especfica y que adems han sido
ideados para hacer frente a los sucesivos avances tecnolgicos. Un ejemplo de bus
de este tipo es el bus de altas prestaciones Futurebus+, que es el estndar 896 del
IEEE. Este bus fue creado por un grupo de trabajo a partir de una hoja en blanco,
sin tener en cuenta ningn procesador en particular, y con la intencin de definir un
bus de muy altas prestaciones que hiciera frente a sucesivos avances tecnolgicos.
Esta labor no ha sido sencilla y de hecho se ha tardado entre 10 y 15 aos, desde
que surgi la idea, en tener una definicin completa del bus.
LANs de medio compartido
Es posible utilizar una LAN de alta velocidad como una columna vertebral que
permita interconectar ordenadores para proporcionar un entorno de computacin
distribuido.
Fsicamente, una LAN usa hilos de cobre o fibra ptica como medio de transmisin.
La topologa utilizada puede ser un bus o un anillo. Debido a razones de
implementacin y rendimiento, no es prctico tener un control centralizado o algn
mecanismo fijo de asignacin de acceso que determine quin puede acceder al bus.
Las tres alternativas principales de LANs basadas en un control distribuido se
describen a continuacin.
Bus de contencin: El mecanismo de arbitraje de bus ms popular es que todos
los dispositivos compitan para tener el acceso exclusivo al bus. Debido a la
comparticin del medio todos los dispositivos pueden monitorizar el estado del bus
y detectar colisiones. Aqu, el trmino colisin significa que dos o ms dispositivos
estn usando el bus al mismo tiempo y sus datos colisionan. Cuando se detecta una
colisin, los dispositivos causantes de la misma abortan la transmisin para
intentarlo posteriormente. Entre las LANs que utilizan este mecanismo est la
Ethernet que adopta el protocolo CSMA/CD (Carrier-Sense Multiple Access with
Collision Detection). El ancho de banda de la Ethernet es 10 Mbps y la distancia
mxima es de 250 metros (cable coaxial). Para romper la barrera de 10 Mbps ha
aparecido Fast Ethernet que puede proporcionar un ancho de banda de 100 Mbps.
Token Bus: Una desventaja del bus de contencin es su naturaleza no
determinista, ya que no puede garantizar cunto se debe esperar hasta ganar el
acceso al bus. Por lo tanto, el bus de contencin no es el idneo para soportar
aplicaciones de tiempo real. Para eliminar el comportamiento no determinista,
aparece un enfoque alternativo que implica pasar un testigo entre los dispositivos
conectados a la red. El dispositivo que tiene el testigo tiene el acceso al bus. Cuando
termina de transmitir sus datos, el testigo se pasa al siguiente dispositivo segn
algn esquema prefijado. Restringiendo el tiempo mximo que se puede estar en
posesin del testigo se puede garantizar una cota superior al tiempo que un
66

dispositivo debe esperar. Arcnet soporta token bus con un ancho de banda de 2.4
Mbps.
Token Ring: Una extensin natural al token bus es la de utilizar una estructura de
anillo. El token ring de IBM proporciona anchos de banda de 4 y 16 Mbps sobre
cable coaxial. El protocolo FDDI (Fiber Distributed Data Interface) es capaz de
proporcionar un ancho de banda de 100 Mbps usando fibra ptica.

4.3.1.2 Redes conmutadas7


En una red conmutada, el enlace entre dos terminales de usuario se puede
establecer a travs de centros (pblicos o privados) de conmutacin sobre
demanda, es decir, haciendo una solicitud de enlace, como en la red telefnica
clsica. En las redes no conmutadas estos enlaces se suministran de manera
exclusiva, es decir, se alquilan a la empresa pblica o privada para utilizarse de
manera permanente para l envi de datos de la organizacin. Este tipo de enlaces
(lneas privadas no conmutadas) son de gran utilidad para los usuarios que no
pueden aceptar el retardo que supone establecer una conexin o el bloque que
puede aparecer si todas las lneas estn ocupadas. Adems, las lneas con
dedicacin exclusiva pueden representar ahorros significativos para usuarios con
trfico fuerte que implica el empleo de varias horas diarias de enlace. A
continuacin, se mencionan algunas ventajas y desventajas de las lneas
conmutadas y los circuitos con dedicacin exclusiva.
Conmutadas.

Ventajas: flexibilidad y economa si el volumen de trfico es pequeo.

Desventajas: lentitud de respuesta, posibilidad de bloqueo, baja


calidad y elevado costo si el trabajo es intenso.

No conmutadas.

Ventajas: soportan mayor volumen de trfico, posibilidad de obtener


mayor calidad y libre de bloqueos.

Desventajas: costo elevado si el trfico es pequeo y escasa


flexibilidad cuando la lnea es imprctica.

En los dos tipos de redes analizados, los enlaces que se establecen son del tipo
punto a punto, que implican la simple conexin de los equipos terminales; por esta
razn se llaman tambin redes de datos de punto a punto.

http://www.uaeh.edu.mx/docencia/Tesis/icbi/licenciatura/documentos/redes%20de%20transmision%20d
e%20datos.pdf P. 18

67

Cada enlace puede emplear lnea analgica y modem (ECD analgico), o lnea
digital y ECD. El propio ECD, en su versin analgica o digital, puede adoptar
diferentes formas de combinacin de elementos, o se puede suministrar como parte
de un controlador de lnea construido dentro de la propia computadora, en la figura
4.3.1.2.1 se ilustra un arreglo tpico de esta.

Figura 4.3.1.2.1. Red de datos de punto a punto.

Redes de datos con conmutacin de circuitos8.


Las redes conmutadas pueden utilizar dos tcnicas distintas para el establecimiento
de los enlaces; la conmutacin de circuitos o la conmutacin de paquetes.
En las redes con conmutacin de circuitos (RCC) interesa establecer, sobre
demanda, una conexin entre dos cualesquiera equipos terminales de datos. Cada
conexin se establecer durante el tiempo de la sesin (dialogo entre terminales
para el intercambio de informacin) mediante una trayectoria bien definida de
transmisin. Al final de la llamada, la conexin se libera para poder atender nuevas
solicitudes de conexin. Este es el principio de la red telefnica de conmutacin
pblica.
El beneficio de las RCC es el gran rango de destinos disponibles para las diferentes
llamadas, lo que representa gran utilidad para las redes de datos. Un ejemplo de
este tipo de red de datos es la red telex; una vez que se establece una conexin
telex, se transmiten caracteres entre las dos terminales telex a la velocidad de lnea
de 50 bauds. La red digital de servicios integrados (RDSI) es otro ejemplo de una
red digital que ofrece posibilidades de conmutacin de circuitos. La figura 18
muestra la configuracin comn de una RCC. Ntese como la red empieza con el
ECD, que comnmente es proporcionado por la empresa pblica de
telecomunicaciones (EPT), si bien puede estar localizado en el local del abonado.

http://www.uaeh.edu.mx/docencia/Tesis/icbi/licenciatura/documentos/redes%20de%20transmision%20d
e%20datos.pdf P. 20

68

Figura 4.3.1.2.2 Red de datos con conmutacin de circuitos (RCC).

Redes de datos con conmutacin de paquetes9.


Se llama conmutacin de paquetes porque el mensaje del usuario se descompone
en cierto nmero de fragmentos, llamados paquetes, cada uno de los cuales se
enva por separado. Cada paquete de datos se rotula con la direccin de su destino
y varios de control adicionales antes de ser enviado. El extremo receptor se encarga
de reensamblar los paquetes en el orden apropiado con la ayuda de los nmeros
de secuencia.
Con la conmutacin de paquetes se hace posible el ancho de banda variable porque
las centrales operan con la modalidad de almacn y envo y, por lo tanto, pueden
enrutar cada paquete cuando se presenten las mejores condiciones en la red. Esto
da ms eficiencia y confiabilidad que con las RCC. Las centrales de conmutacin
de paquetes (CCP) son computadoras de gran capacidad de almacenamiento de
datos y logstica de gran riqueza.
La figura 4.3.1.2.3 ilustra el principio de las RCP. Ntese como cada uno de los
paquetes individuales, an los de un mismo mensaje, pueden tomar diferentes
trayectorias a travs de la red. Gracias a este enrutamiento flexible, el ancho de
banda variable se puede adaptar para optimizar la utilizacin del enlace de
transmisin.
Ninguno de los enlaces se dedica exclusivamente al transporte de un mensaje. Por
el contrario, los paquetes individuales de un mensaje se pueden mezclar con
paquetes de otros mensajes (multiplexaje). El efecto es como si existiese un canal
permanente entre los dos extremos, aunque en realidad este no es el caso. El
resultado se conoce como canal lgico o virtual.
Los paquetes se insertan en las trayectorias individuales dentro de la red de acuerdo
con las condiciones prevalecientes de trfico, la confiabilidad en cuanto error del
enlace y la trayectoria ms corta hacia el destino.
9

http://www.uaeh.edu.mx/docencia/Tesis/icbi/licenciatura/documentos/redes%20de%20transmision%20d
e%20datos.pdf P. 21

69

En conmutacin de paquetes no existe una trayectoria para cada comunicacin; una


trayectoria se establece para transmitir uno o ms paquetes, pero pertenecientes a
distintos mensajes. Las trayectorias se establecen de acuerdo con la necesidad de
trfico, lo cual se conoce como multiplexaje estadstico.

Figura 4.3.1.2.3. Conmutacin de paquetes.

La conmutacin de paquetes provee buena confiabilidad de extremo a extremo; con


conmutacin y redes bien diseadas es posible evadir las fallas de red aun durante
el progreso de una llamada. La conmutacin de paquetes es eficiente tambin en el
empleo de enlace y recursos de la red, compartindolos entre varias llamadas e
incrementando, por consecuencia, su utilizacin.
Como en conmutacin de paquetes la longitud de estos es corta, existe mucho
menor bloqueo o congestin de datos, por lo que las demoras son comnmente
pequeas. En consecuencia, el trabajo interactivo entre usuarios es posible.

4.3.2 Coherencia de cach10


La diferencia bsica entre consistencia de memoria y coherencia de cach es que
la primera determina cundo un valor escrito puede ser visto por una lectura, y la
segunda indica qu valores deberan poder ser devueltos por una lectura (sin indicar
cundo).
Definicin
El problema de la coherencia de cach aparece en el momento en que introducimos
la cach en la jerarqua de memoria de los procesadores que forman parte de un
multiprocesador.

10

https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arqu
itecturas_de_computadores_avanzadas_(Modulo_2).pdf P.27

70

El objetivo principal de introducir estas cachs es explotar mejor la localidad


espacial y temporal de los datos, y as, reducir la contencin de memoria. Sin
embargo, como consecuencia de la incorporacin de las cachs en un sistema
multiprocesador, un mismo dato puede estar replicado en varias cachs a la vez.
Esto no es un problema si no hay ninguna actualizacin del dato. En cambio, si se
produce una escritura en el dato por parte de un procesador, el resto de copias del
valor, en el resto de cachs, quedarn desactualizadas. En este caso hay un
problema de coherencia de la cach.
En la figura 16 se ve un ejemplo en el que un thread ejecutndose en la CPU0
realiza una lectura de la variable X (figura 16.a) y lo deja en su cach. Luego, otro
thread desde la CPU2 realiza otra lectura (figura 16.b), y finalmente un thread de la
CPU1 realiza una escritura (figura 16.c). En este momento, tanto la CPU0 como la
CPU2 tienen el dato con un valor antiguo y diferente al de la CPU1. En este caso
se dice que estas cachs no tienen coherencia.

Figura 4.3.2.1. Ejemplo de un multiprocesador sin coherencia de cach.

Protocolos de escritura11
Para mantener la coherencia de cach en los sistemas multiprocesador se pueden
seguir dos polticas en la escritura de un dato (A veces hablamos de actualizacin
del dato, o coherencia de ese dato, pero en realidad deberamos hablar de bloque
de memoria.):
1. Write-updated o write broadcast: Mediante este protocolo se mantienen
actualizadas las copias del dato (bloque de memoria) en las cachs del resto
de procesadores.
2. Write-invalidate: Mediante este protocolo se pretende asegurar que el que
escribe tiene la exclusividad del dato (bloque de memoria), haciendo que el
resto de procesadores invaliden su copia y no puedan tener copias
desactualizadas. El dato (bloque de memoria) es actualizado en memoria
11

https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arqu
itecturas_de_computadores_avanzadas_(Modulo_2).pdf P.27

71

cuando es flushed/reemplazado de la cach o lo pide otro procesador. Con


este protocolo, el dato (lnea de cach con el bloque de memoria donde est
el dato) tiene unos bits de estado para indicar exclusividad, propiedad y si ha
sido modificado (dirty).
La segunda poltica es la que se suele usar ms, ya que normalmente tiene mejor
rendimiento que la primera. A continuacin, se detallar algunas de las
caractersticas para entender mejor el rendimiento que se puede alcanzar con cada
una de ellas:
1. En el caso de tener el protocolo write-update y tener que realizar varias
escrituras sobre un mismo dato, sin ninguna lectura intercalada, el sistema
tendr que hacer todas las actualizaciones de memoria y cachs del resto de
procesadores. Sin embargo, en el caso del protocolo write-invalidate, slo es
preciso realizar una invalidacin, ya que una vez que queda una nica copia
en el sistema, no hay necesidad de enviar ms invalidaciones.
2. En el caso de tener que realizar escrituras sobre datos distintos que van al
mismo bloque de memoria, si estamos en el protocolo write-update,
tendremos que actualizar el dato en ese bloque de memoria tantas veces
como sea necesario. Sin embargo, mantener todos los datos actualizados
puede significar un elevado nmero de accesos a memoria. En cambio, si
estamos en un protocolo de write-invalidate se invalidarn las lneas de
cachs que contienen copia del dato (bloque de memoria) la primera vez que
se escriba en un dato dentro de esta lnea, y ya no se har nada ms sobre
ella. En contrapartida, se podran estar provocando fallos de cach en las
lecturas, por parte de otros procesadores, de otros datos en la misma lnea
de cach del dato invalidado.
3. En el caso de una lectura de un dato, seguramente que la lectura en un
sistema con protocolo write-update es ms rpida que en un sistema writeinvalidate. Esto es as b- sicamente porque si el procesador contena una
copia del dato, sta se habr mantenido actualizada con el protocolo writeupdate. En cambio, en el protocolo write-invalidate, el dato habr sido
invalidado. Sin embargo, si la programacin es adecuada, estas
invalidaciones por datos que comparten un bloque de memoria se pueden
reducir o evitar.
As, el protocolo write-update necesita mayor ancho de banda de acceso a bus y a
memoria, y es la razn por la cual el protocolo que normalmente es ms usado es
el de writeinvalidate.
Mecanismo hardware12

12

https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arqu
itecturas_de_computadores_avanzadas_(Modulo_2).pdf P. 29

72

La forma de mantener la coherencia de cach en hardware es mediante la utilizacin


de bits de estado para cualquier bloque de memoria que se comparte. Hay dos
mecanismos hardware que mantienen actualizado el estado de los datos
compartidos:

Sistema basado en Snoopy: los bits de estado del bloque de memoria estn
replicados en las cachs del sistema que tienen una copia del dato (bits por
cada lnea de cach), a diferencia del basado en directorios, que est
centralizado. Son sistemas en los que los procesadores suelen estar
conectados a la memoria va bus, y adems, cada controlador de cach tiene
un hardware dedicado que puede leer/sondear (Snoopy) qu pasa por el bus.
As, todos los controladores de memoria miran si las peticiones de accesos
que se realizan sobre el bus afectan a alguna de sus copias o no.
Sistema basado en directorios: Los bits de estado de comparticin de un
bloque de memoria estn nicamente en un sitio llamado directorio. Cuando
se realizan lecturas y escrituras sobre un dato del bloque de memoria, su
estado, centralizado en el directorio, se deber actualizar de forma
adecuada.

Sistema basado en Snoopy


Los sistemas con cachs con Snoopy estn normalmente asociadas a sistemas
multiprocesadores basados en redes de interconexin tales como un bus o un ring.
La figura 4.3.2.2 muestra un esquema bsico de un sistema multiprocesador con
una serie de procesadores, una cach asociada por procesador, y un hardware
dedicado de Snoopy cache coherence (SCC). Todos ellos estn conectados a la
red de interconexin (normalmente un bus) que conecta la memoria compartida con
los procesadores.

Figura 4.3.2.2. Esquema bsico de un sistema multiprocesador con memoria


compartida basado en un bus interconexin y Snoopy cache coherence.

73

Tal y como se conectan los SCC al bus, todas las transacciones en el bus son
visibles en todos los procesadores. De esta forma, monitorizando estas
transacciones, se pueden tomar las acciones necesarias de cambio de estado de
las lneas de la cach, segn los estados que determine el protocolo de coherencia
que se asuma.
La figura 4.3.2.3 muestra un poco ms en detalle lo que puede significar un SCC.
Si nos fijamos en la parte derecha del esquema, veremos un hardware dedicado
(controlador del procesador) que recibe comandos del procesador y que est
conectado a la informacin de los tags y del estado de las lneas de cach. As,
dependiendo de los comandos u operaciones que se efecten en el procesador, el
controlador del procesador, mirando el estado de las lneas de cach y sus tags,
decidir enviar operaciones al bus y/o cambiar el estado de alguna lnea de cach.

Figura 4.3.2.3. Detalle del Snoopy cache coherence hardware

Por otro lado, si nos fijamos en el lado izquierdo de la figura, veremos que hay un
hardware dedicado a sondear/recibir los comandos u operaciones que vienen del
bus (Op conectado al BUS) o interconexin con memoria y que se conecta con el
controlador del bus para enviarle la informacin. La direccin que viene del bus se
lee y se pasa a los dos comparadores existentes: uno para comparar con los tags
de la cach y otro para compararlo con los tags del write-back buffer. El write-back
buffer es un buffer para agrupar escrituras a una misma lnea de cach. En caso de
tener coincidencia en alguna lnea o en el write-back buffer, se deber actuar en
consecuencia segn el protocolo de coherencia seguido. Tambin observamos que
hay una conexin llamada estado Snoopy que le sirve al procesador para informar
al bus de que tiene una copia del dato del cual se est haciendo una lectura por
parte de otro procesador, o viceversa, para que informen al procesador de que no
tendr exclusividad en el dato que est leyendo de memoria.
74

Los sistemas basados en bus con Snoopy son fciles de construir. Sin embargo, el
rendimiento de stos slo es bueno si el nmero de procesadores no crece
significativamente (ms de 20), y si los accesos a la memoria se mantienen locales
en cada procesador, es decir, se accede a la cach de cada procesador. El
problema surge cuando se empiezan a realizar muchas escrituras y/o tenemos
muchos procesadores conectados. Esto puede significar que todos los
procesadores empiecen a compartir datos, con lo que tendramos un trfico de
operaciones a travs del bus significativo, ya que los mensajes se envan a todos
los procesadores en forma de broadcast.
A continuacin, se ver un sistema basado en directorios, donde se guarda la
informacin del estado de las lneas de una forma centralizada (o no replicada).
Estos directorios tambin guardan los procesadores que comparten un bloque de
memoria. En estos sistemas se evitan los envos en forma de broadcast y slo se
envan las actualizaciones a aquellos procesadores que mantienen copia. Estos
sistemas son ms escalables que los sistemas basados en bus, pero su
construccin es ms compleja.
Sistema basado en directorios
Figura 4.3.2.4 muestra un sistema multiprocesador formado por varios
procesadores que, a travs de la red de interconexin, se comunican con la
memoria compartida global. Esta memoria compartida tiene soporte hardware para
guardar la informacin de los procesadores que disponen de una copia de ese
bloque de memoria en sus cachs. Esta informacin es clave para que este sistema
hardware sea ms escalable que el de Snoopy. Con esta informacin, ahora se
podrn enviar los mensajes de actualizacin o invalidacin slo a aquellos
procesadores que dispongan de una copia del dato.

Figura 4.3.2.4. Sistema multiprocesador formado por una memoria principal


compartida con el sistema de directorios de coherencia de cach centralizado.

75

Hay varias posibilidades de guardar esta informacin, aunque en la figura


mostramos slo una de ellas:

Mantener un nico identificador del procesador que tiene el valor de ese


bloque de memoria. De esta forma slo se podra tener una copia del dato.
Esto no permite lecturas concurrentes sin provocar accesos en la memoria
principal para actualizar qu procesador tiene la copia en cada momento. La
ventaja es que es escalable desde el momento en que no guardas ms que
un entero independientemente del nmero de procesadores.
Mantener la informacin de k procesadores. Esto conlleva ms esfuerzo en
cuanto a que hay que guardar ms enteros, y dependiendo del nmero de
bloques de memoria, puede ser relativamente un coste significativo (k
enteros por bloque de memoria). En cambio, a diferencia de la anterior
opcin, ahora s que se permitiran lecturas de hasta k procesadores sin
ningn problema.
Mantener P bits, un bit por procesador, para indicar la presencia o no del dato
en la cach de un procesador. De esta forma todos podran tener copias, y
segn el nmero de procesadores, sera mucho ms rentable que tener k
enteros. El nico inconveniente es cuando el nmero de procesadores
aumenta considerablemente. En este caso se podra alcanzar un nmero de
bits relativamente elevado en comparacin con el tamao de un bloque de
memoria. sta es la opcin que mostramos en la figura. Una posible solucin
para reducir este coste sera aumentar el tamao de los bloques de cach,
de tal forma que reduciramos el sobrecoste de mantener P bits por bloque
de memoria. Sin embargo, esto tendra como efecto colateral que el nmero
de datos que comparten un mismo bloque de memoria ser mayor y habr
ms probabilidades de que haya invalidaciones por actualizaciones de datos
diferentes, que caen en el mismo bloque de memoria.
Mantener una lista encadenada de los procesadores que tienen copia,
utilizando memoria para guardar esa informacin. El hardware dedicado slo
requerira ser un registro para guardar la cabecera de esa lista encadenada.

En este mdulo se centrar en el caso de directorios donde puede haber tantas


copias como procesadores, utilizando un bit de presencia para cada procesador.
Esta informacin se guarda junto con los bits de estado del bloque de memoria en
la memoria. El valor de esos bits de estado depende del protocolo de coherencia
que se tome.
En un sistema con un protocolo basado en directorio, cada vez que se accede a un
dato se tiene que consultar y posiblemente actualizar los bits de presencia y de
estado en el directorio de memoria. Por lo tanto, si la memoria est formada por un
solo mdulo, tanto los accesos a memoria como la actualizacin del directorio se
pueden convertir en cuellos de botella. Una posible solucin es distribuir la memoria
fsicamente en mdulos entre los nodos del sistema multiprocesador, repartiendo
76

de la misma forma el directorio entre los diferentes mdulos, para aumentar as el


paralelismo en la gestin de accesos a la memoria principal y las transacciones a
travs del bus. La figura 4.3.2.5 muestra un esquema de un sistema multiprocesador
con el directorio distribuido, tpico de un sistema multiprocesador NUMA.

Figura 4.3.2.5. Sistema multiprocesador formado por una memoria principal


compartida, fsicamente distribuida, con el sistema de directorios de
coherencia de cach distribuido.

Los sistemas basados en directorios, junto con los protocolos de coherencia MSI y
MESI, tienen como objetivo evitar que los procesadores deban generar
transacciones sobre la red de interconexin tanto para lecturas como para escrituras
sobre un bloque de memoria, si ste ya se encuentra en la cach o bien est
actualizado en la cach del procesador. Este objetivo es el mismo que se tiene con
los sistemas basados en Snoopy, que tambin evitan transacciones innecesarias.
La diferencia bsica con respecto al sistema basado en Snoopy es que ahora, si
hay varios procesadores que actualizan un dato, las transacciones en el bus slo
se envan a aquellos que participan de la comparticin de ese bloque de memoria.
En un sistema multiprocesador con el sistema de directorios distribuido pueden
estar involucrados tres tipos de nodos en las transacciones a travs del bus:
1. El local node que es el procesador/nodo que genera la peticin.
2. El home node que es el nodo donde reside el bloque de memoria segn su
direccin de memoria, y la asignacin que haya realizado el sistema
operativo a travs de la traduccin de memoria virtual a fsica (MMU).
3. El remote node que es el nodo que tiene una copia del bloque de memoria,
ya sea en exclusividad o de forma compartida.
De entre estos tres tipos de procesadores tenemos que darnos cuenta de la
importancia del home node de un dato. Este procesador mantendr el estado del
bloque de memoria que contiene el dato y la informacin de los procesadores que
tienen una copia de ste. La forma de asignar el home node depende de la poltica
de traduccin de direcciones virtuales a fsicas por parte del sistema operativo.
Normalmente, la poltica consiste en intentar acercar las pginas de memoria al
77

procesador que las ha pedido primero. Por lo tanto, si el programador no es


consciente de este detalle podramos hacer que nuestros programas no obtuvieran
el rendimiento esperado. Lo entenderemos en cuanto veamos algunos casos de
ejemplos donde se realizan lecturas y escrituras sobre un dato que ya tiene un home
node asignado.
El primer caso que trataremos es cuando el local node realiza una lectura de un
dato con una determinada direccin de memoria. El sistema operativo, a travs de
la traduccin de la MMU, podr determinar qu nodo tiene ese dato en su memoria
local, el home node, para poder saber el estado de ese bloque de memoria. El home
node responder a la peticin de dos posibles formas, segn haya o no un
procesador con el bloque de memoria actualizado:
1. Para el caso en que haya un procesador con una copia en exclusividad
modificada: la figura 4.3.2.6 muestra los tres nodos implicados. Las aristas
de la figura estn numeradas segn la secuencia de operaciones, indicando
la operacin o dato que se enva de un nodo a otro. As, el home node indica
al local node qu nodo es el remote o owner node, tras recibir una peticin
de lectura de un dato. El local node, con esta informacin, pide al owner node
que le suministre el bloque de memoria en cuestin. Esto provoca que el
owner node le devuelva el dato y que se actualice la memoria principal
writeback-data (WB_D). Aunque no se muestra en la figura, los bits de
presencia se deben actualizar adecuadamente en el home node, al igual que
los bits de estado de la cach.

Figura 4.3.2.6. Acceso de lectura a un dato de un bloque de memoria que est


modificado.

2. Para el caso en que no haya ningn procesador con una copia en


exclusividad modificada: el home node suministra el bloque de memoria al
local node (aunque posiblemente tambin se la podra dar otro procesador
con una copia segn el protocolo de coherencia usado) y, en funcin de si el
local node es el nico o no con este bloque de memoria, asignar el estado
exclusive (en un protocolo de coherencia MESI) o shared (en un protocolo de
coherencia MSI) respectivamente a los bits del bloque de memoria.
78

En el caso de que el local node quiera realizar un acceso de lectura con intencin
de escritura, tal y como muestra la figura 4.3.2.7, el home node suministrar la lista
de posibles nodos que tengan una copia de este bloque de memoria; dos nodos en
el caso de la figura. El local node, con esta informacin, har una peticin a esos
nodos para que invaliden las copias del bloque de memoria. El home node
actualizar los bits de presencia para indicar que slo el local node tiene una copia
del bloque de memoria y que ste est modificado.

Figura 4.3.2.7. Acceso de escritura a un dato de un bloque de memoria que


est compartido por dos procesadores ms.

Con estos dos casos observamos que el home node de un dato debe mantener, en
todo momento, el estado y los bits de presencia del bloque de memoria que contiene
el dato en cuestin, tanto para lecturas como para lecturas con intencin de
escritura. Esto significa que, si el procesador que realiza el primer acceso no
coincide con el procesador que realiza ms actualizaciones de ese bloque de
memoria, las peticiones tendrn que pasar por el home node cada vez, y
deteriorarn el rendimiento de la aplicacin innecesariamente. Esto suele pasar, en
particular, si la poltica de traduccin de direcciones de virtual a fsica hace esta
asignacin inicial del home node* en funcin de qu nodo toca primero el bloque de
memoria.
Finalmente, cabe comentar que hay sistemas basados en directorios que incorporan
ste en la cach ms externa compartida, como puede ser el caso del Intel i7 y la
serie 7000 de Xeon.
Protocolos de coherencia13

13

https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arqu
itecturas_de_computadores_avanzadas_(Modulo_2).pdf P. 35

79

En este apartado analizaremos en detalle dos protocolos de coherencia (MSI y


MESI) que se pueden combinar con la poltica en escritura write-invalidate y los
mecanismos hardware que hemos visto. Estos protocolos determinan los estados
de comparticin de memoria en los que puede estar un bloque de memoria, y cmo
se realiza la transicin de uno a otro segn los accesos que se produzcan en el
sistema multiprocesador. En particular, describiremos los dos protocolos para un
sistema basado en Snoopy.
MSI
El protocolo MSI de coherencia contempla los siguientes estados:
1. Dirty o modified (M): El estado en el que un bloque de memoria (lnea de
cach) est en la cach cuando se ha modificado o se ha ledo para
modificar.
2. Shared (S): El estado en el que un bloque de memoria est cuando se ha
ledo y no hay intencin de modificarlo.
3. Invalid (I): El estado en el que un bloque de memoria (lnea de cach) est
cuando se ha invalidado o bien no existe en la cach.
El grafo de estados que se muestra en la figura 4.3.2.8 determina los estados en los
que puede estar una lnea de cach (nodos del grafo) y las acciones del bus o del
procesador que provocan los cambios de un estado al otro (aristas del grafo). Las
aristas del grafo estn etiquetadas con el siguiente formato: Las operaciones o
acciones que se pueden realizar por parte del procesador son: PrRd (el procesador
hace una lectura Rd) y PrWr (el procesador realiza una escritura Wr). Las acciones
que se pueden realizar a travs del bus son: BusRd (se realiza una peticin de
lectura a memoria), BusRdX (se realiza una peticin de lectura con intencin de
escritura), y flush se deja en el bus el bloque de memoria que contiene el dato (la
lnea de cach), para que la memoria y, si se da el caso, la cach del procesador
que la solicit, puedan actualizar la lnea. Estas acciones en el bus se ven en el
resto de procesadores gracias a los mecanismos hardware para mantener la
coherencia. Por ejemplo, en un sistema basado en Snoopy, el SCC del sistema
podr ver qu pasa por el bus y actuar en consecuencia.

80

Figura 4.3.2.8. Grafo de estados del protocolo de coherencia MSI.

Desde el punto de vista de la cach de un procesador del sistema, los estados que
pueden tener cada una de las lneas de la cach son los siguientes:
1. Modified: Si una lnea de cach est en el estado de modificada significa
que el bloque de memoria al que corresponden los datos de esa lnea de
cach es la nica copia en el sistema multiprocesador y que ni siquiera la
memoria tiene el bloque actualizado.
Peticiones desde el procesador: Si el procesador que contiene este
bloque de memoria en su cach realiza una operacin de lectura
(PrRd) (accin 1 en el grafo) o escritura (PrWr) (accin 2 en el grafo)
sobre algun dato de esta lnea, el procesador no tendr por qu
realizar ninguna accin en el bus, y adems, la lnea de cach
mantendr el mismo estado. En el caso de tener un fallo de escritura
en el acceso a un bloque de memoria diferente (accin 3 en el grafo),
con reemplazo de lnea de cach, la lnea se quedara en el mismo
estado, pero se debera emitir una accin de lectura para escritura en
el bus (BusRdX) para obtener el nuevo bloque de memoria y un flush
de la lnea reemplazada. Si tuviramos un fallo de lectura en el acceso
a un dato de un bloque de memoria diferente (accin 4 en el grafo),
pero que hiciera que cayera en una lnea de cach con estado
modificado (la lnea de cach se tiene que reemplazar), la lnea de
cach pasara al estado de compartido (con el nuevo bloque de
81

memoria) y el procesador realizara una peticin de lectura en el bus


y en un flush del contenido de la lnea de cach reemplazada.
Peticiones desde el bus: En el caso de recibir una peticin de lectura
del bus (BusRd) de un bloque de memoria que se contiene en una
lnea de cach con estado modificado (accin 5 en el grafo), la lnea
de cach se tendr que suministrar a la memoria y al procesador que
solicit el bloque de memoria. Esto se realiza mediante un flush de la
lnea en el bus. La lnea deber pasar a estado compartido. Por otro
lado, si la peticin en el bus es la de leer para modificar (BusRdX)
(accin 6 en el grafo), tambin deberemos suministrar la lnea de
cach mediante un flush, pero en este caso el estado de la lnea en
nuestra cach pasa a ser invlido. Esto es debido a que slo una
cach puede contener un mismo bloque de memoria cuando ste se
ha modificado.
2. Shared: Una lnea de cach en este estado indica que contiene un bloque
de memoria que no se ha modificado, y por consiguiente, el bloque puede
estar replicado en ms de una cach del sistema multiprocesador. En este
estado, si el procesador realiza una peticin de lectura PrRd (accin 7 en el
grafo) o bien observa que en el bus se est realizando una peticin de lectura
(BusRd) (accin 8 en el grafo) sobre el bloque de memoria de la lnea de
cach compartida, sta no cambiar de estado. Si se realiza una lectura PrRd
y se produce un fallo de cach (accin 9 en el grafo), la lnea no cambiar de
estado pero se tendr que hacer una peticin al bus del nuevo bloque de
memoria (BusRd). En cambio, si se realiza un peticin de escritura por parte
del procesador (PrWr) (accin 10 en el grafo) sobre la lnea compartida, ste
deber avisar al bus de que quiere realizar una modificacin del bloque de
memoria contenido en esa lnea (BusRdX), de tal forma que se puedan
invalidar las lneas de cach del resto de procesadores con ese mismo
bloque de memoria. En este caso, el estado de la lnea de cach pasar a
ser modified. Finalmente, en el caso de que se observe una peticin de
escritura sobre un bloque de memoria (BusRdX) (accin 11 en el grafo)
contenido en una lnea de cach con estado compartido, esta lnea deber
cambiar al estado de invlido, ya que slo un procesador puede tener una
copia modificada de un bloque de memoria.
3. Invalid: Una lnea de cach est en este estado cuando o bien nunca se ha
ledo un bloque de memoria que vaya a esta lnea, o bien se ley pero
despus qued invalidada por una peticin de escritura sobre el mismo
bloque de memoria por parte de otro procesador. Las nicas acciones que
pueden afectar al estado de una lnea de cach invlida son las de lectura o
escritura por parte del procesador (acciones 12 y 13 en el grafo). Las
acciones del bus no le afectan porque esa lnea de cach no contiene ningn
bloque de memoria vlido. As, si se realiza una peticin de lectura por parte
del procesador (PrRd), la lnea de cach pasar al estado shared una vez
82

que haya podido dar la orden de peticin de lectura a travs del bus (BusRd),
y poder informar al resto de procesadores. Si se efecta una peticin de
escritura por parte del procesador (PrWr), en este caso la lnea de cach
pasar al estado modified, una vez realiza la peticin al bus de que se va a
hacer una escritura en el bus (BusRdX).

4.4 Sistemas de memoria distribuida Multicomputadores: clusters.14


Caractersticas Generales de Memoria Distribuida
Hay Varios modelos de memoria distribuida. El patrn general es el uso de
una red de comunicacin para conectar las memorias de los procesadores.
Los procesadores tiene su propia memoria local y no hay correspondencia
entre dos procesadores.
Independencia de operacin, los cambios en un lugar no afectan al resto.
Cuando un procesador necesita un dato externo, el programador lo ordena
explcitamente.
La red de comunicacin puede variar ampliamente, puede ser una red
Ethernet.
Ventajas de Memoria Distribuida
El modelo escala con los procesadores. A medida que se agregan unidades
de procesamiento la memoria escala proporcionalmente.
Cada procesador accede a un dato en memoria sin inferir al resto de los
componentes. Se eliminan las demoras por accesos mltiples.
Desventajas de Memoria Distribuida
El programador es responsable de muchos de los detalles asociados a la
comunicacin entre procesadores.
Puede ser dificultoso mapear estructuras de datos basadas en memoria
global a esta organizacin de memoria.

4.4.1 Redes de interconexin esttica.


Las redes estticas emplean enlaces directos fijos entre los nodos. Estos enlaces,
una vez fabricado el sistema, son difciles de modificar, por lo que la escalabilidad
14

http://www.aliat.org.mx/BibliotecasDigitales/sistemas/Arquitectura_de_computadoras_II.pdf

83

de estas topologas es baja. Las redes estticas pueden utilizarse con eficiencia en
los sistemas en que puede predecirse el tipo de trfico de comunicaciones entre sus
procesadores. Veamos algunas clases de redes de interconexin estticas:
Formacin lineal: Se trata de una red unidimensional en que los N nodos se
conectan cada uno con el siguiente mediante N-1 enlaces formando una lnea. Los
nodos interiores tienen grado 2 y los extremos grado 1. El dimetro de esta red es
N-1 y su ancho de biseccin es 1. Resulta ser la estructura ms sencilla, pero no es
regular y puede hacerse muy ineficiente para valores altos de N debido a que el
dimetro crece linealmente con el nmero de nodos introducidos. Las redes lineales
resultan eficiente nicamente cuando tienen muy pocos nodos.
Anillo/Anillo Cordal: Una red en anillo se consigue conectando entre s los nodos
extremos de una formacin lineal. La estructura resulta simtrica y todos sus nodos
poseen grado 2. El dimetro de la red es N/2. Si los enlaces del anillo fueran
unidireccionales, su dimetro sera N - 1. Si se incrementa el grado de cada nodo
de la red a 3 o 4, llegaremos a la estructura de anillo cordal. Segn se aumenta el
grado de los nodos del anillo cordal, se disminuye su dimetro. El caso ms extremo
de anillo cordal es la red totalmente conectada en que el grado de cada nodo es N
- 1, cada nodo est conectado con todos los dems, es decir, dimetro 1. El
inconveniente de esta topologa es la gran complejidad en sus nodos debido a su
alto grado (de hecho, el mximo alcanzable). Un caso especial del anillo cordal, que
constituye un buen equilibrio entre complejidad y eficiencia, es el denominado
barrelshifter, en que el nodo i se conecta con todos los nodos j que cumplen con la
condicin |i - j| = 2r para todo r entre 0 y k - 1 donde k = log2 N. El grado de esta
topologa es 2k - 1 y su dimetro es k/2.
Mallas y toros: Una malla k-dimensional tiene l k nodos, donde l es el nmero de
nodos por lado. El grado de los nodos vara entre k para los vrtices hasta 2k en los
nodos ms interiores por lo que esta red no resulta regular y su dimetro viene dado
por k(l - 1). Esta red de interconexin es muy utilizada en la prctica. Las redes en
toro son mallas en que sus filas y columnas tienen conexiones en anillo, esto
contribuye a disminuir su dimetro. Esta pequea modificacin permite convertir a
las mallas en estructuras simtricas y adems, reduce su dimetro a la mitad.
Hipercubo: Un hipercubo (o ms concretamente un n-cubo) es una malla n
dimensional en que se han suprimido los nodos interiores. Segn esta definicin, un
hipercubo de dimensin 1 tendra solo 2 nodos y en general, un n-cubo puede
formarse interconectando los nodos equivalentes de dos (n - 1)-cubos. Por ello, el
grado de los nodos de una n-cubo es n, lo que hace a esta topologa difcilmente
escalable. Por todo esto, cuando la dimensin aumenta, se va duplicando el nmero
de nodos, con lo que un n-cubo tendr 2n nodos. Los hipercubos han sido bastante
utilizados en arquitecturas paralelas, sin embargo, en la actualidad, las mquinas
que tenan esta arquitectura han ido evolucionando hacia otras topologas ms
escalables, como se ver a continuacin.
84

n-cubos k-arios: Esta topologa es una generalizacin de algunas de las


anteriores. Un n-cubo k-ario consiste en un cubo n dimensional con k nodos a lo
largo de cada dimensin; por otra parte, todas las aristas, tanto exteriores como
interiores, tienen estructura de anillo. Los anillos, los toros y los hipercubos son
casos particulares de n cubos k-arios.
Topologas jerrquicas: El ejemplo ms extremo de una topologa jerrquica es
el rbol. Un rbol binario y equilibrado de k niveles tendr 2k - 1 nodos. El grado de
los nodos es 3 (excepto para la raz y las hojas [o nodos terminales]) y el dimetro
de esta red es 2(k - 1). Las topologas en rbol poseen un inconveniente: la raz
puede concentrar el trfico procedente de muchos nodos, por lo que en ella puede
producirse un cuello de botella y adems introduce un nico punto de falla. Esto
puede evitarse procurando dejar en los subrboles informacin que tenga
consistencia propia, si ello fuera posible, se reducira el trfico entre dichos
subrboles y por lo tanto, tambin en la raz.
Una modificacin a la estructura de rbol es el rbol grueso (fattree) en que los
nodos interiores son conmutadores, y no elementos de proceso, que se comportan
como pequeas centrales telefnicas. La ventaja de esta topologa sobre el rbol
convencional radica en que los conmutadores estn diseados para admitir varios
mensajes simultneamente, por lo que el ancho de biseccin resulta mayor. Esto
elimina el inconveniente de los rboles mencionado con anterioridad, ya que el
nmero de enlaces va incrementndose segn nos acercamos a la raz. Este tipo
de red, aunque mantiene forma de rbol, en realidad es una red de interconexin
dinmica porque los conmutadores cambian las conexiones entre los nodos.
La estructura de estrella es un caso especfico de rbol con slo 2 niveles en que el nodo
raz tiene grado N - 1 y el resto, grado 1. El dimetro de esta red es 2. Esta topologa
corresponde a sistemas donde existe un nodo central que hace funciones de supervisor o
maestro (por ejemplo, en algunos sistemas paralelos slo uno de los procesadores dispone

de dispositivos de entrada/salida).

85

En la imagen 4.4.4.1 muestra los distintos tipos de redes de interconexin:

Figura 4.4.4.1

86

4.4.2 Cluster
El trmino cluster se aplica a los conjuntos o conglomerados de computadoras
construidos mediante la utilizacin de componentes de hardware comunes y que se
comportan como si fuesen una nica computadora.
Hoy en da desempean un papel importante en la solucin de problemas de las
ciencias, las ingenieras y del comercio moderno.
La tecnologa de clusters ha evolucionado en apoyo de actividades que van desde
aplicaciones de supercmputo y software de misiones crticas, servidores web y
comercio electrnico, hasta bases de datos de alto rendimiento, entre otros usos.
El cmputo con clusters surge como resultado de la convergencia de varias
tendencias actuales que incluyen la disponibilidad de microprocesadores
econmicos de alto rendimiento y redes de alta velocidad, el desarrollo de
herramientas de software para cmputo distribuido de alto rendimiento, as como la
creciente necesidad de potencia computacional para aplicaciones que la requieran.
Simplemente, un cluster es un grupo de mltiples ordenadores unidos mediante una
red de alta velocidad, de tal forma que el conjunto es visto como un nico ordenador,
ms potente que los comunes de escritorio.
Los clusters son usualmente empleados para mejorar el rendimiento y/o la
disponibilidad por encima de la que es provista por un solo computador tpicamente
siendo ms econmico que computadores individuales de rapidez y disponibilidad
comparables.
De un cluster se espera que presente combinaciones de los siguientes servicios:
1. Alto rendimiento
2. Alta disponibilidad
3. Balanceo de carga
4. Escalabilidad
La construccin de los ordenadores del cluster es ms fcil y econmica debido a
su flexibilidad: pueden tener toda la misma configuracin de hardware y sistema
operativo (cluster homogneo), diferente rendimiento pero con arquitecturas y
sistemas operativos similares (cluster semi-homogneo), o tener diferente hardware
y sistema operativo (cluster heterogneo), lo que hace ms fcil y econmica su
construccin.

87

Para que un cluster funcione como tal, no basta solo con conectar entre s los
ordenadores, sino que es necesario proveer un sistema de manejo del cluster, el
cual se encargue de interactuar con el usuario y los procesos que corren en l para
optimizar el funcionamiento.
Clasificacin de los Clusters
El trmino cluster tiene diferentes connotaciones para diferentes grupos de
personas. Los tipos de clusters, establecidos de acuerdo con el uso que se d y los
servicios que ofrecen, determinan el significado del trmino para el grupo que lo
utiliza. Los clusters pueden clasificarse segn sus caractersticas: se pueden tener
clusters de alto rendimiento (HPCC High Performance Computing Clusters),
clusters de alta disponibilidad (HA High Availability) o clusters de alta eficiencia
(HT High Throughput).
Alto rendimiento: Son clusters en los cuales se ejecutan tareas que requieren de
gran capacidad computacional, grandes cantidades de memoria, o ambos a la vez.
El llevar a cabo estas tareas puede comprometer los recursos del cluster por largos
periodos de tiempo.
Alta disponibilidad: Son clusters cuyo objetivo de diseo es el de proveer
disponibilidad y confiabilidad. Estos clusters tratan de brindar la mxima
disponibilidad de los servicios que ofrecen. La confiabilidad se provee mediante
software que detecta fallos y permite recuperarse frente a los mismos, mientras que
en hardware se evita tener un nico punto de fallos.
Alta eficiencia: Son clusters cuyo objetivo de diseo es el ejecutar la mayor cantidad
de tareas en el menor tiempo posible. Existe independencia de datos entre las
tareas individuales. El retardo entre los nodos del cluster no es considerado un gran
problema.
Los clusters pueden tambin clasificar como Clusters de IT Comerciales (Alta
disponibilidad, Alta eficiencia) y Clusters Cientficos (Alto rendimiento). A pesar de
las discrepancias a nivel de requerimientos de las aplicaciones, muchas de las
caractersticas de las arquitecturas de hardware y software, que estn por debajo
de las aplicaciones en todos estos clusters, son las mismas. Ms an, un cluster de
determinado tipo, puede tambin presentar caractersticas de los otros.
Componentes de un Cluster
En general, un cluster necesita de varios componentes de software y hardware para
poder funcionar. A saber:

Nodos
Almacenamiento
Sistemas Operativos
Conexiones de Red
88

Middleware
Protocolos de Comunicacin y servicios
Aplicaciones
Ambientes de Programacin Paralela

Nodos
Pueden ser simples ordenadores, sistemas multi-procesador o estaciones de
trabajo (workstations). En informtica, de forma muy general, un nodo es un punto
de interseccin o unin de varios elementos que confluyen en el mismo lugar. Ahora
bien, dentro de la informtica la palabra nodo puede referirse a conceptos diferentes
segn el mbito en el que nos movamos:

En redes de computadoras cada una de las mquinas es un nodo, y si la red


es Internet, cada servidor constituye tambin un nodo.
En estructuras de datos dinmicas un nodo es un registro que contiene un
dato de inters y al menos un puntero para referenciar (apuntar) a otro nodo.
Si la estructura tiene slo un puntero, la nica estructura que se puede
construir con l es una lista, si el nodo tiene ms de un puntero ya se pueden
construir estructuras ms complejas como rboles o grafos.

El cluster puede estar conformado por nodos dedicados o por nodos no dedicados.
En un cluster con nodos dedicados, los nodos no disponen de teclado, ratn ni
monitor y su uso est exclusivamente dedicado a realizar tareas relacionadas con
el cluster. Mientras que, en un cluster con nodos no dedicados, los nodos disponen
de teclado, ratn y monitor y su uso no est exclusivamente dedicado a realizar
tareas relacionadas con el cluster, el cluster hace uso de los ciclos de reloj que el
usuario del computador no est utilizando para realizar sus tareas.
Cabe aclarar que a la hora de disear un cluster, los nodos deben tener
caractersticas similares, es decir, deben guardar cierta similaridad de arquitectura
y sistemas operativos, ya que si se conforma un cluster con nodos totalmente
heterogneos (existe una diferencia grande entre capacidad de procesadores,
memoria, disco duro) ser ineficiente debido a que el middleware delegar o
asignar todos los procesos al nodo de mayor capacidad de cmputo y solo
distribuir cuando este se encuentre saturado de procesos; por eso es
recomendable construir un grupo de ordenadores lo ms similares posible.
Almacenamiento15
El almacenamiento puede consistir en una NAS, una SAN, o almacenamiento
interno en el servidor. El protocolo ms comnmente utilizado es NFS (Network File

15

https://es.scribd.com/doc/246932025/Unidad-4-Arqui-de-computadoras

89

System), sistema de ficheros compartido entre servidor y los nodos. Sin embargo
existen sistemas de ficheros especficos para clusters como Lustre (CFS) y PVFS2.
Tecnologas en el soporte del almacenamiento en discos duros:

IDE o ATA: velocidades de 33, 66, 100, 133 y 166 MB/s


SATA: velocidades de 150, 300 y 600 MB/s
SCSI: velocidades de 160, 320, 640 MB/s. Proporciona altos rendimientos.
SAS: ana SATA-II y SCSI. Velocidades de 300 y 600 MB/s

Las unidades de cinta (DLT) son utilizadas para copias de seguridad por su bajo
coste.
NAS (Network Attached Storage) es un dispositivo especfico dedicado al
almacenamiento a travs de red (normalmente TCP/IP) que hace uso de un sistema
operativo optimizado para dar acceso a travs de protocolos CIFS, NFS, FTP o
TFTP.

Por su parte, DAS (Direct Attached Storage) consiste en conectar unidades externas
de almacenamiento SCSI o a una SAN (Storage Area Network) a travs de un canal
de fibra. Estas conexiones son dedicadas.
Mientras NAS permite compartir el almacenamiento, utilizar la red, y tiene una
gestin ms sencilla, DAS proporciona mayor rendimiento y mayor fiabilidad al no
compartir el recurso.

4.4.3 Programacin de clusters


Tradicionalmente el procesamiento paralelo se ha dividido en dos grandes modelos,
el de memoria compartida y el de pasaje de mensajes.

Memoria compartida: los datos accedidos por la aplicacin se encuentran en


una memoria global accesible por los procesadores paralelos. Esto significa
que cada procesador puede buscar y almacenar datos de cualquier posicin
de memoria independientemente. Se caracteriza por la necesidad de la
sincronizacin para preservar la integridad de las estructuras de datos
compartidas.
Pasaje de mensajes: los datos son vistos como asociados a un procesador
particular. De esta manera, se necesita de la comunicacin por mensajes
entre ellos para acceder a un dato remoto. En este modelo, las primitivas de
envo y recepcin son las encargadas de manejar la sincronizacin.

Relacionado con la aparicin de la arquitectura cluster de multicore surge el modelo


de programacin hbrido, en el cual se combinan las estrategias recientemente
90

expuestas. Esto implica una combinacin de los modelos de programacin paralela


memoria compartida y pasaje de mensajes. La comunicacin entre procesos que
pertenecen al mismo procesador fsico puede realizarse utilizando memoria
compartida (nivel micro), mientras que la comunicacin entre procesadores fsicos
(nivel macro) puede pensarse utilizando pasaje de mensajes.
El objetivo de utilizar el modelo hbrido es aprovechar y aplicar las potencialidades
de cada una de las estrategias que el mismo brinda, de acuerdo a la necesidad de
la aplicacin. Esta es un rea de investigacin de gran inters actual. Actualmente,
entre los lenguajes que se utilizan para programacin hbrida aparecen OpenMP
para memoria compartida y MPI para pasaje de mensajes.
OpenMP es una interface de programacin (API) definida por un conjunto de
fabricantes de hardware y software entre los que se encuentran: Sun Microsystems,
IBM, Intel, AMD, entre otros. Provee de una interface de programacin portable y
escalable para desarrolladores de aplicaciones paralelas que utilizan memoria
compartida. Esta API soporta C/C++ y Fortran en mltiples arquitecturas, incluyendo
LINUX y Windows NT. Provee varios constructores y directivos para especificar
regiones paralelas, trabajo compartido, sincronizacin y variables de entorno.
Por otro lado, MPI es una interface de pasaje de mensajes creada para brindar
portabilidad. Es una librera que puede ser utilizada para desarrollar programas que
utilizan pasaje de mensajes (memoria distribuida) utilizando para ello los lenguajes
de programacin C o Fortran. El standard MPI define tanto la sintaxis como la
semntica del conjunto de rutinas que pueden ser utilizadas en la implementacin
de programas que utilicen pasaje de mensajes.

4.4.4 Consideraciones sobre el rendimiento de los clusters 16


Un cluster de alto rendimiento es un conjunto de ordenadores que est diseado
para dar altas prestaciones en cuanto a capacidad de clculo. Los motivos para
utilizar un cluster de alto rendimiento son:

El tamao del problema por resolver


El precio de la mquina necesaria para resolverlo.

Por medio de un cluster se pueden conseguir capacidades de clculo superiores a


las de un ordenador ms caro que el costo conjunto de los ordenadores del cluster.
Ejemplo de clusters baratsimos son los que se estn realizando en algunas
universidades con computadoras personales desechados por "anticuados" que
consiguen competir en capacidad de clculo con superordenadores carsimos.

16

https://es.scribd.com/doc/211414670/PROCESAMIENTO-PARALELO-pptx

91

Para garantizar esta capacidad de clculo, los problemas necesitan ser


paralelizables, ya que el mtodo con el que los clusters agilizan el procesamiento
es dividir el problema en problemas ms pequeos y calcularlos en los nodos, por
lo tanto, si el problema no cumple con esta caracterstica, no puede utilizarse el
cluster para su clculo.
Para que un problema sea paralelizable se debe hacer uso de bibliotecas especiales
como lo es PVM (parallel virtual machine) o MPI (Message passage interface),
donde la primera es usada especialmente en cluster con nodos heterogneos
(arquitectura del procesador, sistemas operativo, entre otras), y pertenecientes a
diferentes dominios de red, la segunda biblioteca usada para cluster homogneos.
Un tipo de software para realizar cluster high performace es OSCAR (Open Source
Cluster Application Resources) distribuido bajo licencia GPL. Este software trabaja
sobre el sistema operativo Linux. En Windows se podra utilizar "WCC 2003"
(Windows Computer Cluster).

4.5 Casos de estudio.17


Por numerosos motivos, el procesamiento distribuido se ha convertido en un rea
de gran importancia e inters dentro de la Ciencia de la Computacin, produciendo
profundas transformaciones en las lneas de I/D.
Interesa realizar investigacin en la especificacin, transformacin, optimizacin y
evaluacin de algoritmos distribuidos y paralelos. Esto incluye el diseo y desarrollo
de sistemas paralelos, la transformacin de algoritmos secuenciales en paralelos, y
las mtricas de evaluacin de performance sobre distintas plataformas de soporte
(hardware y software). Ms all de las mejoras constantes en las arquitecturas
fsicas de soporte, uno de los mayores desafos se centra en cmo aprovechar al
mximo la potencia de las mismas.
Interesa realizar investigacin en la especificacin, transformacin, optimizacin y
evaluacin de algoritmos distribuidos y paralelos. Esto incluye el diseo y desarrollo
de sistemas paralelos, la transformacin de algoritmos secuenciales en paralelos, y
las mtricas de evaluacin de performance sobre distintas plataformas de soporte
(hardware y software). Ms all de las mejoras constantes en las arquitecturas
fsicas de soporte, uno de los mayores desafos se centra en cmo aprovechar al
mximo la potencia de las mismas.

17

Lneas De Investigacin Y Desarrollo


Paralelizacin de algoritmos secuenciales. Diseo y
de algoritmos.

optimizacin

http://casosdeestudio.blogspot.es/1386026509/unidad-4-procesamiento-paralelo-4-5-casos-de-estudio/

92

Arquitecturas multicore y multithreading en multicore.


Arquitecturas multiprocesador.
Modelos de representacin y prediccin de performance de
algoritmos
paralelos.
Mapping y scheduling de aplicaciones paralelas sobre distintas arquitecturas
multiprocesador.
Mtricas del paralelismo. Speedup, eficiencia, rendimiento, granularidad,
superlinealidad.
Balance de carga esttico y dinmico. Tcnicas de balanceo de carga.
Anlisis de los problemas de migracin y asignacin ptima de procesos y
datos a procesadores. Migracin dinmica.
Patrones de diseo de algoritmos paralelos.
Escalabilidad de algoritmos paralelos en arquitecturas multiprocesador
distribuidos.
Implementacin de soluciones sobre diferentes modelos de arquitectura
homogneas y heterogneas (multicores, clusters, multiclusters y grid).
Ajuste del modelo de software al modelo de hardware, a fin de optimizar el
sistema paralelo.
Evaluacin de performance.
Laboratorios remotos para el acceso transparente a recursos de cmputo
paralelo.

Grandes empresas y sus implementaciones con procesamiento paralelo:


NVIDIA
PYSICS LAYER:

GPU PhysX

CPU PhysX
Graphics Layer:

GPU DirectX Windows


INTEL
PYSICS LAYER:

No GPU PhysX

CPU Havok
Graphics Layer:

GPU Direct X Windows


AMD
PYSICS LAYER:

No GPU PhysX
93

CPU Havok

Graphics Layer:

GPU DirectX Windows

94

CONCLUSION
El procesamiento paralelo permite realizar varias tareas a la vez as como el ahorro
de tiempo en ejecucin. La inclusin de varios procesadores interconectados,
trabajando todos en la isla sinfona, hacen que el proceso de realiza una tares sea
dividido en tres todos los procesadores disponibles conectados. Este proceso hace
de la ejecucin de tareas se de una a eras fluida y veloz, al mismo tiempo que todos
los procesadores trabajan en equipo para poder llevar a cabo la peticin solicitada
por el usuario.
Es importante destacar que no todas las instrucciones pueden ejecutarse a la vez
pues al ser dependientes de otras, tienen que esperar a que su predecesora se
realice y as poder ejecutarse. Tambin que hay un lmite de operaciones que
pueden realizarse de manera simultnea, pero con el avance tecnolgico; el
aumento en las capacidades de los CPU, memoria y dems, este lmite crece.
La importancia de utilizar el procesamiento paralelo es poder atender varios
procesos a la vez sin tener una prdida de tiempo. Un claro ejemplo de esto son las
aerolneas, estas empresas, son de gran demanda para los usuarios de viajes. Gran
nmero de usuarios acceden a las aerolneas solicitando un servicio, para que estas
solicitudes no formen un cuellos de botella, las empresas utilizan el procesamiento
paralelo, con esto se busca realizar grandes cantidades de procesos en tiempo
relativamente corto, cada proceso es dividido entre cada procesador conectado,
para compartir el trabajo y realizarlo en el menor tiempo posible.

95

BIBLIOGRAFIA
Introduccin a la Computacin Paralela
2004 J. Aguilar, E. Leiss
Organizacin y Arquitectura de Computadoras
William Stallings
http://www.aliat.org.mx/BibliotecasDigitales/sistemas/Arquitectura_de_computadoras_II.pdf

http://casosdeestudio.blogspot.es/1386026509/unidad-4-procesamiento-paralelo-4-5-casos-deestudio/
https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzad
as/Arquitecturas_de_computadores_avanzadas_(Modulo_2).pdf
http://www.infor.uva.es/~bastida/Arquitecturas%20Avanzadas/Redes.pdf

96

Você também pode gostar