Avx команды. Операции переменной разрядности. Наборы инструкций SSE4.2

Улучшения

  • Новая схема кодирования инструкций VEX
  • Размер векторных регистров SIMD увеличивается со 128 (XMM) до 256 бит (регистры YMM0 - YMM15). Существующие 128-битные SSE инструкции будут использовать младшую половину новых YMM регистров, не изменяя старшую часть. Для работы с YMM регистрами добавлены новые 256-битные AVX инструкции. В будущем возможно расширение векторных регистров SIMD до 512 или 1024 бит.

Новая схема кодирования

Новая схема кодирования инструкций VEX использует VEX префикс. В настоящий момент существуют два VEX префикса, длиной 2 и 3 байта. Для 2-х байтного VEX префикса первый байт равен 0xC5, для 3-х байтного 0xC4. В 64-битном режиме первый байт VEX префикса уникален. В 32-битном режиме возникает конфликт с инструкциями LES и LDS, который разрешается старшим битом второго байта, он имеет значение только в 64-битном режиме, через неподдерживаемые формы инструкций LES и LDS. Длина существующих AVX инструкций, вместе с VEX префиксом, не превышает 11 байт. В следующих версиях ожидается появление более длинных инструкций.

Новые инструкции

Инструкция Описание
VBROADCASTSS, VBROADCASTSD, VBROADCASTF128 Копирует 32-х, 64-х или 128-ми битный операнд из памяти во все элементы векторного регистра XMM или YMM.
VINSERTF128 Замещает младшую или старшую половину 256-ти битного регистра YMM значением 128-ми битного операнда. Другая часть регистра-получателя не изменяется.
VEXTRACTF128 Извлекает младшую или старшую половину 256-ти битного регистра YMM и копирует в 128-ми битный операнд-назначение.
VMASKMOVPS, VMASKMOVPD Условно считывает любое количество элементов из векторного операнда из памяти в регистр-получатель, оставляя остальные элементы несчитанными и обнуляя соответствующие им элементы регистра-получателя. Также может условно записывать любое количество элементов из векторного регистра в векторный операнд в памяти, оставляя остальные элементы операнда памяти неизменёнными
VPERMILPS, VPERMILPD Переставляет 32-х или 64-х битные элементы вектора согласно операнду-селектору (из памяти или из регистра).
VPERM2F128 Переставляет 4 128-ми битных элемента двух 256-ти битных регистров в 256-ти битный операнд-назначение с использованием непосредственной константы (imm) в качестве селектора.
VZEROALL Обнуляет все YMM регистры и помечает их как неиспользуемые. Используется при переключении между 128-ми битным режимом и 256-ти битным.
VZEROUPPER Обнуляет старшие половины всех регистров YMM. Используется при переключении между 128-ми битным режимом и 256-ти битным.

Также в спецификации AVX описана группа инструкций PCLMUL (Parallel Carry-Less Multiplication, Parallel CLMUL)

  • PCLMULLQLQDQ xmmreg,xmmrm
  • PCLMULHQLQDQ xmmreg,xmmrm
  • PCLMULLQHQDQ xmmreg,xmmrm
  • PCLMULHQHQDQ xmmreg,xmmrm
  • PCLMULQDQ xmmreg,xmmrm,imm

Применение

Подходит для интенсивных вычислений с плавающей точкой в мультимедиа программах и научных задачах. Там, где возможна более высокая степень параллелизма, увеличивает производительность с вещественными числами.

Поддержка в операционных системах

Использование YMM регистров требует поддержки со стороны операционной системы. Следующие системы поддерживают регистры YMM:

Микропроцессоры с AVX

Совместимость между реализациями Intel и AMD обсуждается в XOP instruction set .

Будущие расширения

Схема кодирования инструкций VEX легко допускает дальнейшее расширение набора инструкций AVX. В следующей версии, AVX2, планируется добавить инструкции для работы с целыми числами, FMA3 (увеличит производительность при обработке чисел с плавающей запятой в 2 раза ), загрузку распределенного в памяти вектора (gather) и прочее.

Различные планируемые дополнения системы команд x86 :

  • CLMUL
  • AMD FMA4
  • AMD XOP
  • AMD CVT16

Примечания


