У вас есть мобильное устройство с процессором RISC-V? Вопрос странноватый, но ответ может быть сложнее, чем кажется. Например, архитектуру RISC-V использует чип безопасности в Google Pixel 6. Конечно, процессоры смартфонов в основном задействуют архитектуру ARM — созданную, кстати, по принципам архитектуры сокращенного набора команд (RISC, Reduced Instruction Set Computer). Зачем же здесь RISC-V? На пятом митапе Российского Альянса RISC-V и YADRO эту тему обсудили эксперты — Сергей Якушкин, Роман Хатько и Антон Афанасьев.
С точки зрения разработки у RISC-V имеется несколько взаимосвязанных преимуществ: открытость, универсальность, большое сообщество и высокие темпы развития. Все больше компаний используют RISC-V, благодаря чему растет ассортимент чипов, быстрее развивается экосистема ПО, а следовательно, снижается и порог входа в архитектуру — что возвращает нас к началу предложения. Модульность RISC-V дает возможность глубокой программно-аппаратной специализации.
Что нужно, чтобы создать мобильное устройство на RISC-V? Готовность самого стандарта, экосистема приложений и экосистема устройств. Международный альянс RISC-V сформировался в 2015 году, а условия для развития мобильного рынка на открытой архитектуре сложились уже к 2021–2022 гг., когда сформировался стандарт для процессоров общего назначения. Рассмотрим этот этап истории подробнее.
Развитие архитектуры RISC-V
После принятия в 2019 году первого RISC-V профиля, RV64GC, события развивались быстро. Примерно в то же время стали появляться первые RISC-V ядра с поддержкой Linux, в том числе российские. В 2021 году вышел планшет на RISC-V с форком Android 10. Через некоторое время команда Android инициировала создание рабочей группы по RISC-V в международном альянсе по развитию ОС. Google официально заявила о приоритетной поддержке архитектуры RISC-V на уровне Tier 1.
В 2023 году приняли профиль RVA22. Планшеты и ноутбуки на RISC-V стали активней появляться на рынке. В это же время Qualcomm и Google анонсировали разработку SoC на RISC-V для платформы носимых устройств Snapdragon Wear.
Активный рост экосистемы привел к принятию следующего профиля RISC-V — RVA23 — уже на следующий год. С ним RISC-V теоретически уже может конкурировать с другими архитектурами в создании открытой бинарной экосистемы, поскольку в RVA23 стали обязательными векторные расширения, появилась поддержка гипервизора и векторной криптографии. Разработка чипов под новые стандарты требует немало времени, поэтому процессоров с поддержкой RVA23 в широкой продаже пока нет и достаточность профиля еще не доказана на практике. Возможно, именно поэтому Google хоть и обозначила, что бинарный интерфейс приложений (ABI) для AOSP будет основан на RVA23, но до сих пор ABI не финализировала.

В 2024 году в продаже появились устройства с поддержкой векторного расширения RVV 1.0. RISE опубликовала гайд по оптимизации на RISC-V, провела адаптацию программных компонентов, запустила бонусную кампанию для разработчиков, портирующих на RISC-V. Canonical заявила, что с версии 25.10 ОС Ubuntu будут собирать под профиль RVA23. А Samsung продемонстрировала телевизор на RISC-V с Tizen.
Сейчас для RISC-V прорабатывают множество новых исследовательских идей и дальнейших расширений. Например, расширение формата команд до 48 и 64 бит, что в некоторых случаях поможет повысить эффективность архитектуры. За счет поддержки новых размеров констант, immediate-операндов и других нововведений в перспективе можно будет уменьшить размер кода. Развивается безопасность векторных расширений, а также расширенное профилирование для анализа сложных приложений, стеков и ПО.
Текущие наработки войдут в профиль RVA30, который, по всей видимости, станет следующим в развитии стандарта. На пути к этому большому обновлению увидит свет ABI для AOSP, а также платформы, определяющие дополнительные требования — например, в серверных сценариях.
Если выяснится, что в RVA23 не хватает каких-нибудь важных обязательных расширений, то придется выпускать новый major-профиль с ними раньше, чем хотелось бы. По пути к нему увидят свет и minor-профили: они содержат только опциональные расширения и не создают проблем с совместимостью.
Адаптация программ под RVA23
Компиляторы, рантаймы и библиотеки нужно адаптировать под RVA23, чтобы они эффективно применяли расширения и конкретные инструкции профиля, обеспечивали высокую производительность и положительный пользовательский опыт. Дистрибутивы должны выпускать сборки под профиль RVA23 — векторное расширение в RVA23 обязательно, и компилятор должен обеспечивать автоматическую векторизацию программ.
Особняком здесь стоят компоненты с кодом, специфичным для конкретных архитектур — на ассемблере, интринсиках. В пакетах исходного кода Debian таковых примерно 4%. Эти компоненты ярко иллюстрируют важность адаптации в мобильных сценариях. Векторный код встречается во множестве компонентов AOSP и Chromium, вот лишь несколько примеров:

