SSSE3: различия между версиями
[отпатрулированная версия] | [непроверенная версия] |
A5b (обсуждение | вклад) м отмена test-*правки 99730150 участника 31.170.135.68 (обс.) Метка: отмена |
РобоСтася (обсуждение | вклад) |
||
(не показаны 4 промежуточные версии 2 участников) | |||
Строка 1: | Строка 1: | ||
'''Supplemental Streaming SIMD |
'''SSSE3''' (''[[Английский язык|англ]]. Supplemental Streaming SIMD Extensions 3'') — это обозначение, данное [[Intel]] четвёртому расширению системы команд. Предыдущее имело обозначение [[SSE3]], и [[Intel]] добавил ещё один символ "S" вместо того, чтобы увеличить номер расширения, возможно, потому, что они посчитали SSSE3 простым дополнением к [[SSE3]]. |
||
Часто, до того как стало использоваться официальное обозначение SSSE3, эти новые команды назывались SSE4. Также их называли кодовыми именами '''Tejas New Instructions (TNI)''' и '''Merom New Instructions (MNI)''' по названию процессоров, где впервые [[Intel]] намеревалась поддержать эти новые команды. |
|||
⚫ | |||
SSSE3 был представлен 26 июня [[2006 год]]а вместе с процессорами [[Xeon]] с кодовым именем [[Xeon#Xeon на микроархитектуре Core|Woodcrest]]. |
|||
⚫ | |||
== Новые инструкции == |
== Новые инструкции == |
||
Строка 67: | Строка 71: | ||
== Процессоры, поддерживающие SSSE3 == |
== Процессоры, поддерживающие SSSE3 == |
||
* '''Intel''': |
* '''Intel''': |
||
** Xeon 5100 Series |
** [[Xeon]] 5100 Series |
||
** Xeon 5300 Series |
** [[Xeon]] 5300 Series |
||
** Xeon 3000 Series |
** [[Xeon]] 3000 Series |
||
** Xeon E3 |
** [[Xeon]] E3 |
||
** Xeon E5 |
** [[Xeon]] E5 |
||
** Xeon E7 |
** [[Xeon]] E7 |
||
** Core 2 Duo |
** [[Core 2 Duo]] |
||
** Core 2 Quad |
** [[Core 2 Quad]] |
||
** Core 2 Extreme |
** Core 2 Extreme |
||
** Core i3 |
** [[Core i3]] |
||
** Core i5 |
** [[Core i5]] |
||
** Core i7 |
** [[Core i7]] |
||
** |
** [[Core i9]] |
||
** [[Pentium Dual-Core]] (на ноутбуках начиная с ядра Merom) |
|||
** Celeron (Celeron 4xx, ядро Conroe-L) |
** [[Celeron]] (Celeron 4xx, ядро Conroe-L) |
||
** Celeron Dual-Core |
** Celeron Dual-Core |
||
** Celeron M 500 Series |
** Celeron M 500 Series |
||
** Intel Atom |
** [[Intel Atom|Atom]] |
||
* '''AMD''': |
* '''AMD''': |
||
** Bobcat (E-240, E-350, C-30, C-50) |
** Основанные на [[Bobcat (микроархитектура)|Bobcat]] (E-240, E-350, C-30, C-50) |
||
** Основанные на [[Jaguar (микроархитектура)|Jaguar]] |
|||
** Bulldozer |
|||
** Основанные на [[Puma (микроархитектура)|Puma]] |
|||
** Zen |
|||
** Основанные на [[Bulldozer (микроархитектура)|Bulldozer]] ([[Список микропроцессоров AMD FX|FX]], [[Opteron]]) |
|||
** Основанные на [[Piledriver (микроархитектура)|Piledriver]] ([[Список микропроцессоров AMD FX|FX]], [[AMD APU|A10]], [[AMD APU|A8]], [[AMD APU|A6]], [[AMD APU|A4]], [[Opteron]]) |
|||
** Основанные на [[Zen (микроархитектура)|Zen]] |
|||
** Основанные на [[Zen+]] |
|||
** Основанные на [[Zen 2]] |
|||
** Основанные на [[Zen 3]] |
|||
** Основанные на [[Zen 4]] |
|||
* '''VIA''': |
* '''VIA''': |
||
** Nano |
** [[VIA Nano|Nano]] |
||
== Литература == |
== Литература == |
||
* [https://web.archive.org/web/20061104143303/http://download.intel.com/design/mobile/datashts/31407801.pdf Спецификация на Core 2 Mobile] |
* [https://web.archive.org/web/20061104143303/http://download.intel.com/design/mobile/datashts/31407801.pdf Спецификация на Core 2 Mobile] |
||
* [https://web.archive.org/web/20111124230720/http://download.intel.com/technology/architecture/new-instructions-paper.pdf Доклад Intel, признающий существование SSSE3 и описывающий SSE4] |
* [https://web.archive.org/web/20111124230720/http://download.intel.com/technology/architecture/new-instructions-paper.pdf Доклад Intel, признающий существование SSSE3 и описывающий SSE4] |
||
* [http://www.intel.com/design/processor/manuals/253667.pdf Описание системы команд, где расписаны SSSE3 инструкции] |
* [http://www.intel.com/design/processor/manuals/253667.pdf Описание системы команд, где расписаны SSSE3 инструкции] |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
[[Категория:Инструкции x86]] |
[[Категория:Инструкции x86]] |
||
[[Категория:Расширения архитектуры x86]] |
[[Категория:Расширения архитектуры x86]] |
Текущая версия от 16:17, 17 июля 2024
SSSE3 (англ. Supplemental Streaming SIMD Extensions 3) — это обозначение, данное Intel четвёртому расширению системы команд. Предыдущее имело обозначение SSE3, и Intel добавил ещё один символ "S" вместо того, чтобы увеличить номер расширения, возможно, потому, что они посчитали SSSE3 простым дополнением к SSE3.
Часто, до того как стало использоваться официальное обозначение SSSE3, эти новые команды назывались SSE4. Также их называли кодовыми именами Tejas New Instructions (TNI) и Merom New Instructions (MNI) по названию процессоров, где впервые Intel намеревалась поддержать эти новые команды.
SSSE3 был представлен 26 июня 2006 года вместе с процессорами Xeon с кодовым именем Woodcrest.
Новыми в SSSE3, по сравнению с SSE3, являются 16 уникальных команд, работающих с упакованными целыми. Каждая из них может работать как с 64-битными (MMX), так и с 128-битными (XMM) регистрами, поэтому Intel в своих материалах ссылается на 32 новые команды.
Новые инструкции
[править | править код]Работа со знаком
[править | править код]- PABSB, PABSW, PABSD — (Packed Absolute Value {Bytes/Words/DWords})
- Input — { A0, A1… }
- Output — { A0 * sign(A0), A1 * sign (A1)… }
Каждое поле результата есть абсолютная величина соответствующего поля из src1. Фактически это те же операции PSIGNB, PSIGNH, PSIGNW, у которых оба аргумента один и тот же регистр.
- PSIGNB, PSIGNW, PSIGND — (Packed Sign {Bytes/Words/DWords})
- Input — { A0, A1… }, { B0, B1… }
- Output — { A0 * sign(B0), A1 * sign (B1)… }
Каждое поле результата есть произведение поля из src1 на {-1,0,1} в зависимости от знака соответствующего поля в src2 (умножение на 0, когда поле в src2 равно нулю).
Сдвиги
[править | править код]- PALIGNR — (Packed Align Right)
- Input — { A0, A1 }, { B0, B1 }, imm8
- Output — { B1_B0_A1_A0 >> (imm8 * 8) }
Два регистра операнда рассматривается как одно беззнаковое промежуточное значение удвоенной размерности, из которого извлекается 64-/128-битное значение начиная с байта, указанного в непосредственном аргументе-константе команды.
Перемешивание байт
[править | править код]- PSHUFB — (Packed Shuffle Bytes)
- Input — { A0, A1, A2,.. A7/A15 }, { B0, B1, B2,.. B7/B15 }
- Output — { [AB0 AB1 AB2 …] }
Перестановка байт, каждый байт результата есть некоторый байт из первого аргумента, определяемый по соответствующему байту из второго аргумента (если байт отрицательный, то в байт результат прописывается ноль, иначе используются младшие 3 или 4 бита как номер байта в первом аргументе).
Умножения
[править | править код]- PMULHRSW — (Packed Multiply High with Round and Scale)
- Input — { A0, A1… }, { B0, B1… }
- Output — { A0 * B0, A1 * B1… }
Аргументы A и B рассматриваются как вектора 16-битных знаковых чисел с фиксированной запятой представленных в диапазоне [-1,+1) (то есть 0x4000 это 0.5, а 0xa000 это −0.75 и т. д.), которые перемножаются друг с другом с корректным округлением.
- PMADDUBSW — (Multiply and Add Packed Signed and Unsigned Bytes)
- Input — { A0, A1, A2, A3,.. }, { B0, B1, B2, B3,.. }
- Output — { (A0*B0+A1*B1), (A2*B2+A3*B3), … }
Производится побайтное перемножение векторов A и B, промежуточные 16-битные результаты попарно складываются между собой с насыщением и выдаются как результат.
Горизонтальные сложения/вычитания целых
[править | править код]- PHSUBW, PHSUBD — (Packed Horizontal Subtract (16- или 32-битные поля))
- Input — { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
- Output — { A0-A1 A2-A3 … B0-B1 B2-B3 …}
Горизонтальное вычитание целых 16/32-битных полей.
- PHSUBSW — (Packed Horizontal Subtract and Saturate Words (16-битные поля))
- Input — { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
- Output — { A0-A1 A2-A3 B0-B1 B2-B3 }
Горизонтальное вычитание целых 16-битных полей с насыщением.
- PHADDW, PHADDD — (Packed Horizontal Add (16- или 32-битные поля))
- Input — { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
- Output — { A0+A1 A2+A3 … B0+B1 B2+B3 …}
Горизонтальное сложение целых 16/32-битных полей.
- PHADDSW — (Packed Horizontal Add and Saturate Words (16-битные поля))
- Input — { A0, A1, A2, A3 }, { B0, B1, B2, B3 }
- Output — { A0+A1 A2+A3 … B0+B1 B2+B3 …}
Горизонтальное сложение целых 16-битных полей с насыщением.
Процессоры, поддерживающие SSSE3
[править | править код]- Intel:
- Xeon 5100 Series
- Xeon 5300 Series
- Xeon 3000 Series
- Xeon E3
- Xeon E5
- Xeon E7
- Core 2 Duo
- Core 2 Quad
- Core 2 Extreme
- Core i3
- Core i5
- Core i7
- Core i9
- Pentium Dual-Core (на ноутбуках начиная с ядра Merom)
- Celeron (Celeron 4xx, ядро Conroe-L)
- Celeron Dual-Core
- Celeron M 500 Series
- Atom
- AMD:
- VIA: