SIMD und Vektorisierung
Kurz: SIMD („Single Instruction, Multiple Data”) lässt eine einzige CPU-Anweisung gleich mehrere Werte gleichzeitig verarbeiten.
Genauer: Ein breites Register (128, 256 oder 512 Bit) enthält zum Beispiel acht 32-Bit-Zahlen. Eine Addition rechnet alle acht auf einmal. Das beschleunigt Bild-, Audio- und Matrizenrechnung stark.
Im Detail
- Befehlssätze: SSE und AVX bei x86, NEON und SVE bei ARM, RVV bei RISC-V.
- Auto-Vektorisierung: Compiler wandeln einfache Schleifen selbst in SIMD-Code um, wenn es keine Abhängigkeiten zwischen den Durchläufen gibt.
- Von Hand: Über „Intrinsics” (spezielle Funktionen) oder Bibliotheken. Mühsamer, aber kontrollierbar.
- Bremsen: Unausgerichteter Speicherzugriff, Verzweigungen in der Schleife, Datenabhängigkeiten, zu kurze Schleifen.
- Verwandt: GPUs treiben dieses Prinzip viel weiter (SIMT). Siehe KI-Chips im Vergleich.
- Stromverbrauch: Sehr breite Einheiten können den Takt senken (AVX-512-Throttling bei manchen CPUs).
Siehe auch: CPU-Aufbau