Académique Documents
Professionnel Documents
Culture Documents
I. Introduccin
El procesamiento de datos en paralelo es una forma de mejorar el
desempeo los algoritmos y as disminuir el tiempo de ejecucin de
los mismos. De acuerdo a la clasificacin propuesta por Flynn las
diversas arquitecturas de computadores se pueden agrupar en:
II. Definicin
Las arquitecturas SIMD (Single Instruction Multiple Data) ejecutan la misma
instruccin sobre mltiples datos simultneamente; de manera semejante a
como un sargento ordena a todo el pelotn dar media vuelta, en lugar de
hacerlo de soldado en soldado.
Es una arquitectura de procesadores en la que se obtiene paralelismo a nivel
de datos (Figura 1). Como su acrnimo indica, una sola instruccin del
procesador afecta a varios registros del mismo. Las unidades SIMD
aprovechan una propiedad de los flujos de datos llamada paralelismo de
datos. Se puede obtener paralelismo de datos cuando se tiene una cantidad
de datos uniformes a los que se les realiza la misma operacin. Un ejemplo
clsico es la de invertir los colores de una imagen RGB. Se debe repetir la
misma operacin a cada uno de los elementos en un gran conjunto de datos.
Figura 1
(Comparacin entre las operaciones tradicionales SISD con las operaciones
SIMD)
Figura 2
los datos en las memorias locales y deber mover o distribuir estos datos
explcitamente cuando sea necesario.
II.1
Ventajas
de instrucciones.
El rendimiento decae considerablemente en las sentencias case
II.2
Modelo
Un nico programa controla los procesadores.
Ejemplos comerciales:
II.3
Figura 3
II.4
Unidad
SIMD
MX/SSE/SSE2/SSE3/SSSE3/SSE4
de
Intel:
Figura 4
Distribucin de los Registros y Tipo de dato en la unidad SIMD de Intel
Esta red (alignement) es una red de caminos conmutables entre los PEs
y las memorias paralelas. Se espera que tal red sirva para liberar de los
conflictos de acceso a las memorias compartidas por tantos PEs como
sea posible. Un buen ejemplo de esta configuracin es el Procesador
Cientfico Burroughs (BSP).
En este tipo de configuracin existen n PEs y p mdulos de memoria.
Ambos nmeros no son necesariamente iguales.
III.1.2 Estructura interna de un PE
En la Fig. 5.5 graficamos la estructura interna de un elemento de
procesamiento:
Di indica la direccin asignada a este elemento de procesamiento.
Si indica si este procesador est o no activo para realizar un cierto clculo.
Ii es un registro ndice.
Ri es el registro que apunta a otros procesadores
Formalmente un procesador SIMD se caracteriza por el siguiente conjunto
de par- metros:
C = { N, F, I, M } siendo
N = el nmero de procesadores.
F = el conjunto de funciones de ruteo de datos previstos por la red de
interconexin.
I = el conjunto de instrucciones para las operaciones escalares vectoriales,
de ruteo de datos y manejo de la red y M = conjunto de mscaras que
habilitan o deshabilitan a los procesadores.
para k = 1,2,.....,n-1
Cuanto ms lejos se extienden las operaciones de ruteo cada vez menos PEs
son los intervinientes. Ntese que en el paso 1 PE(7) recibe pero no
transmite; en el paso 2 son los PE(6) y PE(7); en tanto que en el paso 3 son
los PE(4), PE(5), PE(6) y PE(7) los que reciben solamente.
Estos PEs que no se desea que transmitan son enmascarados durante el
paso correspondiente.
Durante las operaciones de suma PE(0) permanece inhibido en el paso 1;
PE(0) y PE(1) se vuelven inactivos en el paso 2; en tanto que en el paso 3 los
PE(0), PE(1), PE(2) y PE(3) son inactivos.
Los PEs que son enmascarados en cada paso dependen de la operacin
(ruteo de datos o suma aritmtica) que se realice.
Aun as los patrones de enmascaramiento varan en los diferentes ciclos de la
operacin.
Ntese que las operaciones de ruteo y enmascaramiento pueden ser mucho
ms complejas cuando la longitud del vector es n N.
Un array de PEs es una unidad aritmtica pasiva esperando ser invocada
para las tareas de cmputo paralelo.
III.1.4 Procesadores Array de estructura Bit-Plane
Una variante de las arquitecturas de procesadores array utiliza una gran
cantidad de procesadores de un bit. En las arquitecturas bit-plane los
procesadores array se colocan en una grilla (mesh) simtrica (por ej. de 64
*64) y se asocian con mltiples planos de bits en memoria que se
corresponden a las dimensiones de la grilla de procesadores (ver Fig. 5.7).
El procesador n (Pn) situado en la grilla en la posicin (x,y) opera sobre los
bits de memoria ubicados en la posicin (x,y) en todos los planos de memoria
asociados.
Usualmente se proveen adems operaciones del tipo de copia, enmascarado
y operaciones aritmticas que operan sobre todos los planos de memoria
tanto sobre columnas como sobre filas.
El Procesador Masivo Paralelo de Loral y el Procesador Array Distribuido de
ICL ejemplifican esta clase de arquitecturas utilizadas muy frecuentemente
para aplicaciones de procesamiento de imgenes mapeando pixels desde la
estructura planar de la memoria.
La Mquina de Conexin de Thinking Machine tiene organizada la memoria
como 65.536 procesadores de un bit en conjuntos de a cuatro procesadores
unidos en una topologa de hipercubo.
verse
como
Los arrays sistlicos son ms baratos de construir que los otros arrays
debido a la profusa repeticin de un pequeo nmero de mdulos bsicos
y sencillos y debido a la alta densidad y eficiencia de sus layouts.
El diseo modular de los arrays sistlicos permite que aquellos
diseadores que desean armar rpida- mente prototipos puedan valerse
de dispositivos comunes (off-the-shelf), tales como microprocesadores,
unidades de aritmtica de punto flotante y chips de memoria.
Sin embargo, estas partes no fueron diseadas para implementaciones de
arrays sistlicos y pueden por consiguiente ser inadecuadas para cumplir
los requerimientos del diseo.
Esto desemboc en el desarrollo de "bloques universales de construccin"
que son chips que pueden utilizarse para muchos arrays sistlicos.
Algunos chips comercialmente disponibles de este tipo que merezcan esta
definicin incluyen al Transputer INMOS, al TI TMS32010 y TMS32020, el
chip de dataflow NEC PD 7281, etc.
Los problemas que implica el uso de bloques de construccin
programables incluyen el desarrollo de herramientas de programacin de
ayuda a los diseadores y la provisin de un soporte para interconexiones
flexibles.
3.1.7.8 Integracin en sistemas existentes
A pesar de que los arrays sistlicos proveen una alta performance, su
integracin dentro de sistemas ya existentes es no trivial debido al amplio
bandwidth de E/S que se produce, sobre todo cuando el problema debe
ser particionado y los datos de entrada deben ser accedidos
repetidamente.
Los problemas adicionales que deben resolverse en aquellos sistemas que
cuentan con gran cantidad de arrays sistlicos incluyen la interconexin
con el host, el subsistema de memoria que soporte los array sistlicos, el
bufferizado y el acceso a datos para obtener la distribucin especial de
datos de E/S, y la multiplexacin y desmultiplexacin de datos cuando son
insuficientes las puertas de E/S.
o Alta precisin
Clculos repetitivos de punto flotante sobre grandes arrays
de nmeros
Supercomputadores manejas estos problemas
o Cientos de millones de flops
o Muy costosos ($10-15 millones USD)
o Optimizados para clculo
o Multitarea, I/O NO prioritarios (SI en mainframes)
o Mercado limitado
I+D, gobierno, meteorologa
Registros vectoriales
o Banco de memoria de largo fijo almacena un nico vector
o Tpicamente 8-32 registros vectoriales (1-8 Kbits)
o Al menos 2 puertos de lectura y 1 de escritura
o Se pueden ver como elementos de 64b, 32b, 16b, 8b
Unidades funcionales vectoriales (FUs)
o En pipeline, arrancan una operacin por ciclo
o Tpicamente 2 a 8 FUs: enteros y PF
Unidades vectoriales load-store (LSUs)
o En pipeline, load/store de vectores
o Se leen/escriben mltiples elementos por ciclo
o Pueden tener mltiples LSUs
Cross-bar para interconexin de FUs , LSUs, registros
IV.
Motivacin
o Baja performance de procesamiento mmedia en GPPs
o Costo y poca flexibilidad de ASICs especializados para
grficos/video
o Infrautilizacin de datapaths y registros
Idea bsica : sub-word parallelism
o Tratar un registro de 64-bit como un vector de 2x32-bit,
4x16-bit o 8x8-bit (short vectors)
Particin de datapaths de 64 bit para manejar mltiples operaciones
angostas en paralelo
Restricciones iniciales
o No agregar rea (registros)
o No agregar excepciones
V. FUNCIONES Y APLICACIONES
V.1
Funciones SIMD
V.2
Aplicaciones
VI. EJEMPLO
VI.1 Ejemplo de Procesador Array
Se desea evaluar los polinomios :
Yj = i Wi * Xi+j-1
; para j de 1 a
o sea :
Y1 = W1 * X1 + W2 * X2 + W3 * X3
Y2 = W1 * X2 + W2 * X3 + W3 * X4
Y3 = W1 * X3 + W2 * X4 + W3 * X5
..... etc .....
Se propone que cada procesador haga la siguiente funcin:
0 + W1*X2
+ W3*X1
(1)
W1*X1 + W2*X2
W2*X1 + W3*X2
(2)
0 + W1*X3
W1*X2 + W2*X3
(3)
0 + W1*X4
W1*X3 + W2*X4
(4)
0 + W1*X5
W1*X4 + W2*X5
(5)
....
.....
+ W2*X1
.............
a11 a12
B=
b11 b12
A*B=C=
c11 c12
a21 a22
b21 b22
c21 c22
ii)
Instante t2
iii)
Instante t3
iv)
Instante t4
v)
Instante t5