Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Arquitectura de Computadoras Paralelo

No description
by

Danixa Brigitte

on 17 December 2012

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Arquitectura de Computadoras Paralelo

Qué instrucciones pueden ejecutarse en paralelo, y qué instrucciones deben ejecutarse en serie.
La información relacionada con el paralelismo respecto a los paquetes vecinos.
Ranuras de mapas de instrucciones para los tipos de ejecución. La plantilla contiene la información siguiente: ARQUITECTURA DE COMPUTADORAS PARALELO El microprocesador Intel Itanium (Merced) está basado en el conjunto de instrucciones IA-64 (Intel Architecture) de 64 bits.

La gama de productos Intel Itanium esta pensada para computadores de alto rendimiento.

Intel ha comercializado dos versiones del microprocesador Itanium basados en la arquitectura IA-64 (Itanium y Itanium 2) El desarrollo del juego de instrucciones IA-64 se realizó conjuntamente entre Intel y Hewlett-Packard (HP).

Las instrucciones IA-64 esta basado en un conjunto de conceptos que se conocen como EPIC (Explicitly Parallel Instructions Computing). El diseño de procesadores mediante EPIC permite incrementar las capacidades de ejecución paralela (ILP) en el procesador. características de la arquitectura que potencian el paralelismo Superescalar: Permite ejecutar múltiples instrucciones por ciclo.

Supersegmentación: Dividen algunas etapas de la ejecución de una instrucción en subetapas lo que le permite eliminar dependencias estructurales entre instrucciones. - Alto rendimiento para servidores y estaciones de internet
- Soporte para direccionamiento de 64 bits
- Confiabilidad para las ejecuciones criticas
- Completa compatibilidad de hardware para el juego de instrucciones de 32 bits
- Instrucciones para la comunicación entre el sistema y el compilador.
- Escalabilidad a traves de la gama de sistemas operativos y plataformas. ITANIUM y su gran capacidad arquitectónica - 3 niveles de caches:
L3 de 2 ó 4 MB, L2 de 96 KB y L1 de 32KB
- Un ancho núcleo de ejecución paralela
- Predicción
- Alta velocidad de reloj (800 MHz y 1000MHz)
- Una rápida arquitectura de bus
- 128 registros de propósito general de 64 bits
- 128 registros de coma flotante de 80 bits ITANIUM y su gran capacidad arquitectónica Arquitectura IA-64 y el Intel Itanium ESPECIFICACIONES DE LA ARQUITECTURA DEL PROCESADOR ITANIUM La tecnología EPIC se basa en una combinación exclusiva de funciones innovadoras, como predicción, especulación y paralelismo explícito. EPIC Se usan dos técnicas para implementar EPIC: Predicación: compilador que intenta hacer predicciones lo más precisas posible.

Especulación: Cargar instrucciones y datos a la CPU. Componentes básicos de la arquitectura Banco de Registros La arquitectura IA-64 proporciona 128 registros de propósito general de 64+1 bits
128 registros de 82 bits para números en coma flotante.
128 registros de aplicación de 64 bits.
8 registros de salto y retorno de funciones (Branch Register).
64 registros de un bit para almacenar el resultado de una condición
128 registros de aplicación de propósito especial Componentes básicos de la arquitectura El IA-64 utiliza formatos de codificación de 128 bits (bundle).
En una unidad de codificación se incluyen 3 instrucciones organizadas junto con una plantilla. Codificación de instrucciones PARALELISMO Es la implementación propietaria de Hewlett-Packard's de un sistema operativo UNIX, basado en UNIX System V (inicialmente System III) su primer versión en 1984. HP-UX(I) Intel Itanium(III) HP Integrity rack-mount servers HP Superdome 2 Características:
HP-UX 11i v3 scales as follows:
128 processor cores
2 TB main memory
32 TB maximum file system
16 TB maximum file size
100 million ZB storage HP-UX(II) Este acercamiento permite que el procesador ejecute hasta seis instrucciones por ciclo de reloj. A diferencia de otras arquitecturas superescalares, Itanium no precisa de hardware elaborado para seguir la pista de las dependencias de las instrucciones durante la ejecución paralela. Intel Itanium(II) La arquitectura del Itanium se diferencia drásticamente de las arquitecturas x86 y x86-64 usadas en otros procesadores de Intel. La arquitectura se basa en un explícito paralelismo a nivel de instrucción, con el compilador tomando decisiones sobre qué instrucciones deben ejecutarse en paralelo. Intel Itanium(I) HP Integrity server blades Servidores HP
Definimos como procesamiento paralelo al concepto de agilizar la ejecución de un programa mediante su división en fragmentos que pueden ser ejecutados simultáneamente. PROCESAMIENTO PARALELO
Mejora de la concurrencia de la CPU.
oculta a la arquitectura computacional.
Aprovechamiento de los recursos de paralelismo de la CPU.
Ejecución fuera de orden.
Procesadores auxiliares (Video – FPU)
SIMD Paralelismo implícito – bajo nivel Paralelismo explicito - Alto nivel Memoria Compartida
Multiprocesadores Se clasifica de la siguiente manera:

