Documentos de Académico
Documentos de Profesional
Documentos de Cultura
TAPACHULA
CARRERA
ARQUITECTURA DE COMPUTADORAS
DOCENTE
PROCESAMIENTO PARALELO
ESTUDIANTES
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
10
35
38
39
39
43
43
54
64
67
70
83
83
4.4.2 Clusters
87
91
92
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.
11
Granularidad
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
15
16
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
21
22
Generalidades
Metodologa
24
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
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.
28
30
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
33
ID
IF
EX
ID
IF
MEM
EX
ID
IF
WB
MEM
EX
ID
IF
WB
MEM
EX
ID
WB
MEM
EX
WB
MEM
WB
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
38
Taxonoma de Flynn.
40
41
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.
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.
https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arquit
ecturas_de_computadores_avanzadas_(Modulo_2).pdf P. 12
46
https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arquit
ecturas_de_computadores_avanzadas_(Modulo_2).pdf P.13
47
CPU
CPU
Memoria
bus
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.
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
Operacin de escritura
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
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.
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
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
Origen
Posicin
51
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
53
http://www.infor.uva.es/~bastida/Arquitecturas%20Avanzadas/Redes.pdf P. 100
54
55
56
Redes omega: esta red de N entradas est formada por log 2 etapas de
59
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
61
62
63
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.
No conmutadas.
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.
http://www.uaeh.edu.mx/docencia/Tesis/icbi/licenciatura/documentos/redes%20de%20transmision%20d
e%20datos.pdf P. 20
68
http://www.uaeh.edu.mx/docencia/Tesis/icbi/licenciatura/documentos/redes%20de%20transmision%20d
e%20datos.pdf P. 21
69
10
https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arqu
itecturas_de_computadores_avanzadas_(Modulo_2).pdf P.27
70
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
12
https://www.exabyteinformatica.com/uoc/Informatica/Arquitecturas_de_computadores_avanzadas/Arqu
itecturas_de_computadores_avanzadas_(Modulo_2).pdf P. 29
72
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.
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.
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.
75
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
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.
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
80
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
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).
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
de dispositivos de entrada/salida).
85
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:
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:
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.
16
https://es.scribd.com/doc/211414670/PROCESAMIENTO-PARALELO-pptx
91
17
optimizacin
http://casosdeestudio.blogspot.es/1386026509/unidad-4-procesamiento-paralelo-4-5-casos-de-estudio/
92
GPU PhysX
CPU PhysX
Graphics Layer:
No GPU PhysX
CPU Havok
Graphics Layer:
No GPU PhysX
93
CPU Havok
Graphics Layer:
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