Con registros vectoriales

Transcripción

Con registros vectoriales
U NIDAD T EM ÁTICA 2: C OMPUTADORES VECTORIALES .
13. Computadores vectoriales segmentados.
14. Computadores SIMD.
13-1
T EMA 13: C OMPUTADORES VECTORIALES SEGMENTADOS .
1. Caracterı́sticas del procesamiento vectorial.
2. Arquitectura vectorial segmentada.
3. Control de la longitud de los vectores.
4. Ejecución de instrucciones vectoriales.
5. Modos de acceso regular-no secuencial y disperso.
6. Sentencias de ejecución condicional.
7. Evaluación de las prestaciones de los computadores vectoriales.
Bibliografı́a:
S. Dasgupta, Computer Architecture: A Modern Synthesis, Volume 1: Foundations, John Wiley & Sons, 1989 .
J.L. Hennessy & D. A. Patterson. Computer Architecture: A Quantitative Approach 2a y 3a ed., Morgan Kauffman Publishers, 1996 y 2002.
Departamento de Informática de Sistemas y Computadores (DISCA)
Facultad de Informática de Valencia
13-2
1 CARACTERÍSTICAS DEL PROCESAMIENTO VECTORIAL.
1. Caracterı́sticas del procesamiento vectorial.
Procesamiento vectorial
Muchos problemas que requieren altas potencias de cálculo acceden a grandes estructuras de datos:
Repiten el mismo procesamiento a todas las componentes de la estructura.
La localidad de acceso a memoria es distinta a la de los computadores convencionales: las antememorias no ocultan el tiempo de acceso a memoria.
⇒ Computadores vectoriales: máquinas que incluyen instrucciones máquina que
operan sobre vectores (estructuras lineales de números)
Una instrucción vectorial → sustituye un bucle de instrucciones escalares.
~ := X
~ +Y
~ , con vectores de 64 elementos.
Ejemplo: Z
; Escalar
...
DADD R4,Rx,#512
loop: L.D F2,0(Rx)
L.D F4,0(Ry)
ADD.D F6,F2,F4
; Dep. datos
S.D F6,0(Rz)
; Dep. datos
DADD Rx,Rx,#8
; Sobrecarga
DADD Ry,Ry,#8
; Sobrecarga
DADD Rz,Rz,#8
; Sobrecarga
DSUB R20,R4,Rx
; Sobrecarga
BNEZ R20,loop
; Sobrecarga y dep. Control
⇓
; Vectorial
LV V1,Rx
LV V2,Ry
ADDV V3,V1,V2
SV Rz,V3
13-3
1 CARACTERÍSTICAS DEL PROCESAMIENTO VECTORIAL.
Caracterı́sticas del procesamiento vectorial:
1. En cada instrucción vectorial, el cálculo de cada componente del vector resultado es independiente del resto de componentes → reducci ón del número
de dependencias de datos.
Escalar
Vectorial
1 componente → 2 dependencias 1 programa → 2 dependencias
2. Una instrucción vectorial supone gran cantidad de trabajo → reducci ón del
cuello de botella de Flynn (1 instrucción → 1 operación, con lo que se limita
el número máximo de instrucciones que se pueden lanzar en el mismo ciclo
de reloj).
Escalar
Vectorial
1 instrucción → 1 resultado 1 instrucción → 64 resultados
3. Una instrucción vectorial equivale a un bucle de instrucciones escalares, sin
la sobrecarga de las instrucciones de control de bucle, ni de los riesgos de
control.
Escalar
Vectorial
5*64 ciclos de sobrecarga 0 ciclos de sobrecarga
4. Una instrucción vectorial que accede a memoria tiene un patr ón de acceso
conocido a priori → las organizaciones de memoria de m últiples módulos
funcionan muy bien, sin intervención de una antememoria.
Módulo 0
R
Módulo 1
R
DATOS DIRECCIONES
Dirección 0
MSB
MUX
n–m
Módulo M–1
R
m
DIRECCIONES
Dirección 2
Módulo M-1
...
Lectura 0
Lectura 1
...
Lectura 2
Módulo 1
Lectura 0
Lectura 1
Lectura 2
Módulo 0
Lectura 0
Lectura 1
Lectura 2
DATOS
R/W
Dirección 1
tacc
2 ... M–1
Lectura 0
0 1
0
1 2 ... M–1
Lectura 1
0
1 2 ... M–1
Lectura 1
13-4
t
2 ARQUITECTURA VECTORIAL SEGMENTADA.
2. Arquitectura vectorial segmentada.
Hay dos tipos de máquinas con arquitectura del juego de instrucciones vectorial:
Computadores vectoriales segmentados → UAL segmentada en muchas etapas.
Computadores SIMD → múltiples UAL.
Tipos de computadores vectoriales segmentados
Criterio: ¿dónde están los operandos vectoriales de las instrucciones aritméticas?
1. Con registros vectoriales. En los registros vectoriales, con instrucciones
para cargarlos/almacenarlos desde/en memoria.
Ventajas: Si se reutilizan los operandos vectoriales, s ólo se sufre una vez el
acceso a memoria. Los resultados vectoriales temporales no sufren el acceso
a memoria.
Inconvenientes: El tamaño de los registros vectoriales limita el tamaño de los
operandos vectoriales.
2. Memoria-memoria. En la memoria principal.
Ventajas: Tamaño de los operandos vectoriales ilimitado.
Inconvenientes: Todas las instrucciones sufren el acceso a memoria.
⇒ la mayorı́a de máquinas son con registros vectoriales.
Estructura de un computador vectorial segmentado con registros
vectoriales
Memoria
principal
Control de
memoria
vectorial
Procesador
escalar
Registros
vectoriales
U.A.L.
segmentada
Controlador
vectorial
13-5
2 ARQUITECTURA VECTORIAL SEGMENTADA.
Tiempo de ejecución de una instrucción vectorial
Idealmente: t ≈ nTe , siendo Te el no de ciclos de reloj por resultado.
Realmente: t = Tarranque + nTe , siendo:
Tarranque : No de ciclos de reloj necesarios para obtener el primer resultado en
la salida del operador.
• Instrucción de carga/almacenamiento: Tarranque = Tiempo de acceso a
un módulo.
• Instrucción aritmética: Tarranque = Latencia del operador (no de etapas
de segmentación).
Te : No de ciclos de reloj por resultado, a partir del primero.
• Instrucción de carga/almacenamiento: Te = Ciclos de reloj por acceso
(inversa del ancho de banda de la memoria o bus) ≈ 1 ciclo de reloj.
• Instrucción aritmética: Te = Ciclos de reloj por componente (inversa de
la tasa de iniciación) ≈ 1 ciclo de reloj.
Para maximizar la productividad, Tarranque debe ser despreciable frente al otro sumando → n ↑.
Formato de las instrucciones vectoriales
Código de operación. Tipos de operaciones vectoriales:
• V ←V ×V
• V ←V ×S
• S ← V × V (reducción vectorial)
• S ← V (reducción vectorial)
• Carga y almacenamiento.
Operandos. 3 direcciones: 2 fuentes y 1 destino.
• Registros vectoriales: No de registro.
• Carga y almacenamiento: Origen del vector en memoria y secuencia de
acceso (ver página 12).
13-6
2 ARQUITECTURA VECTORIAL SEGMENTADA.
Ejemplo de computador vectorial segmentado: DLXV
Caracterı́sticas:
1. Procesador escalar: DLX, muy parecido al MIPS.
2. 8 registros vectoriales de 64 componentes (números en coma flotante de doble
precisión).
Cada registro vectorial tiene dos puertos de lectura y uno de escritura → 16
puertos de lectura y 8 de escritura en total.
3. 5 unidades funcionales vectoriales: Suma/resta flotante, multiplicaci ón flotante,
división flotante, operaciones enteras y operaciones l ógicas.
Todas las unidades están completamente segmentadas (Latencia media = 1).
4. 1 unidad de carga/almacenamiento vectorial. El subsistema de memoria est á compuesta por varios módulos.
5. Registros escalares: 32 registros enteros y 32 registros de coma flotante (los
del DLX), y 2 registros especiales.
Juego de instrucciones:
1. Instrucciones aritméticas:
ADDV Vi,Vj,Vk
V~i
ADDSV Vi,Fj,Vk
V~i
SUBV Vi,Vj,Vk
V~i
SUBSV Vi,Fj,Vk
V~i
SUBVS Vi,Vj,Fk
V~i
MULTV Vi,Vj,Vk
V~i
MULTSV Vi,Fj,Vk V~i
DIVV Vi,Vj,Vk
V~i
DIVSV Vi,Fj,Vk
V~i
DIVVS Vi,Vj,Fk
V~i
← V~j + V~k
← Fj + V~k
← V~j − V~k
← Fj − V~k
← V~j − Fk
← V~j ∗ V~k
← Fj ∗ V~k
← V~j ÷ V~k
← Fj ÷ V~k
← V~j ÷ Fk
2. Carga/almacenamiento:
LV Vi,Rj V~i ← M em[Rj ], M em[Rj + 8], . . .
SV Ri,Vj M em[Ri ], M em[Ri + 8], . . . ← V~j
13-7
3 CONTROL DE LA LONGITUD DE LOS VECTORES.
3. Control de la longitud de los vectores.
¿Cuál es el tamaño máximo de los vectores?
MVL (Maximum Vector Length): Tamaño de los registros vectoriales.
En el DLXV, MVL=64.
Procesamiento de pequeños vectores
El registro VLR (Vector Length Register) indica el n úmero de componentes
que realmente deben procesarse: 0 ≤ VLR ≤ MVL.
Hay instrucciones para leer/escribir el VLR:
VLR ← Ri: MOVI2S VLR,Ri
Ri ← VLR: MOVS2I Ri,VLR
Procesamiento de vectores de tamaño mayor que MVL
Técnica del seccionamiento o strip-mining: Descomponer la operaci ón vectorial
real de tamaño n > MVL en:
Una sección de tamaño (n mod MVL)
(n div MVL) secciones de tamaño MVL
~ +Y
~
Ejemplo. Bucle DAXPY: Y~ := aX
El código:
for i := 0 to n-1 do
Y[i] := a*X[i] + Y[i]
se transforma en:
low := 0;
VL := n mod MVL;
for j := 0 to (n div MVL) do begin
for i := low to low+VL-1 do
Y[i] := a*X[i] + Y[i]
low := low+VL;
VL := MVL;
end;
Rango de i 0
Desde
0
Hasta
m−1
(m = n mód M V L)
Valores de j
1
2
m
m + MV L
m + M V L − 1 m + 2M V L
...
...
...
n div M V L
n − MV L
n−1
13-8
4 EJECUCIÓN DE INSTRUCCIONES VECTORIALES.
4. Ejecución de instrucciones vectoriales.
Los computadores vectoriales segmentados disponen de varios operadores
→ pueden haber en ejecución múltiples operaciones vectoriales.
Ejemplo:
1 7
MULTV V0,V1,V2
64
D
16
ADDV V3,V1,V4
64
D
1 20
DIVV V5,V6,V7
64
D
Riesgos estructurales entre operaciones vectoriales
Dos instrucciones no pueden utilizar la misma unidad aritmética.
Ejemplo:
1 7
MULTV V0,V1,V2
64
D
16
ADDV V3,V1,V4
64
D
7
1
MULTV V5,V6,V7
64
D
El número de puertos de lectura y escritura de los registros vectoriales está limitado.
Ejemplo:
1 7
MULTV V0,V1,V2
16
ADDV V3,V1,V4
64
D
1
DIVV V5,V1,V7
64
D
20
64
D
13-9
4 EJECUCIÓN DE INSTRUCCIONES VECTORIALES.
Riesgos de datos entre operaciones vectoriales
Si consideramos como objeto de almacenamiento el vector completo, en caso de
riesgo hay que retrasar la operación vectorial hasta que haya finalizado completamente la operación precedente.
RAW.
Ejemplo:
1 7
MULTV V1,V2,V3
64
D
1
ADDV V4,V1,V5
6
64
D
t =1+7+64+6+64=142 ciclos.
WAW. Si sólo hay 1 puerto de escritura, el riesgo estructural impide la formación del riesgo WAW. Si hay mas de un puerto de escritura, el riesgo se
resuelve retrasando la segunda operación vectorial (¿interesa tener más de 1
puerto de escritura?).
Ejemplo:
1 20
DIVV V1,V2,V3
64
D
1
ADDV V1,V4,V5
6
64
D
WAR. Si consideramos como objeto de almacenamiento cada una de las componentes del vector, no hay problema alguno.
Ejemplo:
R0
1 20
DIVV V0,V1,V2
D
1 6
ADDV V1,V4,V5
64
64
D
W0
13-10
4 EJECUCIÓN DE INSTRUCCIONES VECTORIALES.
Técnica del encadenamiento de operaciones vectoriales
Si consideramos como objeto de almacenamiento cada una de las componentes del
vector, en caso de riesgo hay que retrasar la operación vectorial hasta que la operación precedente haya completado el primer resultado → se “encadenan” las operaciones vectoriales con riesgos.
RAW. Ejemplo:
W0
1 7
MULTV V1,V2,V3
64
D
1
ADDV V4,V1,V5
6
64
D
R0
t =1+7+6+64=78 ciclos.
WAW. Ejemplo:
W0
1 20
DIVV V1,V2,V3
64
D
1
ADDV V1,V4,V5
6
64
D
W0
Generalización de la técnica del encadenamiento
Dadas dos instrucciones vectoriales entre las que hay un riesgo RAW o WAW, la 2 a
instrucción puede leer (caso RAW) o escribir (caso WAW) la componente j siempre
que la 1a haya completado hasta la componente i, siendo i ≥ j.
Ejemplo:
W0
1 7
MULTV V1,V2,V3
...
ADDV V4,V1,V5
64
D
1
6
64
D
R0
13-11
5 MODOS DE ACCESO REGULAR-NO SECUENCIAL Y DISPERSO.
5. Modos de acceso regular-no secuencial y disperso.




 Secuencial


 Regular
