SlideShare una empresa de Scribd logo
INSTITUTO TECNOLOGICO DE CHIHUACHUA II
ING. SISTEMAS COMPUTACIONALES
Materia: Arquitectura de computadoras
Fecha: 26 de mayo de 2015
Integrantes:
Flor Ramos Muñiz
Ivonne Diego
Yazmin Polanco
Johana Gómez
Ana Teresa Morales Arredondo
Jesús Sánchez
2
ÍNDICE
Aspectos básicos de la computación paralela…………………………………….3
Computación paralela……………………………………………………………………….5
Taxonomía de las arquitecturas………………………………………………………8
Sistema secuencial…………………………………………………………………………13
Taxonomía de Flynn………………………………………………………………………… 14
Organización del espacio de direcciones de memoria……………………… 17
Sistemas de memoria distribuida. Multicomputadoras Clusters……….. 23
Redes De Interconexión Estática……………………………………………………….. 24
Clúster………………………………………………………………………………………………. 25
Programación De Clúster…………………………………………………………………… 27
Consideraciones Sobre Rendimiento De Los Clúster………………………….. 27
Coherencia de cache…………………………………………………………………………. 27
Mecanismos para la coherencia de la cache……………………………………… 29
Modelos de Coherencia…………………………………………………………………….. 31
Consideraciones sobre el rendimiento de los clusters……………………….. 31
Casos de estudio…………………………………………………………………………………34
Bibliografía………………………………………………………………………………………… 36
3
4
4.1 Aspectos básicos de la computación paralela.
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.
5
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 de procesamiento 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, porque la concurrencia introduce nuevos tipos de errores de
software, siendo las condiciones de carrera los más 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.
6
Aspectos a considerar
 Diseño de computadores paralelo: 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 máquina paralela? ¿Con qué
eficiencia se usan esos procesadores?.
 Lenguajes para computadores paralelos, flexibles para permitir una
implementación eficiente y que sean fáciles de programar.
 Herramientas para la programación paralela.
 Programas paralelos portables.
 Compiladores paralelizantes.
4.2 COMPUTACIÓN PARALELA
La computación paralela es una técnica de programación en la que muchas
instrucciones se ejecutan simultáneamente. Se basa en el principio de que los
problemas grandes se pueden dividir en partes más pequeñas que pueden
resolverse de forma concurrente (“en paralelo”).
TIPOS DE COMPUTACION PARALELA:
PARALELISMO A NIVEL DE BIT
Desde el advenimiento de la integración a gran escala (VLSI) como
tecnología de fabricación de chips de computadora en la década de 1970
hasta alrededor de 1986, la aceleración en la arquitectura de
computadores se lograba en gran medida duplicando el tamaño de
la palabra en la computadora, la cantidad de información que el
procesador puede manejar por ciclo. El aumento del tamaño de la palabra
reduce el número de instrucciones que el procesador debe ejecutar para
realizar una operación en variables cuyos tamaños son mayores que la
longitud de la palabra. Por ejemplo, cuando un procesador de 8 bits debe
7
sumar dos enteros de 16 bits, el procesador primero debe adicionar los 8
bits de orden inferior de cada número entero con la instrucción de
adición, a continuación, añadir los 8 bits de orden superior utilizando la
instrucción de adición con acarreo que tiene en cuenta el bit de
acarreo de la adición de orden inferior, en este caso un procesador de 8
bits requiere dos instrucciones para completar una sola operación, en
donde un procesador de 16 bits necesita una sola instrucción para poder
completarla.
PARALELISMO A NIVEL DE INSTRUCCIÓN
Un programa de ordenador es, en esencia, una secuencia de instrucciones
ejecutadas por un procesador. Estas instrucciones pueden reordenarse y
combinarse en grupos que luego son ejecutadas en paralelo sin cambiar el
resultado del programa. Esto se conoce como paralelismo a nivel de
instrucción. Los avances en el paralelismo a nivel de instrucción dominaron la
arquitectura de computadores desde mediados de 1980 hasta mediados de
la década de 1990.
Los procesadores modernos tienen”pipeline” de instrucciones de varias
etapas. Cada etapa en el pipeline corresponde a una acción diferente que el
procesador realiza en la instrucción correspondiente a la etapa; un
procesador con un pipeline de N etapas puede tener hasta n instrucciones
diferentes en diferentes etapas de finalización. El ejemplo canónico de un
procesador segmentado es un procesador RISC, con cinco etapas: pedir
instrucción, decodificar, ejecutar, acceso a la memoria y escritura. El
procesador Pentium 4tenía un pipeline de 35 etapas. Además del
paralelismo a nivel de instrucción del pipelining, algunos procesadores
pueden ejecutar más de una instrucción a la vez. Estos son conocidos como
procesadores superes calares. Las instrucciones pueden agruparse juntas sólo
si no hay dependencia de datos entre ellas. El scoreboarding y el algoritmo
de Tomasulo (que es similar a scoreboarding pero hace uso del ) son dos de
las técnicas más comunes para implementar la ejecución fuera de orden y la
paralelización a nivel de instrucción.
8
PARALELISMO DE DATOS
El paralelismo de datos es el paralelismo inherente en programas con ciclos,
que se centra en la distribución de los datos entre los diferentes nodos
computacionales que deben tratarse en paralelo. La paralelización de ciclos
conduce a menudo a secuencias similares de operaciones (no
necesariamente idénticas) o funciones que se realizan en los elementos de
una gran estructura de datos. Muchas de las aplicaciones científicas y de
ingeniería muestran paralelismo de datos. Una dependencia de terminación
de ciclo es la dependencia de una iteración de un ciclo en la salida de una o
más iteraciones anteriores. Las dependencias de terminación de ciclo evitan
la paralelización de ciclos. Este bucle no se puede paralelizar porque CUR
depende de sí mismo (PREV2) y de PREV1, que se calculan en cada iteración
del bucle. Dado que cada iteración depende del resultado de la anterior, no
se pueden realizar en paralelo. A medida que el tamaño de un problema se
hace más grande, la paralelización de datos disponible generalmente
también lo hace.
PARALELISMO DE TAREAS
El paralelismo de tareas es la característica de un programa paralelo en la
que cálculos completamente diferentes se pueden realizar en cualquier
conjunto igual o diferente de datos. Esto contrasta con el paralelismo de
datos, donde se realiza el mismo cálculo en distintos o mismos grupos de
datos. El paralelismo de tareas por lo general no escala con el tamaño de un
problema. Durante muchos años, la computación paralela se ha aplicado en
la computación de altas prestaciones, pero el interés en ella ha aumentado
en los últimos años debido a las restricciones físicas que impiden el escalado
en frecuencia. La computación paralela se ha convertido en el paradigma
dominante en la arquitectura de computadores, principalmente en los
procesadores multinúcleo. Sin embargo, recientemente, el consumo de
energía de los ordenadores paralelos se ha convertido en una preocupación.
Los ordenadores paralelos se pueden clasificar según el nivel de paralelismo
que admite su hardware: los ordenadores multinúcleo y multiproceso tienen
varios elementos de procesamiento en una sola máquina, mientras que los
clusters, los MPP y los grids emplean varios ordenadores para trabajar en la
misma tarea. Los programas de ordenador paralelos son más difíciles de
escribir que los secuenciales porque la concurrencia introduce nuevos tipos
9
de errores de software, siendo las condiciones de carrera los más comunes.
La comunicación y la sincronización entre las diferentes subtareas son
típicamente las grandes barreras para conseguir un buen rendimiento de los
programas paralelos. El incremento de velocidad que consigue un programa
como resultado de la paralelización viene dado por la ley de Amdahl.
Taxonomía de las arquitecturas
• Clasificación 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 primera vez 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. Un ejemplo de estos sistemas son las máquinas secuenciales
convencionales.
• 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. 1 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
10
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. Ejemplos de este tipo de sistemas los encontramos en
los computadores CRAY monoprocesador, CYBER 205, FUJITSU, HITACHE,
NEC SUPERCOMPUTERS, IBM 390 VF, IBM 9000 VF, ALLIANT FX/1 Y CONVEX
C−1.
• 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. Cada ALU opera
sobre un segmento diferente de datos del programa. Ejemplo de
funcionamiento del sistema con el siguiente bucle: DO 2000 I=1,N A(I) = B(I) +
C(I) 2000 CONTINUE El procesador asigna a cada ALU la operación de suma
de B(I) con C(I) y siendo el almacenamiento del resultado en A(I) pero
pasando a cada ALU un valor diferente de I. En el caso de que haya menos
ALUs que iteraciones del bucle, el procesador ordenará la ejecución hasta
que estén procesados todos los valores de I. En el caso de que haya más ALUs
que iteraciones, existirá un número de estas que no estén operativas durante
la ejecución de las instrucciones del bucle. Una ALU inactiva o en OFF
significa que: • La ALU recibe instrucciones pero las ignora • La ALU ejecuta
cálculos pero no almacena ningún resultado.
• MISD (Multiple Instruction stream, Single Data stream)
Sistemas con múltiples instrucciones que operan sobre un único flujo de
datos. Este tipo de sistemas no ha tenido implementación hasta hace poco
tiempo. Los sistemas MISD se contemplan de dos maneras distintas: • Varias
instrucciones operando simultáneamente sobre un único dato. Varias
instrucciones operando sobre un dato que se va convirtiendo en un resultado
que será la entrada para la siguiente etapa. Se trabaja de forma segmentada,
todas las unidades de proceso pueden trabajar de forma concurrente. •
11
Ejemplos de estos tipos de sistemas son los arrays sistólicos o arrays de
procesadores. También podemos encontrar aplicaciones de redes neuronales
en máquinas masivamente paralelas.
• 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
control que se encarga de controlar todas las unidades de control del
sistema. Ejemplo de estos sistemas son las máquinas paralelas actuales.
• Categorías de Ordenadores Paralelos
Clasificación moderna que hace alusión única y exclusivamente a los sistemas
que tienen más de un procesador (i.e máquinas paralelas). Existen dos tipos
de sistemas teniendo en cuenta su acoplamiento. Los sistemas fuertemente
acoplados son aquellos en los que los procesadores dependen unos de otros.
Los sistemas débilmente acoplados son aquellos en los que existe poca
interacción entre los diferentes procesadores que forman el sistema.
Atendiendo a esta y a otras características, la clasificación moderna divide a
los sistemas en dos tipos: Sistemas multiprocesador (fuertemente acoplados)
y sistemas multicomputador (débilmente acoplados).
• Multiprocesadores
Un multiprocesador puede verse como un computador paralelo compuesto
por varios procesadores interconectados que comparten un mismo sistema
de memoria. Los sistemas multiprocesadores son arquitecturas MIMD con
memoria compartida. Tienen un único espacio de direcciones para todos los
procesadores y los mecanismos de comunicación se basan en el paso de
mensajes desde el punto de vista del programador. 3 Dado que los
multiprocesadores comparten diferentes módulos de memoria, pudiendo
acceder a un mismo módulo varios procesadores, a los multiprocesadores
también se les llama sistemas de memoria compartida. Dependiendo de la
forma en que los procesadores comparten la memoria, se clasifican en
sistemas multiprocesador UMA, NUMA y COMA.
• UMA (Uniform Memory Access)
Sistema multiprocesador con acceso uniforme a memoria. La memoria física
es uniformemente compartida por todos los procesadores, esto quiere decir
12
que todos los procesadores tienen el mismo tiempo de acceso a todas las
palabras de la memoria. Cada procesador tiene su propia caché privada y
también se comparten los periféricos. Los multiprocesadores son sistemas
fuertemente acoplados (tightly−coupled), dado el alto grado de compartición
de los recursos (hardware o software) y el alto nivel de interacción entre
procesadores, lo que hace que un procesador dependa de lo que hace otro.
El sistema de interconexión debe ser rápido y puede ser de uno de los
siguientes tipos:
• Bus común
• Red crossbar
• Red multietapa
Este modelo es conveniente para aplicaciones de propósito general y de
tiempo compartido por varios usuarios. Existen varias categorías de sistemas
UMA.
• Sistema Simétrico
Cuando todos los procesadores tienen el mismo tiempo de acceso a todos los
componentes del sistema (incluidos los periféricos), reciben el nombre de
sistemas multiprocesador simétrico. Los procesadores tienen el mismo
dominio (prioridad) sobre los periféricos y cada procesador tiene la misma
capacidad para procesar.
• Sistema Asimétrico
Los sistemas multiprocesador asimétrico, son sistemas con procesadores
maestros y procesadores esclavos, en donde sólo los primeros pueden
ejecutar aplicaciones y dónde en tiempo de acceso para diferentes
procesadores no es el mismo. Los procesadores esclavos (attached) ejecutan
código usuario bajo la supervisión del maestro, por lo tanto cuando una
aplicación es ejecutada en un procesador maestro dispondrá de una cierta
prioridad.
• NUMA (Non Uniform Memory Access)
Un sistema multiprocesador NUMA es un sistema de memoria compartida
donde el tiempo de acceso varía según donde se encuentre localizado el
acceso. El acceso a memoria, por tanto, no es uniforme para diferentes
procesadores. Existen memorias locales asociadas a cada procesador y estos
pueden acceder a datos de su memoria local de una manera más rápida que
a las memorias de otros procesadores, debido a que primero debe aceptarse
dicho acceso por el 4 procesador del que depende el módulo de memoria
local. Todas las memorias locales conforman la memoria global compartida y
físicamente distribuida y accesible por todos los procesadores.
13
• Cluster Jerárquico
Otro modelo NUMA que nace como la mezcla del modelo UMA explicado
anteriormente y el modelo NUMA anterior, es el cluster jerárquico en el que
se combinan las memorias locales y las globales obteniendo una cierta
escalabilidad del sistema. Los procesadores aparecen distribuidos en clusters
(1 sistema UMA o un 1 sistema NUMA). Estos clusters están conectados a la
memoria global compartida. El sistema en su totalidad es un sistema NUMA,
ya que el acceso a memoria es no uniforme por parte de los clusters. La
ventaja de estos sistemas con respecto a los sistemas UMA, es que el acceso
a memoria local es mucho más rápido.
• COMA (Cache Only Memory Access)
Los sistemas COMA son un caso especial de los sistemas NUMA. Este tipo de
sistemas no ha tenido mucha transcendencia, al igual que los sistemas SIMD.
Las memorias distribuidas son memorias cachés, por este motivo es un
sistema muy restringido en cuanto a la capacidad de memoria global. No hay
jerarquía de memoria en cada módulo procesador. Todas las cachés forman
un mismo espacio global de direcciones. El acceso a las cachés remotas se
realiza a través de los directorios distribuidos de las cachés. Dependiendo de
la red de interconexión utilizada, se pueden utilizar jerarquías en los
directorios para ayudar a la localización de copias de bloques de caché.
• Multicomputadores
Los sistemas multicomputadores se pueden ver como un computador
paralelo en el cual cada procesador tiene su propia memoria local. En estos
sistemas la memoria se encuentra distribuida y no compartida como en los
sistemas multiprocesador. Los computadores se comunican a través de paso
de mensajes, ya que éstos sólo tienen acceso directo a su memoria local y no
a las memorias del resto de procesadores. El diagrama de bloques de un
sistema multicomputador coincide con el visto para los sistemas UMA, la
diferencia viene dada porque la red de interconexión no permite un acceso
directo entre memorias, sino que la comunicación se realiza por paso de
mensajes. La transferencia de los datos se realiza a través de la red de
interconexión que conecta un subconjunto de procesadores con otro
subconjunto. La transferencia de unos procesadores a otros se realiza por
tanto por múltiples transferencias entre procesadores conectados
dependiendo del establecimiento de dicha red. Dado que la memoria está
distribuida entre los diferentes elementos de proceso, estos sistemas reciben
el nombre de distribuidos. Por otra parte, estos sistemas son débilmente
14
acoplados, ya que los módulos funcionan de forma casi independiente unos
de otros.
Sistema secuencial
A diferencia de los sistemas combinacionales, en los sistemas secuenciales,
los valores de las salidas, en un momento dado, no dependen exclusivamente
de los valores de las entradas en dicho momento, sino también de los valores
anteriores. El sistema secuencial más simple es el biestable.
La mayoría de los sistemas secuenciales están gobernados por señales de
reloj. A éstos se los denomina "síncronos" o "sincrónicos", a diferencia de los
"asíncronos" o "asincrónicos" que son aquellos que no son controlados por
señales de reloj.
A continuación se indican los principales sistemas secuenciales que pueden
encontrarse en forma de circuito integrado o como estructuras en sistemas
programados:
* Contador
* Registros
En todo sistema secuencial nos encontraremos con:
a) Un conjunto finito, n, de variables de entrada (X1, X2,..., Xn).
b) Un conjunto finito, m, de estados internos, de aquí que los estados
secuenciales también sean denominados autómatas finitos. Estos estados
proporcionarán m variables internas (Y1,Y2,..., Ym).
c) Un conjunto finito, p, de funciones de salida (Z1, Z2,..., Zp).
Dependiendo de como se obtengan las funciones de salida, Z, los sistemas
secuenciales pueden tener dos estructuras como las que se observan el la
siguiente figura, denominadas autómata de Moore, a), y autómata de Mealy,
b).
15
4.2.2.1 Taxonomía de Flynn
Cuando se analizan las características de las arquitecturas típicas de
computadores y se estudia el grado de paralelismo, es conveniente conocer
la clasificación debida a Flynn (1966), basada en la forma de procesar los
flujos de instrucciones y de datos. Dicha clasificación divide a los
computadores atendiendo a su paralelismo explícito en 4 grupos:
 SISD: Flujo único de instrucciones-flujo único de datos.
 SIMD: Flujo único de instrucciones-flujo múltiple de datos.
 MISD: Flujo múltiple de instrucciones-flujo único de datos.
 MIMD: Flujo múltiple de instrucciones-flujo múltiple de datos.
