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

Расширение V RISC-V

Расширение V (RISC-V) — это набор инструкций для векторных вычислений, являющийся частью открытой архитектуры набора команд (ISA) RISC-V. Расширение V определяет стандартный способ выполнения операций над векторами — одномерными массивами данных, что позволяет значительно ускорить обработку больших объёмов однотипной информации, характерной для задач научных расчётов, искусственного интеллекта, обработки сигналов и мультимедиа. В отличие от традиционных SIMD-расширений (например, SSE или AVX в архитектуре x86), расширение V RISC-V предлагает более гибкую и масштабируемую модель, не привязанную к фиксированной длине вектора, что упрощает реализацию на различных аппаратных платформах — от встраиваемых систем до суперкомпьютеров.

История и предпосылки создания

Разработка расширения V началась в рамках проекта RISC-V, стартовавшего в 2010 году в Калифорнийском университете в Беркли. Первоначально векторные вычисления не входили в базовую спецификацию, однако с ростом потребностей в высокопроизводительных вычислениях (HPC) и машинном обучении сообщество осознало необходимость стандартизированного подхода. В 2015 году была опубликована первая черновая версия расширения, а в 2021 году — стабильная спецификация версии 1.0, утверждённая RISC-V International. Ключевым отличием от аналогов стало решение отказаться от фиксированной длины векторов в пользу конфигурируемой, что позволило процессорам с разным уровнем производительности использовать один и тот же набор инструкций.

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

Векторные регистры

Расширение V вводит 32 векторных регистра общего назначения (v0–v31), каждый из которых может хранить вектор данных. Размер каждого регистра (VLEN) не фиксирован спецификацией и может варьироваться от 128 до 65536 бит в зависимости от реализации. Это позволяет разработчикам аппаратуры выбирать оптимальную длину под конкретные задачи и техпроцесс. Для работы с регистрами используется специальный векторный контекст, который сохраняется и восстанавливается при переключении задач.

Векторная длина и маскирование

Одной из ключевых особенностей является поддержка переменной длины вектора (VL). Программист может задать количество элементов, обрабатываемых за одну инструкцию, с помощью специального регистра vsetvl. Это позволяет эффективно обрабатывать массивы произвольного размера, не требуя дополнительных циклов для остатка. Кроме того, расширение V поддерживает маскирование — возможность выполнять операции только над выбранными элементами вектора с помощью масок, хранящихся в регистрах v0–v7. Это особенно полезно для условных вычислений и обработки разреженных данных.

Типы данных

Расширение V поддерживает работу с различными типами данных, включая:

  • Целые числа: 8-, 16-, 32-, 64-битные со знаком и без знака.
  • Числа с плавающей запятой: 16-битные (половинной точности, FP16), 32-битные (одинарной точности, FP32), 64-битные (двойной точности, FP64), а также 8-битные (bfloat16) для задач машинного обучения.
  • Логические значения (маски).

Набор инструкций

Расширение V включает несколько категорий инструкций:

  • Арифметические: сложение, вычитание, умножение, деление, операции с плавающей запятой.
  • Логические: AND, OR, XOR, сдвиги.
  • Сравнения: равенство, больше/меньше, с учётом маскирования.
  • Загрузка/сохранение: чтение и запись векторов из памяти, включая страйдовый доступ (доступ к элементам с фиксированным шагом) и индексированный доступ (с произвольным шагом).
  • Перестановки: перемешивание, сжатие, расширение, репликация элементов.
  • Управление: настройка длины вектора, маскирование, работа с регистрами.

Отличия от традиционных SIMD-расширений

В отличие от фиксированных SIMD-расширений, таких как SSE (128 бит) или AVX-512 (512 бит) в архитектуре x86, расширение V RISC-V обладает рядом преимуществ:

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

Применение

Научные вычисления и HPC

Расширение V активно используется в суперкомпьютерных проектах, таких как китайский процессор XiangShan и европейский проект EPI (European Processor Initiative). Векторные инструкции ускоряют решение задач линейной алгебры, моделирования физических процессов, обработки сигналов и климатических прогнозов.

Машинное обучение и искусственный интеллект

Для задач нейронных сетей расширение V обеспечивает эффективное выполнение операций свёртки, умножения матриц и активаций. Поддержка типов bfloat16 и FP16 позволяет снизить требования к памяти и пропускной способности, что критично для встраиваемых систем и мобильных устройств.

Встраиваемые системы и IoT

Благодаря конфигурируемой длине вектора, расширение V может быть реализовано даже в маломощных микроконтроллерах. Это ускоряет обработку аудио, видео, сенсорных данных и задач цифровой обработки сигналов (DSP) без необходимости в специализированных DSP-ядрах.

Мультимедиа и графика

Векторные инструкции применяются для кодирования/декодирования видео, обработки изображений (фильтры, преобразования), рендеринга 2D- и 3D-графики, а также для работы с аудиокодеками.

Примеры реализаций

  • SiFive Intelligence X280: ядро на базе RISC-V с поддержкой расширения V, ориентированное на задачи ИИ и машинного обучения.
  • T-Head C910: китайский процессор от Alibaba, использующий векторные инструкции для ускорения вычислений.
  • Veyron V1: микропроцессор от компании Esperanto Technologies, содержащий до 4096 ядер с поддержкой расширения V, предназначенный для суперкомпьютерных кластеров.
  • Rocket Chip: открытая реализация RISC-V, включающая поддержку векторного расширения, доступная для исследовательских целей.

Интересные факты

  • Расширение V RISC-V является первым векторным расширением в открытой ISA, получившим широкое распространение в индустрии.
  • В отличие от многих коммерческих архитектур, спецификация RISC-V V не требует обязательной поддержки всех типов данных — разработчик может реализовать только необходимые подмножества.
  • Векторные инструкции RISC-V могут быть использованы для эмуляции других SIMD-расширений, что упрощает перенос кода с x86 и ARM.
  • Проект RISC-V International продолжает работу над расширениями, связанными с векторными вычислениями, включая поддержку разрежённых матриц и тензорных операций.

Критика и ограничения

Несмотря на преимущества, расширение V имеет ряд недостатков:

  • Сложность компиляторов: автоматическая векторизация для переменной длины вектора требует более сложных алгоритмов, чем для фиксированных SIMD.
  • Отсутствие аппаратной поддержки: на момент 2024 года лишь ограниченное число коммерческих процессоров полностью реализуют спецификацию 1.0.
  • Фрагментация: различные реализации могут иметь разную длину вектора, что усложняет оптимизацию производительности для конкретного оборудования.
  • Конкуренция: ARM SVE (Scalable Vector Extension) предлагает схожую концепцию масштабируемых векторов, что создаёт конкуренцию на рынке.

Источники

  • RISC-V International. «The RISC-V Instruction Set Manual, Volume I: Unprivileged ISA, Document Version 20191213». 2019.
  • RISC-V International. «RISC-V V Vector Extension, Version 1.0». 2021.
  • Waterman, A., Lee, Y., Patterson, D., & Asanović, K. «The RISC-V Instruction Set Manual, Volume II: Privileged Architecture». 2017.
  • Asanović, K., & Patterson, D. «The Case for Open Instruction Sets». 2014.
  • SiFive. «SiFive Intelligence X280 Product Brief». 2022.
  • Esperanto Technologies. «ET-SoC-1: A 4096-Core RISC-V AI Supercomputer». 2021.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →