Из Википедии, свободной энциклопедии
  (Перенаправлено с AVX512 )
Перейти к навигации Перейти к поиску

AVX-512 - это 512-битные расширения для 256-битных инструкций SIMD Advanced Vector Extensions для архитектуры набора команд x86 (ISA), предложенные Intel в июле 2013 года и реализованные в Intel Xeon Phi x200 (Knights Landing) [1] и Skylake- X процессоров; это включает в себя серию Core-X (за исключением Core i5-7640X и Core i7-7740X), а также новое семейство масштабируемых процессоров Xeon и встраиваемую серию Xeon D-2100. [2]

AVX-512 - не первый 512-битный набор инструкций SIMD, который Intel представила в процессорах: более ранние 512-битные инструкции SIMD, используемые в сопроцессорах Xeon Phi первого поколения , унаследованные от проекта Intel Larrabee , похожи, но не совместимы с двоичным частично совместим с исходным кодом. [1]

AVX-512 состоит из нескольких расширений, которые могут быть реализованы независимо. Эта политика является отходом от исторического требования реализации всего блока инструкций. Для всех реализаций AVX-512 требуется только базовое расширение AVX-512F (AVX-512 Foundation).

Набор инструкций [ править ]

Набор команд AVX-512 состоит из нескольких отдельных наборов, каждый из которых имеет свой уникальный бит функции CPUID; однако они обычно группируются по поколению процессоров, в котором они реализованы.

F, CD, ER, PF
Представлен с Xeon Phi x200 (Knights Landing) и Xeon E5-26xx V5 ( Skylake EP / EX "Purley", ожидается во втором полугодии 2017 года), причем последние два (ER и PF) относятся к Knights Landing.
  • AVX-512 Foundation (F)  - расширяет большинство 32-битных и 64-битных инструкций AVX схемой кодирования EVEX для поддержки 512-битных регистров, масок операций, широковещательной передачи параметров, а также встроенного управления округлением и исключениями, реализованного Knights Landing и Skylake Xeon
  • AVX-512 Инструкции по обнаружению конфликтов (CD)  - эффективное обнаружение конфликтов, позволяющее векторизовать больше циклов , реализовано Knights Landing [1] и Skylake X
  • AVX-512 Exponential and Reciprocal Instructions (ER) - экспоненциальные и взаимные операции, предназначенные для помощи в реализации трансцендентных операций, реализованные Knights Landing [1]
  • AVX-512 Prefetch Instructions (PF)  - новые возможности предварительной выборки, реализованные Knights Landing [1]
VL, DQ, BW
Представлен в Skylake X и Cannon Lake .
  • AVX-512 Vector Length Extensions (VL)  - расширяет большинство операций AVX-512 для работы с регистрами XMM (128-бит) и YMM (256-бит) [3]
  • AVX-512 Doubleword and Quadword Instructions (DQ)  - добавляет новые 32-битные и 64-битные инструкции AVX-512 [3]
  • AVX-512 Byte and Word Instructions (BW)  - расширяет AVX-512 для охвата 8-битных и 16-битных целочисленных операций [3]
IFMA, VBMI
Представлено с Cannon Lake . [4]
  • AVX-512 Integer Fused Multiply Add (IFMA) - плавное сложение целых чисел с использованием 52-битной точности.
  • AVX-512 Vector Byte Manipulation Instructions (VBMI) добавляет команды перестановки векторных байтов, которых не было в AVX-512BW.
4VNNIW, 4FMAPS
Представлен с Knights Mill . [5] [6]
  • AVX-512 Векторные инструкции нейронной сети Word variable precision (4VNNIW) - векторные инструкции для глубокого обучения, улучшенного слова, переменной точности.
  • AVX-512 Fused Multiply Accumulation Packed Single precision (4FMAPS) - векторные инструкции для глубокого обучения, с плавающей запятой, одинарной точности.