La arquitectura SISD, que esquemáticamente se representa en la siguiente
figura corresponde a la mayoría de los sistemas uniprocesadores actuales.
Esquema simplificado de la arquitectura SISD.
16
La memoria principal genera el flujo de instrucciones a la Unidad de Control,
que, tras decodificarlas e interpretarlas, ordena su ejecución en la Unidad
Operativa, compuesta por la ALU y los registros internos de trabajo. El flujo
de datos bidireccional comunica la memoria principal y la Unidad Operativa.
En el Funcionamiento de los computadores SISD sólo hay una corriente de
instrucciones unidireccional y otra de datos bidireccional.
Arquitectura SIMD, de flujo único de instrucciones y flujos múltiples de
datos.
En los computadores con arquitectura SIMD, la única Unidad de Control
existente supervisa el funcionamiento del conjunto de Unidades Operativas
disponible. La estructura corresponde a los llamados procesadores
matriciales. Como se muestra en la figura, la Unidad de Control extrae e
interpreta las instrucciones y envía las correspondientes señales de control a
las Unidades Operativas encargadas de su ejecución. La Unidad de Control
comienza la búsqueda de una nueva instrucción, nada más comenzada la
ejecución de la anterior, siendo posible de esta forma, realizar varias
instrucciones simultáneamente. Cada Unidad Operativa de la figura trabaja
con un flujo de datos concreto, que se obtiene de una memoria compartida
compuesta por varios módulos.
17
Arquitectura MISD de múltiple flujo de instrucciones y flujo único de datos.
La estructura MISD consta de varias unidades de Control que reciben
diferentes flujos de instrucciones que son ejecutadas en las correspondientes
Unidades Operativas, las cuales se alimentan de un único flujo de datos. Un
computador MISD se asemeja a una superestructura segmentada en la que
cada procesador realiza una parte del procedimiento sobre el flujo de datos.
Arquitectura MIMD de flujo múltiple de instrucciones y flujo múltiple de
datos.
Finalmente, se muestra un esquema general de la arquitectura MIMD con
flujo múltiple de instrucciones y flujo múltiple de datos. Se trata de la
estructura típica de un sistema multiprocesador, que puede definirse como
18
un conjunto de procesadores serie, cuyas unidades operativas soportan un
flujo de datos y las unidades de control, un flujo de instrucciones. Varios
procesadores autónomos que ejecutan simultáneamente instrucciones
diferentes sobre datos diferentes. Los sistemas distribuidos suelen
clasificarse como arquitecturas MIMD; bien sea explotando un único espacio
compartido de memoria, o uno distribuido. Es una técnica empleada para
lograr paralelismo. Las máquinas que usan MIMD tienen un número de
procesadores que funcionan de manera asíncrona e independiente. En
cualquier momento, cualquier procesador puede ejecutar diferentes
instrucciones sobre distintos datos.
4.2.2.2 Organización del espacio de direcciones de memoria
Las memorias consisten en varias celdas (o localidades) , cada una de las
cuales pueden almacenar un elemento de información. Cada celda viene un
número, su dirección, con el cual los programas pueden referirse a ella.
Si una memoria tiene n celdas, tendrán las direcciones 0 a n-1. Todas las
celdas de una memoria contienen el mismo número de bits. Si una celda
consta de k bits, podrá obtener cualquiera de 2ᵏ combinaciones de bits
distintas.
19
En la figura 2-9 se muestran 3 diferentes organizaciones para una memoria
de 96 bits. Observe que celdas adyacentes tienen direcciones consecutivas
(por definición).
Las computadoras que emplean el sistema de numeración binario (incluidas
las notaciones octal y hexadecimal para números binarios) expresan las
direcciones de memoria como números binarios. Si una dirección tienen m
bits, el número máximo de celdas direccionables es 2ᵐ.
Por ejemplo, una dirección empleada para referirse a la memoria de la figura
2-9(a) necesita al menos 4 bits para expresar todos los números del 0 al 11.
En cambio, basta una dirección de 3 bits para las figuras 2-9(b) y (c). El
número de bits de la dirección determina el número máximo de celdas
direccionables directamente en la memoria y es independiente del número
de bits por celda. Una memoria que tienen 12¹² celdas de 8 bits cada una, y
una que tiene 2¹² celdas de 64 bits cada una, necesitan ambas direcciones de
12 bits.
20
En la figura 2-10 se da el número de bits por celda de algunas computadoras
que se han vendido comercialmente. La importancia de la celda es que es la
unidad direccionable más pequeña. En años recientes casi todos los
fabricantes de computadoras han adoptado como estándar una celda de 8
bits, que recibe el nombre de byte. Los bytes se agrupan en palabras. Una
computadora con palabras de 32 bits tiene 4 bytes/palabra, mientras que
una con palabras de 64 bits tiene 8 bytes/palabra. La importancia de las
palabras es que casi todas las instrucciones operan con palabras enteras; por
ejemplo, suman dos palabras. Así, una máquina de 32 bits tiene registros de
32 bits e instrucciones para manipular palabras de 32 bits, mientras que una
máquina de 64 bits tiene registros de 64 bits e instrucciones para transferir,
sumar, restar, y manipular de otras maneras palabras de 64 bits.
21
22
Memoria de 8 Bits
Una organización de memoria muy utilizada para construir memorias grandes
en la cual sea posible direccionar palabras individuales se muestra en la
figura 3-29.
23
24
Este ejemplo ilustra una memoria con cuatro palabras de 3 bits. Cada
operación lee o escribe una palabra de 3 bits completa. Si bien la capacidad
total de memoria de 12 bits apenas rebasa la de nuestro flip-flop octal, este
diseño requiere menos terminales y, lo que es más importante, es fácil
extenderla a memorias grandes. Aunque la memoria de la figura 3-29 podría
parecer complicada a primera vista, en realidad es muy sencilla gracias a su
estructura regular. Este circuito tiene ocho líneas de entrada y tres líneas de
salida. Tres de las entradas son datos: I0, I e I2; dos son para la dirección: A0
y A1; y tres son de control: CS para seleccionar el chip (Chip Select), RD para
distinguir entre lectura (ReaD) y escritura, y OE para habilitar la salida
(Output Enable). Las tres salidas son de datos: D0, D1 y D2. En principio, esta
memoria podría colocarse en un paquete de 14 terminales, incluida la de
potencia y la de tierra, en comparación con 20 terminales para el flip-flop
octal. Para seleccionar este chip de memoria, la lógica externa debe poner CS
en 1 y también poner RD en 1 si se desea leer o en 0 si se desea escribir. Las
dos líneas de dirección deben ajustarse en modo que indique cuál de las
cuatro palabras de 3 bits se desea leer o escribir. En el caso de una operación
de lectura, las líneas de entrada de datos no se usan, pero la palabra
seleccionada se coloca en las líneas de salida de datos. Para una operación de
escritura, los bits presentes en las líneas de entrada de datos se cargan en la
palabra de memoria seleccionada; las líneas de salida de datos no se usan.
4.3 Sistemas de memoria distribuida. Multicomputadoras Clusters.
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.
25
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 la red.
 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.
