AVX-512 - AVX-512
AVX-512 находятся 512 бит расширения к 256 бит Расширенные векторные расширения SIMD инструкции для x86 архитектура набора команд (ISA) предложено Intel в июле 2013 г. и внедрен в Xeon Phi x200 (Приземление рыцарей)[1] и Skylake-X Процессоры; это включает Core-X серия (за исключением Core i5-7640X и Core i7-7740X), а также новый Семейство масштабируемых процессоров Xeon и Xeon D-2100 Embedded Series.[2]
AVX-512 - не первый 512-битный набор инструкций SIMD, который Intel представила в процессорах: более ранние 512-битные инструкции SIMD, используемые в первом поколении Ксеон Пхи сопроцессоры, производные от Intel Ларраби project, похожи, но не совместимы на двоичном уровне и только частично совместимы с исходным кодом.[1]
AVX-512 состоит из нескольких расширений, которые могут быть реализованы независимо. Эта политика является отходом от исторического требования реализации всего блока инструкций. Для всех реализаций AVX-512 требуется только базовое расширение AVX-512F (AVX-512 Foundation).
Набор инструкций
Набор инструкций AVX-512 состоит из нескольких отдельных наборов, каждый из которых имеет свой уникальный бит функции CPUID; однако они обычно группируются по поколению процессоров, в которых они реализованы.
- F, CD, ER, PF
- Представлено с Ксеон Фи x200 (Приземление рыцарей) и Xeon E5-26xx V5 (Skylake EP / EX «Purley», ожидается во втором полугодии 2017 года), причем последние два (ER и PF) относятся к Knights Landing.
- Основание AVX-512 (F) - расширяет большинство 32-битных и 64-битных AVX инструкции с EVEX схема кодирования для поддержки 512-битных регистров, масок операций, широковещательной передачи параметров, а также встроенного округления и контроля исключений, реализованная Knights Landing и Skylake Xeon
- Инструкции по обнаружению конфликтов AVX-512 (компакт-диск) - эффективное обнаружение конфликтов, чтобы можно было больше петель векторизованный, реализованный Knights Landing[1] и Skylake X
- AVX-512 Экспоненциальный и Взаимный Инструкции (ER) - экспоненциальные и взаимные операции, предназначенные для помощи в реализации трансцендентный операции, проводимые Knights Landing[1]
- Инструкции предварительной выборки AVX-512 (PF) - новые возможности предварительной выборки, реализованные Knights Landing[1]
- VL, DQ, BW
- Представлен в Skylake X и Cannon Lake.
- AVX-512 Векторные расширения длины (VL) - расширяет большинство операций AVX-512 для работы с регистрами XMM (128-бит) и YMM (256-бит)[3]
- AVX-512 Двойные и четырехсловные инструкции (DQ) - добавляет новые 32-битные и 64-битные инструкции AVX-512[3]
- AVX-512 Байтовые и словесные инструкции (BW) - расширяет AVX-512, чтобы покрыть 8-битные и 16-битные целочисленные операции[3]
- IFMA, VBMI
- Представлено с Cannon Lake.[4]
- AVX-512 Целое число Fused Multiply Add (IFMA) - плавное сложение целых чисел с использованием 52-битной точности.
- Инструкции по обработке векторных байтов AVX-512 (VBMI) добавляет команды перестановки векторных байтов, которых не было в AVX-512BW.
- 4VNNIW, 4FMAPS
- Представлено с Knights Mill.[5][6]
- AVX-512 Векторные инструкции нейронной сети Word переменной точности (4VNNIW) - векторные инструкции для глубокого обучения, улучшенного слова, переменной точности.
- AVX-512 Fused Multiply Accumulation Packed Single precision (4FMAPS) - векторные инструкции для глубокого обучения, с плавающей запятой, одинарной точности.
- VPOPCNTDQ
- Вектор подсчет населения инструкция. Представлен с Knights Mill и Ледяное озеро.[7]
- ВННИ, ВБМИ2, БИТАЛГ
- Представлено Ice Lake.[7]
- AVX-512 векторные инструкции нейронной сети (VNNI) - векторные инструкции для глубокого обучения.
- Инструкции по обработке векторных байтов AVX-512 2 (VBMI2) - загрузка, сохранение и объединение байтов / слов со сдвигом.
- Битовые алгоритмы AVX-512 (BITALG) - байт / слово битовая манипуляция инструкции по расширению VPOPCNTDQ.
- VP2INTERSECT
- Введен с Tiger Lake.
- Пересечение векторной пары AVX-512 с парой регистров маски (VP2INTERSECT).
- GFNI, VPCLMULQDQ, VAES
- Представлено Ice Lake.[7]
- Это не функции AVX-512 как таковые. Вместе с AVX-512 они позволяют использовать кодированные EVEX версии GFNI, PCLMULQDQ, и инструкции AES.
Кодировка и особенности
В Префикс 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]
Имя | Комплекты расширения | Регистры | Типы |
---|---|---|---|
Устаревший SSE | SSE-SSE4.2 | xmm0-xmm15 | одиночные поплавки. Из SSE2: байты, слова, двойные слова, четверные слова и двойные числа с плавающей запятой. |
AVX-128 (VEX) | AVX, AVX2 | xmm0-xmm15 | байты, слова, двойные слова, четверные слова, одиночные числа с плавающей запятой и двойные числа с плавающей запятой. |
AVX-256 (VEX) | AVX, AVX2 | ymm0-ymm15 | одинарный поплавок и двойной поплавок. Из AVX2: байты, слова, двойные слова, четверные слова |
AVX-128 (EVEX) | AVX-512VL | xmm0-xmm31 (k1-k7) | двойные слова, четверные слова, одинарные и двойные числа с плавающей запятой. С AVX512BW: байты и слова |
AVX-256 (EVEX) | AVX-512VL | ymm0-ymm31 (k1-k7) | двойные слова, четверные слова, одинарное число с плавающей запятой и двойное число с плавающей запятой. С AVX512BW: байты и слова |
AVX-512 (EVEX) | AVX-512F | zmm0-zmm31 (k1-k7) | двойные слова, четверные слова, одинарное число с плавающей запятой и двойное число с плавающей запятой. С AVX512BW: байты и слова |
Расширенные регистры
511 256 | 255 128 | 127 0 |
ZMM0 | YMM0 | XMM0 |
ZMM1 | YMM1 | XMM1 |
ZMM2 | YMM2 | XMM2 |
ZMM3 | YMM3 | XMM3 |
ZMM4 | YMM4 | XMM4 |
ZMM5 | YMM5 | XMM5 |
ZMM6 | YMM6 | XMM6 |
ZMM7 | YMM7 | XMM7 |
ZMM8 | YMM8 | XMM8 |
ZMM9 | YMM9 | XMM9 |
ZMM10 | YMM10 | XMM10 |
ЗММ11 | YMM11 | XMM11 |
ЗММ12 | YMM12 | XMM12 |
ZMM13 | YMM13 | XMM13 |
ЗММ14 | YMM14 | XMM14 |
ZMM15 | YMM15 | XMM15 |
ЗММ16 | YMM16 | XMM16 |
ЗММ17 | YMM17 | XMM17 |
ЗММ18 | YMM18 | XMM18 |
ЗММ19 | YMM19 | XMM19 |
ZMM20 | YMM20 | XMM20 |
ZMM21 | YMM21 | XMM21 |
ZMM22 | YMM22 | XMM22 |
ZMM23 | YMM23 | XMM23 |
ZMM24 | YMM24 | XMM24 |
ZMM25 | YMM25 | XMM25 |
ZMM26 | YMM26 | XMM26 |
ZMM27 | YMM27 | XMM27 |
ZMM28 | YMM28 | XMM28 |
ZMM29 | YMM29 | XMM29 |
ZMM30 | YMM30 | XMM30 |
ZMM31 | YMM31 | XMM31 |
Ширина 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, которое может быть либо «нулевым», при котором обнуляется все, что не выбрано маской, либо «merge», при котором все, что не выбрано, остается нетронутым. Поведение слияния идентично инструкциям по смешиванию.
Регистры 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-битные (двойные) и 64-битные (четырехкратные) версии, чтобы они могли маска до 64 8-битных значений. Инструкции KORTEST и KTEST могут использоваться для установки флагов x86 на основе регистров маски, чтобы их можно было использовать вместе с ветвлениями x86, отличными от SIMD, и условными инструкциями.
Инструкция | Набор удлинителей | Описание |
---|---|---|
KAND | F | Побитовое логическое И Маски |
KANDN | F | Побитовые логические И НЕ маски |
КМОВ | F | Переход от и к регистрам маски или регистрам общего назначения |
KUNPCK | F | Распаковать для регистров маски |
МОРСКОЙ УЗЕЛ | F | НЕ Маскирующий регистр |
KOR | F | Побитовые логические маски ИЛИ |
КОРТЕСТ | F | ИЛИ маски и установить флаги |
КШИФТЛ | F | Сдвиг влево регистры маски |
КШИФТР | F | Сдвиг вправо регистры маски |
KXNOR | F | Побитовые логические маски XNOR |
KXOR | F | Побитовые логические маски XOR |
KADD | BW / DQ | Добавить две маски |
КТЕСТ | BW / DQ | Побитовое сравнение и установка флагов |
Новые инструкции в фундаменте AVX-512
Многие инструкции AVX-512 - это просто EVEX-версии старых инструкций SSE или AVX. Однако есть несколько новых инструкций и старые инструкции, которые были заменены новыми версиями AVX-512. Новые или существенно переработанные инструкции перечислены ниже. Эти Фонд инструкции также включают расширения из AVX-512VL и AVX-512BW, поскольку эти расширения просто добавляют новые версии этих инструкций вместо новых инструкций.
Растушевка с помощью маски
Версий инструкций по смешиванию с префиксом EVEX из SSE4; вместо этого AVX-512 имеет новый набор инструкций смешивания, использующих регистры маски в качестве селекторов. Вместе с общими инструкциями сравнения с маской, приведенными ниже, они могут использоваться для реализации общих тернарных операций или cmov, подобных XOP VPCMOV.
Поскольку смешивание является неотъемлемой частью кодирования EVEX, эти инструкции также можно рассматривать как базовые инструкции перемещения. Используя режим наложения обнуления, их также можно использовать в качестве инструкций по маскированию.
Инструкция | Набор удлинителей | Описание |
---|---|---|
VBLENDMPD | F | Смешивание векторов float64 с помощью opmask control |
VBLENDMPS | F | Смешивание векторов float32 с помощью opmask control |
VPBLENDMD | F | Смешайте векторы int32 с помощью элемента управления opmask |
VPBLENDMQ | F | Смешайте векторы int64 с помощью элемента управления opmask |
VPBLENDMB | BW | Смешивание байтовых целочисленных векторов с помощью элемента управления opmask |
VPBLENDMW | BW | Смешивание целочисленных векторов слов с помощью элемента управления opmask |
Сравнить с маской
AVX-512F имеет четыре новых инструкции сравнения. Как их XOP аналоги они используют непосредственное поле для выбора между 8 различными сравнениями. Однако, в отличие от своих идей XOP, они сохраняют результат в регистре маски и изначально поддерживают только сравнения двойных и четверных слов. Расширение AVX-512BW предоставляет версии в байтах и словах. Обратите внимание, что для инструкций могут быть указаны два регистра маски: один для записи, а другой для объявления регулярного маскирования.[6]
Немедленный | Сравнение | Описание |
---|---|---|
0 | Эквалайзер | Равный |
1 | LT | Меньше, чем |
2 | LE | Меньше или равно |
3 | ЛОЖНЫЙ | Установить на ноль |
4 | NEQ | Не равный |
5 | NLT | Больше или равно |
6 | NLE | Лучше чем |
7 | ИСТИННЫЙ | Установить на один |
Инструкция | Набор удлинителей | Описание |
---|---|---|
VPCMPD
| F | Сравнить подписанные / беззнаковые двойные слова в маске |
VPCMPQ
| F | Сравнить четверные слова со знаком / без знака в маску |
VPCMPB
| BW | Сравнить байты со знаком / без знака в маске |
VPCMPW
| BW | Сравнить подписанные / неподписанные слова в маске |
Маска логического набора
Последний способ установки масок - использование маски логического набора. Эти инструкции выполняют операции И или И НЕ, а затем устанавливают целевую операционную маску на основе нулевых или ненулевых значений результата. Обратите внимание, что, как и инструкции сравнения, они принимают два регистра opmask, один как адресат, а другой - обычную opmask.
Инструкция | Набор удлинителей | Описание |
---|---|---|
VPTESTMD , VPTESTMQ | F | Логическое И и установка маски для 32- или 64-битных целых чисел. |
VPTESTNMD , VPTESTNMQ | F | Логическая NAND и маска для 32- или 64-битных целых чисел. |
ВПТЕСТМБ , VPTESTMW | BW | Логическое И и установка маски для 8- или 16-битных целых чисел. |
ВПТЕСТНМБ , VPTESTNMW | BW | Логическая И-НЕ и маска для 8- или 16-битных целых чисел. |
Сжимать и расширять
Инструкции по сжатию и расширению соответствуют APL одноименные операции. Они используют операционную маску немного иначе, чем другие инструкции AVX-512. Сжатие сохраняет только значения, отмеченные в маске, но сохраняет их сжатыми, пропуская и не резервируя место для немаркированных значений. Expand работает противоположным образом, загружая столько значений, сколько указано в маске, и затем распределяя их по выбранным позициям.
Инструкция | Описание |
---|---|
VCOMPRESSPD ,
| Хранение разреженно упакованных значений с плавающей запятой двойной / одинарной точности в плотной памяти |
VPCOMPRESSD ,
| Сохранение разреженно упакованных целочисленных значений двойного / четверного слова в плотной памяти / регистре |
VEXPANDPD ,
| Загрузка разреженно упакованных значений с плавающей запятой двойной / одинарной точности из плотной памяти |
VPEXPANDD ,
| Загрузка разреженно упакованных целочисленных значений двойного слова / четверного слова из плотной памяти / регистра |
Переставить
Новый набор инструкции по перестановке были добавлены для полных двух входных перестановок. Все они принимают три аргумента, два исходных регистра и один индекс; результат выводится путем перезаписи либо первого исходного регистра, либо индексного регистра. AVX-512BW расширяет инструкции, включая также 16-битные (слово) версии, а расширение AVX-512_VBMI определяет байтовые версии инструкций.
Инструкция | Набор удлинителей | Описание |
---|---|---|
ВПЕРМБ | VBMI | Переставить упакованные байтовые элементы. |
VPERMW | BW | Перестановка элементов упакованных слов. |
VPERMT2B | VBMI | Перестановка полного байта перезаписывает первый источник. |
VPERMT2W | BW | Полная перестановка слов перезаписывает первый источник. |
VPERMI2PD , VPERMI2PS | F | Полная перестановка с одинарной / двойной плавающей запятой, перезаписывающая индекс. |
VPERMI2D , VPERMI2Q | F | Полная перестановка двойного слова / четверного слова, перезаписывающая индекс. |
VPERMI2B | VBMI | Перестановка полного байта перезаписывает индекс. |
VPERMI2W | BW | Полная перестановка слов при перезаписи индекса. |
VPERMT2PS , VPERMT2PD | F | Полная перестановка с одинарной / двойной плавающей запятой, перезапись первого источника. |
VPERMT2D , VPERMT2Q | F | Полная перестановка двойного слова / четверного слова, перезаписывающая первый источник. |
VSHUFF32x4 , VSHUFF64x2 ,
| F | Перемешать четыре упакованных 128-битных строки. |
VPMULTISHIFTQB | VBMI | Выберите упакованные невыровненные байты из источников четверного слова. |
Побитовая тернарная логика
Добавленные две новые инструкции могут логически реализовать все возможные побитовые операции между тремя входами. В качестве входных данных они принимают три регистра и 8-битное непосредственное поле. Каждый бит на выходе генерируется с помощью поиска трех соответствующих битов на входах для выбора одной из 8 позиций в 8-битном немедленном. Поскольку с использованием трех битов возможны только 8 комбинаций, это позволяет выполнять все возможные 3 входные побитовые операции.[6]Это единственные побитовые векторные инструкции в AVX-512F; Версии EVEX двух исходных команд побитовых векторов SSE и AVX AND, ANDN, OR и XOR были добавлены в AVX-512DQ.
Разница между версиями двойного слова и четверного слова заключается только в применении opmask.
Инструкция | Описание |
---|---|
VPTERNLOGD , VPTERNLOGQ | Побитовая тернарная логика |
A0 | A1 | A2 | Двойное И (0x80) | Двойное ИЛИ (0xFE) | Побитовое смешение (0xCA) |
---|---|---|---|---|---|
0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 1 |
0 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 0 | 1 | 1 |
1 | 0 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 | 0 |
1 | 1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 1 | 1 | 1 |
Конверсии
Был добавлен ряд инструкций по преобразованию или перемещению; они завершают набор инструкций по преобразованию, доступных в SSE2.
Инструкция | Набор удлинителей | Описание |
---|---|---|
| F | Преобразование четверного слова или двойного слова в двойное слово, слово или байт; ненасыщенный, насыщенный или насыщенный без знака. Обратный знак / ноль продлить инструкции из SSE4.1. |
VPMOVWB , VPMOVSWB , VPMOVUSWB | BW | Преобразование слова в байт; ненасыщенный, насыщенный или насыщенный без знака. |
VCVTPS2UDQ , VCVTPD2UDQ ,
| F | Преобразование с усечением или без него упакованных чисел с плавающей запятой одинарной или двойной точности в упакованные целые числа без знака с двойным словом. |
VCVTSS2USI , VCVTSD2USI ,
| F | Преобразование с усечением или без него, скалярное число с плавающей запятой одинарной или двойной точности в беззнаковое целое двойное слово. |
VCVTPS2QQ , VCVTPD2QQ ,
| DQ | Преобразование с усечением или без него упакованных чисел с плавающей запятой одинарной или двойной точности в упакованные целые числа со знаком или без знака. |
VCVTUDQ2PS , VCVTUDQ2PD | F | Преобразование упакованных целых чисел двойного слова без знака в упакованные числа с плавающей запятой одинарной или двойной точности. |
VCVTUSI2PS , VCVTUSI2PD | F | Преобразование скалярных беззнаковых целых двойных слов в числа с плавающей запятой одинарной или двойной точности. |
VCVTUSI2SD , VCVTUSI2SS | F | Преобразуйте скалярные целые числа без знака в числа с плавающей запятой одинарной или двойной точности. |
VCVTUQQ2PS , VCVTUQQ2PD | DQ | Преобразуйте упакованные целые числа четверного слова без знака в упакованные числа с плавающей запятой одинарной или двойной точности. |
VCVTQQ2PD , VCVTQQ2PS | F | Преобразуйте упакованные целые числа четверного слова в упакованные числа с плавающей запятой одиночной или двойной точности. |
Разложение с плавающей запятой
Среди уникальных новых функций AVX-512F - инструкции по разложению значений с плавающей запятой и обработке специальные значения с плавающей запятой. Поскольку эти методы совершенно новые, они также существуют в скалярных версиях.
Инструкция | Описание |
---|---|
VGETEXPPD , VGETEXPPS | Преобразование показателей упакованных значений fp в значения fp |
VGETEXPSD , VGETEXPSS | Конвертировать показатель степени скалярного значения fp в значение fp |
ВГЕТМАНТПД , ВГЕТМАНТПС | Извлечь вектор нормализованных мантисс из вектора float32 / float64 |
ВГЕТМАНЦД , ВГЕТМАНЦЫ | Извлечь float32 / float64 из нормализованных мантисса из скаляра float32 / float64 |
VFIXUPIMMPD , VFIXUPIMMPS | Исправить специальные упакованные значения float32 / float64 |
VFIXUPIMMSD , VFIXUPIMMS | Исправить специальное скалярное значение float32 / float64 |
Арифметика с плавающей запятой
Это второй набор новых методов с плавающей запятой, который включает новое масштабирование и приближенное вычисление обратной и обратной величины квадратного корня. Приблизительные взаимные инструкции гарантируют относительную погрешность не более 2−14.[6]
Инструкция | Описание |
---|---|
VRCP14PD , VRCP14PS | Вычислить приблизительные обратные значения упакованных значений float32 / float64 |
VRCP14SD , VRCP14SS | Вычислить приблизительные обратные значения скалярного значения float32 / float64 |
VRNDSCALEPS , VRNDSCALEPD | Округление упакованных значений float32 / float64 для включения заданного количества дробных битов |
VRNDSCALESS , VRNDSCALESD | Круглое скалярное значение float32 / float64 для включения заданного количества дробных битов |
VRSQRT14PD , VRSQRT14PS | Вычислить приблизительные значения, обратные квадратным корням упакованных значений float32 / float64 |
VRSQRT14SD , VRSQRT14SS | Вычислить приблизительную величину, обратную квадратному корню из скалярного значения float32 / float64 |
VSCALEFPS , VSCALEFPD | Масштабирование упакованных значений float32 / float64 со значениями float32 / float64 |
VSCALEFSS , VSCALEFSD | Масштабировать скалярное значение float32 / float64 со значением float32 / float64 |
Транслировать
Инструкция | Набор удлинителей | Описание |
---|---|---|
VBROADCASTS , VBROADCASTSD | F, VL | Трансляция одинарного / двойного значения с плавающей запятой |
VPBROADCASTB , VPBROADCASTW , VPBROADCASTD , VPBROADCASTQ | F, VL, DQ, BW | Трансляция целочисленного значения байта / слова / двойного слова / четверного слова |
VBROADCASTI32X2 ,VBROADCASTI64X2 , VBROADCASTI32X4 ,VBROADCASTI32X8 , VBROADCASTI64X4 | F, VL, DQ, BW | Передача двух или четырех целочисленных значений двойного / четверного слова |
Разное
Инструкция | Набор удлинителей | Описание |
---|---|---|
ВАЛИГНД , VALIGNQ | F, VL | Выравнивание векторов двойных или четверных слов |
VDBPSADBW | BW | Двойная блочная упакованная сумма абсолютных разностей (SAD) в байтах без знака |
VPABSQ | F | Упакованное четверное слово абсолютного значения |
VPMAXSQ , VPMAXUQ | F | Максимум упакованного четверного слова со знаком / без знака |
VPMINSQ , VPMINUQ | F | Минимум упакованного четверного слова со знаком / без знака |
VPROLD , ВПРОЛВД ,VPROLQ , VPROLVQ ,ВПРОРД , ВПРОРВД ,VPRORQ , VPRORVQ | F | Бит повернуть влево или вправо |
VPSCATTERDD , VPSCATTERDQ ,VPSCATTERQD , VPSCATTERQQ | F | Скаттер-упакованное двойное слово / четверное слово с индексами двойного слова и четверного слова со знаком |
VSCATTERDPS , VSCATTERDPD ,VSCATTERQPS , VSCATTERQPD | F | Скаттер упакованный float32 / float64 с индексами двойного слова и четверного слова со знаком |
Новые инструкции по комплектам
Обнаружение конфликтов
Инструкции в обнаружении конфликтов AVX-512 (AVX-512CD) разработаны, чтобы помочь эффективно вычислять бесконфликтные подмножества элементов в циклах, которые обычно невозможно безопасно векторизовать.[8]
Инструкция | Имя | Описание |
---|---|---|
VPCONFLICTD , VPCONFLICTQ | Обнаружение конфликтов в векторе упакованных значений двойных или четверных слов. | Сравнивает каждый элемент в первом источнике со всеми элементами на том же или более раннем месте во втором источнике и формирует битовый вектор результатов. |
VPLZCNTD , VPLZCNTQ | Подсчитайте количество начальных нулевых битов для упакованных значений двойного или четверного слова. | Векторизованный LZCNT инструкция. |
VPBROADCASTMB2Q ,VPBROADCASTMW2D | Передать маску в векторный регистр. | Либо 8-битная маска для вектора четверного слова, либо 16-битная маска для вектора двойного слова. |
Экспоненциальный и обратный
Экспоненциальные и обратные инструкции AVX-512 содержат более точные приблизительные обратные инструкции, чем в основе AVX-512; относительная погрешность не более 2−28. Они также содержат две новые экспоненциальные функции с относительной погрешностью не более 2−23.[6]
Инструкция | Описание |
---|---|
VEXP2PD , VEXP2PS | Вычислить примерную экспоненту 2 ^ x упакованных значений с плавающей запятой одинарной или двойной точности |
VRCP28PD , VRCP28PS | Вычисление приблизительных обратных величин упакованных значений с плавающей запятой одинарной или двойной точности |
VRCP28SD , VRCP28SS | Вычислить приблизительное значение, обратное скалярному значению с плавающей запятой одиночной или двойной точности |
VRSQRT28PD , VRSQRT28PS | Вычисление приблизительных обратных величин квадратных корней упакованных значений с плавающей запятой одинарной или двойной точности |
VRSQRT28SD , VRSQRT28SS | Вычислить приблизительную величину, обратную квадратному корню из скалярного значения с плавающей запятой одиночной или двойной точности |
Предварительная выборка
Инструкции предварительной выборки AVX-512 содержат новые операции предварительной выборки для новых функций разброса и сбора, представленных в AVX2 и AVX-512. T0
предварительная выборка означает предварительную выборку в кеш уровня 1 и Т1
означает предварительную выборку в кэш 2-го уровня.
Инструкция | Описание |
---|---|
VGATHERPF0DPS , VGATHERPF0QPS , VGATHERPF0DPD , VGATHERPF0QPD | Используя подписанные индексы dword / qword, выполните предварительную выборку разреженных участков памяти байтов, содержащих данные с одинарной / двойной точностью, используя opmask k1 и подсказку T0. |
VGATHERPF1DPS , VGATHERPF1QPS , VGATHERPF1DPD , VGATHERPF1QPD | Используя подписанные индексы dword / qword, предварительно выберите ячейки памяти с разреженными байтами, содержащие данные с одинарной / двойной точностью, используя opmask k1 и подсказку T1. |
VSCATTERPF0DPS , VSCATTERPF0QPS , VSCATTERPF0DPD , VSCATTERPF0QPD | Используя подписанные индексы dword / qword, выполните предварительную выборку разреженных ячеек памяти байтов, содержащих данные одинарной / двойной точности, используя маску записи k1 и подсказку T0 с намерением записи. |
VSCATTERPF1DPS , VSCATTERPF1QPS , VSCATTERPF1DPD , VSCATTERPF1QPD | Используя подписанные индексы dword / qword, выполните предварительную выборку разреженных байтовых ячеек памяти, содержащих данные одинарной / двойной точности, используя маску записи k1 и подсказку T1 с намерением записи. |
4FMAPS и 4VNNIW
Инструкция | Набор удлинителей | Описание |
---|---|---|
V4FMADDPS , V4FMADDSS | 4 кадра | Упакованное / скалярное объединенное умножение с плавающей запятой одинарной точности и сложение (4 итерации) |
V4FNMADDPS , V4FNMADDSS | 4 кадра | Упакованное / скалярное умножение с плавающей запятой одинарной точности, объединенное умножение-сложение и отрицание (4 итерации) |
VP4DPWSSD | 4VNNIW | Точечный продукт слов со знаком с накоплением двойных слов (4 итерации) |
VP4DPWSSDS | 4VNNIW | Точечный продукт слов со знаком с накоплением двойных слов и насыщением (4 итерации) |
BW, DQ и VBMI
AVX-512DQ добавляет новые инструкции двойного и четверного слова. AVX-512BW добавляет байтовые и словарные версии тех же инструкций и добавляет байтовые и словные версии инструкций двойного / четверного слова в AVX-512F. Несколько инструкций, которые получают только словоформы с AVX-512BW, получают байтовые формы с расширением AVX-512_VBMI (ВПЕРМБ
, VPERMI2B
, VPERMT2B
, VPMULTISHIFTQB
).
К набору инструкций по маске были добавлены две новые инструкции: KADD
и КТЕСТ
(Формы 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
инструкции работают с одним источником и вычитают из него целую часть исходного значения плюс количество битов, указанных в непосредственном поле его дроби.
Инструкция | Набор удлинителей | Описание |
---|---|---|
VFPCLASSPS , VFPCLASSPD | DQ | Типы тестирования упакованных значений с плавающей запятой одинарной и двойной точности. |
VFPCLASSSS , VFPCLASSSD | DQ | Типы тестов скалярных значений с плавающей запятой одинарной и двойной точности. |
VRANGEPS , VRANGEPD | DQ | Расчет ограничения диапазона для упакованных значений с плавающей запятой. |
ВОЗМОЖНОСТЬ , VRANGESD | DQ | Расчет ограничения диапазона для скалярных значений с плавающей запятой. |
VREDUCEPS , VREDUCEPD | DQ | Выполните преобразование сокращения для упакованных значений с плавающей запятой. |
VREDUCESS , VREDUCESD | DQ | Выполните преобразование сокращения для скалярных значений с плавающей запятой. |
Прочие инструкции
Инструкция | Набор удлинителей | Описание |
---|---|---|
VPMOVM2D , VPMOVM2Q | DQ | Преобразуйте регистр маски в векторный регистр двойного или четвертого слова. |
VPMOVM2B , VPMOVM2W | BW | Преобразуйте регистр маски в регистр вектора байта или слова. |
ВПМОВД2М , VPMOVQ2M | DQ | Преобразуйте регистр вектора двойного или четвертого слова в регистр маски. |
ВПМОВБ2М , VPMOVW2M | BW | Преобразуйте регистр вектора байта или слова в регистр маски. |
VPMULLQ | DQ | Множественно упакованное четверное слово сохраняет низкий результат. Версия VPMULLD, состоящая из четырех слов. |
VBMI2
Расширьте возможности VPCOMPRESS и VPEXPAND с помощью вариантов байтов и слов. Инструкции по смене новые.
Инструкция | Описание |
---|---|
VPCOMPRESSB , VPCOMPRESSW | Сохранение разреженных упакованных целочисленных значений байтов / слов в плотную память / регистр |
VPEXPANDB , VPEXPANDW | Загрузка разреженных упакованных целочисленных значений байтов / слов из плотной памяти / регистра |
VPSHLD | Объединить и сдвинуть упакованные данные влево |
ВПШЛДВ | Объединение и переменный сдвиг упакованных данных влево |
ВПШРД | Объединение и сдвиг упакованных данных вправо логически |
ВПШРДВ | Объединение и переменный сдвиг упакованных данных вправо логический |
ВННИ
Инструкции векторной нейронной сети.
Инструкция | Описание |
---|---|
VPDPBUSD | Умножение и сложение байтов без знака и со знаком |
VPDPBUSDS | Умножайте и складывайте беззнаковые и подписанные байты с насыщением |
VPDPWSSD | Умножайте и складывайте целые числа со знаком слова |
VPDPWSSDS | Умножайте и складывайте целые числа с насыщенностью |
IFMA
Инструкция | Набор удлинителей | Описание |
---|---|---|
VPMADD52LUQ | IFMA | Упакованное умножение 52-битных целых чисел без знака и добавление младших 52-битных произведений к сумматорам qword |
VPMADD52HUQ | IFMA | Упакованное умножение беззнаковых 52-битных целых чисел и добавление старших 52-битных произведений к 64-битным аккумуляторам |
VPOPCNTDQ и BITALG
Инструкция | Набор удлинителей | Описание |
---|---|---|
VPOPCNTD , VPOPCNTQ | VPOPCNTDQ | Возвращает количество бит, установленное на 1 в двойном слове / четверном слове |
VPOPCNTB , VPOPCNTW | BITALG | Возвращает количество бит, установленное на 1 в байтах / словах |
VPSHUFBITQMB | BITALG | Перемешать биты из элементов четверного слова, используя байтовые индексы, в маску |
VP2INTERSECT
Инструкция | Набор удлинителей | Описание |
---|---|---|
VP2INTERSECTD , VP2INTERSECTQ | VP2INTERSECT | Вычислить пересечение двойных слов / четверных слов для пара регистров маски |
GFNI
В кодировке EVEX Поле Галуа новые инструкции:
Инструкция | Описание |
---|---|
VGF2P8AFFINEINVQB | Обратное аффинное преобразование поля Галуа |
VGF2P8AFFINEQB | Аффинное преобразование поля Галуа |
ВГФ2П8МУЛЬБ | Поле Галуа умножение байтов |
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-битного поля).
Инструкция | Описание |
---|---|
VPCLMULQDQ | Четверное слово умножения без переноса |
VAES
В кодировке VEX и EVEX AES инструкции. Более широкие, чем 128-битные варианты инструкции, выполняют одну и ту же операцию с каждой 128-битной частью входных регистров. Версии VEX можно использовать без поддержки AVX-512.
Инструкция | Описание |
---|---|
VAESDEC | Выполните один раунд потока дешифрования AES |
VAESDECLAST | Выполнить последний раунд потока дешифрования AES |
VAESENC | Выполните один раунд потока шифрования AES |
VAESENCLAST | Выполнить последний раунд потока шифрования AES |
BF16
Инструкции по ускорению AI, работающие на Bfloat16 формат.
Инструкция | Описание |
---|---|
VCVTNE2PS2BF16 | Преобразование двух упакованных чисел одинарной точности в одно упакованное число Bfloat16 |
VCVTNEPS2BF16 | Преобразование одного упакованного числа одинарной точности в одно упакованное число Bfloat16 |
VDPBF16PS | Вычислить скалярное произведение двух пар Bfloat16 и собрать результат в одно упакованное число одинарной точности |
Устаревшие инструкции обновлены версиями с кодировкой EVEX
Устаревшая кодировка | Группа | инструкции | AVX-512 расширения | ||
---|---|---|---|---|---|
SSE SSE2 MMX | AVX SSE3 SSE4.1 | AVX2 FMA | |||
да | да | Нет | VADD | VADDPD , VADDPS , VADDSD , VADDSS | F, VL |
VAND | ВАНДПД , ВАНДПЫ , VANDNPD , ВАНДНПЫ | VL, DQ | |||
VCMP | VCMPPD , VCMPPS , VCMPSD , VCMPSS | F | |||
VCOM | ВКОМИСД , ВКОМИСС | F | |||
VDIV | VDIVPD , VDIVPS , ВДИВСД , VDIVSS | F, VL | |||
VCVT | VCVTDQ2PD , VCVTDQ2PS , VCVTPD2DQ , VCVTPD2PS ,
| F, VL | |||
VMAX | VMAXPD , VMAXPS , VMAXSD , VMAXSS | F, VL | |||
ВМИН | ВМИНПД , VMINPS , ВМИНСД , ВМИНСС | F | |||
ВМОВ | VMOVAPD , VMOVAPS , ВМОВД , VMOVQ ,
| F, VL, BW | |||
ВМУЛ | ВМУЛПД , VMULPS , ВМУЛСД , VMULSS | F, VL | |||
VOR | ВОРПД , ВОРПС | VL, DQ | |||
VSQRTP | VSQRTPD , VSQRTPS , VSQRTSD , VSQRTSS | F, VL | |||
VSUB | VSUBPD , VSUBPS , VSUBSD , VSUBSS | F, VL | |||
VUCOMI | ВУКОМИСД , ВУКОМИСС | F | |||
VUNPCK | ВУНПЦХПД , ВУНПЧХПС , VUNPCKLPD , VUNPCKLPS | F, VL | |||
VXOR | VXORPD , VXORPS | VL, DQ | |||
Нет | да | Нет | VEXTRACTPS | VEXTRACTPS | F |
ВИНСЕРТПС | ВИНСЕРТПС | F | |||
VPALIGNR | VPALIGNR | VL, BW | |||
VPEXTR | VPEXTRB , VPEXTRW , VPEXTRD , VPEXTRQ | BW, DQ | |||
ВПИНСР | ВПИНСРБ , VPINSRW , ВПИНСРД , VPINSRQ | BW, DQ | |||
да | да | да | VPACK | VPACKSSWB , VPACKSSDW , VPACKUSDW , VPACKUSWB | VL, BW |
VPADD | VPADDB , VPADDW , VPADDD , VPADDQ ,
| F, VL, BW | |||
VPAND | VPANDD , VPANDQ , VPANDND , VPANDNQ | F, VL | |||
VPAVG | VPAVGB , VPAVGW | VL, BW | |||
VPCMPEQ | VPCMPEQB , VPCMPEQW , VPCMPEQD , VPCMPEQQ | F, VL, BW | |||
VPCMPGT | VPCMPGTB , VPCMPGTW , VPCMPGTD , VPCMPGTQ | F, VL, BW | |||
VPMAX | VPMAXSB , VPMAXSW , VPMAXSD , VPMAXSQ , VPMAXUB , VPMAXUW , VPMAXUD , VPMAXUQ | F, VL, BW | |||
VPMIN | ВПМИНСБ , VPMINSW , VPMINSD , VPMINSQ , VPMINUB , VPMINUW , ВПМИНУД , VPMINUQ | F, VL, BW | |||
ВПМОВ | VPMOVSXBW , VPMOVSXBD , VPMOVSXBQ , VPMOVSXWD , VPMOVSXWQ , VPMOVSXDQ ,
| F, VL, BW | |||
ВПМУЛ | VPMULDQ , VPMULUDQ , VPMULHRSW , VPMULHUW , VPMULHW , VPMULLD , VPMULLQ , VPMULLW | F, VL, BW | |||
ВПОР | ВПОРД , VPORQ | F, VL | |||
VPSUB | VPSUBB , VPSUBW , VPSUBD , VPSUBQ , VPSUBSB , VPSUBSW , VPSUBUSB , VPSUBUSW | F, VL, BW | |||
ВПУНПКК | VPUNPCKHBW , VPUNPCKHWD , VPUNPCKHDQ , VPUNPCKHQDQ ,
| F, VL, BW | |||
VPXOR | VPXORD , VPXORQ | F, VL | |||
VPSADBW | VPSADBW | VL, BW | |||
ВПШУФ | ВПШУФБ , VPSHUFHW , VPSHUFLW , ВПШУФД ,
| F, VL, BW | |||
Нет | да | да | VEXTRACT | VEXTRACTF32X4 , VEXTRACTF64X2 , VEXTRACTF32X8 , VEXTRACTF64X4 ,
| F, VL, DQ |
ВИНСЕРТ | VINSERTF32x4 , VINSERTF64X2 , VINSERTF32X8 , VINSERTF64x4 ,
| F, VL, DQ | |||
VPABS | ВПАБСБ , VPABSW , VPABSD , VPABSQ | F, VL, BW | |||
ВПЕРМ | VPERMD , ВПЕРМИЛПД , ВПЕРМИЛПС , ВПЕРМПД , VPERMPS , VPERMQ | F, VL | |||
VPMADD | VPMADDUBSW VPMADDWD | VL, BW | |||
Нет | Нет | да | VFMADD | VFMADD132PD , VFMADD213PD , VFMADD231PD ,
| F, VL |
VFMADDSUB | VFMADDSUB132PD , VFMADDSUB213PD , VFMADDSUB231PD ,
| F, VL | |||
VFMSUBADD | VFMSUBADD132PD , VFMSUBADD213PD , VFMSUBADD231PD ,
| F, VL | |||
VFMSUB | VFMSUB132PD , VFMSUB213PD , VFMSUB231PD ,
| F, VL | |||
VFNMADD | VFNMADD132PD , VFNMADD213PD , VFNMADD231PD ,
| F, VL | |||
VFNMSUB | VFNMSUB132PD , VFNMSUB213PD , VFNMSUB231PD ,
| F, VL | |||
VGATHER | VGATHERDPS , VGATHERDPD , VGATHERQPS , VGATHERQPD | F, VL | |||
VPGATHER | VPGATHERDD , VPGATHERDQ , VPGATHERQD , VPGATHERQQ | F, VL | |||
VPSRAV | VPSRAVW , ВПСРАВД , VPSRAVQ | F, VL, BW |
Процессоры с 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-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
- Cooper Lake: AVX-512 F, CD, VL, DQ, BW, VNNI, BF16
- Ледяное озеро:[7] AVX-512 F, CD, VL, DQ, BW, IFMA, VBMI, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES
- Тигровое озеро (кроме Pentium и Celeron[13]):[14] AVX512 F, CD, VL, BW, DQ, VBMI, IFMA, VBMI2, VPOPCNTDQ, BITALG, VNNI, VPCLMULQDQ, GFNI, VAES, VP2INTERSECT
- Ракетное озеро:
- Ольховое озеро:
- Метеоритное озеро:
- Centaur Technology
Подмножество AVX-512 | F | CD | ER | ПФ | 4 кадра | 4VNNIW | VPOPCNTDQ | VL | DQ | BW | IFMA | VBMI | ВННИ | BF16 | VBMI2 | BITALG | VPCLMULQDQ | GFNI | VAES | VP2INTERSECT |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Приземление рыцарей (Xeon Phi x200) процессоры (2016 г.) | да | да | Нет | |||||||||||||||||
Knights Mill (Xeon Phi x205) процессоры (2017 г.) | да | да | Нет | |||||||||||||||||
Скайлейк-СП, Skylake-X процессоры (2017) | Нет | Нет | Нет | да | Нет | |||||||||||||||
Cannon Lake процессоры (2018) | да | Нет | ||||||||||||||||||
Каскадное озеро процессоры (2019) | Нет | да | Нет | |||||||||||||||||
Cooper Lake процессоры (2020) | да | Нет | ||||||||||||||||||
Ледяное озеро процессоры (2019) | да | да | Нет | да | Нет | |||||||||||||||
Тигровое озеро процессоры (2020) | да |
QEMU поддерживает эмуляцию AVX-512 в своей TCG.
Спектакль
Советник Intel по "векторизации" (начиная с версии 2016 Update 3) поддерживает исходную производительность AVX-512 и анализ качества векторного кода для Intel Xeon Phi 2-го поколения (под кодовым названием Приземление рыцарей ) процессор. Наряду с традиционным профилем горячих точек, рекомендациями консультантов и «бесшовной» интеграцией диагностики векторизации Intel Compiler, анализ Advisor Survey также предоставляет метрики AVX-512 ISA и новые специфичные для AVX-512 «характеристики», например Scatter, Compress / Expand, использование маски.[17][18]
AVX-512 вызывает дросселирование частоты даже больше, чем его предшественники, вызывая штраф для смешанных рабочих нагрузок. Дополнительное понижение частоты запускается 512-битной шириной векторов, и использование 256-битной части AVX-512 (AVX-512VL) не запускает его. Как результат, gcc и clang по умолчанию, чтобы предпочесть использование 256-битных векторов.[19]
Смотрите также
- Набор инструкций FMA (FMA)
- Набор инструкций XOP (XOP)
- Масштабируемое векторное расширение для ARM - новый векторный набор инструкций (дополняющий VFP и НЕОН ), поддерживающий очень широкую разрядность, и единый двоичный код, который может автоматически адаптироваться к максимальной ширине, поддерживаемой оборудованием.
Рекомендации
- ^ а б c d е ж Джеймс Рейндерс (23 июля 2013 г.). "Инструкции AVX-512". Intel. Получено 20 августа 2013.
- ^ «Расширенный интеллект для краевых решений с высокой плотностью пикселей». Intel. Intel. Получено 8 февраля 2018.
- ^ а б c Джеймс Рейндерс (17 июля 2014 г.). «Дополнительные инструкции AVX-512». Intel. Получено 3 августа 2014.
- ^ Антон Шилов. «Процессоры Intel 'Skylake' для ПК не поддерживают инструкции AVX-512». Kitguru.net. Получено 2015-03-17.
- ^ https://lemire.me/blog/2016/10/14/intel-will-add-deep-learning-instructions-to-its-processors/
- ^ а б c d е ж грамм час «Справочник по программированию расширений набора команд архитектуры Intel» (PDF). Intel. Получено 2014-01-29.
- ^ а б c d е ж «Справочник по программированию расширений набора команд архитектуры Intel® и будущих функций». Intel. Получено 2017-10-16.
- ^ "AVX-512 Архитектура / Демиховский плакат" (PDF). Intel. Получено 25 февраля 2014.
- ^ «Краткое описание процессора Intel® Xeon Phi ™». Intel. Получено 12 октября 2016.
- ^ «Intel представляет платформу серии X: до 18 ядер и 36 потоков, от 242 до 2000 долларов». Ars Technica. Получено 2017-05-30.
- ^ «Intel® Advanced Vector Extensions 2015/2016: поддержка в коллекции компиляторов GNU» (PDF). Gcc.gnu.org. Получено 2016-10-20.
- ^ Патрицио, Энди. «Дорожная карта Intel Xeon для утечек на 2016 год». Itworld.org. Получено 2016-10-20.
- ^ "Процессор Intel® Celeron® 6305 (4 МБ кэш-памяти, 1,80 ГГц, с IPU) Технические характеристики продукции". ark.intel.com. Получено 2020-11-10.
- ^ «Использование коллекции компиляторов GNU (GCC): параметры x86». GNU. Получено 2019-10-14.
- ^ https://centtech.com/ai-technology/
- ^ «Дампы задержки выполнения инструкций x86, x64, задержки памяти и CPUID (instlatx64)». users.atw.hu.
- ^ «Intel® Advisor XE 2016 Обновление 3 Что нового - Программное обеспечение Intel®». Software.intel.com. Получено 2016-10-20.
- ^ «Советник Intel® - Программное обеспечение Intel®». Software.intel.com. Получено 2016-10-20.
- ^ Кордес, Питер. «Инструкции SIMD, понижающие частоту процессора». Переполнение стека.