Jump to content

Расширенные векторные расширения

(Перенаправлено из «Новых инструкций Haswell »)

Расширенные векторные расширения ( AVX , также известные как Gesher New Instructions , а затем Sandy Bridge New Instructions ) — это SIMD- расширения x86 архитектуры набора команд для микропроцессоров от Intel и Advanced Micro Devices (AMD). Они были предложены Intel в марте 2008 года и впервые поддержаны Intel с помощью Sandy Bridge. [1] поставки микроархитектуры AMD в первом квартале 2011 г. и позже с моделью Bulldozer [2] Поставка микроархитектуры состоится в четвертом квартале 2011 года. AVX предоставляет новые функции, новые инструкции и новую схему кодирования.

AVX2 (также известный как Новые инструкции Haswell ) расширяет большинство целочисленных команд до 256 бит и вводит новые инструкции. Впервые они были поддержаны Intel в микроархитектуре Haswell , выпущенной в 2013 году.

AVX-512 расширяет поддержку AVX до 512-битной с использованием новой кодировки префикса EVEX, предложенной Intel в июле 2013 года и впервые поддержанной Intel с Knights Landing , который был поставлен в 2016 году. сопроцессором [3] [4] Среди обычных процессоров AVX-512 был представлен вместе с сервером Skylake и процессорами HEDT в 2017 году.

Расширенные векторные расширения

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

AVX использует шестнадцать регистров YMM для выполнения одной инструкции над несколькими частями данных (см. SIMD ). Каждый регистр YMM может хранить и выполнять одновременные математические операции над:

  • восемь 32-битных чисел с плавающей запятой одинарной точности или
  • четыре 64-битных числа двойной точности с плавающей запятой.

Ширина SIMD-регистров увеличена со 128 бит до 256 бит и переименована с XMM0–XMM7 в YMM0–YMM7 (в режиме x86-64 с XMM0–XMM15 на YMM0–YMM15). Устаревшие инструкции SSE по-прежнему можно использовать через префикс VEX для работы с младшими 128 битами регистров YMM.

Схема регистров AVX-512 как расширение регистров AVX (YMM0-YMM15) и 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
ЗММ12 ЯММ12 ХММ12
ЗММ13 ЯММ13 ХММ13
ЗММ14 ЯММ14 ХММ14
ЗММ15 ЯММ15 ХММ15
ЗММ16 ЯММ16 ХММ16
ЗММ17 ЯММ17 ХММ17
ЗММ18 ЯММ18 ХММ18
ЗММ19 ЯММ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

AVX представляет формат инструкций SIMD с тремя операндами, называемый схемой кодирования VEX , в котором регистр назначения отличается от двух исходных операндов. Например, инструкция SSE, использующая традиционную форму с двумя операндами a a + b, теперь может использовать неразрушающую форму с тремя операндами c a + b , сохраняя оба исходных операнда. Первоначально формат трех операндов AVX был ограничен инструкциями с операндами SIMD (YMM) и не включал инструкции с регистрами общего назначения (например, EAX). Позже он использовался для кодирования новых инструкций для регистров общего назначения в более поздних расширениях, таких как BMI . Кодирование VEX также используется для инструкций, работающих с регистрами маски k0-k7, которые были представлены в AVX-512 .

Требования к выравниванию операндов SIMD-памяти смягчены. [5] В отличие от своих аналогов, не закодированных в VEX, большинство векторных инструкций, закодированных в VEX, больше не требуют выравнивания своих операндов в памяти по размеру вектора. Примечательно, что VMOVDQA Инструкция по-прежнему требует, чтобы ее операнд в памяти был выровнен.

Новая схема кодирования VEX представляет новый набор префиксов кода, который расширяет пространство кода операции , позволяет инструкциям иметь более двух операндов и позволяет векторным регистрам SIMD иметь длину более 128 бит. Префикс VEX также можно использовать в устаревших инструкциях SSE, придавая им форму с тремя операндами и позволяя им более эффективно взаимодействовать с инструкциями AVX без необходимости VZEROUPPER и VZEROALL.

Инструкции AVX поддерживают как 128-битный, так и 256-битный SIMD. 128-битные версии могут быть полезны для улучшения старого кода без необходимости расширения векторизации и во избежание штрафов за переход от SSE к AVX. Они также быстрее в некоторых ранних реализациях AVX от AMD. Этот режим иногда называют AVX-128. [6]

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

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

Эти инструкции AVX дополняют те, которые являются 256-битными расширениями устаревших 128-битных инструкций SSE; большинство из них можно использовать как с 128-битными, так и с 256-битными операндами.