Redes De Interconexión Estática
Las 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
26
utilizarse con eficiencia en los sistemas en que pueden predecirse el tipo de
tráfico de comunicaciones entre sus procesadores.
Clases 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.
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.
27
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énticos conectados
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:
 Alto rendimiento
 Alta disponibilidad
 Balance de carga
 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, sino
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.
28
Programación De Clúster
Estos clúster están diseñados y optimizados para correr programas 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
Consideraciones Sobre Rendimiento De Los Clúster
Para diseñar, implementar, probar y mantener un clúster se requiere un
entendimiento básico pero claro de 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 de Alta 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.
4.3.2 Coherencia de cache
La coherencia de cache 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.
29
Haciendo referencia al dibujo, si el cliente de arriba tiene una copia de un
bloque de memoria de una lectura previa y el cliente de abajo cambia ese
bloque, el cliente de arriba podría estar trabajando con datos erróneos, sin
tener conocimiento de ello. La coherencia de la cache intenta administrar
estos conflictos y mantener consistencia entre las caches y la memoria.
En un sistema multiprocesador de memoria compartida con una memoria
caché separada para cada procesador, es posible tener muchas copias de
cualquier un operando de instrucción: una copia en la memoria principal y
uno en cada memoria caché. Cuando se modifica una copia de un operando,
las otras copias del operando se debe cambiar también. Coherencia de caché
es la disciplina que asegura que los cambios en los valores de los operandos
compartidos se propagan por todo el sistema en el momento oportuno.
Hay tres niveles diferentes de coherencia de caché:
1. Cada operación de escritura parece ocurrir instantáneamente.
2. Todos los procesadores ver exactamente la misma secuencia de los
cambios de los valores para cada operando separada.
3. Diferentes procesadores pueden ver una operación y asumir diferentes
secuencias de valores.
Tanto en el nivel 2 el comportamiento y el nivel de comportamiento 3, un
programa puede observar datos obsoletos. Recientemente, los diseñadores
de computadoras han llegado a darse cuenta de que la disciplina de
programación requerida para hacer frente a la conducta de nivel 2 es
30
suficiente para lidiar también con el comportamiento de nivel 3. Por lo tanto,
en algún momento sólo el nivel 1 y el comportamiento del nivel 3 se verán en
máquinas.
Mecanismos para la coherencia de la cache
Los protocolos basados en directorio mantienen un directorio centralizado de
los bloques que hay en las caches. Se utilizan tanto en multiprocesadores con
memoria físicamente distribuida, como en sistemas con memoria
centralizada con red escalable. Estos protocolos de mantenimiento de
coherencia reducen el tráfico en la red enviando selectivamente órdenes sólo
a aquellas caches que disponen de una copia válida del bloque implicado en
la operación de memoria.
El protocolo Snoopy hace que las caches individualmente monitoreen las
líneas (buses) de direcciones de accesos a memoria con respecto a los
bloques que han copiado. Cuando una operación de escritura es observada
sobre una dirección de un bloque del cual tiene un bloque, el controlador de
cache invalida su copia. También es posible que el controlador de cache
observe la dirección y el dato correspondiente a esa dirección, intentando así
actualizar su copia cuando alguien modifica dicho bloque en la memoria
principal.
El protocolo de memoria distribuida imita a los anteriores en un intento de
mantener la consistencia entre bloques de memoria en sistemas con débil
acoplamiento.
 Coherencia basada Directory:
En un sistema basado en directorios, que los datos sean compartidos se
coloca en un directorio común que mantiene la coherencia entre los cachés.
El directorio actúa como un filtro a través del cual el procesador debe pedir
permiso para cargar una entrada de la memoria principal a la memoria caché.
Cuando se modifica una entrada del directorio ni actualizaciones o inválida
las otras cachés con esa entrada.
31
 IGMP
Es el proceso en el que los cachés individuales monitorear las líneas de
dirección para los accesos a los lugares de memoria que tienen en caché. Se
llama un protocolo de invalidación de escritura cuando se observa una
operación de escritura en un lugar que una caché tiene una copia y el
controlador de memoria caché invalida su propia copia de la posición de
memoria snooped.
Un filtro snoop reduce el tráfico IGMP mediante el mantenimiento de una
pluralidad de entradas, cada uno representando una línea de caché que
puede ser adquirido por uno o más nodos. Cuando sea necesario reemplazar
una de las entradas, el filtro snoop selecciona para el reemplazo de la
entrada representa la línea o líneas de propiedad de los nodos de menor
cantidad, determinada a partir de un vector de presencia en cada una de las
entradas de caché. Un tipo temporal o de otro tipo de algoritmo se utiliza
para refinar la selección si más de una línea de caché es poseído por el menor
número de nodos.
 Snarfing
Es donde un controlador de memoria caché observa tanto la dirección y los
datos en un intento de actualizar su propia copia de una ubicación de
memoria cuando un segundo maestro modifica una ubicación en la memoria
principal. Cuando se observa una operación de escritura en un lugar que una
caché tiene una copia, el controlador de memoria caché actualiza su propia
copia de la posición de memoria snarfed con los nuevos datos. Sistemas de
memoria compartida distribuida imitan estos mecanismos en un intento de
mantener la coherencia entre los bloques de memoria en los sistemas
débilmente acoplados.
Los dos tipos más comunes de la coherencia que se estudian normalmente
son IGMP y el Directorio de base, cada uno con sus propias ventajas y
desventajas. Protocolos Snooping tienden a ser más rápido, si hay suficiente
32
ancho de banda disponible, ya que todas las transacciones son una respuesta
de solicitud/visto por todos los procesadores.
El inconveniente es que snooping no es escalable. Cada solicitud debe ser
transmitida a todos los nodos en un sistema, lo que significa que a medida
que el sistema se hace más grande, el tamaño del bus y el ancho de banda
que proporciona deben crecer. Directorios, por otra parte, tienden a tener
latencias más largas pero el uso de mucho menos ancho de banda ya que los
mensajes son punto a punto y no transmiten. Por esta razón, muchos de los
sistemas más grandes utilizan este tipo de coherencia de caché.
Modelos de Coherencia
Varios modelos y protocolos han sido desarrollados para mantener la
coherencia de la cache, tales como protocolo MSI, protocolo MESI, protocolo
MOSI y el protocolo MOESI. La elección de un modelo de consistencia es
crucial a la hora de diseñar un sistema de cache coherente. Los modelos de
coherencia difieren en rendimiento y escalabilidad, por lo que deben ser
evaluados para cada sistema diseñado.
Además, las transiciones entre estados en una implementación en concreto
de estos protocolos pueden variar. Por ejemplo una implementación puede
elegir diferentes transiciones para actualizar y actualiza tales como
actualización-en-lectura, actualización-en-escritura, invalidación-en-lectura, o
invalidación-en-escritura.
La elección de una transición puede afectar a la cantidad de tráfico entre
caches, lo que a su vez podría afectar al ancho de banda disponible por las
caches para la operación actual. Esto debe ser tenido en consideración en el
diseño de software distribuido que podría causar problemas de contención
entre caches de múltiples procesadores.
4.4.4 Consideraciones sobre el rendimiento de los clusters
El término clúster (del inglés clúster, "grupo" o "raíz") se aplica a los
conjuntos o conglomerados de computadoras construidos mediante la
33
utilización de componentes de hardware comunes y que se comportan como
si fuesen una única computadora.
Hoy en día desempeñan un papel importante en la solución de problemas de
las ciencias, las ingenierías y del comercio moderno. La tecnología de clúster
ha evolucionado en apoyo de actividades que van desde aplicaciones de
súper-cómputo y software de misiones críticas, servidores web y comercio
electrónico, hasta bases de datos de alto rendimiento, entre otros usos.
El cómputo con clúster surge como resultado de la convergencia de varias
tendencias actuales que incluyen la disponibilidad de microprocesadores
económicos de alto rendimiento y redes de alta velocidad, el desarrollo de
herramientas de software para cómputo distribuido de alto rendimiento, así
como la creciente necesidad de potencia computacional para aplicaciones
que la requieran.
Simplemente, un clúster es un grupo de múltiples ordenadores unidos
mediante una red de alta velocidad, de tal forma que el conjunto es visto
como un único ordenador, más potente que los comunes de escritorio.
Los clúster son usualmente empleados para mejorar el rendimiento y/o 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:
 Alto rendimiento
 Alta disponibilidad
 Balanceo de carga
 Escalabilidad
