Anda di halaman 1dari 19

ARQUITECTURA DE COMPUTADORES I

Curso 2011/2012
Tema 5: Procesadores Vectoriales
Leccin 19: Problemas en el Procesamiento Vectorial
y Medida del Prestaciones
Arquitectura de Computadores I. Tema 5. Leccin 19 2
Bibliografa
1. J. L. HENNESSY and D. A. PATTERSON.
Computer Architecture. A Quantitative Approach,
Morgan Kaufmann, 3
rd
edition, 2003.

2. D. SIMA and T. FOUNTAIN, and P. KACSUK.
Advanced Computer Architectures: A Design Space Approach,
Addison Wesley, 1997.

3. K. HWANG.
Advanced Computer Architecture: Parallelism, Scalability, Programmability,
McGraw Hill, 1992.

4. J. ORTEGA, M. ANGUITA y A. PRIETO.
Arquitectura de Computadores,
Thomson, 2004.
Arquitectura de Computadores I. Tema 5. Leccin 19 3
Tema 6. Procesadores Vectoriales
1. Introduccin: Motivacin y Nota Histrica

2. Principio, Espacio de Diseo y Prestaciones Generales

3. El Sistema de Memoria

4. Medida de Prestaciones de los Procesadores Vectoriales
[Ortega 6.4; Hennessy G.2]

5. Problemas en el Procesamiento Vectorial y Soluciones

Arquitectura de Computadores I. Tema 5. Leccin 19 4
a2
a1
a3
a4
b2
b1
b3
b4
a1+b1
a2+b2
a3
b3
a4
b4
a5
b5
a6
b6
a7
b7
a8
b8
K componentes
Registros
Vectoriales
Cauce Vectorial
TLI
TPC
TLI : Tiempo de Acceso al primer
componente (Ta)
TPC : Tiempo
de Acceso a
los restantes
componentes
( t )
Memoria
Registro Vectorial
Registro Vectorial
Prestaciones de un Procesador Vectorial (I): TLI, TPC, K
Arquitectura de Computadores I. Tema 5. Leccin 19 5
TCV : Tiempo para completar una operacin vectorial
TCV = TLI + (K * TPC)
TLI : Tiempo de Latencia de Inicio (Start-up time)
K : Componentes del operando vectorial
TPC : Tiempo por Componente una vez generada la primera

CPR : Ciclos de reloj por resultado
CPR = TCV (en ciclos) / K
Prestaciones de un Procesador Vectorial (II)
Arquitectura de Computadores I. Tema 5. Leccin 19 6
Prestaciones de un Procesador Vectorial (III)
Factores que determinan el valor de TLI
1. En las operaciones con registros: es el nmero de etapas de la unidad
funcional (ms el tiempo de lectura/escritura en los registros)
2. En las cargas desde memoria (LOADs): es el tiempo que tarda en obtenerse
la primera componente desde memoria
3. En los almacenamientos en memoria (STOREs): slo se tienen en cuenta si
debe completarse el almacenamiento antes de iniciar otra operacin (LOAD, por
ejemplo)

Factores que determinan el valor de TPC
1. En las operaciones con registros: depende de la frecuencia con la que la
unidad funcional pueda aceptar datos (anlogo al MLM en un cauce
segmentado).
2. En las operaciones con memoria: depende de la disposicin de los datos en
la memoria (entrelazada) y de su organizacin.
Arquitectura de Computadores I. Tema 5. Leccin 19 7
V0 = Load(Memoria) (TLI=7)
V2 = V0 + V1 (TLI=3)
V3 = V1 < A3 (TLI=4)
V5 = V3 ^ V4 (TLI=2)
Prestaciones de un Procesador Vectorial (IV):
Encadenamiento de Cauces
Memoria
Carga
Suma
Desplaz.
Producto
Lgico
V0 V1 V2 V3 V4 V5
Arquitectura de Computadores I. Tema 5. Leccin 19 8
Si se espera que termine una operacin vectorial para que empiece otra
Si se encadenan los cauces de las distintas operaciones
TCV = TLI(carga)+TLI(suma)+TLI(desplaz.)+TLI(Prod.Log)+4*K
TCV = TLI(carga)+TLI(suma)+TLI(desplaz.)+TLI(Prod.Log)+K
Prestaciones de un Procesador Vectorial (V):
Encadenamiento de Cauces
Arquitectura de Computadores I. Tema 5. Leccin 19 9
Medidas del Rendimiento Vectorial
R
k
: Operaciones por unidad de tiempo para un vector de k componentes (MFLOPS)
R
k
= (Operaciones Vectoriales Ejecutadas * k ) / T
k
T
k
: Tiempo de ejecucin de las instrucciones vectoriales con vectores de k
componentes
R
inf
: Operaciones por unidad de tiempo para un vector de longitud infinita
R
inf
= lim
k infinito
R
k
N
1/2
:Nmero de componentes que debe tener un vector para que se verifique que
R
N1/2
= (1/2) * R
inf
W
k
: Productividad (Throughput o Rendimiento)
W
k
= k / T
k
E : Eficiencia vectorial
E = R
k
/ R
inf

