Unidad 4 Arqui de computadoras

16
INSTITUTO TECNOLÓGICO DE CULIACÁN ALUMNO: GONZÁLEZ VEGA EDITH MATERIA: ARQUITECTURA DE CÓMPUTO TRABAJO: UNIDAD 4: PROCESAMIENTO PARALELO HORARIO: 14:00-15:00 PM Culiacán, Sinaloa. 14 Noviembre 2013 Índice UNIDAD 4 4 Procesamiento paralelo 4.1 Aspectos básicos de la computación paralela 4.2 Tipos de computación paralela 4.2.1 Taxonomía de las arquitecturas paralelas 4.2.2 Arquitectura de los computadores secuenciales 4.2.2.1 Taxonomía de Flynn 4.2.2.2 Organización del espacio de direcciones de memoria 4.3 Sistemas de memoria compartida: Multiprocesadores 4.3.1 Redes de interconexión dinámicas o indirectas 4.3.1.1 Redes de medio compartido 4.3.1.2 Redes conmutadas 4.3.2 Coherencia de cache 4.4 Sistemas de memoria distribuida. Multicomputadores: Clúster 4.4.1 Redes de interconexión estáticas 4.4.2 Clúster 4.4.3 Programación de clúster 4.4.4 Consideraciones sobre el rendimiento de los clúster 4.5 Casos de estudio Introducción

description

lol

Transcript of Unidad 4 Arqui de computadoras

Page 1: Unidad 4 Arqui de computadoras

INSTITUTO TECNOLÓGICO DE CULIACÁN

ALUMNO:GONZÁLEZ VEGA EDITHMATERIA:ARQUITECTURA DE CÓMPUTOTRABAJO:UNIDAD 4: PROCESAMIENTO PARALELOHORARIO:14:00-15:00 PM

Culiacán, Sinaloa.14 Noviembre 2013Índice

UNIDAD 44 Procesamiento paralelo4.1 Aspectos básicos de la computación paralela4.2 Tipos de computación paralela4.2.1 Taxonomía de las arquitecturas paralelas4.2.2 Arquitectura de los computadores secuenciales 4.2.2.1 Taxonomía de Flynn4.2.2.2 Organización del espacio de direcciones de memoria 4.3 Sistemas de memoria compartida: Multiprocesadores4.3.1 Redes de interconexión dinámicas o indirectas 4.3.1.1 Redes de medio compartido4.3.1.2 Redes conmutadas4.3.2 Coherencia de cache4.4 Sistemas de memoria distribuida. Multicomputadores: Clúster4.4.1 Redes de interconexión estáticas4.4.2 Clúster4.4.3 Programación de clúster4.4.4 Consideraciones sobre el rendimiento de los clúster4.5 Casos de estudio

IntroducciónEn esta investigación se hablara sobre el desarrollo que lleva a cabo el procesamiento paralelo que trata de un proceso empleado para acelerar el tiempo de ejecución de un programa diviendolo en múltiples trozos que se ejecutaran al mismo tiempo, cada uno en su propio procesador.En principio, un programa dividido en trozos de esta forma, podría ejecutarse a veces más rápido, que su equivalente en un solo procesador, pero aún así queda claro que éste es su límite teórico (es decir el máximo que podremos alcanzar) pudiendo conseguir en el mejor de los casos un valor aproximado con un buen paralelismo.

El procesamiento en paralelo es una forma eficaz de procesamiento de información quefavorece la explotación de los sucesos concurrentes en el proceso de computación.

Page 2: Unidad 4 Arqui de computadoras

La concurrencia implica paralelismo, simultaneidad y pipeline.Hay tres tipos de sucesos:

Sucesos Paralelos: ocurren en múltiples recursos durante el mismo intervalo de tiempo.Sucesos Simultáneos: ocurren en el mismo instante.Sucesos Pipeline: ocurren en lapsos superpuestos.

Se puede hablar de niveles de paralelismo, que caracterizamos de la siguiente manera:

