Streaming SIMD Extensions

SSE (Streaming S​IMD Extensions, pôvodne nazvaná ISSE, INTERNET Streaming S​​IMD 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 

Mikroprocesory
Architektúra x86
Inštrukčné súbory