Открыть сервис

ARM SVE

ARM SVE (Scalable Vector Extension, масштабируемое векторное расширение) — это набор инструкций для архитектуры ARM, предназначенный для ускорения вычислений с векторами переменной длины. SVE является расширением набора команд ARMv8-A и ориентирован на высокопроизводительные вычисления (HPC), машинное обучение, обработку сигналов и другие задачи, требующие эффективной параллельной обработки данных. В отличие от традиционных SIMD-расширений (например, NEON), SVE поддерживает векторы переменной длины от 128 до 2048 бит с шагом 128 бит, что позволяет разработчикам писать код, автоматически масштабируемый под разные реализации процессоров.

История и развитие

Разработка SVE была начата компанией ARM в середине 2010-х годов как ответ на растущие потребности суперкомпьютерных систем и облачных вычислений. Первая спецификация была опубликована в 2016 году вместе с архитектурой ARMv8.2-A. Основной целью было создание единого векторного интерфейса, который бы работал на процессорах с разной шириной векторных регистров без необходимости перекомпиляции кода.

Первым коммерческим процессором с поддержкой SVE стал Fujitsu A64FX, выпущенный в 2019 году. Этот чип, используемый в суперкомпьютере Fugaku (Япония), имеет векторные регистры шириной 512 бит. Fugaku занимал первое место в рейтинге TOP500 с 2020 по 2022 год, что подтвердило эффективность SVE в реальных HPC-задачах.

В 2021 году вышло второе поколение расширения — SVE2, включённое в архитектуру ARMv9. SVE2 расширило возможности SVE, добавив поддержку более сложных операций, таких как обработка строк и криптография, что сделало его пригодным не только для HPC, но и для мобильных устройств, автомобильных систем и IoT.

Архитектура и принципы работы

Векторы переменной длины

Ключевая особенность SVE — векторы переменной длины. Размер векторного регистра (VL) определяется аппаратно и может варьироваться от 128 до 2048 бит с шагом 128 бит. Программный код, написанный с использованием SVE, автоматически адаптируется к любому VL, что обеспечивает переносимость между разными процессорами. Например, один и тот же бинарный файл может работать на мобильном чипе с 128-битными векторами и на серверном процессоре с 2048-битными векторами без изменений.

Набор регистров

SVE добавляет 32 векторных регистра (Z0–Z31) шириной VL бит каждый. Также имеются 16 регистров предикатов (P0–P15), которые управляют маскированием операций — позволяют выполнять вычисления только над определёнными элементами вектора. Регистр предикатов имеет ширину VL/8 бит (по одному биту на элемент вектора). Кроме того, SVE включает один регистр управления (FFR — First Fault Register), используемый для обработки исключений при доступе к памяти.

Инструкции

SVE поддерживает широкий спектр операций, включая:

  • Арифметические: сложение, умножение, FMA (fused multiply-add), деление, квадратный корень.
  • Логические: AND, OR, XOR, сдвиги.
  • Загрузка/сохранение: с возможностью маскирования, развёртки (gather/scatter) и обработки невыровненных адресов.
  • Сравнение и предикация: генерация масок на основе сравнения элементов.
  • Свёртка и редукция: суммирование, поиск максимума/минимума.
  • Специализированные: для работы с комплексными числами, полиномами и криптографией (в SVE2).

SVE2: расширение возможностей

SVE2, впервые реализованное в архитектуре ARMv9, расширяет функциональность SVE для более широкого круга приложений. Основные нововведения:

  • Поддержка операций с фиксированной точкой (например, для DSP).
  • Расширенные инструкции для обработки строк (поиск подстрок, сравнение).
  • Криптографические инструкции (AES, SHA-3, SM3/SM4).
  • Улучшенная поддержка целочисленных типов (8, 16, 32, 64 бит).
  • Инструкции для работы с разреженными данными (sparse gather/scatter).

SVE2 обратно совместимо с SVE: код, написанный для SVE, работает на процессорах с SVE2 без изменений.

Применение

Высокопроизводительные вычисления (HPC)

