INTRODUCCIÓN CONECTIVIDAD COPROCESAMIENTO MÁQUINAS MIMD MÁQUINAS SIMD

Slides:



Advertisements
Presentaciones similares
El modelo de Von Neumann
Advertisements

UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
1.3. PROGRAMACION PARALELA
Arquitecturas Avanzadas Curso 10/11
Introducción a los Procesadores Digitales de Señal (DSP)
EMISION MULTIPLE DE INSTRUCCIONES
Unidad 3. Arquitecturas SIMD
Tema 6: Procesadores Vectoriales
Arquitectura del Computador
ISA (Instruction Set Architecture)
ARQUITECTURAS SIMD TIPOS
Partes de un Ordenador.
ARQUITECTURA DE MÁQUINAS COMPUTADORAS III
Introducción INSTITUTO POLITÉCNICO NACIONAL CENTRO DE INVESTIGACION EN COMPUTACION LABORATORIO DE MICROTECNOLOGÍA Y SISTEMAS EMBEBIDOS Arquitecturas de.
CONCEPTOS FUNDAMENTALES FORMAS DE ALMACENAR INFORMACION UNIDAD BASE DE INFORMACION: BIT BYTE = 8 BITS UN KILOBYTE = 1024 BYTES UN MEGABYTE = 1024 KILOBYTES.
Procesamiento paralelo
Organización del Computador I Verano MIPS (1 de 2) Basado en el capítulo 3 del libro de Patterson y Hennessy Verano 2004 Profesora Borensztejn.
Unidad 3. Arquitecturas SIMD
INSTITUTO TECNOLÓGICO DE CD. GUZMÁN
ARQUITECTURAS SIMD Clase Práctica No Vector Processor M-M 1. Estime el tiempo de ejecución de una suma vectorial en un Vector Processor M-M basado.
TEMA 2: Organización de computadores
Organización de Computadoras
Arquitecturas Paralelas
Tema 3: Paralelismo en Multiprocesadores (I)
Microprocesador para el cálculo de la transformada rápida de Fourier ( CEMISID-FFT) - Andrade P. Liliana L. - Díaz M. Omar A. - Erazo P. Amilcar J. - Fuguet.
PROGRAMACIÓN PARALELA Modelos de programación paralela Modelos computacionales Paradigmas de programación paralela Programación en memoria compartida:
ARQUITECTURAS PARALELAS
“Organización y Arquitectura de Computadores” William Stallings
Michael Carter Joshua Carvacho Magdalena Von Borries 1.
PROCESADORES DE SEÑALES DE VIDEO VSP2000 PALOMA FUENTES Microprocesadores para Comunicaciones – 5º ETSIT.
Name Event Date Name Event Date 1 Procesadores de streams 1 Diseño de microprocesadores para multimedia Procesadores de streams Pedro Hernández Fernández.
El microprocesador.
Son los atributos de un sistema que son visibles para un programador, es decir aquellos atributos que impactan directamente en la ejecución lógica de un.
CAPITULO V Arquitectura de Von Neumann
Hiperpipeline Superescalares Arquitectura de Computadoras 2012.
César Gómez Martín Supercomputación “El alma está en el cerebro”
INTRODUCCION A LOS SISTEMAS DE COMPUTO ARQUITECTURA VON NEUMAN Ing. David Gonzalez.
CAPITULO 6 Procesadores Vectoriales. 6.1 Introducción: Motivación, Definiciones y Notas Históricas Microarquitectura orientada al procesamiento de vectores.
L. S. C. A. Raúl Monforte Chulin
Organización de computadoras
ARQUITECTURA BÁSICA DE UN ORDENADOR
Tratamiento de Datos Capitulo Dos.
SISTEMAS OPERATIVOS PARALELOS Y MULTIPROCESADORES RICHARD GIOVANI MEDINA ESTEBA.
UNIDAD CENTRAL DE PROCESO CPU.
EL CPU.
Arquitecturas alternativas UNIVERSIDAD TECNOLOGICA DE PUEBLA TECNOLOGIAS DE LA INFORMACION Y COM. AREA REDES Y TELECOMUNICIONES ADMINISTRACION DE SERVIDORES.
EQUIPO No 3.
8. Diseño del Procesador Fundamentos de los Computadores
Diferencias entre las arquitecturas de 64 bits de AMD e intel.
INTRODUCCION DE SISTEMAS INFORMATICOS
Unidad 1 Introducción al mundo de la computación.
Pipelining Introducción.
Almacenamiento El computador tiene 2 aspectos
PICOBLAZE RESUMEN.
SISTEMAS OPERATIVOS DISTRIBUIDOS. Es la unión de varios sistemas de computo compuestos posiblemente cada uno de varios CPU's, interconectados mediante.
arqAvaPar Presentación Curso 17/18
 La cuestión de la cantidad es simple, cuanto más memoria haya disponible, más podrá utilizarse. La velocidad óptima para la memoria es la velocidad.
8. Diseño del Procesador Fundamentos de los Computadores
arqAvaPar Necesidades, Evolución/Revolución Introducción-60
ARQUITECTURA DEL COMPUTADOR Ing. Diana E. López.
Maestría en Ciencias de la Computación
PICOBLAZE RESUMEN.
FUNDAMENTOS DE PROGRAMACIÓN. INTRODUCCIÓN  Conceptos: Informática, Ordenador, Programa, Dato, Bit, Byte, Hardware, Software, Lenguaje de Programación,
1 TEMA 2: Organización de computadores Procesadores Memorias Dispositivos de E/S.
“SISTEMA INFORMÁTICO”
Balance de Carga Adaptable bajo Cómputo Paralelo en Clusters
Arquitectura de Computadores de Computadores. Organización y Arquitectura La Arquitectura: se refiere a los atributos que tienen un impacto directo en.
1 ALU (Unidad aritmético lógica) Registros Unidad de control I/O y buses internos (usualmente 3 estados) I/O y buses internos Los buses I/O son de tres.
1 TEMA 10. SISTEMAS OPERATIVOS DISTRIBUIDOS Introducción Hardware Software Aspectos de diseño.
ARQUITECTURA DE UN MICROPROCESADOR. ESTRUCTURA BÁSICA DE UN SISTEMA MICROPROGRAMABLE A. Hardware CPU (chip microprocesador): es un circuito integrado.
Transcripción de la presentación:

INTRODUCCIÓN CONECTIVIDAD COPROCESAMIENTO MÁQUINAS MIMD MÁQUINAS SIMD arqAvaPar Curso 16/17 Horas 5 5+… 4 6 1 INTRODUCCIÓN CONECTIVIDAD COPROCESAMIENTO MÁQUINAS MIMD MÁQUINAS SIMD PARALELISMO INTERNO

arqAvaPar Clasificación de Flynn Ampliada Introducción-2 Arquitecturas Paralelas SISD SIMD MISD MIMD Procesadores Vectoriales Array de Procesadores Sistólicos Von Neumann ?? Multi-procesadores Multi-computadores UMA NUMA COMA Distintas formas de organizar la memoria común MPP COW Beowulf Symetric Multi Processor Distributed Shared Memory

arqAvaPar Temario SIMD-3 MÁQUINAS SIMD Procesamiento Sistólico Introducción Metodología Ejemplos Procesamiento Vectorial Definiciones y tipos de instrucciones Memorias entrelazadas Funciones vectoriales compuestas Encadenamiento Hardware Bibliografía: “VLSI Array Processors” S.Y. Kung-1988 [119..149] “Advanded Computer Architecture...” Kai Hwang-1993 [Capítulo 8] “Computer Architecture …” 5ª Ed Hennesy & Patterson-2004 [262..288]

arqAvaPar Sistólicos (Introducción) SIMD-4 Límites de MIMD para grano fino El modelo sistólico Ejemplo Vector x Matriz Algunos inconvenientes Ejemplos de máquinas

arqAvaPar Introducción (Límites de MIMD para grano fino) SIMD-5 Problema: Multiplicar una secuencia muy grande de vectores por una matriz Algunas aplicaciones Filtrado de imagen Generación de efectos de vídeo Conversión, cod/decod de vídeo Manipulación de imagen en 3D Procesado de imágenes médicas Reconocimiento de objetos detectando bordes Filtros FIR para sistemas de comunicaciones