Инструкция Описание
VBROADCASTSS, VBROADCASTSD, VBROADCASTF128 Скопируйте 32-битный, 64-битный или 128-битный операнд памяти во все элементы векторного регистра XMM или YMM.
VINSERTF128 Заменяет нижнюю или верхнюю половину 256-битного регистра YMM значением 128-битного исходного операнда. Другая половина пункта назначения не изменилась.
VEXTRACTF128 Извлекает нижнюю или верхнюю половину 256-битного регистра YMM и копирует значение в 128-битный операнд назначения.
VMASKMOVPS, VMASKMOVPD Условно считывает любое количество элементов из операнда векторной памяти SIMD в регистр назначения, оставляя оставшиеся элементы вектора непрочитанными и устанавливая соответствующие элементы в регистре назначения в ноль. Альтернативно, условно записывает любое количество элементов из операнда векторного регистра SIMD в операнд векторной памяти, оставляя остальные элементы операнда памяти неизменными. В архитектуре процессора AMD Jaguar эта инструкция с операндом-источником памяти занимает более 300 тактов, когда маска равна нулю, и в этом случае инструкция не должна ничего делать. Похоже, это ошибка конструкции. [7]
VPERMILPS, VPERMILPD Перестановка внутри полосы. Перетасуйте 32-битные или 64-битные векторные элементы одного входного операнда. Это 256-битные инструкции, расположенные внутри полосы, что означает, что они работают со всеми 256 битами с двумя отдельными 128-битными перетасовками, поэтому они не могут перемещаться по 128-битным дорожкам. [8]
VPERM2F128 Перетасуйте четыре 128-битных векторных элемента двух 256-битных исходных операндов в 256-битный операнд назначения с непосредственной константой в качестве селектора.
VTESTPS, VTESTPD Проверка упакованных битов упакованных битов знака с плавающей запятой одинарной или двойной точности, установка или очистка флага ZF на основе AND и флага CF на основе ANDN.
VZEROALL Установите все регистры YMM на ноль и пометьте их как неиспользуемые. Используется при переключении между 128-битным и 256-битным использованием.
VZEROUPPER Установите верхнюю половину всех регистров YMM на ноль. Используется при переключении между 128-битным и 256-битным использованием.

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

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

Вопросы совместимости будущих процессоров Intel и AMD обсуждаются в разделе « Набор инструкций XOP» .

  • С ПОМОЩЬЮ :
    • Нано Четырехъядерный процессор
    • Эдем X4
  • Чжаосинь :
    • Процессоры на базе WuDaoKou (KX-5000 и KH-20000)

Поддержка компилятора и ассемблера

[ редактировать ]
  • Absoft поддерживает флаг -mavx.
  • Компилятор Free Pascal поддерживает AVX и AVX2 с ключами -CfAVX и -CfAVX2 начиная с версии 2.7.1.
  • Студия RAD (v11.0 Alexandria) поддерживает AVX2 и AVX512. [12]
  • Встроенные ассемблерные функции GNU Assembler (GAS) поддерживают эти инструкции (доступны через GCC), а также примитивы Intel и встроенный ассемблер Intel (тесно совместимый с GAS, хотя и более общий в обработке локальных ссылок внутри встроенного кода). GAS поддерживает AVX, начиная с версии binutils 2.19. [13]
  • GCC , начиная с версии 4.6 (хотя существовала ветка 4.3 с определенной поддержкой), и Intel Compiler Suite, начиная с версии 11.1, поддерживают AVX.
  • Компилятор Open64 версии 4.5.1 поддерживает AVX с флагом -mavx.
  • PathScale поддерживает флаг -mavx.
  • Компилятор Vector Pascal поддерживает AVX через флаг -cpuAVX32.
  • Компилятор Visual Studio 2010/2012 поддерживает AVX через встроенный переключатель и /arch:AVX.
  • NASM начиная с версии 2.03 и новее. В версии 2.04 было множество исправлений ошибок и обновлений, связанных с AVX. [14]
  • Другие ассемблеры, такие как версия MASM VS2010, YASM , [15] ФАСМ и JWASM .

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

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

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

Расширенные векторные расширения 2

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

Advanced Vector Extensions 2 (AVX2), также известный как Haswell New Instructions , [24] — это расширение набора инструкций AVX, представленного в микроархитектуре Intel Haswell . AVX2 вносит следующие дополнения:

  • расширение большинства векторных целочисленных инструкций SSE и AVX до 256 бит
  • Получите поддержку, позволяющую загружать векторные элементы из несмежных ячеек памяти.
  • DWORD- и QWORD-детализация «любой к любому»
  • векторные сдвиги.

Иногда расширение с тремя операндами с объединенным умножением-накоплением (FMA3) считается частью AVX2, поскольку оно было представлено Intel в той же микроархитектуре процессора. Это отдельное расширение, использующее собственный флаг CPUID и описанное на отдельной странице , а не ниже.

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