La construcción de los ordenadores del clúster es más fácil y económica
debido a su flexibilidad: pueden tener todos la misma configuración de
hardware y sistema operativo (clúster homogéneo), diferente rendimiento
34
pero con arquitecturas y sistemas operativos similares (clúster
semihomogéneo), o tener diferente hardware y sistema operativo (clúster
heterogéneo), 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 sí los
ordenadores, sino que es necesario proveer un sistema de manejo del
clúster, el cual se encargue de interactuar con el usuario y los procesos que
corren en él para optimizar el funcionamiento.
Los tipos de clústeres, establecidos de acuerdo con el uso que se dé y los
servicios que ofrecen, determinan el significado del término para el grupo
que lo utiliza.
Los clústeres pueden clasificarse según sus características:
 HPCC (High Performance Computing Clusters: clústeres de alto
rendimiento).
 HA o HACC (High Availability Computing Clusters: clústeres de alta
disponibilidad).
 HT o HTCC (High Throughput Computing Clusters: clústeres de alta
eficiencia).
Alto rendimiento: Son clústeres 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 clúster por largos periodos de tiempo.
Alta disponibilidad: Son clústeres cuyo objetivo de diseño es el de proveer
disponibilidad y confiabilidad. Estos clústeres tratan de brindar la máxima
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 clústeres cuyo objetivo de diseño 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 clúster no
es considerado un gran problema.
35
Los clústeres pueden también clasificar en:
 clústeres de IT comerciales (de alta disponibilidad y alta eficiencia)
 clústeres científicos (de alto rendimiento).
A pesar de las discrepancias a nivel de requisitos de las aplicaciones, muchas
de las características de las arquitecturas de hardware y software, que están
por debajo de las aplicaciones en todos estos clústeres, son las mismas. Más
aún, un clúster de determinado tipo, puede también presentar características
de los otros.
En general, un clúster necesita de varios componentes de software y
hardware para poder funcionar:
 Nodos
 Almacenamiento
 Sistemas operativos
 Conexiones de red
 Middleware
 Protocolos de comunicación y servicios
 Aplicaciones
 Ambientes de programación paralela
4.5 casos de estudio
La programación paralela involucra muchos aspectos que no se presenta en
la programación convencional (secuencial). El diseño de un programa
paralelo tiene que considerar entre otras cosas, el tipo de arquitectura sobre
la cual se va a ejecutar el programa, las necesidades de tiempo y espacio que
requiere la aplicación, el modelo de programación paralelo adecuado para
implantar la aplicación y la forma de coordinar y comunicar a diferentes
procesadores para que resuelvan un problema común. Existen varias
herramientas disponibles para programación paralela. En el curso
utilizaremos PVM y MPI, dado su alta disponibilidad para computadoras
diferentes y su aceptación en la comunidad académica.
36
1. NVIDIA
PYSICS LAYER:
GPU PhysX
CPU PhysX
Graphics Layer:
GPU –Direct X
Windows
2. INTEL
PYSICS LAYER:
No GPU PhysX
CPU Havok
Graphics Layer:
GPU –Direct X
Windows
3. AMD
PYSICS LAYER:
No GPU PhysX
CPU Havok
Graphics Layer:
GPU –Direct X
Windows
37
BIBLIOGRAFÍA
https://conceptosarquitecturadecomputadoras.wordpress.com/computacion
-paralela/
http://procesamientoparalelo.blogspot.mx/2013/11/41-aspectos-basicos-de-
la-computacion.html?m=1
https://conceptosarquitecturadecomputadoras.wordpress.com/computacion
-paralela/
http://www.mundodescargas.com/apuntes-
trabajos/informatica/decargar_arquitecturas-avanzadas.pdf
http://arquicomberna.blogspot.mx/2008/12/sistema-secuencial.html
José Ma. Angulo Usategui; Pedro de Miguel Anasagasti. Arquitectura de
Computadoras Fundamentos e Introducción al Paralelismo. 4ª ed. España:
Paraninfo sa, 1995.
Andrew S. Tanenbaum. Organización de Computadoras Un Enfoque
Estructurado. 4ª ed. México: PRENTICE HALL, 2000.
http://es.wikipedia.org/

Más contenido relacionado

La actualidad más candente

Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
eveTalavera
 
100 ejercicios-resueltos-de-sistemas-operativos
100 ejercicios-resueltos-de-sistemas-operativos100 ejercicios-resueltos-de-sistemas-operativos
100 ejercicios-resueltos-de-sistemas-operativos
PatriciaDavila16
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
jimmy Apanu Inoach
 
Gestion de memoria
Gestion de memoriaGestion de memoria
Gestion de memoriaALASBLANKS
 
Gestión de procesos en sistemas operativos
Gestión de procesos en sistemas operativosGestión de procesos en sistemas operativos
Gestión de procesos en sistemas operativoschikscorpion_23
 
Diagrama de-estado-de-procesos
Diagrama de-estado-de-procesosDiagrama de-estado-de-procesos
Diagrama de-estado-de-procesos
Giant_serch
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
YESENIA CETINA
 
Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadoras
camiche97
 
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
José Antonio Sandoval Acosta
 
Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosnenyta08
 
Unidad 1 arquitectura de computadoras
Unidad 1 arquitectura de computadorasUnidad 1 arquitectura de computadoras
Unidad 1 arquitectura de computadoras
Ashley Stronghold Witwicky
 
Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.
Manuel Fernandez Barcell
 
Gestión de entrada salida
Gestión de entrada salida Gestión de entrada salida
Gestión de entrada salida
eduardoed5
 
Organización y estructura interna del cpu
Organización y estructura interna del cpuOrganización y estructura interna del cpu
Organización y estructura interna del cpuIsaí Beto Matz Mijes
 
Planificacion del procesador
Planificacion del procesadorPlanificacion del procesador
Planificacion del procesadorManuel Ceron
 
LLAMADA A UN PROCEDIMIENTO REMOTO
LLAMADA A UN PROCEDIMIENTO REMOTOLLAMADA A UN PROCEDIMIENTO REMOTO
LLAMADA A UN PROCEDIMIENTO REMOTOjotica86
 
Planificacion de CPU FCFS (First Come, First Served)
Planificacion de CPU FCFS (First Come, First Served)Planificacion de CPU FCFS (First Come, First Served)
Planificacion de CPU FCFS (First Come, First Served)
Rodrigo Saraguro
 
Funciones de administracion de memoria
Funciones de administracion de memoriaFunciones de administracion de memoria
Funciones de administracion de memoriaMiguel Magaña
 

La actualidad más candente (20)

Unidad 2 ensamblador
Unidad 2   ensambladorUnidad 2   ensamblador
Unidad 2 ensamblador
 
100 ejercicios-resueltos-de-sistemas-operativos
100 ejercicios-resueltos-de-sistemas-operativos100 ejercicios-resueltos-de-sistemas-operativos
100 ejercicios-resueltos-de-sistemas-operativos
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Gestion de memoria
Gestion de memoriaGestion de memoria
Gestion de memoria
 
Gestión de procesos en sistemas operativos
Gestión de procesos en sistemas operativosGestión de procesos en sistemas operativos
Gestión de procesos en sistemas operativos
 
Diagrama de-estado-de-procesos
Diagrama de-estado-de-procesosDiagrama de-estado-de-procesos
Diagrama de-estado-de-procesos
 
Modelos de arquitecturas de computadoras
Modelos de arquitecturas de computadorasModelos de arquitecturas de computadoras
Modelos de arquitecturas de computadoras
 
Control de Flujo [Telecomunicaciones]
Control de Flujo [Telecomunicaciones]Control de Flujo [Telecomunicaciones]
Control de Flujo [Telecomunicaciones]
 
Arquitectura de computadoras
Arquitectura de computadorasArquitectura de computadoras
Arquitectura de computadoras
 
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
Bases de Datos para Dispositivos Móviles - Unidad II: Arquitectura de Base de...
 
Tareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientosTareas de ingenieria de requerimientos
Tareas de ingenieria de requerimientos
 
Unidad 1 arquitectura de computadoras
Unidad 1 arquitectura de computadorasUnidad 1 arquitectura de computadoras
Unidad 1 arquitectura de computadoras
 
Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.Tema 4: Procesamiento paralelo.
Tema 4: Procesamiento paralelo.
 
Gestión de entrada salida
Gestión de entrada salida Gestión de entrada salida
Gestión de entrada salida
 
Unidad de Control
Unidad de ControlUnidad de Control
Unidad de Control
 
Organización y estructura interna del cpu
Organización y estructura interna del cpuOrganización y estructura interna del cpu
Organización y estructura interna del cpu
 
Planificacion del procesador
Planificacion del procesadorPlanificacion del procesador
Planificacion del procesador
 
LLAMADA A UN PROCEDIMIENTO REMOTO
LLAMADA A UN PROCEDIMIENTO REMOTOLLAMADA A UN PROCEDIMIENTO REMOTO
LLAMADA A UN PROCEDIMIENTO REMOTO
 
Planificacion de CPU FCFS (First Come, First Served)
Planificacion de CPU FCFS (First Come, First Served)Planificacion de CPU FCFS (First Come, First Served)
Planificacion de CPU FCFS (First Come, First Served)
 
Funciones de administracion de memoria
Funciones de administracion de memoriaFunciones de administracion de memoria
Funciones de administracion de memoria
 

Similar a computación paralela

Algoritmos Paralelos
Algoritmos ParalelosAlgoritmos Paralelos
Algoritmos Paralelos
RayNunezEspino
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador
baryruiz
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador
baryruiz
 
arquitectura del computador 1
arquitectura del computador 1arquitectura del computador 1
arquitectura del computador 1
baryruiz
 
Investigacion 1 modelos_de_arquitectura
Investigacion 1 modelos_de_arquitecturaInvestigacion 1 modelos_de_arquitectura
Investigacion 1 modelos_de_arquitectura
luis chacon
 
Arqui hardware
Arqui hardwareArqui hardware
Informe de Rendimiento de Computadoras
Informe  de Rendimiento  de Computadoras Informe  de Rendimiento  de Computadoras
Informe de Rendimiento de Computadoras
erik sandro ramos jauregui
 
Diseño de Algoritmos Paralelos con la maestra Rina
Diseño de Algoritmos Paralelos con la maestra RinaDiseño de Algoritmos Paralelos con la maestra Rina
Diseño de Algoritmos Paralelos con la maestra Rina
LuisAlfredoPascualPo
 
ARQUITECTURA_DE_COMPUTADORAS.pdf
ARQUITECTURA_DE_COMPUTADORAS.pdfARQUITECTURA_DE_COMPUTADORAS.pdf
ARQUITECTURA_DE_COMPUTADORAS.pdf
MariuxiBayas3
 
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdfAlgoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
darosario3d
 
Actividad#13_Diseño de Algoritmos Paralelos.pptx
Actividad#13_Diseño de Algoritmos Paralelos.pptxActividad#13_Diseño de Algoritmos Paralelos.pptx
Actividad#13_Diseño de Algoritmos Paralelos.pptx
IsaaK10
 
Protocolo colaborativo unidad lll (ureche )
Protocolo colaborativo unidad lll (ureche )Protocolo colaborativo unidad lll (ureche )
Protocolo colaborativo unidad lll (ureche )
Nati Cabraless
 
Segundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSegundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corte
Sebastian Gonzalez
 
