Saltar al contenido principal
LibreTexts Español

2.2: Procesamiento de vectores cortos (Operaciones multimedia)

  • Page ID
    154348
  • \( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\!-\!\rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span}}\) \( \newcommand{\kernel}{\mathrm{null}\,}\) \( \newcommand{\range}{\mathrm{range}\,}\) \( \newcommand{\RealPart}{\mathrm{Re}}\) \( \newcommand{\ImaginaryPart}{\mathrm{Im}}\) \( \newcommand{\Argument}{\mathrm{Arg}}\) \( \newcommand{\norm}[1]{\| #1 \|}\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\AA}{\unicode[.8,0]{x212B}}\)

    Introducción

    Esta sección introduce al alumno al procesamiento de vectores cortos (operaciones multimedia) que inicialmente se desarrolló para aplicaciones de supercomputación. Hoy es importante para las operaciones multimedia.

    Detalles de la actividad

    Procesador vectorial

    También se llama procesador de matriz y es una unidad central de procesamiento (CPU) que implementa un conjunto de instrucciones que contiene instrucciones que operan en matrices unidimensionales de datos llamadas vectores, en comparación con los procesadores escalares, cuyas instrucciones operan en elementos de datos individuales. Los procesadores vectoriales pueden mejorar en gran medida el rendimiento en ciertas cargas de trabajo, especialmente la simulación numérica y tareas similares.

    Comúnmente se les llama supercomputadoras, los procesadores vectoriales son máquinas construidas principalmente para manejar grandes cálculos científicos y de ingeniería. Su rendimiento deriva de una arquitectura fuertemente canalizada que las operaciones en vectores y matrices pueden explotar de manera eficiente.

    Los procesadores vectoriales tienen operaciones de alto nivel que funcionan en matrices lineales de números: “vectores”.

    Propiedades de Procesadores Vectoriales

    los procesadores vectoriales tienen las siguientes propiedades;

    1. La instrucción de un solo vector implica mucho trabajo (bucle), es decir, tiene menos búsquedas de instrucciones

    2. Cada resultado independiente del resultado anterior.
      a. Se pueden ejecutar múltiples operaciones en paralelo
      b. Diseño más simple, alta frecuencia de reloj
      c. El compilador (programador) garantiza que no haya dependencias

    3. Reduce los problemas de sucursales y sucursales en tuberías

    4. Las instrucciones vectoriales acceden a la memoria con patrón
      conocido a. Prefetching efectivo
      b. Amortizar la latencia de memoria de más de un gran número de elementos
      c. Puede explotar un sistema de memoria de alto ancho de banda
      d. ¡No se requieren caches (de datos)!

    Estilos de Arquitecturas Vectoriales

    Son de dos estilos

    1. Procesadores vectoriales de memoria

      a. Todas las operaciones vectoriales son de memoria a memoria

    2. Procesadores de registro vectorial

      1. Todas las operaciones vectoriales entre registros vectoriales (excepto carga vectorial y almacenamiento)

      2. Equivalente vectorial de arquitecturas de almacén de carga

      3. Incluye todas las máquinas vectoriales desde finales de los 80

      4. Asumimos vector-registro para el resto de la conferencia

    Componentes de un procesador vectorial

    • CPU escalar: registros, rutas de datos, lógica de búsqueda de instrucciones

    • Registro vectorial

      • Banco de memoria de longitud fija que contiene un solo vector

      • Normalmente 8-32 registros vectoriales, cada uno con 1 a 8 Kbits

      • Tiene al menos 2 puertos de lectura y 1 de escritura

      • MM: Se puede ver como una matriz de elementos 64b, 32b, 16b u 8b

    • Unidades funcionales vectoriales (UF)

      • Completamente canalizado, comienza una nueva operación cada reloj

      • Típicamente de 2 a 8 UF: entero y FP

      • Múltiples rutas de datos (canalizaciones) utilizadas para cada unidad para procesar múltiples elementos por ciclo

    • Unidades vectoriales de almacenamiento de carga (LSU)

      • Unidad completamente canalizada para cargar o almacenar un vector

      • Múltiples elementos buscados/almacenados por ciclo

      • Puede tener múltiples LSU

    Barra transversal para conectar UF, LSU, registros Instrucciones vectoriales básicas

    Estos se encuentran en la Tabla 1 a continuación;

    Tabla 1

    Instr. Operandos Operación Comentar
    VA.VV V1, V2, V3 V1 = V2 + V3 vector + vector
    VADD.SV V1, R0, V2 V1 = R0 + V2 escalar + vector
    VMUL.VV V1, V2, V3 V1 = V2\(\times\) V3 vector\(\times\) vector
    VMUL.SV V1, R0, V2 V1 = R0\(\times\) V2 \(\times\)vector escalar
    VLD V1, R1 V1 = M [R1.. R1 + 63] carga, zancada = 1
    VLDS V1, R1, R2 V1 = M [R1.. R1 + 63*R2] carga, zancada = R2
    VLDX V1, R1, V2 V1 = M [R1 + V2i, i = 0.. 63] indexado (“reunir”)
    VST V1, R1 M [R1.. R1 + 63] = V1 tienda, zancada = 1
    VSTS V1, R1, R2 V1 = M [R1.. R1 + 63*R2] tienda, zancada = R2
    VSTX V1, R1, V2 V1 = M [R1 + V2i, i=0.. 63] indexado (“scatter”)

    + todas las instrucciones escalares regulares (estilo RISC)...

    Tabla 1

    Operaciones de memoria vectorial

    • Las operaciones de carga/almacenamiento mueven grupos de datos entre registros y memoria

    • Tres tipos de direccionamiento

    • Zancada de la unidad

    • Más rápido

    • Zancada no unitaria (constante)

    • Indexado (recopilar-dispersión)

    • Equivalente vectorial de registro indirecto

    • Bueno para arreglos de datos dispersos

    • Aumenta el número de programas que vectorizan

    • comprimir/expandir variante también

    • Soporte para varias combinaciones de anchos de datos en la memoria

      • {.L, .W, .H., .B}\(\times\) {64b, 32b, 16b, 8b}

    Ejemplo de código vectorial

    Y [0:63] = Y [0:653] + A*x [0:63]

    Véase el cuadro 2 y 3 a continuación;

    Cuadro 2

    64 elementos SAXPY: escalar 64 elementos SAXPY: vector
    LD R0, un LD R0, a #load escalar
    a
    ADDI R4, Rx, #512 VLD, V1, Rx #load vector
    X
    bucle: LD R2, 0 (Rx) VMUL.SV
    V2, R0, V1
    #vector mult
    MULTD R2, R0, R2 VLD V3, Ry #load vector
    Y
    LD R4, 0 (Ry) VADD.VV
    V4, V2, V3
    #vector agregar
    ADDD R4, R2, R4 VST Ry, V4 #store
    Vector Y

    Cuadro 3

    SD R4, 0 (Ry)
    ADDI Rx, Rx, #8
    ADDI Ry, Ry, #8
    SUB R20, R4, Rx
    BNZ R20, bucle

    Longitud del vector

    El registro vectorial puede contener algún número máximo de elementos para cada ancho de datos (longitud máxima del vector o MVL). ¿Qué hacer cuando la longitud del vector de aplicación no es exactamente MVL? El registro de longitud vectorial (VL) controla la longitud de cualquier operación de vector, incluyendo una carga o almacén vectorial Por ejemplo, vado.vv con VL=10 es para (I=0; I<10; I++) V1 [I] =V2 [I] +V3 [I]

    El VL puede ser cualquier cosa, desde 0 hasta MVL

    Conclusión

    La sección introdujo al alumno al procesamiento de vectores cortos (operaciones multimedia) que se utiliza para las operaciones en matriz lineal de alto nivel de números.

    Evaluación

    1. Indicar las propiedades de los procesadores vectoriales

    • Cada resultado independiente del resultado anterior

    => Pipeline largo, el compilador garantiza que no haya dependencias

    => Alta frecuencia de reloj

    • Instrucciones vectoriales acceden a la memoria con patrón conocido

    => Memoria altamente intercalada

    => Amortizar la latencia de memoria de más de\(\approx\) 64 elementos

    => ¡No se requieren cachés (de datos)! (Usar caché de instrucciones)

    • Reduce los problemas de sucursales y sucursales en tuberías
    • La instrucción de un solo vector implica mucho trabajo (\(\approx\)bucle)

    => Menos busques de instrucciones


    This page titled 2.2: Procesamiento de vectores cortos (Operaciones multimedia) is shared under a CC BY-SA license and was authored, remixed, and/or curated by Harrison Njoroge (African Virtual University) .