VPOPCNTDQ
Инструкция по подсчету векторной популяции . Представлен с Knights Mill и Ice Lake . [7]
ВННИ, ВБМИ2, БИТАЛГ
Представлено Ice Lake. [7]
  • AVX-512 Vector Neural Network Instructions (VNNI) - векторные инструкции для глубокого обучения.
  • AVX-512 Vector Byte Manipulation Instructions 2 (VBMI2) - загрузка байта / слова, сохранение и объединение со сдвигом.
  • AVX-512 Bit Algorithms (BITALG) - инструкции по манипулированию битами байтов / слов, расширяющие VPOPCNTDQ.
VP2INTERSECT
Введен с Tiger Lake.
  • AVX-512 Пересечение векторной пары с парой регистров маски (VP2INTERSECT) .
GFNI, VPCLMULQDQ, VAES
Представлено Ice Lake. [7]
  • Это не функции AVX-512 как таковые. Вместе с AVX-512 они включают версии инструкций GFNI, PCLMULQDQ и AES в кодировке EVEX .

Кодировка и особенности [ править ]

VEX приставку используется AVX и AVX2, в то время как гибкий, не оставил достаточно места для функций Intel хотел бы добавить к AVX-512. Это привело к созданию нового префикса EVEX .

По сравнению с VEX, EVEX имеет следующие преимущества: [6]

  • Расширенное кодирование регистров, позволяющее использовать 32 512-битных регистра.
  • Добавляет 8 новых регистров opmask для маскировки большинства инструкций AVX-512.
  • Добавляет новый режим скалярной памяти, который автоматически выполняет широковещательную рассылку.
  • Добавляет место для явного контроля округления в каждой инструкции.
  • Добавляет новый режим адресации сжатой памяти смещения .

Расширенные регистры, бит ширины SIMD и регистры opmask AVX-512 являются обязательными и требуют поддержки со стороны ОС.

Режимы SIMD [ править ]

Инструкции AVX-512 предназначены для смешивания с 128/256-битными инструкциями AVX / AVX2 без потери производительности. Однако расширения AVX-512VL позволяют использовать инструкции AVX-512 в 128/256-битных регистрах XMM / YMM, поэтому большинство инструкций SSE и AVX / AVX2 имеют новые версии AVX-512, закодированные с префиксом EVEX, что обеспечивает доступ к новым функциям. такие как opmask и дополнительные регистры. В отличие от AVX-256, новые инструкции не имеют новой мнемоники, но имеют общее пространство имен с AVX, что делает различие между версиями инструкции в кодировке VEX и EVEX неоднозначным в исходном коде. Поскольку AVX-512F работает только с 32- и 64-битными значениями, инструкции SSE и AVX / AVX2, которые работают с байтами или словами, доступны только с расширением AVX-512BW (поддержка байтов и слов). [6]

Расширенные регистры [ править ]

Ширина файла регистров SIMD увеличена с 256 до 512 бит и расширена с 16 до 32 регистров ZMM0-ZMM31. Эти регистры могут быть адресованы как 256-битные регистры YMM из расширений AVX и 128-битные регистры XMM из потоковых расширений SIMD , а устаревшие инструкции AVX и SSE могут быть расширены для работы с 16 дополнительными регистрами XMM16-XMM31 и YMM16-YMM31 при использовании EVEX. закодированная форма.

Регистры Opmask [ править ]

Большинство инструкций AVX-512 могут указывать на один из 8 регистров opmask (k0 – k7). Для инструкций, которые используют регистр маски в качестве маски операции, регистр k0 является особенным: жестко запрограммированная константа, используемая для обозначения немаскированных операций. Для других операций, таких как те, которые записывают в регистр opmask или выполняют арифметические или логические операции, k0 является действующим действующим регистром. В большинстве инструкций маска операции используется для управления тем, какие значения записываются в место назначения. Флаг управляет поведением opmask, которое может быть либо «нулевым», при котором обнуляется все, что не выбрано маской, либо «слияние», при котором все не выбранное остается нетронутым. Поведение слияния идентично инструкциям по смешиванию.

