Streaming SIMD Extensions

**SSE** (**S**treaming '''S​'''IMD **E**xtensions, pôvodne nazvaná **ISSE**, **I**NTERNET **S**treaming **S​​**IMD **E**xtensions) 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 **''K**atmai **N**ew **I**nstructions* (*Katmai* bolo prvé jadro Pentia III). Táto sada inštrukcií bola jednou z mála vecí, ktorá odlišovala Pentium III od [[Pentium II|Pentia II]]. SSE neskôr implementovalo aj AMD vo svojich procesoroch [[Athlon|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 [[Nehalem|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 ===
[[Súbor:XMM_registers.svg|thumb|XMM registre]]
SSE pôvodne pridalo 8 nových 128-bitových registrov pomenovaných ako XMM0 až XMM7. Rozšírenie [[X86-64|AMD64]] od spoločnosti [[Advanced Micro Devices|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

Kategória:Mikroprocesory
Kategória:Architektúra x86
Kategória:Inštrukčné súbory