[ редактировать ]
Инструкция Описание
VBROADCASTSS, VBROADCASTSD Скопируйте 32-битный или 64-битный операнд регистра во все элементы векторного регистра XMM или YMM. Это регистровые версии тех же инструкций в AVX1. Однако 128-битной версии не существует, но того же эффекта можно просто добиться с помощью VINSERTF128.
VPBROADCASTB, VPBROADCASTW, VPBROADCASTD, VPBROADCASTQ Скопируйте 8, 16, 32 или 64-битный целочисленный регистр или операнд памяти во все элементы векторного регистра XMM или YMM.
VBROADCASTI128 Скопируйте 128-битный операнд памяти во все элементы векторного регистра YMM.
VINSERTI128 Заменяет нижнюю или верхнюю половину 256-битного регистра YMM значением 128-битного исходного операнда. Другая половина пункта назначения не изменилась.
VEXTRACTI128 Извлекает нижнюю или верхнюю половину 256-битного регистра YMM и копирует значение в 128-битный операнд назначения.
VGATHERDPD, VGATHERQPD, VGATHERDPS, VGATHERQPS Собирает значения с плавающей запятой одинарной или двойной точности, используя 32- или 64-битные индексы и масштаб.
VPGATHERDD, VPGATHERDQ, VPGATHERQD, VPGATHERQQ Собирает 32- или 64-битные целочисленные значения, используя 32- или 64-битные индексы и масштаб.
VPMASKMOVD, VPMASKMOVQ Условно считывает любое количество элементов из операнда векторной памяти SIMD в регистр назначения, оставляя оставшиеся элементы вектора непрочитанными и устанавливая соответствующие элементы в регистре назначения в ноль. Альтернативно, условно записывает любое количество элементов из операнда векторного регистра SIMD в операнд векторной памяти, оставляя остальные элементы операнда памяти неизменными.
VPERMPS, VPERMD Перетасуйте восемь 32-битных векторных элементов одного 256-битного исходного операнда в 256-битный операнд назначения, используя операнд регистра или памяти в качестве селектора.
VPERMPD, VPERMQ Перетасуйте четыре 64-битных векторных элемента одного 256-битного исходного операнда в 256-битный операнд назначения, используя операнд регистра или памяти в качестве селектора.
VPERM2I128 Перетасуйте (два из) четырех 128-битных векторных элементов двух 256-битных исходных операндов в 256-битный операнд назначения, используя непосредственную константу в качестве селектора.
VPBLENDD Немедленная версия двойного слова инструкций PBLEND из SSE4 .
VPSLLVD, VPSLLVQ Сдвиг влево логичный. Допускает переменные сдвиги, при которых каждый элемент сдвигается в соответствии с упакованными входными данными.
VPSRLVD, VPSRLVQ Сдвиг вправо логично. Допускает переменные сдвиги, при которых каждый элемент сдвигается в соответствии с упакованными входными данными.
VPSRAVD Сдвиг вправо арифметически. Допускает переменные сдвиги, при которых каждый элемент сдвигается в соответствии с упакованными входными данными.

Процессоры с AVX2

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

AVX-512 — это 512-битное расширение 256-битных инструкций SIMD Advanced Vector Extensions для архитектуры набора команд x86, предложенных Intel в июле 2013 года и поддерживаемых процессором Intel Knights Landing . [3]

Инструкции AVX-512 кодируются новым префиксом EVEX . Он допускает 4 операнда, 8 новых 64-битных регистров опмаски , скалярный режим памяти с автоматической трансляцией, явный контроль округления и режим адресации памяти со сжатым смещением . Ширина файла регистров увеличена до 512 бит, а общее количество регистров увеличено до 32 (регистры ZMM0-ZMM31) в режиме x86-64.

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

  • AVX-512 Foundation (F) — добавляет несколько новых инструкций и расширяет большинство 32-битных и 64-битных инструкций SSE-SSE4.1 и AVX/AVX2 с плавающей запятой схемой кодирования EVEX для поддержки 512-битных регистров, масок операций, параметров. широковещательная рассылка, а также встроенный контроль округления и исключений.
  • Инструкции по обнаружению конфликтов AVX-512 (компакт-диск) — эффективное обнаружение конфликтов, позволяющее векторизовать больше циклов, поддерживается Knights Landing [3]
  • AVX-512 Экспоненциальные и обратные инструкции (ER) - экспоненциальные и обратные операции, предназначенные для реализации трансцендентных операций, поддерживаемые Knights Landing. [3]
  • AVX-512 Prefetch Instructions (PF) — новые возможности предварительной выборки, поддерживаемые Knights Landing. [3]
  • Расширения векторной длины (VL) AVX-512 — расширяет большинство операций AVX-512 для работы с регистрами XMM (128-бит) и YMM (256-бит) (включая XMM16-XMM31 и YMM16-YMM31 в режиме x86-64). [25]
  • AVX-512 Байтовые и словесные инструкции (BW) — расширяют AVX-512 для поддержки 8-битных и 16-битных целочисленных операций. [25]
  • AVX-512 Инструкции с двойным и четверным словом (DQ) — расширенные 32-битные и 64-битные целочисленные операции. [25]
  • AVX-512 Integer Fused Multiply Add (IFMA) – объединенное умножение для 512-битных целых чисел. [26] : 746 
  • Инструкции по манипулированию векторными байтами AVX-512 (VBMI) добавляют инструкции по перестановке векторных байтов, которых нет в AVX-512BW.
  • AVX-512 Векторные инструкции нейронной сети Точность переменной слова (4VNNIW) — векторные инструкции для глубокого обучения.
  • AVX-512 Fused Multiply Accumulation Packed Single Precision (4FMAPS) — векторные инструкции для глубокого обучения.
  • VPOPCNTDQ – количество битов установлено в 1. [27]
  • VPCLMULQDQ – умножение четверных слов без переноса. [27]
  • AVX-512 Vector Neural Network Instructions (VNNI) – векторные инструкции для глубокого обучения. [27]
  • AVX-512 Galois Field New Instructions (GFNI) – векторные инструкции для расчета поля Галуа . [27]
  • AVX-512 Векторные инструкции AES (VAES) – векторные инструкции для кодирования AES . [27]
  • AVX-512 Инструкция по манипулированию векторными байтами 2 (VBMI2) – загрузка байтов/слов, сохранение и объединение со сдвигом. [27]
  • Битовые алгоритмы AVX-512 (BITALG) — инструкции по манипуляции битами/словами , расширяющие VPOPCNTDQ. [27]
  • AVX-512 Bfloat16 Инструкции с плавающей запятой (BF16) – векторные инструкции для ускорения ИИ.
  • AVX-512 Инструкции с плавающей запятой половинной точности (FP16) — векторные инструкции для работы с числами с плавающей запятой и комплексными числами с пониженной точностью.

