stringtranslate.com

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

Расширения Advanced Vector Extensions ( 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 New Instructions ) расширяет большинство целочисленных команд до 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

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

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

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

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

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

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

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

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

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

AVX-512

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

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

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

Только расширение ядра 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

[28]

^Примечание 1  : Intel официально не поддерживает семейство инструкций AVX-512 на микропроцессорах Alder Lake . В начале 2022 года Intel начала отключать в кремнии (сплавлять) AVX-512 в микропроцессорах Alder Lake, чтобы помешать клиентам включать AVX-512. [29] В старых процессорах семейства Alder Lake с некоторыми устаревшими комбинациями BIOS и ревизий микрокода можно было выполнять инструкции семейства AVX-512 при отключении всех ядер эффективности, которые не содержат кремний для AVX-512. [30] [31] [32]

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

Ассемблеры, поддерживающие AVX-512

AVX-VNNI, 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

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

Первая и «ранняя» версия 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. [41]

AVX10.1/512 будет доступен в Intel Granite Rapids [41] и AVX10.2/512 в Diamond Rapids. [42]

АПХ

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

Приложения

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

Понижение частоты

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

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

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

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

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

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

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

Ссылки

  1. ^ Кантер, Дэвид (25 сентября 2010 г.). «Микроархитектура Sandy Bridge от Intel». www.realworldtech.com . Получено 17 февраля 2018 г. .
  2. ^ Hruska, Joel (24 октября 2011 г.). «Анализ Bulldozer: почему чип AMD так разочаровывает — Страница 4 из 5 — ExtremeTech». ExtremeTech . Получено 17 февраля 2018 г. .
  3. ^ abcde Джеймс Рейндерс (23 июля 2013 г.), Инструкции AVX-512, 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). Корпорация Intel. стр. 349. Получено 23 августа 2014 г. Аргументы памяти для большинства инструкций с префиксом VEX работают нормально, не вызывая #GP(0) при любом выравнивании байтовой гранулярности (в отличие от устаревших инструкций SSE).
  6. ^ "Параметры i386 и x86-64 - Использование коллекции компиляторов GNU (GCC)" . Получено 9 февраля 2014 г. .
  7. ^ "Микроархитектура процессоров Intel, AMD и VIA: руководство по оптимизации для программистов ассемблера и производителей компиляторов" (PDF) . Получено 17 октября 2016 г.
  8. ^ "Шахматное программирование AVX2". Архивировано из оригинала 10 июля 2017 г. Получено 17 октября 2016 г.
  9. ^ "Intel предлагает взглянуть на Nehalem и Larrabee". ExtremeTech. 17 марта 2008 г.
  10. ^ ab "Характеристики продукта процессора Intel® Celeron® 6305 (кэш 4 МБ, 1,80 ГГц, с IPU)". ark.intel.com . Получено 10 ноября 2020 г. .
  11. ^ Батлер, Майкл; Барнс, Лесли; Дас Сарма, Дебжит; Гелинас, Боб (март–апрель 2011 г.). «Bulldozer: An Approach to Multithreaded Compute Performance» (PDF) . IEEE Micro . 31 (2): 6–15. doi :10.1109/MM.2011.23. S2CID  28236214. Архивировано из оригинала (PDF) 19 мая 2024 г.
  12. ^ "Что нового - RAD Studio". docwiki.embarcadero.com . Получено 17 сентября 2021 г. .
  13. ^ "GAS Changes". sourceware.org . Получено 3 мая 2024 г. .
  14. ^ ab "NASM - The 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-RELEASE" . Получено 20 мая 2013 г. .
  18. ^ x86: добавить поддержку ядра Linux для состояния YMM , получено 13 июля 2009 г.
  19. Linux 2.6.30 - Linux Kernel Newbies , получено 13 июля 2009 г.
  20. Twitter , получено 23 июня 2010 г.
  21. ^ «Разработчики добиваются прогресса в запуске macOS Ventura на неподдерживаемых компьютерах Mac десятилетней давности». 23 августа 2022 г.
  22. ^ Добавить поддержку сохранения/восстановления состояния FPU с помощью XSAVE/XRSTOR. , получено 25 марта 2015 г.
  23. ^ Поддержка операций с плавающей точкой для 64-битных драйверов , получено 6 декабря 2009 г.
  24. ^ Haswell New Instruction Descriptions Now Available, Software.intel.com , получено 17 января 2012 г.
  25. ^ abc James Reinders (17 июля 2014 г.). "Дополнительные инструкции AVX-512". Intel . Получено 3 августа 2014 г. .
  26. ^ ab "Справочник по программированию расширений набора инструкций архитектуры Intel" (PDF) . Intel . Получено 29 января 2014 г. .
  27. ^ abcdefg "Справочник по программированию расширений набора инструкций архитектуры Intel® и будущих функций". Intel . Получено 16 октября 2017 г. .
  28. ^ "Intel® Software Development Emulator | Intel® Software". software.intel.com . Получено 11 июня 2016 г. .
  29. ^ Alcorn, Paul (2 марта 2022 г.). «Intel Nukes Alder Lake's AVX-512 Support, Now Fuses It Off in Silicon». Tom's Hardware . Получено 7 марта 2022 г.
  30. ^ Кютресс, Ян; Фрумусану, Андрей (19 августа 2021 г.). «День архитектуры Intel 2021: подробное описание Олдер-Лейк, Голден-Коув и Грейсмонта». AnandTech . Получено 25 августа 2021 г. .
  31. ^ Alcorn, Paul (19 августа 2021 г.). «День архитектуры Intel 2021: чипы Alder Lake, ядра Golden Cove и Gracemont». Tom's Hardware . Получено 21 августа 2021 г.
  32. ^ Кютресс, Ян; Фрумусану, Андрей. «Обзор Intel 12th Gen Core i9-12900K: гибридная производительность приносит гибридную сложность». www.anandtech.com . Получено 5 ноября 2021 г.
  33. ^ "LLVM 3.9 Release Notes — LLVM 3.9 documentation". releases.llvm.org . Получено 3 апреля 2017 г. .
  34. ^ "GCC 4.9 Release Series — Changes, New Features, and Fixes – GNU Project - Free Software Foundation (FSF)". gcc.gnu.org . Получено 3 апреля 2017 г. .
  35. ^ "Intel® Parallel Studio XE 2015 Composer Edition C++ Release Notes | Intel® Software". software.intel.com . Получено 3 апреля 2017 г. .
  36. ^ «Microsoft Visual Studio 2017 поддерживает Intel® AVX-512». 11 июля 2017 г.
  37. ^ «Поддержка компилятора AMD Zen 5 опубликована для GCC — подтверждены новые функции AVX и многое другое». www.phoronix.com . Получено 10 февраля 2024 г. .
  38. ^ Боншор, Гэвин (25 июля 2023 г.). «Intel представляет наборы инструкций AVX10 и APX: унификация AVX-512 для гибридных архитектур». AnandTech . Получено 21 августа 2024 г.
  39. ^ Манн, Тобиас (15 августа 2023 г.). «AVX10 от Intel обещает преимущества AVX-512 без проблем». www.theregister.com . Получено 20 августа 2023 г. .
  40. ^ "Конвергентная векторная ISA: Технический документ Intel® Advanced Vector Extensions 10". Intel .
  41. ^ abc "Спецификация архитектуры Intel® Advanced Vector Extensions 10 (Intel® AVX10)". Intel .
  42. ^ Ларабель, Майкл (23 октября 2024 г.). «Intel готовит компилятор GCC для новых функций AMX и ISA в преддверии Diamond Rapids». Phoronix . Получено 23 октября 2024 г. .
  43. ^ «Спецификация архитектуры Intel® Advanced Performance Extensions (Intel® APX)». Intel.
  44. ^ Робинсон, Дэн (26 июля 2023 г.). «Intel раскрывает инструкции x86 и vector для будущих чипов». www.theregister.com . Получено 20 августа 2023 г. .
  45. ^ "Linux RAID". LWN. 17 февраля 2013 г. Архивировано из оригинала 15 апреля 2013 г.
  46. ^ «Сравнение реализаций криптографической библиотеки BSAFE». 25 июля 2023 г.
  47. ^ "Улучшение производительности OpenSSL". 26 мая 2015 г. Получено 28 февраля 2017 г.
  48. ^ "Заметки о выпуске OpenSSL 3.0.0". GitHub . 7 сентября 2021 г.
  49. ^ Ярош, Милан; Стракош, Петр; Ржиха, Любомир (28 мая 2022 г.). «Рендеринг в Blender с использованием векторизации AVX-512» (PDF) . Группа пользователей Intel eXtreme Performance . Технический университет Остравы . Проверено 28 октября 2022 г.
  50. ^ "MASSIVE X требует процессор, совместимый с AVX". Native Instruments . Получено 29 ноября 2019 г. .
  51. ^ "dav1d: производительность и завершение первого выпуска". 21 ноября 2018 г. Получено 22 ноября 2018 г.
  52. ^ "Заметки о выпуске dav1d 0.6.0". 6 марта 2020 г.
  53. ^ "Заметки о выпуске SVT-AV1 0.7.0". 26 сентября 2019 г.
  54. ^ "Системные требования ArcGIS Data Store 11.2". ArcGIS Enterprise . Получено 24 января 2024 г. .
  55. ^ "Примечания к выпуску Prime95" . Получено 10 июля 2022 г. .
  56. ^ «Приложения Einstein@Home».
  57. ^ "FAQ, Helios". Helios . Получено 5 июля 2021 г. .
  58. ^ "Tensorflow 1.6". GitHub .
  59. ^ Новое в версии 19.0 – EmEditor (текстовый редактор)
  60. ^ "Требования к оборудованию для Microsoft Teams". Microsoft . Получено 17 апреля 2020 г. .
  61. ^ "Уменьшение фонового шума на собраниях Teams". Поддержка Microsoft . Получено 5 января 2021 г.
  62. ^ Лэнгдейл, Джефф; Лемир, Дэниел (2019). «Анализ гигабайт JSON в секунду». Журнал VLDB . 28 (6): 941–960. arXiv : 1902.08318 . doi : 10.1007/s00778-019-00578-5. S2CID  67856679.
  63. ^ "simdjson 2.1.0 release notes". GitHub . 30 июня 2022 г.
  64. ^ Ларабель, Майкл (6 октября 2023 г.). «OpenJDK объединяет x86-simd-sort от Intel для ускорения сортировки данных в 7–15 раз». Phoronix .
  65. ^ Ларабель, Майкл (7 июля 2022 г.). «Tesseract OCR 5.2 Engine находит успех с AVX-512F». Phoronix .
  66. ^ ab Lemire, Daniel (7 сентября 2018 г.). "AVX-512: когда и как использовать эти новые инструкции". Блог Daniel Lemire .
  67. ^ BeeOnRope. "Инструкции SIMD снижают частоту процессора". Stack Overflow .
  68. ^ ab Downs, Travis (19 августа 2020 г.). "Понижение тактовой частоты Ice Lake AVX-512". Блог Performance Matters .
  69. ^ "x86 - производительность AVX 512 против AVX2 для простых циклов обработки массивов". Stack Overflow .
  70. ^ "Intel® Extreme Tuning Utility (Intel® XTU) Руководство по разгону: Расширенная настройка". Intel . Получено 18 июля 2021 г. См . изображение в связанном разделе, где коэффициент AVX2 установлен на 0.

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