SVE активно используется в суперкомпьютерах. Процессор Fujitsu A64FX с 512-битными векторами SVE обеспечил Fugaku производительность более 442 петафлопс (LINPACK). Другие системы, такие как Isambard (Великобритания) и проекты на базе AWS Graviton3, также используют SVE для научных расчётов, моделирования климата и биоинформатики.

Машинное обучение

SVE ускоряет матричные операции, свёртки и активации нейронных сетей. Инструкции FMA и редукции позволяют эффективно реализовывать обучение и инференс моделей. В процессорах AWS Graviton3 (2022) SVE используется для ускорения рекомендательных систем и NLP-моделей.

Обработка сигналов и мультимедиа

SVE2 применяется в цифровой обработке сигналов (DSP), аудио- и видеокодеках, радиолокации. Векторные операции с маскированием позволяют эффективно обрабатывать нерегулярные данные, например, в сжатии видео (HEVC, AV1).

Мобильные устройства и IoT

Хотя SVE изначально ориентирован на HPC, SVE2 внедряется в мобильные процессоры, такие как ARM Cortex-X4 и Cortex-A720. Это позволяет улучшить производительность приложений машинного обучения и обработки изображений на смартфонах и планшетах.

Программная поддержка

Для использования SVE необходима поддержка на уровне компилятора и операционной системы. Основные инструменты:

  • GCC: поддержка SVE с версии 7 (2017), SVE2 — с версии 10 (2020). Флаги -march=armv8.2-a+sve и -march=armv9-a+sve2.
  • LLVM/Clang: поддержка с версии 6.0 (2018).
  • ACLE (ARM C Language Extensions): предоставляет встроенные функции (intrinsics) для SVE, например, svadd_f32, svld1_f32.
  • Операционные системы: Linux (ядро 4.15+), FreeBSD, Windows (через WSL2). Для работы требуется поддержка контекстного переключения векторных регистров.

Преимущества и ограничения

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

  • Переносимость: один код работает на процессорах с разной шириной векторов.
  • Эффективность: векторные операции снижают накладные расходы на циклы и ветвления.
  • Масштабируемость: автоматическое использование более широких векторов на новых процессорах.
  • Гибкость: маскирование и обработка нерегулярных данных.

Ограничения

  • Сложность программирования: требуется понимание векторных операций и предикации.
  • Зависимость от аппаратной реализации: на процессорах с узкими векторами (128 бит) прирост производительности может быть незначительным.
  • Отсутствие поддержки в старых процессорах: SVE требует ARMv8.2-A или новее.

Сравнение с другими SIMD-расширениями

ХарактеристикаARM SVEARM NEONIntel AVX-512Intel SSE
Ширина векторов128–2048 бит (переменная)128 бит (фиксированная)512 бит (фиксированная)128 бит
МаскированиеДа (предикаты)НетДаНет
Переносимость кодаВысокаяНизкаяНизкаяНизкая
Область примененияHPC, ML, DSPМультимедиа, мобильныеHPC, серверыМультимедиа
Год появления2016200520131999

Перспективы развития

SVE продолжает развиваться. В архитектуре ARMv9.2 (2023) добавлены инструкции для ускорения работы с разреженными матрицами и улучшенной поддержки FP16/BF16. Ожидается, что будущие версии SVE2 включат поддержку векторных операций с произвольной точностью (например, INT4) для машинного обучения. Крупные производители, такие как NVIDIA (Grace CPU) и Ampere Computing, уже интегрируют SVE в свои процессоры для серверов и суперкомпьютеров.

Источники

  1. ARM Architecture Reference Manual ARMv8-A (ARM DDI 0487).
  2. ARM Architecture Reference Manual ARMv9-A (ARM DDI 0587).
  3. The Scalable Vector Extension (SVE) for ARMv8-A (ARM White Paper, 2016).
  4. SVE2: A Second Generation of Scalable Vectors (ARM, 2021).
  5. Fujitsu A64FX Microarchitecture (Fujitsu Technical Review, 2019).
  6. LINPACK Benchmark Results for Fugaku (TOP500, 2020–2022).
  7. ACLE: ARM C Language Extensions (ARM, 2023).
Загружаем BFOmetr…