Для всех реализаций требуется только базовое расширение AVX-512F (AVX-512 Foundation), хотя все текущие реализации также поддерживают CD (обнаружение конфликтов). Все центральные процессоры с AVX-512 также поддерживают VL, DQ и BW. Расширения набора команд ER, PF, 4VNNIW и 4FMAPS в настоящее время реализованы только в вычислительных сопроцессорах Intel.

Обновленные инструкции SSE/AVX в AVX-512F используют ту же мнемонику, что и версии AVX; они могут работать с 512-битными регистрами ZMM, а также поддерживают 128/256-битные регистры XMM/YMM (с AVX-512VL) и целочисленные операнды в виде байтов, слов, двойных и четверных слов (с AVX-512BW/DQ и VBMI). [26] : 23 

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

[ редактировать ]
Подмножество AVX-512 Ф компакт-диск ЯВЛЯЕТСЯ ПФ 4FMAPS 4ВННИВ ВПОПКНТДК ВЛ ДК ЧБ ИФМА ВИМТ индекс ИМТ2 БИТАЛГ ВННИ БФ16 ВПКLMULQDQ ГФНИ ОАЭ ВП2ИНТЕРСЕКТ РП16
Intel Knights Landing (2016) Да Да Нет
Intel Knights Mill (2017) Да Нет
Intel Skylake-SP , Skylake-X (2017 г.) Нет Нет Да Нет
Интел Кэннон Лейк (2018) Да Нет
Intel Каскад Лейк-СП (2019) Нет Да Нет
Интел Купер Лейк (2020) Нет Да Нет
Интел Ледяное озеро (2019) Да Нет Да Нет
Intel Тайгер Лейк (2020) Да Нет
Intel Ракетное озеро (2021 г.) Нет
Интел Олдер Лейк (2021 г.) Официально не поддерживается, но может быть включен на некоторых материнских платах с некоторыми версиями BIOS. Примечание 1
AMD Дзен 4 (2022 г.) Да Да Нет
Intel Сапфир Рапидс (2023 г.) Нет Да
AMD Дзен 5 (2024 г.) Да Нет

[28]

^Примечание 1. AVX-512 по умолчанию отключен в процессорах Alder Lake . На некоторых материнских платах с некоторыми версиями микрокода ЦП и BIOS AVX-512 можно включить в BIOS, но для этого необходимо отключить E-ядра. [29] Однако Intel начала включать AVX-512 в процессоры Alder Lake, выпущенные в начале 2022 года и новее. [30]

Компиляторы, поддерживающие AVX-512

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

Сборщики, поддерживающие AVX-512

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

AVX-ВННИ, AVX-IFMA

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

AVX-VNNI — это кодированный VEX вариант расширения набора команд AVX512-VNNI . Аналогично, AVX-IFMA является VEX с кодировкой вариантом AVX512-IFMA . Эти расширения предоставляют тот же набор операций, что и их аналоги AVX-512, но ограничены 256-битными векторами и не поддерживают какие-либо дополнительные функции кодирования EVEX , такие как широковещательная рассылка, регистры opmask или доступ к более чем 16 векторным регистрам. Эти расширения позволяют поддерживать операции VNNI и IFMA, даже если полная поддержка AVX-512 не реализована в процессоре.

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

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

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

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

AVX10, анонсированный в августе 2023 года, представляет собой новый «конвергентный» набор инструкций AVX. Он решает несколько проблем AVX-512, в частности то, что он разделен на слишком много частей. [36] (20 флагов функций) и что поддержка 512-битных векторов обязательна. AVX10 представляет собой упрощенный интерфейс CPUID для проверки поддержки инструкций, состоящий из номера версии AVX10 (указывающего набор поддерживаемых инструкций, причем более поздние версии всегда являются надмножеством более ранних) и доступной максимальной длины вектора (256 или 512 бит). . [37] Для указания версии и длины вектора используется комбинированное обозначение: например, AVX10.2/256 указывает, что ЦП поддерживает вторую версию AVX10 с максимальной шириной вектора 256 бит. [38]

