Jump to content

AVX-512

AVX-512 — это 512-битное расширение 256-битных Advanced Vector Extensions инструкций SIMD для x86 архитектуры набора команд (ISA), предложенное Intel в июле 2013 года и впервые реализованное в Intel Xeon Phi x200 (Knights Landing) 2016 года. [1] а затем позже в ряде процессоров AMD и других процессоров Intel ( см. список ниже ). AVX-512 состоит из нескольких расширений, которые можно реализовать независимо. [2] Эта политика является отходом от исторического требования реализации всего блока инструкций. Для всех реализаций AVX-512 требуется только базовое расширение AVX-512F (AVX-512 Foundation).

Помимо расширения большинства 256-битных инструкций, расширения вводят различные новые операции, такие как новые преобразования данных, операции разброса и перестановки. [2] Количество регистров AVX увеличено с 16 до 32 и добавлены восемь новых «регистров маски», которые позволяют выбирать переменные и смешивать результаты инструкций. В ЦП с расширением длины вектора (VL), включенном в большинство процессоров с поддержкой AVX-512 (см. § ЦП с AVX-512 ), эти инструкции также могут использоваться с размерами векторов 128 и 256 бит. AVX-512 — не первый 512-битный набор инструкций SIMD, который Intel внедрила в процессоры: более ранние 512-битные инструкции SIMD, используемые в сопроцессорах Xeon Phi первого поколения и созданные на основе проекта Intel Larrabee , аналогичны, но не совместимы на уровне двоичного кода и только частично совместим с исходным кодом. [1]

Набор инструкций

[ редактировать ]

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

Ф, КД, ЕР, ПФ
Представлен в Xeon Phi x200 (Knights Landing) и Xeon Gold/Platinum ( Skylake SP "Purley"), причем последние два (ER и PF) предназначены только для Knights Landing.
  • AVX-512 Foundation (F) — расширяет большинство 32-битных и 64-битных AVX инструкций схемой кодирования EVEX для поддержки 512-битных регистров, масок операций, широковещательной передачи параметров, а также встроенного округления и контроля исключений, реализованных Knights Landing и Скайлейк Ксеон
  • Инструкции по обнаружению конфликтов AVX-512 (CD) — эффективное обнаружение конфликтов, позволяющее векторизовать больше циклов , реализовано Knights Landing [1] и Скайлейк Икс
  • AVX-512 Экспоненциальные и обратные инструкции (ER) - экспоненциальные и обратные операции, предназначенные для реализации трансцендентных операций, реализованные Knights Landing. [1]
  • AVX-512 Prefetch Instructions (PF) — новые возможности предварительной выборки, реализованные Knights Landing. [1]
ВЛ, ДК, ЧБ
Представлен вместе со 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]
ИФМА, ВБМИ
Представлено в Кэннон Лейк . [4]
  • AVX-512 Integer Fused Multiply Add (IFMA) – объединенное умножение целых чисел с точностью до 52 бит.
  • Инструкции по манипулированию векторными байтами AVX-512 (VBMI) добавляют инструкции по перестановке векторных байтов, которых не было в AVX-512BW.
4ВННИВ, 4ФМАПС
Представлен вместе с Knights Mill . [5] [6]
  • AVX-512 Векторные инструкции нейронной сети Word переменной точности (4VNNIW) — векторные инструкции для глубокого обучения, расширенного слова, переменной точности.
  • AVX-512 Fused Multiply Accumulation Packed Single Precision (4FMAPS) — векторные инструкции для глубокого обучения, с плавающей запятой, одинарной точности.
ВПОПКНТДК
по подсчету векторной популяции Инструкция . Представлен вместе с Knights Mill и Ice Lake . [7]
ВННИ, ВБМИ2, БИТАЛГ
Представлено с Ледяным озером. [7]
  • AVX-512 Vector Neural Network Instructions (VNNI) – векторные инструкции для глубокого обучения.
  • AVX-512 Инструкция по манипулированию векторными байтами 2 (VBMI2) – загрузка байтов/слов, сохранение и объединение со сдвигом.
  • Битовые алгоритмы AVX-512 (BITALG) инструкции по манипуляции битами/словами , расширяющие VPOPCNTDQ.
ВП2ИНТЕРСЕКТ
Представлено с Тайгеровым озером.
  • AVX-512 Пересечение векторной пары с парой регистров маски (VP2INTERSECT) .
