Streaming SIMD Extensions: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica |
fix |
||
(5 versioni intermedie di 5 utenti 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 ==
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.
▲[[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====▼
* 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
===
* Aritmetiche
** PMULHUW, PSADBW, PAVGB, PAVGW, PMAXUB, PMINUB, PMAXSW, PMINSW
Riga 64 ⟶ 63:
** PMOVMSKB, PSHUFW
===
* 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.
'''vec_res.x = v1.x + v2.x''';
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 125 ⟶ 123:
* [[SSE4]]
* [[3DNow!]]
== Collegamenti esterni ==
* {{FOLDOC|Streaming SIMD Extensions|Streaming SIMD Extensions}}
{{Multimedia extensions}}
{{Portale|informatica}}
[[Categoria:
[[Categoria:Calcolo parallelo]]
[[Categoria:Intel]]
|