Первая и «ранняя» версия AVX10, получившая обозначение AVX10.1, не будет содержать каких-либо инструкций или функций кодирования, помимо тех, что уже есть в AVX-512 (в частности, в Intel Sapphire Rapids : AVX-512F, CD, VL, DQ, BW). , IFMA, VBMI, VBMI2, BITALG, VNNI, GFNI, VPOPCNTDQ, VPCLMULQDQ, VAES, BF16, FP16). Вторая, «полноценная» версия, AVX10.2, представляет новые функции, такие как встроенное округление YMM и подавление всех исключений. Для процессоров, поддерживающих AVX10 и 512-битные векторы, все устаревшие флаги функций AVX-512 останутся установленными, чтобы приложения, поддерживающие AVX-512, могли продолжать использовать инструкции AVX-512. [38]

AVX10.1/512 будет доступен на Granite Rapids . [38]

APX — новое расширение. Он не ориентирован на векторные вычисления, но предоставляет RISC-подобные расширения архитектуры x86-64 за счет удвоения количества регистров общего назначения до 32 и введения форматов инструкций с тремя операндами. AVX затрагивается лишь косвенно, поскольку APX вводит расширенные операнды. [39] [40]

Приложения

[ редактировать ]
  • Подходит для интенсивных вычислений с плавающей запятой в мультимедийных, научных и финансовых приложениях (AVX2 добавляет поддержку целочисленных операций).
  • Повышает параллелизм и производительность вычислений SIMD с плавающей запятой .
  • Уменьшает нагрузку на регистры благодаря неразрушающим инструкциям.
  • Улучшает производительность программного обеспечения Linux RAID (требуется AVX2, AVX недостаточно) [41]

Программное обеспечение

[ редактировать ]
  • Криптография
    • Bloombase использует AVX, AVX2 и AVX-512 в своем криптографическом модуле Bloombase (BCM).
    • Botan использует AVX и AVX2, если они доступны, для ускорения некоторых алгоритмов, таких как ChaCha.
    • Инструментарий BSAFE C использует AVX и AVX2, где это необходимо, для ускорения различных криптографических алгоритмов. [42]
    • Crypto++ использует AVX и AVX2, если они доступны, для ускорения некоторых алгоритмов, таких как Salsa и ChaCha.
    • OpenSSL использует криптографические функции, оптимизированные для AVX и AVX2, начиная с версии 1.0.2. [43] Поддержка AVX-512 была добавлена ​​в версии 3.0.0. [44] Некоторые из этих оптимизаций также присутствуют в различных клонах и форках, таких как LibreSSL.
    • Ядро Linux может использовать AVX или AVX2 вместе с AES-NI в качестве оптимизированной реализации криптографического алгоритма AES-GCM .
    • Ядро Linux использует AVX или AVX2, если они доступны, в оптимизированной реализации нескольких других криптографических шифров: Camellia , CAST5 , CAST6 , Serpent , Twofish , MORUS-1280 и других примитивов: Poly1305 , SHA-1 , SHA-256 , SHA-512 . ЧаЧа20 .
    • libsodium использует AVX в реализации скалярного умножения для алгоритмов Curve25519 и Ed25519 , AVX2 для BLAKE2b , Salsa20 , ChaCha20 и AVX2 и AVX-512 в реализации алгоритма Argon2 .
  • Наука, инженерия и другие
    • Esri ArcGIS Data Store использует AVX2 для хранения графиков. [50]
    • Prime95 /MPrime, программное обеспечение, используемое для GIMPS , начало использовать инструкции AVX с версии 27.1, AVX2 с 28.6 и AVX-512 с 29.1. [51]
    • dnetc , программное обеспечение, используемое распределенным.net , имеет ядро ​​AVX2, доступное для его проекта RC5, и вскоре выпустит его для своего проекта OGR-28.
    • Einstein@Home использует AVX в некоторых своих распределенных приложениях, которые ищут гравитационные волны . [52]
    • Folding@home использует AVX в вычислительных ядрах, реализованных с помощью библиотеки GROMACS .
    • Helios использует аппаратное ускорение AVX и AVX2 на 64-битном оборудовании x86. [53]
    • Horizon: Zero Dawn использует AVX в своем игровом движке Decima.
    • PCSX2 и RPCS3 — это эмуляторы PS2 и PS3 с открытым исходным кодом соответственно, которые используют инструкции AVX2 и AVX-512 для эмуляции игр.
    • Интерфейс сетевых устройств — протокол IP-видео/аудио, разработанный NewTek для производства прямых трансляций, использует AVX и AVX2 для повышения производительности.
    • Для TensorFlow начиная с версии 1.6 и для более поздних версий требуется процессор, поддерживающий как минимум AVX. [54]
    • на базе ЦП Различные майнеры криптовалюты (например, cpuminer пула для биткойнов и лайткойнов ) используют AVX и AVX2 для различных процедур, связанных с криптографией, включая SHA-256 и scrypt .
    • FFTW может использовать AVX, AVX2 и AVX-512, если они доступны.
    • LLVMpipe, программный рендерер OpenGL в Mesa , использующий Gallium и инфраструктуру LLVM , использует AVX2, когда он доступен.
    • glibc использует AVX2 (с FMA ) и AVX-512 для оптимизированной реализации различных математических (т.е. expf, sinf, powf, atanf, atan2f) и строка ( memmove, memcpyи т. д.) функции в libc .
    • POCL, портативный компьютерный язык, обеспечивающий реализацию OpenCL , по возможности использует AVX, AVX2 и AVX-512.
    • .NET и .NET Framework могут использовать AVX, AVX2 через общий System.Numerics.Vectors пространство имен.
    • .NET Core , начиная с версии 2.1 и более широко после версии 3.0, может напрямую использовать все внутренние функции AVX, AVX2 через System.Runtime.Intrinsics.X86 пространство имен.
    • EmEditor 19.0 и выше использует AVX2 для ускорения обработки. [55]
    • Microsoft Teams использует инструкции AVX2 для создания размытого или пользовательского фона позади участников видеочата. [56] и для подавления фонового шума. [57]
    • Пользовательские сборки Windows Pale Moon значительно увеличивают скорость просмотра благодаря использованию AVX2.
    • simdjson , библиотека анализа JSON , использует AVX2 и AVX-512 для достижения улучшенной скорости декодирования. [58] [59]
    • x86-simd-sort , библиотека с алгоритмами сортировки для 16, 32 и 64-битных числовых типов данных, использует AVX2 и AVX-512. Библиотека используется в NumPy и OpenJDK для ускорения алгоритмов сортировки. [60]
    • zlib-ng , оптимизированная версия zlib , содержит версии AVX2 и AVX-512 некоторых алгоритмов сжатия данных.
    • Механизм OCR Tesseract использует AVX, AVX2 и AVX-512 для ускорения распознавания символов. [61]

