Streaming SIMD Extensions: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
ancora altra roba da en.wiki |
fix |
||
(14 versioni intermedie di 14 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 11 ⟶ 13:
Sul [[Pentium III]], comunque, SSE è implementato utilizzando gli stessi circuiti della [[Floating Point Unit|FPU]], il che significa che la [[CPU]] non può inviare nella [[Pipeline dati|pipeline]] contemporaneamente le istruzioni SSE e quelle riguardanti la virgola mobile. I registri separati permettono di mescolare le operazioni SIMD e a virgola mobile, ma senza le prestazioni raggiunte passando esplicitamente dalla modalità a virgola mobile a quella MMX.
Il [[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.
▲[[Image:XMM registers.svg|right|220px]]
Ogni registro può contenere insieme:
Riga 33 ⟶ 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 50 ⟶ 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 63:
** PMOVMSKB, PSHUFW
===
* Gestione dell'MXCSR
** LDMXCSR, STMXCSR
Riga 70 ⟶ 69:
** MOVNTQ, MOVNTPS, MASKMOVQ, PREFETCH0, PREFETCH1, PREFETCH2, PREFETCHNTA, SFENCE
== Esempi ==
Gli esempi che seguono dimostrano il
'''vec_res.x = v1.x + v2.x''';
Riga 81 ⟶ 80:
'''movaps xmm0,address-of-v1''' ;'''xmm0=v1.w | v1.z | v1.y | v1.x'''
'''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 116 ⟶ 115:
0.78587145
0.
== Voci correlate ==
Riga 126 ⟶ 124:
* [[3DNow!]]
== Collegamenti esterni ==
[[Categoria:Microprocessore]]▼
* {{FOLDOC|Streaming SIMD Extensions|Streaming SIMD Extensions}}
{{Multimedia extensions}}
[[Categoria:Calcolo parallelo]]
[[Categoria:Intel]]
▲{{Portale|Informatica}}
|