Регистры opmask обычно имеют ширину 16 бит, но могут иметь длину до 64 бит с расширением AVX-512BW. [6] Однако, сколько битов фактически используется, зависит от типа вектора маскируемых инструкций. Для 32-битных одинарных слов с плавающей запятой или двойных слов 16 бит используются для маскировки 16 элементов в 512-битном регистре. Для двойных слов с плавающей точкой и четверных слов используется не более 8 битов маски.

Регистр opmask - это причина, по которой несколько побитовых инструкций, которые, естественно, не имеют ширины элементов, были добавлены в AVX-512. Например, побитовое И, ИЛИ или 128-битное перемешивание теперь существует как для двойного, так и для четверного слова, с единственной разницей в окончательной маскировке.

Новые инструкции opmask [ править ]

Регистры opmask имеют новое мини-расширение инструкций, работающих непосредственно с ними. В отличие от остальных инструкций AVX-512, все эти инструкции закодированы в VEX. Все начальные инструкции opmask - это 16-битные (Word) версии. С AVX-512DQ были добавлены 8-битные (байтовые) версии, чтобы лучше соответствовать потребностям маскировки 8 64-битных значений, а с AVX-512BW были добавлены 32-битные (Double) и 64-битные (Quad) версии, чтобы они могли маска до 64 8-битных значений. Инструкции KORTEST и KTEST могут использоваться для установки флагов x86 на основе регистров маски, так что их можно использовать вместе с ветвлениями x86, отличными от SIMD, и условными инструкциями.

Новые инструкции в основах AVX-512 [ править ]

Многие инструкции AVX-512 являются просто версиями EVEX старых инструкций SSE или AVX. Однако есть несколько новых инструкций и старые инструкции, которые были заменены новыми версиями AVX-512. Новые или существенно переработанные инструкции перечислены ниже. Эти базовые инструкции также включают расширения от AVX-512VL и AVX-512BW, поскольку эти расширения просто добавляют новые версии этих инструкций вместо новых инструкций.

Смешайте с помощью маски [ править ]

Версий инструкций смешивания из SSE4 с префиксом EVEX не существует ; вместо этого AVX-512 имеет новый набор инструкций смешивания, использующих регистры маски в качестве селекторов. Вместе с общими инструкциями сравнения с маской, приведенными ниже, они могут использоваться для реализации общих тернарных операций или cmov, подобных VPCMOV XOP .

Поскольку смешивание является неотъемлемой частью кодирования EVEX, эти инструкции также можно рассматривать как базовые инструкции перемещения. Используя режим наложения обнуления, их также можно использовать в качестве инструкций по маскированию.

Сравнить с маской [ править ]

AVX-512F имеет четыре новых инструкции сравнения. Как и их аналоги XOP, они используют непосредственное поле для выбора между 8 различными сравнениями. Однако, в отличие от своих идей XOP, они сохраняют результат в регистре маски и изначально поддерживают только сравнения двойных и четверных слов. Расширение AVX-512BW предоставляет версии в байтах и ​​словах. Обратите внимание, что для инструкций могут быть указаны два регистра маски: один для записи, а другой для объявления регулярного маскирования. [6]

Маска логического набора [ править ]

Последний способ установки масок - использование маски логического набора. Эти инструкции выполняют либо AND, либо NAND, а затем устанавливают целевую операционную маску на основе значений результата, равных нулю или ненулевых. Обратите внимание, что, как и инструкции сравнения, они принимают два регистра opmask, один как адресат, а другой - обычную opmask.

Сжать и развернуть [ править ]

Инструкции сжатия и развертывания соответствуют одноименным операциям APL . Они используют операционную маску немного иначе, чем другие инструкции AVX-512. Сжатие сохраняет только значения, отмеченные в маске, но сохраняет их сжатыми, пропуская и не резервируя место для немаркированных значений. Expand работает противоположным образом, загружая столько значений, сколько указано в маске, а затем распределяя их по выбранным позициям.

Переставить [ править ]

Добавлен новый набор инструкций перестановки для полных перестановок двух входов. Все они принимают три аргумента, два исходных регистра и один индекс; результат выводится путем перезаписи либо первого исходного регистра, либо индексного регистра. AVX-512BW расширяет инструкции, включая также 16-битные (слово) версии, а расширение AVX-512_VBMI определяет байтовые версии инструкций.

