Сегодня на рынке 32-битных MCU безраздельно доминирует архитектура ARM Cortex-M. Её успех обусловлен продуманной аппаратной реализацией (гибкое управление питанием периферии и расширенные режимы сна для автономных устройств), а также удобством для бизнеса — стандартизированная программная платформа позволяет легко мигрировать между разными моделями контроллеров.
Геополитические колебания, проблемы с доступом к технологиям ARM и жесткая конкуренция на рынке электроники, где на счету каждая копейка, сделали платное лицензирование ARM критической уязвимостью. Возникла потребность в альтернативе, которая обеспечила бы технологическую независимость и новые конкурентные преимущества. Этой альтернативой стала архитектура RISC-V.
Начав свой путь как академический проект Калифорнийского университета в Беркли и эволюционировав в RISC-V Foundation, эта архитектура с конца прошлого десятилетия стала ответом на политические риски и экономическую необходимость. В этом материале мы расскажем о том, что представляет собой архитектура в целом, как и на что она влияет, а также подробно остановимся на особенностях RISC-V в контексте микроконтроллеров и рассмотрим самые популярные их модели.
Основные понятия
В академическом понимании архитектура — это логическая организация микропроцессора или микроконтроллера, рассматриваемая с точки зрения пользователя; она определяет, какие функции может выполнять устройство и каким образом они реализуются аппаратно и программно в рамках построения микропроцессорной системы.
Понятие архитектуры отражает:
- концептуальную структуру – совокупность компонентов, составляющих микроконтроллер и связей между ними;
- способы представления и форматы данных;
- способы обращения к доступным через ПО элементам структуры микроконтроллера;
- набор операций, выполняемый процессором;
- характеристики управляющих слов и сигналов;
- реакцию на внешние сигналы.
С точки зрения разработчика ПО на основе микроконтроллера на языке программирования C или набирающего популярность С++ не нужно помнить двоичные коды операций (как на ассемблере), но он обязан понимать архитектуру (способы адресации, модель памяти, систему прерываний и набор доступных инструкций), так как это диктует, как правильно и эффективно писать программы. Архитектура — это интерфейс между железом и высокоуровневым кодом, и игнорировать его нельзя.
RISC – V
Концепция RISC-архитектуры родилась из того, что 80% программ используют 20% команд. Использование RISC-архитектуры позволяет ускорить программу, поскольку она включает в себя только простые и постоянно используемые команды, число которых ограничено для того, чтобы их аппаратная поддержка была простой и быстрой. Более сложные операции же состоят из простых операций. Ядра CORTEX-M, сами по себе, являются RISC: например, Cortex-M0 содержит десятки базовых операций, имеет меньшую память и оптимизированный конвейер для увеличенной скорости поиска нужной ячейки, а также небольшое количество регистров для самых частоиспользуемых в программе переменных, за счет чего достигается быстродействие и эффективность.
Опустимся на уровень разработки микросхем. Напомним основной общий принцип работы микропроцессора: устройство управления получает из памяти инструкций команду, которую необходимо выполнить, декодирует её и выдаёт сигналы мультиплексору, сигналы разрешения работы для регистров и сигналы разрешения записи в память.
Логично начать разбирать микропроцессор с устройств, хранящих его состояние (рисунок 1):
Рисунок 1 – элементы, хранящие состояние процессора RISC-V
- Счетчик команд – 32-битный регистр, выход которого указывает на текущую инструкцию, а вход на следующую.
- Память команд – на адресный вход А подается 32-битный адрес команды, после чего на выходе RD появляется 32-битное число, представляющее собой команду, прочитанную из памяти по этому адресу
- Регистровый файл – содержит 32 элемента по 32 бита каждый, в том числе константы, имея два входа для чтения A1 и A2, подавая на выход RD1 и RD2, соответственно, 32-битные данные, и адресный вход A3 для записи данных со входа WD3, при поступлении сигнала разрешения записи WE3 и тактовый сигнал.
- Память данных – имея единственный порт чтения / записи, в зависимости от сигнала разрешения записи WE либо подают данные из ячейки с адресом, подаваемым со входа А на RD, либо записывают данные со входа WD.
Затем остается соединить все блоки воедино в зависимости от набора команд, добавить дополнительные, подумать над представлением данных внутри, добавить управляющее устройство и мы получим работающий микропроцессор. Казалось бы, что остается поверх этого - нарастить периферию и можно работать. Полученное в итоге устройство будет называться однотактным процессором (рисунок 2), который имеет существенный минус – низкую скорость работы, определяемую самой медленно выполняемой командой.

Рисунок 2 – однотактный процессор для ограниченного набора команд
Сама по себе работа микропроцессора может быть поделена на четыре стадии: выборка, декодирование, выполнение, запись в память и запись в регистровый файл. Как следствие, загруженность каждого отдельного блока периферии происходит один раз за такт. А что, если сделать конвейер и по окончании выборки одной команды начать работать со следующей командой? Таким образом, к окончанию выполнения первой команды вторая команда пойдет следом (рисунок 3). Это достигается разбиением однотактного процессора на группы, каждая из которых контролируется своим блоком управления.

