SSSE3 - SSSE3
Дополнительные расширения SIMD для потоковой передачи 3 (SSSE3 или же SSE3S) это SIMD набор инструкций, созданный Intel и является четвертой итерацией SSE технологии.
История
SSSE3 был впервые представлен с процессорами Intel на базе Основная микроархитектура 26 июня 2006 года с Xeon "Woodcrest".
SSSE3 упоминается по кодовым именам Теджас Новые инструкции (TNI) или же Мером Новые инструкции (MNI) для первых разработок процессоров, предназначенных для его поддержки.
Функциональность
SSSE3 содержит 16 новых дискретных инструкций. Каждая инструкция может работать с 64-битными регистрами MMX или 128-битными XMM. Поэтому в материалах Intel упоминаются 32 новые инструкции. Они включают:[1]
- Двенадцать инструкций, выполняющих операции горизонтального сложения или вычитания.
- Шесть инструкций, оценивающих абсолютные значения.
- Две инструкции, которые выполняют операции умножения и сложения и ускоряют вычисление скалярных произведений.
- Две инструкции, которые ускоряют операции упакованного целочисленного умножения и производят целочисленные значения с масштабированием.
- Две инструкции, которые выполняют побайтовое перемешивание на месте в соответствии со вторым операндом управления перемешиванием.
- Шесть инструкций, которые инвертируют упакованные целые числа в операнде-адресате, если знаки соответствующего элемента в исходном операнде меньше нуля.
- Две инструкции, которые выравнивают данные из двух операндов.
Процессоры с SSSE3
- AMD:
- "Cat" маломощные процессоры
- Bobcat на основе процессоры
- На базе Ягуара процессоры и новее
- На основе Puma процессоры и новее
- Переработчики "тяжелого оборудования"
- Бульдозерный процессоры
- Пиледривер на базе процессоры
- На базе парового катка процессоры
- Экскаватор на базе процессоры и новее
- На основе дзен процессоры
- Zen + на основе процессоры
- На базе Zen2 процессоры
- "Cat" маломощные процессоры
- Intel:
- Xeon 5100 серии
- Xeon 5300 серии
- Xeon 5400 серии
- Xeon 3000 серии
- Core 2 Duo
- Core 2 Extreme
- Core 2 Quad
- Core i7
- Core i5
- Core i3
- Pentium Dual Core (если поддерживается 64-разрядная версия; Allendale вперед)
- Последовательность Celeron 4xx Conroe-L
- Двухъядерный процессор Celeron E1200
- Celeron M 500 серии
- Атом
- ЧЕРЕЗ:
Новый[1] инструкции
В таблице ниже satsw (X) (читается как «насыщение до знакового слова») принимает целое число X со знаком и преобразует его в -32768, если оно меньше -32768, в +32767, если оно больше 32767, и в противном случае оставляет его без изменений. Как обычно для архитектуры Intel, байты составляют 8 бит, слова - 16 бит, а двойные слова - 32 бита; «Регистр» относится к векторному регистру MMX или XMM.
PSIGNB, PSIGNW, PSIGND | Упакованный знак | Отменять элементы регистра байтов, слов или двойных слов, если знак соответствующих элементов другого регистра отрицательный. |
---|---|---|
ПАБСБ, ПАБСВ, ПАБСД | Упакованное абсолютное значение | Заполните элементы регистра байтов, слов или двойных слов абсолютными значениями элементов другого регистра |
PALIGNR | Упаковано по правому краю | взять два регистра, объединить их значения и извлечь раздел длины регистра из смещения, заданного непосредственным значением, закодированным в инструкции. |
ПШУФБ | Упакованные байты в случайном порядке | принимает регистры байтов A = [a0 а1 а2 ...] и B = [b0 б1 б2 ...] и заменяет A на [ab0 аb1 аБи 2 ...]; за исключением того, что он заменяет i-ю запись на 0, если верхний бит bя установлен. |
PMULHRSW | Упаковано Multiply High с Round и Scale | обрабатывать 16-битные слова в регистрах A и B как 16-битные числа со знаком с фиксированной точкой в диапазоне от -1,00000000 до +0,99996948 ... (например, 0x4000 обрабатывается как +0,5, а 0xA000 как -0,75) и умножать их вместе с правильными округление. |
PMADDUBSW | Умножение и сложение упакованных байтов со знаком и без знака | Возьмите байты в регистрах A и B, умножьте их вместе, сложите пары, выполните насыщение со знаком и сохраните. Т.е. [a0 a1 a2…] pmaddubsw [b0 b1 b2…] = [satsw (a0b0 + a1b1) satsw (a2b2 + a3b3)…] |
PHSUBW, PHSUBD | Упакованное горизонтальное вычитание (слова или двойные слова) | принимает регистры A = [a0 a1 a2…] и B = [b0 b1 b2…] и выводит [a0 − a1 a2 − a3… b0 − b1 b2 − b3…] |
PHSUBSW | Упакованные горизонтальные слова вычитания и насыщения | как PHSUBW, но выводит [satsw (a0 − a1) satsw (a2 − a3)… satsw (b0 − b1) satsw (b2 − b3)…] |
PHADDW, PHADDD | Упакованное горизонтальное сложение (слова или двойные слова) | принимает регистры A = [a0 a1 a2…] и B = [b0 b1 b2…] и выводит [a0 + a1 a2 + a3… b0 + b1 b2 + b3…] |
PHADDSW | Упакованные горизонтальные слова добавления и насыщения | как PHADDW, но выводит [satsw (a0 + a1) satsw (a2 + a3)… satsw (b0 + b1) satsw (b2 + b3)…] |
Смотрите также
Рекомендации
- ^ а б "2.9.5". Справочное руководство по оптимизации архитектур Intel 64 и IA-32 (PDF) (Технический отчет). Intel.com. 2016. С. 92–93.. Получено 22 июня, 2018.