arqAvaPar Introducción (Límites de MIMD para grano fino) SIMD-6 Problema: Multiplicar una secuencia muy grande de vectores por una matriz ..... Xi4, ..... X24, X14 * A4x4 ==> ..... Yi4, ..... Y24, Y14 (x1,x2,x3,x4)i * a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34 a41 a42 a43 a44 = (y1,y2,y3,y4)i x1a11+x2a21+x3a31+x4a41 x1a14+x2a24+x3a34+x4a44 ¿Tiempo  de cálculo de Yi4 en monoprocesador? T(*) => 2 T(+) => 1 T(Mem <==> Reg) => 1 T(Yi4) = 16*2+12*1+20*1+4*1 = 68 (*) (+) (r) (w)

arqAvaPar Introducción (Límites de MIMD para grano fino) SIMD-7 Paralelización de X4*A4x4 con multiprocesadores 1 3 2 -1 x x1 x2 x3 x4 . X2 X1 P11 . . P14 . P22 . . . . . . P41 . . P44 3 5 -1 4 2 7 3 -2 4 0 1 5 8 6 9 -3 3 5 -1 4 6 21 9 -6 8 0 2 10 -8 -6 -9 3 1 1 => 16 Pij multiplican  0 => Cargar coeficientes y P11 P12 P13 P14 9 20 1 11 y1 y2 y3 y4 2 2 => 4 P1i suman Y1 Y2 . . . . . . ¿Cada cuánto tiempo obtengo Yi?

arqAvaPar Introducción (Límites de MIMD para grano fino) SIMD-8 Hagamos los cálculos: repeat [i,j] := X[i] * A[i,j] -- Los 16 Pij T1 Y[i] := [1,i]+[2,i]+[3,i]+[4,i] -- Los 4 P1i T2 forever T1 = 1(r) + 2(*) + 1(w) = 4 11 ¿SEGURO? T2 = 3(r) + 3(+) + 1(w) = 7 -- Código de P1i repeat -- Multiplicar -- Sumar ¿Conflictos de accesos paralelos a datos comunes? Bajar (SNuevoX); ¡ Sincronizar ! El tiempo puede dispararse 20 .... Barreras de sincronización Hw. B(SP1i); B(SP1i); B(SP1i); Subir (SNuevoY); ¿Mejorable con multicomputadores?

arqAvaPar Introducción (Límites de MIMD para grano fino) SIMD-9 Paralelización de X4*A4x4 con multicomputadores ¿Flujo E/S? Xi / Yi D=I 1 3 2 -1 x x1 x2 x3 x4 3 5 -1 4 2 7 3 -2 4 0 1 5 8 6 9 -3 y 9 20 11 y1 y2 y3 y4 12.. 1 3 1 2 5 -1 26 8 4 3 5 -1 4 2 7 -2 8 6 -3 9 1 Coste 3 3 S=I*A21+N 9 2 ? ? * + ! ! 17 -1 2 1 9 9 ¿Será alcanzable  4? Sistólicos

arqAvaPar Introducción (El modelo sistólico) SIMD-10 1978 (H.T. Kung y C.E. Leiserson) Mucho interés en los 80 Yale, Carnegie Mellon, MIT Objetivo: Aprovechar el alto grado de paralelismo espacial y temporal de algunos algoritmos muy demandados y limitados por cómputo Flujo Datos 8 (E/S) vs 28 (*/+) ....X43, X42, X41 * a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34 a41 a42 a43 a44 = .... Y43, Y42, Y41 Aplicaciones: Computación científica, procesado de señal e imagen, análisis de datos biológicos, criptografía, etc.

arqAvaPar Introducción (El modelo sistólico) SIMD-11 Sistólicos: Máquinas paralelas de propósito específico: Paralelismo masivo y descentralizado (Pipeline) Peso del cómputo mucho mayor que el de E/S Factores de posibilidad (VLSI, CAD) y muy escalables Comunicaciones locales Arquitectura regular y modular organizada como una red de un gran número de unidades de proceso idénticas (celdas), conectadas localmente. Sólo las celdas de los bordes pueden comunicarse con el exterior. HOST ARQUITECTURA SISTÓLICA Trabajos Resultados Modo de operación síncrono

arqAvaPar Introducción (El modelo sistólico) SIMD-12 Ejemplos de redes sistólicas

arqAvaPar Introducción (El modelo sistólico) SIMD-13 Modo de operación síncrono Cada celda siempre hace lo mismo: Recibe datos de sus vecinos Realiza unos cálculos sencillos Transmite resultados a sus vecinos t0 t1 t2 t3 t4 ........... 3 i i+1 i+2 En cada ciclo (), dos fases: Intercambio de datos 2 Cálculo Paralelo Recibe datos de sus vecinos Realiza unos cálculos sencillos Transmite resultados a sus vecinos

