Streaming SIMD ExtensionsEn informàtica, Streaming SIMD Extensions (SSE) és una extensió SIMD del repertori d'instruccions de l'arquitectura x86, dissenyada per Intel i introduïda el 1999 amb la seva sèrie de processadors Pentium III en resposta de 3DNow! d'AMD (que va debutar un any abans). SSE conté 70 noves instruccions. Originàriament va ser conegut com a KNI, Katmai New Instructions (Katmai va ser el nom amb clau per la primera revisió del nucli Pentium III). Durant el projecte Katmai, Intel va buscar la forma per diferenciar-lo de la seva línia de productes anteriors, en particular, el seu producte insígnia Pentium II. AMD eventualment va afegir suport per a instruccions SSE, començant amb el seu processador Athlon XP. Que va ser posteriorment rebatejat ISSE, per Internet Streaming SIMD Extensions, després SSE. Intel, en general, es va decebre del seu primer esforç d'implementació de SIMD a IA-32, MMX. MMX tenia dos problemes principals: Aquest reutilitzava els registres de punt flotant existents fent la CPU incapaç de treballar amb ambdós punt flotant i les dades SIMD al mateix moment, i solament treballava amb enters. RegistresSSE originàriament va afegir vuit registres nous de 128 bits coneguts com a XMM0 a XMM7. Les extensions x86-64 d'AMD (anomenades originàriament AMD64) i després duplicades per Intel afegeixen uns altres vuit registres de XMM8 fins a XMM15. També hi ha un nou registre control/estat de 32 bits, MXCSR. Tots els 16 registres 16 XMM de 128 bits són només accessibles en mode d'operació de 64 bits.
A causa que aquests registres de 128 bits són estats de programa addicional que el sistema operatiu ha de preservar a través de l'activació de tasques, per defecte estan desactivats fins que el sistema operatiu els activi de forma explícita. Això significa que els sistema operatiu ha de saber com utilitzar les instruccions FXSAVE i FXRSTOR, que són el parell d'instruccions que poden emmagatzemar d'un sol cop tots els registres d'estat x87 i SSE. Aquest suport va ser ràpidament afegit a la gran majoria de sistemes operatius IA-32. A causa del fet que SSE afegeix suport per a punt flotant, té molta més utilització que MMX. L'addició d'afegir suport d'enters a SSE2 fa encara més flexible SSE. Mentre que MMX és redundant, les operacions es poden realitzar amb paral·lel amb les operacions SSE oferint a més un augment en el rendiment en algunes situacions. La primera CPU que va suportar SSE, el Pentium III, compartia els recursos d'execució entre SSE i la FPU. Mentres una aplicació compilada pot interpaginar cara a cara instruccions FPU i SSE, el Pentium III no podrà proporcionar en el mateix cicle de rellotge instruccions FPU i SSE. Aquesta limitació redueix l'eficàcia de la segmentació, però els registres separats XMM fan possible barrejar operacions SIMD i punt flotant escalar sense el compliment explícit d'èxit del canvi de mode MMX/punt flotant. Instruccions SSESSE va introduir instruccions en punt flotant: escalars i empaquetades. Instruccions en punt flotant
Instruccions per a nombres enters
Altres instruccions
ExempleEl següent exemple demostra els avantatges de la utilització de SSE. Considera una operació com la suma de vectors, que és molt utilitzada en aplicacions gràfiques d'ordinadors. Per sumar dos nombres de precisió simple, unir vectors de 4 components utilitzant x87 necessita quatre operacions de suma en punt flotant vec_res.x = v1.x + v2.x; Aquest podria correspondre a quatre instruccions FADD de x87 FADD en codi objecte. Per un altre costat, com en el següent preudocodi mostra, una sola instrucció de 128 bits 'packed-add' que pot reemplaçar les quatre operacions de suma. movaps xmm0,address-of-v1 ;xmm0=v1.w | v1.z | v1.y | v1.x Versions posteriors
Vegeu tambéReferències
|
Portal di Ensiklopedia Dunia