E = (R
k
/ R
inf
) = Operaciones*( k / T
k
) / R
inf
= Operaciones*(W
k
/ R
inf
)

Arquitectura de Computadores I. Tema 5. Leccin 19 10
Prestaciones de un Procesador Vectorial (VI): Ejemplos
For i=1 to n do
Y(i) = Y(i) + a * X(i)
LV V0,X
LV V1,Y
MULV V2,V0,R0
ADDV V3,V2,V1
SV Y,V3
n < MVL
Arquitectura de Computadores I. Tema 5. Leccin 19 11
Tema 6. Procesadores Vectoriales
1. Introduccin: Motivacin y Nota Histrica

2. Principio, Espacio de Diseo y Prestaciones Generales

3. El Sistema de Memoria

4. Medida de Prestaciones de los Procesadores Vectoriales

5. Problemas en el Procesamiento Vectorial y Soluciones
[Ortega 6.5; Hennessy G.3, G.4]
1. Sentencias de Ejecucin Condicional
2. Control de la Longitud del Vector
Arquitectura de Computadores I. Tema 5. Leccin 19 12
Sentencias de Ejecucin Condicional
Las sentencias de ejecucin condicional (sentencias if) limitan bastante el paralelismo
que se puede alcanzar al vectorizar un bucle. Ninguna de las tcnicas anteriores
permite vectorizar el siguiente bucle:
do 10 i = 1,64
if (A(i).ne. 0) then
A(i) = A(i) B(i)
10 continue
Si se permite que el bucle se ejecuten slo las iteraciones en las que A(i)0,
entonces s se podra vectorizar.
Las sentencias condicionales se pueden transformar en dependencias de datos,
facilitando la paralelizacin. Para ello, la implementacin ms usada es un vector
mscara de control
Este vector tiene MVL bits. Si en su posicin i-sima se fija un 1 se permitir la
ejecucin de la siguiente operacin vectorial en el elemento i de los vectores. El 0 se
usar en caso contrario
Arquitectura de Computadores I. Tema 5. Leccin 19 13
lv v1, ra ; cargo A
lv v2, rb ; cargo B
l.d f0, #0 ; f0 <- 0
snevs.d v1, f0 ; vm(i) <- 1 si v1(i)!=f0
subv.d v1, v1, v2 ; resta condicionada
cvm ; vm <- (1111 1111)
sv ra, v1 ; almaceno en A
Slo se opera con los elementos
de v1 en los que la mscara vale
1, el resto permanecen igual
do 10 i = 1,64
if (A(i).ne. 0) then
A(i) = A(i) B(i)
10 continue
La mscara se crea con una
sentencia de comparacin
Resetamos la mscara para la
siguiente operacin vectorial
Sentencias de Ejecucin Condicional (II)
Arquitectura de Computadores I. Tema 5. Leccin 19 14
Control de la Longitud del Vector (I)
El nmero de componentes del vector no tiene que coincidir con el nmero de componentes de
los Registros Vectoriales de la Mquina (MVL, Maximum Vector Length)
En algunos casos, adems, puede ocurrir que la longitud del vector (n) no se conozca en el
momento de la compilacin (cuando se vectoriza cdigo)
do 10 i = 1,n
10 Y(i) = a*X(i) + Y(i)
La solucin a este problema es aadir un registro nuevo al procesador:
VLR: Registro de longitud del vector (Vector Length Register)
Puede tomar cualquier valor menor que MVL
Si el vector es menor que MVL podremos procesarlo entero, sin embargo, si es mayor,
tendremos que trocear el vector en partes de longitud menor o igual que MVL
Esta tcnica se conoce como Strip Mining y consiste en cambiar el bucle original por dos
bucles anidados, de forma que el bucle interno procese trozos del vector de un tamao menor
que MVL para que se puedan ejecutar en las unidades vectoriales
Arquitectura de Computadores I. Tema 5. Leccin 19 15
low = 1
VL = (n mod MVL) /* Trozo de resto */
do 1 j = 0, (n / MVL) /* Bucle externo */
do 10 i = low, low + VL 1 /* VL iteraciones */
Y(i) = a*X(i) + Y(i) /* Operacion a realizar */
10 continue
low = low + VL /* Siguiente vector */
VL = MVL /* VL = max. Long. de vector */
1 continue
Trozo que se vectoriza
(este bucle desaparece)
MVL: Tamao de los registros vectoriales
(nmero mximo de componentes del trozo)
do 10 i = 1,n
10 Y(i) = a*X(i) + Y(i)
Strip Mining
Valor de j:
Rango de i:
0 1 2 3 n/MVL
1 .. m (m+1) ..
m + MVL
(m+MVL+1)
.. m + 2*MVL
(m+2*MVL+1)
.. m + 3*MVL
(n MVL+1)
.. n
Control de la Longitud del Vector (II) : Strip Mining
Arquitectura de Computadores I. Tema 5. Leccin 19 16
Asumimos:
rn n
rx Direccin de X
ry Direccin de Y
fa a
MVL = 64
La memoria se direcciona por bytes
Los elementos son flotantes de 8 bytes
low = 1
VL = (n mod MVL) /* Trozo de resto */
do 1 j = 0, (n / MVL) /* Bucle externo */
do 10 i = low, low + VL 1 /* VL iteraciones */
Y(i) = a*X(i) + Y(i) /* Operacion a realizar */
10 continue
low = low + VL /* Siguiente vector */
VL = MVL /* VL = max. Long. de vector */
1 continue
andi r1, rn, #63 ; n mod 64
mtc1 vlr, r1 ; vlr <- resto
dsll r2, r1, #8 ; bytes resto
daddui r3, r0, #64 ; MVL
loop: lv v1, rx ; cargo X
lv v2, ry ; cargo Y
mulvs.d v3, v1, fa ; X <- a*X
addv.d v2, v3, v2 ; Y <- a*X + Y
sv rx, v2 ; almaceno Y
daddu rx, rx, r1 ; dir. sig. trozo
daddu ry, ry, r1 ; dir. sig. trozo
dsubu rn, rn, r1 ; resto los procesados
daddui r1, r0, #512 ; tam. resto trozos
mtc1 vlr, r3 ; vlr <- MVL
bnez rn, loop ; salto si quedan
Control de la longitud del vector (III): Strip Mining
Arquitectura de Computadores I. Tema 5. Leccin 19 17
Rendimiento de un Bucle Vectorial
Low=1
VL= (n mod MVL) /* Trozo de resto */
do 1 j=0,(n/MVL) /* Bucle externo */
do 10 i=low,low+VL-1 /* VL iteraciones */
Y(i)=a*X(i)+Y(i) /* Operacion a realizar */
10 continue
low=low+VL /* Siguiente vector */
VL = MVL /* VL = max. Long. Vec*/
1 continue
T
BASE
: Tiempo consumido por las
operaciones escalares
T
BUCLE
: Tiempo asociado al control del
bucle (externo)
TLI: Tiempo de inicio aparente de la
secuencia de operaciones vectoriales
(bucle interno)
TPC: Tiempo aparente necesario para
producir un resultado
K: Componentes del Vector
TPC K ) TLI T (
MVL
K
T T
BUCLE BASE K
) TPC ) MVL mod K ( TLI T ( ) TPC MVL TLI T ( ) 1
MVL
K
( T T
BUCLE BUCLE BASE K
)) MVL mod K ( ) 1
MVL
K
( MVL ( TPC ) TLI T (
MVL
K
T
BUCLE BASE
K
Arquitectura de Computadores I. Tema 5. Leccin 19 18
TPC K ) TLI T (
MVL
K
T T
BUCLE BASE K
MVL 2MVL 3MVL
Depende del Hardware y
del Compilador
Depende del
Hardware
Tiempo por elemento
Overhead por elemento
TPC
K
) TLI T (
MVL
K
T
K / T
BUCLE BASE
K
K
) TLI T (
MVL
K
T
K / O
BUCLE BASE
K
TPC
Rendimiento de un Bucle Vectorial (II)
Arquitectura de Computadores I. Tema 5. Leccin 19 19
Para ampliar
Pginas Web:
http://www.top500.org/
http://www.es.jamstec.go.jp/esc/eng/outline.html

Artculos de Revistas y Libros:
HWANG, K.: Advanced Computer Architecture. Parallelism, Scalability,
Programmability. McGraw Hill, 1993 [Captulo 8, 8.1-8.4]
HWANG, K.; BRIGGS, F.A.: Arquitectura de Computadoras y Procesamiento
Paralelo. McGraw Hill, 1988. [Captulos 3 y 4]
LUBECK, O.; MOORE, J.; MENDEZ, R.: A benchmark comparison of three
supercomputers: Fujitsu VP-200, Hitachi S810/20, and Cray X-MP/2. IEEE
Computer, 18:1, pp.10-29. Enero, 1985.
PADUA, D.; WOLFE, M.: Advanced Compiler Optimizations for
Supercomputers. Comm. Of the ACM, 29:12, pp.1184-1201. Diciembre,
1986.
JORDAN, K.E.: Performance Comparison of Large-Scale Scientific Computers:
Scalar mainframes with vector facilities and supercomputers. IEEE Computer,
20:3, pp.10-23. Marzo, 1987.

Anda mungkin juga menyukai