GFNI, VPCLMULQDQ, VAES
Представлено с Ледяным озером. [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–SSE4.2 хмм0–хмм15 одиночные поплавки. Из SSE2: байты, слова, двойные слова, четверные слова и двойные числа с плавающей запятой.
АВХ-128 (ВЕКС) АВХ, АВХ2 хмм0–хмм15 байты, слова, двойные слова, четверные слова, одинарные и двойные числа с плавающей запятой.
AVX-256 (ВЕКС) АВХ, АВХ2 ymm0–ymm15 одинарное и двойное плавание. Из AVX2: байты, слова, двойные слова, четверные слова.
AVX-128 (ЭВЕКС) AVX-512ВЛ xmm0–xmm31 (k0–k7) двойные слова, четверные слова, одинарное и двойное плавающее число. С AVX512BW: байты и слова. С AVX512-FP16: полуплавающее.
AVX-256 (ЭВЕКС) AVX-512ВЛ ymm0–ymm31 (k0–k7) двойные слова, четверные слова, одинарное и двойное плавающее число. С AVX512BW: байты и слова. С AVX512-FP16: полуплавающее.
AVX-512 (ЭВЕКС) AVX-512F zmm0–zmm31 (k0–k7) двойные слова, четверные слова, одинарное и двойное плавающее число. С AVX512BW: байты и слова. С AVX512-FP16: полуплавающее.

Расширенные регистры

[ редактировать ]
Схема регистров x64 AVX-512 как расширение регистров x64 AVX (YMM0–YMM15) и x64 SSE (XMM0–XMM15)
511 256 255 128 127 0
ЗММ0  YMM0  ХММ0 
ЗММ1 ЯММ1 ХММ1
ЗММ2 YMM2 ХММ2
ЗММ3 YMM3 ХММ3
ЗММ4 YMM4 ХММ4
ЗММ5 ЯММ5 ХММ5
ЗММ6 ЯММ6 ХММ6
ЗММ7 YMM7 ХММ7
ЗММ8 YMM8 ХММ8
ЗММ9 YMM9 ХММ9
ЗММ10 ЯММ10 ХММ10
ЗММ11 ЯММ11 ХММ11
ZMM12 ЯММ12 ХММ12
ЗММ13 ЯММ13 ХММ13
ZMM14 ЯММ14 ХММ14
ЗММ15 ЯММ15 ХММ15
ЗММ16 ЯММ16 ХММ16
ЗММ17 ЯММ17 ХММ17
ЗММ18 ЯММ18 ХММ18
ZMM19 ЯММ19 ХММ19
ЗММ20 ЯММ20 ХММ20
ЗММ21 ЯММ21 ХММ21
ЗММ22 ЯММ22 ХММ22
ЗММ23 ЯММ23 ХММ23
ЗММ24 ЯММ24 ХММ24
ЗММ25 ЯММ25 ХММ25
ЗММ26 ЯММ26 ХММ26
ЗММ27 ЯММ27 ХММ27
ЗММ28 ЯММ28 ХММ28
ЗММ29 ЯММ29 ХММ29
ЗММ30 ЯММ30 ХММ30
ЗММ31 ЯММ31 ХММ31

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

Регистры опмаски

[ редактировать ]

Векторные инструкции AVX-512 могут указывать регистр opmask для управления тем, какие значения записываются в место назначения. Кодировка инструкций поддерживает значения от 0 до 7 для этого поля, однако в качестве регистров opmask можно использовать только k1–k7 (из k0–k7). маска, соответствующая значению 1–7, тогда как значение 0 зарезервировано для указания того, что регистр opmask не используется, т. е. для обозначения немаскированных операций используется жестко запрограммированная константа (вместо «k0»). Специальный регистр opmask «k0» по-прежнему является действующим и действительным регистром. Его можно использовать в инструкциях по манипуляции с opmask или использовать в качестве целевого регистра opmask. [8] Флаг управляет поведением opmask, которое может быть либо «нулевым», что обнуляет все, что не выбрано маской, либо «объединением», что оставляет все невыбранное нетронутым. Поведение слияния идентично инструкциям смешивания.

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

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

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

[ редактировать ]

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

Инструкция Набор расширений Описание
KANDФ Побитовое логическое И Маски
KANDNФ Побитовое логическое И НЕ Маски
KMOVФ Переход из и в регистры маски или регистры общего назначения.
KUNPCKФ Распаковать регистры маски
KNOTФ НЕ регистрация маски
KORФ Побитовые логические маски ИЛИ
KORTESTФ ИЛИ Маски и флаги
KSHIFTLФ Сдвиг регистров маски влево
KSHIFTRФ Регистры маски сдвига вправо
KXNORФ Побитовые логические маски XNOR
KXORФ Побитовые логические маски XOR
KADDЧБ/ДК Добавьте две маски
KTESTЧБ/ДК Побитовое сравнение и установка флагов

Новые инструкции в тональной основе AVX-512

[ редактировать ]

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

Растушуйте с помощью маски

[ редактировать ]

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

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

Инструкция Набор расширений Описание
VBLENDMPDФ Смешивание векторов float64 с использованием элемента управления opmask
VBLENDMPSФ Смешивание векторов float32 с использованием элемента управления opmask
VPBLENDMDФ Смешивание векторов int32 с использованием элемента управления opmask
VPBLENDMQФ Смешивание векторов int64 с использованием элемента управления opmask
VPBLENDMBЧБ Смешайте байтовые целочисленные векторы с помощью управления opmask
VPBLENDMWЧБ Смешайте целочисленные векторы слов с помощью элемента управления opmask

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

[ редактировать ]

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

Немедленный Сравнение Описание
0 эквалайзер Равный
1 LT Меньше, чем
2 ТО Меньше или равно
3 ЛОЖЬ Установить на ноль
4 НЕТ Не равно
5 НЛТ Больше или равно
6 я не могу Больше, чем
7 истинный Установить на один
Инструкция Набор расширений Описание
VPCMPD, VPCMPUDФ Сравнить знаковые/беззнаковые двойные слова в маске
VPCMPQ, VPCMPUQФ Сравните знаковые/беззнаковые четверные слова в маске
VPCMPB, VPCMPUBЧБ Сравнить подписанные/беззнаковые байты в маске
VPCMPW, VPCMPUWЧБ Сравните слова со знаком и без знака в маске

Маска логического набора

[ редактировать ]

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

Инструкция Набор расширений Описание
VPTESTMD, VPTESTMQФ Логическое И и установка маски для 32- или 64-битных целых чисел.
VPTESTNMD, VPTESTNMQФ Логическое NAND и установка маски для 32- или 64-битных целых чисел.
VPTESTMB, VPTESTMWЧБ Логическое И и установка маски для 8 или 16-битных целых чисел.
VPTESTNMB, VPTESTNMWЧБ Логическое NAND и установка маски для 8- или 16-битных целых чисел.

Сжимать и расширять

[ редактировать ]

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

Инструкция Описание
VCOMPRESSPD, VCOMPRESSPSХраните разреженные упакованные значения с плавающей запятой двойной или одинарной точности в плотной памяти.
VPCOMPRESSD, VPCOMPRESSQСохраняйте разреженные упакованные целочисленные значения двойного/четверного слова в плотной памяти/регистре.
VEXPANDPD, VEXPANDPSЗагрузка разреженных упакованных значений с плавающей запятой двойной или одинарной точности из плотной памяти
VPEXPANDD, VPEXPANDQЗагрузка разреженных упакованных целочисленных значений двойного или четверного слова из плотной памяти/регистра

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

Инструкция Набор расширений Описание
VPERMBВИМТ Перестановка элементов упакованных байтов.
VPERMWЧБ Перестановка элементов упакованных слов.
VPERMT2BВИМТ Полная перестановка байтов перезаписывает первый источник.
VPERMT2WЧБ Полная перестановка слов перезаписывает первый источник.
VPERMI2PD, VPERMI2PSФ Полная одинарная/двойная перестановка с плавающей запятой, перезаписывающая индекс.
VPERMI2D, VPERMI2QФ Полная перестановка двойного/четверного слова перезаписывает индекс.
VPERMI2BВИМТ Полная перестановка байтов перезаписывает индекс.
VPERMI2WЧБ Полная перестановка слов с перезаписью индекса.
VPERMT2PS, VPERMT2PDФ Полная одинарная/двойная перестановка с плавающей запятой, перезаписывающая первый источник.
VPERMT2D, VPERMT2QФ Полная перестановка двойных/четверных слов с перезаписью первого источника.
VSHUFF32x4, VSHUFF64x2, VSHUFI32x4, VSHUFI64x2Ф Перетасуйте четыре упакованные 128-битные строки.
VPMULTISHIFTQBВИМТ Выберите упакованные невыровненные байты из источников четверных слов.

Побитовая троичная логика

[ редактировать ]

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

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

Инструкция Описание
VPTERNLOGD, VPTERNLOGQПобитовая троичная логика
побитовой троичной логики Таблица истинности
А0 А1 А2 Двойное И
(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.

Инструкция Набор расширений Описание

VPMOVQD, VPMOVSQD, VPMOVUSQD, VPMOVQW, VPMOVSQW, VPMOVUSQW, VPMOVQB, VPMOVSQB, VPMOVUSQB, VPMOVDW, VPMOVSDW, VPMOVUSDW, VPMOVDB, VPMOVSDB, VPMOVUSDB

Ф Преобразование четверного или двойного слова в двойное слово, слово или байт; ненасыщенный, насыщенный или насыщенный без знака. Обратная инструкция расширения знака/нуля из SSE4.1 .
VPMOVWB, VPMOVSWB, VPMOVUSWBЧБ Преобразовать слово в байт; ненасыщенный, насыщенный или насыщенный без знака.
VCVTPS2UDQ, VCVTPD2UDQ, VCVTTPS2UDQ, VCVTTPD2UDQФ Преобразование с усечением или без него упакованных чисел с плавающей запятой одинарной или двойной точности в упакованные целые числа с двойным словом без знака.
VCVTSS2USI, VCVTSD2USI, VCVTTSS2USI, VCVTTSD2USIФ Преобразование скалярных чисел с плавающей запятой одинарной или двойной точности с усечением или без него в целое число без знака с двойным словом.
VCVTPS2QQ, VCVTPD2QQ, VCVTPS2UQQ, VCVTPD2UQQ, VCVTTPS2QQ, VCVTTPD2QQ, VCVTTPS2UQQ, VCVTTPD2UQQДК Преобразование с усечением или без него упакованных чисел с плавающей запятой одинарной или двойной точности в упакованные целые числа из четырех слов со знаком или без знака.
VCVTUDQ2PS, VCVTUDQ2PDФ Преобразуйте упакованные целые числа двойного слова без знака в упакованные числа с плавающей запятой одинарной или двойной точности.
VCVTUSI2PS, VCVTUSI2PDФ Преобразуйте скалярные целые числа двойного слова без знака в числа с плавающей запятой одинарной или двойной точности.
VCVTUSI2SD, VCVTUSI2SSФ Преобразуйте скалярные целые числа без знака в числа с плавающей запятой одинарной или двойной точности.
VCVTUQQ2PS, VCVTUQQ2PDДК Преобразуйте упакованные целые числа из четырех слов без знака в упакованные числа с плавающей запятой одинарной или двойной точности.
VCVTQQ2PD, VCVTQQ2PSФ Преобразуйте упакованные целые числа из четырех слов в упакованные числа с плавающей запятой одинарной или двойной точности.

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

[ редактировать ]

Среди уникальных новых функций 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Ф, ВЛ Широковещательная передача одинарного/двойного значения с плавающей запятой
VPBROADCASTB, VPBROADCASTW, VPBROADCASTD, VPBROADCASTQФ, ВЛ, ДК, ЧБ Широковещательная рассылка целочисленного значения в виде байта/слова/двойного слова/четверного слова.
VBROADCASTI32X2, VBROADCASTI64X2, VBROADCASTI32X4, VBROADCASTI32X8, VBROADCASTI64X4Ф, ВЛ, ДК, ЧБ Передача двух или четырех целочисленных значений двойного или четверного слова.

Разнообразный

[ редактировать ]
Инструкция Набор расширений Описание
VALIGND, VALIGNQФ, ВЛ Выравнивание векторов двойных или четверных слов
VDBPSADBWЧБ Двойная блочная упаковка суммы-абсолютных разностей (SAD) в беззнаковых байтах
VPABSQФ Упакованное четверное слово с абсолютным значением
VPMAXSQ, VPMAXUQФ Максимум упакованного четверного слова со знаком/без знака
VPMINSQ, VPMINUQФ Минимум упакованного четверного слова со знаком/без знака
VPROLD, VPROLVD, VPROLQ, VPROLVQ, VPRORD, VPRORVD, VPRORQ, VPRORVQФ Бит вращается влево или вправо
VPSCATTERDD, VPSCATTERDQ, VPSCATTERQD, VPSCATTERQQФ Разбросанное упакованное двойное/четверное слово со знаковыми индексами двойного и четверного слова
VSCATTERDPS, VSCATTERDPD, VSCATTERQPS, VSCATTERQPDФ Scatter упакованный float32/float64 с индексами двойного и четверного слова со знаком

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

[ редактировать ]

Обнаружение конфликтов

[ редактировать ]

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

Инструкция Имя Описание
VPCONFLICTD, VPCONFLICTQОбнаружение конфликтов внутри вектора упакованных значений двойных или четверных слов. Сравнивает каждый элемент в первом источнике со всеми элементами в том же или более ранних местах во втором источнике и формирует битовый вектор результатов.
VPLZCNTD, VPLZCNTQПодсчитайте количество начальных нулевых битов для упакованных значений двойного или четверного слова. Векторизованный LZCNT инструкция
VPBROADCASTMB2Q, VPBROADCASTMW2DМаска трансляции в векторный регистр Либо 8-битная маска для вектора четверного слова, либо 16-битная маска для вектора двойного слова.

Экспоненциальный и обратный

[ редактировать ]

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

Инструкция Описание
VEXP2PD, VEXP2PSВычисление приблизительной экспоненты 2^x упакованных значений с плавающей запятой одинарной или двойной точности
VRCP28PD, VRCP28PSВычисление приблизительных обратных величин упакованных значений с плавающей запятой одинарной или двойной точности.
VRCP28SD, VRCP28SSВычисление приблизительной обратной величины скалярного значения с плавающей запятой одинарной или двойной точности
VRSQRT28PD, VRSQRT28PSВычисление приблизительных обратных величин квадратных корней упакованных значений с плавающей запятой одинарной или двойной точности.
VRSQRT28SD, VRSQRT28SSВычисление приблизительной обратной величины квадратного корня скалярного значения с плавающей запятой одинарной или двойной точности

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

[ редактировать ]

Инструкции предварительной выборки AVX-512 (AVX-512PF) содержат новые операции предварительной выборки для новых функций рассеяния и сбора, представленных в 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

[ редактировать ]

Два набора инструкций выполняют несколько итераций обработки. Обычно они встречаются только в продуктах Xeon Phi.

Инструкция Набор расширений Описание
V4FMADDPS, V4FMADDSS4FMAPS Упакованное/скалярное умножение-сложение одинарной точности с плавающей запятой (4 итерации)
V4FNMADDPS, V4FNMADDSS4FMAPS Упакованные/скалярные операции с плавающей запятой одинарной точности, умножение, сложение и отрицание (4 итерации)
VP4DPWSSD4ВННИВ Скалярное произведение подписанных слов с накоплением двойных слов (4 итерации)
VP4DPWSSDS4ВННИВ Скалярное произведение подписанных слов с накоплением и насыщением двойных слов (4 итерации)

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, так и скалярные версии.

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

Инструкция Набор расширений Описание
VFPCLASSPS, VFPCLASSPDДК Типы тестов упакованных значений с плавающей запятой одинарной и двойной точности.
VFPCLASSSS, VFPCLASSSDДК Типы тестов скалярных значений с плавающей запятой одинарной и двойной точности.
VRANGEPS, VRANGEPDДК Вычисление ограничения диапазона для упакованных значений с плавающей запятой.
VRANGESS, VRANGESDДК Вычисление ограничения диапазона для скалярных значений с плавающей запятой.
VREDUCEPS, VREDUCEPDДК Выполните преобразование сокращения упакованных значений с плавающей запятой.
VREDUCESS, VREDUCESDДК Выполните преобразование сокращения скалярных значений с плавающей запятой.

Прочие инструкции

[ редактировать ]
Инструкция Набор расширений Описание
VPMOVM2D, VPMOVM2QДК Преобразуйте регистр маски в векторный регистр с двумя или четырьмя словами.
VPMOVM2B, VPMOVM2WЧБ Преобразуйте регистр маски в регистр вектора байта или слова.
VPMOVD2M, VPMOVQ2MДК Преобразуйте векторный регистр двойного или четверного слова в регистр маски.
VPMOVB2M, VPMOVW2MЧБ Преобразуйте регистр вектора байта или слова в регистр маски.
VPMULLQДК Множественно упакованные четырехсловные слова сохраняют низкий результат. Версия VPMULLD из четырех слов.

индекс ИМТ2

[ редактировать ]

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

Инструкция Описание
VPCOMPRESSB, VPCOMPRESSWХраните разреженные упакованные целочисленные значения байтов/слов в плотной памяти/регистре.
VPEXPANDB, VPEXPANDWЗагрузка разреженных упакованных целочисленных значений байтов/слов из плотной памяти/регистра
VPSHLDОбъединение и сдвиг упакованных данных влево от логики
VPSHLDVОбъединение и переменный сдвиг упакованных данных слева от логики
VPSHRDОбъединить и сдвинуть упакованные данные вправо по логике.
VPSHRDVОбъединение и переменный сдвиг упакованных данных вправо по логике

Инструкции векторной нейронной сети: [10] AVX512-VNNI добавляет инструкции в коде EVEX, описанные ниже. В AVX-512F эти инструкции могут работать с 512-битными векторами, а в AVX-512VL дополнительно добавлена ​​поддержка 128- и 256-битных векторов.

Более позднее расширение AVX-VNNI добавляет VEX кодировку этих инструкций , которая может работать только с 128- или 256-битными векторами. AVX-VNNI не является частью пакета AVX-512, он не требует AVX-512F и может быть реализован независимо.

Инструкция Описание
VPDPBUSDУмножить и добавить беззнаковые и подписанные байты
VPDPBUSDSУмножьте и добавьте беззнаковые и подписанные байты с насыщением
VPDPWSSDУмножить и сложить целые числа со знаком
VPDPWSSDSУмножить и сложить целые числа слов с насыщением

Инструкции умножения-сложения целых чисел. AVX512-IFMA добавляет инструкции в коде EVEX , описанные ниже.

Отдельное AVX-IFMA расширение набора команд VEX определяет кодировку этих инструкций . Это расширение не является частью пакета AVX-512 и может быть реализовано независимо.

Инструкция Набор расширений Описание
VPMADD52LUQИФМА Упакованное умножение 52-битных целых чисел без знака и добавление младших 52-битных произведений к 64-битным аккумуляторам.
VPMADD52HUQИФМА Упакованное умножение 52-битных целых чисел без знака и добавление старших 52-битных произведений к 64-битным аккумуляторам.

ВПОПКНТДК и БИТАЛГ

[ редактировать ]
Инструкция Набор расширений Описание
VPOPCNTD, VPOPCNTQВПОПКНТДК Возвращает количество битов, установленных в 1 в двойном/четверном слове.
VPOPCNTB, VPOPCNTWБИТАЛГ Возвращает количество битов, установленных в 1 в байте/слове.
VPSHUFBITQMBБИТАЛГ Перетасуйте биты из элементов четверного слова, используя байтовые индексы, в маску.

ВП2ИНТЕРСЕКТ

[ редактировать ]
Инструкция Набор расширений Описание
VP2INTERSECTD, VP2INTERSECTQВП2ИНТЕРСЕКТ Вычисление пересечения двойных/четверных слов с парой регистров маски

Новые инструкции поля Галуа полезны для криптографии, [11] поскольку их можно использовать для реализации S-блоков в стиле Rijndael, таких как те, которые используются в AES, Camellia и SM4 . [12] Эти инструкции также могут использоваться для манипуляций с битами в сетях и обработке сигналов. [11]

GFNI — это автономное расширение набора команд, которое можно включить отдельно от AVX или AVX-512. В зависимости от того, указана ли процессором поддержка AVX и AVX-512F, поддержка GFNI позволяет использовать устаревшие (SSE), инструкции в кодировке VEX или EVEX, работающие с 128-, 256- или 512-битными векторами.

Инструкция Описание
VGF2P8AFFINEINVQBОбратное аффинное преобразование поля Галуа
VGF2P8AFFINEQBАффинное преобразование поля Галуа
VGF2P8MULBПоле Галуа умножает байты

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Четверное слово умножения без переноса

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

Инструкция Описание
VAESDECВыполните один раунд потока расшифровки AES.
VAESDECLASTВыполнить последний раунд потока расшифровки AES.
VAESENCВыполните один раунд потока шифрования AES.
VAESENCLASTВыполнить последний раунд потока шифрования AES.

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

Инструкция Описание
VCVTNE2PS2BF16Преобразование двух векторов упакованных чисел одинарной точности в один вектор упакованных чисел Bfloat16.
VCVTNEPS2BF16Преобразование одного вектора упакованных чисел одинарной точности в один вектор упакованных чисел Bfloat16.
VDPBF16PSВычислить скалярное произведение двух пар Bfloat16 и накопить результат в одно упакованное число одинарной точности.

Расширение более раннего набора команд F16C , добавляющее комплексную поддержку чисел с плавающей запятой в двоичном формате 16 (также известных как FP16, float16 или числа с плавающей запятой половинной точности). Новые инструкции реализуют большинство операций, которые ранее были доступны для одинарной и двойной чисел с плавающей запятой точности, а также представляют новые инструкции для комплексных чисел и инструкции преобразования. Поддерживаются скалярные и пакетные операции.

В отличие от инструкций формата одинарной и двойной точности, операнды половинной точности не сбрасываются условно до нуля ( FTZ ) и не обрабатываются условно как ноль ( DAZ ) на основании MXCSR настройки. Субнормальные значения обрабатываются на полной скорости аппаратно, чтобы облегчить использование полного динамического диапазона чисел FP16. Инструкции, создающие номера FP32 и FP64, по-прежнему учитывают MXCSR.FTZ кусочек. [13]

Арифметические инструкции

[ редактировать ]
Инструкция Описание
VADDPH, VADDSHДобавьте упакованные/скалярные числа FP16.
VSUBPH, VSUBSHВычтите упакованные/скалярные числа FP16.
VMULPH, VMULSHУмножьте упакованные/скалярные числа FP16.
VDIVPH, VDIVSHРазделите упакованные/скалярные числа FP16.
VSQRTPH, VSQRTSHВычислите квадратный корень из упакованных/скалярных чисел FP16.
VFMADD{132, 213, 231}PH, VFMADD{132, 213, 231}SHУмножение-сложение упакованных/скалярных чисел FP16.
VFNMADD{132, 213, 231}PH, VFNMADD{132, 213, 231}SHОтрицательные упакованные/скалярные числа FP16 умножения-сложения.
VFMSUB{132, 213, 231}PH, VFMSUB{132, 213, 231}SHУмножение-вычитание упакованных/скалярных чисел FP16.
VFNMSUB{132, 213, 231}PH, VFNMSUB{132, 213, 231}SHОтрицательные упакованные/скалярные числа FP16 умножения-вычитания.
VFMADDSUB{132, 213, 231}PHУмножение-сложение (нечетные векторные элементы) или умножение-вычитание (четные векторные элементы) упакованные числа FP16.
VFMSUBADD{132, 213, 231}PHУпакованные числа FP16 умножения-вычитания (нечетные векторные элементы) или умножения-сложения (четные векторные элементы).
VREDUCEPH, VREDUCESHВыполните преобразование сокращения упакованных/скалярных чисел FP16.
VRNDSCALEPH, VRNDSCALESHОкруглите упакованные/скалярные числа FP16 до заданного количества дробных бит.
VSCALEFPH, VSCALEFSHМасштабируйте упакованные/скалярные числа FP16, умножив их на степень двойки.

Сложные арифметические инструкции

[ редактировать ]
Инструкция Описание
VFMULCPH, VFMULCSHУмножьте упакованные/скалярные комплексные числа FP16.
VFCMULCPH, VFCMULCSHУмножьте упакованные/скалярные комплексные числа FP16. Комплексно-сопряженная форма операции.
VFMADDCPH, VFMADDCSHУмножение-сложение упакованных/скалярных комплексных чисел FP16.
VFCMADDCPH, VFCMADDCSHУмножение-сложение упакованных/скалярных комплексных чисел FP16. Комплексно-сопряженная форма операции.

Примерные взаимные инструкции

[ редактировать ]
Инструкция Описание
VRCPPH, VRCPSHВычислите приблизительное обратное значение упакованных/скалярных чисел FP16. Максимальная относительная погрешность аппроксимации не превышает 2 −11 +2 −14 .
VRSQRTPH, VRSQRTSHВычислите приблизительный обратный квадратный корень из упакованных/скалярных чисел FP16. Максимальная относительная погрешность аппроксимации не превышает 2 −14 .

Инструкции по сравнению

[ редактировать ]
Инструкция Описание
VCMPPH, VCMPSHСравните упакованные/скалярные числа FP16 и сохраните результат в регистре маски.
VCOMISHСравните скалярные числа FP16 и сохраните результат в регистре флагов. Сигнализирует об исключении, если исходным операндом является QNaN или SNaN.
VUCOMISHСравните скалярные числа FP16 и сохраните результат в регистре флагов. Сигнализирует об исключении, только если исходным операндом является SNaN.
VMAXPH, VMAXSHВыберите максимум каждой вертикальной пары исходных упакованных/скалярных чисел FP16.
VMINPH, VMINSHВыберите минимум каждой вертикальной пары исходных упакованных/скалярных чисел FP16.
VFPCLASSPH, VFPCLASSSHПротестируйте упакованные/скалярные числа FP16 для специальных категорий (NaN, бесконечность, отрицательный ноль и т. д.) и сохраните результат в регистре маски.

Инструкции по конвертации

[ редактировать ]
Инструкция Описание
VCVTW2PHПреобразуйте упакованные 16-битные целые числа со знаком в числа FP16.
VCVTUW2PHПреобразуйте упакованные 16-битные целые числа без знака в числа FP16.
VCVTDQ2PHПреобразуйте упакованные 32-битные целые числа со знаком в числа FP16.
VCVTUDQ2PHПреобразуйте упакованные 32-битные целые числа без знака в числа FP16.
VCVTQQ2PHПреобразуйте упакованные 64-битные целые числа со знаком в числа FP16.
VCVTUQQ2PHПреобразуйте упакованные 64-битные целые числа без знака в числа FP16.
VCVTPS2PHXПреобразуйте упакованные числа FP32 в числа FP16. В отличие от VCVTPS2PH от F16C , VCVTPS2PHX имеет другую кодировку, которая также поддерживает широковещание.
VCVTPD2PHПреобразуйте упакованные числа FP64 в числа FP16.
VCVTSI2SHПреобразуйте скалярное 32-битное или 64-битное целое число со знаком в число FP16.
VCVTUSI2SHПреобразуйте скалярное 32-битное или 64-битное целое число без знака в число FP16.
VCVTSS2SHПреобразуйте скалярное число FP32 в число FP16.
VCVTSD2SHПреобразуйте скалярное число FP64 в число FP16.
VCVTPH2W, VCVTTPH2WПреобразуйте упакованные числа FP16 в 16-битные целые числа со знаком. VCVTPH2W округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2W округляет в сторону нуля.
VCVTPH2UW, VCVTTPH2UWПреобразуйте упакованные числа FP16 в беззнаковые 16-битные целые числа. VCVTPH2UW округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2UW округляет в сторону нуля.
VCVTPH2DQ, VCVTTPH2DQПреобразуйте упакованные числа FP16 в 32-битные целые числа со знаком. VCVTPH2DQ округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2DQ округляет в сторону нуля.
VCVTPH2UDQ, VCVTTPH2UDQПреобразуйте упакованные числа FP16 в беззнаковые 32-битные целые числа. VCVTPH2UDQ округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2UDQ округляет в сторону нуля.
VCVTPH2QQ, VCVTTPH2QQПреобразуйте упакованные числа FP16 в 64-битные целые числа со знаком. VCVTPH2QQ округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2QQ округляет в сторону нуля.
VCVTPH2UQQ, VCVTTPH2UQQПреобразуйте упакованные числа FP16 в беззнаковые 64-битные целые числа. VCVTPH2UQQ округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTPH2UQQ округляет в сторону нуля.
VCVTPH2PSXПреобразуйте упакованные числа FP16 в числа FP32. В отличие от VCVTPH2PS от F16C , VCVTPH2PSX имеет другую кодировку, которая также поддерживает широковещание.
VCVTPH2PDПреобразование упакованных чисел FP16 в числа FP64.
VCVTSH2SI, VCVTTSH2SIПреобразуйте скалярное число FP16 в 32-битное или 64-битное целое число со знаком. VCVTSH2SI округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTSH2SI округляет в сторону нуля.
VCVTSH2USI, VCVTTSH2USIПреобразуйте скалярное число FP16 в беззнаковое 32-битное или 64-битное целое число. VCVTSH2USI округляет значение в соответствии с MXCSR зарегистрироваться. VCVTTSH2USI округляет в сторону нуля.
VCVTSH2SSПреобразуйте скалярное число FP16 в число FP32.
VCVTSH2SDПреобразуйте скалярное число FP16 в число FP64.

Инструкции по разложению

[ редактировать ]
Инструкция Описание
VGETEXPPH, VGETEXPSHИзвлеките компоненты экспоненты упакованных/скалярных чисел FP16 как числа FP16.
VGETMANTPH, VGETMANTSHИзвлеките компоненты мантиссы упакованных/скалярных чисел FP16 как числа FP16.

Инструкции по перемещению

[ редактировать ]
Инструкция Описание
VMOVSHПеремещение скалярного числа FP16 в/из памяти или между векторными регистрами.
VMOVWПереместить скалярное число FP16 в/из памяти или регистра общего назначения.

Устаревшие инструкции с версиями в кодировке EVEX

[ редактировать ]
Группа Устаревшая кодировка Инструкции AVX-512
расширения
СШЭ
SSE2
ММХ
AVX
SSE3
SSE4
AVX2
ФМА
Ф ВЛ ЧБ ДК
ВАТИНА Да Да Нет VADDPD, VADDPS, VADDSD, VADDSSИ И Н Н
ВОДА VANDPD, VANDPS, VANDNPD, VANDNPSН И
ВКМП VCMPPD, VCMPPS, VCMPSD, VCMPSSИ Н Н
ВКОМ VCOMISD, VCOMISS
ВДИВ VDIVPD, VDIVPS, VDIVSD, VDIVSSИ
ВЦВТ VCVTDQ2PD, VCVTDQ2PS, VCVTPD2DQ, VCVTPD2PS, VCVTPH2PS, VCVTPS2PH, VCVTPS2DQ, VCVTPS2PD, VCVTSD2SI, VCVTSD2SS, VCVTSI2SD, VCVTSI2SS, VCVTSS2SD, VCVTSS2SI, VCVTTPD2DQ, VCVTTPS2DQ, VCVTTSD2SI, VCVTTSS2SI
ВМАКС VMAXPD, VMAXPS, VMAXSD, VMAXSS
ВМИН VMINPD, VMINPS, VMINSD, VMINSSН
ВМОВ VMOVAPD, VMOVAPS, VMOVD, VMOVQ, VMOVDDUP, VMOVHLPS, VMOVHPD, VMOVHPS, VMOVLHPS, VMOVLPD, VMOVLPS, VMOVNTDQA, VMOVNTDQ, VMOVNTPD, VMOVNTPS, VMOVSD, VMOVSHDUP, VMOVSLDUP, VMOVSS, VMOVUPD, VMOVUPS, VMOVDQA32, VMOVDQA64, VMOVDQU8, VMOVDQU16, VMOVDQU32, VMOVDQU64И И
ВМУЛ VMULPD, VMULPS, VMULSD, VMULSSН
ДО VORPD, VORPSН И
ВСКРТ VSQRTPD, VSQRTPS, VSQRTSD, VSQRTSSИ Н
ВСУБ VSUBPD, VSUBPS, VSUBSD, VSUBSS
ВУКОМИ VUCOMISD, VUCOMISSН
ВУНПК VUNPCKHPD, VUNPCKHPS, VUNPCKLPD, VUNPCKLPSИ
ВКСОР VXORPD, VXORPSН И
ВЕКСТРАКТЫ Нет Да Нет VEXTRACTPSИ Н Н
ВИНСЕРТПС VINSERTPS
ВПЭКСТР VPEXTRB, VPEXTRW, VPEXTRD, VPEXTRQН И И
ВПИНСР VPINSRB, VPINSRW, VPINSRD, VPINSRQ
ВПАК Да Да Да VPACKSSWB, VPACKSSDW, VPACKUSDW, VPACKUSWBИ Н
ВПАДД VPADDB, VPADDW, VPADDD, VPADDQ, VPADDSB, VPADDSW, VPADDUSB, VPADDUSWИ
ВПАНД VPANDD, VPANDQ, VPANDND, VPANDNQН
ВПАВГ VPAVGB, VPAVGWН И
ВПКМП VPCMPEQB, VPCMPEQW, VPCMPEQD, VPCMPEQQ, VPCMPGTB, VPCMPGTW, VPCMPGTD, VPCMPGTQИ
ВПМАКС VPMAXSB, VPMAXSW, VPMAXSD, VPMAXSQ, VPMAXUB, VPMAXUW, VPMAXUD, VPMAXUQ
ВПМИН VPMINSB, VPMINSW, VPMINSD, VPMINSQ, VPMINUB, VPMINUW, VPMINUD, VPMINUQ
ВПМОВ VPMOVSXBW, VPMOVSXBD, VPMOVSXBQ, VPMOVSXWD, VPMOVSXWQ, VPMOVSXDQ, VPMOVZXBW, VPMOVZXBD, VPMOVZXBQ, VPMOVZXWD, VPMOVZXWQ, VPMOVZXDQ
ВПМУЛ VPMULDQ, VPMULUDQ, VPMULHRSW, VPMULHUW, VPMULHW, VPMULLD, VPMULLQ, VPMULLW
ВПОР VPORD, VPORQН
ВПСУБ VPSUBB, VPSUBW, VPSUBD, VPSUBQ, VPSUBSB, VPSUBSW, VPSUBUSB, VPSUBUSWИ
ВПУНПКК VPUNPCKHBW, VPUNPCKHWD, VPUNPCKHDQ, VPUNPCKHQDQ, VPUNPCKLBW, VPUNPCKLWD, VPUNPCKLDQ, VPUNPCKLQDQ
ВПКСОР VPXORD, VPXORQН
ВПСАДБВ VPSADBWН И
ВПШУФ VPSHUFB, VPSHUFHW, VPSHUFLW, VPSHUFD, VPSLLDQ, VPSLLW, VPSLLD, VPSLLQ, VPSRAW, VPSRAD, VPSRAQ, VPSRLDQ, VPSRLW, VPSRLD, VPSRLQ, VPSLLVW, VPSLLVD, VPSLLVQ, VPSRLVW, VPSRLVD, VPSRLVQ, VPSHUFPD, VPSHUFPSИ
ВЕКСТРАКТ Нет Да Да VEXTRACTF32X4, VEXTRACTF64X2, VEXTRACTF32X8, VEXTRACTF64X4, VEXTRACTI32X4, VEXTRACTI64X2, VEXTRACTI32X8, VEXTRACTI64X4Н И
ВИНСЕРТ VINSERTF32x4, VINSERTF64X2, VINSERTF32X8, VINSERTF64x4, VINSERTI32X4, VINSERTI64X2, VINSERTI32X8, VINSERTI64X4
ВПАБС VPABSB, VPABSW, VPABSD, VPABSQИ Н
ВПАЛИГНР VPALIGNRН
ВПЕРМЬ VPERMD, VPERMILPD, VPERMILPS, VPERMPD, VPERMPS, VPERMQИ Н
ВПМАДД VPMADDUBSW VPMADDWDН И
ВФМАДД Нет Нет Да VFMADD132PD, VFMADD213PD, VFMADD231PD, VFMADD132PS, VFMADD213PS, VFMADD231PS, VFMADD132SD, VFMADD213SD, VFMADD231SD, VFMADD132SS, VFMADD213SS, VFMADD231SSИ Н
ВФМАДСУБ VFMADDSUB132PD, VFMADDSUB213PD, VFMADDSUB231PD, VFMADDSUB132PS, VFMADDSUB213PS, VFMADDSUB231PS
ВФМСУБАДД VFMSUBADD132PD, VFMSUBADD213PD, VFMSUBADD231PD, VFMSUBADD132PS, VFMSUBADD213PS, VFMSUBADD231PS
ВФМСУБ VFMSUB132PD, VFMSUB213PD, VFMSUB231PD, VFMSUB132PS, VFMSUB213PS, VFMSUB231PS, VFMSUB132SD, VFMSUB213SD, VFMSUB231SD, VFMSUB132SS, VFMSUB213SS, VFMSUB231SS
ВФНМАДД VFNMADD132PD, VFNMADD213PD, VFNMADD231PD, VFNMADD132PS, VFNMADD213PS, VFNMADD231PS, VFNMADD132SD, VFNMADD213SD, VFNMADD231SD, VFNMADD132SS, VFNMADD213SS, VFNMADD231SS
ВФНМСУБ VFNMSUB132PD, VFNMSUB213PD, VFNMSUB231PD, VFNMSUB132PS, VFNMSUB213PS, VFNMSUB231PS, VFNMSUB132SD, VFNMSUB213SD, VFNMSUB231SD, VFNMSUB132SS, VFNMSUB213SS, VFNMSUB231SS
СОБЕРИТЕ VGATHERDPS, VGATHERDPD, VGATHERQPS, VGATHERQPD
ВПГАТЕР VPGATHERDD, VPGATHERDQ, VPGATHERQD, VPGATHERQQ
ВПСРАВ VPSRAVW, VPSRAVD, VPSRAVQИ

Процессоры с AVX-512

[ редактировать ]
Подмножество Ф компакт-диск ЯВЛЯЕТСЯ ПФ 4FMAPS 4ВННИВ ВПОПКНТДК ВЛ ДК ЧБ ИФМА ВИМТ ВННИ БФ16 индекс ИМТ2 БИТАЛГ ВПКLMULQDQ ГФНИ ОАЭ ВП2ИНТЕРСЕКТ РП16
Рыцарский десант (Xeon Phi x200, 2016) Да Да Нет
Рыцарская мельница (Xeon Phi x205, 2017) Да Нет
Скайлейк-СП , Скайлейк-Х (2017) Нет Нет Да Нет
Кэннон Лейк (2018) Да Нет
Каскадное озеро (2019) Нет Да Нет
Купер Лейк (2020) Да Нет
Ледяное озеро (2019) Да Нет Да Нет
Тигровое озеро (2020) Да Нет
Ракетное озеро (2021) Нет
Ольховое озеро (2021) Частичный Примечание 1 Частичный Примечание 1
Дзен 4 (2022) Да Да Нет
Сапфировые пороги (2023) Нет Да
Дзен 5 (2024) Да Нет

^Примечание 1. Intel официально не поддерживает семейство инструкций AVX-512 на микропроцессорах Alder Lake . В начале 2022 года Intel начала отключать AVX-512 в микропроцессорах Alder Lake, чтобы клиенты не могли включить AVX-512. [34] В более старых процессорах семейства Alder Lake с некоторыми устаревшими комбинациями версий BIOS и микрокода можно было выполнять инструкции семейства AVX-512 при отключении всех ядер эффективности, которые не содержат микросхем для AVX-512. [35] [36] [23]

Производительность

[ редактировать ]

Intel Vectorization Advisor (начиная с версии 2017) поддерживает встроенный анализ производительности AVX-512 и качества векторного кода (для «Core», Xeon и Intel Xeon Phi процессоров ). Наряду с традиционным профилем горячих точек, рекомендациями Advisor и «бесшовной» интеграцией диагностики векторизации компилятора Intel, анализ Advisor Survey также предоставляет метрики AVX-512 ISA и новые «характеристики», специфичные для AVX-512, например, разброс, сжатие/расширение, использование маски. [37] [38]

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

Компиляторы C/ C++ также автоматически обрабатывают развертывание циклов и предотвращают зависания в конвейере , чтобы наиболее эффективно использовать AVX-512. Это означает, что программист, использующий встроенные функции языка для принудительного использования AVX-512, иногда может привести к ухудшению производительности по сравнению с код, сгенерированный компилятором, когда он встречает циклы, явно написанные в исходном коде. [42] В других случаях использование встроенных функций AVX-512 в коде C/C++ может привести к повышению производительности по сравнению с написанным в чистом виде C/C++. [43]

Существует множество примеров применения AVX-512 , включая обработку мультимедиа, криптографию, видеоигры , [44] нейронные сети , [45] и даже OpenJDK , который использует для сортировки AVX-512 . [46]

В часто цитируемой цитате из 2020 года Линус Торвальдс сказал: «Я надеюсь, что AVX-512 умрет мучительной смертью, и что Intel начнет исправлять реальные проблемы вместо того, чтобы пытаться создавать волшебные инструкции, чтобы затем создавать тесты, на которых они смогут хорошо выглядеть». [47] заявив, что он предпочел бы, чтобы транзисторный бюджет был потрачен на дополнительные ядра и целочисленную производительность, и что он «ненавидел» тесты с плавающей запятой . [48]

Numenta рекламирует свои «очень редкие » [49] технология нейронных сетей, которая, по их словам, устраняет необходимость в графических процессорах , поскольку их алгоритмы работают на процессорах с AVX-512. [50] Они заявляют о десятикратном ускорении по сравнению с A100 , главным образом потому, что их алгоритмы уменьшают размер нейронной сети, сохраняя при этом точность , с помощью таких методов, как алгоритм разреженного эволюционного обучения (SET). [51] и Форсайт-обрезка. [52]

См. также

[ редактировать ]
  • Куссвурм, Дэниел (2022). Современное параллельное программирование на C++ и ассемблере: разработка SIMD X86 с использованием AVX, AVX2 и AVX-512 . Нью-Йорк, штат Нью-Йорк: Apress Media LLC. ISBN  978-1-4842-7918-2 . OCLC   1304243196 .
  1. ^ Jump up to: Перейти обратно: а б с д и ж Джеймс Рейндерс (23 июля 2013 г.). «Инструкция AVX-512» . Интел . Проверено 20 августа 2013 г.
  2. ^ Jump up to: Перейти обратно: а б Куссвурм 2022 , с. 223.
  3. ^ Jump up to: Перейти обратно: а б с Джеймс Рейндерс (17 июля 2014 г.). «Дополнительные инструкции AVX-512» . Интел . Проверено 3 августа 2014 г.
  4. ^ Антон Шилов. «Процессоры Intel Skylake для ПК не поддерживают инструкции AVX-512» . Китгуру.нет . Проверено 17 марта 2015 г.
  5. ^ «Intel добавит в свои процессоры инструкции глубокого обучения» . 14 октября 2016 г.
  6. ^ Jump up to: Перейти обратно: а б с д и ж г час «Справочник по программированию расширений набора команд архитектуры Intel» (PDF) . Интел . Проверено 29 января 2014 г.
  7. ^ Jump up to: Перейти обратно: а б с д и ж «Расширения набора команд архитектуры Intel и справочник по программированию будущих функций» . Интел . Проверено 16 октября 2017 г.
  8. ^ «В встроенной документации asm неверно указано, что k0 (X86 AVX-512) жестко привязан к нулю · Проблема № 94977 · ржавчина-lang/Rust» . Гитхаб .
  9. ^ «Архитектура AVX-512/Демиховский плакат» (PDF) . Интел . Проверено 25 февраля 2014 г.
  10. ^ «Intel® Deep Learning Boost» (PDF) . Интел . Проверено 11 октября 2021 г.
  11. ^ Jump up to: Перейти обратно: а б «Руководство по технологиям новых инструкций поля Галуа (GFNI)» . networkbuilders.intel.com .
  12. ^ Кивилинна, Юсси (19 апреля 2023 г.). "камелия-симд-аэсни" . Гитхаб . Более новые процессоры x86-64 также поддерживают новые инструкции Galois Field New (GFNI), которые позволяют более просто реализовать Camellia s-box и обеспечивают еще большую производительность.
  13. ^ «Спецификация архитектуры Intel® AVX512-FP16, июнь 2021 г., версия 1.0, номер 347407-001US» (PDF) . Интел. 30 июня 2021 г. Проверено 4 июля 2021 г.
  14. ^ «Краткое описание процессора Intel Xeon Phi» ​​. Интел . Проверено 12 октября 2016 г.
  15. ^ «Intel представляет платформу серии X: до 18 ядер и 36 потоков, от 242 до 2000 долларов» . Арс Техника . Проверено 30 мая 2017 г.
  16. ^ «Intel Advanced Vector Extensions 2015/2016: поддержка в коллекции компиляторов GNU» (PDF) . Gcc.gnu.org . Проверено 20 октября 2016 г.
  17. ^ Патрицио, Энди (21 сентября 2015 г.). «Дорожная карта Intel Xeon на 2016 год» . Itworld.org . Архивировано из оригинала 21 октября 2016 г. Проверено 20 октября 2016 г.
  18. ^ «Обзор Intel Core i9-11900K — самый быстрый игровой процессор в мире?» . www.techpowerup.com . 30 марта 2021 г.
  19. ^ " Добавить Rockelake в gcc" commit" . gcc.gnu.org .
  20. ^ «Процессор Intel Celeron 6305 (4 МБ кэш-памяти, 1,80 ГГц, с IPU) Технические характеристики» . ark.intel.com . Архивировано из оригинала 18 октября 2020 г. Проверено 10 ноября 2020 г.
  21. ^ Дешевая производительность ноутбука может конкурировать | HP 14S DQ2518TU , 18 июня 2021 г. , получено 8 августа 2021 г.
  22. ^ «Использование коллекции компиляторов GNU (GCC): параметры x86» . ГНУ . Проверено 14 октября 2019 г.
  23. ^ Jump up to: Перейти обратно: а б Катресс, Ян; Фрумусану, Андрей. «Обзор процессора Intel Core i9-12900K 12-го поколения: гибридная производительность порождает гибридную сложность» . www.anandtech.com . Проверено 5 ноября 2021 г.
  24. ^ Ларабель, Майкл. «Intel Core i9 12900K «Ольховое озеро» AVX-512 в Linux» . www.phoronix.com . Проверено 8 ноября 2021 г.
  25. ^ Ларабель, Майкл. «Сравнение производительности AVX-512: AMD Genoa против Intel Sapphire Rapids и Ice Lake» . www.phoronix.com . Проверено 19 января 2023 г.
  26. ^ «Первая в отрасли высокопроизводительная система на кристалле x86 с процессорами серверного класса и интегрированной технологией сопроцессора искусственного интеллекта» . 2 августа 2022 г. Архивировано из оригинала 12 декабря 2019 г. {{cite web}}: CS1 maint: неподходящий URL ( ссылка )
  27. ^ «Задержка инструкций x86, x64, задержка памяти и дампы CPUID (instlatx64)» . Пользователи.atw.hu .
  28. ^ «Процессоры Ryzen на базе AMD Zen 4 могут иметь до 24 ядер и поддержку векторов AVX512» . Аппаратные времена . 2021-05-23 . Проверено 02 сентября 2021 г.
  29. ^ Хагедорн, Гильберт (18 мая 2021 г.). «AMD работает над потрясающим 96-ядерным процессором EPYC» . Guru3D.com . Проверено 25 мая 2021 г.
  30. ^ моллюск (23 августа 2021 г.). «Подробности об утечке гигабайта» . чипсы и сыр . Проверено 10 июня 2022 г.
  31. ^ W1zzard (26 мая 2022 г.). «AMD отвечает на наши технические вопросы по Zen 4 с Робертом Хэллоком» . TechPowerUp . Проверено 29 мая 2022 г.
  32. ^ Ларабель, Майкл (26 сентября 2022 г.). «Анализ производительности AMD Zen 4 AVX-512 на Ryzen 9 7950X» . www.phoronix.com .
  33. ^ Ларабель, Майкл (10 февраля 2024 г.). «Опубликована поддержка компилятора AMD Zen 5 для GCC — подтверждают новые функции AVX и многое другое» . www.phoronix.com .
  34. ^ Алкорн, Пол (2 марта 2022 г.). «Intel Nukes Alder Lake поддерживает AVX-512, теперь она отключена в кремнии» . Аппаратное обеспечение Тома . Проверено 7 марта 2022 г.
  35. ^ Катресс, Ян; Фрумусану, Андрей (19 августа 2021 г.). «День Intel Architecture 2021: подробное описание озера Олдер, Золотой бухты и Грейсмонта» . АнандТех . Проверено 25 августа 2021 г.
  36. ^ Алкорн, Пол (19 августа 2021 г.). «День Intel Architecture 2021: Чипсы Олдер-Лейк, Золотая бухта и ядра Грейсмонт» . Аппаратное обеспечение Тома . Проверено 21 августа 2021 г.
  37. ^ «Intel Advisor XE 2016, обновление 3. Что нового — программное обеспечение Intel» . Software.intel.com . Проверено 20 октября 2016 г.
  38. ^ «Intel Advisor — программное обеспечение Intel» . Software.intel.com . Проверено 20 октября 2016 г.
  39. ^ Кордес, Питер. «Инструкции SIMD, понижающие частоту процессора» . Переполнение стека .
  40. ^ Кордес, Питер. «почему автоматическая векторизация gcc для Tigerlake использует регистры ymm, а не zmm» . Переполнение стека .
  41. ^ «Примечания к выпуску LLVM 10.0.0» .
  42. ^ Мэтью Кольбе (10 октября 2023 г.). Молниеносный доклад: как использовать внутренние возможности SIMD для значительного замедления работы — Мэтью Колбе — CppNow 2023 . С++ сейчас . Получено 15 октября 2023 г. - через YouTube.
  43. ^ Клаузекер, Роберт (5 августа 2023 г.). «Перекодирование символов Юникода с помощью инструкций AVX-512». arXiv : 2212.05098 [ cs.DS ].
  44. ^ Шевчик, Крис (24 ноября 2021 г.). «Эмулятор RPCS3 PS3 значительно ускоряет работу процессоров Intel Alder Lake с включенным AVX-512» . ПК-геймер . Проверено 11 октября 2023 г.
  45. ^ Карнейро, Андре; Серпа, Матеус (5 сентября 2021 г.). «Легкие приложения глубокого обучения на AVX-512» . Симпозиум IEEE по компьютерам и коммуникациям 2021 года (ISCC) . Афины : IEEE . стр. 1–6. дои : 10.1109/ISCC53001.2021.9631464 .
  46. ^ Параса, Шринивас (30 мая 2023 г.). «JDK-8309130: встроенные функции x86_64 AVX512 для методов Arrays.sort (массивы int, long, float и double)» . OpenJDK . Проверено 11 октября 2023 г.
  47. ^ Тунг, Лиам (13 июля 2020 г.). «Линус Торвальдс: Надеюсь, Intel AVX-512 умрёт мучительной смертью» . ЗДНет . Проверено 11 октября 2023 г.
  48. ^ Торвальдс, Линус (11 июля 2020 г.). «Ольховое озеро и AVX-512» . Realworldtech.com . Проверено 11 октября 2023 г.
  49. ^ «Разреженность обеспечивает 100-кратное ускорение производительности в сетях глубокого обучения: демонстрация технологии» (PDF) . numenta.com . 20 мая 2021 г. Проверено 11 октября 2023 г.
  50. ^ Афифи-Сабет, Кеумарс (08 октября 2023 г.). «Крошечный стартап помог Intel обойти AMD и Nvidia в критических тестах ИИ — игра уже окончена?» . ТехРадар . Проверено 11 октября 2023 г.
  51. ^ Мокану, Дечебал; Мокану, Елена (2018). «Масштабируемое обучение искусственных нейронных сетей с адаптивной разреженной связностью, вдохновленное сетевой наукой» . Природные коммуникации . 9 (1): 2383. Бибкод : 2018NatCo...9.2383M . дои : 10.1038/s41467-018-04316-3 . ПМК   6008460 . ПМИД   29921910 .
  52. ^ Соуза, Лукас (30 октября 2020 г.). «Обоснование разреженности в нейронных сетях, часть 2: динамическая разреженность» . numenta.com . Проверено 11 октября 2023 г.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: e6718aea282f6994e0f80d9483bbbb44__1720583700
URL1:https://arc.ask3.ru/arc/aa/e6/44/e6718aea282f6994e0f80d9483bbbb44.html
Заголовок, (Title) документа по адресу, URL1:
AVX-512 - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)