Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2)...

24
Motivación Muy importantes ficultades en obtener (y gestionar) ciclos de reloj muy cortos mites en el patrón de localidad de los datos Importantes Lentitud en la decodificación de instrucción ión: Introducir el conocimiento “a priori” de que m aciones científicas trabajan con vectores -> Arquit rácter específico. nución en los riesgos de control (está implícito en designar una ins vectorizable”

Transcript of Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2)...

Page 1: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Motivación

Muy importantes

1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos

2) Límites en el patrón de localidad de los datos

Importantes

3) Lentitud en la decodificación de instrucción

Solución: Introducir el conocimiento “a priori” de que muchasaplicaciones científicas trabajan con vectores -> Arquitecturasde carácter específico.

- Disminución en los riesgos de control (está implícito en designar una instrucción como “vectorizable”

Page 2: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Arquitectura Vectorial

Propiedades Clave: Las instrucciones utilizan operandos escalares y vectoriales Normalmente, redundancia de recursos para potenciar paralelismo entre UFV’s

Page 3: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesadores vectorialesCaracterísticas de las máquinas vectoriales

Instrucciones que operan sobre vectores (arrays lineales de números FP)

Sistema de Memoria: bancos de memoria entrelazados de forma peculiarEl acceso a vectores de tamaño grande cuyas componentes tienendirecciones no consecutivas hacen ineficiente el uso de una cache.

Características de las instrucciones vectoriales

Permiten gran nivel de segmentaciónLa operación se realiza de forma independiente sobre cada com-ponente, sin dependencias de datos.

Cada instrucción vectorial es equivalente a un bucle.Ventaja añadida: normalmente se evita examinar el salto del bucle.Disminuye el tamaño del código.

Instrucciones de carga vectorialesLeer un vector en memoria, cuya componentes están en direccionesde memoria que siguen un patrón de acceso conocido, permite ob-tener una componente por ciclo, una vez transcurrido el número de ciclos determinado por la latencia de la Memoria.

Page 4: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Clasificación según almacenamiento de los operandos

Máquinas vectoriales con registros

Todas las instrucciones vectoriales (menos cargas) operan con

vectores almacenados (por instrucciones de carga previas) en

registros (vectoriales).

Todas las máquinas actuales son de este tipo (CRAY,CONVEX,

etc.)

Máquinas vectoriales memoria-memoriaTodas las instrucciones vectoriales leen sus operandos y escribenlos resultados en Memoria.Fueron de este tipo las primeras máquinas vectoriales (CDC)

Procesadores vectoriales

Page 5: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesadores vectoriales

Arquitectura vectorial básica (DLXV. Basada en CRAY-I)

Registros vectoriales8 Rg. Vectoriales, cada uno de 64 componentes (dobles palabras)El Banco de Registros Vectoriales (BRV) tiene dos puertos delectura y uno de escritura

Registros escalares32 Rg. Propósito general y 32 específicos FP.

Unidades Funcionales5 UF completamente segmentadas

Unidad de ControlDetecta riesgos estructurales y dependencias

Page 6: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesadores vectoriales

Memoria principal

Carga/almacenamiento vectorial

suma/resta FP

multiplicación FP

división FP

Entero

Lógico

Registrosescalares

Registrosvectoriales

Page 7: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Multiprocesador Vectorial con Memoria Compartida

P1 P2 P N

SINCRONISMO

PROCESADORES

REGISTROS

MEMORIASPRIVADAS

CACHE

MEMORIA COMUN(INSTRUC. + DATOS)

Page 8: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Multiprocesador Vectorial con Memoria Compartida

PROBLEMA:

Paralelizar

Balanceo de carga

Sincronización/Comunicación

Coherencia de la información

Límite tecnológico para N, en función del nivel de memoria que comparten

El compilador no ve bien:

Niveles de memoria

Privada/Compartida

Comunicación/Sincronización

Page 9: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesadores vectoriales

Arquitectura Vectorial básica

Instrucciones vectorialesNotación: ADDV, ADDSVEl resultado de una instrucción vectorial siempre es un vectorOperación: en cada ciclo lee dos componentes de cada operando vectory escribe una componente resultado en el BRVInstrucciones vectoriales en DLXV

Instrucción Operandos FunciónVectorial

ADDV V1,V2,V3 Suma elementos de V2 y V3, después pone cada resultado en V1. ADDSV V1,F0,V2 Suma F0 a cada elemento de V2, después pone cada resultado en V1.

SUBV V1,V2,V3 Resta elementos de V3 desde V2, después pone cada resultado en V1 SUBVS V1,V2,F0 Resta F0 de los elementos de V2, después pone cada resultado en V1 SUBSV V1,F0,V2 Resta elementos de V2 de F0, después pone cada resultado en V1

MULTV V1,V2,V3 Multiplica elementos de V2 y V3, después pone cada resultado en V1MULTSV V1,F0,V2 Multiplica F0 por cada elemento de V2, después pone cada resultado en V1

DIVV V1,V2,V3 Divide elementos de V2 por V3, después pone cada resultado en V1.DIVVS V1,V2,F0 Divide elementos de V2 por F0, después pone cada resultado en V1DIVSV V1,F0,V2 Divide F0 por elementos de V2, después pone cada resultado en V1

LV V1,R1 Carga registro vectorial V1 desde memoria comenzando en la dirección R1

Page 10: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Instrucción Operandos FunciónVectorial

SV R1,V1 Almacena registro vectorial V1 en memoria comenzando en la dirección R1

LVWS V1,(R1,R2) Carga V1 desde la dirección en R1 con separación en R2, p.ej.,R1+i .R2

LVI Vl, (R1+V2) Carga V1 con un vector cuyos elementos están en R1+V2(i), es decir, V2 es un índice

SVI (R1+V2),V1 Almacena V1 con un vector cuyos elementos están en R1+V2(i), es decir, V2 es uníndice

CVI V1,R1 Crea un vector de índices almacenando en V1 los valores 0, 1 . R1, 2 . R1, … , 63 . R1 en V1

SVWS (R1,R2),V1 Almacena V1 desde dirección en R1 con separación en R2, p.ej.,Rl+i .R2

S_V V1, V2 Compara (EQ, NE,GT,LT,GE,LE) los elementos de V1 y V2. Si la condición es S_SV cierta pone un 1 en el bit correspondiente del vector: en cualquier otro caso pone

0. Pone el vector de bits resultante en un registro de máscara vectorial (VM). Lainstrucción S_SV realiza la misma comparación pero utilizando un valor escalarcomo operando.

POP R1,VM Cuenta los ls en el registro de máscara vectorial y almacena la cuenta en R1

CVM Pone todo el registro de máscara vectorial a 1.

MOVI2S VLR,R1 Transfiere el contenido de R1 al registro de longitud vectorialMOVS2I R1,VLR Transfiere el contenido de registro de longitud vectorial a R1.

MOVF2S VM,F0 Transfiere el contenido de F0 al registro de máscara vectorialMOVS2 F0,VM Transfiere el contenido del registro de máscara vectoria a F0

Page 11: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

(Parallel) vectorcomputers

SM-MIMD

Computer (ns) CPUs CPU (Mflop/s) (Mflop/s)peak totalpeak singlemaxclock cycle

Cray 2 4.1 4 488 1952Cray 3 2.0 16 1000 16000Cray Y-MP 6.0 8 333 2667Cray C90 4.0 16 1000 16000Fujitsu VP2600 4.0 1 4000Hitachi S-820/80 4.0 1 2000NEC SX-3 2.9 4 5500 22000

Page 12: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesamiento Escalar vs. VectorialMultiplicación Matricial

DO i = 1,n DO j=1,n DO k= 1,n C(i,j)= C(i,j)+A(i,k)*B(k,j) ENDDO ENDDOENDDO

Código Escalar …loadf f2, (r2) ; load C(i,j)loop: loadf f3, (r3) ; load A(i, k) loadf f4, (r4) ; load B(k,j) mypf f3,f3,f4 ; A(i,k)*B(k,j) addf f2,f2,f3 ; update C(i,j) store f2 (r2) ; store C(i,j) addi r1,r1,#4 ; incr. ptr. A(i,k+1) addi r3,r3,#4 ; incr. ptr. B(k+1,j)

bnz r1,loop: ; branch to loop if (r1/4).eq. n) ...

