SSSE3
A Supplemental Streaming SIMD Extensions 3 (SSSE3 vagy SSE3S) az Intel által létrehozott SIMD-utasításkészlet, az SSE-technológia negyedik változata.
Története
[szerkesztés]Az SSSE3-at az Intel Core mikroarchitektúrán alapuló processzoraiba 2006. június 26-án vezette be a Woodcrest Xeonokkal.
Az SSSE3-ra Tejas New Instructions (TNI) és Merom New Instructions kódnéven hivatkoztak az első azt támogatni kívánt processzorváltozatokra.
Funkciók
[szerkesztés]Az SSSE3 16 új utasítást tartalmaz, melyek 64 bites MMX- vagy 128 bites XMM-regisztereken is működhetnek. Ezért az Intel közleményei 32 új utasításról szólnak. Ezek közé az alábbiak tartoznak:[1]
- 6 (12) horizontális összeadást vagy kivonást végrehajtó utasítás.
- 3 (6) abszolútérték-számító utasítás.
- 1 (2) szorzás–összeadás műveletet végrehajtó utasítás, melyek a pontszorzatszámítást gyorsítják.
- 1 (2) utasítás, melyek gyorsítják az egy regiszteren lévő számok szorzását és egész értékeket adnak skálázással.
- 1 (2) utasítás, melyek helyben történő bájtonkénti átrendezést hajtanak végre a második irányító operandus függvényében.
- 3 (6) egy regiszteren lévő egészeket a céloperandusban a forrásban lévő negatív megfelelő elem esetén negáló utasítás.
- 1 (2) két operandus összetételéből adatot igazító utasítás.
SSSE3-at támogató processzorok
[szerkesztés]- AMD:
- „Cat” sorozat:
- Bobcat-alapú processzorok
- Jaguar-alapú és újabb processzorok
- Puma-alapú és újabb processzorok
- „Heavy Equipment” sorozat
- Bulldozer-alapú processzorok
- Piledriver-alapú processzorok
- Steamroller-alapú processzorok
- Excavator-alapú és újabb processzorok
- Zen-alapú és újabb processzorok
- Zen+-alapú processzorok
- Zen2-alapú processzorok
- Zen3-alapú processzorok
- Zen4-alapú processzorok
- „Cat” sorozat:
- Intel:
- Xeon 5100, 5300, 5400 és 3000 sorozatok
- Core 2 Duo
- Core 2 Extreme
- Core 2 Quad
- Core i7
- Core i5
- Core i3
- Pentium Dual Core (ha 64 bites; Allendale-től)
- Celeron 4xx Sequence Conroe-L
- Celeron Dual Core E1200
- Celeron M 500-sorozat
- Atom
- VIA:
Új utasítások
[szerkesztés]Az alábbi táblázatban a satsw(X) (olv. „saturate to signed word”, jelentése: „töltsd fel előjeles szóra”) egy előjeles X egészet átalakít −32768-ra, ha annál kisebb, +32767-re, ha annál nagyobb, ellenkező esetben változatlanul hagyja. Az Intel-architektúrának megfelelően a bájtok 8, a szavak 16, a duplaszavak 32 bitesek, a „regiszter” MMX- vagy XMM-vektorregiszter.[1]
Utasítás | Jelentés | Magyarázat |
---|---|---|
PSIGNB , PSIGNW , PSIGND
|
Packed Sign | Egy bájt-, szó- vagy duplaszóregiszter elemeit negálja, ha egy másik regiszter megfelelő elemei negatívak. |
PABSB , PABSW , PABSD
|
Packed Absolute Value | Egy bájt-, szó- vagy duplaszóregiszter értékeit egy másik regiszter abszolút értékeivel tölti fel. |
PALIGNR
|
Packed Align Right | Két regiszter értékeit összefűzi, és az eltolódás regiszterhosszú részét adja ki, melyet az utasításban kódolt közvetlen érték ad meg. |
PSHUFB
|
Packed Shuffle Bytes | A = [a0 a1 a2 …] és B = [b0 b1 b2 …] bemeneti regiszterek esetén A elemeit lecseréli az [ab0 ab1 ab2 …] sorozatra, de az i. elemet 0-ra cseréli, ha bi első bitje 1. |
PMULHRSW
|
Packed Multiply High with Round and Scale | Az A és B regiszterek 16 bites szavait előjeles 16 bites –1 és +0,99996948… közti fixpontos számokként kezeli (például a 0x4000-et +0,5-ként, a 0xA000-t −0,75-ként kezeli), és megfelelő kerekítéssel összeszorozza őket. |
PMADDUBSW
|
Multiply and Add Packed Signed and Unsigned Bytes | A és B regiszterek bájtjait összeszorozza, páronként összeadja, előjelesen tölti, az eredményt tárolja. [a0 a1 a2 …] PMADDUBSW [b0 b1 b2 …] = [satsw(a0b0 + a1b1) satsw(a2b2 + a3b3) ...]
|
PHSUBW , PHSUBD
|
Packed Horizontal Subtract (Words or Doublewords) | A = [a0 a1 a2 …] és B = [b0 b1 b2 …] bemeneti regiszterekre a kimenet [a0−a1 a2−a3 … b0−b1 b2−b3 …] |
PHSUBSW
|
Packed Horizontal Subtract and Saturate Words | hasonlít a PHSUBW-re, de kimenete [satsw(a0−a1) satsw(a2−a3) … satsw(b0−b1) satsw(b2−b3) ...] |
PHADDW , PHADDD
|
Packed Horizontal Add (Words or Doublewords) | A = [a0 a1 a2 …] és B = [b0 b1 b2 …] bemeneti regiszterekre kimenete [a0+a1 a2+a3 … b0+b1 b2+b3 …] |
PHADDSW
|
Packed Horizontal Add and Saturate Words | hasonlít a PHADDW-re, de kimenete [satsw(a0+a1) satsw(a2+a3) … satsw(b0+b1) satsw(b2+b3) …] |
Jegyzetek
[szerkesztés]- ↑ a b Intel 64 and IA-32 Architectures Optimization Reference Manual pp. 92-93. Intel.com, 2016. [2018. június 20-i dátummal az eredetiből archiválva]. (Hozzáférés: 2018. június 22.)
Források
[szerkesztés]- Core 2 Mobile specifikációk
- Az Intel dokumentuma az SSSE3 létéről és az SSE4 leírásáról
- Utasításlista az SSSE3-utasítások leírásával
- Scott Mueller. Upgrading and Repairing PCs: Upgrading and Repairing_c21, 21, 110–111. o. (2013). ISBN 978-0-7897-5000-6. Hozzáférés ideje: 2023. július 18.