SSE4

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено з SSE4.2)
Перейти до навігації Перейти до пошуку

SSE4 (Streaming SIMD Extensions 4) - це набір SIMD-інструкцій для процесорів архітектури x86-64. Набір інструкцій було анонсовано були 27 вересня 2006 року. Самі інструкції були реалізовані в процесорах Intel Core та AMD K10. В SSE4 налічується 54 інструкцій[1], розділених на дві основні категорії: векторизація операцій для прискорення роботи з медіа, та для обробки тексту.

Intel використовувала маркетингову назву HD Boost для інструкцій SSE4.[2]

Набори інструкцій SSE4[ред. | ред. код]

SSE4 Складається з 54 інструкцій. З них 47 відносять до SSE4.1, вони були реалізовані в мікрокархітектурі Peryn, а решта 7 команд (SSE4.2) з'явились лише в процесорах з мікроархитектурою Nehalem.

В AMD процесорах набір інструкцій називається SSE4a, був реалізований в процесорах мікроархітектури Barcelona. Він містить в собі 4 інструкції що відсутні у наборі SSE4.1 від intel. Повний набір інструкцій SSE4 (SSE4.1+SSE4.2) лише в процесорах FX на базі мікроархітектури Bulldozer.

Інструкції[ред. | ред. код]

SSE4.1[ред. | ред. код]

  • MPSADBW Multiple Packed Sums of Absolute Difference. Рахує суму абсолютних різниць восьми значень, по чотири суми за раз (тобто |x0−y0|+|x1−y1|+|x2−y2|+|x3−y3|, |x0−y1|+|x1−y2|+|x2−y3|+|x3−y4|, ..., |x0−y7|+|x1−y8|+|x2−y9|+|x3−y10&#124). Така операція важлива при роботі деяких HD кодеків,і дозволяє обробити блок зображення 8х8 за декілька циклів процесора.
  • PHMINPOSUW Packed Horizontal Word Minimum пошук серед 16 бітових беззнакових цілих, такого що має мінімальне значення.
  • PMULDQ Multiply Packed Signed Dword Integers Множення 32 бітових знакових цілих та повертає результат в 64бітове ціле.
  • PMULLD Multiply Packed Signed Dword Integers and Store Low Result. Множення 32-бітових знакових цілих та повертає в результат молодшу 32бітну частину.
  • DPPS, DPPD Dot Product of Packed Single/Double Precision Floating-Point Values - скалярне множення 32 та 64 бітових цілих.
  • BLENDPS, BLENDPD, BLENDVPS, BLENDVPD, PBLENDVB, PBLENDW
  • PMINSB, PMAXSB, PMINUW, PMAXUW, PMINUD, PMAXUD, PMINSD, PMAXSD - мінімум,максимум для різних типів.
  • ROUNDPS, ROUNDSS, ROUNDPD, ROUNDSD - округлення числа з рухомою комою в ціле.
  • INSERTPS, PINSRB, PINSRD/​PINSRQ, EXTRACTPS, PEXTRB, PEXTRD/PEXTRQ
  • PMOVSXBW, PMOVZXBW, PMOVSXBD, PMOVZXBD, PMOVSXBQ, PMOVZXBQ, PMOVSXWD, PMOVZXWD, PMOVSXWQ, PMOVZXWQ, PMOVSXDQ, PMOVZXDQ Packed Move with Sign/Zero Extend
  • PTEST Logical Compare
  • PCMPEQQ Compare Packed Qword Data for Equal порівняння 64 бітових значень на рівність та повернення 64бітових масок
  • PACKUSDW Pack with Unsigned Saturation Пакування 32бітних знакових цілих в 16бітні беззнакові з насиченням (буде обрізано до максимального значення - 65536).
  • MOVNTDQA Load Double Quadword Non-Temporal Aligned Hint - інструкція для ефективного читання даних в SSE-регістр.

SSE4.2[ред. | ред. код]

Інструкції для порівняння рядків:

  • PCMPESTRI Packed Compare Explicit Length Strings, Return Index
  • PCMPESTRM Packed Compare Explicit Length Strings, Return Mask
  • PCMPISTRI Packed Compare Implicit Length Strings, Return Index Порівнюють дані як .
  • PCMPISTRM Packed Compare Implicit Length Strings, Return Mask
  • PCMPGTQ - Порівняння спакованого набору 64бітових даних на "більше ніж"
  • POPCNT - Рахує кількість бітів що дорівнюють одиниці.
  • LZCNT - рахує кількість провідних нулів.
  • CRC32 - пришвидшує вирахування CRC32

SSE4a[ред. | ред. код]

  • EXTRQ/​INSERTQ
  • MOVNTSD/​MOVNTSS

Примітки[ред. | ред. код]