- Multiprogramación, Multiprocesamiento: Estas acciones se toman a nivel de Programa o Trabajo.- Tarea o Procedimientos: Acciones que se toman dentro de un mismo programa, ejecutándose procesos independientes en forma simultánea.- Interinstrucciones: Acciones a nivel de instrucción, o sea, dentro de mismo proceso o tarea se pueden ejecutar instrucciones independientes en forma simultánea.- Intrainstrucciones: Acciones simultáneas que se pueden realizar para una misma instrucción, por ejemplo vectorización de operaciones escalares dentro de una instrucción compleja tipo DO, FOR, etc.

El paralelismo de un mayor nivel se obtiene por medio de algoritmos, los de menor nivel con importante actividad del hardware.

PROCESAMIENTO PARALELO

Es un proceso empleado para acelerar el tiempo de ejecución de un programa dividiéndolo en múltiples trozos que se ejecutaran al mismo tiempo, cada uno en su propios procesadores.El procesamiento en paralelo se basa principalmente en multiprocesadores fuertemente acoplados que cooperan para la realización de los procesos.Sus características son:•posee dos o más procesadores de uso general similares y de capacidades comparables.•todos los procesadores comparten el acceso a una memoriaglobal•también puede utilizarse algunas memorias locales (privadas como la cache).El procesamiento paralelo implica una serie de dificultades a nivel programación de software la ventaja de él procesamiento en paralelo es ejecuta procesos en donde cada procesador se encargar de uno u otro y aceleran de esta forma el cálculo.

4.1 Aspectos básicos de la computación paralela

La computación Paralela, es muy importante actualmente, al permitir mejorar la velocidad en la solución de grandes problemas, de modo que se mejora el rendimiento de computo.La computación paralela es una forma de cómputo en la que muchas instrucciones se ejecutan simultáneamente, operando sobre el principio de que problemas grandes, a menudo se pueden dividir en unos más pequeños, que luego son resueltos simultáneamente (en paralelo). Hay varias formas diferentes de computación paralela: paralelismo a nivel de bit, paralelismo a nivel de instrucción, paralelismo de datos y paralelismo de tareas. El paralelismo se ha empleado durante muchos años, sobre todo en la computación de altas prestaciones, pero el interés en ella ha crecido últimamente debido a las limitaciones físicas que impiden el aumento de la frecuencia. Como el consumo de energía —y por consiguiente la generación de calor— de las computadoras constituye una preocupación en los últimos años, la computación en paralelo se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en forma de procesadores multinúcleo. Las computadoras paralelas pueden clasificarse según el nivel de paralelismo que admite su hardware: equipos con procesadores multinúcleo y multi-procesador que tienen múltiples elementos deprocesamiento dentro de una sola máquina y los clústeres, MPPS y grids que utilizan varios equipos para trabajar en la misma tarea. Muchas veces, para acelerar la tareas específicas, se utilizan arquitecturas especializadas de computación en paralelo junto a procesadores tradicionales.Los programas informáticos paralelos son más difíciles de escribir que los secuenciales,5porque la concurrencia introduce nuevos tipos de errores de software, siendo las condiciones de carrera los más

Page 3: Unidad 4 Arqui de computadoras

comunes. La comunicación y sincronización entre diferentes subtareas son algunos de los mayores obstáculos para obtener un buen rendimiento del programa paralelo.La máxima aceleración posible de un programa como resultado de la paralelización se conoce como la ley de Amdahl.

El paralelismo puede obtenerse de distintas maneras:Multicomputadoras: Computadoras independientes, muy a menudo una de ellas actúa como supervisor, que realizan una tarea común en una sola ubicación (una configuración muy común, aunque ciertamente limitada, es la minicomputadora como preprocesador de un computador mainframe)Multiprocesadores: Un conjunto de unidades de cómputo, cada una de las cuales tiene sus propios conjuntos de instrucciones y datos, compartiendo una misma memoria. Los computadores multiprocesadores consisten en un número n mayor o igual a 2 de procesadores que operan simultáneamente sobre una misma memoria, y están interconectados mediante canales que transmiten comandos de control y datos. Están controlados por un único Sistema Operativo.Redes de computadoras: Computadoras independientes conectadas mediante un canal de manera tal que los recursos propios disponibles en un punto de la red pueden estardisponibles para todos los miembros de la red.Procesador Pipeline: Un solo computador el cual puede realizar simultáneamente operaciones de cálculos en determinadas secciones, con diferentes estadios de completitud. Los procesadores pipeline se basan en el principio de dividir los cálculos entre una cantidad de unidades funcionales que operan simultáneamente existiendo superposición.Procesador Array: Un grupo de unidades de cómputo cada una de las cuales realiza simultáneamente la misma operación sobre diferentes conjuntos de datos. Los procesadores array operan sobre vectores. Las instrucciones del computador vectorial son ejecutadas en serie (como en los computadores clásicos) pero trabajan en forma paralela sobre vectores de datos.Algunos Aspectos a considerar son:-Diseño de computadores paralelos. Escalabilidad y comunicaciones-Diseño de algoritmos eficientes. No hay ganancia si los algoritmos no se diseñan adecuadamente-Métodos para evaluar los algoritmos paralelos. ¿Cómo de rápido se puede resolver un problema usando una maquina paralela? ¿Con que eficiencia se usan esos procesadores?-Lenguajes para computadores paralelos, flexibles para permitir una implementación eficiente y que sean fáciles de programar.