Даунклокинг

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

Поскольку инструкции AVX шире, они потребляют больше энергии и выделяют больше тепла. Выполнение тяжелых инструкций AVX на высоких тактовых частотах ЦП может повлиять на стабильность ЦП из-за чрезмерного падения напряжения во время переходных процессов нагрузки. В некоторых процессорах Intel предусмотрены возможности снижения ограничения частоты Turbo Boost при выполнении таких инструкций. Это снижение происходит, даже если ЦП не достиг пределов теплового и энергопотребления. В Skylake и его производных регулирование разделено на три уровня: [62] [63]

  • L0 (100%): нормальный предел турбонаддува.
  • L1 (~85%): предел усиления AVX. Мягкий запуск с помощью 256-битных «тяжелых» инструкций (модуль с плавающей запятой: математика FP и целочисленное умножение). Жесткий запуск «легкими» (всеми остальными) 512-битными инструкциями.
  • L2 (~60%): [ сомнительно обсудить ] Предел усиления AVX-512. Мягкий запуск с помощью 512-битных тяжелых инструкций.

Частотный переход может быть мягким или жестким. Жесткий переход означает, что частота снижается, как только обнаруживается такая инструкция; мягкий переход означает, что частота снижается только после достижения порогового числа совпадающих инструкций. Ограничение указано для каждого потока. [62]

В Ледяном озере сохранилось только два уровня: [64]

  • L0 (100%): нормальный предел турбонаддува.
  • L1 (~97%): запускается любыми 512-битными инструкциями, но только когда активно одноядерное ускорение; не срабатывает при загрузке нескольких ядер.

Процессоры Rocket Lake не запускают снижение частоты при выполнении каких-либо векторных инструкций независимо от размера вектора. [64] Однако понижение тактовой частоты все равно может произойти по другим причинам, например, из-за достижения пределов температуры и мощности.

Снижение тактовой частоты означает, что использование AVX в смешанной рабочей нагрузке с процессором Intel может привести к снижению частоты. Отказ от использования широких и тяжелых инструкций поможет свести к минимуму последствия в таких случаях. AVX-512VL позволяет использовать 256-битные или 128-битные операнды в инструкциях AVX-512, что делает его разумным вариантом по умолчанию для смешанных нагрузок. [65]

В поддерживаемых и разблокированных вариантах процессоров, которые понижают тактовую частоту, смещения уменьшения тактовой частоты (обычно называемые смещениями AVX и AVX-512) можно регулировать и можно полностью отключить (установить на 0x) с помощью утилиты разгона/настройки Intel или в BIOS, если поддержали там. [66]

См. также

