ScholarGate
Asistente

SIMD y procesadores vectoriales

Los procesadores SIMD y vectoriales explotan el paralelismo a nivel de datos aplicando una única instrucción a muchos elementos de datos a la vez, acelerando cálculos regulares y repetitivos como los núcleos multimedia, científicos y de aprendizaje automático.

Encontrar tema con PaperMindPróximamenteFind papers & topics
Tools & resources
Descargar diapositivas
Learn & explore
VídeoPróximamente

Definition

SIMD (instrucción única, datos múltiples) y el procesamiento vectorial son técnicas arquitectónicas en las que una instrucción realiza simultáneamente la misma operación en múltiples elementos de datos contenidos en registros vectoriales anchos o carriles SIMD, explotando el paralelismo a nivel de datos.

Scope

Este tema abarca la ejecución de instrucción única, datos múltiples (SIMD): procesadores vectoriales clásicos con registros vectoriales y carriles segmentados, extensiones SIMD en CPU comerciales, enmascaramiento y predicación, y las condiciones bajo las cuales el paralelismo de datos es rentable. Trata la arquitectura del hardware de paralelismo de datos. Excluye el paralelismo a nivel de hilos entre núcleos (multinúcleo y multiprocesadores en chip) y el modelo de GPU con muchísimos núcleos (arquitectura de GPU), con los que se superpone.

Core questions

  • ¿Cómo logra la aplicación de una instrucción a muchos elementos de datos una aceleración paralela?
  • ¿En qué se diferencian los procesadores vectoriales de las extensiones SIMD en las CPU comerciales?
  • ¿Cómo se manejan las operaciones condicionales con enmascaramiento y predicación?
  • ¿Qué tipos de cálculos se benefician más de la ejecución en paralelo de datos?

Key concepts

  • instrucción única, datos múltiples (SIMD)
  • registros y carriles vectoriales
  • longitud del vector y strip mining
  • enmascaramiento y predicación
  • recopilación/dispersión (gather/scatter)
  • extensiones SIMD de CPU
  • paralelismo a nivel de datos
  • ejecución orientada al rendimiento

Key theories

Paralelismo a nivel de datos mediante instrucción única, datos múltiples
Cuando la misma operación se aplica de forma independiente a muchos elementos de una matriz, una instrucción puede impulsar muchos carriles paralelos o una unidad vectorial segmentada, amortizando la búsqueda de instrucciones y el control sobre grandes cantidades de datos y produciendo un alto rendimiento para cálculos regulares.

Mechanisms

Un procesador vectorial mantiene matrices de elementos en registros vectoriales y los procesa a través de unidades funcionales segmentadas o replicadas, con una instrucción que especifica una operación sobre todo el vector; los vectores largos se procesan en bloques (strip mining). Las extensiones SIMD en las CPU proporcionan registros de ancho fijo que operan elemento por elemento. El enmascaramiento permite la ejecución condicional por elemento, y las operaciones de recopilación/dispersión (gather/scatter) manejan el acceso a memoria no contiguo.

Clinical relevance

El hardware de paralelismo de datos proporciona gran parte del rendimiento máximo de los procesadores modernos. Las extensiones SIMD aceleran los códecs multimedia, el procesamiento de imágenes, la física y el álgebra lineal densa que subyace al aprendizaje profundo, mientras que las arquitecturas vectoriales impulsan la supercomputación. Su uso eficaz depende de que los compiladores y programadores expongan cálculos regulares y vectorizables.

History

El procesamiento vectorial fue pionero en superordenadores como el CDC STAR-100 y especialmente el Cray-1 en la década de 1970. El paralelismo de datos reingresó en las CPU comerciales a través de extensiones SIMD (MMX, SSE, AVX, NEON) a partir de finales de la década de 1990, y las extensiones vectoriales escalables y el resurgimiento de las cargas de trabajo numéricas densas renovaron el interés en las arquitecturas vectoriales.

Key figures

  • Seymour Cray
  • Michael J. Flynn
  • John L. Hennessy
  • David A. Patterson

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

¿Cuál es la diferencia entre las extensiones SIMD y un procesador vectorial?
Las extensiones SIMD añaden registros de ancho fijo (por ejemplo, 128 o 256 bits) a una CPU convencional, operando sobre un número determinado de elementos por instrucción. Un procesador vectorial se construye alrededor de registros e instrucciones vectoriales que operan sobre vectores largos, a menudo de longitud variable, típicamente a través de carriles profundamente segmentados.
¿Por qué no todos los programas se benefician de SIMD?
SIMD acelera los cálculos que aplican la misma operación a muchos elementos de datos independientes con acceso regular a la memoria. Los programas dominados por ramificaciones, dependencias de datos irregulares o acceso a memoria disperso obtienen poco beneficio, porque los carriles paralelos no pueden mantenerse ocupados de manera útil.

Methods for this concept

Related concepts