4.2 Tipos de computación paralela

La computación paralela o procesamiento en paralelo consiste en acelerar la ejecución de un programa mediante su descomposición en fragmentos que pueden ejecutarse de forma simultánea, cada uno en su propia unidad de procesoEn este sentido se habla de mayor o menor grado de paralismo en la medida en que un algoritmo sea más o menos divisible en partes independientes con igual coste computacional.Entre las interacciones hayque considerar dos siguientes:-la transferencia de datos.-la sincronización de los cálculos de los diferentes procesadoresTipos de computadores según la taxonomía de Flynn:

• SISD: Computador secuencial. Un procesador y una memoria. Computador secuencial. 

• SIMD: Máquina con varios procesadores pero una única Unidad de Control. Computador vectorial.

• MIMD: Máquina con varios procesadores “completos”. Computador paralelo.

4.2.1 Taxonomía de las arquitecturas paralelas

Las diferentes posibilidades existentes para desarrollar sistemas paralelos hacen que una clasificación definitiva sea complicada, y seguramente estéril. En primer lugar las características básicas del modelo secuencial, con el fin de delimitar los aspectos básicos que son comunes o diferentes de los sistemas paralelos.Una clasificación clásica propuesta por flynn que se basa en el flujo de instrucciones y en el flujo de datos, es decir el mecanismo de control utilizado.

Page 4: Unidad 4 Arqui de computadoras

4.2.2 Arquitectura de los computadores secunciales

Los computadores secuenciales, también denominados computadores serie, se basan en la arquitectura de j. von neumann. En este modelo se considera una única secuencia de instrucciones que tratan una única secuencia de datos. Por ello se conocen como computadoresLa programación paralela permite:– Resolver problemas que no caben en una CPU– Resolver problemas que no se resuelven en un tiempo razonable• Se pueden ejecutar– Problemas mayores– Más rápidamente (aceleración)– Más problemas

4.2.2.1 Taxonomía de Flynn