Bus de Tiempo Compartido o Común.
Memoria multipuerto.
Unidad de control central. Bus de tiempo compartido Los procesadores compiten por el control del Bus
Es el utilizado por los sistemas SMP de Intel.
Los sistemas SMP poseen zonas de memoria dedicadas a paso de mensajes entre procesadores.
Es importante la cache interna de los procesadores para disminuir los accesos al bus. Sin embargo se necesita comunicar los cambios de cache interna a los otros CPU.
Limitado a pocas decenas de procesadores.
Fácil de expandir.
Posee tolerancia a fallos . El Numero de procesadores no es infinitamente escalable Memoria Multipuerto Permite el acceso directo e independiente a los módulos de memoria desde cada una de las CPUs.
Cada puerto de la memoria posee una determinada prioridad.
Se puede configurar memorias como privadas para una determinada CPU.
Es mas eficiente que el sistema de Bus pero requiere una lógica mas compleja. Unidad de control central Se trata de una unidad de control que permite la coordinación de las CPU’s.
Multiplexa las distintas secuencias de datos.
Lleva registros de estado de Cada CPU.
Lleva registros de cambios en las Cache´s. Ejemplo Este proceso factorial se realiza varias veces y en simultaneo. Memoria Distribuida Multicomputadoras unidades de ejecución para cada instrucción Aplicación de las características de la filosofia de diseño EPIC El objetivo del diseño EPIC es aumentar el grado de paralelismo (ILP). DISTRIBUCION DE REPONSABILIDAD Repartir el trabajo, para crear el paralelismo, entre el procesador y el compilador. PREDICACION permite al compilador ejecutar las instrucciones desde múltiples caminos al mismo tiempo, desechando la que podría causar un fallo en la predicción. Las operaciones de comparación juegan un papel significativo en el IA-64, y particularmente en relación a la predicación. COMPARACIONES Las comparaciones normales evaluan la expresión y ponen el resultado de la comparación en el primer registro predicado, y en el segundo ponen el complementario de la comparación. Comparaciones Normales if (a == b){
c++;
} else {
d++;
} Un ejemplo comparaciones normales El codigo compilado es similar a {
cmp.eq p1, p2 = ra, rb
(p1) add rc = rc, 1
(p2) add rd = rd, 1
} Comparaciones Incondicionales Cuando el predicado de una comparación incondicional es 1, la comparación se ejecuta normalmente.

Sin embargo, si es 0, la comparacion incondicional escribirá ceros en ambos registros apuntados. Si a>b p2 será puesto a 0, p3 y p4, ambos a 0.

Si a<=b entonces p2 será a 1, evaluará e==f para determinar el valor en p3 y p4. El IA-64 proporciona 3 tipos de operaciones de comparación paralela:
•AND pone ambos registros a 0 si es falso
•OR pone ambos a 1 si es cierto
•ANDOR pone el primero a 0 y el segundo a 1 si es cierto Comparaciones Paralelas Esto permite a los 3 casos ser comparados en paralelo y fijar el registro predicado apropiado en un mismo ciclo de reloj Los computadores son muy rápidos ejecutando bucles de código.

Pero el principal problema de los bucles de código es que no permiten un suficiente grado de trabajo paralelo.

