Перейти к содержанию

RISC-V

RISC-V — архитектура набора команд, на которой построены всё больше микроконтроллеров: ESP32-C3, C5, C6, H2 от Espressif, а RP2350 от Raspberry Pi умеет работать и на ядрах Arm, и на ядрах RISC-V.

Обновлено Редакция GAW

RISC-V — архитектура набора команд процессоров: она определяет, какие команды процессор понимает и как они кодируются. Набор складывается из обязательной базовой части и расширений, которые обозначаются буквами. Название конкретного варианта показывает разрядность и набор расширений:

БукваЧто добавляет
RV3232-битная архитектура
Iбазовые целочисленные команды
Mумножение и деление
Aатомарные операции
Cсжатые 16-битные команды — программа занимает меньше места

В микроконтроллерах. У Espressif на RISC-V построены ESP32-C2, C3, C5, C6 и H2, а ESP32-S2 и S3 — на ядрах Xtensa LX7. Например, ESP32-C3 — одно ядро RV32IMC до 160 МГц, а у ESP32-C6 основное ядро RV32IMAC до 160 МГц дополняет малопотребляющее LP-ядро с тем же набором команд. Сравнение чипов — в обзоре «ESP32 и другие чипы Espressif».

RP2350. У RP2350 Raspberry Pi поставила сразу две архитектуры: два ядра Cortex-M33 и два ядра Hazard3 с набором RV32IMAC+. Какие ядра работают, задают флаги в OTP, по умолчанию — Arm; программы для обеих архитектур собираются одним SDK и отлаживаются по SWD. Ограничение одно: безопасную загрузку загрузчик RP2350 поддерживает только для ядер Arm, и при её включении ядра RISC-V отключаются.

Частые вопросы

Что означают буквы в RV32IMC?

RV32 — 32-битная архитектура RISC-V, I — базовый набор целочисленных команд, M — умножение и деление, C — сжатые 16-битные команды, уменьшающие размер программы. В RV32IMAC добавлено A — атомарные операции. Набор RV32IMC у ESP32-C3, RV32IMAC — у обоих ядер ESP32-C6 и у Hazard3 в RP2350.

Какие ESP32 работают на RISC-V?

ESP32-C2, C3, C5, C6 и H2. Классический ESP32, ESP32-S2 и S3 построены на ядрах Xtensa. У ESP32-C5 и C6 кроме основного есть ещё малопотребляющее ядро RISC-V, которое работает, пока основное спит.

Можно ли запустить RP2350 на RISC-V?

Да: по даташиту в RP2350 есть и два ядра Cortex-M33, и два ядра Hazard3 с набором RV32IMAC+. Архитектуру выбирают флаги в OTP, по умолчанию — Arm, а программы для обеих собираются одним SDK. Но при включённой безопасной загрузке ядра RISC-V отключаются — загрузчик поддерживает её только для Arm.

Источники

  1. Espressif. ESP32-C3 Series Datasheet v2.4 — титул — до 160 МГц; разд. 4.1.1.1 — одно 32-битное ядро RISC-V с набором команд RV32IMC
  2. Espressif. ESP32-C6 Series Datasheet v1.5 — разд. 4.1.1.1 — основное ядро: 32-битный RISC-V из целочисленного базового набора (I) и стандартных расширений умножения и деления (M), атомарных операций (A) и сжатых команд (C), RV32IMAC, до 160 МГц; разд. 4.1.1.3 — малопотребляющее ядро LP CPU тоже RV32IMAC
  3. Raspberry Pi. RP2350 Datasheet — разд. 1 — два ядра Cortex-M33 или Hazard3 на 150 МГц; разд. 1.1 — поддержка RISC-V сделана заменой ядер Cortex-M33 (Armv8-M) на Hazard3 (RV32IMAC+), обе архитектуры доступны на всех RP2350, ядра RISC-V отлаживаются по SWD и программируются тем же SDK; разд. 3.9 — архитектуру выбирают флаги OTP, по умолчанию Arm; включение безопасной загрузки отключает ядра RISC-V, так как загрузчик реализует её только для Arm
  4. Espressif. ESP32-S3 Series Datasheet v2.2 — титул — двухъядерный 32-битный процессор Xtensa LX7

Нашли ошибку?