SSE4

Az SSE4 (a Streaming SIMD Extensions 4 verzióhoz ), más néven Nehalem New Instructions (NNI) egy további utasításkészlet az x86 architektúrához . A teljes készlet 54 utasítást tartalmaz.

Az új oktató játék bejelentése megtörtént 2006. szeptember 27az Intel Developer Forum őszén. Az utasításkészletnek javítania kell a multimédia teljesítményét, a keresési algoritmusokat és az észlelést, az adatvédelmet ( CRC típusú ellenőrző összeg ) és a vektorizációt.

SSE4 részegységek

Az SSE4 utasításkészlet három részhalmazból áll. Kettő az Intel processzorokra, egy pedig az AMD processzorokra vonatkozik:

Új utasítások

Az SSE játékok korábbi megvalósításaitól eltérően az SSE4 játék olyan utasításokkal rendelkezik, amelyeket nem kifejezetten a multimédia alkalmazásoknak szenteltek.

Ez a játék egy implicit operandus újbóli megjelenését jelzi bizonyos utasítások esetében (ez az operandus az XMM0 regiszter, mint harmadik operandus), valamint a 64 bites operandusok (MMX regiszterek) használatának eltűnését csak 128 bites operandusok javára, vagyis , az XMM regiszterek kizárólagos használata.

Ezen utasítások közül sok kihasználja a Penryn és Nehalem architektúrák egyik fő előnyét, nevezetesen az egyciklusú keverőmotort .

A CPUID utasítás segítségével meghatározható, hogy a processzor támogatja-e az utasításokat.

SSE4.1

Utasítás Leírás
MPSADBW Számítsa ki az abszolút különbségek 8 összegét (| x 0 -y 0 | + | x 1 -y 1 | + | x 2 -y 2 | + | x 3 -y 3 |, | x 0 -y 1 | + | x 1 -y 2 | + | x 2 -y 3 | + | x 3 -y 4 |, ...); Ez a művelet rendkívül fontos a modern HDTV kodekek számára, és lehetővé teszi a 8 × 8 blokk különbség kiszámítását kevesebb, mint 7 ciklus alatt. Az azonnali 3 bites operandus egyik bitje jelzi, hogy y 0 .. y 11 vagy y 4 .. y 15 kell-e használni a céloperandumból, a másik kettő, ha x 0 ..x 3 , x 4 ..x 7 , x 8 ..x 11 vagy x 12 ..x 15 a forrás operandusból kell használni.
PHMINPOSUW Megkeresi a forrás operandus legkisebb előjel nélküli szavát (16 bit), és az eredményt a cél operandusba helyezi (alacsony sorrendű 16 bit). A forrás operandusban talált szó indexe a céloperandus második szavába kerül a 16-18 bitig. A céloperandus többi bitje nullára van állítva.
PMULDQ Két egész szám (32 bites) két előjeles szorzását hajtja végre, és az eredményt (két 64 bites termék) elmenti a cél operandusba.
PMULLD Szorzást hajt végre aláírt és csomagolt számokon  : 4 előjeles 32 bites egész szám (forrás operandus) szorozva 4 előjeles 32 bites egész számmal (cél operandus). Az eredmény a célba kerül.
DPPS, DPPD Feltételes pontszorzatot hajt végre két 128 bites operandus között. A feltételt egy harmadik, azonnali típusú operandus adja meg. A termék egyetlen pontossággal rendelkezik a DPPS-hez, és duplikátum a DPPD-hez.
BLENDPS, BLENDPD, BLENDVPS, BLENDVPD, PBLENDVB, PBLENDW Feltételes másolatot hajt végre az egyik XMM regiszterből a másikba. A másolat vagy egy azonnali operandus által adott bináris maszkon alapul (mnemonika a névben a „v” nélkül), vagy az XMM0 regiszter által megadott bináris maszkon (mnemonics „v” jellel).
PMINSB, PMAXSB, PMINUW, PMAXUW, PMINUD, PMAXUD, PMINSD, PMAXSD Keresse meg a minimumot vagy maximumot a különböző típusú egész és csomagolt operandusokhoz .
ROUNDPS, ROUNDSS, ROUNDPD, ROUNDSD A lebegőpontos regiszter értékeit egész számra kerekíti az azonnali operandus által megadott négy kerekítési mód egyikével .
INSERTPS, PINSRB, PINSRD / PINSRQ, EXTRACTPS, PEXTRB, PEXTRW, PEXTRD / PEXTRQ Kivonás és behelyezés. A kibontás magában foglalja az XMM regiszter egy részének a felvételét és a memóriába helyezését, míg a beszúrás magában foglalja a memória tartalmának felvételét és az XMM regiszterbe való beillesztését.
PMOVSXBW, PMOVZXBW, PMOVSXBD, PMOVZXBD, PMOVSXBQ, PMOVZXBQ, PMOVSXWD, PMOVZXWD, PMOVSXWQ, PMOVZXWQ, PMOVSXDQ, PMOVZXDQ Jel kiterjesztés vagy nulla kiterjesztés nagyobb típusra csomagolt számokhoz (nagyjából megfelel az általános egység MOVSX vagy MOVZX értékének).
PTEST Ugyanaz, mint az általános TEST utasítás, azaz megváltoztatja az RFLAGS ZF és CF zászlait az operandusok közötti logikai együttállás (AND) működtetésével. Az utasítás beállítja a ZF jelzőt, ha a bitek közül legalább az egyik be van állítva (az AND eredménye), és a CF jelzőt, ha az összes bit egyezik.
PCMPEQQ Összehasonlítja a négyszeres szavakat (QWORD - 64 bit) az egyenlőség tesztelésével.
PACKUSDW Aláírt kettős szavakat (DWORDs - 32 bit) konvertál aláíratlan szavakká (WORDs - 16 bit) teljes áramlással.
MOVNTDQA A dupla négyszeres szót (DQWORD - 128 bit) áthelyezi a memóriából egy XMM regiszterbe, nem időbeli célzással . A műveletet csak akkor hajtják végre, ha a memória WC típusú ( Write Combining ). Ez az utasítás például hasznos a memória buszhoz csatlakoztatott perifériák eredményeinek lekéréséhez.

Lásd is

Kapcsolódó cikkek

Külső linkek

Hivatkozások

  1. (in) Motion Estimation Intel Streaming SIMD Extensions 4 (SSE4 Intel) , Intel.