arqAvaPar Introducción (Ejemplo Vector * Matriz) SIMD-14 ¿Cómo utilizar esta arquitectura para multiplicar Vectores2 * Matriz2x2? Recordar el intento de paralelización con multicomputadores aij N S D I 1 ?I, ?N, !S, !D 2 S = (I*aij)+N, D = I Propagación de las Xi t0 x11 x11a11 a22 a11 a12 a21 t1 x12 x11  x21 a22 a11 a12 a21 Situación justo al inicio del ciclo

arqAvaPar Introducción (Ejemplo Vector * Matriz) SIMD-15 x11a11 x12 x11 x21 t1 x12a11 x13 x12 x22 t2 x21 y11 x11a12 x13a11 x14 x13 x23 t3 x22 y12 x12a12 y21 x1ia11 x1i+1 x1i x2i ti x2i-1 Y1i-1 x1i-1a12 Y2i-2 x14a11 x15 x14 x24 t4 x23 y13 x13a12 y22

arqAvaPar Introducción (Ejemplo Vector * Matriz) SIMD-16 ¿Tiempo de cálculo de Yi4 con este método? x11 x12 x21 x13 x22 x31 x14 x23 x32 x41 x15 x24 x33 x42 t0 x1i+1 x2i x3i-1 x4i-2 ti y11 y12 y21 y13 y22 y31 y14 y23 y32 y41 y15 y24 y33 y42 t4 Obtenemos un resultado cada ciclo () Transferir datos => 1 Multiplicar => 2 Sumar => 1 Total => 4 ¿Tiempos creíbles?

arqAvaPar Introducción (Ejemplo Vector * Matriz) SIMD-17 Posible aspecto de una celda:  * + Ck aij

arqAvaPar Introducción (Algunos inconvenientes) SIMD-18 Dificultad algorítmica (Veremos una sistematización) Sincronismo de reloj (Sesgo de reloj | Clock Skew) Ck ¿Soluciones? Distribución regular de Ck Frente de Ola | Wave Front Asíncronos Flujo de Datos vs Flujo de Control Ck

arqAvaPar Introducción (Ejemplos de máquinas) SIMD-19 iWarp (1988-1992) Carnegie Mellon Univ. + Intel Supercomputing System Div. Todavía la mejor en 1995 para algunas aplicaciones µP RISC de 32 bits de 96bit LIW a 20MHz Desde 4 a 1024 celdas. Típico un toro de 8x8 => 64µP iPSC www-2.cs.cmu.edu/~iwarp “iWarp: Anatomy of a Parallel Computing System” 1998

arqAvaPar Introducción (Ejemplos de máquinas) SIMD-20 SAMBA (1993-1995) www.irisa.fr/SAMBA Systolic Accelerator for Molecular Biological Applications Laboratorio IRISA de Rennes 1994 => Chips con 4µP de 100MIPS (12bits) (Total 128µP) 1998 => “Speeding up genome computations with a systolic accelerator” Estudio genético => 41’ en SAMBA y 127,5h en una WorkStation 1998 => Chips con 16..20µP más MIPS => Todo en una tarjeta PCI

arqAvaPar Introducción (Ejemplos de máquinas) SIMD-21 … GeneMatcher2 … 2004] www.paracel.com Sistema de análisis de similitud de secuencias genéticas. Acelerador => 3.072 .. 221.184 P GeneMatcher2: 192 P SIMD Empresa comprada en junio 2000 por Celera Genomics Group. www.celera.com

arqAvaPar Introducción (Ejemplos de máquinas) SIMD-22 Cell [Hoy?] www.blachford.info/computer/Cell/Cell0_v2.html 2008 122.400 núcleos 12.000 PowerXCell 8i 6.912 AMD Opteron QS22 †

arqAvaPar Introducción (Ejemplos de máquinas) SIMD-23 Procesador CSX700 [Hoy?] www.clearspeed.com “Convierta su PC en un supercomputador” #9 Top500 Nov/06 TSUBAME Grid Cluster #29 Top500 Nov/08 #56 Top500 Nov/09 + GPU’s #4 Nov/10 #40 Nov/16 96 GFlops y < 9 W 96 ?

