ScholarGate
Assistent

SIMD und Vektorprozessoren

SIMD- und Vektorprozessoren nutzen Datenparallelität, indem sie eine einzelne Anweisung gleichzeitig auf viele Datenelemente anwenden, wodurch regelmäßige, repetitive Berechnungen wie Multimedia-, wissenschaftliche und maschinelle Lern-Kernels beschleunigt werden.

Thema finden mit PaperMindDemnächstFind papers & topics
Tools & resources
Folien herunterladen
Learn & explore
VideoDemnächst

Definition

SIMD (Single-Instruction Multiple-Data) und Vektorverarbeitung sind architektonische Techniken, bei denen eine Anweisung gleichzeitig dieselbe Operation auf mehrere Datenelemente ausführt, die in breiten Vektorregistern oder SIMD-Lanes gehalten werden, wodurch Datenparallelität genutzt wird.

Scope

Dieses Thema behandelt die Ausführung von Single-Instruction Multiple-Data (SIMD): klassische Vektorprozessoren mit Vektorregistern und pipelinierten Lanes, SIMD-Erweiterungen in handelsüblichen CPUs, Maskierung und Prädikation sowie die Bedingungen, unter denen Datenparallelität vorteilhaft ist. Es behandelt die Architektur datenparalleler Hardware. Ausgeschlossen sind Thread-Level-Parallelität über Kerne hinweg (Multicore- und Chip-Multiprozessoren) und das massiv vielkernige GPU-Modell (GPU-Architektur), mit denen es sich überschneidet.

Core questions

  • Wie führt die Anwendung einer Anweisung auf viele Datenelemente zu einer parallelen Beschleunigung?
  • Wie unterscheiden sich Vektorprozessoren von SIMD-Erweiterungen in handelsüblichen CPUs?
  • Wie werden bedingte Operationen mit Maskierung und Prädikation gehandhabt?
  • Welche Arten von Berechnungen profitieren am meisten von der datenparallelen Ausführung?

Key concepts

  • Single-Instruction Multiple-Data (SIMD)
  • Vektorregister und Lanes
  • Vektorlänge und Strip Mining
  • Maskierung und Prädikation
  • Gather/Scatter
  • SIMD-CPU-Erweiterungen
  • Datenparallelität
  • durchsatzorientierte Ausführung

Key theories

Datenparallelität über Single-Instruction Multiple-Data
Wenn dieselbe Operation unabhängig auf viele Elemente eines Arrays angewendet wird, kann eine Anweisung viele parallele Lanes oder eine pipelinierte Vektoreinheit ansteuern, wodurch der Befehlsabruf und die Steuerung über große Datenmengen amortisiert werden und ein hoher Durchsatz für regelmäßige Berechnungen erzielt wird.

Mechanisms

Ein Vektorprozessor speichert Element-Arrays in Vektorregistern und verarbeitet sie über pipelinierte oder replizierte Funktionseinheiten, wobei eine Anweisung eine Operation über den gesamten Vektor spezifiziert; lange Vektoren werden in Blöcken verarbeitet (Strip Mining). SIMD-Erweiterungen in CPUs bieten Register fester Breite, die elementweise betrieben werden. Maskierung ermöglicht die bedingte Ausführung pro Element, und Gather/Scatter-Operationen handhaben nicht zusammenhängenden Speicherzugriff.

Clinical relevance

Datenparallele Hardware liefert einen Großteil des Spitzen-Durchsatzes moderner Prozessoren. SIMD-Erweiterungen beschleunigen Medien-Codecs, Bildverarbeitung, Physik und die dichte lineare Algebra, die dem Deep Learning zugrunde liegt, während Vektorarchitekturen das Supercomputing antreiben. Eine effektive Nutzung hängt davon ab, dass Compiler und Programmierer regelmäßige, vektorisierbare Berechnungen offenlegen.

History

Die Vektorverarbeitung wurde in den 1970er Jahren von Supercomputern wie dem CDC STAR-100 und insbesondere dem Cray-1 vorangetrieben. Die Datenparallelität kehrte ab den späten 1990er Jahren durch SIMD-Erweiterungen (MMX, SSE, AVX, NEON) in handelsübliche CPUs zurück, und skalierbare Vektorerweiterungen sowie das Wiederaufleben dichter numerischer Workloads erneuerten das Interesse an Vektorarchitekturen.

Key figures

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

Related topics

Seminal works

  • hennessy2019
  • patterson2020

Frequently asked questions

Was ist der Unterschied zwischen SIMD-Erweiterungen und einem Vektorprozessor?
SIMD-Erweiterungen fügen einer konventionellen CPU Register fester Breite (z. B. 128 oder 256 Bit) hinzu, die eine festgelegte Anzahl von Elementen pro Anweisung verarbeiten. Ein Vektorprozessor ist um Vektorregister und Anweisungen herum aufgebaut, die über lange, oft variable Vektoren operieren, typischerweise durch tief pipelinierte Lanes.
Warum profitieren nicht alle Programme von SIMD?
SIMD beschleunigt Berechnungen, die dieselbe Operation auf viele unabhängige Datenelemente mit regelmäßigem Speicherzugriff anwenden. Programme, die von Verzweigungen, unregelmäßigen Datenabhängigkeiten oder verstreutem Speicherzugriff dominiert werden, profitieren wenig, da die parallelen Lanes nicht sinnvoll ausgelastet werden können.

Methods for this concept

Related concepts