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]
Имя | Наборы удлинителей | Регистры | Типы |
---|---|---|---|
Устаревший 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, которое может быть либо «нулевым», при котором обнуляется все, что не выбрано маской, либо «слияние», при котором все не выбранное остается нетронутым. Поведение слияния идентично инструкциям по смешиванию.
Регистры 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, и условными инструкциями.
Инструкция | Набор удлинителей | Описание |
---|---|---|
KAND | F | Побитовое логическое И Маски |
KANDN | F | Побитовое логическое И НЕ Маски |
KMOV | F | Переход от и к регистрам маски или регистрам общего назначения |
KUNPCK | F | Распаковать регистры маски |
KNOT | F | НЕ Маскирующий регистр |
KOR | F | Побитовые логические маски ИЛИ |
KORTEST | F | ИЛИ маски и установить флаги |
KSHIFTL | F | Сдвиг влево регистры маски |
KSHIFTR | F | Сдвиг вправо регистры маски |
KXNOR | F | Побитовые логические маски XNOR |
KXOR | F | Побитовые логические маски XOR |
KADD | BW / DQ | Добавить две маски |
KTEST | BW / DQ | Побитовое сравнение и установка флагов |
Новые инструкции в основах AVX-512 [ править ]
Многие инструкции AVX-512 являются просто версиями EVEX старых инструкций SSE или AVX. Однако есть несколько новых инструкций и старые инструкции, которые были заменены новыми версиями AVX-512. Новые или существенно переработанные инструкции перечислены ниже. Эти базовые инструкции также включают расширения от AVX-512VL и AVX-512BW, поскольку эти расширения просто добавляют новые версии этих инструкций вместо новых инструкций.
Смешайте с помощью маски [ править ]
Версий инструкций смешивания из SSE4 с префиксом EVEX не существует ; вместо этого AVX-512 имеет новый набор инструкций смешивания, использующих регистры маски в качестве селекторов. Вместе с общими инструкциями сравнения с маской, приведенными ниже, они могут использоваться для реализации общих тернарных операций или cmov, подобных VPCMOV XOP .
Поскольку смешивание является неотъемлемой частью кодирования EVEX, эти инструкции также можно рассматривать как базовые инструкции перемещения. Используя режим наложения обнуления, их также можно использовать в качестве инструкций по маскированию.
Инструкция | Набор удлинителей | Описание |
---|---|---|
VBLENDMPD | F | Смешивание векторов float64 с помощью opmask control |
VBLENDMPS | F | Смешивание векторов float32 с помощью opmask control |
VPBLENDMD | F | Смешивание векторов int32 с помощью opmask control |
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 | Сравнить подписанные / неподписанные слова в маске |
Маска логического набора [ править ]
Последний способ установки масок - использование маски логического набора. Эти инструкции выполняют либо AND, либо NAND, а затем устанавливают целевую операционную маску на основе значений результата, равных нулю или ненулевых. Обратите внимание, что, как и инструкции сравнения, они принимают два регистра opmask, один как адресат, а другой - обычную opmask.
Инструкция | Набор удлинителей | Описание |
---|---|---|
VPTESTMD , VPTESTMQ | F | Логическое И и установка маски для 32- или 64-битных целых чисел. |
VPTESTNMD , VPTESTNMQ | F | Логическая И-НЕ и маска для 32- или 64-битных целых чисел. |
VPTESTMB , VPTESTMW | BW | Логическое И и установка маски для 8- или 16-битных целых чисел. |
VPTESTNMB , VPTESTNMW | BW | Логическая И-НЕ и маска для 8- или 16-битных целых чисел. |
Сжать и развернуть [ править ]
Инструкции сжатия и развертывания соответствуют одноименным операциям APL . Они используют операционную маску немного иначе, чем другие инструкции AVX-512. Сжатие сохраняет только значения, отмеченные в маске, но сохраняет их сжатыми, пропуская и не резервируя место для немаркированных значений. Expand работает противоположным образом, загружая столько значений, сколько указано в маске, а затем распределяя их по выбранным позициям.
Инструкция | Описание |
---|---|
VCOMPRESSPD ,
| Хранение разреженно упакованных значений с плавающей запятой двойной / одинарной точности в плотной памяти |
VPCOMPRESSD ,
| Сохранение разреженно упакованных целочисленных значений двойного / четверного слова в плотной памяти / регистре |
VEXPANDPD ,
| Загрузка разреженно упакованных значений с плавающей запятой двойной / одинарной точности из плотной памяти |
VPEXPANDD ,
| Загрузка разреженных упакованных целочисленных значений двойного слова / четверного слова из плотной памяти / регистра |
Переставить [ править ]
Добавлен новый набор инструкций перестановки для полных перестановок двух входов. Все они принимают три аргумента, два исходных регистра и один индекс; результат выводится путем перезаписи либо первого исходного регистра, либо индексного регистра. AVX-512BW расширяет инструкции, включая также 16-битные (слово) версии, а расширение AVX-512_VBMI определяет байтовые версии инструкций.
Инструкция | Набор удлинителей | Описание |
---|---|---|
VPERMB | 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 |
VGETMANTPD , VGETMANTPS | Извлечь вектор нормализованных мантисс из вектора float32 / float64 |
VGETMANTSD , VGETMANTSS | Извлечь float32 / float64 нормализованной мантиссы из скаляра float32 / float64 |
VFIXUPIMMPD , VFIXUPIMMPS | Исправить специальные упакованные значения float32 / float64 |
VFIXUPIMMSD , VFIXUPIMMSS | Исправить специальное скалярное значение 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 |
Трансляция [ править ]
Инструкция | Набор удлинителей | Описание |
---|---|---|
VBROADCASTSS , VBROADCASTSD | F, VL | Широковещательная передача одинарного / двойного значения с плавающей запятой |
VPBROADCASTB , VPBROADCASTW , VPBROADCASTD ,VPBROADCASTQ | F, VL, DQ, BW | Передача целочисленного значения байта / слова / двойного слова / четверного слова |
VBROADCASTI32X2 , VBROADCASTI64X2 , VBROADCASTI32X4 , VBROADCASTI32X8 ,VBROADCASTI64X4 | F, VL, DQ, BW | Передача двух или четырех целочисленных значений двойного / четверного слова |
Разное [ править ]
Инструкция | Набор удлинителей | Описание |
---|---|---|
VALIGND , VALIGNQ | F, VL | Выравнивание векторов двойных или четверных слов |
VDBPSADBW | BW | Двойная блочная упакованная сумма абсолютных разностей (SAD) в беззнаковых байтах |
VPABSQ | F | Упакованное четверное слово абсолютного значения |
VPMAXSQ , VPMAXUQ | F | Максимум упакованного четверного слова со знаком / без знака |
VPMINSQ , VPMINUQ | F | Минимум упакованного четверного слова со знаком / без знака |
VPROLD , VPROLVD , VPROLQ , VPROLVQ , VPRORD , VPRORVD , 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 и T1
означает предварительную выборку в кеш уровня 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 ( 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
команды действуют на одном источнике, и вычесть из этого целой части величины исходного плюса числа бит , указанных в непосредственном поле его фракции.
Инструкция | Набор удлинителей | Описание |
---|---|---|
VFPCLASSPS , VFPCLASSPD | DQ | Типы тестирования упакованных значений с плавающей запятой одинарной и двойной точности. |
VFPCLASSSS , VFPCLASSSD | DQ | Типы тестов скалярных значений с плавающей запятой одинарной и двойной точности. |
VRANGEPS , VRANGEPD | DQ | Расчет ограничения диапазона для упакованных значений с плавающей запятой. |
VRANGESS , VRANGESD | DQ | Расчет ограничения диапазона для скалярных значений с плавающей запятой. |
VREDUCEPS , VREDUCEPD | DQ | Выполните преобразование сокращения для упакованных значений с плавающей запятой. |
VREDUCESS , VREDUCESD | DQ | Выполните преобразование сокращения для скалярных значений с плавающей запятой. |
Другие инструкции [ править ]
Инструкция | Набор удлинителей | Описание |
---|---|---|
VPMOVM2D , VPMOVM2Q | DQ | Преобразуйте регистр маски в векторный регистр двойного или четверного слова. |
VPMOVM2B , VPMOVM2W | BW | Преобразуйте регистр маски в регистр вектора байта или слова. |
VPMOVD2M , VPMOVQ2M | DQ | Преобразуйте регистр вектора двойного или четвертого слова в регистр маски. |
VPMOVB2M , VPMOVW2M | BW | Преобразуйте регистр вектора байта или слова в регистр маски. |
VPMULLQ | DQ | Множественно упакованные четверные слова сохраняют низкий результат. Четырехсловная версия VPMULLD. |
VBMI2 [ править ]
Расширьте возможности VPCOMPRESS и VPEXPAND за счет вариантов байтов и слов. Инструкции по смене новые.
Инструкция | Описание |
---|---|
VPCOMPRESSB , VPCOMPRESSW | Сохранение разреженных упакованных целочисленных значений байтов / слов в плотную память / регистр |
VPEXPANDB , VPEXPANDW | Загрузка разреженных упакованных целочисленных значений байтов / слов из плотной памяти / регистра |
VPSHLD | Объединить и сдвинуть упакованные данные влево |
VPSHLDV | Объединение и переменный сдвиг упакованных данных влево |
VPSHRD | Объединение и сдвиг упакованных данных вправо логически |
VPSHRDV | Объединение и переменный сдвиг упакованных данных вправо логический |
ВННИ [ править ]
Инструкции векторной нейронной сети.
Инструкция | Описание |
---|---|
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 | Аффинное преобразование поля Галуа |
VGF2P8MULB | Поле Галуа умножение байтов |
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 [ править ]
Команды AES в кодировке VEX и EVEX . Более широкие, чем 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 |
ВАНД | VANDPD , VANDPS , VANDNPD ,VANDNPS | VL, DQ | |||
VCMP | VCMPPD , VCMPPS , VCMPSD ,VCMPSS | F | |||
VCOM | VCOMISD , VCOMISS | F | |||
VDIV | VDIVPD , VDIVPS , VDIVSD ,VDIVSS | F, VL | |||
VCVT | VCVTDQ2PD , VCVTDQ2PS , VCVTPD2DQ , VCVTPD2PS ,
| F, VL | |||
VMAX | VMAXPD , VMAXPS , VMAXSD ,VMAXSS | F, VL | |||
ВМИН | VMINPD , VMINPS , VMINSD ,VMINSS | F | |||
ВМОВ | VMOVAPD , VMOVAPS , VMOVD , VMOVQ ,
| F, VL, BW | |||
ВМУЛ | VMULPD , VMULPS , VMULSD ,VMULSS | F, VL | |||
VOR | VORPD , VORPS | VL, DQ | |||
VSQRTP | VSQRTPD , VSQRTPS , VSQRTSD ,VSQRTSS | F, VL | |||
VSUB | VSUBPD , VSUBPS , VSUBSD ,VSUBSS | F, VL | |||
VUCOMI | VUCOMISD , VUCOMISS | F | |||
ВУНПКК | VUNPCKHPD , VUNPCKHPS , VUNPCKLPD ,VUNPCKLPS | F, VL | |||
VXOR | VXORPD , VXORPS | VL, DQ | |||
Нет | да | Нет | VEXTRACTPS | VEXTRACTPS | F |
ВИНСЕРТПС | VINSERTPS | F | |||
VPALIGNR | VPALIGNR | VL, BW | |||
VPEXTR | VPEXTRB , VPEXTRW , VPEXTRD ,VPEXTRQ | BW, DQ | |||
ВПИНСР | VPINSRB , VPINSRW , VPINSRD ,VPINSRQ | BW, DQ | |||
да | да | да | VPACK | VPACKSSWB , VPACKSSDW , VPACKUSDW ,VPACKUSWB | VL, BW |
VPADD | VPADDB , VPADDW , VPADDD , VPADDQ ,
| F, VL, BW | |||
ВПАНД | 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 | VPMINSB , VPMINSW , VPMINSD , VPMINSQ , VPMINUB , VPMINUW , VPMINUD ,VPMINUQ | F, VL, BW | |||
ВПМОВ | VPMOVSXBW , VPMOVSXBD , VPMOVSXBQ , VPMOVSXWD , VPMOVSXWQ , VPMOVSXDQ ,
| F, VL, BW | |||
ВПМУЛ | VPMULDQ , VPMULUDQ , VPMULHRSW , VPMULHUW , VPMULHW , VPMULLD , VPMULLQ ,VPMULLW | F, VL, BW | |||
ВПОР | VPORD , 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 | |||
ВПШУФ | VPSHUFB , VPSHUFHW , VPSHUFLW , VPSHUFD ,
| F, VL, BW | |||
Нет | да | да | VEXTRACT | VEXTRACTF32X4 , VEXTRACTF64X2 , VEXTRACTF32X8 , VEXTRACTF64X4 ,
| F, VL, DQ |
ВИНСЕРТ | VINSERTF32x4 , VINSERTF64X2 , VINSERTF32X8 , VINSERTF64x4 ,
| F, VL, DQ | |||
VPABS | VPABSB , VPABSW , VPABSD ,VPABSQ | F, VL, BW | |||
ВПЕРМ | VPERMD , VPERMILPD , VPERMILPS , VPERMPD , 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 , VPSRAVD ,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-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]
Подмножество AVX-512 | F | компакт диск | ER | ПФ | 4 кадра | 4VNNIW | VPOPCNTDQ | VL | DQ | BW | IFMA | VBMI | ВННИ | BF16 | VBMI2 | BITALG | VPCLMULQDQ | GFNI | VAES | VP2INTERSECT |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Процессоры Knights Landing (Xeon Phi x200) (2016 г.) | да | да | Нет | |||||||||||||||||
Процессоры Knights Mill (Xeon Phi x205) (2017 г.) | да | да | Нет | |||||||||||||||||
Skylake-SP , процессоры Skylake-X (2017) | Нет | Нет | Нет | да | Нет | |||||||||||||||
Процессоры Cannon Lake (2018) | да | Нет | ||||||||||||||||||
Процессоры Cascade Lake (2019) | Нет | да | Нет | |||||||||||||||||
Процессоры Cooper Lake (2020 г.) | да | Нет | ||||||||||||||||||
Процессоры Ice Lake (2019) | да | да | Нет | да | Нет | |||||||||||||||
Процессоры Tiger Lake (2020 г.) | да | |||||||||||||||||||
Процессоры Rocket Lake (2021 г.) | Нет |
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 ), поддерживающий очень широкую разрядность и единый двоичный код, который может автоматически адаптироваться к максимальной ширине, поддерживаемой оборудованием.
Ссылки [ править ]
- ^ a b c d e f Джеймс Рейндерс (23 июля 2013 г.). «Инструкции AVX-512» . Intel . Проверено 20 августа 2013 года .
- ^ «Расширенный интеллект для решений с высокой плотностью кромок» . Intel . Intel . Проверено 8 февраля 2018 .
- ^ a b c Джеймс Рейндерс (17 июля 2014 г.). «Дополнительные инструкции AVX-512» . Intel . Проверено 3 августа 2014 .
- ↑ Антон Шилов. «Процессоры Intel 'Skylake' для ПК не поддерживают инструкции AVX-512» . Kitguru.net . Проверено 17 марта 2015 .
- ^ https://lemire.me/blog/2016/10/14/intel-will-add-deep-learning-instructions-to-its-processors/
- ^ a b c d e f g h «Справочник по программированию расширений набора команд архитектуры Intel» (PDF) . Intel . Проверено 29 января 2014 .
- ^ a b c d e f «Справочник по программированию расширений набора команд архитектуры Intel® и будущих функций» . Intel . Проверено 16 октября 2017 .
- ^ "Архитектура AVX-512 / Демиховский плакат" (PDF) . Intel . Проверено 25 февраля 2014 года .
- ^ «Краткое описание процессора Intel® Xeon Phi ™» . Intel . Проверено 12 октября +2016 .
- ^ «Intel представляет платформу серии X: до 18 ядер и 36 потоков, от 242 до 2000 долларов» . Ars Technica . Проверено 30 мая 2017 .
- ^ «Intel® Advanced Vector Extensions 2015/2016: Поддержка в коллекции компиляторов GNU» (PDF) . Gcc.gnu.org . Проверено 20 октября 2016 .
- ^ Патрицио, Энди. «Дорожная карта Intel Xeon для утечек на 2016 год» . Itworld.org . Проверено 20 октября 2016 .
- ^ "Обзор Intel Core i9-11900K - Самый быстрый игровой процессор в мире?" . www.techpowerup.com .
- ^ «Технические характеристики процессора Intel® Celeron® 6305 (4 МБ кэш-памяти, 1,80 ГГц, с IPU)» . ark.intel.com . Проверено 10 ноября 2020 .
- ^ «Использование коллекции компиляторов GNU (GCC): параметры x86» . GNU . Проверено 14 октября 2019 .
- ^ https://centtech.com/ai-technology/
- ^ "x86, x64 Instruction Latency, Memory Latency и CPUID дампы (instlatx64)" . users.atw.hu .
- ^ «Intel® Advisor XE 2016 Обновление 3 Что нового - Программное обеспечение Intel®» . Software.intel.com . Проверено 20 октября 2016 .
- ^ «Советник Intel® - Программное обеспечение Intel®» . Software.intel.com . Проверено 20 октября 2016 .
- ^ Кордес, Питер. «Инструкции SIMD, понижающие частоту процессора» . Переполнение стека .