SSE3
SSE3 (også kjent som Prescott New Instructions eller PNI ) er et SIMD - instruksjonssett av IA-32- arkitekturen , utviklet av Intel , som utvider den forrige versjonen (SSE2).
De første SIMD-settene på x86 -plattformer var MMX og 3DNow! (brukes kun av AMD ), og senere SSE og SSE2 .
Intel introduserte SSE3-instruksjoner tidlig i 2004 med Pentium 4 basert på Prescott -kjernen , mens AMD bare implementerte støtte i sine Athlon 64s gjennom "E-revisjonen" i april 2005 .
Det originale SSE3-settet legger til 13 nye instruksjoner i forhold til forgjengeren SSE2 ; den mest revolusjonerende av disse instruksjonene lar deg jobbe horisontalt i et register i motsetning til det som skjedde tidligere der det kun var mulig vertikalt. Mer presist, instruksjoner er lagt til for å legge til og subtrahere de flere verdiene som er lagret i et enkelt register. Disse instruksjonene forenkler implementeringen av et stort antall DSP- og 3D -operasjoner . Det er også en ny instruksjon for å konvertere flyttall til heltall uten å forstyrre den normale flyten av CPU -behandling , derfor uten å skape stall i pipelinen .
I 2006 , med lanseringen av Intel Core Microarchitecture-arkitekturen , ble en utvikling av SSE3-settet, kalt SSSE3 , lansert på markedet som legger til 32 flere instruksjoner og optimerer en rekke aspekter ved det originale settet.
Nye instruksjoner
Aritmetikk
- ADDSUBPD - ( Add-Subtract-Packed-Double )
- Inndata – {A0, A1}, {B0, B1}
- Utgang - {A0 - B0, A1 + B1}
- ADDSUBPS - ( Add-Subtract-Packed-Single )
- Inndata: {A0, A1, A2, A3}, {B0, B1, B2, B3}
- Utgang: {A0 - B0, A1 + B1, A2 - B2, A3 + B3}
AOS (Array of Structures) v
- HADDPD - ( Horisontal-Add-Packed-Double )
- Inndata: {A0, A1}, {B0, B1}
- Utgang: {A0 + A1, B0 + B1}
- HADDPS ( Horisontal-Add-Packed-Single )
- Inndata: {A0, A1, A2, A3}, {B0, B1, B2, B3}
- Utgang: {A0 + A1, A2 + A3, B0 + B1, B2 + B3}
- HSUBPD - ( Horisontal-Subtract-Packed-Double )
- Inndata: {A0, A1}, {B0, B1}
- Utgang: {A0 - A1, B0 - B1}
- HSUBPS - ( Horisontal-Subtrahere-Packet-Single )
- Inndata: {A0, A1, A2, A3}, {B0, B1, B2, B3}
- Utgang: {A0 - A1, A2 - A3, B0 - B1, B2 - B3}
- LDDQU - en alternativ måte å laste en vektor som ikke er riktig justert i minnet. Den kan brukes til videokomprimeringsoperasjoner.
- MOVDDUP, MOVSHDUP, MOVSLDUP - disse operasjonene egner seg godt for komplekse tallberegninger og brukes mye i sinus- og lydberegninger.
- FISTTP - analog med den gamle FISTP x87-setningen, men ignorerer avrundingsmetoden satt i SSE-revisjonsregisteret og bruker avkorting i stedet; den lar deg unngå å lagre og laste inn kontrollregisteret på språk som C, der konverteringer fra float til int sørger for trunkering som standard oppførsel.
Intel-spesifikke instruksjoner
- MONITOR, MWAIT - Designet for å optimalisere flertrådede applikasjoner, forbedrer de prosessorytelsen med Hyper-Threading .
Relaterte elementer