AVX-512


AVX-512 — это 512-битное расширение 256-битных инструкций SIMD Advanced Vector Extensions для архитектуры набора команд x86 (ISA), предложенное Intel в июле 2013 года и впервые реализованное в Intel Xeon Phi x200 (Knights Landing) 2016 года [1 ] ] , а затем позже в ряде процессоров AMD и других процессоров Intel ( см. список ниже ). AVX-512 состоит из нескольких расширений, которые можно реализовать независимо. [2] Эта политика является отходом от исторического требования реализации всего блока команд. Для всех реализаций AVX-512 требуется только основное расширение AVX-512F (AVX-512 Foundation).

Помимо расширения большинства 256-битных инструкций, расширения вводят различные новые операции, такие как новые преобразования данных, операции разброса и перестановки. [2] Количество регистров AVX увеличено с 16 до 32, и добавлены восемь новых «регистров маски», которые позволяют выбирать переменные и смешивать результаты инструкций. В ЦП с расширением длины вектора (VL), включенном в большинство процессоров с поддержкой AVX-512 (см. § ЦП с AVX-512 ), эти инструкции также могут использоваться с размерами векторов 128 и 256 бит. AVX-512 — не первый 512-битный набор инструкций SIMD, который Intel внедрила в процессоры: более ранние 512-битные инструкции SIMD, используемые в сопроцессорах Xeon Phi первого поколения и созданные на основе проекта Intel Larrabee, аналогичны, но не совместимы на уровне двоичного кода и только частично совместим с исходным кодом. [1]

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

Префикс VEX , используемый AVX и AVX2, хотя и был гибким, не оставлял достаточно места для функций, которые Intel хотела добавить в AVX-512. Это побудило их определить новый префикс под названием EVEX .

Расширенные регистры, бит ширины SIMD и регистры opmask AVX-512 являются обязательными и требуют поддержки со стороны ОС.

Инструкции AVX-512 предназначены для смешивания с 128/256-битными инструкциями AVX/AVX2 без снижения производительности. Однако расширения AVX-512VL позволяют использовать инструкции AVX-512 в 128/256-битных регистрах XMM/YMM, поэтому большинство инструкций SSE и AVX/AVX2 имеют новые версии AVX-512, закодированные с префиксом EVEX, которые обеспечивают доступ к новым функциям . такие как opmask и дополнительные регистры. В отличие от AVX-256, новые инструкции не имеют новой мнемоники, но разделяют пространство имен с AVX, что делает различие между версиями инструкций, закодированными VEX и EVEX, в исходном коде неоднозначным. Поскольку AVX-512F работает только с 32- и 64-битными значениями, инструкции SSE и AVX/AVX2, которые работают с байтами или словами, доступны только с расширением AVX-512BW (поддержка байтов и слов). [6]