ji

C

A

B

j

i

cij

Aik

Bkj

Page 13: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesamiento Escalar vs. VectorialMultiplicación Matricial

DO i = 1,n DO k=1,n DO j= 1,n C(i,j)= C(i,1:n)+A(i,k)*B(k,j) ENDDO ENDDO

Código Vectorial

LV V2, (r2) ; load A(i,k)LV V3,(r3) ; load B(k, j)MULTV v3,v2,v3 ; A(i,k)*B(k,j)

...

ji

C

A

B

j

i

cij

Aik

Bkj

Page 14: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesadores vectorialesControl de la longitud del vector

- Longitud natural: tamaño de los registros vectoriales (MVL)- Registro de longitud vectorial (VLR): contiene la longitud del vector actual (valor en VLR MVL)

Vectores de tamaño MVL: poner tamaño en VLR. Las instruccio-nes vectoriales toman este tamaño de vector.Vectores de tamaño n MVL:seccionamiento

- Seccionamiento (strip mining)Técnica de generación de código con operaciones vectoriales detamaño menor o igual que MVL

n mod MVL

MVL MVL MVL

n/(MVL)veces

<

>

<

Código de DAXPY para un vector de tamaño n > MVLini=1; VLR= (n mod MVL);for (i=0; i n/MVL;i++)