Наборы расширения базовых инструкций процессоров семейства x86
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES

Wikimedia Foundation . 2010 .

Смотреть что такое "AVX" в других словарях:

    Avx - {{{image}}} Sigles d une seule lettre Sigles de deux lettres > Sigles de trois lettres AAA à DZZ EAA à HZZ IAA à LZZ MAA à PZZ QAA à TZZ UAA à XZZ … Wikipédia en Français

    AVX - Sigles d’une seule lettre Sigles de deux lettres > Sigles de trois lettres Sigles de quatre lettres Sigles de cinq lettres Sigles de six lettres Sigles de sept… … Wikipédia en Français

Улучшения

  • Новая схема кодирования инструкций VEX
  • Размер векторных регистров SIMD увеличивается со 128 (XMM) до 256 бит (регистры YMM0 - YMM15). Существующие 128-битные SSE инструкции будут использовать младшую половину новых YMM регистров, не изменяя старшую часть. Для работы с YMM регистрами добавлены новые 256-битные AVX инструкции. В будущем возможно расширение векторных регистров SIMD до 512 или 1024 бит.

Новая схема кодирования

Новая схема кодирования инструкций VEX использует VEX префикс. В настоящий момент существуют два VEX префикса, длиной 2 и 3 байта. Для 2-х байтного VEX префикса первый байт равен 0xC5, для 3-х байтного 0xC4. В 64-битном режиме первый байт VEX префикса уникален. В 32-битном режиме возникает конфликт с инструкциями LES и LDS, который разрешается старшим битом второго байта, он имеет значение только в 64-битном режиме, через неподдерживаемые формы инструкций LES и LDS. Длина существующих AVX инструкций, вместе с VEX префиксом, не превышает 11 байт. В следующих версиях ожидается появление более длинных инструкций.

Новые инструкции

Инструкция Описание
VBROADCASTSS, VBROADCASTSD, VBROADCASTF128 Копирует 32-х, 64-х или 128-ми битный операнд из памяти во все элементы векторного регистра XMM или YMM.
VINSERTF128 Замещает младшую или старшую половину 256-ти битного регистра YMM значением 128-ми битного операнда. Другая часть регистра-получателя не изменяется.
VEXTRACTF128 Извлекает младшую или старшую половину 256-ти битного регистра YMM и копирует в 128-ми битный операнд-назначение.
VMASKMOVPS, VMASKMOVPD Условно считывает любое количество элементов из векторного операнда из памяти в регистр-получатель, оставляя остальные элементы несчитанными и обнуляя соответствующие им элементы регистра-получателя. Также может условно записывать любое количество элементов из векторного регистра в векторный операнд в памяти, оставляя остальные элементы операнда памяти неизменёнными
VPERMILPS, VPERMILPD Переставляет 32-х или 64-х битные элементы вектора согласно операнду-селектору (из памяти или из регистра).
VPERM2F128 Переставляет 4 128-ми битных элемента двух 256-ти битных регистров в 256-ти битный операнд-назначение с использованием непосредственной константы (imm) в качестве селектора.
VZEROALL Обнуляет все YMM регистры и помечает их как неиспользуемые. Используется при переключении между 128-ми битным режимом и 256-ти битным.
VZEROUPPER Обнуляет старшие половины всех регистров YMM. Используется при переключении между 128-ми битным режимом и 256-ти битным.

Также в спецификации AVX описана группа инструкций PCLMUL (Parallel Carry-Less Multiplication, Parallel CLMUL)

  • PCLMULLQLQDQ xmmreg,xmmrm
  • PCLMULHQLQDQ xmmreg,xmmrm
  • PCLMULLQHQDQ xmmreg,xmmrm
  • PCLMULHQHQDQ xmmreg,xmmrm
  • PCLMULQDQ xmmreg,xmmrm,imm

Применение

Подходит для интенсивных вычислений с плавающей точкой в мультимедиа программах и научных задачах. Там, где возможна более высокая степень параллелизма, увеличивает производительность с вещественными числами.

Поддержка в операционных системах

Использование YMM регистров требует поддержки со стороны операционной системы. Следующие системы поддерживают регистры YMM:

Микропроцессоры с AVX

Совместимость между реализациями Intel и AMD обсуждается в XOP instruction set .

