stringtranslate.com

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

Расширенные векторные расширения ( AVX , также известные как Gesher New Instructions , а затем Sandy Bridge New Instructions ) — это SIMD- расширения архитектуры набора команд x86 для микропроцессоров от Intel и Advanced Micro Devices (AMD). Они были предложены Intel в марте 2008 года и впервые поддержаны Intel с процессором Sandy Bridge [1], поступившим в первом квартале 2011 года, а затем AMD с процессором 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 может хранить и выполнять одновременные математические операции над:

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

AVX представляет формат инструкций SIMD с тремя операндами, называемый схемой кодирования VEX , в котором регистр назначения отличается от двух исходных операндов. Например, инструкция SSE , использующая традиционную форму с двумя операндами aa + b , теперь может использовать неразрушающую форму с тремя операндами ca + 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-битными операндами.

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

Не все процессоры перечисленных семейств поддерживают AVX. Как правило, процессоры коммерческого номинала Core i3/i5/i7/i9 поддерживают их, тогда как процессоры Pentium и Celeron до Tiger Lake [12] их не поддерживают.

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

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

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

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

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

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

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

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

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

AVX-512

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-512F (AVX-512 Foundation), хотя все современные процессоры также поддерживают CD (обнаружение конфликтов); вычислительные сопроцессоры будут дополнительно поддерживать ER, PF, 4VNNIW, 4FMAPS и VPOPCNTDQ, а центральные процессоры — VL, DQ, BW, IFMA, VBMI, VPOPCNTDQ, VPCLMULQDQ и т. д.

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

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

[29]

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

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

AVX-ВННИ, AVX-IFMA

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

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

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

AVX10

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

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

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

АПХ

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

Приложения

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

Даунклокинг

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

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

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

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

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

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

Смотрите также