No secuencial

Modos de acceso =


Bloques



Irregular o disperso
Modo de acceso regular-no secuencial
MEMORIA
B
d
REGISTRO
VECTORIAL
Parámetros: Dirección base B, distancia o stride entre accesos d
Ejemplo: Acceso a la columna de una matriz almacenada por filas.
El modo de acceso regular secuencial se obtiene haciendo d = 1 palabra.
Instrucciones DLXV para el acceso regular-no secuencial
LVWS Vi,Rj,Rk Vi [p] ← M em[Rj + (p ∗ Rk )], p = 0.,63
SVWS Ri,Rj,Vk M em[Ri + (p ∗ Rj )] ← Vk [p], p = 0.,63
Rk contiene el stride en bytes.
13-12
5 MODOS DE ACCESO REGULAR-NO SECUENCIAL Y DISPERSO.
Modo de acceso por bloques
MEMORIA
B
s
b
REGISTRO
VECTORIAL
Parámetros: Dirección base B, distancia entre accesos s, tamaño del bloque accedido b.
El DLXV no incluye instrucciones para el modo regular por bloques.
Modo de acceso disperso
En este modo hay que indicar explı́citamente las componentes del vector que se
desean acceder:
1. Asociando al operando vectorial un vector de bits.
2. Asociando al operando vectorial un vector de ı́ndices.
13-13
5 MODOS DE ACCESO REGULAR-NO SECUENCIAL Y DISPERSO.
Modo de acceso disperso basado en vectores de bits
Un operando vectorial V tiene asociado un vector de bits BV de igual n úmero de
componentes, de tal forma que
hay que acceder Vi si BVi = 1.
OPERANDO
VECTORIAL
B
1
0
0
1
1
0
1
0
1
1
0
0
1
0
0
0
n
El vector de bits tiene un tamaño igual al
número total de componentes del vector
(e independiente de las que se deseen acceder).
VECTOR
DE BITS
m
1
Parámetros: Dirección base B, vector de bits BV
Modo de acceso disperso basado en vectores de ı́ndices
Un operando vectorial V tiene asociado un vector de ı́ndices IV , el cual contiene
los ı́ndices de las componentes que hay que acceder. Por tanto,
hay que acceder Vi si ∃j/IV [j] = i.
OPERANDO
VECTORIAL
B
0
3
4
6
8
9
12
n
El vector de ı́ndices tiene un tamaño igual
al número de componentes que hay que
acceder.
VECTOR
INDICES
log2 n
m
Parámetros: Dirección base B, vector de ı́ndices IV
13-14
5 MODOS DE ACCESO REGULAR-NO SECUENCIAL Y DISPERSO.
Instrucciones DLXV para el modo de acceso disperso
Solamente basadas en la utilización de vectores de ı́ndices:
Compresión (gather): Dado un operando vectorial en memoria y un vector de
ı́ndices, carga en un registro vectorial sólo las componentes indicadas (como
desplazamiento en bytes) por el vector de ı́ndices.
LVI Vi,Rj,Vk Vi [p] ← M em[Rj + Vk [p]], p = 0.,63
MEMORIA
VECTOR
DE INDICES
REGISTRO
VECTORIAL
0
24
32
48
64
72
96
Expansión (scatter): Operación inversa de la compresión.
SVI Ri,Vj,Vk M em[Ri + Vj [p]] ← Vk [p], p = 0.,63
REGISTRO
VECTORIAL
VECTOR
DE INDICES MEMORIA
0
24
32
48
64
72
96
13-15
5 MODOS DE ACCESO REGULAR-NO SECUENCIAL Y DISPERSO.
Ejemplo:
Dado el código en alto nivel:
for i := 0 to n-1 do
A[K[i]] := A[K[i]]+C[M[i]]
⇓
LV Vk,Rk
LVI Va,Ra,Vk
LV Vm,Rm
LVI Vc,Rc,Vm
ADDV Va,Va,Vc
SVI Ra,Vk,Va
13-16
6 SENTENCIAS DE EJECUCIÓN CONDICIONAL.
6. Sentencias de ejecución condicional.
Problema:
Consideremos el fragmento de código:
...
for i := 0 to 63 do
if A[i] <> 0 then A[i] := A[i] - B[i];
...
El bucle no puede “vectorizarse” debido a que contienen una sentencia condicional.
Solución:
1. Añadir instrucciones de comparación vectorial al juego de instrucciones:
Realizan una comparación componente a componente de los operandos
vectoriales
Generan como resultado un vector de bits de igual tama ño que los operandos vectoriales.
La componente i del vector resultado es “1” si las componentes i de los
operandos vectoriales cumplen la condición, y viceversa.
2. Utilizar el resultado de las instrucciones de comparaci ón para procesar sólo
algunas componentes.
a) Modificando la unidad aritmética para enmascarar el procesamiento.
b) Generando un vector de ı́ndices con los ı́ndices de las componentes a
procesar.
13-17
6 SENTENCIAS DE EJECUCIÓN CONDICIONAL.
Instrucciones de comparación vectorial del DLXV:
S V Vi,Vj y S SV Fi,Vj
donde puede ser EQ,NE,GT,LT,GE,LE.
El resultado lo escriben sobre un registro implı́cito: VM (Vector Mask)
Instrucciones adicionales para la gestión de VM:
CVM: VM ← “11. . . 1”.
MOVF2S VM,Fi: VM ← Fi .
MOVS2F Fi,VM: Fi ← VM.
Implementación de condiciones compuestas:
Generar el VM para cada condición.
Guardar el VM.
Combinar los vectores de bits obtenidos.
Escribir el VM.
...
for i := 0 to 63 do
if ((A[i]>0)and(B[i]<5)) then ...
...
⇓
LV V1,Ra
LD F0,cero(R0)
SLTSV F0,V1
MOVS2F F10,VM
LV V2,Rb
LD F0,cinco(R0)
SGTSV F0,V1
MOVS2F F12,VM
; Obtener F10 =
MOVF2S VM,F10
...
; cero contiene ‘‘0’’
; VM[i]=1 si F0<V1[i]
; F10(F11)=VM
; cinco contiene ‘‘5’’
; VM[i]=1 si F0>V1[i]
; F12(F13)=VM
F10 and F12
; VM=F10(F11)
13-18
6 SENTENCIAS DE EJECUCIÓN CONDICIONAL.
Enmascaramiento del procesamiento:
Aritmética enmascarada. Se efectua la operación real sobre las componentes cuyo
bit en el vector de máscara es un “1”.
VM
⇒ Hay que modificar la unidad aritmética.
...
for i := 0 to 63 do
if A[i] <> 0 then A[i] := A[i] - B[i];
...
⇓
LV V1,Ra
LV V2,Rb
LD F0,cero(R0) ; cero contiene ‘‘0’’
SNESV F0,V1
; VM := V1[i]<>0
SUBV V1,V1,V2 ; Sólo resta los i / V1[i]<>0
SV Ra,V1
Todas las componentes de los vectores operando se leen → no se reduce el tiempo
de ejecución.
El DLXV no tiene enmascaramiento del procesamiento.
13-19
6 SENTENCIAS DE EJECUCIÓN CONDICIONAL.
Utilización de los vectores de ı́ndices para implementar las
sentencias condicionales.
CVI Vi, Rj: Crear vector de ı́ndices a partir del VM:
Vi [p] := p ∗ Rj , p = 0.,63, sin incluir los p/V M [p] = 0
CVI V2,R1
POP Ri,VM:
R1
8
....48,40,32,24,16,8,0
V2 ...,48,24,16,0
VM ...01001101
Ri ← No “1” del VM
...
for i := 0 to 63 do
if A[i] <> 0 then A[i] := A[i] - B[i];
...
⇓
LV V1,Ra
LD F0,cero(R0) ; cero contiene ‘‘0’’
SNESV F0,V1
; VM contiene las componentes
; a procesar
ADD R1,R0,#8
; 8 bytes por flotante
CVI V2,R1
; V2 contiene los ı́ndices de
; las componentes a procesar
POP R1,VM
; R1= Num. de componentes a procesar
MOVI2S VLR,R1
LVI V3,(Ra+V2)
LVI V4,(Rb+V2)
SUBV V3,V3,V4
SVI (Ra+V2),V3
Comparación entre las dos implementaciones
(Sin considerar encadenamiento ni solapamiento entre instrucciones)
Aritmética enmascarada (página 19): t ≈ 5n + C1
Vectores de ı́ndices: t ≈ 4n + 4f n + C2, siendo f la fracción de componentes
que cumplen la condición.
→ si f < 25 % es mejor el método basado en vectores de ı́ndices.
13-20
7 EVALUACIÓN DE LAS PRESTACIONES VECTORIALES.
7. Evaluación de las prestaciones de los computadores
vectoriales.
Velocidad de pico
Dado un computador vectorial segmentado con p operadores segmentados, que funcionan a una frecuencia de reloj f :
pf
Vpico = p op/ciclo =pf resultados/s= 10
6 MFLOPS.
Problema: No es frecuente que todos los operadores estén en uso simultáneamente.
Evaluación de las prestaciones a partir de un bucle vectorial
Consideremos, por ejemplo, el bucle DAXPY:
n := ...;
low := 0;
VL := n mod MVL;
for j := 0 to (n div MVL) do begin
for i := low to low+VL-1 do
Y[i] := a*X[i] + Y[i]
low := low+VL;
VL := MVL;
end;
Instrucciones vectoriales: Tarranque + VL*Te
Aplicacion del strip-mining: Tbucle
Inicializacion: Tbase
13-21
7 EVALUACIÓN DE LAS PRESTACIONES VECTORIALES.
El tiempo de ejecución depende de cuatro términos:
1. Código escalar de inicialización del bucle. Se ocupa del cálculo de direcciones iniciales, longitudes de los vectores, . . . . S ólo se ejecuta una vez.
Valor tı́pico: Tbase = 10 ciclos.
2. Código escalar dedicado a aplicar la técnica del strip-mining. Se ocupa de
descomponer el vector original en secciones de tama ño ≤ M V L. El número
de secciones es d MnV L e. El código se ejecuta una vez por cada sección, originando una sobrecarga Tbucle .
Valor tı́pico: Tbucle = 15 ciclos.
3. Tiempo necesario para obtener el primer resultado en cada secci ón del stripmining (Tarranque ).
4. Tiempo requerido para calcular cada componente del resultado (T e ).
El tiempo total de ejecución del bucle es:
n
n
T (n) = Tbase + d
eTbucle + b
c(Tarranque + MVL ∗ Te ) +
MVL
MV L
Tarranque + (n mód MVL)Te
Operando:
T (n) = Tbase + d
n
e(Tbucle + Tarranque ) + nTe
MVL
13-22
7 EVALUACIÓN DE LAS PRESTACIONES VECTORIALES.
Ejemplo:
Bucle DAXPY, en un DLXV @ 80MHz con las siguientes caracterı́sticas:
Unidad de carga/almacenamiento: 11 ciclos.
Sumador: 6 ciclos.
Multiplicador: 7 ciclos.
Encadenamiento de operaciones vectoriales.
Código vectorial del bucle:
LV V1,Rx
MULTSV V2,F0,V1
LV V3,Ry
ADDV V4,V2,V3
SV Rz,V4
Ignorando todas las sobrecargas, excepto la de arranque:
11
n
LV V1,Rx
n
7
MULTSV V2,F0,V1
11
n
LV V3,Ry
6
n
ADDV V4,V2,V3
11
n
SV Rz,V4
T (n) = (11 + n) + (11 + n) + (11 + n) = 33 + 3n ⇒
Tarranque = 33 ciclos.
Te = 3 ciclos.
Sustituyendo:
n
T (n) = Tbase + d MnV L e(Tbucle + Tarranque) + nTe = 10 + d 64
e(15 + 33) + 3n
n
n
e ≈ ( 64
+ 1):
Si n es elevado, podemos utilizar la aproximaci ón: d 64
T (n) = 10 +
48
n
64
+ 48 + 3n = 58 + 3,75n ciclos
13-23
7 EVALUACIÓN DE LAS PRESTACIONES VECTORIALES.
Medidas de prestaciones
Velocidad sostenida R:
Operaciones
tiempo
En nuestro ejemplo:
R(n) =
• Operaciones = 2n.
• Tiempo = T (n) = 58 + 3,75n ciclos.
Sustituyendo:
R(n) =
2n
58+3,75n
operaciones/ciclo
Velocidad alcanzada procesando vectores de longitud infinita R ∞ . Es la velocidad máxima real que se puede obtener en el computador.
R∞ = lı́mn→∞ R(n).
En nuestro ejemplo:
R∞ = lı́mn→∞ R(n) = lı́mn→∞
42.7 MFLOPS.
2n
58+3,75n
=
2
3,75
= 0.53 op./ciclo @80 MHz =
Tamaño mı́nimo de los vectores a procesar N 1 para alcanzar una velocidad
2
1
sostenida igual o mayor que 2 de R∞ . Esta medida da una idea de la la sobrecarga del bucle vectorial.
1
R
2 ∞
= R(N 1 ) ⇒ N 1
2
2
En nuestro ejemplo:
1
0,53
2
=
2n
58+3,75n
⇒ N 1 = 15,5 ≈ 16 componentes.
2
13-24
7 EVALUACIÓN DE LAS PRESTACIONES VECTORIALES.
Tamaño mı́nimo de los vectores a procesar Nv para que el modo vectorial sea
más rápido que el escalar. Esta medida también da una idea de la sobrecarga
del bucle vectorial.
T (Nv ) = Tescalar ⇒ Nv .
En nuestro ejemplo:
• Supondremos que el código escalar se compone de un bucle, con 5 instrucciones que implementan el cuerpo del bucle más 10 instrucciones
(de control y sobrecarga del bucle).
• También supondremos que la máquina escalar está segmentada y que
aplica gestión dinámica de instrucciones, obteniendo CPI ≈ 1.
Tescalar = (10 + 5) instrucciones = 15 ciclos (1 componente).
Igulando con la expresión de T (n):
15n = 58 + 3,75n ⇒ Nv = 4,71 ≈ 5 componentes.
13-25

Documentos relacionados