arqAvaPar Introducción (Ejemplos de máquinas) SIMD-24 DeCypher Engine G4 => SeqCruncher [Hoy] www.timelogic.com BLAST => FPGA

arqAvaPar Introducción (Ejemplos de máquinas) SIMD-25 Ryft One: Big Data e Internet de las Cosas www.ryft.com Computación híbrida: FPGA  Algorítmos sistólicos paralelismo masivo x86  Interfaz sencillo con el sistema (Linux)

arqAvaPar Vectoriales (Definiciones) SIMD-26 Vector: Conjunto ordenado de unidades de datos escalares de un mismo tipo Procesador vectorial: Conjunto de elementos hardware diseñado para procesar vectores Un resultado por ciclo Menor overhead control bucle por software Menos conflictos de accesos a memoria Vectorización [Compilador vectorial] Conversión de código escalar a vectorial for i=0 to 127 A[i] = B[i] + C[i] A[] = B[] + C[] Load r1,B[i] Load r2,C[i] Add r3,r2,r1 Store r3,A[i] LoadV V1,B LoadV V2,C AddV V3,V2,V1 StoreV V3,A ¿ Grado de vectorización ?

arqAvaPar Vectoriales (Definiciones) SIMD-27 Vector: Conjunto ordenado de unidades de datos escalares de un mismo tipo short V1[5]; long V2[5]; tPersona V3[5]; $1004 V4[0] $1000 V4[2] V4[1] V4[3] V4[4] $1008 $100C $1010 ¿Vector V4? V1[0] $1000 V1[2] V1[1] V1[3] V1[4] V2[0] V2[1] V2[2] V2[3] V2[4] $1006 $1002 $1004 $1008 $1004 $1008 $100C $1010 Stride  tsize(tipo) Stride 2 ¿Utilidad? Stride 4 Stride 4

arqAvaPar Vectoriales (Definiciones) SIMD-28 Utilidad del stride a00 a01 a02 a03 a04 a05 a06 a07 a10 a11 a12 a13 a14 a15 a16 a17 a20 a21 a22 a23 a24 a25 a26 a27 a30 a31 a32 a33 a34 a35 a36 a37 a40 a41 a42 a43 a44 a45 a46 a47 a50 a51 a52 a53 a54 a55 a56 a57 a60 a61 a62 a63 a64 a65 a66 a67 a70 a71 a72 a73 a74 a75 a76 a77 ? Stride 1 ? Stride 8 Stride 9

arqAvaPar Tipo / Fuentes (Control, Datos, Flujo) Introducción-29 PARALELISMO DE DATOS (Espacial) Operaciones sobre datos regulares (vectores) aplicando la misma operación sobre cada elemento 2 1 3 4 5 7 8 6 9 + A C B Suma de Vectores, etc. ¡LIMITACIONES! Más datos que U.P. Operaciones escalares En los procesadores vectoriales hay poca replicación hardware (pocas unidades de proceso que sumen). En su lugar, se apoyan en una especialización mediante pipeline.

arqAvaPar Vectoriales (Definiciones) SIMD-30 Unidad Funcional Aritmética Segmentada 2 1 3 4 5 7 8 6 9 A C B 8+1 8+1 7 3+6 1+1 5+2 4+0 8 7+1 1+1 5+2 4+0 7+1 8+1 5+2 4+0 9 7+1 8+1 5+2 7+1 8+1 Registros Vectoriales 4 Etapas: Ajustar Exponentes Sumar Normalizar Redondear Un resultado por ciclo

arqAvaPar Vectoriales (Definiciones) SIMD-31 + C[0] B[9] B[8] B[7] B[6] B[5] B[4] B[3] B[2] B[1] ¿Cómo acelerar más? ¡Múltiples carriles! + C[0] C[1] C[2] C[3] B[4] A[4] B[8] A[8] B[5] A[5] B[9] A[9] B[6] A[6] B[7] A[7]

arqAvaPar Vectoriales (Tipos de instrucciones) SIMD-32 Unidad funcional segmentada Vector-Vector Vi  Vj Vj x Vk  Vi Vi Vk Vj VMIPS: V0..V7 con 64e de 64b ADDVV.D V1, V2, V3 for (i=0; i<64; i++) V1[i] = V2[i] + V3[i] PAVG Dst [i] = ( Dst[i] + Org[i] ) / 2 VMIPS ADDVS.D V1, V2, F0 S x Vk  Vi Escalar-Vector Vi Vk S

