Аббревиатура AVX расшифровывается как Advanced Vector Extensions. Это наборы инструкций для процессоров Intel и AMD, идея создания которых появилась в марте 2008 года. Впервые такой набор был встроен в процессоры линейки Intel Haswell в 2013 году. Поддержка команд в Pentium и Celeron появилась лишь в 2020 году.
Прочитав эту статью, вы более подробно узнаете, что такое инструкции AVX и AVX2 для процессоров, а также — как узнать поддерживает ли процессор AVX.
AVX и AVX2 – что это такое
AVX/AVX2 — это улучшенные версии старых наборов команд SSE. Advanced Vector Extensions расширяют операционные пакеты со 128 до 512 бит, а также добавляют новые инструкции. Например, за один такт процессора без инструкций AVX будет сложена 1 пара чисел, а с ними — 10. Эти наборы расширяют спектр используемых чисел для оптимизации подсчёта данных.
Наличие у процессоров поддержки AVX весьма желательно. Эти инструкции предназначены, прежде всего, для выполнения сложных профессиональных операций. Без поддержки AVX всё-таки можно запускать большинство игр, редактировать фото, смотреть видео, общаться в интернете и др., хотя и не так комфортно.
Как узнать, поддерживает ли процессор AVX
Далее будут показаны несколько простых способов узнать это. Некоторые из методов потребуют установки специального ПО.
1. Таблица сравнения процессоров на сайте Chaynikam.info.
Для того чтобы узнать, поддерживает ли ваш процессор инструкции AVX, можно воспользоваться предлагаемым способом. Перейдите на этот сайт. В правом верхнем углу страницы расположена зелёная кнопка Добавить процессор. Нажмите её.
В открывшемся окне вам будет предложено указать параметры выбора нужного процессора. Все указывать не обязательно.
В результате выполнения поиска будет сформирована таблица с параметрами выбранного из списка процессора. Прокрутите таблицу вниз. В строке Поддержка инструкций и технологий будет показана подробная информация.
2. Утилита CPU-Z.
Один из самых простых и надёжных способов узнать поддерживает ли процессор AVX инструкции, использовать утилиту для просмотра информации о процессоре — CPU-Z. Скачать утилиту можно на официальном сайте. После завершения установки ярлык для запуска утилиты появится на рабочем столе. Запустите её.
В строке Instructions показаны все инструкции и другие технологии, поддерживаемые вашим процессором.
3. Поиск на сайте производителя.
Ещё один способ узнать, есть ли AVX на процессоре, воспользоваться официальным сайтом производителя процессоров. В строке поиска браузера наберите название процессора и выполните поиск. Если у вас процессор Intel, выберите соответствующую страницу в списке и перейдите на неё. На этой странице вам будет предоставлена подробная информация о процессоре.
Если у вас процессор от компании AMD, то лучше всего будет воспользоваться сайтом AMD. Выберите пункт меню Процессоры, далее — пункт Характеристики изделия и затем, выбрав тип (например, Потребительские процессоры), выполните переход на страницу Спецификации процессоров. На этой странице выполните поиск вашего процессора по названию и посмотрите подробную информацию о нём.
Выводы
В этой статье мы довольно подробно рассказали о поддержке процессорами инструкций AVX, AVX2, а также показали несколько способов, позволяющих выяснить наличие такой поддержки конкретно вашим процессором. Надеемся, что дополнительная информация об используемом процессоре будет полезна для вас, а также поможет в выборе процессора в будущем.
Была ли эта статья полезной?
ДаНет
Оцените статью:
(8 оценок, среднее: 5,00 из 5)
Загрузка…
Об авторе
Над статьей работал не только её автор, но и другие люди из команды te4h, администратор (admin), редакторы или другие авторы. Ещё к этому автору могут попадать статьи, авторы которых написали мало статей и для них не было смысла создавать отдельные аккаунты.
Некоторые из высокобюджетных (AAA) игр, выпущенных в наши дни, требуют процессора, совместимого с AVX (Advanced Vector Extensions), для запуска на вашем ПК. Например, Death Stranding, Yakuza 3 Remastered, Age of Empires IV, Dying Light 2 и т. д.…
Если ваш процессор не поддерживает AVX, при попытке запустить игру, для которой требуется AVX, игра не запустится, и вы увидите сообщение об ошибке, подобное приведенному ниже.
«Ваш процессор должен поддерживать инструкции AVX для запуска этой игры».
«Обнаружено неподдерживаемое оборудование. Для запуска этой игры требуется процессор, поддерживающий набор инструкций AVX».
«Фатальная ошибка. Ошибка запуска приложения. Пожалуйста, проверьте системные требования. (AVX)».
«Минимальные требования не выполнены. Предупреждение. Ваша система не соответствует минимальным требованиям. Для получения оптимальной производительности обратитесь к списку поддерживаемого оборудования. Требуются следующие наборы инструкций ЦП: AVX».
Примечание. Игра может вылететь даже без каких-либо сообщений об ошибках.
Перед покупкой игры с требованиями AVX целесообразно проверить, поддерживает ли ее ваш процессор.
Вы можете использовать бесплатное программное обеспечение, чтобы проверить это. Вы можете установить его, выполнив следующие действия. Затем используйте его, чтобы убедиться, что ваш процессор поддерживает AVX.
- Перейдите на https://www.fosshub.com/HWiNFO.html.
- Чтобы загрузить программное обеспечение, нажмите «HWiNFO Installer».
- Затем установите его и запустите HWiNFO64.
- Появится крошечное окно, подобное приведенному выше. Просто нажмите кнопку «Run».
- Когда HWiNFO64 открыт, загляните в раздел ЦП.
- Если AVX зеленый, это означает, что ваш процессор поддерживает его.
Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 15 июля 2021 года; проверки требуют 10 правок.
Advanced Vector Extensions (AVX) — расширение системы команд x86 для микропроцессоров Intel и AMD, предложенное Intel в марте 2008.[1]
AVX предоставляет различные улучшения, новые инструкции и новую схему кодирования машинных кодов.
Улучшения[править | править код]
- Новая схема кодирования инструкций VEX
- Ширина векторных регистров SIMD увеличивается с 128 (XMM) до 256 бит (регистры YMM0 — YMM15). Существующие 128-битные SSE-инструкции будут использовать младшую половину новых YMM-регистров, не изменяя старшую часть. Для работы с YMM-регистрами добавлены новые 256-битные AVX-инструкции. В будущем возможно расширение векторных регистров SIMD до 512 или 1024 бит. Например, процессоры с архитектурой Xeon Phi уже в 2012 году имели векторные регистры (ZMM) шириной в 512 бит[2], и используют для работы с ними SIMD-команды с MVEX- и VEX-префиксами, но при этом они не поддерживают AVX. [источник не указан 2798 дней]
- Неразрушающие операции. Набор AVX-инструкций использует трёхоперандный синтаксис. Например, вместо можно использовать , при этом регистр остаётся неизменённым. В случаях, когда значение используется дальше в вычислениях, это повышает производительность, так как избавляет от необходимости сохранять перед вычислением и восстанавливать после вычисления регистр, содержавший , из другого регистра или памяти.
- Для большинства новых инструкций отсутствуют требования к выравниванию операндов в памяти. Однако рекомендуется следить за выравниванием на размер операнда во избежание значительного снижения производительности.[3]
- Набор инструкций AVX содержит в себе аналоги 128-битных SSE-инструкций для вещественных чисел. При этом, в отличие от оригиналов, сохранение 128-битного результата будет обнулять старшую половину YMM-регистра. 128-битные AVX-инструкции сохраняют прочие преимущества AVX, такие как новая схема кодирования, трехоперандный синтаксис и невыровненный доступ к памяти.
- Intel рекомендует отказаться от старых SSE-инструкций в пользу новых 128-битных AVX-инструкций, даже если достаточно двух операндов.[4].
Новая схема кодирования[править | править код]
Новая схема кодирования инструкций VEX использует VEX-префикс. В настоящий момент существуют два VEX-префикса, длиной 2 и 3 байта. Для 2-байтного VEX-префикса первый байт равен 0xC5, для 3-байтного — 0xC4.
В 64-битном режиме первый байт VEX-префикса уникален. В 32-битном режиме возникает конфликт с инструкциями LES и LDS, который разрешается старшим битом второго байта, он имеет значение только в 64-битном режиме, через неподдерживаемые формы инструкций LES и LDS.[3]
Длина существующих AVX-инструкций, вместе с VEX-префиксом, не превышает 11 байт. В следующих версиях ожидается появление более длинных инструкций.
Новые инструкции[править | править код]
Инструкция | Описание |
---|---|
VBROADCASTSS, VBROADCASTSD, VBROADCASTF128 | Копирует 32-, 64- или 128-битный операнд из памяти во все элементы векторного регистра XMM или YMM. |
VINSERTF128 | Замещает младшую или старшую половину 256-битного регистра YMM значением 128-битного операнда. Другая часть регистра-получателя не изменяется. |
VEXTRACTF128 | Извлекает младшую или старшую половину 256-битного регистра YMM и копирует в 128-битный операнд-назначение. |
VMASKMOVPS, VMASKMOVPD | Условно считывает любое количество элементов из векторного операнда из памяти в регистр-получатель, оставляя остальные элементы несчитанными и обнуляя соответствующие им элементы регистра-получателя. Также может условно записывать любое количество элементов из векторного регистра в векторный операнд в памяти, оставляя остальные элементы операнда памяти неизменёнными. |
VPERMILPS, VPERMILPD | Переставляет 32- или 64-битные элементы вектора согласно операнду-селектору (из памяти или из регистра). |
VPERM2F128 | Переставляет 4 128-битных элемента двух 256-битных регистров в 256-битный операнд-назначение с использованием непосредственной константы (imm) в качестве селектора. |
VZEROALL | Обнуляет все YMM-регистры и помечает их как неиспользуемые. Используется при переключении между 128-битным режимом и 256-битным. |
VZEROUPPER | Обнуляет старшие половины всех регистров YMM. Используется при переключении между 128-битным режимом и 256-битным. |
Также в спецификации AVX описана группа инструкций PCLMUL (Parallel Carry-Less Multiplication, Parallel CLMUL)
- PCLMULLQLQDQ xmmreg, xmmrm [rm: 66 0f 3a 44 /r 00]
- PCLMULHQLQDQ xmmreg, xmmrm [rm: 66 0f 3a 44 /r 01]
- PCLMULLQHQDQ xmmreg, xmmrm [rm: 66 0f 3a 44 /r 02]
- PCLMULHQHQDQ xmmreg, xmmrm [rm: 66 0f 3a 44 /r 03]
- PCLMULQDQ xmmreg, xmmrm, imm [rmi: 66 0f 3a 44 /r ib]
Применение[править | править код]
Подходит для интенсивных вычислений с плавающей точкой в мультимедиа-программах и научных задачах.
Там, где возможна более высокая степень параллелизма, увеличивает производительность с вещественными числами.
Поддержка[править | править код]
- Math Kernel Library[5]
Поддержка в операционных системах[править | править код]
Использование YMM-регистров требует поддержки со стороны операционной системы. Следующие системы поддерживают регистры YMM:
- Linux: с версии ядра 2.6.30,[6] released on June 9, 2009.[7]
- Windows 7: поддержка добавлена в Service Pack 1[8]
- Windows Server 2008 R2: поддержка добавлена в Service Pack 1[8]
Микропроцессоры с AVX[править | править код]
- Intel:
- Процессоры с микроархитектурой Sandy Bridge, 2011.[9]
- Процессоры с микроархитектурой Ivy Bridge, 2012.
- Процессоры с микроархитектурой Haswell, 2013.
- Процессоры с микроархитектурой Broadwell, 2015.
- Процессоры с микроархитектурой Skylake, 2015.
- Процессоры с микроархитектурой Kaby Lake, 2017.
- Процессоры с микроархитектурой Coffee Lake, 2017.
- AMD:
- Процессоры с микроархитектурой Bulldozer, 2011.[10]
- Процессоры с микроархитектурой Piledriver, 2012.
- Процессоры с микроархитектурой Steamroller, 2014.
- Процессоры с микроархитектурой Excavator, 2015.
- Процессоры с микроархитектурой Zen, 2017.
- Процессоры с микроархитектурой Zen 2, 2019.
- Процессоры с микроархитектурой Zen 3, 2020.
Совместимость между реализациями Intel и AMD обсуждается в этой статье.
Микропроцессоры с AVX2[править | править код]
- Intel Haswell[11]
- Intel Broadwell
- Intel Skylake
- Intel Kaby Lake
- Intel Coffee Lake
- Intel Comet Lake
- Intel Rocket Lake
- Intel Alder Lake
- AMD Excavator
- AMD Zen (AMD Ryzen)
- AMD Zen 2 (AMD Ryzen)
- AMD Zen 3 (AMD Ryzen)
AVX-512[править | править код]
AVX-512 расширяет систему команд AVX до векторов длиной 512 бит при помощи кодировки с префиксом EVEX. Расширение AVX-512 вводит 32 векторных регистра (ZMM), каждый по 512 бит, 8 регистров масок, 512-разрядные упакованные форматы для целых и дробных чисел и операции над ними, тонкое управление режимами округления (позволяет переопределить глобальные настройки), операции broadcast (рассылка информации из одного элемента регистра в другие), подавление ошибок в операциях с дробными числами, операции gather/scatter (сборка и рассылка элементов векторного регистра в/из нескольких адресов памяти), быстрые математические операции, компактное кодирование больших смещений. AVX-512 предлагает совместимость с AVX, в том смысле, что программа может использовать инструкции как AVX, так и AVX-512 без снижения производительности. Регистры AVX (YMM0-YMM15) отображаются на младшие части регистров AVX-512 (ZMM0-ZMM15), по аналогии с SSE и AVX регистрами.[12]
Используeтся в Intel Xeon Phi (ранее Intel MIC) Knights Landing (версия AVX3.1), Intel Skylake-X,[12] Intel Ice Lake, Intel Tiger Lake, Intel Rocket Lake. Также поддержка AVX-512 имеется в производительных ядрах Golden Cove[13] процессоров Intel Alder Lake, однако энергоэффективные ядра Gracemont её лишены. По состоянию на декабрь 2021 г. поддержка AVX-512 для потребительских процессоров Alder Lake официально не заявляется.[14]
Будущие расширения[править | править код]
Схема кодирования инструкций VEX легко допускает дальнейшее расширение набора инструкций AVX. В следующей версии, AVX2, добавлены инструкции для работы с целыми числами, FMA3 (увеличил производительность при обработке чисел с плавающей запятой в 2 раза[11]), загрузку распределенного в памяти вектора (gather) и прочее.
Различные планируемые дополнения системы команд x86:
- AES
- CLMUL
- Intel/AMD FMA3
- AMD FMA4
- AMD XOP
- AMD CVT16
В серверных процессорах поколения Broadwell добавлены расширения AVX 3.1, а в серверных процессорах поколения Skylake — AVX 3.2.
Примечания[править | править код]
- ↑ ISA Extensions | Intel® Software. Дата обращения: 24 июня 2016. Архивировано 6 мая 2019 года.
- ↑ Intel® Xeon Phi™ Coprocessor Instruction Set Architecture Reference Manual (недоступная ссылка — история). Архивировано 11 мая 2013 года.
- ↑ 1 2 Introduction to Intel® Advanced Vector Extensions — Intel® Software Network. Дата обращения: 19 июля 2012. Архивировано 16 июня 2012 года.
- ↑ Questions about AVX — Intel® Software Network. Дата обращения: 24 июня 2016. Архивировано 7 августа 2016 года.
- ↑ Intel® AVX optimization in Intel® MKL. Дата обращения: 7 января 2014. Архивировано 7 января 2014 года.
- ↑ x86: add linux kernel support for YMM state (недоступная ссылка — история). Дата обращения: 13 июля 2009. Архивировано 5 апреля 2012 года.
- ↑ Linux 2.6.30 — Linux Kernel Newbies (недоступная ссылка — история). Дата обращения: 13 июля 2009. Архивировано 5 апреля 2012 года.
- ↑ 1 2 Enable Windows 7 Support for Intel AVX (недоступная ссылка — история). Microsoft. Дата обращения: 29 января 2011. Архивировано 5 апреля 2012 года.
- ↑ Intel Offers Peek at Nehalem and Larrabee. ExtremeTech (17 марта 2008). Архивировано 7 июня 2011 года.
- ↑ Striking a balance (недоступная ссылка — история). Dave Christie, AMD Developer blogs (7 мая 2009). Дата обращения: 8 мая 2009. Архивировано 5 апреля 2012 года.
- ↑ 1 2 More details on the future AVX instruction set 2.0 | Tech News Pedia. Дата обращения: 14 ноября 2012. Архивировано из оригинала 31 октября 2012 года.
- ↑ 1 2 James Reinders (23 July 2013), AVX-512 Instructions, Intel, <http://software.intel.com/en-us/blogs/2013/avx-512-instructions>. Проверено 20 августа 2013. Источник. Дата обращения: 18 ноября 2013. Архивировано 31 марта 2015 года.
- ↑ Dr Ian Cutress, Andrei Frumusanu. Intel Architecture Day 2021: Alder Lake, Golden Cove, and Gracemont Detailed. www.anandtech.com. Дата обращения: 23 декабря 2021. Архивировано 4 января 2022 года.
- ↑ Product Specifications (англ.). www.intel.com. Дата обращения: 23 декабря 2021.
Ссылки[править | править код]
- Intel Advanced Vector Extensions Programming Reference (319433-011)(pdf) (англ.)
- Использование Intel AVX: пишем программы завтрашнего дня (рус.)
- Приемы использования масочных регистров в AVX512 коде (рус.)
(nm)
& Type[a]
208 SQFP
208 SQFP
[3]
FSB
Socket 2
Socket 1
168 pin
FSB
Socket 7
FSB
FSB
FSB
FSB
Socket A
FSB
+ 3DNow!+
+ SSE
FSB
FSB
FSB
FSB
FSB
FSB
FSB
FSB
FSB
HT
ccNUMA
+ SSE2
+ PowerNow!
+ AMD64
+ NX Bit
HT
NX Bit
NX Bit,
ccNUMA
NX Bit
HT
NX Bit
+ SSE3
— PowerNow!
+ Cool’n’Quiet
+ AMD-V
HT
NX Bit,
AMD-V
HT
NX Bit (not in CG stepping)
HT
HT
NX Bit
HT
HT
HT
NX Bit,
AMD-V
NX Bit
NX Bit,
AMD-V
HT
NX Bit
NX bit
NX bit
NX bit
NX bit
HT
NX bit,
AMD-V,
ccNUMA
+ SSE4a
+ Enhanced 3DNow!
HT
NX bit,
AMD-V
HT
NX bit,
AMD-V
HT
HT
NX bit,
AMD-V
HT
HT
HT
HT
Socket AM3
DDR3
NX bit,
AMD-V
HT
DDR3
HT
DDR3
HT
DDR3
HT
DDR3
HT
DDR3
NX bit,
AMD-V
HT
DDR3
HT
DDR3
HT
DDR3
NX bit,
AMD-V
HT
Ontario,
Zacate
E-series,
G-series,
Z-series
NX bit,
AMD-V
HT
16 KB data per core
AVX
NX bit,
AMD-V,
IOMMU,
AES,
CLMUL,
XOP,
FMA4,
CVT16/F16C,
ABM,
ECC
+ SSE4.1
+ SSE4.2
+ AVX
+ Turbo Core 2.0
+ IOMMU
+ AES
+ CLMUL
+ FMA4
+ XOP
+ CVT16
+ F16C
+ ABM
+ ECC
HT
up to 2 links
HT
up to 4 links
(8 MB per chiplet)
16 KB data per core
FS1r2
FP2
AVX,
AVX1.1
NX bit,
AMD-V,
IOMMU,
AES,
CLMUL,
XOP,
FMA3,
FMA4,
CVT16/F16C,
ABM,
BMI1,
TBM,
ECC,
EVP.
+ AVX1.1
+ Turbo Core 3.0
+ FMA3
+ BMI1
+ TBM
+ EVP
HT
HT
up to 2 links
HT
up to 4 links
(8 MB per chiplet)
16 KB data per core
32 KB data per core
AVX,
AVX1.1,
AVX2
NX bit,
AMD-V,
IOMMU,
AES,
CLMUL,
XOP,
FMA3,
FMA4,
CVT16/F16C,
ABM,
BMI1,
BMI2,
TBM,
ECC,
EVP.
+ AVX2
+ BMI2
Temash,
Kyoto
32 KB data
per core
Mobile: Socket FT3
AVX
NX bit,
AMD-V,
AES,
CLMUL,
CVT16/F16C,
BMI1
Mullins,
Stepped Eagle,
Crowned Eagle,
Carrizo-L,
LX-Family,
GloFo 14LP
PCIe
32 KB data
per core
per core
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA
+ SHA
— FMA4
— TBM
— XOP
— 3DNow
— 3DNow!+
— Enhanced 3DNow!
(2550–3600 all)
(2700–3800 boost)
Ryzen 3 (2200U, 3200U, 3250U)
Ryzen 7 (2700U, Pro 2700U, 2800H)
(2150–3100 all)
(2900–3100 boost)
(8 MB per CCX)
(2450–3100 all)
(2900–3100 boost)
(8 MB per CCX)
GloFo 12LP
PCIe
32 KB data
per core
per core
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA
Ryzen 7 (2700, 2700E, 2700X, Pro 2700X)
Ryzen 7 (3700C, 3700U, Pro 3700U, 3750H, 3780U)
Athlon Silver PRO 3125GE
Athlon Gold PRO (3150G, 3150GE)
TSMC N7
PCIe
32 KB data
per core
per core
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA
Ryzen 7 (Pro 3700, 3700X, 3800X, 3800XT)
Socket FP6
Desktop:
Socket AM4
Dual-channel DDR4 or LPDDR4
Desktop:
Dual-channel DDR4
Ryzen 5 (4600G, 4600GE, Pro 4650G, Pro 4650GE)
Ryzen 7 (4700G, 4700GE, Pro 4750G, Pro 4750GE),
Ryzen 9 (4900H, 4900HS)
(16 MB per CCX)
Ryzen 7 (5800X),
Ryzen 9 (5900X, 5950X)
PCIe
32 KB data
per core
per core
(32 MB per CCD/CCX)
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA
Ryzen 7 5700X
Socket FP6
Desktop:
Socket AM4
Dual-channel DDR4 or LPDDR4
Desktop:
Dual-channel DDR4
Ryzen 9 (5900HS, 5900HX, 5980HS, 5980HX)
(16–32 MB per CCD/CCX)
(32 MB per CCD/CCX)
TSMC N6
Ryzen 7 (6800U, 6800H, 6800HS)
Ryzen 9 (6900HS, 6900HX, 6980HS, 6980HX)
32 KB data
per core
per core
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA
Ryzen 7 PRO (6850U, 6850H, 6850HS)
Ryzen 9 PRO (6950H, 6950HS)
TSMC N5
Ryzen 7 (7700X)
Ryzen 9 (7900X, 7950X)
PCIe
32 KB data
per core
per core
(32 MB per CCD/CCX)
CLMUL, FMA3,
CVT16/F16C, ABM,
BMI1, BMI2,
SHA
Ryzen 7 7700
Ryzen 9 7900
Ryzen 9 7950X3D
(32 MB per CCD/CCX)
PCIe
(32 MB per CCD/CCX)
& Type[a]