SSE4 (for Streaming SIMD Extensions versjon 4 ), også kjent som Nehalem New Instructions (NNI) er et ekstra instruksjonssett for x86- arkitekturen . Hele settet inneholder 54 instruksjoner.
Kunngjøringen av dette nye instruksjonsspillet ble gjort den 27. september 2006på Intel Developer Forum Fall 2006. instruksjonssett bør forbedre multimedia ytelse, søke algoritmer og deteksjon, databeskyttelse ( checksum typen CRC ) og vektorisering.
SSE4 instruksjonssett består av tre delmengder. To er spesifikke for Intel-prosessorer, og en for AMD-prosessorer:
I motsetning til tidligere implementeringer av SSE-spill, har SSE4-spillet instruksjoner som ikke er spesielt dedikert til multimediaapplikasjoner.
Dette spillet ser igjen utseendet til en implisitt operand for visse instruksjoner (denne operanden er XMM0-registeret som den tredje operanden) og forsvinningen av bruken av 64-biters operander (MMX-registre) til fordel for bare 128-biters operander, det vil si , eksklusiv bruk av XMM-registre.
Mange av disse instruksjonene utnytter en stor fordel med Penryn og Nehalem-arkitekturen, nemlig en -syklus blandemotor .
CPUID- instruksjonen brukes til å bestemme om prosessoren støtter instruksjonene.
Instruksjon | Beskrivelse |
---|---|
MPSADBW | Beregn 8 summer av absolutte forskjeller (| 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 |, ...); Denne operasjonen er ekstremt viktig for moderne HDTV- kodeker og gjør det mulig å beregne en 8 × 8 differensblokk på mindre enn 7 sykluser. En bit av en øyeblikkelig 3-bits operand indikerer om y 0 .. y 11 eller y 4 .. y 15 skal brukes fra destinasjonsoperanden, de andre to hvis x 0 ..x 3 , x 4 ..x 7 , x 8 ..x 11 eller x 12 ..x 15 må brukes fra kilden operand. |
PHMINPOSUW | Finner det minste usignerte ordet (16 bits) av kilden operand og plasserer resultatet i destinasjonen operand (lav orden 16 bits). Indeksen for ordet funnet i kilden operand er plassert i det andre ordet i destinasjonsoperanden ved bitene 16 til 18. De gjenværende bitene til destinasjonsoperanden er satt til null. |
PMULDQ | Utfører to signerte multiplikasjoner av to par heltall (32-bit) og lagrer resultatet (to 64-biters produkter) i destinasjonsoperanden. |
PMULLD | Utfører en multiplikasjon på signerte og pakkede tall : 4 signerte 32-biters heltall (kildeoperand) multiplisert med 4 signerte 32-biters heltall (destinasjonsoperand). Resultatet plasseres i destinasjonen. |
DPPS, DPPD | Utfører et betinget punktprodukt mellom to 128-bit operander. Betingelsen er gitt av en tredje operand av umiddelbar type. Produktet er en enkelt presisjon for DPPS og duplikat for DPPD. |
BLENDPS, BLENDPD, BLENDVPS, BLENDVPD, PBLENDVB, PBLENDW | Utfører en betinget kopi fra ett XMM-register til et annet. Kopien er basert enten på en binærmaske gitt av en umiddelbar operand (mnemonics uten 'v' i navnet) eller på en binær maske gitt av XMM0-registeret (mnemonics med 'v'). |
PMINSB, PMAXSB, PMINUW, PMAXUW, PMINUD, PMAXUD, PMINSD, PMAXSD | Finn minimum eller maksimum for forskjellige typer heltall og pakkede operander . |
ROUNDPS, ROUNDSS, ROUNDPD, ROUNDSD | Avrunder verdiene til et flytpunktsregister til heltall ved hjelp av en av fire avrundingsmodi spesifisert av en umiddelbar operand . |
INSERTPS, PINSRB, PINSRD / PINSRQ, EXTRACTPS, PEXTRB, PEXTRW, PEXTRD / PEXTRQ | Ekstraksjon og innsetting. Ekstraksjon innebærer å ta en del av et XMM-register og sette det i minnet, mens det settes inn innebærer å ta minneinnhold og sette det inn i et XMM-register. |
PMOVSXBW, PMOVZXBW, PMOVSXBD, PMOVZXBD, PMOVSXBQ, PMOVZXBQ, PMOVSXWD, PMOVZXWD, PMOVSXWQ, PMOVZXWQ, PMOVSXDQ, PMOVZXDQ | Skiltforlengelse eller nullutvidelse for tall som er pakket til en større type (tilsvarer mer eller mindre MOVSX eller MOVZX på den generelle enheten). |
PTEST | Samme som den generelle TEST-instruksjonen, det vil si at den endrer ZF- og CF-flaggene til RFLAGS ved å betjene en logisk forbindelse (AND) mellom operandene. Instruksjonen setter ZF-flagget hvis minst en av bitene er satt (resultat av AND), og CF-flagget hvis alle bitene stemmer overens. |
PCMPEQQ | Sammenligner firdoble ord (QWORDs - 64 bits) ved å teste dem for likhet. |
PACKUSDW | Konverterer signerte dobbeltord (DWORDs - 32 bits) til usignerte ord (WORDs - 16 bits) med full flyt. |
MOVNTDQA | Flytter et dobbelt firdobbelt ord (DQWORD - 128 bit) fra minne til et XMM-register ved hjelp av et ikke-tidsmessig hint . Operasjonen utføres bare hvis minnet er av typen WC ( skrivekombinering ). Denne instruksjonen er for eksempel nyttig for å hente et resultat fra eksterne enheter som er festet til minnebussen. |