SSSE3 - SSSE3
Supplemental Streaming SIMD Extensions 3 ( SSSE3 oder SSE3S ) ist ein von Intel erstellter SIMD- Befehlssatz und ist die vierte Iteration der SSE- Technologie.
Geschichte
SSSE3 wurde erstmals am 26. Juni 2006 mit den "Woodcrest"-Xeons mit Intel-Prozessoren auf Basis der Core-Mikroarchitektur eingeführt .
SSSE3 wurde für die ersten Prozessordesigns, die es unterstützen sollten , mit den Codenamen Tejas New Instructions (TNI) oder Merom New Instructions (MNI) bezeichnet .
Funktionalität
SSSE3 enthält 16 neue diskrete Befehle. Jeder Befehl kann auf 64-Bit-MMX- oder 128-Bit-XMM-Register wirken. Daher verweisen Intels Materialien auf 32 neue Anweisungen. Sie beinhalten:
- Zwölf Befehle, die horizontale Additions- oder Subtraktionsoperationen ausführen.
- Sechs Anweisungen, die Absolutwerte auswerten.
- Zwei Befehle, die Multiplikations- und Addieroperationen ausführen und die Bewertung von Punktprodukten beschleunigen.
- Zwei Befehle, die gepackte Ganzzahl-Multiplikationsoperationen beschleunigen und ganzzahlige Werte mit Skalierung erzeugen.
- Zwei Befehle, die ein byteweises Mischen an Ort und Stelle gemäß dem zweiten Mischsteueroperanden durchführen.
- Sechs Befehle, die gepackte Ganzzahlen im Zieloperanden negieren, wenn die Vorzeichen des entsprechenden Elements im Quelloperanden kleiner als Null sind.
- Zwei Befehle, die Daten aus der Zusammensetzung zweier Operanden ausrichten.
CPUs mit SSSE3
-
AMD :
- "Cat"-Prozessoren mit geringem Stromverbrauch
- Bobcat-basierte Prozessoren
- Jaguar-basierte Prozessoren und neuere
- Puma-basierte Prozessoren und neuer
- "Heavy Equipment"-Prozessoren
- Bulldozer-basierte Prozessoren
- Piledriver-basierte Prozessoren
- Steamroller-basierte Prozessoren
- Baggerbasierte Prozessoren und neuer
- Zen-basierte Prozessoren
- Zen+-basierte Prozessoren
- Zen2-basierte Prozessoren
- "Cat"-Prozessoren mit geringem Stromverbrauch
-
Intel :
- Xeon 5100-Serie
- Xeon 5300-Serie
- Xeon 5400-Serie
- Xeon 3000-Serie
- Core 2 Duo
- Kern 2 Extrem
- Core 2 Quad
- Core i7
- Core i5
- Core i3
- Pentium Dual Core (sofern 64-Bit-fähig; ab Allendale )
- Celeron 4xx Sequenz Conroe-L
- Celeron Dual-Core E1200
- Celeron M 500-Serie
- Atom
- ÜBER :
Neue Anleitung
In der folgenden Tabelle nimmt satsw(X) (gelesen als 'sättigung in Wort mit Vorzeichen') eine vorzeichenbehaftete ganze Zahl X und wandelt sie in -32768 um, wenn sie kleiner als -32768 ist, in +32767, wenn sie größer als 32767 ist, und lässt es ansonsten unverändert. Wie bei der Intel-Architektur üblich, sind Bytes 8 Bits, Wörter 16 Bits und Dwords 32 Bits; 'register' bezieht sich auf ein MMX- oder XMM-Vektorregister.
PSIGNB, PSIGNW, PSIGND | Gepacktes Zeichen | Negieren Sie die Elemente eines Registers aus Bytes, Wörtern oder D-Worten, wenn das Vorzeichen der entsprechenden Elemente eines anderen Registers negativ ist. |
---|---|---|
PABSB, PABSW, PABSD | Verpackter absoluter Wert | Füllen Sie die Elemente eines Registers aus Bytes, Wörtern oder Dwords mit den Absolutwerten der Elemente eines anderen Registers |
PALIGNR | Gepackt rechts ausrichten | Nehmen Sie zwei Register, verketten Sie ihre Werte und ziehen Sie einen Registerlängenabschnitt aus einem Offset heraus, der durch einen im Befehl codierten unmittelbaren Wert gegeben ist. |
PSHUFB | Gepackte Shuffle-Bytes | nimmt Register von Bytes A = [a 0 a 1 a 2 ...] und B = [b 0 b 1 b 2 ...] und ersetzt A durch [a b0 a b1 a b2 ...]; außer dass es den i-ten Eintrag durch 0 ersetzt, wenn das oberste Bit von b i gesetzt ist. |
PMULHRSW | Verpackt Multiply High mit Round und Scale | behandeln die 16-Bit-Wörter in den Registern A und B als vorzeichenbehaftete 16-Bit-Festkommazahlen zwischen −1.00000000 und +0.99996948... (zB 0x4000 wird als +0.5 behandelt und 0xA000 als −0.75) und multiplizieren sie mit korrekt Rundung. |
PMADDUBSW | Multiplizieren und Addieren von gepackten vorzeichenbehafteten und vorzeichenlosen Bytes | Nehmen Sie die Bytes in den Registern A und B, multiplizieren Sie sie miteinander, addieren Sie Paare, sättigen Sie mit Vorzeichen und speichern Sie sie. Dh [a0 a1 a2 …] pmaddubsw [b0 b1 b2 …] = [satsw(a0b0+a1b1) satsw(a2b2+a3b3) …] |
PHSUBW, PHSUBD | Gepackter horizontaler Subtrahieren (Wörter oder Doppelwörter) | nimmt Register A = [a0 a1 a2 …] und B = [b0 b1 b2 …] und gibt [a0−a1 a2−a3 … b0−b1 b2−b3 …] aus |
PHSUBSW | Gepackte horizontale Wörter subtrahieren und sättigen | wie PHSUBW, gibt aber [satsw(a0−a1) satsw(a2−a3) … satsw(b0−b1) satsw(b2−b3) …] |
PHADDW, PHADDD | Gepacktes horizontales Hinzufügen (Wörter oder Doppelwörter) | nimmt die Register A = [a0 a1 a2 …] und B = [b0 b1 b2 …] und gibt [a0+a1 a2+a3 … b0+b1 b2+b3 …] aus |
PHADDSW | Gepackte horizontale Wörter hinzufügen und sättigen | wie PHADDW, gibt aber aus [satsw(a0+a1) satsw(a2+a3) … satsw(b0+b1) satsw(b2+b3) …] |
Siehe auch
Verweise
Externe Links
- Core 2 Mobile-Spezifikationen
- Intel Whitepaper, das die Existenz von SSSE3 zugibt und SSE4 beschreibt
- Befehlssatz-Dokumentation, die die Funktionen der SSSE3-Befehle auflistet