Unidad 3. Arquitecturas SIMD Procesadores Vectoriales y Matriciales Docente: Ing. José Díaz Chow
Recordemos … Taxonomía de Flynn SISD: Flujo simple de instrucciones, flujo simple de datos. SIMD: Flujo simple de instrucciones, flujo de múltiples datos. MISM: Flujo de múltiples instrucciones, flujo simple de datos. MIMD: Flujo de múltiples instrucciones, flujo de múltiples datos. Recordemos …
Explicar las necesidades que propiciaron la aparición de las Arquitecturas Vectoriales y Matriciales, estableciendo diferencias en el enfoque y solución que implementa cada una de ellas. Identificar el tipo y nivel de paralelismo alcanzado en procesadores vectoriales y matriciales. Explicar los tipos de Arquitecturas SIMD, tipo y nivel de paralelismo alcanzado en cada una de ellas. Objetivos
Limitaciones de desempeño en el campo de la computación científica. Necesidad de procesar gran volumen de información. Necesidad de procesar vectores y Matrices, no solo escalares. Introducción
Introducción Algoritmos secuenciales para cálculo vectorial. Ejemplo: Multiplicación de Matrices: C[] = A[] x B[] - Algoritmo costoso: O(n3). FOR I = 1 TO N FOR J=1 TO M C[I,J] = 0.0 FOR K=1 TO L C[I,J] = C[I,J]+A[I,K]*B[K,J] END FOR t N Introducción
Caracteristicas Colección o arreglo de datos. Almacenados en celdas contiguas en la memoria. Independencia de datos (operación en elemento [i, j] no depende de resultado en [i-1, j-1]). Una misma operación sobre todo un conjunto de datos. Caracteristicas
Operaciones f1: V V (VSQRT, VSIN, VCOS ) f2: V E (VSUM:Sumatoria de elementos, VMAX, VMIN) f3: V x V V (VADD, VMP:Multiplicación de vectores o matrices) f4: V x E V (SMUL:Escalación del vector, SADD:Desplazamiento) f5: V x V E (SMP:Producto punto de vectores) Operaciones
Exigencias Manejo de operandos vectoriales y escalares Algoritmos idóneos al cálculo vectorial: múltiples datos operados a la vez. Ejecución a alta velocidad: Transferencia desde memoria a alta velocidad. Exigencias
Soluciones Procesadores Vectoriales Procesadores Matriciales Utilizaron el beneficio de los cauces para acelerar el rendimiento de cálculo vectorial. Procesadores Matriciales Implementación de retículas de unidades de ejecución denominadas EP (Elementos de Procesamiento) que pueden trasladar datos entre la memoria y otros EPs, y realizar operaciones con estos datos, ya sea síncrona o asincronamente. Soluciones
Implementaciones Inicios de 1960: Proyecto Salomon en Westinghouse. 1 CPU coordinando múltiples ALUs Nunca construido 1972: Illiac IV en la IU@Urbana : PA Meta: 1 GFlop con 256 EP Logrado: 100MFlop con 64 EP Usado en cálculos de dinámica de fluidos. Demostró la eficacia de los SIMD en cálculos intensivos con matrices. Implementaciones
Mediados de los 70: CDC STAR-100 y Texas Instruments Advanced Scientific Computer TI-ASC. Procesadores vectoriales Aprovechamiento de la segmentación Escalaridad (cada cauce ~ 20 MFlops) Máquinas Memoria-Memoria Mediados 70: Cray-1. Supercomputador vectorial (80 a 240 Mflops) Máquina Registro a Registro Encadenamiento de vectores Enmascaramiento de vectores 64 registros vectoriales de 64 palabras Implementaciones
Implementaciones Finales 70: Supercomputadoras Japonesas Vectoriales Fujitsu, Hitachi y NEC Máquinas Registro a Registro Rendimiento similar al Cray pero menor tamaño. Finales 70: FPS Processor Array asociado. Processor Array asociado para minicomputadoras. Finales 70 y 80’s: Cray-2, Cray X-MP y Cray Y-MP Cray se mantiene como lider. Migración de Vector Processor – Processor Arrays –Multiprocesadores. Implementaciones
Implementaciones Otras formas de computación SIMD Objetivo: Reducción del BW requerido por Processor Array. WaveFront Processors Principio de disparo y expansión. Procesamiento de señales: DSP, Multimedia Systolic Processors Cauce reticular Associative Processors Basado en memoria asociativa Operación aplicada a coincidencias. Implementaciones
Arquitecturas SIMD Procesadores Vectoriales Procesadores Matriciales Arquitecturas Memoria a Memoria Arquitecturas Registro a Registro Procesadores Matriciales Array Processor Systolic Processors Associative Processors Wavefront Processors Arquitecturas SIMD
Procesadores vectoriales Las características y exigencias del procesamiento vectorial son propias para la ejecución segmentada. Alto rendimiento con cauce lleno: resultados en cada ciclo. No riesgos estructurales, de datos o control. Exigencias: flujo de datos de entrada y la recepción de salida. Procesadores vectoriales
Procesadores vectoriales Arquitecturas que emplean cauces para procesamiento de vectores. Operación del cauce equivalente a ciclo completo. Reduce fetch, decode y control. Procesadores vectoriales
Procesadores vectoriales Cauces aritméticos. Entradas: Vector –Vector o Vector-Escalar. Salida a Vector o Escalar. Requieren registros especiales para control de la longitud del vector. Formato especial de instrucción Procesadores vectoriales
Procesadores Vectoriales Esquemas o métodos de procesamiento para tratamiento de matrices Procesamiento horizontal (filas: izq der) Procesamiento vertical ( columnas: arriba abajo) Procesamiento en bucle ( ciclos de sub-matrices ) Tiempo de retardo de inicialización o preparación del cauce y de paso o flushing. t = tinicialización + tpaso Procesadores Vectoriales
Procesadores Vectoriales Entrada de datos/Recepción de salida a alta velocidad. Desde Memoria (Requerido acceso rápido) Usar registros vectoriales Dos enfoques de implementación: Supercomputadores Vectoriales Procesadores vectoriales Asociados Procesadores Vectoriales
VP M – M Los operandos vectoriales residen en memoria. Operación requiere carga de operandos a cauces y almacenamiento de resultados a memoria al vuelo. Se requieren memorias de alta velocidad, ideal: entregar un par de datos y recibir un resultado por ciclo. Alto tiempo de preparación (típico ~20 ciclos) Rendimiento favorecido con vectores grandes. VP M – M
VP M – M Uso de memorias entrelazadas. Una búsqueda + ráfaga de datos. Capacidad de entregar y recibir múltiples datos. Procesamiento en flujo continuo. VP M – M
Formato requiere especificar direcciones en memoria de los vectores y en algunas máquinas con palabras variables, el incremento o tamaño del elemento así como el tamaño del vector. VP M – M
VP R-R Emplean banco de registros vectoriales. Carga de Memoria a registros a alta velocidad. Tamaño restringido de los registros vectoriales (64, 72, 128 elementos) Ejecución en partes para vectores largos. VP R-R
Menor tiempo de preparación y en general menor ciclo de máquina que la M-M. Mejor desempeño que M-M con vectores de longitud pequeña y mediana. Capacidad de enmascaramiento de elementos de vectores. Capacidad de encadenamiento de cauces. Predominan sobre las M-M. VP R-R
Formatos de instrucción usan directamente registros vectoriales / escalares (Instrucciones de carga) o direcciones de memoria y registros a emplear. VP R-R
VP R-R Múltiples unidades Vectoriales y Escalares. Prefetch + Ejecución simultánea de varias instrucciones Tratar potenciales dependencias de datos. VP R-R
Encadenamiento de cauces: ejecución paralela de varias instrucciones con dependencias R-D. VP R-R
VP R-R Enmascaramiento de operaciones vectoriales. Selección de qué elementos son sujetos de operación. Luego de operación C[] vale: A[] = 1 2 3 4 5 B[] = 10 20 30 40 50 M1[] = C[] = 7 C[] = 11 7 33 55 VP R-R