SSE

SSE of Streaming SIMD Extensions, is een uitbreiding op de IA-32 MMX instructieset die SIMD functionaliteit geeft aan de floating point operaties binnen een processor. Deze uitbreiding was een logische stap omdat de eerder toegevoegde MMX instructies alleen integer data konden verwerken terwijl dit soort databewerkingen bij 3D-programma's minder belangrijk zijn en vaak ook door de grafische kaart afgehandeld konden 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, deze nummeren door van 0 tot 7. De getallen in de vakjes geven de grenzen in bits aan wat het bereik van de specifieke registers voorstelt, en dus hun grootte.

De 70 instructies tellende set uitbreidingen van SSE is door Intel ontwikkeld en in 1999 geïntroduceerd op de Pentium III. Doordat de Pentium processoren destijds een veel groter marktaandeel hadden dan die van AMD is de Intel oplossing veel beter aangeslagen dan de tegenhanger 3D NOW! die door AMD ontwikkeld was. 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 bij SSE was dat er niet langer gebruik werd gemaakt van één set registers voor alle data, er was een set van 8 128 bit grote registers toegevoegd die speciaal gereserveerd waren voor single precision floating point data. Omdat deze data een vast formaat heeft van 32 bits passen er dankzij SIMD 4 van deze dataeenheden in één register, en kunnen deze tegelijk bewerkt worden. Bijkomend voordeel is dat er altijd een set registers gevuld kon worden met MMX integer data en de andere met SSE floating point data, de processor had dus altijd data voor allebei de soorten bewerkingen beschikbaar. Dus kan hier meteen mee gewerkt worden in plaats van net als bij MMX een aantal CPU cycles bezig te zijn met het register leeggooien, wachten op gegevens uit de cache en het opnieuw vullen van de registers bij het wisselen van de soort bewerking. Overigens moeten bij het werken met floating point getallen die groter zijn dan 32 bits (bijvoorbeeld bij double precision, met 64 bits) nog steeds de MMX registers geleegd worden en de getallen in de oude FPU registers geladen worden.

Referenties

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.