Побитовая троичная логика [ править ]

Две новые добавленные инструкции могут логически реализовать все возможные побитовые операции между тремя входами. В качестве входных данных они принимают три регистра и 8-битное непосредственное поле. Каждый бит на выходе генерируется с помощью поиска трех соответствующих битов на входах, чтобы выбрать одну из 8 позиций в 8-битном немедленном. Поскольку с использованием трех битов возможны только 8 комбинаций, это позволяет выполнять все возможные 3 входные побитовые операции. [6] Это единственные побитовые векторные инструкции в AVX-512F; Версии EVEX двух исходных команд побитовых векторов SSE и AVX AND, ANDN, OR и XOR были добавлены в AVX-512DQ.

Разница между версиями двойного слова и четверного слова заключается только в применении opmask.

Таблица истинности :

Конверсии [ править ]

Был добавлен ряд инструкций по преобразованию или перемещению; они завершают набор инструкций по преобразованию, доступных в SSE2.

Разложение с плавающей запятой [ править ]

Среди уникальных новых функций AVX-512F - инструкции для декомпозиции значений с плавающей запятой и обработки специальных значений с плавающей запятой . Поскольку эти методы совершенно новые, они также существуют в скалярных версиях.

Арифметика с плавающей запятой [ править ]

Это второй набор новых методов с плавающей запятой, который включает в себя новое масштабирование и приближенное вычисление обратной и обратной величины квадратного корня. Приблизительные взаимные инструкции гарантируют, что относительная ошибка не превышает 2 -14 . [6]

Трансляция [ править ]

Разное [ править ]

Новые инструкции по наборам [ править ]

Обнаружение конфликтов [ править ]

Инструкции в обнаружении конфликтов AVX-512 (AVX-512CD) предназначены для помощи в эффективном вычислении бесконфликтных подмножеств элементов в циклах, которые обычно невозможно безопасно векторизовать. [8]

Экспоненциальная и обратная [ править ]

Экспоненциальные и обратные инструкции AVX-512 содержат более точные приблизительные обратные инструкции, чем в основе AVX-512; относительная погрешность не превышает 2 −28 . Они также содержат две новые экспоненциальные функции с относительной ошибкой не более 2 −23 . [6]

Предварительная выборка [ править ]

Инструкции предварительной выборки AVX-512 содержат новые операции предварительной выборки для новых функций разброса и сбора, представленных в AVX2 и AVX-512. T0Предварительная выборка означает предварительную выборку в кэш уровня 1 и T1означает предварительную выборку в кеш уровня 2.

4FMAPS и 4VNNIW [ править ]

BW, DQ и VBMI [ править ]

AVX-512DQ добавляет новые инструкции двойного и четверного слова. AVX-512BW добавляет байтовые и словарные версии тех же инструкций и добавляет байтовые и словные версии инструкций двойного / четверного слова в AVX-512F. Несколько инструкций , которые получают только словоформы с AVX-512BW приобретает байтовую форму с расширением AVX-512_VBMI ( VPERMB, VPERMI2B, VPERMT2B, VPMULTISHIFTQB).

К набору инструкций маски были добавлены две новые инструкции: KADDи KTEST(формы B и W с AVX-512DQ, D и Q с AVX-512BW). Остальные инструкции маски, которые имели только словоформы, получили байтовые формы с AVX-512DQ и формы двойного / четверного слова с AVX-512BW. KUNPCKBWбыл продлен до KUNPCKWDи KUNPCKDQот AVX-512BW.

Среди инструкций, добавленных AVX-512DQ, есть несколько инструкций SSE, AVX, которые не получили версии AVX-512 с AVX-512F, среди них все две входные побитовые инструкции и целочисленные инструкции извлечения / вставки.

Ниже приведены полностью новые инструкции.

Инструкции с плавающей точкой [ править ]

