Открыть сервис

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 широко применяется в следующих областях:

Благодаря низкому энергопотреблению и малой площади, 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-2Thumb-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НетНетЕсть

Источники

  1. ARM Architecture Reference Manual (ARMv6-M). ARM Holdings, 2009.
  2. Cortex-M0 Technical Reference Manual. ARM Holdings, 2009.
  3. Cortex-M0+ Technical Reference Manual. ARM Holdings, 2012.
  4. Cortex-M1 Technical Reference Manual. ARM Holdings, 2010.
  5. Joseph Yiu. The Definitive Guide to ARM Cortex-M0 and Cortex-M0+ Processors. 2nd Edition. Newnes, 2015.
  6. ARM Cortex-M Processor Comparison Table. ARM Holdings, 2023.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →