ARMv6-M
ARMv6-M — это 32-битная архитектура набора команд (ISA) для микроконтроллеров, разработанная компанией ARM Holdings. Относится к семейству ARM Cortex-M и представляет собой упрощённую, энергоэффективную версию архитектуры ARMv6, ориентированную на встраиваемые системы с низким энергопотреблением и ограниченными вычислительными ресурсами. ARMv6-M является базовой архитектурой для процессоров Cortex-M0, Cortex-M0+ и Cortex-M1.
История
Архитектура ARMv6-M была представлена в 2009 году как ответ на растущий спрос на ультраэкономичные микроконтроллеры для массовых встраиваемых применений. Предшественником ARMv6-M была архитектура ARMv4T, использовавшаяся в процессорах ARM7TDMI, которые доминировали на рынке микроконтроллеров в 1990-х — начале 2000-х годов. ARMv6-M стала первой архитектурой в новом семействе Cortex-M, предназначенном исключительно для микроконтроллерного сегмента.
Разработка ARMv6-M была направлена на достижение максимальной энергоэффективности и минимальной площади кристалла при сохранении совместимости с экосистемой ARM. Первым процессором на этой архитектуре стал Cortex-M0, анонсированный в 2009 году. Впоследствии появились Cortex-M0+ (2012) с улучшенной энергоэффективностью и Cortex-M1 (2010), оптимизированный для FPGA.
Технические характеристики
Набор команд
ARMv6-M использует только набор команд Thumb, без поддержки полного набора ARM (32-битные инструкции). Поддерживаются:
- Thumb-1 — 16-битные инструкции (базовый набор, около 30 инструкций).
- Thumb-2 — ограниченная поддержка 32-битных инструкций (около 10 инструкций, включая умножение, деление и работу с 32-битными константами).
Все инструкции Thumb-2 в ARMv6-M являются подмножеством инструкций, доступных в более старшей архитектуре ARMv7-M. Это обеспечивает переносимость кода между архитектурами семейства Cortex-M.
Регистры
Процессор имеет 13 32-битных регистров общего назначения (R0–R12), регистр указателя стека (R13/SP), регистр связи (R14/LR) и счётчик команд (R15/PC). Регистры R0–R7 доступны во всех инструкциях Thumb-1, регистры R8–R12 — только в некоторых инструкциях Thumb-2.
Прерывания
ARMv6-M использует встроенный контроллер прерываний NVIC (Nested Vectored Interrupt Controller), поддерживающий до 32 внешних прерываний (в зависимости от реализации). NVIC обеспечивает:
- Векторизацию прерываний (прямой вызов обработчика).
- Приоритезацию (до 4 уровней приоритета, определяемых битовым полем).
- Вложенность прерываний (автоматическое сохранение контекста).
Память
Архитектура поддерживает 32-битное адресное пространство (до 4 ГБ). Используется гарвардская архитектура с раздельными шинами инструкций и данных (в Cortex-M0+ — фон-неймановская архитектура с единой шиной). Поддерживается:
- Битовая адресация (bit-banding) в двух областях памяти (0x20000000–0x200FFFFF и 0x40000000–0x400FFFFF).
- Мало-эндианный порядок байтов (little-endian) по умолчанию.
Энергопотребление
ARMv6-M оптимизирована для работы с минимальным энергопотреблением. Типичные значения:
- Cortex-M0: 0,085 мВт/МГц (при 90 нм техпроцессе).
- Cortex-M0+: 0,06 мВт/МГц (при 90 нм техпроцессе).
Процессоры поддерживают несколько режимов энергосбережения: Sleep, Deep Sleep и (в некоторых реализациях) Standby.
Процессоры на архитектуре ARMv6-M
Cortex-M0
Первый и наиболее распространённый процессор на ARMv6-M. Представлен в 2009 году. Характеристики:
- Тактовая частота: до 48 МГц (типично 16–32 МГц).
- Производительность: 0,84 DMIPS/МГц (Dhrystone 2.1).
- Площадь ядра: около 12 000 вентилей (при 90 нм).
- Энергопотребление: 0,085 мВт/МГц.
Используется в микроконтроллерах NXP LPC1100, STM32F0, Silicon Labs EFM32 Zero и других.
Cortex-M0+
Представлен в 2012 году как улучшенная версия Cortex-M0. Отличия:
- Двухстадийный конвейер (вместо трёхстадийного у Cortex-M0), что снижает энергопотребление на 30–40%.
- Поддержка опционального микроконтроллера с единой шиной (фон-неймановская архитектура).
- Улучшенная система прерываний (до 32 прерываний с 4 уровнями приоритета).
- Производительность: 0,84 DMIPS/МГц (та же, что у Cortex-M0).
- Энергопотребление: 0,06 мВт/МГц.
Используется в микроконтроллерах NXP LPC800, Microchip SAM D10/D11, Renesas RA2A1 и других.
Cortex-M1
Представлен в 2010 году, оптимизирован для реализации на FPGA (программируемых логических интегральных схемах). Характеристики:
- Тактовая частота: до 50 МГц (на FPGA Xilinx Spartan-6).
- Площадь: около 12 000 вентилей (на FPGA).
- Поддержка опционального кэша инструкций (до 4 КБ).
- Совместимость с шинами AHB-Lite и AXI.
Используется в системах на кристалле (SoC) для FPGA, например, в Xilinx MicroBlaze (как альтернатива) и в проектах с открытым кодом.
Применение
ARMv6-M широко применяется в следующих областях:
- Бытовая электроника: пульты дистанционного управления, датчики, игрушки.
- Промышленная автоматизация: контроллеры, датчики, исполнительные механизмы.
- Интернет вещей (IoT): умные лампы, термостаты, счётчики.
- Автомобильная электроника: датчики давления, температуры, положения.
- Медицинские устройства: мониторы, пульсометры, ингаляторы.
- Потребительские товары: электронные книги, фитнес-трекеры, умные часы.
Благодаря низкому энергопотреблению и малой площади, ARMv6-M часто используется в устройствах с питанием от батарей и в приложениях, где важна стоимость.
Преимущества и недостатки
Преимущества
- Низкое энергопотребление: одно из самых низких среди 32-битных архитектур.
- Малая площадь кристалла: позволяет создавать дешёвые микроконтроллеры.
- Простота программирования: ограниченный набор инструкций упрощает разработку и отладку.
- Совместимость: код, написанный для ARMv6-M, может быть перенесён на более старшие архитектуры Cortex-M (ARMv7-M, ARMv8-M).
- Экосистема: широкая поддержка инструментов (Keil MDK, IAR EWARM, GCC, FreeRTOS, mbed OS).
Недостатки
- Ограниченная производительность: меньшее количество инструкций и отсутствие некоторых возможностей (например, SIMD, FPU) ограничивает применение в задачах с интенсивными вычислениями.
- Отсутствие поддержки операционных систем реального времени (RTOS) с виртуализацией: архитектура не поддерживает MPU (Memory Protection Unit) и TrustZone (защищённая среда).
- Ограниченная поддержка 32-битных инструкций: Thumb-2 в ARMv6-M поддерживает только 10 32-битных инструкций, что снижает эффективность кода для некоторых алгоритмов.
Сравнение с другими архитектурами
| Параметр | ARMv6-M (Cortex-M0) | ARMv7-M (Cortex-M3) | ARMv8-M (Cortex-M23) |
|---|---|---|---|
| Набор команд | Thumb-1 + ограниченный Thumb-2 | Полный Thumb-2 | Thumb-1 + Thumb-2 + TrustZone |
| Производительность | 0,84 DMIPS/МГц | 1,25 DMIPS/МГц | 0,9 DMIPS/МГц |
| Энергопотребление | 0,085 мВт/МГц | 0,13 мВт/МГц | 0,1 мВт/МГц |
| Площадь ядра | 12 000 вентилей | 33 000 вентилей | 15 000 вентилей |
| Поддержка MPU | Нет | Есть | Есть |
| Поддержка TrustZone | Нет | Нет | Есть |
Источники
- ARM Architecture Reference Manual (ARMv6-M). ARM Holdings, 2009.
- Cortex-M0 Technical Reference Manual. ARM Holdings, 2009.
- Cortex-M0+ Technical Reference Manual. ARM Holdings, 2012.
- Cortex-M1 Technical Reference Manual. ARM Holdings, 2010.
- Joseph Yiu. The Definitive Guide to ARM Cortex-M0 and Cortex-M0+ Processors. 2nd Edition. Newnes, 2015.
- ARM Cortex-M Processor Comparison Table. ARM Holdings, 2023.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →