Streaming SIMD Extensions: diferència entre les revisions
Contingut suprimit Contingut afegit
m Robot substituint el text: (-Imatge: +Fitxer:, -Image: +Fitxer:) |
Cap resum de modificació |
||
Línia 1:
En [[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 serie de processadors [[Pentium III]] en resposta de [[3DNow!]] d'[[AMD]] (que va debutar un any abans). SSE conté 70 noves instruccions.
Originariament va ser conegut com '''KNI''', '''''K'''atmai '''N'''ew '''I'''nstructions'' (''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
Intel pel general, es va decebre del seu primer esforç d'implementació de SIMD a [[IA-32]], [[MMX (instruction set)|MMX]]. MMX tenia dos problemes principals: Aquest reutilitzava els registres de [[coma flotant|punt flotant]] existents fent la [[CPU]] incapaç de treballar amb ambdós [[coma flotant|punt flotant]] i les dades SIMD al mateix moment, i solament treballava amb [[nombres enters|enters]].
Línia 7:
==Registres==
SSE
[[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
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
== Instruccions SSE ==
Línia 24:
'''Instruccions en punt flotant'''
* Moviment de dades:
** Escalar – MOVSS
** Empaquetat – MOVAPS, MOVUPS, MOVLPS, MOVHPS, MOVLHPS, MOVHLPS
Línia 58:
==Exemple==
El 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 números de
vec_res.x = v1.x + v2.x;<br />
Línia 65:
vec_res.w = v1.w + v2.w;<br />
Aquest podria correspondre a quatre instruccions FADD de x87 FADD en codi
movaps xmm0,address-of-v1 ;xmm0=v1.w | v1.z | v1.y | v1.x <br />
|