SSE steht für Streaming SIMD Extensions und ist eine Familie von SIMD-Befehlssatzerweiterungen der x86-Architektur. Intel führte SSE 1999 mit dem Pentium III ein – kurz nachdem AMD mit 3DNow! den Anfang gemacht hatte. Das zugrunde liegende Konzept ist SIMD: Ein einziger Befehl verarbeitet mehrere Datenwerte gleichzeitig.

128-Bit-Register: XMM

Die wichtigste Neuerung von SSE sind die eigenen 128-Bit-Register. Im 32-Bit-Modus stehen acht Register xmm0 bis xmm7 zur Verfügung, im 64-Bit-Modus sechzehn (xmm0 bis xmm15). In ein XMM-Register passen vier 32-Bit-Gleitkommazahlen (Single Precision), die eine SSE-Instruktion – etwa addps – alle vier parallel verarbeitet. Anders als die älteren MMX-Register sind die XMM-Register eigenständig und benötigen keine Umschaltung zwischen Ganzzahl- und Gleitkomma-Ebene.

Die SSE-Stufen im Überblick

  • SSE (1999, Pentium III): erste Erweiterung, Single-Precision-Fließkomma mit 128-Bit-Datenpfad
  • SSE2 (2001, Pentium 4): ergänzt Ganzzahl-SIMD und Double-Precision – Kern der x86-SIMD-Verarbeitung
  • SSE3 (2004, Prescott): gezielte Verbesserungen wie horizontale Addition
  • SSSE3: zusätzliche Umordnungs- und Umformungsbefehle
  • SSE4.1 (2007, Penryn) und SSE4.2 (2008, Nehalem): erweitern insbesondere die Ganzzahl-Verarbeitung

Einsatz und Betriebssystem

SSE-Befehle beschleunigen Medienverarbeitung, Bild-/Audio-Codecs, Physikberechnungen und wissenschaftliche Berechnungen. Das Betriebssystem muss die XMM-Register bei jedem Kontextwechsel sichern und wiederherstellen – die Register sind Teil des Prozessorzustands.

Abgrenzung

SIMD ist das allgemeine Konzept der Vektorverarbeitung; SSE ist die konkrete Implementierung auf der x86-Seite. Der Nachfolger AVX verdoppelt die Registerbreite auf 256 Bit und löst SSE in modernen Prozessoren ab. Auf ARM-Prozessoren übernimmt NEON diese Rolle.

Verwandte Grundlagen: Register-Bank, Instruktionssatz, Opcode, x86-64-Architektur, Mikroarchitektur.