Будущие расширения

Схема кодирования инструкций VEX легко допускает дальнейшее расширение набора инструкций AVX. В следующей версии, AVX2, планируется добавить инструкции для работы с целыми числами, FMA3 (увеличит производительность при обработке чисел с плавающей запятой в 2 раза ), загрузку распределенного в памяти вектора (gather) и прочее.

Различные планируемые дополнения системы команд x86 :

  • CLMUL
  • AMD FMA4
  • AMD XOP
  • AMD CVT16

Примечания


Наборы расширения базовых инструкций процессоров семейства x86
MMX | MMXEXT | SSE | SSE2 | SSE3 | SSSE3 | SSE4 | ATA | 3DNow! | 3DNowExt | SSE5 | AVX | AES

Wikimedia Foundation . 2010 .

  • Управление государственной безопасности (Венгрия)

Смотреть что такое "AVX" в других словарях:

    Avx - {{{image}}} Sigles d une seule lettre Sigles de deux lettres > Sigles de trois lettres AAA à DZZ EAA à HZZ IAA à LZZ MAA à PZZ QAA à TZZ UAA à XZZ … Wikipédia en Français

    AVX - Sigles d’une seule lettre Sigles de deux lettres > Sigles de trois lettres Sigles de quatre lettres Sigles de cinq lettres Sigles de six lettres Sigles de sept… … Wikipédia en Français

Руководство для программистов по работе с расширенным набором инструкций AVX-512. Ожидалось, что блоки для обработки целочисленных значений и значений с плавающей запятой с поддержкой 512-бит команд появятся в составе процессоров Intel 14-нм поколения Skylake. Потом стало известно , что в поколении Skylake поддержка AVX-512 будет только в составе серверных процессоров Intel Xeon и ускорителей расчётов Xeon Phi (в 14-нм поколении ускорителей Knights Landing). В составе ускорителей Knights Landing обещана поддержка большего набора расширений AVX-512, чем в случае процессоров Xeon общего назначения. Это объясняется тем, что расширенный набор инструкций AVX-512 нацелен на развитие параллелизма в расчётах, что на данном этапе проще реализовать (и с лучшей отдачей) в ускорителях вычислений.

К слову, ускорители Intel Knights Landing опираются на значительно переделанную архитектуру Atom Silvermont. В конфигурации с 72 ядрами процессоры Knights Landing одновременно могут обрабатывать до 288 потоков и выдавать до 3 терафлопс на операциях с двойной точностью и до 6 терафлопс на операциях с одинарной точностью. Для таких решений поддержка AVX-512 — это то, что доктор прописал. Параллелизм — это их сущность. Поскольку поставки Knights Landing начнутся в текущем квартале, программное обеспечение с реализацией SIMD-инструкций AVX-512 — это вопрос сегодняшнего дня. Поскольку процессоры Skylake-EP за небольшим исключением будут использовать те же наборы AVX-512, что и Knights Landing, к моменту появления на рынке моделей Skylake-EP для новых расширений будет создана серьёзная программная поддержка. Выход Skylake-EP, напомним, ожидается во второй половине 2017 года.

Глубина поддержки инструкций AVX настольными и серверными платформами Intel (Intel, ComputerBase.de)

Также во второй половине 2017 года появятся первые 10-нм процессоры компании Intel, с которыми мы сегодня знакомы по кодовому имени Cannon Lake. В свежем документе Intel для программистов авторы сайта ComputerBase.de обнаружили , что клиентские процессоры Cannon Lake также будут поддерживать AVX-512. Как минимум речь идёт о расширениях AVX512IFMA, AVX512VBMI, SHA и UMPI. Всё вместе указывает на то, что в конце 2017 года можно ожидать широкую поддержку AVX-512 со стороны программистов. Для клиентского применения использование AVX-512 будет означать, что обработка массивных мультимедийных данных будет проходить с меньшей нагрузкой на процессор. Точнее, работа с использованием аппаратных ресурсов, совместимых с AVX-512, будет максимально эффективна. На этих задачах потребление снизится, а производительность вырастет.

Выигрыш от внедрения AVX-512 по сравнению с AVX-256/128 и предыдущими «мультимедийными» инструкциями

