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

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

Функция memcpy стандартной библиотеки libc в AOSP использует [11] векторный код. Подавление эха, работа с изображениями, преобразование цветовых пространств и так далее — все это также использует векторный код. Для пользовательского опыта важна высокая производительность этих алгоритмов, для чего необходима адаптация исходного кода программных компонентов, а также поддержка компиляторами векторного расширения.
Векторное расширение 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 готова конкурировать с ARM и x86. Многие компании активно развивают это направление: разрабатывают устройства на основе актуального профиля RVA23 и оптимизируют программную экосистему. Устройства с RVA23 и RVV 1.0 анонсируют в сегментах IoT, серверов, появляются процессорные ядра. Поэтому мы с оптимизмом смотрим в будущее и рассчитываем, что распространение RISC-V за пределами «фоторамок» тоже не за горами.
Статья подготовлена по мотивам третьего митапа [12] российского Альянса RISC-V. Запись этого и других докладов вы можете посмотреть на Rutube [13] или Youtube [14].
Автор: yadro_team
Источник [15]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/mobilnyie-ustroystva/422294
Ссылки в тексте:
[1] YADRO: https://www.yadro.com?utm_source=habr&utm_medium=referral&utm_campaign=risc-v-mobile-110625
[2] заявила: https://arstechnica.com/gadgets/2023/01/google-announces-official-android-support-for-risc-v/
[3] принятию: https://riscv.org/riscv-news/2024/10/risc-v-announces-ratification-of-the-rva23-profile-standard/
[4] обозначила: https://lists.riscv.org/g/sig-android/message/436
[5] не финализировала: https://github.com/google/android-riscv64/issues/100
[6] гайд по оптимизации на RISC-V: https://gitlab.com/riseproject/riscv-optimization-guide
[7] адаптацию программных компонентов: https://riseproject.dev/wp-content/uploads/sites/25/2024/12/RISE-Webinar-December-2024.pdf
[8] бонусную кампанию: https://lf-rise.atlassian.net/wiki/spaces/HOME/pages/90275841/RISE+RISC-V+Developers+Appreciation+Pilot+Program
[9] заявила: https://bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/2111715
[10] продемонстрировала: https://www.sifive.com/blog/samsung-highlights-work-to-bring-risc-v-to-tizen-
[11] использует: https://android.googlesource.com/platform/bionic/+/refs/heads/main/libc/arch-riscv64/string/memcpy.S
[12] третьего митапа: https://engineer.yadro.com/risc-v-meetup-3/?utm_source=habr&utm_medium=referral&utm_campaign=risc-v-mobile-110625
[13] Rutube: https://rutube.ru/video/3bfb699f2100a5176e1931dca3852d80/?utm_source=habr&utm_medium=referral&utm_campaign=risc-v-mobile-110625
[14] Youtube: https://www.youtube.com/watch?v=bKQEz9-FOF4&utm_source=habr&utm_medium=referral&utm_campaign=risc-v-mobile-110625
[15] Источник: https://habr.com/ru/companies/yadro/articles/917488/?utm_campaign=917488&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.