Arquitectura del computador trabajo finalizado
Arquitectura del computador trabajo finalizadoArquitectura del computador trabajo finalizado
Arquitectura del computador trabajo finalizado
jose264806
 
Computacion paralela
Computacion paralelaComputacion paralela
Computacion paralela
paolaanchicobenabides
 
Análisis y Diseño de Algoritmos - Presentacion Algoritmos Paralelos.
Análisis y Diseño de Algoritmos - Presentacion Algoritmos Paralelos.Análisis y Diseño de Algoritmos - Presentacion Algoritmos Paralelos.
Análisis y Diseño de Algoritmos - Presentacion Algoritmos Paralelos.
LaurialicValerio
 

Similar a computación paralela (20)

Algoritmos Paralelos
Algoritmos ParalelosAlgoritmos Paralelos
Algoritmos Paralelos
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador
 
Arquitectura tipos lupe
Arquitectura tipos lupeArquitectura tipos lupe
Arquitectura tipos lupe
 
Segmentación
SegmentaciónSegmentación
Segmentación
 
arquitectura del computador
arquitectura del computador arquitectura del computador
arquitectura del computador
 
arquitectura del computador 1
arquitectura del computador 1arquitectura del computador 1
arquitectura del computador 1
 
Investigacion 1 modelos_de_arquitectura
Investigacion 1 modelos_de_arquitecturaInvestigacion 1 modelos_de_arquitectura
Investigacion 1 modelos_de_arquitectura
 
Arqui hardware
Arqui hardwareArqui hardware
Arqui hardware
 
Informe de Rendimiento de Computadoras
Informe  de Rendimiento  de Computadoras Informe  de Rendimiento  de Computadoras
Informe de Rendimiento de Computadoras
 
Diseño de Algoritmos Paralelos con la maestra Rina
Diseño de Algoritmos Paralelos con la maestra RinaDiseño de Algoritmos Paralelos con la maestra Rina
Diseño de Algoritmos Paralelos con la maestra Rina
 
Procesamiento segmentado - INFORME
Procesamiento segmentado - INFORMEProcesamiento segmentado - INFORME
Procesamiento segmentado - INFORME
 
ARQUITECTURA_DE_COMPUTADORAS.pdf
ARQUITECTURA_DE_COMPUTADORAS.pdfARQUITECTURA_DE_COMPUTADORAS.pdf
ARQUITECTURA_DE_COMPUTADORAS.pdf
 
Tarea 1.1
Tarea 1.1Tarea 1.1
Tarea 1.1
 
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdfAlgoritmos Paralelos - Actividad 14 - UNIBE.pdf
Algoritmos Paralelos - Actividad 14 - UNIBE.pdf
 
Actividad#13_Diseño de Algoritmos Paralelos.pptx
Actividad#13_Diseño de Algoritmos Paralelos.pptxActividad#13_Diseño de Algoritmos Paralelos.pptx
Actividad#13_Diseño de Algoritmos Paralelos.pptx
 
Protocolo colaborativo unidad lll (ureche )
Protocolo colaborativo unidad lll (ureche )Protocolo colaborativo unidad lll (ureche )
Protocolo colaborativo unidad lll (ureche )
 
Segundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corteSegundo blog arquitectura de hardware tercer corte
Segundo blog arquitectura de hardware tercer corte
 
Arquitectura del computador trabajo finalizado
Arquitectura del computador trabajo finalizadoArquitectura del computador trabajo finalizado
Arquitectura del computador trabajo finalizado
 
Computacion paralela
Computacion paralelaComputacion paralela
Computacion paralela
 
Análisis y Diseño de Algoritmos - Presentacion Algoritmos Paralelos.
Análisis y Diseño de Algoritmos - Presentacion Algoritmos Paralelos.Análisis y Diseño de Algoritmos - Presentacion Algoritmos Paralelos.
Análisis y Diseño de Algoritmos - Presentacion Algoritmos Paralelos.
 

Más de Yazmin Polanco

Bluetooth e infrarrojo
Bluetooth e infrarrojoBluetooth e infrarrojo
Bluetooth e infrarrojo
Yazmin Polanco
 
Diseño de objetos y diseño de sistemas
Diseño de objetos y diseño de sistemasDiseño de objetos y diseño de sistemas
Diseño de objetos y diseño de sistemas
Yazmin Polanco
 
Historia de la graficación por computadora
Historia de la graficación por computadoraHistoria de la graficación por computadora
Historia de la graficación por computadora
Yazmin Polanco
 
Arquitectura de procesador corei7
Arquitectura de procesador corei7Arquitectura de procesador corei7
Arquitectura de procesador corei7
Yazmin Polanco
 
Formatos gráficos de almacenamiento - JPEG GIF PNG
Formatos gráficos de almacenamiento - JPEG GIF PNGFormatos gráficos de almacenamiento - JPEG GIF PNG
Formatos gráficos de almacenamiento - JPEG GIF PNG
Yazmin Polanco
 
Proceso de descontaminacion ambiental
Proceso de descontaminacion ambientalProceso de descontaminacion ambiental
Proceso de descontaminacion ambiental
Yazmin Polanco
 

Más de Yazmin Polanco (7)

Bluetooth e infrarrojo
Bluetooth e infrarrojoBluetooth e infrarrojo
Bluetooth e infrarrojo
 
Diseño de objetos y diseño de sistemas
Diseño de objetos y diseño de sistemasDiseño de objetos y diseño de sistemas
Diseño de objetos y diseño de sistemas
 
Historia de la graficación por computadora
Historia de la graficación por computadoraHistoria de la graficación por computadora
Historia de la graficación por computadora
 
Arquitectura de procesador corei7
Arquitectura de procesador corei7Arquitectura de procesador corei7
Arquitectura de procesador corei7
 
Formatos gráficos de almacenamiento - JPEG GIF PNG
Formatos gráficos de almacenamiento - JPEG GIF PNGFormatos gráficos de almacenamiento - JPEG GIF PNG
Formatos gráficos de almacenamiento - JPEG GIF PNG
 
Proceso de descontaminacion ambiental
Proceso de descontaminacion ambientalProceso de descontaminacion ambiental
Proceso de descontaminacion ambiental
 
4
44
4
 

Último

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
Emilio Casbas
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
coloradxmaria
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
ValeriaAyala48
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
sarasofiamontezuma
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
vazquezgarciajesusma
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
espinozaernesto427
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
Luis Enrique Zafra Haro
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
durangense277
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
cj3806354
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
Ing. Julio Iván Mera Casas
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
samuelvideos
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
JulyMuoz18
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
raquelariza02
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
cdraco
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
Fernando Villares
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
CrystalRomero18
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Telefónica
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
PABLOCESARGARZONBENI
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
Leidyfuentes19
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
IsabellaRubio6
 

Último (20)

Inteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdfInteligencia Artificial y Ciberseguridad.pdf
Inteligencia Artificial y Ciberseguridad.pdf
 
Conceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. TecnologíaConceptos Básicos de Programación. Tecnología
Conceptos Básicos de Programación. Tecnología
 
Conceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdfConceptos básicos de programación 10-5.pdf
Conceptos básicos de programación 10-5.pdf
 
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdfDESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
DESARROLLO DE HABILIDADES DE PENSAMIENTO.pdf
 
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informática
 
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
Las lámparas de alta intensidad de descarga o lámparas de descarga de alta in...
 
biogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectosbiogas industrial para guiarse en proyectos
biogas industrial para guiarse en proyectos
 
Ventajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloroVentajas y desventajas de la desinfección con cloro
Ventajas y desventajas de la desinfección con cloro
 
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdfTrabajo Coding For kids 1 y 2 grado 9-4.pdf
Trabajo Coding For kids 1 y 2 grado 9-4.pdf
 
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB  S2. PARA VSATMANUAL DEL DECODIFICADOR DVB  S2. PARA VSAT
MANUAL DEL DECODIFICADOR DVB S2. PARA VSAT
 
Desarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdfDesarrollo de habilidades de pensamiento (2).pdf
Desarrollo de habilidades de pensamiento (2).pdf
 
Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5Conceptos Básicos de Programación L.D 10-5
Conceptos Básicos de Programación L.D 10-5
 
proyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmusproyecto invernadero desde el departamento de tecnología para Erasmus
proyecto invernadero desde el departamento de tecnología para Erasmus
 
3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto3Redu: Responsabilidad, Resiliencia y Respeto
3Redu: Responsabilidad, Resiliencia y Respeto
 
Posnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativaPosnarrativas en la era de la IA generativa
Posnarrativas en la era de la IA generativa
 
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTALINFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
INFORME DE LAS FICHAS.docx.pdf LICEO DEPARTAMENTAL
 
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...
 
EduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clasesEduFlex, una educación accesible para quienes no entienden en clases
EduFlex, una educación accesible para quienes no entienden en clases
 
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptxleidy fuentes - power point -expocccion -unidad 4 (1).pptx
leidy fuentes - power point -expocccion -unidad 4 (1).pptx
 
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdfEstructuras Básicas_ Conceptos Basicos De Programacion.pdf
Estructuras Básicas_ Conceptos Basicos De Programacion.pdf
 