arqAvaPar Vectoriales (Tipos de instrucciones) SIMD-33 ¿ Y si nuestro vector es más pequeño (< 64 elementos) ? MTC1 VLR, R1 MFC1 R1, VLR Otro registro indica longitud efectiva del vector double A, B, C[28]; A[] = B[] + C[]; ¿ Y si nuestro vector es más grande (> 64 elementos) ? 279 63 double A, B, C[280]; A[] = B[] + C[]; 280 / 64 = 4 280 % 64 = 34 Procesado a trozos [Compilador | Programador]

arqAvaPar Vectoriales (Tipos de instrucciones) SIMD-34 Vector reducción Vi  S , Vj x Vk  S S Vk Vj ? ? B A C fila 63 col Min, Max, Sum

arqAvaPar Vectoriales (Tipos de instrucciones) SIMD-35 M  V V  M Memoria-Vector, Vector-Memoria V Memoria LV V1, R1 SV R1, V1 V1 = Mem[R1] Mem[R1] = V1 Mem[R1 + V2[i]] LVI V1, (R1+V2) SVI (R1+V2), V1 Dirección | Stride | RegÍndice LVWS V1, (R1, R2) SVWS (R1, R2), V1 V1[i] = Mem[R1 + i x R2] Mem[R1 + i x R2] = V1[i]

arqAvaPar Vectoriales (Tipos de instrucciones) SIMD-36 Compresión (gather  recoger) M  Vj x Vk 410 769 130 49 46 20 56 200 201 202 206 203 205 204 etc. memoria Vk 4 200 3 6 etc. Vj VL A0 130 410 56 20 etc. ¿Utilidad? LVI V1, (R1+V2)

arqAvaPar Vectoriales (Tipos de instrucciones) SIMD-37 Expansión (scatter  esparcir) 4 200 130 410 56 20 etc. 1 2 5 xx 201 202 206 203 205 204 Vj Vk memoria Vj x Vk  M VL A0 MPI_Scatter MPI_Gather MPI_Reduce MPI

arqAvaPar Vectoriales (Tipos de instrucciones) SIMD-38 Máscara (masking) 7 230 91 66 etc. Vk Vk  Vi x Vm 56 VL 1011001...... 6 3 xx 2 200 201 202 206 203 205 204 etc. Vi VM ¿Utilidad? ¿Utilidad VM? ? B[] = B[] / A[] for (i=0; i<64; i++) if (A[i] != 0) B[i] = B[i] / A[i]

arqAvaPar Vectoriales (Memorias entrelazadas) SIMD-39 Acceso a bloques: Instrucciones Arrays Líneas de caché Vectorial M.P. ¿Un único pipe? Vectorial M0 M1 M7 V[0] V[1] V[7] V[8] V[9] ¿Memoria multipuerto? ¿Cuántos bancos?   Patrón de acceso a MP 3/4 1/4 ¿ Acceso paralelo al vector V[16] ? palabra módulo n 3 Entrelazado orden inferior ¡ Demasiado secuencial !

arqAvaPar Vectoriales (Memorias entrelazadas) SIMD-40 Para acceder a un vector en memoria (longElemento = palabra): DirInicio, NumElementos, Stride (Separación entre elementos) Entrelazado de orden inferior: Acceso Concurrente Memoria de 2a+b palabras, # de módulos: m=2a, Palabras por módulo: w=2b palabra módulo a Dirección de memoria b m m(w-1) 2m RIM M0 1 m+1 m(w-1)+1 2m+1 M1 m-1 2m-1 wm-1 3m-1 Mm-1 decodificador RDM

arqAvaPar Vectoriales (Memorias entrelazadas) SIMD-41 Stride=1 ¿Stride=2? Pérdida de eficiencia Módulos M7 t total de un vector grande (m) M6 M5 M4 M3 M2 M1 M0 t de acceso () t de transmisión () Tiempo ¡ Ojo al ubicar matrices en memoria ! ¿Stride = 3? Sin pérdida de eficiencia

