SSE

Uit Wikipedia, de vrije encyclopedie
Ga naar: navigatie, zoeken
Nuvola single chevron right.svg Voor de gelijknamige voetbalclub, zie SSE (voetbalclub)
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.

SSE is een uitbreiding op de IA-32 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.

De 70 instructies tellende set uitbreidingen is door Intel ontwikkeld en voor het eerst gelanceerd met hun Pentium 3. 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.

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.