STAR-MC1¶
Введение¶
STAR-MC1 — процессорное IP-ядро компании Arm China на базе Armv8-M Mainline — того же архитектурного профиля, который использует Cortex-M33. Поэтому программная модель Armv8-M остаётся знакомой, но это не гарантирует повторное использование прошивки Cortex-M33 без изменений. Опциональные архитектурные расширения, конфигурация ядра, периферия SoC, настройки загрузки и компоновщика, а также поддержка SDK могут различаться. Рассматривайте ПО для Cortex-M33 как отправную точку для портирования и проверяйте его на целевом устройстве с соответствующим SDK.
В документации SiFli для устройств SF32 с STAR-MC1 процессор приложений может называться Arm Cortex-M33, Cortex-M33 STAR-MC1 или просто STAR-MC1 — в зависимости от контекста и уровня детализации. Сами по себе эти обозначения не подтверждают наличие опциональных функций ядра или конкретную конфигурацию SoC; при выборе сверяйтесь с документацией конкретных вариантов.
Эта статья предназначена тем, кто знаком с семейством Arm Cortex-M и хочет понять, как правильно оценивать STAR-MC1 при выборе компонента, разработке ПО и сравнении производительности. Здесь объясняется, что остаётся знакомым, что зависит от реализации SoC и почему STAR-MC1 не следует считать прямой заменой Cortex-M7.
Здесь под совместимостью понимается общая архитектурная программная модель Armv8-M, а не возможность напрямую заменить образ прошивки. Перед повторным использованием прошивки проверьте функции ядра, параметры компилятора, стартовый код, размещение памяти в скрипте линковщика, назначение прерываний, драйверы периферии и настройки безопасности целевой SoC и её SDK.
Позиционирование для разработчиков¶
STAR-MC1 не стоит воспринимать как «процессор между Cortex-M33 и Cortex-M7». Это конфигурируемый процессорный IP-блок Armv8-M Mainline, совместимый с Cortex-M33. Его особенность — возможность сочетать привычную программную модель MCU с дополнительными функциями подсистемы памяти и ускорения: кэшем, памятью с прямой связью с ядром (TCM), DSP-инструкциями, интерфейсом сопроцессора и TrustZone, если они реализованы в конечной SoC.
| Если вы знакомы с | Что в STAR-MC1 остаётся привычным | Практическое отличие | Чего не следует предполагать |
|---|---|---|---|
| Cortex-M4 | Разработка bare-metal и RTOS-приложений, прерывания, DMA и драйверы периферии. | STAR-MC1 использует более новую программную модель Armv8-M и может предоставлять расширенные возможности памяти и ускорения. | Бинарные файлы Cortex-M4, предположения Armv7E-M и те же функции отладки и безопасности будут работать без изменений. |
| Cortex-M33 | Модель программирования, обработки исключений и набор инструментов Armv8-M. | В SoC могут быть предусмотрены дополнительные ресурсы подсистемы памяти для нагрузок с активным использованием флеш-памяти/PSRAM, интерфейса пользователя, аудио или связи. | Во всех изделиях на STAR-MC1 включены кэш, TCM, DSP, FPU, CDE или TrustZone. |
| Cortex-M7 | Необходимость учитывать размещение данных в памяти, работу кэша, когерентность DMA и задержки реального времени. | STAR-MC1 сохраняет основу Armv8-M уровня MCU и предназначен для гибких IoT-устройств с низким энергопотреблением. | STAR-MC1 является прямой заменой Cortex-M7 или обеспечивает такую же пропускную способность, подсистему памяти и программную экосистему. |
При выборе SF32 ориентируйтесь на документированные характеристики памяти, периферии и поддержку SDK, а не только на название STAR-MC1. В общедоступных материалах STAR-MC1 описана Armv8-M, а кэш, TCM, DSP, интерфейсы сопроцессора и TrustZone представлены как возможные функции. Наличие и включение каждой из них в конкретном изделии необходимо проверять по документации SoC.
Чем важен STAR-MC1¶
Обычные MCU на Cortex-M33 хорошо подходят для безопасного управления с низким энергопотреблением, но современным подключённым устройствам часто требуется больше, чем одна лишь логика управления. Носимые устройства, интеллектуальные дисплеи, Bluetooth-аудиоустройства и устройства периферийного ИИ могут нуждаться в отзывчивом интерфейсе пользователя, увеличенном объёме внешней памяти, обработке сигналов и частом обмене графическими или аудиоданными.
STAR-MC1 может поддерживать такие нагрузки благодаря опциональным кэшам, TCM и пользовательским инструкциям, если SoC реализует эти функции, а ПО эффективно их использует. Они могут сократить ожидание памяти или ускорить отдельные операции, сохраняя модель разработки MCU. Проверяйте выигрыш в производительности и энергопотреблении на готовом устройстве с характерными нагрузками: название ядра само по себе не гарантирует ни того, ни другого.
Сравнение семейства Cortex-M¶
В таблице показано место STAR-MC1 среди распространённых процессоров Cortex-M. Точные возможности зависят от реализации конечной SoC, однако это сравнение помогает выбрать архитектуру для изделия.
Для краткости в таблице используются обозначения CM3, CM4, CM33, CM55 и CM7.
| Характеристика | CM3 | CM4 | CM33 | STAR-MC1 | CM55 | CM7 |
|---|---|---|---|---|---|---|
| Архитектура Arm | Armv7-M | Armv7E-M | Armv8-M Mainline | Armv8-M Mainline | Armv8.1-M Mainline | Armv7E-M |
| Конвейер | 3 ступени, последовательное выполнение | 3 ступени, последовательное выполнение | 3 ступени, последовательное выполнение | Последовательное выполнение; число ступеней в общедоступном TRM не указано | 4 ступени, последовательное выполнение; 5 ступеней с Helium | 6 ступеней, суперскалярный |
| Основной интерфейс системной шины | 3 × AMBA AHB-Lite (гарвардская архитектура) | 3 × AMBA AHB-Lite (гарвардская архитектура) | 2 интерфейса AMBA 5 AHB5: C-AHB + S-AHB | 2 интерфейса AMBA 5 AHB5: C-AHB + S-AHB | 64-разрядная AMBA 5 AXI5; 32-разрядный AHB-интерфейс периферии; 64-разрядный ведомый интерфейс AHB для TCM | 64-разрядная AMBA 4 AXI; 32-разрядный AHB-интерфейс периферии; 32-разрядный ведомый интерфейс AHB для TCM |
| Поддержка TrustZone | Нет | Нет | Необязательно; зависит от SoC | Необязательно; зависит от SoC | Необязательно; зависит от SoC | Нет |
| DSP-инструкции | Нет специализированного DSP-расширения | Встроенное DSP-расширение | Опциональное DSP-расширение | Опциональное DSP-расширение | Встроенное DSP-расширение; Helium (MVE) — опционально | Встроенное DSP-расширение |
| Arm Helium (MVE) | Не поддерживается | Не поддерживается | Не поддерживается | Не поддерживается | Необязательно; целочисленный или вещественный MVE, зависит от конфигурации | Не поддерживается |
| Блок операций с плавающей точкой | Нет в составе базовой IP | Опциональная одинарная точность | Опциональная одинарная точность | Опциональная одинарная точность | Опциональные скалярные FP16/FP32/FP64; опциональные векторные FP16/FP32 | Опциональная одинарная/двойная точность |
| I-cache / D-cache | Не входят в IP процессора; кэш можно добавить на уровне SoC | Не входят в IP процессора; кэш можно добавить на уровне SoC | Не входят в IP процессора; кэш можно добавить на уровне SoC | Опциональны в IP процессора; наличие и конфигурация зависят от реализации | Опциональны в IP процессора; наличие и конфигурация зависят от реализации | Опциональны в IP процессора; наличие и конфигурация зависят от реализации |
| Пользовательские инструкции Arm / CDE | Нет в составе базовой IP | Нет в составе базовой IP | Arm определяет кодирование CDE; SoC определяет пользовательские операции и пути данных; целочисленный CDE опционален, CDE для плавающей точки зависит от FPU и конфигурации | В TRM STAR-MC1 описаны модули GPR CDE и FPCDE; реализация и доступность в продукте зависят от конфигурации SoC | Arm определяет кодирование CDE; SoC определяет пользовательские операции и пути данных; опционально начиная с r1, не поддерживается в r0 | Нет в составе базовой IP |
| Совместимость ПО | Базовая | Совместим с CM3 | Программная модель Armv8-M; нужны инструменты Armv8-M | Совместим с CM33 | Совместим с CM33; для Helium нужна поддержка цепочки инструментов Armv8.1-M | Совместим с CM4 (та же линейка Armv7E-M) |
| Справочные значения CoreMark/MHz* | 3,34 | 3,42 | 4,02 | 4,02† | 4,20 | 5,01 |
| Относительное энергопотребление (качественная оценка)‡ | Очень низкое | Низкое | Низкое | Низкое | Среднее | Высокое |
| Профиль вычислений (качественно) | Энергоэффективное скалярное управление | Скалярная DSP-обработка в реальном времени | Безопасный конфигурируемый скалярный MCU | Скалярный CPU, совместимый с CM33; реализованные в SoC кэш, TCM и пользовательские инструкции могут повысить производительность системы | Векторные DSP/ML-вычисления при включённом Helium | Высокая скалярная производительность и пропускная способность памяти |
| Типичные задачи | Простое управление и базовые сенсорные узлы | Управление двигателями, обработка аудио и сигналов датчиков | Защищённые подключённые устройства и управление IoT | Носимые устройства с развитым интерфейсом, Bluetooth-аудио и IoT-изделия с Flash/PSRAM | Объединение данных датчиков с ML, голос, аудио, зрение и DSP | Отзывчивые HMI, высокопроизводительное управление и сетевые задачи |
* Эти ориентировочные значения взяты из сравнительной таблицы Cortex-M от Arm, версия 2020. Это не универсальные актуальные оценки и не прямой рейтинг готовых SoC: на результат влияют компилятор, подсистема памяти, настройки кэша и конфигурация теста.
† Здесь для STAR-MC1 приведено значение CM33, поскольку STAR-MC1 совместим с CM33. Это ориентир для сравнения, а не результат STAR-MC1, опубликованный Arm или полученный измерением.
‡ Это качественная оценка архитектурного позиционирования, а не результат измерений микросхемы. Фактическое энергопотребление зависит от техпроцесса, напряжения, частоты, архитектуры памяти, включённых функций, периферии, коэффициента активности прошивки и реализации конечной SoC.
Строки «Конвейер» и «Основной интерфейс системной шины» описывают основной конвейер исполнения и интерфейс системной памяти каждой IP. CM33 и STAR-MC1 используют одинаковую схему шин C-AHB/S-AHB; кэш и другие дополнительные функции памяти не зависят от интерфейса шины, а их наличие определяется конфигурацией и реализацией SoC. Это не означает, что все перечисленные интерфейсы включены в каждой готовой SoC. Дополнительные интерфейсы отладки, трассировки, сопроцессора и другие опциональные порты в таблице не указаны.
Источники по IP процессоров: документация Arm для CM3, CM4, CM33, CM55 и CM7, а также техническое руководство STAR-MC1.
Архитектурные улучшения¶
STAR-MC1 развивает Cortex-M33, а не заменяет его. Важнейшие дополнения связаны с реализацией: они помогают ядру меньше ждать доступа к памяти и больше времени выполнять полезную работу.
Кэш команд и данных¶
Наличие и конфигурация кэша команд (I-cache) и кэша данных (D-cache) зависят от реализации SoC. Если кэши реализованы и включены, они особенно полезны в системах, где код выполняется из внешней флеш-памяти, используются PSRAM или крупные стеки интерфейса пользователя и промежуточного ПО (middleware).
Основные преимущества:
- Более быстрая выборка команд из памяти, отличной от SRAM.
- Меньшая средняя задержка доступа к данным.
- Более высокая производительность графики, аудио, сетевых стеков и UI-фреймворков.
- Снижение нагрузки на шину памяти при повторном использовании кода или данных.
Для кэшируемых буферов без аппаратной когерентности драйверы, использующие общую память с DMA, контроллерами дисплея, аудиоинтерфейсами или другими мастерами шины, должны соблюдать правила SDK или RTOS. Перед чтением периферией запишите в память данные, изменённые процессором и находящиеся в кэше. Подготовьте приёмные буферы перед записью DMA, а после завершения передачи инвалидируйте устаревшие строки до чтения результата процессором. Пока DMA владеет буфером, CPU не должен к нему обращаться. Выделяйте целые строки кэша без посторонних данных и соблюдайте проверки завершения и барьеры памяти, требуемые платформой. Некэшируемые буферы и буферы с аппаратной когерентностью также требуют своих правил синхронизации. Подробнее о владении буферами и рисках грязных строк — в статье PSRAM и другие типы памяти.
Расширение Armv8-M для пользовательских блоков обработки данных¶
На уровне IP Arm определяет кодирование инструкций CDE, а разработчик SoC — пользовательские операции и пути данных. CM33 поддерживает опциональный целочисленный CDE; CDE для плавающей точки зависит от FPU и конфигурации. В TRM STAR-MC1 описаны модули GPR CDE и FPCDE, однако это описание IP не подтверждает доступность CDE в конкретном устройстве SF32 или версии SDK. В примечаниях к выпуску SiFli-SDK v2.5.1 указано исправление ошибочного включения CDE на SF32LB57x. Перед использованием проверьте поддержку в целевом устройстве и SDK. CM55 поддерживает опциональный CDE начиная с r1, но не в r0. CP0–CP7 — пространства кодирования, выделяемые сопроцессорам или CDE; это не восемь пользовательских инструкций и не восемь дополнительных ускорителей. Также проверьте ревизию ядра, реализованные модули и поддержку компилятором и SDK. См. описание CM33, сведения о ревизиях CDE в CM55 и главы B7/B8 TRM STAR-MC1.
Это может быть полезно для таких нагрузок, как:
- Цифровая обработка сигналов.
- Криптография.
- Алгоритмы компьютерного зрения.
- Вычислительные ядра машинного обучения.
- Математические операции для объединения данных датчиков.
CDE не ускоряет автоматически любое приложение. ПО должно использовать поддержку компилятора, библиотеки или компоненты SDK производителя, которые генерируют соответствующие пользовательские инструкции. При наличии поддержки на уровне SoC и программного стека CDE предоставляет удобный способ ускорить конкретные задачи приложения без переноса нагрузки на отдельный процессор приложений.
Оптимизация подсистемы памяти¶
Производительность многих современных MCU ограничена не только частотой CPU, но и задержкой и пропускной способностью памяти. Поэтому для устройств класса SF32 важны архитектура подсистемы памяти STAR-MC1 и функции кэширования, реализованные и включённые в SoC: приложения могут одновременно использовать внутреннюю SRAM, Flash в одном корпусе с кристаллом, PSRAM, буферы дисплея и DMA периферии.
Наибольший эффект обычно достигается, когда:
- Код выполняется из флеш-памяти или внешней памяти, а не из SRAM с прямой связью с ядром.
- UI-фреймворки многократно обращаются к данным изображений, шрифтов или компоновки.
- Одновременно работают аудио, Bluetooth, графика и задачи приложения.
- Рабочий набор данных хорошо помещается в кэш.
Для циклов, ограниченных только производительностью CPU и уже выполняющихся из быстрой SRAM, улучшение может быть менее заметным.
Характеристики производительности¶
Не следует утверждать, что STAR-MC1 автоматически повышает результаты небольших синтетических тестов CPU, таких как CoreMark/MHz или DMIPS/MHz. Эти тесты в основном измеряют компактные целочисленные нагрузки, которые зачастую помещаются в быструю локальную память. В таких условиях кэш команд и данных может почти не дать заметного прироста по сравнению с обычной реализацией класса Cortex-M33.
STAR-MC1 — совместимое с Cortex-M33 ядро с настраиваемой подсистемой памяти и опциональным ускорением отдельных типов нагрузки. Эти функции могут помочь, если приложение ограничено доступом к памяти, задержками внешней флеш-памяти или PSRAM, графическими ресурсами, сетевыми стеками либо частыми обращениями к большим наборам кода и данных. Выигрыш зависит от реализованных функций и того, как приложение их использует.
| Тип нагрузки | Ожидаемый эффект STAR-MC1 | Причина |
|---|---|---|
| Короткие циклы типа CoreMark/DMIPS | Обычно ограниченный | Рабочий набор мал и может уже помещаться в быстрой памяти. |
| Код выполняется из флеш-памяти или PSRAM | Часто лучше | Реализованный и включённый I-cache может сократить простои при выборке команд. |
| Нагрузки с большим объёмом данных в UI, графике и промежуточном ПО | Часто лучше | Реализованный и включённый D-cache может уменьшить задержку повторных обращений к данным. |
| Периферийные нагрузки с активным DMA | Зависит от ПО | Кэшируемые буферы без аппаратной когерентности требуют обслуживания кэша; всем буферам нужны управление владением и синхронизация. |
| Вычислительные процедуры с использованием CDE | Возможное улучшение | Пользовательские инструкции могут ускорять отдельные операции. |
Что это означает для разработчиков SF32¶
При разработке прошивки SF32 рассматривайте STAR-MC1 как совместимый с Cortex-M33 процессор приложений. Оценивайте реализованные функции памяти и ускорения с учётом требований приложения к коду, данным и временным характеристикам.
На практике:
- Рассматривайте прошивку для Cortex-M33 как основу для переноса исходного кода, а не как готовый образ для замены; перед повторным использованием проверьте конфигурацию целевого устройства и поддержку со стороны SDK.
- Разработчикам Cortex-M будут знакомы принципы работы RTOS, прерываний, уровней привилегий, TrustZone и отладки.
- Для критичных к производительности приложений важно правильно разместить код и данные и использовать API памяти и кэша из SDK.
- Кэшируемые DMA-буферы требуют явного обслуживания кэша, если аппаратная когерентность не обеспечивается; для всех DMA-буферов нужны безопасное управление владением и синхронизация.
- Графические, аудио-, ИИ- и коммуникационные нагрузки эффективнее используют ресурсы, если программный стек правильно задействует аппаратные ускорители и иерархию памяти SoC.
Это ядро не предназначено для замены Cortex-M7 во всех сценариях. Если приложению нужна максимальная производительность одного ядра и допустимо более высокое энергопотребление, может подойти устройство класса Cortex-M7. Для подключённых устройств с питанием от батареи STAR-MC1 обеспечивает полезный баланс совместимости, производительности и энергоэффективности.
Подходящие сценарии применения¶
Устройства на STAR-MC1 стоит рассматривать для изделий, которым нужно ускорить доступ к памяти или отдельные операции, сохраняя ограничения MCU по энергопотреблению и интеграции. Их особенно полезно оценивать, когда задержки памяти важнее результата небольшого теста CoreMark/DMIPS. Выбирайте конкретную SoC по реализованным функциям и измеренной производительности на целевой нагрузке, а не исходя из предполагаемого преимущества перед любым обычным Cortex-M33.
Типичные примеры:
- Смарт-часы и фитнес-трекеры.
- Bluetooth-аудиоустройства.
- Носимые медицинские устройства и средства мониторинга здоровья.
- Интеллектуальные дисплеи и компактные HMI-системы.
- Сенсорные устройства с периферийным ИИ.
- Изделия на LVGL и других встраиваемых UI-фреймворках.
- Устройства, выполняющие код из флеш-памяти или PSRAM большого объёма.
Основные выводы¶
- STAR-MC1 совместим с Cortex-M33 и сохраняет знакомую программную модель Armv8-M для встроенных систем.
- Если в SoC реализованы и включены кэш команд и кэш данных, они могут повысить производительность реальных приложений, особенно когда код и данные находятся вне быстрой внутренней SRAM.
- CDE позволяет ускорять пользовательскими инструкциями отдельные задачи, если эту возможность поддерживают SoC и программный стек.
- STAR-MC1 сочетает программную модель, совместимую с CM33, с настраиваемыми функциями памяти и ускорения; сравнивайте конкретные SoC на измеренных нагрузках, а не только названия ядер.
- В устройствах SF32 с STAR-MC1 ядро и реализованные в SoC функции могут поддерживать более сложные графические, аудио-, AIoT- и носимые приложения, сохраняя модель разработки, характерную для MCU.
См. также: обзор семейства SF32, где описано место STAR-MC1 в линейке микросхем SF32LB5x.
Основной источник: Arm China STAR-MC1 Technical Reference Manual.
Последнее обновление: