Arquitecturas Paralelas Introducción William Stallings, Orga

Anuncio
Arquitecturas Paralelas
Introducción
William Stallings, Organización y Arquitectura de
Computadores, 5ta. ed., Capítulo 16: Procesamiento Paralelo.
Andrew S. Tanenbaum, Organización de Computadoras 4ta.
ed., Capítulo 8: Arquitecturas de computadoras paralelas.
Hesham El-Rewini & Mostafa Abd-El-Barr, Advanced
Computer Architecture and Parallel Processing. Willey.
Contexto
El paralelismo, en todas sus formas, es
el tema central de la asignatura.
En la primer mitad del curso se
presentaron varios aspectos de los
diseños de procesadores que involucran
el concepto de paralelismo, entendido
como ejecución simultánea:
Segmentación y supersegmentación del ciclo
de instrucción y de las unidades funcionales.

Arquitecturas superescalares y duplicación
de recursos.

Arquitecturas de palabra ancha.

Arquitecturas vectoriales.

NOTA:
Otra forma de simultaneidad: Multitareas.
Varios procesos comparten una CPU [OS] Timesharing vs. real-time.
Contexto
Paralelismo a nivel de instrucciones (ILP)
Existe ILP cuando las instrucciones que componen un programa son
independientes. En ese caso el código puede ser reordenado sin
alterar el resultado. Por lo tanto existe la posibilidad de ejecutar las
instrucciones en paralelo. Las dependencias de datos son críticas en
este contexto.
Ejemplo operaciones independientes:
for(i=0;i<1000;i++) x[i]=x[i]+y[i];
Ejemplo operaciones dependientes: for(i=1;i<1000;i++) x[i]=(x[i]+x[i-1])/2;
Paralelismo de la máquina (MLP)
Es una medida de la capacidad del procesador para sacar partido del
ILP. Depende del número de instrucciones que puedan captarse y
ejecutarse simultáneamente (número de cauces paralelos). Existen
dos aproximaciones:
−
−
Scheduling Dinámico (HW): P4, UltraSPARCIII. SUPERESCALAR. Paralelismo
implícito.
Scheduling Estático (SW): IA-64, Transmeta. VLIW. Paralelismo explícito.
El punto es detectar el ILP y explotarlo con MLP
Alteramos la secuencialidad de las instrucciones del programa
Contexto
Se presentaron los limites para la construcción de procesadores:


La disipación de potencia limita el tamaño de los transistores
La velocidad de la luz limita la velocidad de reloj
Utilizando
diseños
RISC
profundamente
segmentados
con
características superescalares, puede conseguirse hasta un factor 10
de aceleración respecto de los diseños tradicionales, pero no más que
eso.
Pero qué sucede si una aplicación necesita 1012 instrucciones por
segundo? Puede especularse sobre la futura existencia de un período
de reloj de 0.001 ns? Casi imposible (la luz recorre 0.3 mm en 1 ps).
Puede pensarse en 1000 computadoras de 1 ns trabajando
simultáneamente? Puede ser...
Si se desea un factor 1000 no alcanza con extender el concepto
superescalar, agregando unidades funcionales, o pensar en aumentar
1000 veces la frecuencia de trabajo. La única solución es repetir CPUs
enteras y lograr una colaboración eficiente entre ellas.
Contexto
Avances importantes en microprocesadores desde von
Neumann (1950)



Unidad de control microprogramada y el concepto de familia
(1964) Compatibilidad ISA con diferentes implementaciones [IBM
360].
Memoria cache (1968) [IBM 360].
Arquitecturas RISC (1982) Involucra la mayoría de los asuntos
importantes de arquitectura y organización: Segmentación de
cauce (pipeline) y diseño superescalar.
No existe en la actualidad una tecnología que haga prever un
impacto semejante.
Múltiples procesadores?
Motivación
Las computadoras con una única CPU no son suficientes para
satisfacer los requerimientos de algunas áreas de aplicación, a pesar
de los avances tecnológicos y arquitectónicos de los procesadores
modernos.

Simulaciones y modelado de sistemas complicados.

Problemas
que
dependan
de
la
manipulación/cómputo
de
grandes
cantidades de datos