[ редактировать ]
  1. ^ Кантер, Дэвид (25 сентября 2010 г.). «Микроархитектура Intel Sandy Bridge» . www.realworldtech.com . Проверено 17 февраля 2018 г.
  2. ^ Грушка, Джоэл (24 октября 2011 г.). «Анализ бульдозера: почему чип AMD так разочаровывает — страница 4 из 5 — ExtremeTech» . ЭкстримТех . Проверено 17 февраля 2018 г.
  3. ^ Jump up to: а б с д и Джеймс Рейндерс (23 июля 2013 г.), AVX-512 Instructions , Intel , получено 20 августа 2013 г.
  4. ^ «Процессор Intel Xeon Phi 7210 (16 ГБ, 1,30 ГГц, 64 ядра) Технические характеристики» . Intel ARK (технические характеристики продукта) . Проверено 16 марта 2018 г.
  5. ^ «14,9». Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32, том 1: Базовая архитектура (PDF) (изд. -051US). Корпорация Интел. п. 349 . Проверено 23 августа 2014 г. Аргументы памяти для большинства инструкций с префиксом VEX работают нормально, не вызывая #GP(0) при выравнивании байтов (в отличие от инструкций Legacy SSE).
  6. ^ «Параметры i386 и x86-64 — использование коллекции компиляторов GNU (GCC)» . Проверено 9 февраля 2014 г.
  7. ^ «Микроархитектура процессоров Intel, AMD и VIA: руководство по оптимизации для программистов-сборщиков и производителей компиляторов» (PDF) . Проверено 17 октября 2016 г.
  8. ^ «Шахматное программирование AVX2» . Архивировано из оригинала 10 июля 2017 года . Проверено 17 октября 2016 г.
  9. ^ «Intel предлагает взглянуть на Нехалема и Ларраби» . ЭкстримТех. 17 марта 2008 г.
  10. ^ Jump up to: а б «Процессор Intel® Celeron® 6305 (4 МБ кэш-памяти, 1,80 ГГц, с IPU) Технические характеристики продукта» . ark.intel.com . Проверено 10 ноября 2020 г.
  11. ^ Батлер, Майкл; Барнс, Лесли; Дас Сарма, Дебджит; Гелинас, Боб (март – апрель 2011 г.). «Бульдозер: подход к повышению производительности многопоточных вычислений» (PDF) . IEEE микро . 31 (2). дои : 10.1109/MM.2011.23 . S2CID   28236214 . Архивировано из оригинала (PDF) 19 мая 2024 года.
  12. ^ «Что нового — RAD Studio» . docwiki.embarcadero.com . Проверено 17 сентября 2021 г.
  13. ^ «Изменения ГАЗа» . исходное программное обеспечение.org . Проверено 3 мая 2024 г.
  14. ^ Jump up to: а б «NASM — Netwide Assembler, Приложение C: История версий NASM» . nasm.us. ​Проверено 3 мая 2024 г.
  15. ^ «Примечания к выпуску YASM 0.7.0» . yasm.tortall.net .
  16. ^ Добавьте поддержку расширенных состояний FPU в amd64, как для собственных 64-битных, так и для 32-битных ABI , svnweb.freebsd.org, 21 января 2012 г. , получено 22 января 2012 г.
  17. ^ «Объявление о выпуске FreeBSD 9.1» . Проверено 20 мая 2013 г.
  18. ^ x86: добавить поддержку ядра Linux для состояния YMM , получено 13 июля 2009 г.
  19. ^ Linux 2.6.30 — Linux Kernel Newbies , получено 13 июля 2009 г.
  20. ^ Твиттер , получено 23 июня 2010 г.
  21. ^ «Разработчики добились прогресса в том, чтобы macOS Ventura работала на неподдерживаемых компьютерах Mac десятилетней давности» . 23 августа 2022 г.
  22. ^ Добавьте поддержку сохранения/восстановления состояния FPU с помощью XSAVE/XRSTOR. , получено 25 марта 2015 г.
  23. ^ Поддержка чисел с плавающей запятой для 64-битных драйверов , получено 6 декабря 2009 г.
  24. ^ Новые описания инструкций Haswell уже доступны , Software.intel.com , получено 17 января 2012 г.
  25. ^ Jump up to: а б с Джеймс Рейндерс (17 июля 2014 г.). «Дополнительные инструкции AVX-512» . Интел . Проверено 3 августа 2014 г.
  26. ^ Jump up to: а б «Справочник по программированию расширений набора команд архитектуры Intel» (PDF) . Интел . Проверено 29 января 2014 г.
  27. ^ Jump up to: а б с д и ж г «Справочник по программированию расширений набора команд архитектуры Intel® и будущих функций» . Интел . Проверено 16 октября 2017 г.
  28. ^ «Эмулятор разработки программного обеспечения Intel® | Программное обеспечение Intel®» . программное обеспечение.intel.com . Проверено 11 июня 2016 г.
  29. ^ Катресс, Ян; Фрумусану, Андрей. «Обзор процессора Intel Core i9-12900K 12-го поколения: гибридная производительность усложняет гибрид» . АнандТех . Проверено 5 ноября 2021 г.
  30. ^ Алкорн, Пол (2 марта 2022 г.). «Intel Nukes Alder Lake поддерживает AVX-512, теперь она отключена в кремнии» . Аппаратное обеспечение Тома . Проверено 3 октября 2022 г.
  31. ^ «Примечания к выпуску LLVM 3.9 — документация LLVM 3.9» . Releases.llvm.org . Проверено 3 апреля 2017 г.
  32. ^ «Серия выпусков GCC 4.9 — изменения, новые функции и исправления — Проект GNU — Фонд свободного программного обеспечения (FSF)» . gcc.gnu.org . Проверено 3 апреля 2017 г.
  33. ^ «Примечания к выпуску Intel® Parallel Studio XE 2015 Composer Edition C++ | Программное обеспечение Intel®» . программное обеспечение.intel.com . Проверено 3 апреля 2017 г.
  34. ^ «Microsoft Visual Studio 2017 поддерживает Intel® AVX-512» . 11 июля 2017 г.
  35. ^ «Опубликована поддержка компилятора AMD Zen 5 для GCC — подтверждают новые функции AVX и многое другое» . www.phoronix.com . Проверено 10 февраля 2024 г.
  36. ^ Манн, Тобиас (15 августа 2023 г.). «Intel AVX10 обещает преимущества AVX-512 без багажа» . www.theregister.com . Проверено 20 августа 2023 г.
  37. ^ «Конвергентный вектор ISA: Технический документ Intel® Advanced Vector Extensions 10» . Интел .
  38. ^ Jump up to: а б с «Спецификация архитектуры Intel® Advanced Vector Extensions 10 (Intel® AVX10)» . Интел .
  39. ^ «Спецификация архитектуры Intel® Advanced Performance Extensions (Intel® APX)» . Интел.
  40. ^ Робинсон, Дэн (26 июля 2023 г.). «Intel раскрывает x86 и векторные инструкции для будущих чипов» . www.theregister.com . Проверено 20 августа 2023 г.
  41. ^ «Линукс-рейд» . ЛВН. 17 февраля 2013 г. Архивировано из оригинала 15 апреля 2013 г.
  42. ^ «Сравнение реализаций криптографической библиотеки BSAFE» . 25 июля 2023 г.
  43. ^ «Улучшение производительности OpenSSL» . 26 мая 2015 года . Проверено 28 февраля 2017 г.
  44. ^ «Примечания к выпуску OpenSSL 3.0.0» . Гитхаб . 7 сентября 2021 г.
  45. ^ Ярош, Милан; Стракош, Петр; Ржиха, Любомир (28 мая 2022 г.). «Рендеринг в Blender с использованием векторизации AVX-512» (PDF) . Группа пользователей Intel eXtreme Performance . Технический университет Остравы . Проверено 28 октября 2022 г.
  46. ^ «MASSIVE X требует AVX-совместимого процессора» . Родные инструменты . Проверено 29 ноября 2019 г.
  47. ^ «dav1d: производительность и завершение первого релиза» . 21 ноября 2018 года . Проверено 22 ноября 2018 г.
  48. ^ «Примечания к выпуску dav1d 0.6.0» . 6 марта 2020 г.
  49. ^ «Примечания к выпуску SVT-AV1 0.7.0» . 26 сентября 2019 г.
  50. ^ «Системные требования ArcGIS Data Store 11.2» . ArcGIS Enterprise . Проверено 24 января 2024 г.
  51. ^ «Примечания к выпуску Prime95» . Проверено 10 июля 2022 г.
  52. ^ «Эйнштейн@Домашние приложения» .
  53. ^ «Часто задаваемые вопросы, Гелиос» . Гелиос . Проверено 5 июля 2021 г.
  54. ^ «Тензорный поток 1.6» . Гитхаб .
  55. ^ Новое в версии 19.0 — EmEditor (текстовый редактор)
  56. ^ «Требования к оборудованию для Microsoft Teams» . Майкрософт . Проверено 17 апреля 2020 г.
  57. ^ «Уменьшите фоновый шум на собраниях Teams» . Поддержка Майкрософт . Проверено 5 января 2021 г.
  58. ^ Лэнгдейл, Джефф; Лемир, Дэниел (2019). «Разбор гигабайт JSON в секунду». Журнал ВЛДБ . 28 (6): 941–960. arXiv : 1902.08318 . дои : 10.1007/s00778-019-00578-5 . S2CID   67856679 .
  59. ^ «Примечания к выпуску simdjson 2.1.0» . Гитхаб . 30 июня 2022 г.
  60. ^ Ларабель, Майкл (6 октября 2023 г.). «OpenJDK объединяет x86-simd-sort от Intel для ускорения сортировки данных в 7–15 раз» . Фороникс .
  61. ^ Ларабель, Майкл (7 июля 2022 г.). «Движок Tesseract OCR 5.2 добился успеха с AVX-512F» . Фороникс .
  62. ^ Jump up to: а б Лемир, Дэниел (7 сентября 2018 г.). «AVX-512: когда и как использовать эти новые инструкции» . Блог Дэниела Лемира .
  63. ^ БиОнРопе. «Инструкции SIMD, понижающие частоту процессора» . Переполнение стека .
  64. ^ Jump up to: а б Даунс, Трэвис (19 августа 2020 г.). «Понижение частоты Ice Lake AVX-512» . Блог «Производительность имеет значение» .
  65. ^ «Производительность x86 — AVX 512 и AVX2 для простых циклов обработки массивов» . Переполнение стека .
  66. ^ «Руководство по разгону утилиты Intel® Extreme Tuning Utility (Intel® XTU): Расширенная настройка» . Интел . Проверено 18 июля 2021 г. См. изображение в связанном разделе, где для коэффициента AVX2 установлено значение 0.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 0e6412bc62e8fba93f8eea6e040b5a8e__1722848880
URL1:https://arc.ask3.ru/arc/aa/0e/8e/0e6412bc62e8fba93f8eea6e040b5a8e.html
Заголовок, (Title) документа по адресу, URL1:
Advanced Vector Extensions - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)