Streaming SIMD Extensions 4
# Streaming SIMD Extensions 4

SSE4 (Streaming SIMD Extensions 4) ist eine Befehlssatzerweiterung, die bei AMD seit AMD Bulldozer und bei Intel seit der Penryn-Variante der Core-2-Prozessoren verwendet wird. Der zweite Teil, SSE4.2 genannt, wurde mit der Intel-Nehalem-Mikroarchitektur eingeführt.

Intel SSE4 besteht aus 54 Befehlen. Der erste Teil von 47 Befehlen erschien unter dem Namen SSE4.1. Darüber hinaus erschienen noch einmal sieben Befehle als SSE4.2 ab Core i7 ab der Variante Nehalem.

AMD fügte anstelle dessen mit der K10-Architektur vier eigene Befehle hinzu und veröffentlichte diesen Instruktionssatz unter dem Namen SSE4a. Die Prozessoren der Bulldozer-Mikroarchitektur, die im Oktober 2011 veröffentlicht wurden, unterstützen zusätzlich zu SSE4a auch SSE4.1 und 4.2 vollständig. Intel-Prozessoren unterstützen im Gegenzug die SSE4a-Befehle bis heute nicht.

## Instruktionen

Im Folgenden eine unvollständige Auflistung der neu eingeführten Befehle und ihrer Einsatzbereiche.

### SSE 4.1

* Skalarprodukt bestimmen – DPPS, DPPD

    z. B. für 3D-Grafiken, Spiele
* Bedingtes Überblenden – BLENDPS/-D, BLENDVPS/-D, PBLENDVB, PBLENDDW

    z. B. für Bildverarbeitung, Multimedia, Spiele
* Minima bzw. Maxima bestimmen – PMINSB, PMAXSB, PMINUW, PMAXUW, PMINUD, PMAXUD, PMINSD, PMAXSD

    z. B. für Bildverarbeitung, Multimedia, Spiele
* Integerumwandlung – PMOVSXBW/-D/-Q, PMOVZXBW/-D/-Q, PMOVSXWD/-Q, PMOVZXWD/-Q, PMOVSXDQ, PMOVZXDQ

    z. B. für Bildverarbeitung, Multimedia, Spiele

### SSE 4.2

* Zyklische Redundanzprüfung – CRC32

    Beschleunigte Prüfsummenberechnung. Implementiert die Castagnoli-Variante (CRC-32C) und ist daher inkompatibel zur in IEEE 802.3 standardisierten CRC32-Variante, welche in Netzwerkprotokollen (wie Ethernet, V.42), SATA, MPEG-2, PNG, und im UNIX-cksum-Kommando zum Einsatz kommt. CRC-32C kommt unter anderem bei iSCSI und bei dem Linux Dateisystem Btrfs zum Einsatz.
* Erweiterte String-Operationen – PCMPESTRI, PCMPESTRM, PCMPISTRI, PCMPISTRM

    Leistungssteigerung für Virenscanner, Datenbanken und Textverarbeitung. Da die Operationen, wie in SSE üblich, auch hier auf 128-Bit-Operanden basieren, werden nur Strings bis zu einer maximalen Länge von 16 Bytes, bzw. bis zu 8 UCS-2-Zeichen, verarbeitet. Die möglichen Funktionen sind im Einzelnen
   * Vergleiche Zeichenketten

   * Finde Zeichen aus einer spezifizierten Menge

   * Finde Zeichen aus spezifizierten Intervallen

   * Suche, ob eine Zeichenkette in einer anderen enthalten ist