Рекомендации

  1. Кантер, Дэвид (25 сентября 2010 г.). «Микроархитектура Intel Sandy Bridge». www.realworldtech.com . Проверено 17 февраля 2018 г.
  2. ^ Грушка, Джоэл (24 октября 2011 г.). «Анализ бульдозера: почему чип AMD так разочаровывает — страница 4 из 5 — ExtremeTech». ЭкстримТех . Проверено 17 февраля 2018 г.
  3. ^ abcde Джеймс Рейндерс (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. ^ «Процессор Intel Core i7-3960X Extreme Edition» . Проверено 17 января 2012 г.
  11. ^ abc «Процессор Intel® Celeron® 6305 (кэш 4 МБ, 1,80 ГГц, с IPU) Технические характеристики продукта» . ark.intel.com . Проверено 10 ноября 2020 г.
  12. ^ «Поддерживает ли процессор с AVX2 или AVX-512 инструкции AVX?» ark.intel.com . Проверено 27 апреля 2022 г.
  13. Дэйв Кристи (7 мая 2009 г.), «Наведение баланса», блоги разработчиков AMD, заархивировано из оригинала 9 ноября 2013 г. , получено 17 января 2012 г.
  14. ^ Новые инструкции для «Бульдозера» и «Сваебойщика» (PDF) , AMD, октябрь 2012 г.
  15. ^ «Что нового - RAD Studio» . docwiki.embarcadero.com . Проверено 17 сентября 2021 г.
  16. ^ «Примечания к выпуску YASM 0.7.0» . yasm.tortall.net .
  17. ^ Добавлена ​​поддержка расширенных состояний FPU в amd64, как для собственных 64-битных, так и для 32-битных ABI, svnweb.freebsd.org, 21 января 2012 г. , получено 22 января 2012 г.
  18. ^ «Объявление о выпуске FreeBSD 9.1» . Проверено 20 мая 2013 г.
  19. ^ x86: добавить поддержку ядра Linux для состояния YMM , получено 13 июля 2009 г.
  20. ^ Linux 2.6.30 — Linux Kernel Newbies , получено 13 июля 2009 г.
  21. ^ Твиттер , получено 23 июня 2010 г.
  22. ^ «Разработчики добиваются прогресса в запуске macOS Ventura на неподдерживаемых компьютерах Mac десятилетней давности» . 23 августа 2022 г.
  23. ^ Добавлена ​​поддержка сохранения/восстановления состояния FPU с помощью XSAVE/XRSTOR. , получено 25 марта 2015 г.
  24. ^ Поддержка чисел с плавающей запятой для 64-битных драйверов , получено 6 декабря 2009 г.
  25. ^ Новые описания инструкций Haswell уже доступны, Software.intel.com , получено 17 января 2012 г.
  26. ↑ abc Джеймс Рейндерс (17 июля 2014 г.). «Дополнительные инструкции AVX-512». Интел . Проверено 3 августа 2014 г.
  27. ^ ab «Справочник по программированию расширений набора команд архитектуры Intel» (PDF) . Интел . Проверено 29 января 2014 г.
  28. ^ abcdefg «Расширения набора команд архитектуры Intel® и справочник по программированию будущих функций». Интел . Проверено 16 октября 2017 г.
  29. ^ «Эмулятор разработки программного обеспечения Intel® | Программное обеспечение Intel®» . программное обеспечение.intel.com . Проверено 11 июня 2016 г.
  30. ^ Катресс, Ян; Фрумусану, Андрей. «Обзор Intel Core i9-12900K 12-го поколения: гибридная производительность усложняет гибрид». АнандТех . Проверено 5 ноября 2021 г.
  31. Алкорн, Пол (2 марта 2022 г.). «Intel Nukes Alder Lake поддерживает AVX-512, теперь она отключена в кремнии» . Аппаратное обеспечение Тома . Проверено 3 октября 2022 г.
  32. ^ «Серия выпусков GCC 4.9 — изменения, новые функции и исправления - Проект GNU - Фонд свободного программного обеспечения (FSF)» . gcc.gnu.org . Проверено 3 апреля 2017 г.
  33. ^ «Примечания к выпуску LLVM 3.9 — документация LLVM 3.9» . Releases.llvm.org . Проверено 3 апреля 2017 г.
  34. ^ «Примечания к выпуску Intel® Parallel Studio XE 2015 Composer Edition C++ | Программное обеспечение Intel®» . программное обеспечение.intel.com . Проверено 3 апреля 2017 г.
  35. ^ «Microsoft Visual Studio 2017 поддерживает Intel® AVX-512» . 11 июля 2017 г.
  36. ^ «Опубликована поддержка компилятора AMD Zen 5 для GCC — подтверждают новые функции AVX и многое другое» . www.phoronix.com . Проверено 10 февраля 2024 г.
  37. Манн, Тобиас (15 августа 2023 г.). «Intel AVX10 обещает преимущества AVX-512 без багажа». www.theregister.com . Проверено 20 августа 2023 г.
  38. ^ «Конвергентный вектор ISA: Технический документ Intel® Advanced Vector Extensions 10» . Интел .
  39. ^ abc «Спецификация архитектуры Intel® Advanced Vector Extensions 10 (Intel® AVX10)» . Интел .
  40. ^ «Спецификация архитектуры Intel® Advanced Performance Extensions (Intel® APX)» . Интел.
  41. Робинсон, Дэн (26 июля 2023 г.). «Intel раскрывает x86 и векторные инструкции для будущих чипов». www.theregister.com . Проверено 20 августа 2023 г.
  42. ^ «Linux RAID». ЛВН. 17 февраля 2013 г. Архивировано из оригинала 15 апреля 2013 г.
  43. ^ Ярош, Милан; Стракош, Петр; Ржиха, Любомир (28 мая 2022 г.). «Рендеринг в Blender с использованием векторизации AVX-512» (PDF) . Группа пользователей Intel eXtreme Performance . Технический университет Остравы . Проверено 28 октября 2022 г.
  44. ^ «Сравнение реализаций криптографической библиотеки BSAFE». 25 июля 2023 г.
  45. ^ «Системные требования к ArcGIS Data Store 11.2» . ArcGIS Enterprise . Проверено 24 января 2024 г.
  46. ^ «Улучшение производительности OpenSSL». 26 мая 2015 года . Проверено 28 февраля 2017 г.
  47. ^ «Примечания к выпуску OpenSSL 3.0.0» . Гитхаб . 7 сентября 2021 г.
  48. ^ «Примечания к выпуску Prime95» . Проверено 10 июля 2022 г.
  49. ^ «dav1d: производительность и завершение первого выпуска» . 21 ноября 2018 года . Проверено 22 ноября 2018 г.
  50. ^ «Примечания к выпуску dav1d 0.6.0» . 6 марта 2020 г.
  51. ^ «Примечания к выпуску SVT-AV1 0.7.0» . 26 сентября 2019 г.
  52. ^ "Эйнштейн @ Домашние приложения" .
  53. ^ "Часто задаваемые вопросы, Гелиос" . Гелиос . Проверено 5 июля 2021 г.
  54. ^ «Тензорный поток 1.6». Гитхаб .
  55. ^ Новое в версии 19.0 — EmEditor (текстовый редактор)
  56. ^ «MASSIVE X требует AVX-совместимого процессора» . Родные инструменты . Проверено 29 ноября 2019 г.
  57. ^ «Требования к оборудованию для Microsoft Teams». Майкрософт . Проверено 17 апреля 2020 г.
  58. ^ «Уменьшите фоновый шум на собраниях Teams». Поддержка Майкрософт . Проверено 5 января 2021 г.
  59. ^ Лэнгдейл, Джефф; Лемир, Дэниел (2019). «Разбор гигабайт JSON в секунду». Журнал ВЛДБ . 28 (6): 941–960. arXiv : 1902.08318 . дои : 10.1007/s00778-019-00578-5. S2CID  67856679.
  60. ^ «Примечания к выпуску simdjson 2.1.0» . Гитхаб . 30 июня 2022 г.
  61. Ларабель, Майкл (6 октября 2023 г.). «OpenJDK объединяет x86-simd-sort от Intel для ускорения сортировки данных в 7–15 раз» . Фороникс .
  62. Ларабель, Майкл (7 июля 2022 г.). «Движок Tesseract OCR 5.2 добился успеха с AVX-512F» . Фороникс .
  63. ↑ Аб Лемир, Дэниел (7 сентября 2018 г.). «AVX-512: когда и как использовать эти новые инструкции». Блог Дэниела Лемира .
  64. ^ БиОнРопе. «Инструкции SIMD, понижающие частоту процессора». Переполнение стека .
  65. ^ аб Даунс, Трэвис (19 августа 2020 г.). «Понижение частоты Ice Lake AVX-512». Блог «Производительность имеет значение» .
  66. ^ «x86 — производительность AVX 512 и AVX2 для простых циклов обработки массива» . Переполнение стека .
  67. ^ «Утилита Intel® Extreme Tuning Utility (Intel® XTU) Руководство по разгону: Расширенная настройка» . Интел . Проверено 18 июля 2021 г. См. изображение в связанном разделе, где для коэффициента AVX2 установлено значение 0.

Внешние ссылки