Функция memcpy стандартной библиотеки libc в AOSP использует векторный код. Подавление эха, работа с изображениями, преобразование цветовых пространств и так далее — все это также использует векторный код. Для пользовательского опыта важна высокая производительность этих алгоритмов, для чего необходима адаптация исходного кода программных компонентов, а также поддержка компиляторами векторного расширения.
Векторное расширение RVV 1.0
Векторное расширение RVV 1.0, ратифицированное в 2021 году, стало обязательным в RVA23. RVV 1.0 следует концепции VLA (Vector Length Agnostic), поддерживает группировку регистров и маскирование элементов. Разработчик найдет здесь все ожидаемые в векторном расширении инструкции: целочисленную арифметику, floating point, fixed point, разнообразные инструкции доступа в память, редукцию, перестановки и т. д. Но основная идея RVV — это масштабируемость и по длине, и по числу векторных регистров.
Рассмотрим инструкцию настройки конфигурации — она уникальна именно для RVV, и в более традиционных архитектурах с SIMD-подходом такой инструкции нет.

Инструкцию можно представить в разных вариантах. Здесь один аргумент запрашивает вектор длины 21, а другой требует четыре векторных регистра. Софт рассчитан на то, что хоть какое-нибудь число элементов векторного регистра он получит. Масштабируемость здесь налицо, причем в нескольких видах.
Поддержка различных длин векторов выгодна и «железу», и софту. Сравним в этом ракурсе x86 с фиксированной длиной и RISC-V с VLA.

С одной стороны, аппаратно реализовать RVV 1.0 сложнее, накладные расходы больше. Это плата за универсальность. Но с другой стороны, достоинства здесь перевешивают: меньшая фрагментация, бо́льшая масштабируемость, гибкость алгоритмов — и потенциально более компактный векторный код.
С точки зрения экосистем «железа» и ПО векторное расширение RVV 1.0 также имеет преимущества. В черновой версии 0.7.1 спецификация RVV появилась еще в 2019 году. На ней опробовали разные идеи, и через два года увидела свет уже доработанная версия без обратной совместимости с 0.7.1. Вышли чипы Alibaba T-Head, Spacemit, SiFive с RVV 1.0, которая, с другой стороны, появится в Ubuntu 25.10. Так что сегодня софт может рассчитывать на полную поддержку всех инструкций RVV 1.0 на платах с совместимыми чипами.
Что будет после RVV 1.0? Возможен переход сразу к RVV 2.0 без обратной совместимости с RVV 1.0: инструкция будет вместе с конфигурацией, увеличится регистровый файл, будет реализована концепция группировки элементов и аккумулятор вместо widening. Но возможно и инкрементальное развитие, добавление новых и расширение текущих инструкций.
Сейчас сообщество RISC-V с разработчиками ПО активно обсуждает более 120 расширений архитектуры, из которых выбирают оптимальную комбинацию для развития экосистемы. Новые расширения проходят ратификацию и могут быть приняты уже в 2025 году.
И все-таки готов ли RISC-V для мобильных устройств?
В некоторых областях — да, безусловно, и кое-где уже выходит второе поколение таковых. Экосистемы RISC-V уже хватает как минимум для условных «фоторамок» — умных киосков, специализированных планшетов и т. п., где требования к производительности процессора ниже, а набор программного обеспечения ограничен.
Для более сложных устройств — ноутбуков, мобильных телефонов — пока нельзя подтвердить, что RISC-V готова конкурировать с ARM и x86. Многие компании активно развивают это направление: разрабатывают устройства на основе актуального профиля RVA23 и оптимизируют программную экосистему. Устройства с RVA23 и RVV 1.0 анонсируют в сегментах IoT, серверов, появляются процессорные ядра. Поэтому мы с оптимизмом смотрим в будущее и рассчитываем, что распространение RISC-V за пределами «фоторамок» тоже не за горами.
Статья подготовлена по мотивам третьего митапа российского Альянса RISC-V. Запись этого и других докладов вы можете посмотреть на Rutube или Youtube.