Los grandes problemas físicos, económicos, biológicos, climatológicos.
Estas aplicaciones se caracterizan por manejar cantidades enormes de
datos y/o realizar grandes cantidades de cálculos numéricos.
Grand Challenge Problems (los grandes desafíos)
Problemas que tienen solución, pero que no pueden resolverse en
una cantidad de tiempo razonable utilizando las computadoras
actuales. Dinámica de fluídos, modelado ambiental, biología
molecular. Ejemplo: pronostico meteorológico.
Una posible solución para las necesidades de alta performance es utilizar
sistemas con varias CPUs para resolver una determinada aplicación.
Procesamiento paralelo
Arquitectura paralela
Sistema con dos o mas procesadores conectados de tal manera que
les sea posible compartir la ejecución de una determinada tarea
(realizar procesamiento paralelo).
Existen diversas organizaciones, según:




Número y complejidad de las CPUs utilizadas.
Disponibilidad de memoria compartida.
Topología de interconexión.
Dispositivos de E/S.
Paralelización de programas
La estrategia para la construcción de un programa paralelo
(paralelización) consiste en descomponer el problema en tareas de
menor complejidad que puedan ejecutarse simultáneamente.
El paralelismo se consigue:

Descomponiendo el problema en tareas menores.

Asignando las tareas a procesadores que puedan ejecutar en
paralelo.

Coordinando las tareas simultáneas.
Analogía con la industria automotriz y otros problemas complejos.
Programas paralelos - Condiciones
Se necesitan dos condiciones en los programas de aplicación para
hacer un uso eficiente de los procesadores:
1) Poca comunicación entre los procesadores mientras ejecutan la
tarea compartida.
2) Un cierto grado de paralelismo inherente en la tarea a realizar.
Generalmente, la resolución de un problema puede
tareas de menor complejidad, las cuales pueden
simultáneamente con una cierta coordinación. Pero
que el esfuerzo de coordinación supere los
procesamiento simultáneo.
ser dividida en
ser ejecutadas
puede suceder
beneficios del
No todas las aplicaciones se benefician
Problemas “Embarrassingly parallel”
Problemas en los cuales no hay que hacer ningún esfuerzo para
paralelizar, pues no existe comunicación entre procesadores.



Fractales (cada punto puede calcularse en forma independiente)
Animación (cada cuadro se renderiza en forma independiente de los
demás)
Simulaciones y reconstrucciones en física de partículas.
Programas paralelos - Ejemplos
for(i=0;i<n;i++){
x=rand()/RAND_MAX;
y=rand()/RAND_MAX;
r=sqrt(x*x+y*y);
if(r<=1.0) m++;
}
pi=4*m/n;
a) Cálculo de π (distribución de tareas)
b) Ordenamiento paralelo (distribución
de datos)
El método Montecarlo:
método
estadístico
numérico utilizado para
aproximar
expresiones
complejas o costosas. Se
basa
en
el
muestreo
aleatorio
(o
pseudoaleatorio en el caso de las
computadoras).
Tipos de paralelismo
PARALELISMO EN LOS DATOS PARALELISMO EN LAS TAREAS
Diferentes datos, misma tarea Diferentes datos, diferentes tareas
(SIMD)
(MIMD)
program:
...
if CPU="a" then
low_limit=1
upper_limit=50
else if CPU="b" then
low_limit=51
upper_limit=100
end if
do i = low_limit , upper_limit
Task on d(i)
end do
...
end program
program:
...
if CPU="a" then
do task "A"
else if CPU="b" then
do task "B"
end if
...
end program
Organización
Clasificación de Flynn (1972)
Clasificación histórica, basada en la naturaleza ortogonal del flujo de
instrucciones ejecutado por la computadora (I) y el flujo de datos
sobre los cuales operan las instrucciones (D).
Massively Parallel
Processor
(MPP)
(Tanenbaum)
Arquitecturas SISD
Single Instruction stream, Single Data stream.
Arquitectura tradicional escalar de von Neumann, estudiada hasta
este momento. Cada instrucción opera sobre un único dato.
Puede existir paralelismo: segmentación, superescalares y
unidades vectoriales.
Arquitecturas SIMD
Single Instruction stream, Multiple Data stream
Constan de una única unidad de control y múltiples unidades
idénticas de procesamiento que realizan la misma instrucción al
unísono. Llamados también Array Processors (no confundir con
vectoriales).
Especializados en problemas numéricos que puedan expresarse
como matrices o vectores. Cada unidad de procesamiento consta de
una ALU y registros, y se utiliza para computar un elemento del
resultado (front-end von Neumann, más un array de procesadores
idénticos que realizan la misma instrucción).
Arquitecturas SIMD
Single Instruction stream, Multiple Data stream
Pueden utilizar memoria compartida o distribuida.
Ejemplo: ILLIAC IV (1970s), 64 procesadores
conectados en una grilla de 8x8. CM-2 (1990s) de
Connection Machines (RIP), 65536 procesadores
conectados en hipercubo.
Arquitecturas MIMD
Multiple Instruction stream, Multiple Data stream
Son las arquitecturas paralelas propiamente dichas. Pueden ser con
memoria compartida (multiprocesadores) o memoria distribuida
(multicomputadoras). Cada unidad de procesamiento tiene su propio
flujo de instrucciones.
MIMD: Multiprocesadores
Procesadores fuertemente acoplados
Existe un único espacio de direccionamiento. La comunicación entre
procesadores se realiza a través de la memoria compartida. Desde el
punto de vista del programador se trata de variables globales. Los
programas son fáciles de escribir,
La performance de la memoria limita el número de procesadores
(crítico).
IBM System/370, 2 CPUs (1970)
IBM System/390, múltiple (1990)
Cray X-MP/Y-MP
Cray 3 (16 proc vect)
Intel Pentium D: 2xP4 en bus sin HT
L1:16K+16K, L2:1M+1M
IBM POWER5 (2004)
COHERENCIA DE CACHE
MIMD: Multicomputadoras
Procesadores débilmente acoplados
Cada CPU tiene su propia memoria, invisible para la demás. La
comunicación entre procesadores se realiza a través de un
mecanismo de pasaje de mensajes. Desde el punto de vista del
programador no existen las variables globales, sino canales de
comunicación y operaciones de envío y recepción, que deben
programarse en forma explícita.
La performance de la red de interconexión limita el número de
procesadores. Depende mucho del tipo de aplicación.
−
−
−
−
Intel iPSC/2 (1989)
[128 proc 80386, hipercubo]
Intel Paragon (1991)
[2000 proc i860, mesh]
Cray T3E MC512 (1995)
[512 proc Alpha 3d-mesh]
Beowulf Clusters, NOW
ROUTING DE MENSAJES
Redes de interconexión para
arquitecturas paralelas
Pueden clasificarse según diferentes criterios:

Modo de operación: sincrónico vs. asincrónico.

Estrategia de control: centralizado vs. descentralizado.
Técnica de conmutación: circuitos vs. conmutación de
paquetes.


Topología: cómo se conectan procesadores y memorias entre sí.
Balance entre performance (ancho de banda) y costo.
Redes de interconexión
Topologías para memoria compartida
a) Bus
b) Conmutada
Redes de interconexión
Topologías para memoria compartida
CROSSBAR
El routing dinámico se consigue utilizando redes de conmutación
compuestas por ´crossbar switches´ o ´2x2 switches´. Las redes
crossbar son no bloqueantes (permiten varias conexiones
simultáneas) pero necesitan gran cantidad de switches (N 2 para N
nodos).
Redes de interconexión
Topologías para memoria compartida
OMEGA
Las redes de interconexión multietapa son las más avanzadas entre
las redes actuales de conmutación. En el caso de la red omega, para
conectar N nodos se necesitan log2N etapas con N/2 switches 2x2
cada una.
Redes de interconexión
Topologías para memoria compartida
Sumario
Ventajas y desventajas de las diferentes topologías:




Las redes tipo bus son económicas pero pueden transformarse en
el cuello de botella del sistema.
Los buses paralelos mejoran la performance, pero son costosos.
Las redes crossbar son no bloqueantes, pero requieren un gran
número de switches.
Las redes omega son bloqueantes en menor grado. Presentan
mejor performance que los buses y son más económicas que las
crossbar.
Redes de interconexión
Topologías para pasaje de mensajes
I) Estáticas (pizarrón)
4
II) Dinámicas
Redes de interconexión
Topologías para pasaje de mensajes
10-cube
4-cube
Análisis de performance en
Arquitecturas Paralelas
Hesham El-Rewini & Mostafa Abd-El-Barr,
Advanced Computer Architecture and Parallel Processing. Willey.
Capítulo 3 completo.

Peak rate (no muy útil, marketing)

Mejora y Eficiencia [S=Ts/Tp, ξ=S/n]
Equal duration model: caso ideal [S=n, ξ=1]
Serial section model: ley de Amdahl [S=n/(f(n-1)+1)]

Amdahl vs. Gustafson-Barsis [SS=n-f(n-1)]

Efecto del tiempo de comunicación [S=Ts/(Tp+Tc), fc=nTc/Ts]

