Introduccin
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
diseos de procesadores que involucran
el concepto de paralelismo, entendido
como ejecucin simultnea:
Segmentacin y supersegmentacin del ciclo
de instruccin y de las unidades funcionales.
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 cdigo puede ser reordenado sin
alterar el resultado. Por lo tanto existe la posibilidad de ejecutar las
instrucciones en paralelo. Las dependencias de datos son crticas 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;
Contexto
Se presentaron los limites para la construccin de procesadores:
Utilizando
diseos
RISC
profundamente
segmentados
con
caractersticas superescalares, puede conseguirse hasta un factor 10
de aceleracin respecto de los diseos tradicionales, pero no ms que
eso.
Pero qu sucede si una aplicacin necesita 1012 instrucciones por
segundo? Puede especularse sobre la futura existencia de un perodo
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
simultneamente? 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 solucin es repetir CPUs
enteras y lograr una colaboracin eficiente entre ellas.
Contexto
Avances importantes en microprocesadores desde von
Neumann (1950)
Mltiples procesadores?
Motivacin
Las computadoras con una nica CPU no son suficientes para
satisfacer los requerimientos de algunas reas de aplicacin, a pesar
de los avances tecnolgicos y arquitectnicos de los procesadores
modernos.
Problemas
que
dependan
de
la
manipulacin/cmputo
de
grandes
cantidades de datos
Procesamiento paralelo
Arquitectura paralela
Sistema con dos o mas procesadores conectados de tal manera que
les sea posible compartir la ejecucin de una determinada tarea
(realizar procesamiento paralelo).
Existen diversas organizaciones, segn:
Paralelizacin de programas
La estrategia para la construccin de un programa paralelo
(paralelizacin) consiste en descomponer el problema en tareas de
menor complejidad que puedan ejecutarse simultneamente.
El paralelismo se consigue:
ser dividida en
ser ejecutadas
puede suceder
beneficios del
El mtodo Montecarlo:
mtodo
estadstico
numrico 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
Organizacin
Clasificacin de Flynn (1972)
Clasificacin histrica, 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 instruccin opera sobre un nico dato.
Puede existir paralelismo: segmentacin, superescalares y
unidades vectoriales.
Arquitecturas SIMD
Single Instruction stream, Multiple Data stream
Constan de una nica unidad de control y mltiples unidades
idnticas de procesamiento que realizan la misma instruccin al
unsono. Llamados tambin Array Processors (no confundir con
vectoriales).
Arquitecturas SIMD
Single Instruction stream, Multiple Data stream
Pueden utilizar memoria compartida o distribuida.
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 comunicacin entre
procesadores se realiza a travs de la memoria compartida. Desde el
punto de vista del programador se trata de variables globales. Los
programas son fciles de escribir,
La performance de la memoria limita el nmero de procesadores
(crtico).
IBM System/370, 2 CPUs (1970)
IBM System/390, mltiple (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 dbilmente acoplados
Cada CPU tiene su propia memoria, invisible para la dems. La
comunicacin entre procesadores se realiza a travs de un
mecanismo de pasaje de mensajes. Desde el punto de vista del
programador no existen las variables globales, sino canales de
comunicacin y operaciones de envo y recepcin, que deben
programarse en forma explcita.
La performance de la red de interconexin limita el nmero de
procesadores. Depende mucho del tipo de aplicacin.
ROUTING DE MENSAJES
Redes de interconexin
a) Bus
b) Conmutada
Redes de interconexin
Redes de interconexin
Redes de interconexin
Redes de interconexin
II) Dinmicas
Redes de interconexin
4-cube
Anlisis de performance en
Arquitecturas Paralelas
Hesham El-Rewini & Mostafa Abd-El-Barr,
Advanced Computer Architecture and Parallel Processing. Willey.
Captulo 3 completo.
Escalabilidad
S=
ts
tm
S
=
n
= 1
SS
n
f+(1 f )n
SS ( n )=
(1 f )
f+
n
n
lim SS (n )n =
Mtrica de Karp-Flatt
Despejando f de Amdhal y midiendo la aceleracin S que se obtiene para un
dado problema (utilizando n procesadores), resulta que f es una medida
experimental de cun paralelizable es el problema. Puede utilizarse para
predecir cmo se comportar el sistema al variar el nmero de
procesadores).
1 1
+
S n
f=
1
1
n
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 nmeros.
Mejora (hacia 4): escalable
S=
m
m
+2log 2 n
n
form=1:8,
forn=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);%verqueenladiagonalsevayaduplicando
ylabel('m:orden2^(m+5)');
xlabel('n:nodos2^n');
zlabel('Mejora');
form=1:8,
forn=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);%verqueladiagonalsemantengaconstante
ylabel('m:orden2^(m+5)');
xlabel('n:nodos2^n');
zlabel('Eficiencia');
Escalabilidad
El grado de escalabilidad de un sistema paralelo se determina por la
relacin en que el problema debe incrementarse respecto del nmero de
procesadores (n), para mantener una eficiencia constante cuando el
nmero de procesadores aumenta.
Por ejemplo, en un sistema paralelo altamente escalable el tamao del
problema deber crecer linealmente con respecto de n a fin de mantener
la eficiencia constante.
En un sistema poco escalable el tamao del problema necesitar crecer
exponencialmente con respecto de n para mantener la eficiencia
constante.
Sumario
Las arquitecturas para procesamiento paralelo, en sus diversas variantes, son el
tema central de la materia.
Las tcnicas superescalares y de segmentacin utilizan conceptos de paralelismo con el
objetivo de incrementar el desempeo de los diseos clsicos. Estas encuentran
rpidamente limitaciones prcticas en el momento de la implementacin.
Existen problemas que no pueden solucionarse utilizando un nico procesador, dado el
actual estado de la tecnologa, 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 diseos SIMD explotan
el paralelismo en los datos, y los MIMD el paralelismo en las instrucciones.
Estos ltimos se dividen en multiprocesadores y multicomputadoras, segn dispongan o
no de memoria compartida. Estas son las dos grandes categoras actuales de
arquitectutas paralelas. Ambas utilizan modelos de programacin diferentes.
Los grandes sistemas
arquitecturas.
de
cmputo
utilizan
hoy
una
combinacin
de
ambas