Streaming SIMD Extensions

Technology
12 hours ago
8
4
2
Avatar
Author
Albert Flores

SSE (Streaming SIMD Extensions, původně nazvaná ISSE, Internet Streaming SIMD Extensions) je instrukční sada typu SIMD (Single Instruction, Multiple Data - jedna instrukce, více dat) navržená Intelem v roce 1999 pro procesor Pentium III jako odpověď na instrukční sadu 3DNow! od konkurenční společnosti AMD (která debutovala o rok dříve).

SSE obsahuje 70 nových instrukcí.

SSE byla původně známá pod jménem KNI což byla zkratka pro Katmai New Instructions (Katmai bylo první jádro Pentia III). Tato sada instrukcí byla jednou z mála věcí, která odlišovala Pentium III od Pentia II. +more SSE později implementovalo i AMD ve svých procesorech Athlon XP.

Intel později uvedl další revize SSE2 (u Pentia 4 s jádrem Northwood), SSE3 (u Pentia 4 s jádrem Prescott), SSE4 (u Core 2 Duo s jádrem Conroe), SSE4. 1 (Core 2 Duo s jádrem Penryn) a SSE4. +more2 u Core i7 (jádro Nehalem).

* SSE - přidala 70 nových instrukcí * SSE2 - přidala 144 nových instrukcí * SSE3 - přidala 13 nových instrukcí * SSSE3 - přidala 16 nových instrukcí * SSE4 - přidala 47 nových instrukcí * SSE4. 1, 4. +more2 - přidaly 170 nových instrukcí.

SSE1

Registry

náhled SSE původně přidalo 8 nových 128bitových registrů pojmenovaných jako XMM0 až XMM7. +more Rozšíření AMD64 od společnosti AMD přidalo dalších 8 registrů XMM8 až XMM15, jsou přístupné pouze v 64bitovém režimu CPU. K dispozici je nový 32bitový řídící/stavový registr MXCSR.

Každý z nich obsahoval čtyři 32bitové registry pro čísla s plovoucí desetinnou čárkou.

Každý registr obsahoval: * čtyři 32bitové registry pro čísla s plovoucí desetinnou čárkou (single-precision) * dva 64bitové registry pro čísla s plovoucí desetinnou čárkou (double-precision) * dva 64bitové registry pro celá čísla * čtyři 32bitové registry pro celá čísla * osm 16bitových registrů pro krátká celá čísla * šestnáct 8bitových registrů pro byty nebo znaky

Instrukce

SSE představilo jak skalární tak vektorové („sbalené“ do složek/souřadnic) operace. S plovoucí desetinnou čárkou: * přesuny (z paměti do registru, z registru do paměti, mezi registry) ** skalární - MOVSS ** vektorové - MOVAPS, MOVUPS, MOVLPS, MOVHPS, MOVLHPS, MOVHLPS * aritmetické (sčítání, odečítání, násobení, dělení, převrácená hodnota, určení maxima a minima, 2. +more mocnina a odmocnina) ** skalární - ADDSS, SUBSS, MULSS, DIVSS, RCPSS, MAXSS, MINSS, SQRTSS, RSQRTSS ** vektorové - ADDPS, SUBPS, MULPS, DIVPS, RCPPS, MAXPS, MINPS, SQRTPS, RSQRTPS * bitové operace ** vektorové - ANDPS, ORPS, XORPS, ANDNPS * porovnávání ** skalární - CMPSS, COMISS, UCOMISS ** vektorové - CMPPS * „zamíchání“ a „rozbalení“ dat (shuffle and unpack - manipulace s jednotlivými bitovými částmi 128bitového registru) ** vektorové - SHUFPS, UNPCKHPS, UNPCKLPS * datový převod ** skalární - CVTSI2SS, CVTSS2SI, CVTTSS2SI ** vektorové - CVTPI2PS, CVTPS2PI, CVTTPS2PI Celočíselné * aritmetické ** PMULHUW, PSADBW, PAVGB, PAVGW, PMAXUB, PMINUB, PMAXSW, PMINSW * přenos dat ** PEXTRW, PINSRW * jiné ** PMOVMSKB, PSHUFW Ostatní * správa MXCSR ** LDMXCSR, STMXCSR * správa cache a paměti ** MOVNTQ, MOVNTPS, MASKMOVQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE.

Kategorie:Instrukční sady Kategorie:Instrukce architektury x86

5 min read
Share this post:
Like it 8

Leave a Comment

Please, enter your name.
Please, provide a valid email address.
Please, enter your comment.
Enjoy this post? Join Cesko.wiki
Don’t forget to share it
Top