{ for (j=ini;j ini+VLR-1){Y(j)=a*X(j)+Y(j)ini=ini+VLR;VLR=MVL;}

}

<<

Page 15: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesadores vectoriales

Ejemplo de código vectorialCódigo vectorial que traduce un bucle (S/D)AXPY (simple/doble precisión Apor X plus Y): For (i=1, i<++) Y(i) = a*X(i) + Y(i); se supone que los númerosX(i) (FP doble precisión) están en direcciones de Mem consecutivas.

DLX

LD F0,aADDI R4,Rx,#512 ; última dirección a cargar

LD F2,0(Rx) ; carga X(i)MULTD F2,F0, F2 ; a· X(i)LD F4, 0(Ry) ; carga Y(i)ADDD F4,F2,F4 ; a· X(i) + Y(i)SD F4, 0(Ry) ; almacena en Y(i)ADDI Rx,Rx,#8 ; incrementa índice a XADDI Ry,Ry,#8 ; incrementa índice a YSUB R20,R4,Rx ; calcula límiteBNZ R20, loop ; comprobación si se ha terminado

Loop:

Page 16: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Código DLXV para DAXPY

LD F0,a ; carga escalar aLV V1,Rx ; carga vectorXMULTSV V2,F0,V1 ; multiplicación vector-escalarLV V3,Ry ; carga vector YADDV V4,V2,V3 ; sumaSV Ry,V4 ; almacena el resultado

Ventajas del código vectorial

Se buscan 6 instrucciones, frente a más de 600.Diagrama temporal

Procesador escalar: técnicas desenrrolle bucles o segmentación software?Procesador vectorial DLXV

T(n)= tiempo para completar una operación vectorial de longitud n.Tarranque= profundidad de la segmentación de la UFViniciación = 1 si UF totalmente segmentada

T(n) = Tarranque + n · Viniciación

Page 17: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Ejercicio

Sea la siguiente tabla de penalizaciones de arranque en DLXV con todas las unidadesfuncionales completamente segmentadas:

Suma vectorial Penalización de arranque = 6Multiplicación vectorial Penalización de arranque = 7División vectorial Penalización de arranque = 20Carga vectorial Penalización de arranque = 12

(Adicionalmente, el tiempo consumido en escribir y después leer el contenido de un registro es de 4 ciclos.

Encontrar:

1) Diagrama temporal del código DAXPY (suponiendo operaciones vectoriales no encadenadas.2) Velocidad sostenida y número efectivo de operaciones de punto flotante por ciclo de reloj para la secuencia:

MULTV V1,V2,V3ADDV V4,V5,V6

Page 18: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesadores vectoriales

Modelo del rendimiento de un bucle vectorizado (sin encadenan.)

Ejemplo: El bucle For (I=1; i 200,i++) A(i)=s*B(i) se transforma en el siguientecódigo vectorial:

_>

ADDI R2,R0,#1600 ; no bytes en vectorADD R2,R2,Ra ; fin de vector AADDI R1,R0,#8 ; longitud de seccionamientoMOVI2S VLR,R1 ; longitud de vectorADDI R1,R0,#64 ; longitud en bytesADDI R3,R0,#64 ; longitud de vector

; de otras piezas.LV V1,Rb ; carga BMULTVS V2,V1,Fs ; vector · escalarSV Ra,V2 ; almacena AADD Ra,Ra,R1 ; siguiente sección de AADD Rb,Rb,R1 ; siguiente sección de BADDI R1,R0,#512 ; longitud total de vector

; (en bytes)MOVI2S VLR,R3 ; inicializa longitud a 64SUB R4,R2,Ra ; en el fin de A?BNZ R4,LOOP ; si no, volver atrás

BASE

BUCLE

Page 19: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Podemos distinguir tres componentes del tiempo de ejecución:

Tbase : es el coste temporal del código de inicialización y parámetros de seccionamiento. Consta únicamente de instrucciones escalares y se considera una sola vez.

Tbucle: coste de ejecución del código escalar para inicializar el tamaño de cada sección del vector, incrementar los contadores y ejecutar cada salto del bucle del secc.

Tarranque: tiempo de arranque de cada iteración del secc. (suma de los costes de arranque de las instrucciones vectoriales)

Telemento: tiempo en producir un elemento resultado de la secuencia vectorial ignorando los costes de arranque (normalmente un ciclo por cada instrucción vectorial del cuerpo del bucle)

En el ejemplo, Telemento = 3 y Tarranque = 12(LV) + 4 + 7 (MUL) + 4La detención de 4 ciclos entre instrucciones dependientes son necesarios para escribiry luego leer los operandos.

Page 20: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesadores vectoriales

Medidas de rendimiento en procesadores vectoriales

Velocidad en MFLOPS = nº OPF por seg./106