Введены три новые операции с плавающей запятой. Поскольку они являются новинкой не только для AVX-512, у них есть как упакованные / SIMD, так и скалярные версии.

Эти VFPCLASSинструкции проверяют , является ли значение с плавающей точкой является одним из значений с плавающей запятой восемь специальных, какой из восьми значений вызовет бит в регистре маски выходной управляются непосредственной областью. В VRANGEинструкции выполняет минимальные или максимальные операции в зависимости от значения непосредственного поля, которое также может контролировать , если операция выполняется абсолютной или нет , и отдельно , как обрабатываются знак. Эти VREDUCEкоманды действуют на одном источнике, и вычесть из этого целой части величины исходного плюса числа бит , указанных в непосредственном поле его фракции.

Другие инструкции [ править ]

VBMI2 [ править ]

Расширьте возможности VPCOMPRESS и VPEXPAND за счет вариантов байтов и слов. Инструкции по смене новые.

ВННИ [ править ]

Инструкции векторной нейронной сети.

IFMA [ править ]

VPOPCNTDQ и BITALG [ править ]

VP2INTERSECT [ править ]

GFNI [ править ]

Новые инструкции для поля Галуа в кодировке EVEX :

VPCLMULQDQ [ править ]

VPCLMULQDQ с AVX-512F добавляет 512-битную версию инструкции PCLMULQDQ в кодировке EVEX. В AVX-512VL добавлены 256- и 128-битные версии с кодировкой EVEX. Только VPCLMULQDQ (то есть на процессорах, отличных от AVX512) добавляет только 256-битную версию с кодировкой VEX. (Доступность 128-битной версии с кодировкой VEX обозначается разными битами CPUID: PCLMULQDQ и AVX.) Более широкие, чем 128-битные варианты инструкции выполняют одну и ту же операцию с каждой 128-битной частью входных регистров, но они это делают. не расширять его, чтобы выбрать четверные слова из разных 128-битных полей (значение операнда imm8 одинаково: выбирается либо младшее, либо старшее четверное слово из 128-битного поля).

VAES [ править ]

Команды AES в кодировке VEX и EVEX . Более широкие, чем 128-битные варианты инструкции, выполняют одну и ту же операцию с каждой 128-битной частью входных регистров. Версии VEX можно использовать без поддержки AVX-512.

BF16 [ править ]

Инструкции по ускорению AI, работающие в формате Bfloat16 .

Устаревшие инструкции обновлены версиями в кодировке EVEX [ править ]

Процессоры с AVX-512 [ править ]

  • Intel
    • Приземление рыцарей (Xeon Phi x200): [1] [9] AVX-512 F, CD, ER, PF
    • Knights Mill (Xeon Phi x205): [7] AVX-512 F, CD, ER, PF, 4FMAPS, 4VNNIW, VPOPCNTDQ
    • Skylake-SP , Skylake-X : [10] [11] [12] AVX-512 F, CD, VL, DQ, BW
    • Cannon Lake : [7] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI.
    • Каскадное озеро : AVX-512 F, CD, VL, DQ, BW, VNNI
    • Озеро Купер : AVX-512 F, CD, VL, DQ, BW, VNNI, BF16
    • Ледяное озеро , [7] Ракетное озеро : [13] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES
    • Tiger Lake (кроме Pentium и Celeron [14] ): [15] AVX512 F, CD, VL, BW, DQ, VBMI, IFMA, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, VP2INTERSECT
  • Кентавр Технологии
    • Ядро "CNS" (8c / 8t, AVX512F / CD / VL / BW / DQ / IFMA / VBMI) [16] [17]

QEMU поддерживает эмуляцию AVX-512 в своем TCG.

Производительность [ править ]

Советник Intel "Vectorization" (начиная с версии 2016 Update 3) поддерживает собственный анализ производительности AVX-512 и качества векторного кода для процессора Intel Xeon Phi 2-го поколения (кодовое название Knights Landing ). Наряду с традиционным профилем горячих точек, рекомендациями советников и «бесшовной» интеграцией диагностики векторизации Intel Compiler, анализ Advisor Survey также предоставляет метрики AVX-512 ISA и новые специфичные для AVX-512 «характеристики», например разброс, сжатие / расширение, использование маски. [18] [19]

