1. [Вики](https://feex.it/wiki/)
2. [Оборудование](https://feex.it/wiki/hardware/)
3. [Системы и архитектура](https://feex.it/wiki/hardware/system/)
4. AVX

# AVX

Справочник по архитектуре: Feex

AVX (Advanced Vector Extensions) добавляет векторную модель программирования с регистрами YMM и инструкциями с кодированием VEX, включая 256-битные операции с плавающей запятой. Требуются как аппаратная поддержка процессором, так и управление состоянием со стороны операционной системы.

## Что необходимо знать

AVX (Advanced Vector Extensions) добавляет векторную модель программирования с регистрами YMM и инструкциями с кодированием VEX, включая 256-битные операции с плавающей запятой. Требуются как аппаратная поддержка процессором, так и управление состоянием со стороны операционной системы.

## Как это работает

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

## Области применения

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

## Как проверить поддержку и активацию

Проверьте бит 28 (AVX), бит 26 (XSAVE) и бит 27 (OSXSAVE) в CPUID.01H:ECX. Только после подтверждения OSXSAVE программа может выполнить инструкцию XGETBV с ECX=0 и проверить, что биты 1 и 2 в регистре XCR0 разрешают состояние XMM и YMM. Используйте поддерживаемый диспетчер среды выполнения вместо пробного выполнения инструкций AVX для проверки поддержки.

Программа должна содержать соответствующую реализацию и выбирать ее во время выполнения. Аппаратный опрос, состояние регистров под управлением ОС и базовый уровень набора инструкций скомпилированного бинарного файла проверяются раздельно. Виртуальная машина может намеренно скрывать часть функций хоста, а контейнер не добавляет процессору инструкций, отсутствующих на хосте.

## Чего не гарантирует данная функция

Поддержка AVX сама по себе не означает наличия AVX2, FMA, F16C, AVX-VNNI или AVX-512. Разрядность вектора не говорит о том, сколько тактов займет выполнение инструкции. Виртуальная машина может предоставлять меньший набор инструкций, чем физический хост.

## Совместимость и производительность на практике

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

## Практический чек-лист для проверки

1. Зафиксируйте точную модель процессора или платформы, а также задействованные версии приложения, ОС и среды выполнения. Сохраните точную формулировку возникшей ошибки или требования.
2. Сверьтесь со справочными материалами производителя для этой точной модели, затем проверьте действующую поддержку и состояние активации в окружении, где выполняется программа.
3. Сопоставьте каждое требование выбранного бинарного файла или бэкенда. Похожего названия функции, псевдонима или общего маркетингового обозначения технологии недостаточно.
4. Убедитесь, что приложение выбрало предполагаемую реализацию. Используйте его документированные средства диагностики и поддерживаемый резервный код при несоблюдении требований.
5. Вносите по одному поддерживаемому изменению за раз и повторяйте ту же рабочую нагрузку. Сохраняйте исходную конфигурацию и возможность отката.

## Если функция указана в списке, но ПО не может ее использовать

Начните с точного сбойного компонента. База данных оборудования описывает зафиксированные возможности; операционная система или гипервизор могут предоставлять иное фактическое окружение. Ошибка недопустимой инструкции также требует анализа конкретной сбойной команды и сборки бинарного файла, так как повреждение данных или сторонняя неподдерживаемая инструкция могут вызывать аналогичный симптом.

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

## Связанные функции и полезные различия

[AVX2](https://feex.it/wiki/l/ru/hardware/system/avx2/) · [AVX-512](https://feex.it/wiki/l/ru/hardware/system/avx-512/) · [FMA и FMA3](https://feex.it/wiki/l/ru/hardware/system/fma/) · [XSAVE](https://feex.it/wiki/l/ru/hardware/system/xsave/)

## Источники и границы применимости пояснения

[Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html) · [Ядро Linux: использование функций XSTATE в пространстве пользователя](https://docs.kernel.org/arch/x86/xstate.html)

Эти материалы определяют архитектурное поведение и требования к программному обеспечению. Они не подтверждают независимо каждое значение параметров на странице конкретной модели оборудования. Для проверки поддержки моделью используйте данные производителя на этой странице и проверяйте действующую конфигурацию системы. Данная статья не содержит результатов тестов производительности, сертификатов или дат независимых обзоров.

## Связанное

Эти объекты связаны с данной статьей. Тип указан у каждой ссылки.

[AVX2: Справочник по архитектуре](https://feex.it/wiki/l/ru/hardware/system/avx2/)[AVX-512: Справочник по архитектуре](https://feex.it/wiki/l/ru/hardware/system/avx-512/)[FMA и FMA3: Справочник по архитектуре](https://feex.it/wiki/l/ru/hardware/system/fma/)[XSAVE: Справочник по архитектуре](https://feex.it/wiki/l/ru/hardware/system/xsave/)

## Источники и проверка

Редакционная принадлежность: Feex. Дата независимой проверки не зарегистрирована. [Как мы проводим исследования](https://feex.it/wiki/research/).

- [Руководство разработчика программного обеспечения для архитектур Intel 64 и IA-32 ](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html)· Тома 1 и 2 описывают указанные семейства инструкций и CPUID; том 3 описывает управление состоянием, страничную адресацию, VMX и средства защиты. Архитектурная документация не определяет факт поддержки конкретной моделью.
- [Ядро Linux: использование функций XSTATE в пространстве пользователя ](https://docs.kernel.org/arch/x86/xstate.html)· Включение векторного состояния операционной системой, динамическое подключение состояния плиток, требования к стеку сигналов и процедура запроса прав AMX. Поведение, специфичное для Linux, не гарантируется в других ОС.

## Была ли эта статья полезна?

Достаточно ответа "да" или "нет". При желании выберите причину или оставьте короткую заметку.

Краткие факты

Краткая характеристика этой страницы. Характеристики, источники и полная информация остаются в статье.

---

Source: [Canonical Feex Wiki page](https://feex.it/wiki/l/ru/hardware/system/avx/)

[Developer guide](https://feex.it/wiki/developers/) | [API policy](https://feex.it/developers/api-policy/) | [Agent guidance](https://feex.it/wiki/llms.txt)
