Streaming SIMD Extensions: diferència entre les revisions

Contingut suprimit Contingut afegit
m Robot: Reemplaçament automàtic de text (->http:// +>{{format ref}} http://)
m Robot: Reemplaçament automàtic de text (- + )
Línia 7:
==Registres==
 
SSE originàriament va afegir vuit registres nous de 128 bits coneguts com 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.
[[Fitxer:XMM registers.png|right|220px]]
Cada registre de paquets engloba 4 nombres en punt flotant de [[precisió simple]] de 32 bits o 2 nombres en punt flotant de [[precisió doble]] de 64 bits o quatre enters de 32 bits o vuit enters curts de 16 bits o setze octets o caràcters de 8 bits. Les operacions amb enters tenen instruccions per variant amb o sense signe. Les operacions enteres [[SIMD]] encara poden ser portades a terme pels vuit registres MMX 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 mentres 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.
Línia 16:
A causa de que SSE afegeix suport per a punt flotant, te molta més utilització que MMX. L'adició d'afegir suport d'enters a SSE2 fa encara més flexible SSE. mentres que MMX es 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ód'instruccions|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 SSE ==
 
SSE va introduir instruccions en punt flotant: escalars i empaquetades.
 
'''Instruccions en punt flotant'''
Línia 37:
* Conversió de tipus de dades
** Escalar – CVTSI2SS, CVTSS2SI, CVTTSS2SI
** Empaquetat – CVTPI2PS, CVTPS2PI, CVTTPS2PI
* Operacions lòguiques binàries
** Empaquetat – ANDPS, ORPS, XORPS, ANDNPS
Línia 67:
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 <br />
addps xmm0,address-of-v2 ;xmm0=v1.w+v2.w | v1.z+v2.z | v1.y+v2.y | v1.x+v2.x
movaps address-of-vec_res,xmm0 <br />
 
==Versions posteriors==
*[[SSE2]], va ser introdduït amb el [[Pentium 4]], és una millora important de SSE (que alguns programadors el van rebatejar a "SSE1"). SSE2 afegeix noves instruccions matemàtiques per a [[precisió doble]] (64 bits) en punt flotant i ademés expandeix les instruccions MMX per a poder operar amb registres XMM de 128 bits. Fins SSE4 [vegeu a continuació], Les instruccions SSE d'enters introduides amb les posteriors extensions SSE, extensions que encara operen amb registres MMX de 64 bits, ja que els nous registres XMM necessiten el suport del sistema operatiu. SSE2 permet al programador realitzar matemàtica SIMD de pràcticament qualsevol tipus (d'enters de 8 bits a fotants de 64 bits) amb el nou fitxer vector-registre XMM, sense la necessitat de tocar els registres MMX/FPU. Molts programadors consideren SSE2 a ser "tot el que hauria d'haver estat la SSE", com SSE2 ofereix un [[repertori d'instruccions ortogonal]] per al tractamenent comú de tipus de dades.
 
*[[SSE3]], també anomenades '''instruccions noves Prescott''', és una actualització incremental per SSE2, afegint un grapat d'instruccions orientades a matemàtiques DSP i algunes instruccions de gestió de processos (fils).
Línia 80:
*[[SSE4]] és una altra millora important, afegint una instrucció de punt a la multiplicació, conjunts d'instruccions d'addició d'enters, una instrucció popcnt, i més. SSE4 finalitza el suport pel registre MMX.<ref>[http://www.intel.com/technology/architecture-silicon/sse4-instructions/index.htm Intel® Streaming SIMD Extensions 4 Instruction Set Innovation<!-- Bot generated title -->]</ref>
 
*[[SSE5]] és una nova versió de l'anunci fet per [[AMD]] l'agost de 2007.<ref>{{cite news |url=http://www.theregister.co.uk/2007/08/30/amd_sse5/ |title=AMD plots single thread boost with x86 extensions |publisher=The Register |date=[[30 d'agost]] de [[2007]] |accessdate=2008-02-01}}</ref><ref>{{format ref}} http://developer.amd.com/sse5.jsp</ref>
 
*[[Advanced Vector Extensions|AVX]] (Extensions vectorials avançades) és una versió avançada de SSE anunciada per Intel que amplia la ruta de dades de 128 a 256 bits i instruccions de 3 operands (incrementat de 2). L'amplicació de productes AVX estan previstes pel 2010. [http://www.extremetech.com/article2/0,1697,2276803,00.asp]