Streaming SIMD Extensions: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Collegamenti esterni: Creato la sezione e aggiunto il template "FOLDOC"
fix
 
(Una versione intermedia di un altro utente non mostrate)
Riga 1:
{{F|componenti per computer|febbraio 2013}}
 
'''SSE''' ('''''S'''treaming '''S'''IMD '''E'''xtensions'') è un [[instruction set]] [[SIMD]] progettato dalla [[Intel]] nel [[1999]] ed utilizzato nel suo processore [[Pentium III]] come risposta al [[3DNow!]] prodotto da [[Advanced Micro Devices|AMD]], che era presente sul mercato da circa un anno. Era originariamente conosciuto con la sigla '''KNI''', da '''K'''atmai '''N'''ew '''I'''nstructions ([[Katmai]] era il nome in codice del primo Pentium III). Durante il progetto Katmai Intel cercava di distinguerlo dalla sua precedente linea di prodotti, in particolare il [[Pentium II]]. AMD aggiunse successivamente il supporto per le istruzioni SSE nel suo processore [[Athlon XP]].
 
Riga 14 ⟶ 15:
Il [[Pentium 4]] implementa [[SSE2]], un'estensione del set di istruzioni SSE. Le caratteristiche principali di SSE2 sono il supporto per i numeri a virgola mobile a doppia precisione (64 bit) e il supporto per gli interi nel vettore di registri a 128 bit introdotti con SSE, il che permette al programmatore di utilizzare i registri MMX. Lo stesso SSE2 è stato esteso da [[SSE3]] introdotto con in core [[Prescott]] delle ultime generazioni di Pentium 4.
 
== Registri ==
[[File:XMM registers.svg|right|220pxthumb]]
SSE ha aggiunto otto nuovi registri a 128 bit identificati con i codici da XMM0 a XMM7. Le estensioni [[AMD64]] (poi duplicate da Intel) hanno aggiunto altri otto registri da XMM8 a XMM15. C'è anche un nuovo registro di stato a 32 bit, il MXCSR. I registri da XMM8 a XMM15 sono accessibili solo nella modalità a 64 bit.
 
SSE ha aggiunto otto nuovi registri a 128 bit identificati con i codici da XMM0 a XMM7. Le estensioni [[AMD64]] (poi duplicate da Intel) hanno aggiunto altri otto registri da XMM8 a XMM15. C'è anche un nuovo registro di stato a 32 bit, il MXCSR. I registri da XMM8 a XMM15 sono accessibili solo nella modalità a 64 bit.
[[File:XMM registers.svg|right|220px]]
 
Ogni registro può contenere insieme:
Riga 34 ⟶ 35:
 
== Istruzioni SSE ==
SSE introduce sia operazioni su scalari singoli sia su gruppi di numeri in virgola mobile (packed).
 
===Istruzioni floating point===
 
=== Istruzioni floating point ===
* Movimenti memoria-registro / registro-memoria / registro-registro
** Scalari – MOVSS
Riga 51:
* Conversioni di tipo
** Scalari – CVTSI2SS, CVTSS2SI, CVTTSS2SI
** Packed – CVTPI2PS, CVTPS2PI, CVTTPS2PI
* Operazioni logiche sui bit
** Packed – ANDPS, ORPS, XORPS, ANDNPS
 
=== Istruzioni su interi ===
 
* Aritmetiche
** PMULHUW, PSADBW, PAVGB, PAVGW, PMAXUB, PMINUB, PMAXSW, PMINSW
Riga 64 ⟶ 63:
** PMOVMSKB, PSHUFW
 
=== Altre istruzioni ===
 
* Gestione dell'MXCSR
** LDMXCSR, STMXCSR
Riga 71 ⟶ 69:
** MOVNTQ, MOVNTPS, MASKMOVQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE
 
== Esempi ==
Gli esempi che seguono dimostrano il vantaggio di usare le istruzioni SSE. Si consideri un'operazione come la somma di vettori, che si usa molto spesso nella computer grafica; sommare due vettori a precisione singola con 4 componenti ciascuno richiede quattro istruzioni di somma floating point in un normale processore x86:
 
Riga 84 ⟶ 82:
'''addps xmm0,address-of-v2''' ;'''xmm0=v1.w+v2.w | v1.z+v2.z | v1.y+v2.y | v1.x+v2.x'''
 
== Differenze fra x87 FPU e SSE ==
Le istruzioni FPU (x87) di solito memorizzano i risultati con 80 bit di precisione. Quando vecchi algoritmi scritti per le FPU x87 vengono adattati alle nuove estensioni SSE, che supportano solo 64 bit di precisione, alcune combinazioni di operazioni aritmetiche e insiemi di dati possono dare luogo a differenze numeriche significative: questo è molto importante nei calcoli scientifici, se il calcolo deve essere confrontato con risultati ottenuti su altre architetture hardware.
 
Riga 132 ⟶ 130:
{{Portale|informatica}}
 
[[Categoria:MicroprocessoreIstruzioni x86]]
[[Categoria:Calcolo parallelo]]
[[Categoria:Intel]]