R(n) = Velocidad en MFLOPS sobre un vector de longitud n Relación entre R(n) y T(n) en un bucle vectorizable R(n) = (nº OPF por iteración *n/T(n) * tciclo) * 10-6 = (nº OPF por iteración * frecuencia / (T(n)/n)*10-6

T (n)/n: nº ciclos por iteraciónR = lim R(n) para n -> N1/2= min { n/R(n) _ R / 2 }Nv = min { n/velocidad vectorial _ velocidad escalar }

>>

Ejemplo: Rendimiento de un bucle SAXPY (encadenamiento, MVL = 64 yfrecuencia de 80 MHz)

Código vectorialLV V1, Rx ; carga el vector xMULTSV V2,S1,V1 ; vector escalar-encadenado a LV XLV V3,Ry ; carga el vector YADDV V4,V2,V3 ; suma aX + Y, encadenado a LV YSV Ry,V4 ; almacena el vector Y

Page 21: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Cálculo de T (m) con encadenamiento

Operación Comienza en Completa en Comentarionúmero de reloj número de reloj

LV V1, Rx 0 12+64=76 Latencia simple

MULTV a,V1 12+1=13 13+7+64=84 Encadenada a LV LV V2, Ry 76+1=77 77+12+64=153 Comienzan después del pri-

mer LV hecho (contención de memoria)

ADDV V3,V1,V2 77+1+12=90 90+6+64=160 Encadenada a MULTV y LV

SV Ry,V3 160+1+4=165 165+12+64=241 Debe esperar en ADDV: no enca-denado (contención de memoria)

T(n) = 10 + [n/64] * (15+49)+3n; pero [n/64] _ n/64 + 1, luegoT(n) _ 4n +74; R(n) = 2*80*n/4n + 74; R = 2*80/4= 40 MFLOPS;Si n < 64 T(n) = 3n + 74; para calcular N1/2 debemos utilizar este valor deT(n).Por tanto R(n)= 160 n/3n + 74 > 20 --> n > 14,8, es decir n1/2 = 15;Para calcular Nv debemos estimar el tiempo de una iteración escalar:10 + 12+ 12 + 7+ 6 = 47; T(n) < 47 n--> Nv = 2

<<

Page 22: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesadores vectorialesMedidas de rendimiento en procesadores vectoriales

Rendimiento de SAXPY en DLXV con algunas mejorasMás canales de acceso a memoria (CRAY X-MP tiene 3) Tarranque para el caso de 3 canales

Operación Comienza en Completa en Comentarionúmero de reloj número de reloj

LV V1, Rx 0 12+64=76 Latencia sencilla

MULTV a,V1 12+1=13 13+7+64=84 Encadenado a LV LV V2, Ry 2 2+12+ +64=78 Comienza inmediatamente

ADDV V3,V1,V2 13+1+7=21 21+6+64=91 Encadenado a MULTV y LV

SV Ry,V3 21+1+6=28 28+12+64=104 Encadenado a ADDV

En este caso Telemento = 1 y resulta

Por ejemplo: T66 = Tbase + [ ] · Tbucle + Telemento) + 66 · Telemento

T66 = 10 + 2 ·(15+40)+66 · 1 = 186

6664

Page 23: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Emisión de instrucciones vectoriales más flexibles

Permitir que una operación vectorial comience a utilizar una UF antes de quese haya completado otra operación anterior: el coste de arranque solo se conta-biliza una vez. Mejora el rendimiento para vectores largos.

Ejemplo:

SAXPLY en DLXV con 2 canales más de memoria y emisión flexible que Permita solapamiento costes de arranque y seccionamiento.

Como Tn = n + 40 + 10 + 15 = n + 65

lim = lim = 1Tn

nn +65 nn -> n ->

R = = 160 MFLOPS2· 80 MHz 1

Page 24: Motivación Muy importantes 1) Dificultades en obtener (y gestionar) ciclos de reloj muy cortos 2) Límites en el patrón de localidad de los datos Importantes.

Procesadores vectoriales

Modelo del rendimiento de un bucle vectorizado (sin encadenam.)

Tbucle y Tbase se establecen experimentalmente porque el código escalar correspon-diente puede solaparse con código vectorial: 15 y 12 ciclos respectivamente

Tiempo total T(n) de ejecución de una secuencia vectorial de tamaño n será

Tn = Tbase + · (Tbucle + Tarranque) + n · Telemento nMVL

y en el caso del ejemplo T200 = 10 + (4) ·(15 + Tarranque) + 200 · 3 T200 = 10 + 4 · (15 + Tarranque) + 600 = 670 + 4 · Tarranque

Modelo del rendimiento de un bucle vectorizado (encadenamiento)Los Registros Vectoriales se tratan como un grupo de registros individuales. Permite el adelan-tamiento: una instrucción vectorial puede comenzar cuando las componentes individuales de suoperando vectorial estan disponibles (cortocircuito)

No encadenada 7 64 4 6 64

MULTV ADDV Total = 145

Encadenada

6 64

ADDV

7 64

MULTV

Total = 77