Home

SIMDArchitekturen

SIMDArchitekturen bezeichnen eine Klasse von Computerarchitekturen, bei der eine einzelne Befehlsinstanz gleichzeitig auf mehrere Datenpunkte wirkt. Ziel ist die Ausnutzung von Datenparallelität (data-level parallelism) durch sogenannte Lanes in einer Vektor- oder SIMD-Einheit. Eine solche Einheit besitzt Vektorregister unterschiedlicher Breite (typisch 128, 256 oder 512 Bit) und führt dieselbe Operation gleichzeitig auf allen Elementen des Vektors aus. Moderne Designs unterstützen maskierte Operationen, die bedingte Ausführung innerhalb einzelner Lanes erlauben, sowie Lade- und Speichervorgänge, die auf Vektorregister abgebildet werden.

Typische Implementierungen umfassen x86-SIMD-Erweiterungen wie SSE, AVX und AVX-512, ARM NEON sowie Altivec (PowerPC) und RISC-V

Programmierer können SIMD über Compiler-Autovectorisierung oder durch Intrinsics, Compiler-Extensions oder Inline-Assembler nutzen. Entscheidungen zu Speicherordnung, Alignment,

Anwendungsfelder umfassen Multimedia-Verarbeitung, wissenschaftliche Berechnungen, Signalverarbeitung und maschinelles Lernen, in denen große Mengen homogener Daten parallel

V.
In
Grafikkarten-Architekturen
wird
oft
ein
ähnlich
orientiertes
Konzept
verwendet,
das
als
SIMT
(Single
Instruction,
Multiple
Threads)
bekannt
ist,
das
sich
in
der
Praxis
aber
stärker
auf
Threads
statt
substanziell
auf
Lanes
stützt.
Die
Leistungsfähigkeit
von
SIMD
hängt
stark
von
der
Regularität
der
Daten
und
vom
Speicherverhalten
ab:
regelmäßige
Schleifen
mit
zusammenhängenden
Datenlagen
profitieren
am
stärksten;
unstrukturierte
oder
sprunghafte
Zugriffe
mindern
die
Ausnutzung
der
Breite.
Datenformate
und
Maskierung
beeinflussen
Effizienz
und
Portabilität.
Vertreter
moderner
Architekturen
arbeiten
an
variablen
Vektorbreiten
(zum
Beispiel
ARM
SVE,
RISC-V
V)
und
verbesserten
Maskierungsmechanismen,
um
divergenten
Code
besser
zu
handhaben.
bearbeitet
werden.
Herausforderungen
bleiben
Portabilität,
Energieverbrauch
und
effektive
Nutzung
bei
unregelmäßigen
Datenstrukturen.