Escalabilidad
Definición de mejora y eficiencia
S=
ts
tm
S
ξ=
n
Equal duration model
ξ= 1
Fractional communication overhead
Serial section model
Serial section model
with communication overhead
Amdhal vs. Gustafson-Barsis
Algunos problemas no se comportan en forma tan pesimista como
predice Amdhal. A veces el tamaño del problema escala con el número
SS
n
de procesadores. SS(f) es una recta y no presenta el límite en 1/f. Es
como si f se fuera achicando, en proporción, al aumentar el orden del
1
problema (en la práctica sucede)
1
f+(1− f )×n
SS ( n )=
(1− f )
f+
×n
n
lim SS (n )n → ∞ =∞
Métrica de Karp-Flatt
Despejando f de Amdhal y midiendo la aceleración S que se obtiene para un
dado problema (utilizando n procesadores), resulta que f es una medida
experimental de cuán paralelizable es el problema. Puede utilizarse para
predecir cómo se comportará el sistema al variar el número de
procesadores).
1 1
+
S n
f=
1
1−
n
f
S vs. f
gnuplot> plot [x=0:1] [0:10] 5/(x*4+1) title "Amdahl n=5", 10/(x*9+1) title "Amdahl
n=10", 100/(x*99+1) title "Amdahl n=100",1/x title "Amdahl n=oo", 5-(x*4) title
"Gustafson n=5", 10-(x*9) title "Gustafson n=10", 100-(x*99) title "Gustafson n=100"
Escalabilidad
Ejemplo: Hipercubo de D dimensiones (n=2D, dist max
D=log2(n)), utilizado para realizar la suma de m números.
Mejora (hacia 4): escalable
S=
m
m
+2log 2 n
n
Es escalable si habiendo agregado nodos la
eficiencia se mantiene cte al aumentar m
for m=1:8,
for n=1:8,
N=2^n;
M=2^(m+5);
S(m,n)=M/(M/N+log2(N)); E(m,n)=S(m,n)/N;
end
end
surf(S); % ver que en la diagonal se vaya duplicando
ylabel('m: orden 2^(m+5)');
xlabel('n: nodos 2^n');
zlabel('Mejora');
for m=1:8,
for n=1:8,
N=2^n;
M=2^(m+5);
S(m,n)=M/(M/N+log2(N)); E(m,n)=S(m,n)/N;
end
end
surf(E); % ver que la diagonal se mantenga constante
ylabel('m: orden 2^(m+5)');
xlabel('n: nodos 2^n');
zlabel('Eficiencia');
Escalabilidad
El grado de escalabilidad de un sistema paralelo se determina por la
relación en que el problema debe incrementarse respecto del número de
procesadores (n), para mantener una eficiencia constante cuando el
número de procesadores aumenta.
Por ejemplo, en un sistema paralelo altamente escalable el tamaño del
problema deberá crecer linealmente con respecto de n a fin de mantener
la eficiencia constante.
En un sistema poco escalable el tamaño del problema necesitará crecer
exponencialmente con respecto de n para mantener la eficiencia
constante.
Sumario Taxonomía de Flynn
SISD: Single Processor, von Neumann
SIMD: Array Processors
MISD: ????
MIMD:
Memoria compartida: Multiprocesadores (SMP y NUMA)
Memoria distribuida: Multicomputadoras (MPP y Clusters)
Sumario Taxonomía de Flynn
Sumario
Las arquitecturas para procesamiento paralelo, en sus diversas variantes, son el
tema central de la materia.
Las técnicas superescalares y de segmentación utilizan conceptos de paralelismo con el
objetivo de incrementar el desempeño de los diseños clásicos. Estas encuentran
rápidamente limitaciones prácticas en el momento de la implementación.
Existen problemas que no pueden solucionarse utilizando un único procesador, dado el
actual estado de la tecnología, por lo que se presenta la necesidad de utilizar varios de
ellos trabajando en forma coordinada. Pero no todos los problemas pueden sacar
partido de esta estrategia. Los programas deben cumplir con algunas condiciones.
Existen dos tipos de organizaciones con diferentes objetivos: los diseños SIMD explotan
el paralelismo en los datos, y los MIMD el paralelismo en las instrucciones.
Estos últimos se dividen en multiprocesadores y multicomputadoras, según dispongan o
no de memoria compartida. Estas son las dos grandes categorías actuales de
arquitectutas paralelas. Ambas utilizan modelos de programación diferentes.
Los grandes sistemas
arquitecturas.
de
cómputo
utilizan
hoy
una
combinación
de
ambas
Descargar