arqAvaPar Vectoriales (Memorias entrelazadas) SIMD-42 Entrelazado de orden inferior: Acceso Simultáneo Memoria de 2a+b palabras, # de módulos: m=2a, Palabras por módulo: w=2b M0 M1 Mm-1 1 m-1 m m+1 2m-1 b Ciclo de búsqueda Dirección de memoria 2m 2m+1 3m-1 palabra módulo a m(w-1) m(w-1)+1 wm-1 RIM RIM RIM Ciclo de acceso Multiplexador

arqAvaPar Vectoriales (Memorias entrelazadas) SIMD-43 Módulos Ciclo de búsqueda M7 M6 Ciclo de acceso M5 M4 M3 M2 M1 Tiempo M0 ‘m’ palabras (8) Pérdida de eficiencia para Stride  1

arqAvaPar Vectoriales (Funciones vectoriales compuestas) SIMD-44 Y(I) = S * X(I) + Y(I) Vectorización BUCLE I=1 HASTA 100 CARGA R1,X(I) CARGA R2,Y(I) MULTIPLICA R1,S SUMA R2,R1 ALMACENA Y(I), R2 FIN BUCLE Carga de Vector Escalar x Vector Suma vectorial Almacenamiento de Vector IV1: CARGA VECTOR IV2: CARGA VECTOR IV3: MULTIPLICA VECTOR x ESCALAR IV4: SUMA VECTOR, VECTOR IV5: ALMACENA VECTOR Si disponemos de 2 U.F. (*,+) ¿Ociosa siempre una?

arqAvaPar Vectoriales (Encadenamiento hardware) SIMD-45 Una vez extraídos X e Y, hay que realizar 2 operaciones vectoriales S * X(I) + Y(I) Vx 1 2 3 4 5 6 Vector intermedio Vector intermedio 2 1 3 4 2 1 3 2 1 2 3 4 5 6 2 1 2 S Multiplicador Sumador Vy Etapa de procesamiento Y(I) = S * X(I) + Y(I) Conflicto en los 3 accesos a memoria Cuantos más pipelines de acceso a memoria tengamos, mejor podremos encadenar los procesamientos vectoriales

arqAvaPar Vectoriales (Encadenamiento hardware) SIMD-46 Y(I) = S * X(I) + Y(I) Conflicto en los 3 accesos a memoria Disponiendo de un solo pipeline para acceso a memoria (Cray I): memoria Vy Carga de memoria Carga de Y Etapa 1 memoria Carga de memoria Carga de X Vx Vy S V3 V4 Sumador Multiplicador Etapa de procesamiento Etapa 2 memoria V4 Almacenamiento en memoria Almacenamiento de Y Etapa 3

arqAvaPar Vectoriales (Encadenamiento hardware) SIMD-47 Y(I) = S * X(I) + Y(I) Conflicto en los 3 accesos a memoria Disponiendo de tres pipelines para acceso a memoria (Cray X-MP): memoria Carga de memoria Carga de Y V4 Almacenamiento en memoria Almacenamiento de Y Carga de X Vx Vy S V3 Sumador Multiplicador Etapa de procesamiento Encadenamiento completo

arqAvaPar Vectoriales (Encadenamiento hardware) SIMD-48 Eficiencia sin utilizar encadenamiento: Eficiencia utilizando encadenamiento con un solo pipe de acceso a memoria: Eficiencia utilizando encadenamiento con 3 pipes de acceso a memoria: Carga X Carga Y S * X V + Y Almacena Y t Carga Y Carga X S * X V + Y Almacena Y t Carga X Limitaciones: # Unidades Funcionales # Registros Vectoriales Carga Y S * X V + Y Almacena Y t

arqAvaPar Vectoriales (Ejemplos) SIMD-49 Cray Y-MP 1988 8 registros de 64 elementos Fujitsu VP2000 1990 Fichero registros 64K: 8 x 1024 16 x 512 32 x 256 64 x 128 128 x 64 256 x 32 Earth Simulator 2001 72 registros de 256 elementos + 17 registros máscara 64 bits 128 bits

arqAvaPar Vectoriales (Ejemplos) SIMD-50 http://www.ceva-dsp.com/CEVA-XC12 512 bits

arqAvaPar Vectoriales (Ejemplos) SIMD-51 http://www.ceva-dsp.com/CEVA-XM6

arqAvaPar Vectoriales (Ejemplos) SIMD-52 AVX-512 XeonPhi

arqAvaPar Vectoriales (Ejemplos) SIMD-53 Mandelbrot [4096 colores] FIN