Voor de gelijknamige voetbalclub, zie SSE (voetbalclub)

SSE of Streaming SIMD Extensions is een instructieset ontwikkeld door Intel ter uitbreiding op de MMX-instructieset IA-32. Ze geeft SIMD-functionaliteit aan de floating point-operaties binnen een processor, en was een logische opvolger van de eerder toegevoegde MMX-instructies die enkel gehele getallen konden verwerken; berekeningen met dergelijke getallen zijn minder belangrijk in 3D-toepassingen en kunnen vaak ook door de grafische kaart afgehandeld worden.

Voorstelling van de toegevoegde SSE-registers, naast de bestaande MMX-registers in de oude FPU-registers. De tekens rechts naast de registers zijn hun namen: ze nummeren door van 0 t.e.m. 7. De getallen in de vakjes geven in bits de grenzen aan die het bereik van de specifieke registers voorstellen, en dus hun grootte.

De uitbreiding van 70 instructies is door Intel in 1999 geïntroduceerd op de Pentium III. Doordat de Pentium-processoren destijds een veel groter marktaandeel hadden dan die van AMD, is de implementatie van Intel veel sterker aangeslagen dan 3D NOW!, de door AMD ontwikkelde tegenhanger. Na de introductie van SSE in 1999 zouden een aantal uitbreidingen van deze instructieset voor 32- en 64-bit CPUs volgen onder de namen SSE2, SSE3, SSSE3, SSE4, SSE4.1 en SSE4.2.[1][2][3][4]

De grootste vooruitgang die SSE met zich meebracht, was dat er niet langer gebruik werd gemaakt van één set registers voor alle data. SSE voegde een set van acht 128-bit registers toe die speciaal gereserveerd waren voor single-precision floating-point-data. Dergelijke data hebben een vast formaat van 32 bits, waardoor er zo vier in één 128-bit register passen en via SIMD in parallel bewerkt kunnen worden.

Bijkomend voordeel is dat er zo enerzijds een stel registers gevuld kon worden met gehele MMX-data en een ander stel met floating-point SSE-data; zo had de processor data voor beide soorten bewerkingen beschikbaar. Op die manier kon men vermijden dat meerdere CPU-cycli ingenomen werden om een register met gehele data te legen vooraleer het te kunnen vullen met floating point-data uit de cache, zoals wel het geval was voor MMX indien men van datatype wou wisselen. De MMX-registers moesten bij het werken met floating point-getallen groter dan 32 bits (bijvoorbeeld volgens de double-precision-standaard, met getallen van 64 bits) overigens nog steeds geleegd worden en de getallen in de oude FPU-registers geladen worden.

bewerken

Referenties

bewerken