computación paralela

  • 1. INSTITUTO TECNOLOGICO DE CHIHUACHUA II ING. SISTEMAS COMPUTACIONALES Materia: Arquitectura de computadoras Fecha: 26 de mayo de 2015 Integrantes: Flor Ramos Muñiz Ivonne Diego Yazmin Polanco Johana Gómez Ana Teresa Morales Arredondo Jesús Sánchez
  • 2. 2 ÍNDICE Aspectos básicos de la computación paralela…………………………………….3 Computación paralela……………………………………………………………………….5 Taxonomía de las arquitecturas………………………………………………………8 Sistema secuencial…………………………………………………………………………13 Taxonomía de Flynn………………………………………………………………………… 14 Organización del espacio de direcciones de memoria……………………… 17 Sistemas de memoria distribuida. Multicomputadoras Clusters……….. 23 Redes De Interconexión Estática……………………………………………………….. 24 Clúster………………………………………………………………………………………………. 25 Programación De Clúster…………………………………………………………………… 27 Consideraciones Sobre Rendimiento De Los Clúster………………………….. 27 Coherencia de cache…………………………………………………………………………. 27 Mecanismos para la coherencia de la cache……………………………………… 29 Modelos de Coherencia…………………………………………………………………….. 31 Consideraciones sobre el rendimiento de los clusters……………………….. 31 Casos de estudio…………………………………………………………………………………34 Bibliografía………………………………………………………………………………………… 36
  • 3. 3
  • 4. 4 4.1 Aspectos básicos de la computación paralela. 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.
  • 5. 5 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 de procesamiento 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, porque la concurrencia introduce nuevos tipos de errores de software, siendo las condiciones de carrera los más 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.
  • 6. 6 Aspectos a considerar  Diseño de computadores paralelo: 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 máquina paralela? ¿Con qué eficiencia se usan esos procesadores?.  Lenguajes para computadores paralelos, flexibles para permitir una implementación eficiente y que sean fáciles de programar.  Herramientas para la programación paralela.  Programas paralelos portables.  Compiladores paralelizantes. 4.2 COMPUTACIÓN PARALELA La computación paralela es una técnica de programación en la que muchas instrucciones se ejecutan simultáneamente. Se basa en el principio de que los problemas grandes se pueden dividir en partes más pequeñas que pueden resolverse de forma concurrente (“en paralelo”). TIPOS DE COMPUTACION PARALELA: PARALELISMO A NIVEL DE BIT Desde el advenimiento de la integración a gran escala (VLSI) como tecnología de fabricación de chips de computadora en la década de 1970 hasta alrededor de 1986, la aceleración en la arquitectura de computadores se lograba en gran medida duplicando el tamaño de la palabra en la computadora, la cantidad de información que el procesador puede manejar por ciclo. El aumento del tamaño de la palabra reduce el número de instrucciones que el procesador debe ejecutar para realizar una operación en variables cuyos tamaños son mayores que la longitud de la palabra. Por ejemplo, cuando un procesador de 8 bits debe
  • 7. 7 sumar dos enteros de 16 bits, el procesador primero debe adicionar los 8 bits de orden inferior de cada número entero con la instrucción de adición, a continuación, añadir los 8 bits de orden superior utilizando la instrucción de adición con acarreo que tiene en cuenta el bit de acarreo de la adición de orden inferior, en este caso un procesador de 8 bits requiere dos instrucciones para completar una sola operación, en donde un procesador de 16 bits necesita una sola instrucción para poder completarla. PARALELISMO A NIVEL DE INSTRUCCIÓN Un programa de ordenador es, en esencia, una secuencia de instrucciones ejecutadas por un procesador. Estas instrucciones pueden reordenarse y combinarse en grupos que luego son ejecutadas en paralelo sin cambiar el resultado del programa. Esto se conoce como paralelismo a nivel de instrucción. Los avances en el paralelismo a nivel de instrucción dominaron la arquitectura de computadores desde mediados de 1980 hasta mediados de la década de 1990. Los procesadores modernos tienen”pipeline” de instrucciones de varias etapas. Cada etapa en el pipeline corresponde a una acción diferente que el procesador realiza en la instrucción correspondiente a la etapa; un procesador con un pipeline de N etapas puede tener hasta n instrucciones diferentes en diferentes etapas de finalización. El ejemplo canónico de un procesador segmentado es un procesador RISC, con cinco etapas: pedir instrucción, decodificar, ejecutar, acceso a la memoria y escritura. El procesador Pentium 4tenía un pipeline de 35 etapas. Además del paralelismo a nivel de instrucción del pipelining, algunos procesadores pueden ejecutar más de una instrucción a la vez. Estos son conocidos como procesadores superes calares. Las instrucciones pueden agruparse juntas sólo si no hay dependencia de datos entre ellas. El scoreboarding y el algoritmo de Tomasulo (que es similar a scoreboarding pero hace uso del ) son dos de las técnicas más comunes para implementar la ejecución fuera de orden y la paralelización a nivel de instrucción.
  • 8. 8 PARALELISMO DE DATOS El paralelismo de datos es el paralelismo inherente en programas con ciclos, que se centra en la distribución de los datos entre los diferentes nodos computacionales que deben tratarse en paralelo. La paralelización de ciclos conduce a menudo a secuencias similares de operaciones (no necesariamente idénticas) o funciones que se realizan en los elementos de una gran estructura de datos. Muchas de las aplicaciones científicas y de ingeniería muestran paralelismo de datos. Una dependencia de terminación de ciclo es la dependencia de una iteración de un ciclo en la salida de una o más iteraciones anteriores. Las dependencias de terminación de ciclo evitan la paralelización de ciclos. Este bucle no se puede paralelizar porque CUR depende de sí mismo (PREV2) y de PREV1, que se calculan en cada iteración del bucle. Dado que cada iteración depende del resultado de la anterior, no se pueden realizar en paralelo. A medida que el tamaño de un problema se hace más grande, la paralelización de datos disponible generalmente también lo hace. PARALELISMO DE TAREAS El paralelismo de tareas es la característica de un programa paralelo en la que cálculos completamente diferentes se pueden realizar en cualquier conjunto igual o diferente de datos. Esto contrasta con el paralelismo de datos, donde se realiza el mismo cálculo en distintos o mismos grupos de datos. El paralelismo de tareas por lo general no escala con el tamaño de un problema. Durante muchos años, la computación paralela se ha aplicado en la computación de altas prestaciones, pero el interés en ella ha aumentado en los últimos años debido a las restricciones físicas que impiden el escalado en frecuencia. La computación paralela se ha convertido en el paradigma dominante en la arquitectura de computadores, principalmente en los procesadores multinúcleo. Sin embargo, recientemente, el consumo de energía de los ordenadores paralelos se ha convertido en una preocupación. Los ordenadores paralelos se pueden clasificar según el nivel de paralelismo que admite su hardware: los ordenadores multinúcleo y multiproceso tienen varios elementos de procesamiento en una sola máquina, mientras que los clusters, los MPP y los grids emplean varios ordenadores para trabajar en la misma tarea. Los programas de ordenador paralelos son más difíciles de escribir que los secuenciales porque la concurrencia introduce nuevos tipos
  • 9. 9 de errores de software, siendo las condiciones de carrera los más comunes. La comunicación y la sincronización entre las diferentes subtareas son típicamente las grandes barreras para conseguir un buen rendimiento de los programas paralelos. El incremento de velocidad que consigue un programa como resultado de la paralelización viene dado por la ley de Amdahl. Taxonomía de las arquitecturas • Clasificación 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 primera vez 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. Un ejemplo de estos sistemas son las máquinas secuenciales convencionales. • 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. 1 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
  • 10. 10 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. Ejemplos de este tipo de sistemas los encontramos en los computadores CRAY monoprocesador, CYBER 205, FUJITSU, HITACHE, NEC SUPERCOMPUTERS, IBM 390 VF, IBM 9000 VF, ALLIANT FX/1 Y CONVEX C−1. • 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. Cada ALU opera sobre un segmento diferente de datos del programa. Ejemplo de funcionamiento del sistema con el siguiente bucle: DO 2000 I=1,N A(I) = B(I) + C(I) 2000 CONTINUE El procesador asigna a cada ALU la operación de suma de B(I) con C(I) y siendo el almacenamiento del resultado en A(I) pero pasando a cada ALU un valor diferente de I. En el caso de que haya menos ALUs que iteraciones del bucle, el procesador ordenará la ejecución hasta que estén procesados todos los valores de I. En el caso de que haya más ALUs que iteraciones, existirá un número de estas que no estén operativas durante la ejecución de las instrucciones del bucle. Una ALU inactiva o en OFF significa que: • La ALU recibe instrucciones pero las ignora • La ALU ejecuta cálculos pero no almacena ningún resultado. • MISD (Multiple Instruction stream, Single Data stream) Sistemas con múltiples instrucciones que operan sobre un único flujo de datos. Este tipo de sistemas no ha tenido implementación hasta hace poco tiempo. Los sistemas MISD se contemplan de dos maneras distintas: • Varias instrucciones operando simultáneamente sobre un único dato. Varias instrucciones operando sobre un dato que se va convirtiendo en un resultado que será la entrada para la siguiente etapa. Se trabaja de forma segmentada, todas las unidades de proceso pueden trabajar de forma concurrente. •
  • 11. 11 Ejemplos de estos tipos de sistemas son los arrays sistólicos o arrays de procesadores. También podemos encontrar aplicaciones de redes neuronales en máquinas masivamente paralelas. • 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 control que se encarga de controlar todas las unidades de control del sistema. Ejemplo de estos sistemas son las máquinas paralelas actuales. • Categorías de Ordenadores Paralelos Clasificación moderna que hace alusión única y exclusivamente a los sistemas que tienen más de un procesador (i.e máquinas paralelas). Existen dos tipos de sistemas teniendo en cuenta su acoplamiento. Los sistemas fuertemente acoplados son aquellos en los que los procesadores dependen unos de otros. Los sistemas débilmente acoplados son aquellos en los que existe poca interacción entre los diferentes procesadores que forman el sistema. Atendiendo a esta y a otras características, la clasificación moderna divide a los sistemas en dos tipos: Sistemas multiprocesador (fuertemente acoplados) y sistemas multicomputador (débilmente acoplados). • Multiprocesadores Un multiprocesador puede verse como un computador paralelo compuesto por varios procesadores interconectados que comparten un mismo sistema de memoria. Los sistemas multiprocesadores son arquitecturas MIMD con memoria compartida. Tienen un único espacio de direcciones para todos los procesadores y los mecanismos de comunicación se basan en el paso de mensajes desde el punto de vista del programador. 3 Dado que los multiprocesadores comparten diferentes módulos de memoria, pudiendo acceder a un mismo módulo varios procesadores, a los multiprocesadores también se les llama sistemas de memoria compartida. Dependiendo de la forma en que los procesadores comparten la memoria, se clasifican en sistemas multiprocesador UMA, NUMA y COMA. • UMA (Uniform Memory Access) Sistema multiprocesador con acceso uniforme a memoria. La memoria física es uniformemente compartida por todos los procesadores, esto quiere decir
  • 12. 12 que todos los procesadores tienen el mismo tiempo de acceso a todas las palabras de la memoria. Cada procesador tiene su propia caché privada y también se comparten los periféricos. Los multiprocesadores son sistemas fuertemente acoplados (tightly−coupled), dado el alto grado de compartición de los recursos (hardware o software) y el alto nivel de interacción entre procesadores, lo que hace que un procesador dependa de lo que hace otro. El sistema de interconexión debe ser rápido y puede ser de uno de los siguientes tipos: • Bus común • Red crossbar • Red multietapa Este modelo es conveniente para aplicaciones de propósito general y de tiempo compartido por varios usuarios. Existen varias categorías de sistemas UMA. • Sistema Simétrico Cuando todos los procesadores tienen el mismo tiempo de acceso a todos los componentes del sistema (incluidos los periféricos), reciben el nombre de sistemas multiprocesador simétrico. Los procesadores tienen el mismo dominio (prioridad) sobre los periféricos y cada procesador tiene la misma capacidad para procesar. • Sistema Asimétrico Los sistemas multiprocesador asimétrico, son sistemas con procesadores maestros y procesadores esclavos, en donde sólo los primeros pueden ejecutar aplicaciones y dónde en tiempo de acceso para diferentes procesadores no es el mismo. Los procesadores esclavos (attached) ejecutan código usuario bajo la supervisión del maestro, por lo tanto cuando una aplicación es ejecutada en un procesador maestro dispondrá de una cierta prioridad. • NUMA (Non Uniform Memory Access) Un sistema multiprocesador NUMA es un sistema de memoria compartida donde el tiempo de acceso varía según donde se encuentre localizado el acceso. El acceso a memoria, por tanto, no es uniforme para diferentes procesadores. Existen memorias locales asociadas a cada procesador y estos pueden acceder a datos de su memoria local de una manera más rápida que a las memorias de otros procesadores, debido a que primero debe aceptarse dicho acceso por el 4 procesador del que depende el módulo de memoria local. Todas las memorias locales conforman la memoria global compartida y físicamente distribuida y accesible por todos los procesadores.
  • 13. 13 • Cluster Jerárquico Otro modelo NUMA que nace como la mezcla del modelo UMA explicado anteriormente y el modelo NUMA anterior, es el cluster jerárquico en el que se combinan las memorias locales y las globales obteniendo una cierta escalabilidad del sistema. Los procesadores aparecen distribuidos en clusters (1 sistema UMA o un 1 sistema NUMA). Estos clusters están conectados a la memoria global compartida. El sistema en su totalidad es un sistema NUMA, ya que el acceso a memoria es no uniforme por parte de los clusters. La ventaja de estos sistemas con respecto a los sistemas UMA, es que el acceso a memoria local es mucho más rápido. • COMA (Cache Only Memory Access) Los sistemas COMA son un caso especial de los sistemas NUMA. Este tipo de sistemas no ha tenido mucha transcendencia, al igual que los sistemas SIMD. Las memorias distribuidas son memorias cachés, por este motivo es un sistema muy restringido en cuanto a la capacidad de memoria global. No hay jerarquía de memoria en cada módulo procesador. Todas las cachés forman un mismo espacio global de direcciones. El acceso a las cachés remotas se realiza a través de los directorios distribuidos de las cachés. Dependiendo de la red de interconexión utilizada, se pueden utilizar jerarquías en los directorios para ayudar a la localización de copias de bloques de caché. • Multicomputadores Los sistemas multicomputadores se pueden ver como un computador paralelo en el cual cada procesador tiene su propia memoria local. En estos sistemas la memoria se encuentra distribuida y no compartida como en los sistemas multiprocesador. Los computadores se comunican a través de paso de mensajes, ya que éstos sólo tienen acceso directo a su memoria local y no a las memorias del resto de procesadores. El diagrama de bloques de un sistema multicomputador coincide con el visto para los sistemas UMA, la diferencia viene dada porque la red de interconexión no permite un acceso directo entre memorias, sino que la comunicación se realiza por paso de mensajes. La transferencia de los datos se realiza a través de la red de interconexión que conecta un subconjunto de procesadores con otro subconjunto. La transferencia de unos procesadores a otros se realiza por tanto por múltiples transferencias entre procesadores conectados dependiendo del establecimiento de dicha red. Dado que la memoria está distribuida entre los diferentes elementos de proceso, estos sistemas reciben el nombre de distribuidos. Por otra parte, estos sistemas son débilmente
  • 14. 14 acoplados, ya que los módulos funcionan de forma casi independiente unos de otros. Sistema secuencial A diferencia de los sistemas combinacionales, en los sistemas secuenciales, los valores de las salidas, en un momento dado, no dependen exclusivamente de los valores de las entradas en dicho momento, sino también de los valores anteriores. El sistema secuencial más simple es el biestable. La mayoría de los sistemas secuenciales están gobernados por señales de reloj. A éstos se los denomina "síncronos" o "sincrónicos", a diferencia de los "asíncronos" o "asincrónicos" que son aquellos que no son controlados por señales de reloj. A continuación se indican los principales sistemas secuenciales que pueden encontrarse en forma de circuito integrado o como estructuras en sistemas programados: * Contador * Registros En todo sistema secuencial nos encontraremos con: a) Un conjunto finito, n, de variables de entrada (X1, X2,..., Xn). b) Un conjunto finito, m, de estados internos, de aquí que los estados secuenciales también sean denominados autómatas finitos. Estos estados proporcionarán m variables internas (Y1,Y2,..., Ym). c) Un conjunto finito, p, de funciones de salida (Z1, Z2,..., Zp). Dependiendo de como se obtengan las funciones de salida, Z, los sistemas secuenciales pueden tener dos estructuras como las que se observan el la siguiente figura, denominadas autómata de Moore, a), y autómata de Mealy, b).
  • 15. 15 4.2.2.1 Taxonomía de Flynn Cuando se analizan las características de las arquitecturas típicas de computadores y se estudia el grado de paralelismo, es conveniente conocer la clasificación debida a Flynn (1966), basada en la forma de procesar los flujos de instrucciones y de datos. Dicha clasificación divide a los computadores atendiendo a su paralelismo explícito en 4 grupos:  SISD: Flujo único de instrucciones-flujo único de datos.  SIMD: Flujo único de instrucciones-flujo múltiple de datos.  MISD: Flujo múltiple de instrucciones-flujo único de datos.  MIMD: Flujo múltiple de instrucciones-flujo múltiple de datos. La arquitectura SISD, que esquemáticamente se representa en la siguiente figura corresponde a la mayoría de los sistemas uniprocesadores actuales. Esquema simplificado de la arquitectura SISD.
  • 16. 16 La memoria principal genera el flujo de instrucciones a la Unidad de Control, que, tras decodificarlas e interpretarlas, ordena su ejecución en la Unidad Operativa, compuesta por la ALU y los registros internos de trabajo. El flujo de datos bidireccional comunica la memoria principal y la Unidad Operativa. En el Funcionamiento de los computadores SISD sólo hay una corriente de instrucciones unidireccional y otra de datos bidireccional. Arquitectura SIMD, de flujo único de instrucciones y flujos múltiples de datos. En los computadores con arquitectura SIMD, la única Unidad de Control existente supervisa el funcionamiento del conjunto de Unidades Operativas disponible. La estructura corresponde a los llamados procesadores matriciales. Como se muestra en la figura, la Unidad de Control extrae e interpreta las instrucciones y envía las correspondientes señales de control a las Unidades Operativas encargadas de su ejecución. La Unidad de Control comienza la búsqueda de una nueva instrucción, nada más comenzada la ejecución de la anterior, siendo posible de esta forma, realizar varias instrucciones simultáneamente. Cada Unidad Operativa de la figura trabaja con un flujo de datos concreto, que se obtiene de una memoria compartida compuesta por varios módulos.
  • 17. 17 Arquitectura MISD de múltiple flujo de instrucciones y flujo único de datos. La estructura MISD consta de varias unidades de Control que reciben diferentes flujos de instrucciones que son ejecutadas en las correspondientes Unidades Operativas, las cuales se alimentan de un único flujo de datos. Un computador MISD se asemeja a una superestructura segmentada en la que cada procesador realiza una parte del procedimiento sobre el flujo de datos. Arquitectura MIMD de flujo múltiple de instrucciones y flujo múltiple de datos. Finalmente, se muestra un esquema general de la arquitectura MIMD con flujo múltiple de instrucciones y flujo múltiple de datos. Se trata de la estructura típica de un sistema multiprocesador, que puede definirse como
  • 18. 18 un conjunto de procesadores serie, cuyas unidades operativas soportan un flujo de datos y las unidades de control, un flujo de instrucciones. Varios procesadores autónomos que ejecutan simultáneamente instrucciones diferentes sobre datos diferentes. Los sistemas distribuidos suelen clasificarse como arquitecturas MIMD; bien sea explotando un único espacio compartido de memoria, o uno distribuido. Es una técnica empleada para lograr paralelismo. Las máquinas que usan MIMD tienen un número de procesadores que funcionan de manera asíncrona e independiente. En cualquier momento, cualquier procesador puede ejecutar diferentes instrucciones sobre distintos datos. 4.2.2.2 Organización del espacio de direcciones de memoria Las memorias consisten en varias celdas (o localidades) , cada una de las cuales pueden almacenar un elemento de información. Cada celda viene un número, su dirección, con el cual los programas pueden referirse a ella. Si una memoria tiene n celdas, tendrán las direcciones 0 a n-1. Todas las celdas de una memoria contienen el mismo número de bits. Si una celda consta de k bits, podrá obtener cualquiera de 2ᵏ combinaciones de bits distintas.
  • 19. 19 En la figura 2-9 se muestran 3 diferentes organizaciones para una memoria de 96 bits. Observe que celdas adyacentes tienen direcciones consecutivas (por definición). Las computadoras que emplean el sistema de numeración binario (incluidas las notaciones octal y hexadecimal para números binarios) expresan las direcciones de memoria como números binarios. Si una dirección tienen m bits, el número máximo de celdas direccionables es 2ᵐ. Por ejemplo, una dirección empleada para referirse a la memoria de la figura 2-9(a) necesita al menos 4 bits para expresar todos los números del 0 al 11. En cambio, basta una dirección de 3 bits para las figuras 2-9(b) y (c). El número de bits de la dirección determina el número máximo de celdas direccionables directamente en la memoria y es independiente del número de bits por celda. Una memoria que tienen 12¹² celdas de 8 bits cada una, y una que tiene 2¹² celdas de 64 bits cada una, necesitan ambas direcciones de 12 bits.
  • 20. 20 En la figura 2-10 se da el número de bits por celda de algunas computadoras que se han vendido comercialmente. La importancia de la celda es que es la unidad direccionable más pequeña. En años recientes casi todos los fabricantes de computadoras han adoptado como estándar una celda de 8 bits, que recibe el nombre de byte. Los bytes se agrupan en palabras. Una computadora con palabras de 32 bits tiene 4 bytes/palabra, mientras que una con palabras de 64 bits tiene 8 bytes/palabra. La importancia de las palabras es que casi todas las instrucciones operan con palabras enteras; por ejemplo, suman dos palabras. Así, una máquina de 32 bits tiene registros de 32 bits e instrucciones para manipular palabras de 32 bits, mientras que una máquina de 64 bits tiene registros de 64 bits e instrucciones para transferir, sumar, restar, y manipular de otras maneras palabras de 64 bits.
  • 21. 21
  • 22. 22 Memoria de 8 Bits Una organización de memoria muy utilizada para construir memorias grandes en la cual sea posible direccionar palabras individuales se muestra en la figura 3-29.
  • 23. 23
  • 24. 24 Este ejemplo ilustra una memoria con cuatro palabras de 3 bits. Cada operación lee o escribe una palabra de 3 bits completa. Si bien la capacidad total de memoria de 12 bits apenas rebasa la de nuestro flip-flop octal, este diseño requiere menos terminales y, lo que es más importante, es fácil extenderla a memorias grandes. Aunque la memoria de la figura 3-29 podría parecer complicada a primera vista, en realidad es muy sencilla gracias a su estructura regular. Este circuito tiene ocho líneas de entrada y tres líneas de salida. Tres de las entradas son datos: I0, I e I2; dos son para la dirección: A0 y A1; y tres son de control: CS para seleccionar el chip (Chip Select), RD para distinguir entre lectura (ReaD) y escritura, y OE para habilitar la salida (Output Enable). Las tres salidas son de datos: D0, D1 y D2. En principio, esta memoria podría colocarse en un paquete de 14 terminales, incluida la de potencia y la de tierra, en comparación con 20 terminales para el flip-flop octal. Para seleccionar este chip de memoria, la lógica externa debe poner CS en 1 y también poner RD en 1 si se desea leer o en 0 si se desea escribir. Las dos líneas de dirección deben ajustarse en modo que indique cuál de las cuatro palabras de 3 bits se desea leer o escribir. En el caso de una operación de lectura, las líneas de entrada de datos no se usan, pero la palabra seleccionada se coloca en las líneas de salida de datos. Para una operación de escritura, los bits presentes en las líneas de entrada de datos se cargan en la palabra de memoria seleccionada; las líneas de salida de datos no se usan. 4.3 Sistemas de memoria distribuida. Multicomputadoras Clusters. 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.
  • 25. 25 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 la red.  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. Redes De Interconexión Estática Las 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
  • 26. 26 utilizarse con eficiencia en los sistemas en que pueden predecirse el tipo de tráfico de comunicaciones entre sus procesadores. Clases 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. 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.
  • 27. 27 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énticos conectados 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:  Alto rendimiento  Alta disponibilidad  Balance de carga  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, sino 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.
  • 28. 28 Programación De Clúster Estos clúster están diseñados y optimizados para correr programas 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 Consideraciones Sobre Rendimiento De Los Clúster Para diseñar, implementar, probar y mantener un clúster se requiere un entendimiento básico pero claro de 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 de Alta 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. 4.3.2 Coherencia de cache La coherencia de cache 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.
  • 29. 29 Haciendo referencia al dibujo, si el cliente de arriba tiene una copia de un bloque de memoria de una lectura previa y el cliente de abajo cambia ese bloque, el cliente de arriba podría estar trabajando con datos erróneos, sin tener conocimiento de ello. La coherencia de la cache intenta administrar estos conflictos y mantener consistencia entre las caches y la memoria. En un sistema multiprocesador de memoria compartida con una memoria caché separada para cada procesador, es posible tener muchas copias de cualquier un operando de instrucción: una copia en la memoria principal y uno en cada memoria caché. Cuando se modifica una copia de un operando, las otras copias del operando se debe cambiar también. Coherencia de caché es la disciplina que asegura que los cambios en los valores de los operandos compartidos se propagan por todo el sistema en el momento oportuno. Hay tres niveles diferentes de coherencia de caché: 1. Cada operación de escritura parece ocurrir instantáneamente. 2. Todos los procesadores ver exactamente la misma secuencia de los cambios de los valores para cada operando separada. 3. Diferentes procesadores pueden ver una operación y asumir diferentes secuencias de valores. Tanto en el nivel 2 el comportamiento y el nivel de comportamiento 3, un programa puede observar datos obsoletos. Recientemente, los diseñadores de computadoras han llegado a darse cuenta de que la disciplina de programación requerida para hacer frente a la conducta de nivel 2 es
  • 30. 30 suficiente para lidiar también con el comportamiento de nivel 3. Por lo tanto, en algún momento sólo el nivel 1 y el comportamiento del nivel 3 se verán en máquinas. Mecanismos para la coherencia de la cache Los protocolos basados en directorio mantienen un directorio centralizado de los bloques que hay en las caches. Se utilizan tanto en multiprocesadores con memoria físicamente distribuida, como en sistemas con memoria centralizada con red escalable. Estos protocolos de mantenimiento de coherencia reducen el tráfico en la red enviando selectivamente órdenes sólo a aquellas caches que disponen de una copia válida del bloque implicado en la operación de memoria. El protocolo Snoopy hace que las caches individualmente monitoreen las líneas (buses) de direcciones de accesos a memoria con respecto a los bloques que han copiado. Cuando una operación de escritura es observada sobre una dirección de un bloque del cual tiene un bloque, el controlador de cache invalida su copia. También es posible que el controlador de cache observe la dirección y el dato correspondiente a esa dirección, intentando así actualizar su copia cuando alguien modifica dicho bloque en la memoria principal. El protocolo de memoria distribuida imita a los anteriores en un intento de mantener la consistencia entre bloques de memoria en sistemas con débil acoplamiento.  Coherencia basada Directory: En un sistema basado en directorios, que los datos sean compartidos se coloca en un directorio común que mantiene la coherencia entre los cachés. El directorio actúa como un filtro a través del cual el procesador debe pedir permiso para cargar una entrada de la memoria principal a la memoria caché. Cuando se modifica una entrada del directorio ni actualizaciones o inválida las otras cachés con esa entrada.
  • 31. 31  IGMP Es el proceso en el que los cachés individuales monitorear las líneas de dirección para los accesos a los lugares de memoria que tienen en caché. Se llama un protocolo de invalidación de escritura cuando se observa una operación de escritura en un lugar que una caché tiene una copia y el controlador de memoria caché invalida su propia copia de la posición de memoria snooped. Un filtro snoop reduce el tráfico IGMP mediante el mantenimiento de una pluralidad de entradas, cada uno representando una línea de caché que puede ser adquirido por uno o más nodos. Cuando sea necesario reemplazar una de las entradas, el filtro snoop selecciona para el reemplazo de la entrada representa la línea o líneas de propiedad de los nodos de menor cantidad, determinada a partir de un vector de presencia en cada una de las entradas de caché. Un tipo temporal o de otro tipo de algoritmo se utiliza para refinar la selección si más de una línea de caché es poseído por el menor número de nodos.  Snarfing Es donde un controlador de memoria caché observa tanto la dirección y los datos en un intento de actualizar su propia copia de una ubicación de memoria cuando un segundo maestro modifica una ubicación en la memoria principal. Cuando se observa una operación de escritura en un lugar que una caché tiene una copia, el controlador de memoria caché actualiza su propia copia de la posición de memoria snarfed con los nuevos datos. Sistemas de memoria compartida distribuida imitan estos mecanismos en un intento de mantener la coherencia entre los bloques de memoria en los sistemas débilmente acoplados. Los dos tipos más comunes de la coherencia que se estudian normalmente son IGMP y el Directorio de base, cada uno con sus propias ventajas y desventajas. Protocolos Snooping tienden a ser más rápido, si hay suficiente
  • 32. 32 ancho de banda disponible, ya que todas las transacciones son una respuesta de solicitud/visto por todos los procesadores. El inconveniente es que snooping no es escalable. Cada solicitud debe ser transmitida a todos los nodos en un sistema, lo que significa que a medida que el sistema se hace más grande, el tamaño del bus y el ancho de banda que proporciona deben crecer. Directorios, por otra parte, tienden a tener latencias más largas pero el uso de mucho menos ancho de banda ya que los mensajes son punto a punto y no transmiten. Por esta razón, muchos de los sistemas más grandes utilizan este tipo de coherencia de caché. Modelos de Coherencia Varios modelos y protocolos han sido desarrollados para mantener la coherencia de la cache, tales como protocolo MSI, protocolo MESI, protocolo MOSI y el protocolo MOESI. La elección de un modelo de consistencia es crucial a la hora de diseñar un sistema de cache coherente. Los modelos de coherencia difieren en rendimiento y escalabilidad, por lo que deben ser evaluados para cada sistema diseñado. Además, las transiciones entre estados en una implementación en concreto de estos protocolos pueden variar. Por ejemplo una implementación puede elegir diferentes transiciones para actualizar y actualiza tales como actualización-en-lectura, actualización-en-escritura, invalidación-en-lectura, o invalidación-en-escritura. La elección de una transición puede afectar a la cantidad de tráfico entre caches, lo que a su vez podría afectar al ancho de banda disponible por las caches para la operación actual. Esto debe ser tenido en consideración en el diseño de software distribuido que podría causar problemas de contención entre caches de múltiples procesadores. 4.4.4 Consideraciones sobre el rendimiento de los clusters El término clúster (del inglés clúster, "grupo" o "raíz") se aplica a los conjuntos o conglomerados de computadoras construidos mediante la
  • 33. 33 utilización de componentes de hardware comunes y que se comportan como si fuesen una única computadora. Hoy en día desempeñan un papel importante en la solución de problemas de las ciencias, las ingenierías y del comercio moderno. La tecnología de clúster ha evolucionado en apoyo de actividades que van desde aplicaciones de súper-cómputo y software de misiones críticas, servidores web y comercio electrónico, hasta bases de datos de alto rendimiento, entre otros usos. El cómputo con clúster surge como resultado de la convergencia de varias tendencias actuales que incluyen la disponibilidad de microprocesadores económicos de alto rendimiento y redes de alta velocidad, el desarrollo de herramientas de software para cómputo distribuido de alto rendimiento, así como la creciente necesidad de potencia computacional para aplicaciones que la requieran. Simplemente, un clúster es un grupo de múltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un único ordenador, más potente que los comunes de escritorio. Los clúster son usualmente empleados para mejorar el rendimiento y/o 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:  Alto rendimiento  Alta disponibilidad  Balanceo de carga  Escalabilidad La construcción de los ordenadores del clúster es más fácil y económica debido a su flexibilidad: pueden tener todos la misma configuración de hardware y sistema operativo (clúster homogéneo), diferente rendimiento
  • 34. 34 pero con arquitecturas y sistemas operativos similares (clúster semihomogéneo), o tener diferente hardware y sistema operativo (clúster heterogéneo), 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 sí los ordenadores, sino que es necesario proveer un sistema de manejo del clúster, el cual se encargue de interactuar con el usuario y los procesos que corren en él para optimizar el funcionamiento. Los tipos de clústeres, establecidos de acuerdo con el uso que se dé y los servicios que ofrecen, determinan el significado del término para el grupo que lo utiliza. Los clústeres pueden clasificarse según sus características:  HPCC (High Performance Computing Clusters: clústeres de alto rendimiento).  HA o HACC (High Availability Computing Clusters: clústeres de alta disponibilidad).  HT o HTCC (High Throughput Computing Clusters: clústeres de alta eficiencia). Alto rendimiento: Son clústeres 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 clúster por largos periodos de tiempo. Alta disponibilidad: Son clústeres cuyo objetivo de diseño es el de proveer disponibilidad y confiabilidad. Estos clústeres tratan de brindar la máxima 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 clústeres cuyo objetivo de diseño 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 clúster no es considerado un gran problema.
  • 35. 35 Los clústeres pueden también clasificar en:  clústeres de IT comerciales (de alta disponibilidad y alta eficiencia)  clústeres científicos (de alto rendimiento). A pesar de las discrepancias a nivel de requisitos de las aplicaciones, muchas de las características de las arquitecturas de hardware y software, que están por debajo de las aplicaciones en todos estos clústeres, son las mismas. Más aún, un clúster de determinado tipo, puede también presentar características de los otros. En general, un clúster necesita de varios componentes de software y hardware para poder funcionar:  Nodos  Almacenamiento  Sistemas operativos  Conexiones de red  Middleware  Protocolos de comunicación y servicios  Aplicaciones  Ambientes de programación paralela 4.5 casos de estudio La programación paralela involucra muchos aspectos que no se presenta en la programación convencional (secuencial). El diseño de un programa paralelo tiene que considerar entre otras cosas, el tipo de arquitectura sobre la cual se va a ejecutar el programa, las necesidades de tiempo y espacio que requiere la aplicación, el modelo de programación paralelo adecuado para implantar la aplicación y la forma de coordinar y comunicar a diferentes procesadores para que resuelvan un problema común. Existen varias herramientas disponibles para programación paralela. En el curso utilizaremos PVM y MPI, dado su alta disponibilidad para computadoras diferentes y su aceptación en la comunidad académica.
  • 36. 36 1. NVIDIA PYSICS LAYER: GPU PhysX CPU PhysX Graphics Layer: GPU –Direct X Windows 2. INTEL PYSICS LAYER: No GPU PhysX CPU Havok Graphics Layer: GPU –Direct X Windows 3. AMD PYSICS LAYER: No GPU PhysX CPU Havok Graphics Layer: GPU –Direct X Windows