IA-64, utiliza dos registros de aplicación que mantienen el contador del bucle (LC, Loop Count) y la longitud de la segmentación (Epilog Count, EC) ayuda a reducir la sobrecarga del conteo y testeado del bucle. Pipelining de software: Sistema formado por unidades de procesamiento autónomas.
Cada procesador posee su espacio privado en memoria por lo que la coordinación debe funcionar por medio de una red dedicada.
Mayor escalabilidad debido a que son sistemas autónomos. Especulacion de Control IA-64 proporciona mecanismos para cargas planificadas previamente a almacenamientos lógicas y saltos. Especulación de datos Si compilador necesita mover una instrucción de carga delante de una instrucción de almacenamiento que puede causar un conflicto potencial.
Es posible para el compilador testear que no existe conflicto. Permite solapar la ejecución de múltiples instrucciones, aumenta el número de instrucciones que se ejecutan simultámeamente y la velocidad del procesador(reduce tiempo de ciclo).

Itanium poseen un tiempo de ciclo y un sistema de segmentación balanceados y optimizados para la ejecución de código, reduciendo la latencia de la mayoria de operaciones. ESPECULACION El Itanium puede cargar instrucciones y dato a la CPU antes de que sean necesitados o no si no lo son, haciendo que el procesador parezca de esta manera una caché. Este tipo de sistemas se divide en 2 grandes grupos:
MPPs (“Massively Parallel Processors”, Procesadores Masivamente Paralelos).
Clusters de procesamiento paralelo. #include <stdio.h>
#include<conio.h>
int factorial(int n){
if (n<0)
return 0;

if (n==0)
return 1;
else if (n==1)
return 1;
else
return n*factorial(n-1);
}

void main(void){
int x,fac;
clrscr();
printf("Ingrese un número para calcularle el factorial = “");
scanf("%d",&x);fac=factorial(x);
printf("%d!=%d\n",x,fac);getch();
} MPP (Sistema Masivamente Paralelo) Cada procesador posee su propia memoria no compartida – Es decir: Funciona como una unidad computacional
Existe un bus dedicado para intercambio de mensajes entre procesadores Cluster de procesamiento paralelo Grupos de sistemas autónomos interconectados por interfaces de red formando diferentes topologías que tienen en común la pertenencia al modelo MIMD.
No posee las limitaciones de cantidad de unidades de procesamiento como SMP.
Facilidad de mantenimiento.
No todas las aplicaciones están preparadas para trabajar en cluster. Estructura interna del procesador Intel Itanium Segmentación: SISTEMAS OPERATIVOS PARALELOS
Un sistema multiprocesador tiene más de un CPU compartiendo memoria y periféricos. Las ventajas más evidentes son mayor potencia de computación y fiabilidad.
Estos sistemas asignan una tarea específica a cada procesador. Un procesador maestro controla el sistema, los otros esperan al maestro o tienen tareas predefinidas. Este esquema define una relación maestro/esclavo COMPILACION PARALELA
El compilador realiza normalmente dos ciclos de análisis antes de una paralelización para determinar lo siguiente:¿Es seguro paralelizar el bucle? La respuesta a esta pregunta requiere un preciso análisis de dependencias y análisis de alias¿Merece la pena paralelizarlo? Esta respuesta requiere una estimación fiable (modelado) de la carga de trabajo del programa y de la capacidad del sistema paralelo. En el primer paso el compilador realiza un análisis de dependencias del bucle para determinar si cada iteración del bucle puede ejecutarse de forma independiente a las demás. El segundo paso intenta justificar el esfuerzo de paralelización, comparando el tiempo teórico de ejecución del código paralelizado con el tiempo de ejecución del código secuencial. Dificultades
- La paralelización automática de los compiladores o herramientas es muy compleja debido a las siguientes causas:
1. el análisis de dependencias es muy complejo para el código que utiliza direccionamiento indirecto, punteros, recursividad, y llamadas indirectas a funciones.
2. los bucles tienen un número indeterminado de iteraciones.
3. los accesos a recursos globales son difíciles de coordinar en términos de reserva de memoria, E/S, y variables compartidas. Soluciones
1. Permitir a los programadores añadir "pistas" a sus programas para guiar al compilador en la paralelización.
2. Construir un sistema interactivo entre los programadores y las herramientas que realizan la paralelización. LENGUAJES DE PROGRAMACIÓN PARALELA
Los lenguajes para computadores paralelos deben ser flexibles para permitir una implementación eficiente y fácil de programar.

- Fortran- C- Halide COMO TRABAJA LA PREDICACION
Full transcript