ScholarGate
Assistant

SIMD et processeurs vectoriels

Les processeurs SIMD et vectoriels exploitent le parallélisme au niveau des données en appliquant une seule instruction à de nombreux éléments de données simultanément, accélérant ainsi les calculs réguliers et répétitifs tels que les noyaux multimédia, scientifiques et d'apprentissage automatique.

Trouver un sujet avec PaperMindBientôtFind papers & topics
Tools & resources
Télécharger les diapositives
Learn & explore
VidéoBientôt

Definition

Le SIMD (Single-Instruction Multiple-Data, instruction unique, données multiples) et le traitement vectoriel sont des techniques architecturales dans lesquelles une instruction exécute simultanément la même opération sur plusieurs éléments de données contenus dans de larges registres vectoriels ou des unités SIMD, exploitant ainsi le parallélisme au niveau des données.

Scope

Ce sujet couvre l'exécution à instruction unique et données multiples (SIMD) : les processeurs vectoriels classiques avec registres vectoriels et unités de traitement pipelinées, les extensions SIMD dans les CPU grand public, le masquage et la prédication, ainsi que les conditions dans lesquelles le parallélisme des données est avantageux. Il traite de l'architecture du matériel parallèle aux données. Il exclut le parallélisme au niveau des threads entre les cœurs (multicœur et multiprocesseurs sur puce) et le modèle GPU à très nombreux cœurs (architecture GPU), avec lesquels il présente des chevauchements.

Core questions

  • Comment l'application d'une instruction à de nombreux éléments de données permet-elle d'obtenir une accélération parallèle ?
  • En quoi les processeurs vectoriels diffèrent-ils des extensions SIMD dans les CPU grand public ?
  • Comment les opérations conditionnelles sont-elles gérées avec le masquage et la prédication ?
  • Quels types de calculs bénéficient le plus de l'exécution parallèle aux données ?

Key concepts

  • instruction unique, données multiples (SIMD)
  • registres et unités vectoriels
  • longueur de vecteur et découpage en bandes ('strip mining')
  • masquage et prédication
  • regroupement/dispersion ('gather/scatter')
  • extensions SIMD pour CPU
  • parallélisme au niveau des données
  • exécution orientée débit

Key theories

Parallélisme au niveau des données via l'instruction unique, données multiples
Lorsque la même opération s'applique indépendamment à de nombreux éléments d'un tableau, une seule instruction peut piloter plusieurs unités parallèles ou une unité vectorielle pipelinée, amortissant ainsi la récupération et le contrôle des instructions sur de grandes quantités de données et offrant un débit élevé pour les calculs réguliers.

Mechanisms

Un processeur vectoriel stocke des tableaux d'éléments dans des registres vectoriels et les traite via des unités fonctionnelles pipelinées ou répliquées, une seule instruction spécifiant une opération sur l'ensemble du vecteur ; les vecteurs longs sont traités par blocs (découpage en bandes ou 'strip mining'). Les extensions SIMD dans les CPU fournissent des registres de largeur fixe sur lesquels les opérations sont effectuées élément par élément. Le masquage permet une exécution conditionnelle par élément, et les opérations de regroupement/dispersion ('gather/scatter') gèrent l'accès à la mémoire non contigu.

Clinical relevance

Le matériel parallèle aux données assure une grande partie du débit de pointe des processeurs modernes. Les extensions SIMD accélèrent les codecs multimédia, le traitement d'images, la physique et l'algèbre linéaire dense qui sous-tend l'apprentissage profond, tandis que les architectures vectorielles alimentent le supercalcul. Une utilisation efficace dépend de la capacité des compilateurs et des programmeurs à exposer des calculs réguliers et vectorisables.

History

Le traitement vectoriel a été initié par des supercalculateurs tels que le CDC STAR-100 et surtout le Cray-1 dans les années 1970. Le parallélisme des données est réapparu dans les CPU grand public grâce aux extensions SIMD (MMX, SSE, AVX, NEON) à partir de la fin des années 1990, et les extensions vectorielles évolutives ainsi que la résurgence des charges de travail numériques denses ont ravivé l'intérêt pour les architectures vectorielles.

Key figures

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

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

Quelle est la différence entre les extensions SIMD et un processeur vectoriel ?
Les extensions SIMD ajoutent des registres de largeur fixe (par exemple 128 ou 256 bits) à un CPU conventionnel, opérant sur un nombre défini d'éléments par instruction. Un processeur vectoriel est conçu autour de registres vectoriels et d'instructions qui opèrent sur des vecteurs longs, souvent de longueur variable, généralement via des unités de traitement profondément pipelinées.
Pourquoi tous les programmes ne bénéficient-ils pas du SIMD ?
Le SIMD accélère les calculs qui appliquent la même opération à de nombreux éléments de données indépendants avec un accès mémoire régulier. Les programmes dominés par les branchements, les dépendances de données irrégulières ou les accès mémoire dispersés en tirent peu d'avantages, car les unités parallèles ne peuvent pas être maintenues utilement occupées.

Methods for this concept

Related concepts