Рисунок 3 – временная диаграмма работы однотактного и конвейерного процессоров
Такое решение в свою очередь заставляет решать задачу конфликтов: что делать в случае, если команда (а) еще не завершила работу, а команда (б) уже требует результата выполнения команды (а). Для этого в процессор добавляют блок разрешения конфликтов, организовав байпас, вставляя дополнительные мультиплексоры перед АЛУ, чтобы получать данные с последующих стадий выполнения предыдущей команды. Еще один способ – попросту остановить конвейер и дождаться выполнения последующей команды.
На вышеописанных принципах построены все современные микроконтроллеры и микропроцессоры на архитектуре RISC. Хотя, казалось бы, это сжатое изложение общих принципов работы в целом любого микропроцессора. И вот сейчас стоит сделать оговорку, что архитектура – это не железная спецификация оборудования, связанная между собой единым образом, а набор правил, по которому вам необходимо разрабатывать устройства. И тут уже мы поговорим о специфике RISC-V в сравнении с полюбившимся всем Cortex-M ядрам.
Модульность
Во вселенной Cortex-M вы берете ядро с фиксированным набором возможностей, который для конкретно вашей задачи может быть избыточен с точки зрения периферии и набора команд. В случае RISC-V у вас есть возможность выбросить не нужные вам блоки. Например, если вам не нужна работа с числами с плавающей точкой, можно просто убрать её из ядра, уменьшив энергопотребление, что критически важно для носимых устройств. Оставим при этом за рамками возможные вопросы связанные, со стоимостью единицы микросхемы, временем поставки и т.п.
Микроконтроллеры на RISC-V
Итак, если мы вновь поднимемся на уровень разработчика устройств на уровне применения микроконтроллера, и перед нами стоит задача перевести проект с микроконтроллера на ядре Cortex-M на RISC-V - что же может предложить нам рынок?
- MIK32 «Амур» - предполагается как альтернатива энергоэффективным STM32L0, но к его основной характеристике есть вопросы. При тактировании в 32 МГц аналогичный микроконтроллер от STM32 потребляет в 4-5 раз меньше (12.5–15 мА для «Амура» и 2.7 мА для STM32L0).
Если стоит задача импортозамещения, независимости от поставок из Китая, не стоит вопрос цены (смотря, где заказывали МК на Cortex), и вы можете уступить по потребляемой мощности, микроконтроллер от компании «Микрон» – ваш выбор. - Giga Devices GD32VF103 и GD32VW553 - известная на нашем рынке китайская компания GigaDevices в своей линейке полных аналогов серии STM32 на том же ядре предлагает микроконтроллеры с ядром RISC-V.
- Серия VF103 - по характеристикам сравнима с F103 серией STM32. Обладает схожим набором периферии, повышенной тактовой частотой (72 против 108 МГц), потребляет 23.3 мА против 31.3 мА при тактировании 72 МГц (GD32VF103C4T6 и STM32F103C4 корпус LQFP48, стоимость 2-3 и 4-6 евро соответственно). При этом на первый взгляд соблюдается PIN to PIN совместимость, но есть некоторые расхождения.
- Серия VW553 - разработанная специально для беспроводных устройств, имеет периферию для WiFi и Bluetooth. Отличается от конкурентов собственной разработкой; по сравнению с серией от ST имеет более высокую тактовую частоту и больший объем периферии.
- WCH (Nanjing Qinheng Microelectronics) CH32V - очередной специфический китайский производитель микроконтроллеров, предлагающий широкую линейку контроллеров на основе ядер RISC-V (рисунок 4) под разный набор задач. Производитель представлен в России, в том числе в нашем каталоге, по чрезвычайно низким (относительно конкурентов) ценами. Во многом эти микроконтроллеры совместимы с серией STM32.

Рисунок 4 – линейка CH32V
Резюме
Кажется, что настал идеальный момент для перехода на новые микроконтроллеры: снижение себестоимости, высокая энергоэффективность и обретение независимости от параллельного импорта. Однако практика разработки вносит свои коррективы, заставляя инженеров столкнуться с рядом системных проблем:
- Отсутствие инструментов разработки – современные разработчики ПО привыкли к присутствующему по умолчанию набору библиотек типа HAL и LL, позволяющих сократить время разработки, а при необходимости – быстро мигрировать с одного устройства на другое. Всё необходимое приходится нарабатывать заново.
- Уход от экосистемы разработки – микроконтроллеры STM32 приучили нас к готовой среде, визуальному способу конфигурации периферии микроконтроллера. Значительная часть низкоуровневой настройки и инициализации уже реализована средствами среды разработки, благодаря чему MVP можно получить без глубокого погружения в документацию.
- Сложности с масштабированием функционала устройства – при необходимости сменить микроконтроллер потребуется глубокое изучение особенностей устройства нового микроконтроллера, чего опять же удавалось избежать при разработке под Cortex. Для RISC-V вам нужно быть очень внимательным: периферия, отладка, прерывания и даже некоторые расширения могут различаться от вендора к вендору.
И всё же стоит ли бросать всё и переходить на RISC, имея риски? Если вы делаете инновационный продукт, считаете каждый рубль в себестоимости или хотите контролировать свою независимость – RISC-V уже сегодня является вполне разумным и перспективным выбором. Если же вам важна скорость выхода на рынок и предсказуемость разработки – Cortex остается «золотым стандартом».