Добавим, архитектура процессоров AMD Zen, которая в продуктах компании начнёт свою жизнь в конце 2016 года или в начале 2017 года, будет оперировать двумя 256-битными инструкциями AVX за такт. Для этого каждое ядро Zen получит по два 256-битных FMAC (fused multiply — add capability). На практике подобная архитектура позволит за один такт выполнять одну 512-битную инструкцию. Как это реализовано у процессоров Intel Cannon Lake, мы пока сказать не можем.

Сегодня хочу завести разговор на тему, что такое avx инструкции в процессоре, где и для чего они используются.

Среднестатистический покупашка идет в магазин и хочет купить компьютер / ноутбук для работы и для игр. На практике это - помощней и подешевле, чтоб реферат в ворде написать после чего играть.
Что касается процессоров - на полках лежат сердитые пеньки равные по мощности ай-третьим. Неужели i3 это маркетинговый заговор? Неужели Pentium это "такой ай три только дешевле"? И да и нет. А дело вот в чем.

Чтобы написать реферат в ворде - хватит самого дешевого Celeron (причем можно взять "процессор затычку" еще дешевле, если брать его на барахолке с чеком и остатком гарантии).
Чтобы после реферата сыграть во все игры - подойдет Pentium обладающий задатками ай-третьего (2 ядра 4 потока). Для игр AVX-инструкции не обязательны (лишь бы нужные SSE были).

А вот для профессиональных задач, пригодится аппаратная виртуализация и поддержка AVX-инструкций, поэтому - лучше взять минимум ай-третий.

Зачем нужны AVX инструкции

Что входит в ряд профессиональных задач? Как правило, лишенные AVX камни так же лишены и аппаратного ускорения виртуализации.
Разработка под android, которая потребует виртуалку этого самого ведроида (некоторые эмуляторы даже не запустятся, некоторые будут работать уныло сильно загружая ядра).
Пережевывание мультимедийных данных (от обработки фоточек до кодирования видео и запиливания трехмерной графики, так что - уже летсплейщикам стоит раскошелиться на процессор подороже).

Если без AVX

В процессоре есть регистры для инструкций.
SSE-регистр 128-битный, а AVX-регистр 256-битный.
Таким образом, чтобы не выносить ничей мозг анатомией камня, скажем просто - 256 не влезет в 128.

Без AVX тоже можно обрабатывать фоточки, жевать видео и пилить три-дэ. Но есть нюансы...
Если по-проще, то старый 8-ядерный Xeon (не умеющий AXV) будет пилить видосы с той же скоростью что современный i3 (умеющий AVX).

У процессора есть конвейер: узнал откуда брать из памяти, взял из памяти, вычислил, отправил результаты в память.
Упрощенно конвейер с и без AVX можно изобразить так.

Как видите - операций во втором случае меньше. Из чего логично предположить, что AVX-считалочка работает быстрее (в каждом вычислительном такте). А раз быстрее в каждом такте - тогда имея меньше гигагерц можно вычислять быстрее.

Еще одна вкусность AVX это дополнительный операнд. Используется не 2 операнда а 3, что так же сокращает конвейер. Допустим мы хотим сложить X и Y.
Код: Обычная операция, где 2 операнда (X=X+Y) заставит перезаписывать один из операндов.
AVX операция, где 3 операнда (Z=X+Y) позволяет записать результат в третий операнд.
Сложна? Ок, давайте бум прощэ.

Пилить видосы имея AVX получится быстрее. Ибо, помимо вышеописанного, добавляется плюшка оптимальной разбивки кадров.
Комп пересчитывает не каждый кадр. Он разбивает кадр на прямоугольники и сравнивает их, а если находится подходящий - использует готовый кусочек.
Тут AVX научился работать с видосиками оптимальнее (кому интересно - почитайте у профессионалов, а я ограничусь красивой картинкой).

Раньше разбивка была - как показано слева. AVX-разбивка умеет более умно - как показано справа.

Подводя итог

Чтобы писать реферат в ворде - сойдет вообще любой процессор.
Чтобы после вместо реферата сыграть в игру - подойдет пень с задатками ай-третьего.
Чтобы пилить контент - лучше раскошелиться на ай-третий.




Top