Clasificación clásica de arquitectura de computadores que hace alusión a sistemas con uno o varios procesadores. Flynn la publicó por primeravez en 1966 y por segunda vez en 1970.Esta taxonomía se basa en el flujo que siguen los datos dentro de la máquina y de las instrucciones sobre esos datos. Se define como flujo de instrucciones al conjunto de instrucciones secuenciales que son ejecutadas por un único procesador y como flujo de datos al flujo secuencial de datos requeridos por el flujo de instrucciones.Con estas consideraciones, Flynn clasifica los sistemas en cuatro categorías:• SISD (Single Instruction stream, Single Data stream)Los sistemas de este tipo se caracterizan por tener un único flujo de instrucciones sobre un único flujo de datos, es decir, se ejecuta una instrucción detrás de otra. Este es el concepto de arquitectura serie de Von Neumann donde, en cualquier momento, sólo se ejecuta una única instrucción.• SIMD (Single Instruction stream, Multiple Data stream)Estos sistemas tienen un único flujo de instrucciones que operan sobre múltiples flujos de datos. Ejemplos de estos sistemas los tenemos en las máquinas vectoriales con hardware escalar y vectorial.El procesamiento es síncrono, la ejecución de las instrucciones sigue siendo secuencial como en el caso anterior, todos los elementos realizan una misma instrucción pero sobre una gran cantidad de datos. Por este motivo existirá concurrencia de operación, es decir, esta clasificación es el origen de la máquina paralela. El funcionamiento de este tipo de sistemas es el siguiente. La Unidad de Control manda una misma instrucción a todas las unidades de proceso (ALUs). Las unidades de proceso operan sobre datos diferentes pero con la misma instrucción recibida.Existen dos alternativas distintas que aparecen después de realizarse esta clasificación:• Arquitectura Vectorial con segmentación:Una CPU única particionada en unidades funcionales independientes trabajando sobre flujos de datos concretos• Arquitectura Matricial (matriz de procesadores): Varias ALUs idénticas a las que el procesador de instrucciones asigna una única instrucción pero trabajando sobre diferentes partes del programa.• SIMD CON CPU PARTICIONADA:En este tipo de sistemas, la CPU se diseña como un conjunto de unidades funcionales independientes que ejecutan simultáneamente varias operaciones aritmético/lógicas. La CPU contiene un único procesador con instrucciones que procesa un único flujo de estas liberando cada instante una. Debido a que las unidades funcionales operan independientemente, es posible liberar nuevas instrucciones antes de que finalice la ejecución de las instrucciones previas.• SIMD CON MULTIPLES ALUS: Estos sistemas trabajan en modo lock step, ejecutando o ignorando una misma instrucción para todas las ALUs. Existe un único procesador que maneja el flujo de instrucciones del programa y que transfiere todas las instrucciones a las diferentes unidades aritmético/lógicas.• MIMD (Multiple Instruction stream, Multiple Data stream): Sistemas con un flujo de múltiples instrucciones que operan sobre múltiples datos. Estos sistemas empezaron a utilizarse a principios de los 80. Son sistemas con memoria compartida que permiten ejecutar varios procesos simultáneamente (sistema multiprocesador). Cuando las unidades de proceso reciben datos de una memoria no compartida estos sistemas reciben el nombre de MULTIPLE SISD (MSISD).En arquitecturas con varias unidades de control (MISD Y MIMD), existe otro nivel superior con una unidad de controlque se encarga de controlar todas las unidades de control del sistema.

Page 5: Unidad 4 Arqui de computadoras

4.2.2.2 Organización del espacio de direcciones de memoriaEl intercambio de información entre procesadores depende del sistema de almacenamiento que se disponga.

Sistemas de memoria compartida o multiprocesadoresSe caracterizan por compartir físicamente la memoria, es decir todos acceden al mismo espacio de direcciones. En esta arquitectura a la memoria es igualmente accesible por todos los procesadores a través de la red de interconexión.

Sistemas de memoria distribuida o multicomputadoresEn estos sistemas cada procesador dispone de su propia memoria. Denominada local o privada, independiente del resto y accesible solo por su procesador.Existen dos espacios de dirección disponibles para el microcontrolador Z8PLUS: 

• El archivo de registros de la RAM contiene direcciones para todos los registros de control y los de propósito general. 

• La memoria de programa contiene direcciones para todas las localidades de memoria donde se hallan guardado códigos o datos ejecutables.

4.3 Sistemas de memoria compartida: multiprocesadores

