Streaming SIMD Extensions
SSE (Streaming SIMD Extensions, pôvodne nazvaná ISSE, INTERNET Streaming SIMD Extensions) je inštrukčná sada typu SIMD (Single Instruction, Multiple Data - jedna inštrukcia, viac dát) navrhnutá Intelom v roku 1999 pre procesor Pentium III ako odpoveď na inštrukčnú sadu 3DNow! od konkurenčnej spoločnosti AMD (ktorá debutovala o rok skôr).
SSE obsahuje 70 nových inštrukcií.
SSE bola pôvodne známa pod menom KNI čo bola skratka pre Katmai New Instructions (Katmai bolo prvé jadro Pentia III). Táto sada inštrukcií bola jednou z mála vecí, ktorá odlišovala Pentium III od Pentia II. SSE neskôr implementovalo aj AMD vo svojich procesoroch Athlon XP.
Intel neskôr uviedol ďalšiu revíziu SSE2 (u Pentium 4 s jadrom Northwood), SSE3 (u Pentium 4 s jadrom Prescott), SSE4 (u Core 2 Duo s jadrom Conroe), SSE4.1 (Core 2 Duo s jadrom Penryn) a SSE4.2 u Core i7 (jadro Nehalem).
- SSE - pridala 70 nových inštrukcií
- SSE2 - pridala 144 nových inštrukcií
- SSE3 - pridala 13 nových inštrukcií
- SSSE3 - pridala 16 nových inštrukcií
- SSE4 - pridala 47 nových inštrukcií
- SSE4.1, 4.2 - pridali 170 nových inštrukcií
SSE1
Registre
SSE pôvodne pridalo 8 nových 128-bitových registrov pomenovaných ako XMM0 až XMM7. Rozšírenie AMD64 od spoločnosti AMD pridalo ďalších 8 registrov XMM8 až XMM15, sú prístupné len v 64-bitovom režime CPU. K dispozícii je nový 32-bitový riadiaci/stavový register MXCSR.
Každý z nich obsahoval štyri 32-bitové registre pre čísla s plávajúcou desatinnou čiarkou.
Každý register obsahoval:
- Štyri 32-bitové registre pre čísla s plávajúcou desatinnou čiarkou (single-precision)
- Dva 64-bitové registre pre čísla s plávajúcou desatinnou čiarkou (double-precision)
- Dva 64-bitové registre pre celé čísla
- Štyri 32-bitové registre pre celé čísla
- Osem 16-bitových registrov pre krátke celé čísla
- Šestnásť 8-bitových registrov pre byty alebo znaky
Inštrukcie
SSE predstavilo ako skalárne tak vektorové ("zbalené" do priečinkov/súradníc) operácie.
- S plávajúcou desatinnou čiarkou
- Presuny (z pamäte do registra, z registra do pamäte, medzi registrami)
- Skalárne - MOVSS
- Vektorové - MOVAPS, MOVUPS, MOVLPS, MOVHPS, MOVLHPS, MOVHLPS
- Aritmetické (sčítanie, odčítanie, násobenie, delenie, prevrátená hodnota, určenie maxima a minima, 2. mocnina a odmocnina)
- Skalárne - ADDSS, SUBSS, MULSS, DIVSS, RCPSS, MAXSS, MINSS, SQRTSS, RSQRTSS
- Vektorové - ADDPS, SUBPS, MULPS, DIVPS, RCPPS, MAXPS, MINPS, SQRTPS, RSQRTPS
- Bitové operácie
- Vektorové - ANDPS, ORPS, XORPS, ANDNPS
- Porovnávanie
- Skalárne - CMPSS, COMISS, UCOMISS
- Vektorové - CMPPS
- "Zamiešanie" a "rozbalenie" dát (shuffle and unpack - manipulácia s jednotlivými bitovými časťami 128bitového registra)
- Vektorové - SHUFPS, UNPCKHPS, UNPCKLPS
- Dátový prevod
- Skalárne - CVTSI2SS, CVTSS2SI, CVTTSS2SI
- Vektorové - CVTPI2PS, CVTPS2PI, CVTTPS2PI
- Celočíselné
- Aritmetické
- PMULHUW, PSADBW, PAVGB, PAVGW, PMAXUB, PMINUB, PMAXSW, PMINSW
- Prenos dát
- PEXTRW, PINSRW
- Iné
- PMOVMSKB, PSHUFW
- Ostatné
- Správa MXCSR
- LDMXCSR, STMXCSR
- Správa cache a pamäte
- MOVNTQ, MOVNTPS, MASKMOVQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE
Zdroj
Tento článok je čiastočný alebo úplný preklad článku Streaming SIMD Extensions na českej Wikipédii.