1 / 70

Procesadores Vectoriales

Procesadores Vectoriales Orientados a ejecutar eficientemente algoritmos numéricos sobre estructuras regulares de un gran número de elementos. Incluyen en su repertorio de instruciones, instrucciones capaces de procesar vectores  aparece un nuevo tipo de datos Vector.

lida
Download Presentation

Procesadores Vectoriales

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Procesadores Vectoriales • Orientados a ejecutar eficientemente algoritmos numéricos sobre estructuras regulares de un gran número de elementos. • Incluyen en su repertorio de instruciones, instrucciones capaces de procesar vectores  aparece un nuevo tipo de datos Vector. • Cada vez que una instrucción es ejecutada, se ejecuta idealmente sobre todos los componentes del Vector. • Las operaciones sobre vectores pueden realizarse más rápido que una secuencia de operaciones escalares sobre el mismo número de elementos • Es necesario realizar una selección de aplicaciones, datos y compiladores

  2. Introducción: características de las operaciones vectoriales • El enfoque tradicional = explotar el paralelismo a nivel de instrucciones (ILP). (Ejecución segmentada, superescalar, …) • Límites al ILP: • Rendimiento (puede mejorarse aumentando la profundidad de los pipes. Problema: mayor número de etapas = más dependencias. • Se emplea tiempo en adquirir y decodificar las instrucciones

  3. Introducción: características de las operaciones vectoriales • Secuencia de cálculos independientes: • Ausencia de dependencias (determinado en tiempo de compilación o por el programador) • Alto contenido semánticos. (Se entiende mejor el programa) • Patrón de acceso a memoria conocido. • Elementos adyacentes en memoria = bancos entrelazados • Se puede ocultar la alta latencia de acceder a memoria versus caché.

  4. Introducción: características de las operaciones vectoriales

  5. Introducción: características de las operaciones vectoriales • Idea básica: introducir operaciones vectoriales en el lenguaje máquina • Objetivo: sintonizar la arquitectura con: • La estructura de los cálculos • La estructura de los accesos a memoria

  6. Tipos de Proc. Vectoriales • Segmentados: • CDC STAR 100 y TI ASC (1972) • Cray-1 (1976) • En array (procesamiento simultáneo de varias componentes mediante la replicación de unidades de procesamiento) • Unger (1958) • Illiac IV

  7. Tipos de Proc. Vectoriales • Extensiones multimedia de procesadores de propósito general (procesamiento de varios datos pequeños, empaquetados en un registro, mediante la división de las unidades funcionales en sub-unidades independientes). • Tipos de datos pequeños: pixeles (8 bits), audio (16 bits), … • Se empaquetan datos y se opera con ellos formando estructuras de tipo vectorial • Cómputo intensivo 3D • Streaming • INTEL (MMX),MOTOROLA(AltiVec),AMD(32Now),Sun UltraSparc (VIS), …

  8. Arquitectura Básica • Típicamente consta de una unidad escalar de proceso y una unidad vectorial. • Dos tipos fundamentales: • Memoria - Memoria.Todas las operaciones vectoriales son entre memoria. Gama CDC: Cyber205, ETA10... • Vector - Registro.Todas las operaciones vectoriales – excepto load y store – se realizan entre registros de vectores. Es el modelo utilizado actualmente. • Gama Cray: 1, X-MP, Y-MP, C90, J90, T90, SV1, SV2. • Supercomputadores japoneses: Hitachi, NEC, Fujitsu VPP

  9. Controlador de memoria y generador de direcciones Memoria Local (Registros) Unidades Aritméticas Segmentadas Datos Parámetros de Direccionamiento Parámetros y estado Programa Procesador Escalar Controlador Vectorial Control y estado Datos ESQUEMA GENERAL DE UN PROCESADOR VECTORIAL

  10. Rendimiento

  11. Rendimiento

  12. Propiedades de los Procesadores Vectoriales • La computación de cada resultado es independiente de la computación de los resultados previos. • Una simple instrucción vectorial especifica una gran cantidad de trabajo. • Las instrucciones vectoriales que acceden a memoria tienen un patrón de acceso a memoria conocido. • Al sustituir un bucle entero por una única operación vectorial, desaparecen las dependencias de control.

  13. Funcionamiento Segmentado

  14. Funcionamiento Segmentado

  15. Funcionamiento Segmentado Algunas arquitecturas vectoriales proporcionan mayor eficiencia al permitir que la salida de un pipeline se pueda encadenar con la entrada de otro pipeline Encadenamiento elimina la necesidad de almacenar el resultado del primer pipeline antes de enviarlo al segundo

  16. OPERACIONES BÁSICAS • Hay más tipos de datos (vectores)  aparecen más operaciones. • Las operaciones se pueden clasificar en: • V  V • V  S • V op V  V • V op S  V • V op V  S

  17. EJEMPLOS DE OPERACIONES SOBRE VECTORES • Suma Vectorial A = B + C • Suma Escalar • Producto Vectorial A = B  C • Producto Escalar • Mover Vectores • Máximo de un Vector a = max(B(i)) i = 1, 2, ..., n • Operaciones Lógicas A(i) = B(i) and C(i) i = 1, 2, ..., n • Comparar Vectores A(i) = 1 si B(i) > C(i) i = 1, 2, ..., n • Producto de un Escalar por un Vector A = k ·B

  18. Repertorio de instrucciones DLXV

  19. Repertorio de instrucciones DLXV

  20. REQUERIMIENTO BÁSICO DE LA EJECUCIÓN VECTORIAL • El resultado debe ser idéntico que si el cálculo se resolviera en un computador escalar. • Ejemplo: A[i] = B[i] + C[i]; • B[i] =2 * A[i+1]; • i 1 2 3 4 5 6 • A 5 6 7 8 9 10 • B 20 21 22 23 24 25 • C 10 11 12 13 14 15

  21. Diferentes • Ejecución Secuencial • A(1) = B(1) + C(1) = 20 + 10 = 30 • B(1) = 2 * A(2) = 2 * 6 = 12 • A(2) = B(2) + C(2) = 21 + 11 = 32 • B(2) = 2 * A(3) = 2 * 7 = 14 • ... • Ejecución Vectorial • A(1:N) = B(1:N) + C(1:N) • B(1:N) = 2 * A(2:N+1) • A(1) = B(1) + C(1) = 20 + 10 = 30 • A(2) = B(2) + C(2) = 21 + 11 = 32 • ... • B(1) = 2 * A(2) = 2 * 32 = 64 • B(2) = 2 * A(3) = 2 * 34 = 68

  22. Memoria Entrelazada • Se organizan los chips en bancos • Se intenta aprovechar el ancho de banda de todos, enviando a todos la misma dirección de memoria (para acceder en paralelo) • Cada banco tiene líneas de dirección y de datos independientes para realizar accesos independientes • Normalmente no son líneas dedicadas sino una red de conmutación multietapa

  23. MEMORIA ENTRELAZADA • Dividir la Mp en módulos independientes de acceso en paralelo al objeto de: • Reducir el tiempo de acceso efectivo a Mp. • Aminorar el efecto de “cuello de botella” que se produce en el acceso a Mp por parte de los elementos que la comporten. • ¿Cómo se distribuyen las direcciones entre los módulos? • Entrelazamiento de orden alto. Cada módulo contiene un conjunto de direcciones consecutivas. • Entrelazamiento de orden bajo. Direcciones consecutivas en módulos consecutivos.

  24. ENTRELAZAMIENTO DE ORDEN ALTO • Sea Mp de 2n palabras. Se divide en 2m módulos de 2n-m palabras cada uno. • Cada módulo alberga 2n-m palabras consecutivas. • El módulo i contiene las direcciones • [i*2n-m, ..., (i+1) * 2n-m - 1]

  25. Decodificador 2m-1... i ... 0 RDi: Registro de Dirección RDa: Registro de Datos n-m RDi RDi RDi RDa RDa RDa   Módulo 2m -1 Módulo 0 Módulo i   m m bits n –m bits Módulo Dirección dentro del módulo • Direccionamiento: • Los m bits más significativos se usan para seleccionar el módulo. • Los n-m bits menos significativos se usan para direccionar el módulo.

  26. Ventajas: • Fácil expansión de la memoria (más M  más módulos). • Fiabilidad. Un error en un módulo no provoca un gran fraccionamiento de la memoria. • Inconveniente: • Localidad Espacial. Conflictos de acceso a un mismo módulo.

  27. ENTRELAZAMIENTO DE ORDEN BAJO • Sea Mp de 2n palabras. Se divide en 2m módulos de 2n–m palabras cada uno. • El módulo i contiene las direcciones: • i + K * 2m, K = 0, 1, 2, ... , 2n-m - 1

  28. Dirección dentro del módulo Módulo Decodificador 2m-1... i ... 0 RDi: Registro de Dirección RDa: Registro de Datos n-m RDi RDi RDi RDa RDa RDa Módulo 2m -1 Módulo 0 Módulo i     m m bits n –m bits • Direccionamiento: • Los m bits menos significativos se usan para seleccionar el módulo. • Los n-m bits más significativos se usan para direccionar el módulo. • Direcciones consecutivas están en módulos consecutivos.

  29. Ventajas e Inconvenientes: • Los contrarios del enfoque anterior. • Se podría adoptar una política mixta: • Se puede acceder a palabras consecutivas tanto en la parte alta como en la baja. • Combina las ventajas e inconvenientes de ambos modos de direccionamiento (alto y bajo).

  30. X X X X X Mod. 0 Mod. 1 Mod. 2 Mod. 3 m n - m 00 000 00 001 . . . . . . 00 111 01 000 01 001 . . . . . . 01 111 8 9 10 11 12 13 14 15 10 000 10 001 . . . . . . 10 111 16 17 18 19 20 21 22 23 11 000 11 001 . . . . . . 11 111 24 25 26 27 28 29 30 31 0 1 2 3 4 5 6 7 Mod. 0 Mod. 1 Mod. 2 Mod. 3 0 4 8 12 16 20 24 28 1 5 9 13 17 21 25 29 2 6 10 14 18 22 26 30 3 7 11 15 19 23 27 31 000 00 001 00 . . . . . . 111 00 000 11 001 11 . . . . . . 111 11 000 10 001 10 . . . . . . 111 10 000 01 001 01 . . . . . . 111 01 X X X X X n - m m • Ejemplo • Nº de bits de dirección en módulo (n-m) = 3 • Nº de bits de selección del módulo (m) = 2 • Orden Alto. • Orden Bajo.

  31. Mod. 0 Mod. 1 Mod. 2 Mod. 3 0 2 4 6 8 10 12 14 1 3 5 7 9 11 13 15 16 18 20 22 24 26 28 30 17 19 21 23 25 27 29 31 1 000 1 1 001 1 . . . . . . . . . 1 111 1 1 000 0 1 001 0 . . . . . . . . . 1 111 0 0 000 0 0 001 0 . . . . . . . . . 0 111 0 0 000 1 0 001 1 . . . . . . . . . 0 111 1 X X X X X n - m m • Mixto.

  32. TIEMPO DE EJECUCIÓN • El tiempo de ejecución de una secuencia de operaciones vectoriales depende principalmente de tres factores: • La longitud de los vectores sobre los que se opera. • Dependencias Estructurales entre las operaciones. • Dependencias de datos. • Con unidades segmentadas, se produce un resultado por ciclo de reloj; el tiempo que se tarda en ejecutar una instrucción sobre un vector es aproximadamente igual a la longitud del vector.

  33. Convoy. Conjunto de instrucciones vectoriales que podrían potencialmente empezar su ejecución, juntas en un período de reloj. Las instrucciones en un convoy no deben contener ninguna dependencia estructural o de datos. • Chime. Medida aproximada del tiempo de ejecución para una secuencia vectorial. Es independiente de la longitud del vector. Se ignoran todas las cargas adicionales (overheads)

  34. Tiempo de Arranque. Tiempo transcurrido hasta que se llenan las unidades funcionales segmentadas. • Depende de la profundidad del pipeline. • Introduce un retardo entre los convoys, ya que estos no se pueden solapar. El tiempo para completar un convoy está determinado por la longitud del vector y el tiempo de arranque. T. de ej. de un convoy = long. Vector + tiempo de arranque La sobrecarga debida al tiempo de arranque de un vector no es muy significativa cuando se trabaja con vectores largos.

  35. LONGITUD DEL VECTOR • Una máquina con registros vectoriales tiene una longitud natural determinada por el número de elementos de cada registro vectorial. • La longitud de una operación vectorial particular, es con frecuencia desconocida en tiempo de compilación e incluso en tiempo de ejecución. • La solución es crear un registro de longitud vectorial (VLR), el cual controla la longitud de cualquier operación vectorial. Determina el número de componentes sobre las que actúa la operación vectorial. MVL = Valor Máximo. • ¿Si n < MVL? Cargar registro VLR = mtc1 VLR,r1 y ejecutar el resto de operaciones vectoriales. • ¿Qué sucede si n > MVL?  seccionamiento (strip mining).

  36. STRIP MINING • Seccionamiento. Generación de código tal que cada operación vectorial se realiza para un tamaño  MVL • Al coste de arranque hay que añadir los costes de seccionamiento. • n / MVL operaciones de longitud MVL. • Primer bucle realiza la parte corta n mod MVL y el resto VL = MVL

  37. STRIP MINING

  38. STRIP MINING LD F0,a ADDI 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 X ADDI Ry,Ry,#8 ; incrementa índice a Y SUB R20,R4,Rx ; calcula límite BNZ R20, loop ; comprobación si se ha terminado LD F0,a ; carga escalar a LV V1,Rx ; carga vectorX MULTSV V2,F0,V1 ; multiplicación vector-escalar LV V3,Ry ; carga vector Y ADDV V4,V2,V3 ; suma SV Ry,V4 ; almacena el resultado

  39. STRIP MINING

  40. RENDIMIENTO DE UN BUCLE VECTORIZADO • Depende de 3 factores: • El tiempo de cada operación vectorial en el bucle para procesar un elemento, ignorando los costes de arranque: Telemento. • El coste adicional de las instrucciones vectoriales para cada bloque seccionado: Tbucle + Tarranque. • Los costes adicionales del cálculo de las direcciones de comienzo y escritura del vector de control: Tbase. • El tiempo total de ejecución para una secuencia vectorial operando sobre un vector de longitud n es:

  41. SEPARACIÓN ENTRE ELEMENTOS DE UN VECTOR • La posición en memoria de los elementos adyacentes de un vector puede no estar localizada secuencialmente en memoria. • Ej: A(i,j) = A(i,j) + B(i,k) · C(k,j) • La distancia entre elementos consecutivos que van a formar un vector se denomina separación (stride). • Los procesadores vectoriales tienen la capacidad de acceder a elementos cuyo acceso en memoria no es secuencial y reconfigurarlos en una estructura de datos densa (compacta). • La distancia entre elementos depende del tamaño de los elementos y de la longitud de los vectores; se calcula de forma dinámica, ya que el tamaño de los vectores puede no saberse en tiempo de compilación o puede variar a lo largo de la ejecución.

More Related