📌 AVX

Advanced Vector Extensions AVX — расширение SIMD-инструкций для архитектуры x86_64, введённое компанией Intel в 2011 году. Расширяет возможности SSE за счёт 256-битных регистров YMM и новых инструкций для параллельной обработки данных.

🧠 Как работает

AVX расширяет количество и ширину SIMD-регистров:

  • 16 × YMM регистров (256 бит) в 64-битных системах
  • Каждое YMM содержит нижние 128 бит из XMM + верхние 128 бит
  • AVX2 добавляет поддержку целочисленных операций (int8/16/32/64)
  • AVX-512 — следующая ступень: ZMM регистры (512 бит), маскирование, расширенная арифметика

Инструкции AVX используют 3-операндную форму: C = A + B
Примеры: vmulps, vaddpd, vbroadcastss, vperm2f128

⚙️ Где применяется

ОбластьПримеры
High-performance computingМатрицы, векторизация, BLAS, линалг
Machine LearningБыстрое умножение и свёртка тензоров
CryptographyМногоблочная обработка потоков данных
MultimediaКодеки, фильтры, преобразования
Scientific computingФизические симуляции, численные методы

💻 Пример (на AVX)

#include <immintrin.h>
 
__m256 a = _mm256_set1_ps(3.0f);
__m256 b = _mm256_set_ps(8,7,6,5,4,3,2,1);
__m256 result = _mm256_add_ps(a, b); // 8 float-значений одновременно

📐 Сравнение регистров

РасширениеРегистрРазмерТипы данных
SSEXMM128 бfloat, double, int32
AVXYMM256 бfloat, double
AVX-512ZMM512 бfloat, double, int

🧬 Уровни AVX

ВерсияОсобенности
AVX256-бит, только float/double, 3 операнда
AVX2Добавлены int8/16/32/64, FMA, permute
AVX-512Маскирование, ZMM, расширенная логика

✅ Преимущества

  • В 2× шире, чем SSE, выше пропускная способность

  • Эффективная векторизация без циклов

  • Расширяемость до AVX-512 с масками и ISA-расширениями

❌ Недостатки

  • Повышенное энергопотребление и нагрев CPU

  • Не поддерживается на всех процессорах (особенно AVX-512)

  • Требует выравнивания данных и генерации SIMD-кода