На некоторых процессорах инструкции AVX-512 вызывают дросселирование частоты даже больше, чем его предшественники, вызывая штраф для смешанных рабочих нагрузок. Дополнительное понижение частоты запускается 512-битной шириной векторов и зависит от характера выполняемых инструкций, а использование 128- или 256-битной части AVX-512 (AVX-512VL) не запускает его. В результате gcc и clang по умолчанию предпочитают использовать 256-битные векторы. [20]

См. Также [ править ]

  • Набор инструкций FMA (FMA)
  • Набор команд XOP (XOP)
  • Scalable Vector Extension for ARM - новый набор векторных команд (дополняющий VFP и NEON ), поддерживающий очень широкую разрядность и единый двоичный код, который может автоматически адаптироваться к максимальной ширине, поддерживаемой оборудованием.

Ссылки [ править ]

  1. ^ a b c d e f Джеймс Рейндерс (23 июля 2013 г.). «Инструкции AVX-512» . Intel . Проверено 20 августа 2013 года .
  2. ^ «Расширенный интеллект для решений с высокой плотностью кромок» . Intel . Intel . Проверено 8 февраля 2018 .
  3. ^ a b c Джеймс Рейндерс (17 июля 2014 г.). «Дополнительные инструкции AVX-512» . Intel . Проверено 3 августа 2014 .
  4. Антон Шилов. «Процессоры Intel 'Skylake' для ПК не поддерживают инструкции AVX-512» . Kitguru.net . Проверено 17 марта 2015 .
  5. ^ https://lemire.me/blog/2016/10/14/intel-will-add-deep-learning-instructions-to-its-processors/
  6. ^ a b c d e f g h «Справочник по программированию расширений набора команд архитектуры Intel» (PDF) . Intel . Проверено 29 января 2014 .
  7. ^ a b c d e f «Справочник по программированию расширений набора команд архитектуры Intel® и будущих функций» . Intel . Проверено 16 октября 2017 .
  8. ^ "Архитектура AVX-512 / Демиховский плакат" (PDF) . Intel . Проверено 25 февраля 2014 года .
  9. ^ «Краткое описание процессора Intel® Xeon Phi ™» . Intel . Проверено 12 октября +2016 .
  10. ^ «Intel представляет платформу серии X: до 18 ядер и 36 потоков, от 242 до 2000 долларов» . Ars Technica . Проверено 30 мая 2017 .
  11. ^ «Intel® Advanced Vector Extensions 2015/2016: Поддержка в коллекции компиляторов GNU» (PDF) . Gcc.gnu.org . Проверено 20 октября 2016 .
  12. ^ Патрицио, Энди. «Дорожная карта Intel Xeon для утечек на 2016 год» . Itworld.org . Проверено 20 октября 2016 .
  13. ^ "Обзор Intel Core i9-11900K - Самый быстрый игровой процессор в мире?" . www.techpowerup.com .
  14. ^ «Технические характеристики процессора Intel® Celeron® 6305 (4 МБ кэш-памяти, 1,80 ГГц, с IPU)» . ark.intel.com . Проверено 10 ноября 2020 .
  15. ^ «Использование коллекции компиляторов GNU (GCC): параметры x86» . GNU . Проверено 14 октября 2019 .
  16. ^ https://centtech.com/ai-technology/
  17. ^ "x86, x64 Instruction Latency, Memory Latency и CPUID дампы (instlatx64)" . users.atw.hu .
  18. ^ «Intel® Advisor XE 2016 Обновление 3 Что нового - Программное обеспечение Intel®» . Software.intel.com . Проверено 20 октября 2016 .
  19. ^ «Советник Intel® - Программное обеспечение Intel®» . Software.intel.com . Проверено 20 октября 2016 .
  20. ^ Кордес, Питер. «Инструкции SIMD, понижающие частоту процессора» . Переполнение стека .