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. 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.2 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.2 - 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. 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. 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