Cada procesador posee su propia unidad de control ejecuta su propio código sobre sus propios datos, puede ejecutar cualquier aplicación (no solo programas vectoriales).Clasificación de los multiprocesadores por la ubicación de la memoria• Multiprocesadores de Multiprocesadores de memoria compartida memoria compartida Todos los procesadores acceden a una memoria común La comunicación entre procesadores se hace a través de la memoria Se necesitan primitivas de sincronismo para asegurar el intercambio de datosMultiprocesadores de memoria compartida• La mayoría de los multiprocesadores comerciales son del tipo UMA ( La mayoría de los multiprocesadores comercialesson del tipo UMA(Uniform Uniform MemoryAccess): todos los procesadores tienen igual tiempo de acceso a la memoria compartida.• En la arquitectura UMA los procesadores se conectan a la memoria a través de un bus, una red multietapa o un conmutador de barras cruzadas (crossbar)y p p p y disponen de su propia memoria caché.• Los procesadores tipo NUMA (Non Uniform Memory Access) presentan tiempos de acceso a la memoria compartida que dependen de la ubicación del elemento de proceso y la memoria.Multiprocesadores de memoria compartida: conexión por bus compartido• Es la organización más común en los computadores personales y servidores Esla organización más común en los computadores personales y servidores• El bus consta de líneas de dirección, datos y control para implementar: El protocolo de transferencias de datos con la memoriaEl arbitraje del acceso al bus cuando más de un procesador compite por utilizarlo.• Los procesadores utilizan cachés locales para:Reducir el tiempo medio de acceso a memoria, como en un monoprocesador Disminuir la utilización del bus compartido.Protocolos de transferencia síncronos• Existe un reloj que gobierna todas las actividades del bus, las cuales tienen lugar en un número entero de ciclos de reloj. • La transferencia coincide con uno de los flancos del relojMultiprocesadores de memoria compartida: conexión por conmutadores crossbar•Cada procesador (Cada procesador(Pi) y cada módulo de memoria ( ) y cada módulo de memoria (Mi) tienen su propio bus ) tienen su propio bus• Existe un conmutador (S)en los puntos de intersección que permite conectar un bus de memoria con un bus de procesador

Page 6: Unidad 4 Arqui de computadoras

• Para evitar conflictos cuando más de un procesador pretende acceder al mismo módulo de Para evitar conflictos cuando más de un procesador pretende acceder al mismo módulo de memoria se establece un orden de prioridad• Se trata de una red sin bloqueo con una conectividad completa pero de alta complejidad.

-Redes basadas en buses: Cuando un procesador necesita acceso global a memoria, genera una solicitud al bus. Esta red es atractiva, dada su simplicidad y capacidad para proporcionar acceso uniforme a la memoria compartida. Pero el bus sólo puede llevar una determinada cantidad de datos entre la memoria y los procesadores. El rendimiento se satura para un número pequeño de procesadores. Si los procesadores disponen de memorias locales caché se puede solventar el problema.

• Multiprocesadores de memoria distribuida o multicomputadoresCada procesador tiene su propia memoria La comunicación se realiza p pj or intercambio explicito de mensajes a través de una red

MEMORIA COMPARTIDA CENTRALIZADA La memoria compartida por todos los procesadores y accesible desde cualquiera. Descompuesta en varios módulos para permitir el acceso concurrente de varios procesadoresCada procesador debe tener un espacio de direccionamiento suficientemente amplio como para poder direccionarla completamente.Multiprocesador con un sistema de memoria compartida en el cual el tiempo de acceso varía dependiendo de la ubicación de la palabra de memoria.La memoria compartida se distribuye físicamente por todos los procesadores (memorias locales). El conjunto de memorias locales forma elespacio de direccionamiento global accesible por todos los procesadores. En los multiprocesadores cada procesador suele tener asociada una cache local y ello introduce el problema de la coherencia en chache: cualquier modificación local de una determinada posición de la memoria compartida se realizara primeramente sobre una chache local y ello puede dar lugar a una visión global incoherente de la memoria.los elementos que integran un multiprocesador puede estar conectados entre sí a través de una estructuraJerárquica de buses.los buses digitales son los sistemas de interconexión fundamentales adoptados en sistemas comerciales desde estaciones de trabajo a minicomputadores, mainframes y multiprocesadores.

4.3.1 Redes de interconexión dinámicas o indirectas

El objetivo de la interconexión de red es dar un servicio de comunicación de datos que involucre diversas redes con diferentes tecnologías de forma transparente para el usuario. Este concepto hace que las cuestiones técnicas particulares de cada red puedan ser ignoradas al diseñar las aplicaciones que utilizaran los usuarios de los servicios.Los dispositivos de interconexión de redes sirven para superar las limitaciones físicas de los elementos básicos de una red extendiendo las topologías de esta.El objetivo de la interconexión de red es dar un servicio de comunicación de datos que involucre diversas redes con diferentes tecnologías de forma transparente para el usuario. Este concepto hace que las cuestiones técnicas particulares de cada red puedan ser ignoradas al diseñar las aplicaciones que utilizaran los usuarios de los servicios.Los dispositivos de interconexión de redes sirven para superar las limitacionesfísicas de los elementos básicos de una red extendiendo las topologías de esta.

Red DinamicaUna red dinámica es una red cuya topología puede variar durante el curso de la ejecución de un programa paralelo o entre dos ejecuciones de programas. La red está constituida por elementos materiales específicos, llamados conmutadores o switches.Las redes dinámicas son redes que pueden cambiar la topología de comunicación durante la ejecución de los programas o entre dos ejecuciones de programas. las redes dinámicas se han utilizado esencialmente en los

Page 7: Unidad 4 Arqui de computadoras

multiprocesadores de memoria compartida: la red dinámica soporta por consiguiente , la carga de unir los procesadores a los bancos de la memoria central.

Red IndirectaLas redes indirectas también pueden modelarse con un grafo donde n es un conjunto de switches y c es el conjunto de enlaces unidireccionales o bidireccionales entre switches. Para el análisis de la mayoría de propiedades, no es necesario incluir explícitamente los nodos de procesamiento en el grafo. Aunque las redes indirectas pueden modelarse de forma similar alas directas, existen algunas diferencias entre ellas.

Redes de interconexión multietapa Es un tipo de red intermedia en términos de escalabilidad en costo y rendimiento. Conecta p elementos con otros p elementos.

4.3.1.1 Redes de medio compartido

Dependiendo de su arquitectura y de los procedimientos empleados para transferir la información las redes de comunicación se clasifican en:-Redes conmutadas-Redes de difusión

4.3.1.2 Redes conmutadoras

Consiste en un conjunto de nodos interconectados entre si, a través de medios de transmisión, formando la mayoría de las veces una topologíamallada, donde la información se transfiere encaminándola del nodo de origen al nodo destino mediante conmutación entre nodos intermedios.Una transmisión de este tipo tiene 3 fases:-Establecimiento de la conexión-Transferencia de la información-Liberación de la conexiónLa conmutación en un nodo a la conexión física o lógica de un camino de entrada al nodo con un camino de salida del nodo con el fin de transferir la información que llegue por el primer camino al segundo.la redes conmutadas son las redes de área extensaLas redes conmutadas se dividen en:-Conmutación de paquetes-Conmutación de circuitos

-Redes de barras cruzadas: Utiliza una red de conmutadores.Conecta p procesadores con b módulos de memoria. El número total de conmutadores requeridos es Θ(pb). Conforme crece p, la complejidad de la red aumenta según Ω(p2). Por tanto no son muy escalables en términos de coste.

4.3.2 Coherencia de caché

Hace referencia a la integridad de los datos almacenados en las caches locales de los recursos compartidos. La coherencia de la cache es un caso especial de la coherencia de memoria. Coherencia de cache es cuando existen varias copias del mismo dato simultáneamente en caches diferentes por lo tanto si los procesadores actualizan sus copias pueden producirse inconsistencia de memoria. Cuando un procesador cambia un dato en su propia cache local el cambio debe hacerse en todas las caches que tiene copia. Alternativamente las otras copias se deben invalidar. El protocolo de coherencia es situar las variables locales utilizadas recientemente en la cache apropiada y mantelos allí para las distintas escrituras y lecturas, al mismo tiempo que se mantieneLaconsistencia de las variables compartidas que pudieron encontrarse en varias caches al mismo tiempo.Generalmente se han divido en aproximaciones de software y hardware:-Software: intentan evitar la necesidad de circuitería y lógica de hardware adicional dejando que el

Page 8: Unidad 4 Arqui de computadoras

compilador y el sistema operativo se encargue del problema-Hardware: estos se denominan protocolos de coherencia de chache y permiten reconocer dinámicamente en el momento de la ejecución las situaciones de inconsistencia por lo tanto existe un uso más efectivo de las caches y reduce la complejidad en el desarrollo del software.

Los sistemas UMA no escalan bien– Los sistemas basados en bus se pueden saturar.– Una red de barras cruzadas grande puede ser muy cara.

• Problema de la coherencia de caché– Puede haber copia de una variable en varias cachés– Cuando un procesador escribe puede no ser visible al resto– Es necesario asegurar la visibilidad o la coherenciade cachéSolución de la coherencia caché

• Existen dos formas de abordar el problema de la coherencia caché.  Software, lo que implica la realización de compiladores que eviten la incoherencia entre cachés de datos compartidos.  Hardware qg , ue mantengan de forma continua la coherencia en el sistema, siendo además transparente al programador. 

• Podemos distinguir también dos tipos de sistemas multiprocesadores  Sistemas basados en un único bus: se utilizan protocolos de sondeo o snoopy que analizan el bus para detectar incoherencia. Cada nodo procesador tendrá los bits necesarios para indicar el estado de cada línea de su caché y así realizar las transacciones de coherencia necesarias según lo que ocurra en el bus en cadamomento.

• Tanto si son de sondeo como si no, existen dos políticas para mantener la coherencia:  Invalidación en escritura (write invalidate): siempre que un procesador modifica un dato de un bloque en la caché, invalida todas las demás copias de ese bloque guardadas en las otras cachés.  Actualización en escritura (write update): actualiza las copias existentes en las otras cachés en vez de invalidarlas.

4.4 Sistemas de memoria distribuida

Los sistemas de memoria distribuida o multicomputadores pueden ser de dos tipos básicos. El primer de ellos consta de un único computador con múltiples CPUs comunicadas por un bus de datos mientras que en el segundo se utilizan múltiples computadores, cada uno con su propio procesador, enlazados por una red de interconexión más o menos rápida.Sobre los sistemas de multicomputadores de memoria distribuida, se simula memorias compartidas. Se usan los mecanismos de comunicación y sincronización de sistemas multiprocesadores.Un clúster es un tipo de arquitectura paralela distribuida que consiste de un conjunto de computadores independientes interconectados operando de forma conjunta como único recurso computacional sin embargo, cada computador puede utilizarse de forma independiente o separada

En esta arquitectura, el computador paralelo es esencialmente una colección de procesadores secuenciales, cada uno con su propia memoria local, que pueden trabajar conjuntamente.• Cada nodo tiene rápido acceso a su propia memoria y acceso a la memoria de otros nodos mediante una red de comunicaciones, habitualmente una red de comunicaciones de alta velocidad. • Los datos son intercambiados entre los nodos como mensajes a través de lared.Redes de ordenadores• Una red de ordenadores, especialmente si disponen de una interconexión de alta velocidad, puede ser vista como un multicomputador de memoria distribuida y como tal ser utilizada para resolver problemas mediante computación paralela.

Page 9: Unidad 4 Arqui de computadoras

4.4.1 Redes de interconexión estáticaLas redes estáticas emplean enlaces directos fijos entre los nodos. Estos enlaces, una vez fabricado el sistema son difíciles de cambiar, por lo que la escalabilidad de estas topologías es baja. Las redes estáticas pueden utilizarse con eficiencia en los sistemas en que pueden predecirse el tipo de tráfico de comunicaciones entre sus procesadoresClases de redes de interconexión:-Formación lineal:Se trata de una red unidimensional en que los nodos se conectan cada uno con el siguiente medianteN-1 enlaces formando una línea.-Mallas y toros:Esta red de interconexión es muy utilizada en la práctica. Las redes en toro son mallas en que sus filas y columnas tienen conexiones en anillo, esto contribuye a disminuir su diámetro. Esta pequeña modificación permite convertir a las mallas en estructuras simétricas y además reduce su diámetro a la mitad.

4.4.2 Clúster

Un clúster es un grupo de ordenadores débilmente acoplados que trabajan en estrecha colaboración, de modo que en algunos aspectos pueden considerarse como un solo equipo. Los clústeres se componen de varias máquinas independientes conectadas por una red. Mientras que las máquinas de un clúster no tienen que ser simétricas, de no serlo, el balance de carga es más difícil de lograr. El tipo más común de clúster es el cluster Beowulf, que es un clúster implementado con múltiples ordenadores comerciales idénticosconectados a una red de área local TCP/IPEthernet. La tecnología Beowulf fue desarrollada originalmente por Thomas Sterling y Donald Becker. La gran mayoría de los superordenadores TOP500 son clústeres.Se aplica a los conjuntos o conglomerados de computadoras construidos mediante la utilización de hardwares comunes y que se compartan como si fuesen una única computadora.Los clúster son usualmente empleados para mejorar el rendimiento y la disponibilidad por encima de la que es provista por un solo computador típicamente siendo más económico que computadores individuales de rapidez y disponibilidad comparables.De un clúster se espera que presente combinaciones de los siguientes servicios:1.Alto rendimiento2.Alta disponibilidad3.Balance de carga4.Escalabilidad

La construcción de los ordenadores del clúster es más fácil y económica debido a su flexibilidad: pueden tener toda la misma configuración de hardware y sistema operativo diferente rendimiento pero con arquitectura y sistemas operativos similares o tener diferente hardware y sistema operativo lo que hace más fácil y económica su construcción. Para que un clúster funcione como tal no basta solo con conectar entre si los ordenadores, si no que es necesario proveer un sistema de manejo del clúster, el cual se encargue de interactuar con el usuario y los procesos que ocurren en él para optimizar el funcionamiento.La tecnología clúster permite a las organizaciones incrementar su capacidad de procesamiento usando tecnología estándar tanto en componentes de hardware como de software que pueden adquirirse a un costo relativamente bajo.

4.4.3 Programación de clústerEstos clúster están diseñados y optimizados para correrprogramas paralelos. En este caso, los programas tienen que ser hechos específicamente para funcionar en forma paralela. Típicamente estos programas son modelos que requieren realizar gran cantidad de cálculos numéricos. La ventaja de programarlos de esta manera y correrlos en un clúster es que se reduce drásticamente los tiempos de proceso. En el caso de modelos meteorológicos usados para predecir el tiempo es obvia la necesidad de correrlos en tiempo mínimo.Cuando se programa un modelo en una plataforma multiprocesadores es necesario usar esquemas de programación paralela. Las bibliotecas son las que permiten paralelizacion de tareas. En el caso de los clúster SCALI, portar programas hechos con bibliotecas MPI es directo gracias al uso de biblioteca SCAMPI

4.4.4 Consideraciones sobre rendimiento de los clústerPara diseñar, implementar, probar y mantener un clúster se requiere un entendimiento básico pero claro de

Page 10: Unidad 4 Arqui de computadoras

hardware de computadoras, de redes de computadoras y de sistemas operativos y la habilidad para investigar algunos tópicos especializados, como dispositivos de interconexión deAlta velocidad, tal vez reintroducirse a lenguajes de programación como FORTRAN y librerías para el desarrollo de aplicaciones como MPI. Una vez escogido un sistema operativo, dígase Linux, se requiere algo de experiencia en la administración de sistemas Linux y en la forma de realizar conexiones de red.De manera lógica, cada nodo delx clúster tiene una parte de hardware y otra de software. El hardware está compuesto por procesadores, memoria, interfaz de red y discos duros entre otros. En cuanto al software, el nivel bajo corresponde al sistema operativo, el medio consiste en las libreríasde paralelizacion y el alto está representado por la aplicación que se desea ejecutar en el clúster

4.5 Casos de estudio1. NVIDIA PYSICS LAYER: GPU PhysXCPU PhysXGraphics Layer: GPU –Direct X Windows2. INTELPYSICS LAYER:No GPU PhysXCPU HavokGraphics Layer:GPU –Direct XWindows3. AMD PYSICS LAYER: No GPU PhysXCPU HavokGraphics Layer:GPU –Direct XWindows

ConclusiónEn conclusión final estos procesamientos se utilizan para principalmente para procesar datos de forma que un computador pueda ejecutar varias tareas o procesos simultáneamente y hacer que el procesador tenga menos tiempo de ejecución.El procesamiento paralelo permite realizar varias tareas a la vez así como el ahorro de tiempo en ejecución, 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. También que hay un límite de operaciones que pueden realizarse de manera simultánea, pero con el avance tecnológico; el aumento en las capacidades de los CPU, memoria y demás, este límite crece.

Bibliografía1. http://www.mundodescargas.com/apuntes-trabajos/informatica/decargar_arquitecturas-avanzadas.pdf

2. http://es.wikipedia.org/wiki/Computaci%C3%B3n_paralela#Taxonom.C3.ADa_de_Flynn

3. http://informatica.uv.es/iiguia/ALP/materiales/1_1_a_ComputacionParalela.pdf

4. http://www.fdi.ucm.es/profesor/jjruz/EC-IS/Temas/Tema%2010.pdf

Page 11: Unidad 4 Arqui de computadoras

5. http://share.pdfonline.com/dbda13e01a0f4dfe82082011a5c8098e/Desarrollo%20de%20la%20Unidad%204.htm

6. http://sistemas-distribuidos.wikispaces.com/1.1+Arquitecturas+paralelas.