ARM Cortex-M

Группа 32-битных ядер RISC-процессора
Микросхемы микроконтроллеров ARM Cortex-M0 и Cortex-M3 от NXP и Silicon Labs ( Energy Micro )
Кристалл от микросхемы STM32F100C4T6B. Микроконтроллер ARM Cortex-M3
24  МГц с  флэш-памятью 16 КБ , ОЗУ 4 КБ. Производитель STMicroelectronics .

ARM Cortex-M — это группа 32-битных ядер RISC- процессора ARM , лицензированных ARM Limited . Эти ядра оптимизированы для недорогих и энергоэффективных интегральных схем, которые были встроены в десятки миллиардов потребительских устройств. [1] Хотя они чаще всего являются основным компонентом микросхем микроконтроллеров , иногда их встраивают и в другие типы микросхем. Семейство Cortex-M состоит из Cortex-M0, [2] Cortex-M0+, [3] Cortex-M1, [4] Cortex-M3, [5] Cortex-M4, [6] Cortex-M7, [7 ] Cortex-M23, [8] Cortex-M33, [9] Cortex-M35P, [10] Cortex-M52, [11] Cortex-M55, [12] Cortex-M85. [13] Опция блока с плавающей точкой (FPU) доступна для ядер Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85, и когда эти ядра включены в кремний, они иногда называются «Cortex-MxF», где «x» — это вариант ядра.

Обзор

32-битный
ГодОсновной
2004Кортекс-М3
2007Кортекс-М1
2009Кортекс-М0
2010Кортекс-М4
2012Кортекс-М0+
2014Кортекс-М7
2016Кортекс-М23
2016Кортекс-М33
2018Cortex-M35P
2020Кортекс-М55
2022Кортекс-М85
2023Кортекс-М52

Семейство ARM Cortex-M — это ядра микропроцессоров ARM, которые предназначены для использования в микроконтроллерах , ASIC , ASSP , FPGA и SoC . Ядра Cortex-M обычно используются в качестве специализированных микроконтроллерных чипов, но также «скрыты» внутри чипов SoC в качестве контроллеров управления питанием, контроллеров ввода-вывода, системных контроллеров, контроллеров сенсорных экранов, контроллеров интеллектуальных батарей и контроллеров датчиков.

Главное отличие от ядер Cortex-A заключается в том, что ядра Cortex-M не имеют блока управления памятью (MMU) для виртуальной памяти , который считается необходимым для «полноценных» операционных систем . Программы Cortex-M вместо этого запускаются на «голом железе» или на одной из многочисленных операционных систем реального времени , которые поддерживают Cortex-M .

Хотя 8-битные микроконтроллеры были очень популярны в прошлом, Cortex-M медленно отвоевывает 8-битный рынок, поскольку цены на недорогие чипы Cortex-M снижаются. Cortex-M стали популярной заменой 8-битных чипов в приложениях, которые используют 32-битные математические операции, и заменяют старые ядра ARM, такие как ARM7 и ARM9 .

Лицензия

ARM Limited не производит и не продает процессорные устройства на основе собственных разработок, а лицензирует архитектуру процессора заинтересованным сторонам. Arm предлагает различные условия лицензирования, различающиеся по стоимости и поставляемым продуктам. Всем лицензиатам Arm предоставляет интегрируемое аппаратное описание ядра ARM, а также полный набор инструментов для разработки программного обеспечения и право продавать изготовленный кремний, содержащий процессор ARM.

Изготовление на заказ из силикона

Производители интегрированных устройств (IDM) получают IP процессора ARM в виде синтезируемого RTL (написанного на Verilog ). В этой форме они имеют возможность выполнять оптимизации и расширения на уровне архитектуры. Это позволяет производителю достигать индивидуальных целей проектирования, таких как более высокая тактовая частота, очень низкое энергопотребление, расширения набора инструкций (включая плавающую точку), оптимизация размера, поддержка отладки и т. д. Чтобы определить, какие компоненты были включены в конкретный чип ЦП ARM, обратитесь к техническому описанию производителя и соответствующей документации.

Некоторые варианты кремния для ядер Cortex-M:

  • Таймер SysTick: 24-битный системный таймер, который расширяет функциональность как процессора, так и контроллера вложенных векторных прерываний (NVIC). При наличии он также обеспечивает дополнительное настраиваемое приоритетное прерывание SysTick. [14] [15] [16] Хотя таймер SysTick является необязательным для M0/M0+/M1/M23, крайне редко можно найти микроконтроллер Cortex-M без него. Если микроконтроллер Cortex-M33/M35P/M52/M55/M85 имеет опцию Security Extension, то он опционально может иметь два SysTick (один Secure, один Non-secure).
  • Bit-Band: отображает полное слово памяти на один бит в области bit-band. Например, запись в псевдоним слова установит или очистит соответствующий бит в области bit-band. Это позволяет каждому отдельному биту в области bit-band быть напрямую доступным из выровненного по слову адреса. В частности, отдельные биты могут быть установлены, очищены или переключены из C/C++ без выполнения последовательности инструкций чтения-изменения-записи. [14] [15] [16] Хотя bit-band является необязательным, реже можно найти микроконтроллеры Cortex-M3 и Cortex-M4 без него. Некоторые микроконтроллеры Cortex-M0 и Cortex-M0+ имеют bit-band.
  • Memory Protection Unit (MPU): Обеспечивает поддержку защиты областей памяти посредством применения правил привилегий и доступа. Поддерживает до шестнадцати различных областей, каждая из которых может быть разделена на подобласти равного размера. [14] [15] [16]
  • Tightly-Coupled Memory (TCM): SRAM с малой задержкой (нулевое состояние ожидания ) , которая может использоваться для хранения стека вызовов , структур управления RTOS, структур данных прерываний, кода обработчика прерываний и критичного к скорости кода. Помимо кэша ЦП , TCM является самой быстрой памятью в микроконтроллере ARM Cortex-M. Поскольку TCM не кэшируется и не доступна с той же скоростью, что и процессор и кэш, ее можно концептуально описать как «адресуемый кэш». Существуют ITCM (TCM инструкций) и DTCM (TCM данных), позволяющие процессору с архитектурой Гарварда одновременно считывать данные из обоих. DTCM не может содержать никаких инструкций, но ITCM может содержать данные. Поскольку TCM тесно связан с ядром процессора, механизмы DMA могут не иметь возможности доступа к TCM в некоторых реализациях.
Дополнительные компоненты ARM Cortex-M
ARM-ядроКортекс
М0 [17]
Кортекс
М0+ [18]
Кортекс
М1 [19]
Кортекс
М3 [20]
Кортекс
М4 [21]
Кортекс
М7 [22]
Кортекс
М23 [23]
Кортекс
М33 [24]
Кортекс
М35П [10]
Кортекс
М52 [25]
Кортекс
М55 [26]
Кортекс
М85 [27]
24-битный таймер SysTickНеобязательно
(0,1)
Необязательно
(0, 1)
Необязательно
(0,1)
Да
(1)
Да
(1)
Да
(1)
Необязательно
(0, 1, 2)
Да
(1, 2)
Да
(1, 2)
Да
(1, 2)
Да
(1, 2)
Да
(1, 2)
Одноцикловый порт ввода-выводаНетНеобязательныйНетНетНетНетНеобязательныйНетНетНетНетНет
Память бит-полосыНет [28]Нет [28]Нет*НеобязательныйНеобязательныйНеобязательныйНетНетНетНетНетНет

Блок защиты памяти ( MPU )
НетНеобязательно
(0, 8)
НетНеобязательно
(0,8)
Необязательно
(0, 8)
Необязательно
(0, 8, 16)
Необязательно
(0, 4, 8, 12, 16)
Необязательно
(0, 4, 8, 12, 16)
Необязательно
(до 16)*
Необязательно
(0, 4, 8, 12, 16)
Необязательно
(0, 4, 8, 12, 16)
Необязательно
(0, 4, 8, 12, 16)
Блок атрибуции безопасности
(SAU) и
ограничения стека
НетНетНетНетНетНетНеобязательно
(0, 4, 8)
Необязательно
(0, 4, 8)
Необязательно
(до 8)*
Необязательно
(0, 4, 8)
Необязательно
(0, 4, 8)
Необязательно
(0, 4, 8)
Кэш инструкцийНет [29]Нет [29]Нет [29]Нет [29]Нет [29]Необязательно
(до 64 КБ)
НетНетНеобязательно
(до 16 КБ)
Необязательно
(до 64 КБ)
Необязательно
(до 64 КБ)
Необязательно
(до 64 КБ)
Кэш данныхНет [29]Нет [29]Нет [29]Нет [29]Нет [29]Необязательно
(до 64 КБ)
НетНетНетНеобязательно
(до 64 КБ)
Необязательно
(до 64 КБ)
Необязательно
(до 64 КБ)
Инструкция TCM
(ITCM) Память
НетНетНеобязательно
(до 1 МБ)
НетНетНеобязательно
(до 16 МБ)
НетНетНетНеобязательно
(до 16 МБ)
Необязательно
(до 16 МБ)
Необязательно
(до 16 МБ)
Память данных TCM
(DTCM)
НетНетНеобязательно
(до 1 МБ)
НетНетНеобязательно
(до 16 МБ)
НетНетНетНеобязательно
(до 16 МБ)
Необязательно
(до 16 МБ)
Необязательно
(до 16 МБ)
ECC для TCM
и кэша
НетНетНетНетНетНетНетНетНеобязательныйНеобязательныйНеобязательныйНеобязательный
Регистр смещения векторной таблицы
(VTOR)
НетНеобязательно
(0,1)
Необязательно
(0,1)
Необязательно
(0,1)
Необязательно
(0,1)
Необязательно
(0,1)
Необязательно
(0,1,2)
Да
(1,2)
Да
(1,2)
Да
(1,2)
Да
(1,2)
Да
(1,2)
  • Примечание: большинство чипов Cortex-M3 и M4 имеют бит-полосу и MPU. Опция бит-полосы может быть добавлена ​​к M0/M0+ с помощью набора Cortex-M System Design Kit. [28]
  • Примечание: программное обеспечение должно проверять наличие каждой функции перед попыткой ее использования. [16]
  • Примечание: ограниченная общедоступная информация о Cortex-M35P будет доступна до тех пор, пока не будет выпущено его техническое справочное руководство .

Дополнительные варианты кремния: [14] [15]

  • Порядок данных: Little-endian или big-endian. В отличие от устаревших ядер ARM, Cortex-M постоянно зафиксирован в кремнии как один из этих вариантов.
  • Прерывания: от 1 до 32 (M0/M0+/M1), от 1 до 240 (M3/M4/M7/M23), от 1 до 480 (M33/M35P/M52/M55/M85).
  • Контроллер прерывания пробуждения: опционально.
  • Регистр смещения векторной таблицы: необязательно (недоступно для M0).
  • Ширина выборки инструкций: только 16 бит или в основном 32 бита.
  • Поддержка пользователей/привилегий: необязательно.
  • Сбросить все регистры: необязательно.
  • Одноцикловый порт ввода-вывода: опционально. (M0+/M23).
  • Порт отладочного доступа (DAP): нет, SWD , JTAG и SWD. (опционально для всех ядер Cortex-M)
  • Остановка поддержки отладки: необязательно.
  • Количество компараторов контрольных точек: от 0 до 2 (M0/M0+/M1), от 0 до 4 (M3/M4/M7/M23/M33/M35P/M52/M55/M85).
  • Количество компараторов точек останова: от 0 до 4 (M0/M0+/M1/M23), от 0 до 8 (M3/M4/M7/M33/M35P/M52/M55/M85).

Наборы инструкций

Cortex-M0 / M0+ / M1 реализуют архитектуру ARMv6-M , [14] Cortex-M3 реализует архитектуру ARMv7-M , [15] Cortex-M4 / Cortex-M7 реализует архитектуру ARMv7E-M , [15] Cortex-M23 / M33 / M35P реализуют архитектуру ARMv8-M , [30] а Cortex-M52 / M55 / M85 реализует архитектуру ARMv8.1-M . [30] Архитектуры имеют двоичную совместимость инструкций от ARMv6-M до ARMv7-M и до ARMv7E-M. Двоичные инструкции, доступные для Cortex-M0 / Cortex-M0+ / Cortex-M1, могут выполняться без изменений на Cortex-M3 / Cortex-M4 / Cortex-M7. Двоичные инструкции, доступные для Cortex-M3, могут выполняться без изменений на Cortex-M4 / Cortex-M7 / Cortex-M33 / Cortex-M35P. [14] [15] В архитектурах Cortex-M поддерживаются только наборы инструкций Thumb-1 и Thumb-2; устаревший 32-битный набор инструкций ARM не поддерживается.

Все ядра Cortex-M реализуют общее подмножество инструкций, которое состоит из большинства Thumb-1, некоторых Thumb-2, включая 32-битный результат умножения. Cortex-M0 / Cortex-M0+ / Cortex-M1 / Cortex-M23 были разработаны для создания наименьшего кремниевого кристалла, таким образом, имеющего наименьшее количество инструкций семейства Cortex-M.

Cortex-M0 / M0+ / M1 включают инструкции Thumb-1, за исключением новых инструкций (CBZ, CBNZ, IT), которые были добавлены в архитектуре ARMv7-M. Cortex-M0 / M0+ / M1 включают небольшое подмножество инструкций Thumb-2 (BL, DMB, DSB, ISB, MRS, MSR). [14] Cortex-M3 / M4 / M7 / M33 / M35P имеют все базовые инструкции Thumb-1 и Thumb-2. Cortex-M3 добавляет три инструкции Thumb-1, все инструкции Thumb-2, аппаратное целочисленное деление и инструкции арифметики насыщения . Cortex-M4 добавляет инструкции DSP и дополнительный блок с плавающей точкой одинарной точности (VFPv4-SP). Cortex-M7 добавляет дополнительный блок FPU двойной точности (VFPv5). [22] [15] Cortex-M23 / M33 / M35P / M52 / M55 / M85 добавляют инструкции TrustZone .

Варианты инструкций ARM Cortex-M
Ядро рукиКортекс
М0 [17]
Кортекс
М0+ [18]
Кортекс
М1 [19]
Кортекс
М3 [20]
Кортекс
М4 [21]
Кортекс
М7 [22]
Кортекс
М23 [23]
Кортекс
М33 [24]
Кортекс
М35П
Кортекс
М52 [25]
Кортекс
М55 [26]
Кортекс
М85 [27]
ARM-архитектураARMv6-М
[14]
ARMv6-М
[14]
ARMv6-М
[14]
ARMv7-М
[15]
ARMv7E-M
[15]
ARMv7E-M
[15]

Базовый уровень ARMv8-M [30]

Основная линия ARMv8-M [30]

Основная линия ARMv8-M [30]
Armv8.1-M
Основная линия [30]
Armv8.1-M
Основная линия [30]
Armv8.1-M
Основная линия [30]
Архитектура компьютераФон
Нейман
Фон
Нейман
Фон
Нейман
ГарвардГарвардГарвардФон
Нейман
ГарвардГарвардГарвардГарвардГарвард
Конвейер инструкций3 этапа2 этапа3 этапа3 этапа3 этапа6 этапов2 этапа3 этапа3 этапа4 этапа4-5 этапов7 этапов
Задержка прерывания
(память с нулевым состоянием ожидания )
16 циклов15 циклов23 для NMI,
26 для IRQ
12 циклов12 циклов12 циклов,
14 худший
случай
15 циклов,
24 защищены
от NS IRQ
12 циклов,
21 защищен
от NS IRQ
Будет определеноБудет определеноБудет определеноБудет определено
Инструкции Thumb-1БольшинствоБольшинствоБольшинствоВесьВесьВесьБольшинствоВесьВесьВесьВесьВесь
Инструкции для большого пальца 2НекоторыйНекоторыйНекоторыйВесьВесьВесьНекоторыйВесьВесьВесьВесьВесь
Инструкции по умножению
32×32 = 32-битный результат
ДаДаДаДаДаДаДаДаДаДаДаДа
Инструкции по умножению
32×32 = 64-битный результат
НетНетНетДаДаДаНетДаДаДаДаДа
Инструкции деления
32/32 = 32-битное частное
НетНетНетДаДаДаДаДаДаДаДаДа
Насыщенные математические инструкцииНетНетНетНекоторыйДаДаНетДаДаДаДаДа
инструкции ЦСПНетНетНетНетДаДаНетНеобязательныйНеобязательныйДаДаДа
Инструкции
с плавающей точкой половинной точности (HP)
НетНетНетНетНетНетНетНетНетНеобязательныйНеобязательныйНеобязательный

Инструкции с плавающей точкой одинарной точности (SP)
НетНетНетНетНеобязательныйНеобязательныйНетНеобязательныйНеобязательныйНеобязательныйНеобязательныйНеобязательный

Инструкции с плавающей точкой двойной точности (DP)
НетНетНетНетНетНеобязательныйНетНетНетНеобязательныйНеобязательныйНеобязательный
Инструкции по вектору гелияНетНетНетНетНетНетНетНетНетНеобязательныйНеобязательныйНеобязательный
Инструкции по безопасности TrustZoneНетНетНетНетНетНетНеобязательныйНеобязательныйНеобязательныйНеобязательныйНеобязательныйДа
Инструкции сопроцессораНетНетНетНетНетНетНетНеобязательныйНеобязательныйНеобязательныйНеобязательныйНеобязательный
Пользовательские инструкции ARM (ACI)НетНетНетНетНетНетНетНеобязательныйНетНеобязательныйНеобязательныйНеобязательный
Инструкции по аутентификации указателя и идентификации цели ветвления
(PACBTI)
НетНетНетНетНетНетНетНетНетНеобязательныйНетНеобязательный
  • Примечание: Количество циклов задержки прерывания предполагает: 1) стек, расположенный в ОЗУ с нулевым состоянием ожидания, 2) другую функцию прерывания, которая в данный момент не выполняется, 3) Опция Security Extension не существует, поскольку она добавляет дополнительные циклы. Ядра Cortex-M с архитектурой компьютера Гарварда имеют более короткую задержку прерывания, чем ядра Cortex-M с архитектурой компьютера Фон Неймана.
  • Примечание: серия Cortex-M включает три новые 16-битные инструкции Thumb-1 для режима сна: SEV, WFE, WFI.
  • Примечание: Cortex-M0 / M0+ / M1 не включает в себя следующие 16-битные инструкции Thumb-1 : CBZ, CBNZ, IT. [14] [15]
  • Примечание: Cortex-M0 / M0+ / M1 включают только следующие 32-битные инструкции Thumb-2 : BL, DMB, DSB, ISB, MRS, MSR. [14] [15]
  • Примечание: Cortex-M0 / M0+ / M1 / ​​M23 имеет только 32-битные инструкции умножения с младшим 32-битным результатом (32 бит × 32 бита = младшие 32 бита), тогда как Cortex-M3 / M4 / M7 / M33 / M35P включает дополнительные 32-битные инструкции умножения с 64-битными результатами (32 бит × 32 бита = 64 бита). Cortex-M4 / M7 (опционально M33 / M35P) включает инструкции DSP для (16 бит × 16 бит = 32 бита), (32 бит × 16 бит = старшие 32 бита), (32 бит × 32 бита = старшие 32 бита) умножений. [14] [15]
  • Примечание: Количество циклов для выполнения инструкций умножения и деления различается в зависимости от конструкции ядра ARM Cortex-M. Некоторые ядра имеют опцию кремния для выбора высокой скорости или малого размера (низкой скорости), поэтому ядра имеют возможность использовать меньше кремния с недостатком большего количества циклов. Прерывание, возникающее во время выполнения инструкции деления или медленной итеративной инструкции умножения, заставит процессор отказаться от инструкции, а затем перезапустить ее после возврата прерывания.
    • Инструкции умножения «32-битный результат» – Cortex-M0/M0+/M23 – это 1 или 32-тактный вариант кремния, Cortex-M1 – это 3 или 33-тактный вариант кремния, Cortex-M3/M4/M7/M33/M35P – это 1-тактный вариант.
    • Умножение инструкций «64-битный результат» – Cortex-M3 составляет 3–5 тактов (в зависимости от значений), Cortex-M4/M7/M33/M35P – 1 такт.
    • Разделение инструкций – Cortex-M3/M4 составляет 2–12 циклов (в зависимости от значений), Cortex-M7 составляет 3–20 циклов (в зависимости от значений), Cortex-M23 составляет 17 или 34 цикла (опция), Cortex-M33 составляет 2–11 циклов (в зависимости от значений), Cortex-M35P будет определен позднее.
  • Примечание: Некоторые ядра Cortex-M имеют кремниевые опции для различных типов блоков с плавающей точкой ( FPU ). Cortex-M55 / M85 имеет опцию для половинной точности ( HP ), Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85 имеет опцию для одинарной точности ( SP ), Cortex-M7 / M52 / M55 / M85 имеет опцию для двойной точности ( DP ). Когда включен FPU, ядро ​​иногда называют «Cortex-MxF», где «x» — это вариант ядра, например, Cortex-M4 F. [ 14] [15]
Группы инструкций ARM Cortex-M
ГруппаИнстр
биты
ИнструкцииКортекс
М0, М0+, М1
Кортекс
М3
Кортекс
М4
Кортекс
М7
Кортекс
М23
Кортекс
М33
Кортекс
М35П
Кортекс
М52
Кортекс
М55
Кортекс
М85
Большой палец-116ADC, ADD, ADR, AND, ASR, B, BIC, BKPT, BLX, BX, CMN, CMP, CPS, EOR, LDM, LDR, LDRB, LDRH, LDRSB, LDRSH, LSL, LSR, MOV, MUL, MVN, NOP, ORR, POP, PUSH, REV, REV16, REVSH, ROR, RSB, SBC, SEV, STM, STR, STRB, STRH, SUB, SVC, SXTB, SXTH, TST, UXTB, UXTH, WFE, WFI, YIELDДаДаДаДаДаДаДаДаДаДа
Большой палец-116CBNZ, CBZНетДаДаДаДаДаДаДаДаДа
Большой палец-116ЭТОНетДаДаДаНетДаДаДаДаДа
Большой палец-232BL, DMB, DSB, ISB, MRS, MSRДаДаДаДаДаДаДаДаДаДа
Большой палец-232SDIV, UDIV, MOVT, MOVW, BW, LDREX, LDREXB, LDREXH, STREX, STREXB, STREXHНетДаДаДаДаДаДаДаДаДа
Большой палец-232ADC, ADD, ADR, AND, ASR, B, BFC, BFI, BIC, CDP, CLREX, CLZ , CMN, CMP, DBG, EOR, LDC, LDM, LDR, LDRB, LDRBT, LDRD, LDRH, LDRHT, LDRSB, LDRSBT, LDRSH, LDRSHT, LDRT, LSL, LSR, MCR, MCRR, MLA, MLS, MRC, MRRC, MUL, MVN, NOP, ORN, ORR, PLD, PLDW, PLI, POP, PUSH, RBIT, REV, REV16, REVSH, ROR, RRX, RSB, SBC, SBFX, SEV, SMLAL, SMULL, SSAT, STC, STM, STR, STRB, STRBT, STRD, STRH, STRHT, STRT, SUB, SXTB, SXTH, TBB, TBH, TEQ, TST, UBFX, UMLAL, UMULL, USAT, UXTB, UXTH, WFE, WFI, ДОХОДНОСТЬНетДаДаДаНетДаДаДаДаДа
ЦСП32PKH, QADD, QADD16, QADD8, QASX, QDADD, QDSUB, QSAX, QSUB, QSUB16, QSUB8, SADD16, SADD8, SASX, SEL, SHADD16, SHADD8, SHASX, SHSAX, SHSUB16, SHSUB8, SMLABB, SMLABT, SMLATB, SMLATT, СМЛАД, SMLALBB, SMLALBT, SMLALTB, SMLALTT, SMLALD, SMLAWB, SMLAWT, SMLSD, SMLSLD, SMMLA, SMMLS, SMMUL, SMUAD, SMULBB, SMULBT, SMULTT, SMULTB, SMULWT, SMULWB, SMUSD, SSAT16, SSAX, SSUB16, SSUB8, SXTAB, SXTAB16, SXTAH, SXTB16, UADD16, UADD8, UASX, UHADD16, UHADD8, UHASX, UHSAX, UHSUB16, UHSUB8, UMAAL, UQADD16, UQADD8, UQASX, UQSAX, UQSUB16, UQSUB8, USAD8, USADA8, USAT16, USAX, USUB16, USUB8, UXTAB, UXTAB16, UXTAH, UXTB16НетНетДаДаНетНеобязательныйНеобязательныйДаДаДа
SP-поплавок32VABS, VADD, VCMP, VCMPE, VCVT, VCVTR, VDIV, VLDM, VLDR, VMLA, VMLS, VMOV, VMRS, VMSR, VMUL, VNEG, VNMLA, VNMLS, VNMUL, VPOP, VPUSH, VSQRT, VSTM, VSTR, VSUBНетНетНеобязательныйНеобязательныйНетНеобязательныйНеобязательныйНеобязательныйНеобязательныйНеобязательный
DP-поплавок32VCVTA, VCVTM, VCVTN, VCVTP, VMAXNM, VMINNM, VRINTA, VRINTM, VRINTN, VRINTP, VRINTR, VRINTX, VRINTZ, VSELНетНетНетНеобязательныйНетНетНетНеобязательныйНеобязательныйНеобязательный
Приобрести/Освободить32LDA, LDAB, LDAH, LDAEX, LDAEXB, LDAEXH, STL, STLB, STLH, STLEX, STLEXB, STLEXHНетНетНетНетДаДаДаДаДаДа
TrustZone16БЛКСНС, БКСНСНетНетНетНетНеобязательныйНеобязательныйНеобязательныйНеобязательныйНеобязательныйДа
32СГ, ТТ, ТТТ, ТТА, ТТАТ
Сопроцессор16CDP, CDP2, MCR, MCR2, MCRR, MCRR2, MRC, MRC2, MRRC, MRRC2НетНетНетНетНетНеобязательныйНеобязательныйНеобязательныйНеобязательныйНеобязательный
АКИ32CX1, CX1A, CX2, CX2A, CX3, CX3A, CX1D, CX1DA, CX2D, CX2DA, CX3D, CX3DA, VCX1, VCX1A, VCX2, VCX2A, VCX3, VCX3AНетНетНетНетНетНеобязательныйНетНеобязательныйНеобязательныйНеобязательный
ПАКБТИ32AUT, AUTG, BTI, BXAUT, PAC, PACBTI, PACGНетНетНетНетНетНетНетНеобязательныйНетНеобязательный
  • Примечание: MOVW — это псевдоним, означающий 32-битную «широкую» инструкцию MOV.
  • Примечание: BW — это безусловный переход на большие расстояния (по кодировке, принципу действия и диапазону аналогичен BL, за исключением настройки регистра LR).
  • Примечание: для Cortex-M1 существуют инструкции WFE/WFI/SEV, но они выполняются как инструкции NOP.
  • Примечание: инструкции FPU половинной точности (HP) действительны в Cortex-M52 / M55 / M85 только при наличии опции HP FPU в кремнии.
  • Примечание: инструкции FPU с одинарной точностью (SP) действительны в Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85 только при наличии опции SP FPU в кремнии.
  • Примечание: инструкции FPU двойной точности (DP) действительны в Cortex-M7 / M52 / M55 / M85 только при наличии опции DP FPU в кремнии.

Устаревания

Архитектура ARM для серии ARM Cortex-M удалила некоторые функции старых ядер: [14] [15]

Возможности 32-битного набора инструкций ARM во многом дублируются наборами инструкций Thumb-1 и Thumb-2, но некоторые функции ARM не имеют аналогичной функции:

  • Инструкции ARM SWP и SWPB (поменять местами) не имеют аналогичной функции в Cortex-M.

Набор 16-битных инструкций Thumb-1 со временем эволюционировал с момента его первого выпуска в устаревших ядрах ARM7T с архитектурой ARMv4T. Новые инструкции Thumb-1 добавлялись по мере выпуска каждой устаревшей архитектуры ARMv5 / ARMv6 / ARMv6T2. Некоторые 16-битные инструкции Thumb-1 были удалены из ядер Cortex-M:

  • Инструкция "BLX <immediate>" не существует, поскольку она использовалась для переключения с набора инструкций Thumb-1 на ARM. Инструкция "BLX <register>" все еще доступна в Cortex-M.
  • SETEND не существует, поскольку оперативное переключение режима порядка байтов больше не поддерживается.
  • Инструкции сопроцессора не поддерживались на ядрах Cortex-M, пока кремниевая опция не была вновь введена в «ARMv8-M Mainline» для ядер ARM Cortex-M33/M35P.
  • Инструкция SWI была переименована в SVC, хотя двоичное кодирование инструкции осталось прежним. Однако код обработчика SVC отличается от кода обработчика SWI из-за изменений в моделях исключений.

Кортекс-М0

Кортекс-М0
Архитектура и классификация
Набор инструкцийARMv6-M ( Thumb-1 (большинство),
Thumb-2 (некоторые))

Ядро Cortex-M0 оптимизировано для небольших размеров кремниевых кристаллов и использования в самых недорогих чипах. [2]

Ключевые особенности ядра Cortex-M0: [17]

  • Архитектура ARMv6-M [14]
  • 3-х ступенчатый трубопровод
  • Наборы инструкций:
    • Большой палец 1 (большинство), отсутствует CBZ, CBNZ, IT
    • Thumb-2 (некоторые), только BL, DMB, DSB, ISB, MRS, MSR
    • 32-битное аппаратное целочисленное умножение с 32-битным результатом
  • От 1 до 32 прерываний , плюс NMI

Варианты кремния:

  • Скорость аппаратного целочисленного умножения: 1 или 32 цикла.

Чипсы

nRF51822

На базе ядра Cortex-M0 построены следующие микроконтроллеры:

Следующие чипы имеют Cortex-M0 в качестве вторичного ядра:

Кортекс-М0+

Кортекс-М0+
Архитектура и классификация
МикроархитектураARMv6-М
Набор инструкцийБольшой палец 1 (большинство) ,
Большой палец 2 (некоторые)
Плата NXP ( Freescale ) FRDM-KL25Z с KL25Z128VLK (Kinetis L)

Cortex-M0+ — это оптимизированный надмножество Cortex-M0. Cortex-M0+ имеет полную совместимость набора инструкций с Cortex-M0, что позволяет использовать тот же компилятор и отладочные инструменты. Конвейер Cortex-M0+ был сокращен с 3 до 2 этапов, что снижает энергопотребление и увеличивает производительность (более высокий средний IPC из-за ветвлений, занимающих на один цикл меньше). В дополнение к функциям отладки в существующем Cortex-M0, к Cortex-M0+ может быть добавлена ​​кремниевая опция, называемая буфером микротрассировки (MTB), которая обеспечивает простой буфер трассировки инструкций. Cortex-M0+ также получил функции Cortex-M3 и Cortex-M4, которые могут быть добавлены как кремниевые опции, такие как блок защиты памяти (MPU) и перемещение векторной таблицы. [18]

Ключевые особенности ядра Cortex-M0+: [18]

  • Архитектура ARMv6-M [14]
  • 2-ступенчатый конвейер (на один меньше, чем Cortex-M0)
  • Наборы инструкций: (такие же, как у Cortex-M0)
    • Большой палец 1 (большинство), отсутствует CBZ, CBNZ, IT
    • Thumb-2 (некоторые), только BL, DMB, DSB, ISB, MRS, MSR
    • 32-битное аппаратное целочисленное умножение с 32-битным результатом
  • От 1 до 32 прерываний , плюс NMI

Варианты кремния:

  • Скорость аппаратного целочисленного умножения: 1 или 32 цикла
  • 8-региональный блок защиты памяти (MPU) (такой же, как у M3 и M4)
  • Перемещение векторной таблицы (аналогично M3, M4)
  • Одноцикловый порт ввода-вывода (доступен в M0+/M23)
  • Микробуфер трассировки (MTB) (доступен в M0+/M23/M33/M35P)

Чипсы

На базе ядра Cortex-M0+ построены следующие микроконтроллеры:

Следующие чипы имеют Cortex-M0+ в качестве вторичного ядра:

  • Cypress PSoC 6200 (один Cortex-M4F + один Cortex-M0+)
  • ST WB (один Cortex-M4F + один Cortex-M0+)

Самые маленькие микроконтроллеры ARM относятся к типу Cortex-M0+ (по состоянию на 2014 год наименьшим размером 1,6 мм на 2 мм в корпусе размером с чип является Kinetis KL03). [32]

21 июня 2018 года был анонсирован « самый маленький в мире компьютер » или компьютерное устройство на базе ARM Cortex-M0+ (включая оперативную память и беспроводные передатчики и приемники на основе фотоэлектрических элементов ) исследователями из Мичиганского университета на симпозиуме по технологиям и схемам СБИС 2018 года с докладом «Беспроводная и безбатарейная сенсорная система размером 0,04 мм 3 16 нВт со встроенным процессором Cortex-M0+ и оптической связью для измерения температуры в сотовой сети». Устройство составляет одну десятую размера компьютера IBM, который ранее был объявлен мировым рекордом по размеру, выпущенного несколько месяцев назад в марте 2018 года, что меньше крупинки соли.

Кортекс-М1

Кортекс-М1
Архитектура и классификация
МикроархитектураARMv6-М
Набор инструкцийБольшой палец 1 (большинство) ,
Большой палец 2 (некоторые)

Cortex-M1 — это оптимизированное ядро, специально разработанное для загрузки в микросхемы FPGA . [4]

Ключевые особенности ядра Cortex-M1: [19]

  • Архитектура ARMv6-M [14]
  • 3-х ступенчатый трубопровод .
  • Наборы инструкций:
    • Большой палец 1 (большинство), отсутствуют CBZ, CBNZ, IT.
    • Thumb-2 (некоторые), только BL, DMB, DSB, ISB, MRS, MSR.
    • 32-битное аппаратное целочисленное умножение с 32-битным результатом.
  • От 1 до 32 прерываний , плюс NMI .

Варианты кремния:

  • Скорость аппаратного целочисленного умножения: 3 или 33 цикла.
  • Дополнительная сильносвязанная память (TCM): от 0 до 1 МБ инструкций-TCM, от 0 до 1 МБ данных-TCM, каждая с опциональным ECC.
  • Внешние прерывания: 0, 1, 8, 16, 32.
  • Отладка: отсутствует, сокращенная, полная.
  • Порядок байтов в данных: прямой порядок байтов или BE-8 прямой порядок байтов.
  • Расширение ОС: присутствует или отсутствует.

Чипсы

Следующие поставщики поддерживают Cortex-M1 в качестве программных ядер на своих чипах FPGA:

  • Альтера Циклон-II, Циклон-III, Стратикс-II, Стратикс-III
  • ГОВИН М1 [33]
  • Actel / Microsemi / Microchip Fusion, IGLOO/e, ProASIC3L, ProASIC3/E
  • Xilinx Spartan-3, Virtex-2, Virtex-3, Virtex-4, Artix-7 [34]

Кортекс-М3

Кортекс-М3
Архитектура и классификация
МикроархитектураARMv7-М
Набор инструкцийБольшой палец-1 , Большой палец-2 ,
Насыщенный (немного), Разделить
Плата Arduino Due с микроконтроллером Atmel ATSAM3X8E ( ядро ARM Cortex-M3 )
Плата разработки NXP LPCXpresso с LPC1343

Ключевые особенности ядра Cortex-M3: [20] [35]

  • Архитектура ARMv7-M [15]
  • 3-ступенчатый конвейер с отраслевой спекуляцией .
  • Наборы инструкций:
    • Большой палец-1 (целый).
    • Большой палец-2 (целый).
    • 32-битное аппаратное целочисленное умножение с 32-битным или 64-битным результатом, со знаком или без знака, сложение или вычитание после умножения. 32-битное умножение занимает 1 цикл, но 64-битное умножение и инструкции MAC требуют дополнительных циклов.
    • 32-битное аппаратное целочисленное деление (2–12 циклов).
    • поддержка арифметики насыщения .
  • От 1 до 240 прерываний , плюс NMI .
  • Задержка прерывания 12 циклов.
  • Интегрированные режимы сна.

Варианты кремния:

  • Дополнительный блок защиты памяти (MPU): 0 или 8 регионов.

Чипсы

На базе ядра Cortex-M3 построены следующие микроконтроллеры:

Следующие чипы имеют Cortex-M3 в качестве вторичного ядра:

Следующие ПЛИС включают в себя ядро ​​Cortex-M3:

Следующие поставщики поддерживают Cortex-M3 в качестве программных ядер на своих чипах FPGA:

  • Альтера Циклон-II, Циклон-III, Стратикс-II, Стратикс-III
  • Xilinx Spartan-3, Virtex-2, Virtex-3, Virtex-4, Artix-7 [37]

Кортекс-М4

Кортекс-М4
Архитектура и классификация
МикроархитектураARMv7E-M
Набор инструкцийБольшой палец-1 , Большой палец-2 ,
Насыщенный , DSP ,
Разделение, FPU (SP)
Silicon Labs ( Energy Micro ) Wonder Gecko STK плата с EFM32 WG990
Плата TI Stellaris Launchpad с LM4F120

Концептуально Cortex-M4 — это Cortex-M3 плюс инструкции DSP и опциональный блок с плавающей точкой (FPU). Ядро с FPU известно как Cortex-M4F.

Ключевые особенности ядра Cortex-M4: [21]

  • Архитектура ARMv7E-M [15]
  • 3-ступенчатый конвейер с отраслевой спекуляцией .
  • Наборы инструкций:
    • Большой палец-1 (целый).
    • Большой палец-2 (целый).
    • 32-битное аппаратное целочисленное умножение с 32-битным или 64-битным результатом, со знаком или без знака, сложение или вычитание после умножения. 32-битное умножение и MAC занимают 1 цикл.
    • 32-битное аппаратное целочисленное деление (2–12 циклов).
    • Поддержка арифметики насыщения .
    • Расширение DSP: однотактный 16/32-битный MAC , однотактный двойной 16-битный MAC, 8/16-битная арифметика SIMD .
  • От 1 до 240 прерываний , плюс NMI .
  • Задержка прерывания 12 циклов.
  • Интегрированные режимы сна.

Варианты кремния:

  • Дополнительный блок с плавающей точкой (FPU): только одинарная точность, совместимая с IEEE-754 . Называется расширением FPv4-SP.
  • Дополнительный блок защиты памяти (MPU): 0 или 8 областей.

Чипсы

nRF52833 на микробите v2
STM32F407IGH6

На базе ядра Cortex-M4 построены следующие микроконтроллеры:

На базе ядра Cortex-M4F (M4 + FPU ) построены следующие микроконтроллеры :

Следующие чипы имеют Cortex-M4 или M4F в качестве вторичного ядра:

Кортекс-М7

Кортекс-М7
Архитектура и классификация
МикроархитектураARMv7E-M
Набор инструкцийThumb-1 , Thumb-2 ,
Saturated , DSP ,
Divide, FPU (SP и DP)
Плата Arduino GIGA R1 WiFi с (двухъядерным ARM Cortex-M7 + ARM Cortex-M4) микроконтроллером STM32H747XIH6

Cortex-M7 — это высокопроизводительное ядро ​​с почти вдвое большей энергоэффективностью, чем у старого Cortex-M4. [7] Оно оснащено 6-ступенчатым суперскалярным конвейером с предсказанием ветвлений и дополнительным блоком с плавающей точкой, способным выполнять операции с одинарной точностью и, опционально, с двойной точностью . [7] [38] Шины инструкций и данных были увеличены до 64 бит по сравнению с предыдущими 32-битными шинами. Если ядро ​​содержит FPU, оно известно как Cortex-M7F, в противном случае это Cortex-M7.

Ключевые особенности ядра Cortex-M7: [22]

  • Архитектура ARMv7E-M.
  • 6-ступенчатый конвейер с ветвящимся спекулятивным подходом . Второе по длине из всех ядер ARM Cortex-M, первое — Cortex-M85.
  • Наборы инструкций:
    • Большой палец-1 (целый).
    • Большой палец-2 (целый).
    • 32-битное аппаратное целочисленное умножение с 32-битным или 64-битным результатом, со знаком или без знака, сложение или вычитание после умножения. 32-битное умножение и MAC занимают 1 цикл.
    • 32-битное аппаратное целочисленное деление (2–12 циклов).
    • Поддержка арифметики насыщения .
    • Расширение DSP: однотактный 16/32-битный MAC , однотактный двойной 16-битный MAC, 8/16-битная арифметика SIMD .
  • От 1 до 240 прерываний , плюс NMI .
  • Задержка прерывания 12 циклов.
  • Интегрированные режимы сна.

Варианты кремния:

  • Дополнительный блок с плавающей точкой (FPU): (одинарная точность) или (одинарная и двойная точность), оба соответствуют IEEE-754-2008. Это называется расширением FPv5.
  • Дополнительный кэш ЦП : кэш инструкций от 0 до 64 КБ, кэш данных от 0 до 64 КБ, каждый с опциональным ECC .
  • Дополнительная тесно связанная память (TCM): от 0 до 16 МБ инструкций-TCM, от 0 до 16 МБ данных-TCM, каждая с опциональным ECC.
  • Дополнительный блок защиты памяти (MPU): 8 или 16 областей.
  • Дополнительная встроенная трассировочная макроячейка (ETM): только инструкции или инструкции и данные.
  • Дополнительный режим удержания (с комплектом управления питанием Arm) для режимов сна.
  • Опциональная функция двойной избыточности Lock Step .

Чипсы

На базе ядра Cortex-M7 построены следующие микроконтроллеры:

Кортекс-М23

Кортекс-М23
Архитектура и классификация
МикроархитектураБазовый уровень ARMv8-M
Набор инструкцийThumb-1 (большинство) ,
Thumb-2 (некоторые) ,
Разделить, TrustZone

Ядро Cortex-M23 было анонсировано в октябре 2016 года [39] и основано на архитектуре ARMv8-M , которая была анонсирована ранее в ноябре 2015 года. [40] Концептуально Cortex-M23 похож на Cortex-M0+, плюс инструкции целочисленного деления и функции безопасности TrustZone, а также имеет двухступенчатый конвейер инструкций . [8]

Ключевые особенности ядра Cortex-M23: [23] [39]

  • Базовая архитектура ARMv8-M. [30]
  • 2-х ступенчатый конвейер. (аналогично Cortex-M0+)
  • Инструкции по безопасности TrustZone .
  • 32-битное аппаратное целочисленное деление (17 или 34 цикла). (медленнее, чем деление во всех других ядрах)
  • Границы предела стека. (доступно только с опцией SAU)

Варианты кремния:

  • Скорость аппаратного целочисленного умножения: 1 или 32 цикла.
  • Скорость аппаратного целочисленного деления: максимум 17 или 34 цикла. В зависимости от делителя инструкция может быть выполнена за меньшее количество циклов.
  • Дополнительный блок защиты памяти (MPU): 0, 4, 8, 12, 16 областей.
  • Дополнительный блок атрибутов безопасности (SAU): регионы 0, 4, 8.
  • Одноцикловый порт ввода-вывода (доступен в M0+/M23).
  • Микротрейс-буфер (MTB)

Чипсы

На базе ядра Cortex-M23 построены следующие микроконтроллеры:

Кортекс-М33

Кортекс-М33
Архитектура и классификация
МикроархитектураARMv8-M Основная линия
Набор инструкцийThumb-1 , Thumb-2 ,
Saturated , DSP ,
Divide, FPU (SP),
TrustZone , Сопроцессор

Ядро Cortex-M33 было анонсировано в октябре 2016 года [39] и основано на архитектуре ARMv8-M , которая была анонсирована ранее в ноябре 2015 года. [40] Концептуально Cortex-M33 похож на гибрид Cortex-M4 и Cortex-M23, а также имеет 3-ступенчатый конвейер инструкций . [9]

Ключевые особенности ядра Cortex-M33: [24] [39]

  • Основная архитектура ARMv8-M. [30]
  • 3-х ступенчатый трубопровод.
  • Инструкции по безопасности TrustZone .
  • 32-битное аппаратное целочисленное деление (максимум 11 циклов).
  • Границы предела стека. (доступно только с опцией SAU)

Варианты кремния:

  • Дополнительный блок с плавающей точкой (FPU): только одинарная точность, совместимая с IEEE-754 . Называется расширением FPv5.
  • Дополнительный блок защиты памяти (MPU): 0, 4, 8, 12, 16 областей.
  • Дополнительный блок атрибутов безопасности (SAU): регионы 0, 4, 8.
  • Микротрейс-буфер (MTB)

Чипсы

На базе ядра Cortex-M33 построены следующие микроконтроллеры:

Следующие чипы имеют Cortex-M33 или M33F в качестве вторичного ядра:

Cortex-M35P

Cortex-M35P
Архитектура и классификация
МикроархитектураARMv8-M Основная линия
Набор инструкцийThumb-1 , Thumb-2 ,
Saturated , DSP ,
Divide, FPU (SP),
TrustZone , Сопроцессор

Ядро Cortex-M35P было анонсировано в мае 2018 года и основано на архитектуре Armv8-M . Концептуально это ядро ​​Cortex-M33 с новым кэшем инструкций, а также новыми концепциями аппаратной защиты от несанкционированного доступа, заимствованными из семейства ARM SecurCore, и настраиваемыми функциями четности и ECC. [10]

В настоящее время информация о Cortex-M35P ограничена, поскольку его техническое справочное руководство и общее руководство пользователя еще не опубликованы.

Чипсы

На базе ядра Cortex-M35P построены следующие микроконтроллеры:

Кортекс-М52

Кортекс-М52
Архитектура и классификация
МикроархитектураARMv8.1-M Основной гелий
Набор инструкцийThumb-1 , Thumb-2 ,
Saturated , DSP ,
Divide, FPU (VFPv5),
TrustZone , Сопроцессор, MVE

Ядро Cortex-M52 было анонсировано в ноябре 2023 года и основано на архитектуре Armv8.1-M . Концептуально его можно рассматривать как нечто среднее между Cortex-M33 и Cortex-M55. Основные отличия заключаются в том, что его сопроцессор Helium является однотактным (M55 — двухтактным), и он имеет 32-битную главную шину, аналогичную M33, для облегчения перехода приложений. Он имеет 4-ступенчатый конвейер инструкций. [11]

Ключевые особенности ядра Cortex-M52 включают в себя:

  • Архитектура ARMv8.1-M Mainline/Helium. [30]
  • 4-х ступенчатый конвейер.
  • Границы предела стека (доступно только с опцией SAU).
  • 32-битная основная шина (AHB или AXI) [11]

Варианты кремния:

  • Гелий (расширение вектора M-профиля, MVE)
  • Расширение аутентификации указателя и идентификации цели ветвления
  • С плавающей точкой одинарной и двойной точности
  • Поддержка расширения цифровой обработки сигналов (DSP)
  • Поддержка расширения безопасности TrustZone
  • Поддержка безопасности и надежности (RAS)
  • Поддержка сопроцессора
  • Безопасный и незащищенный MPU с 0, 4, 8, 12 или 16 областями
  • SAU с 0, 4 или 8 регионами
  • Кэш инструкций размером до 64 КБ
  • Кэш данных размером до 64 КБ
  • ECC на кэшах и TCM
  • 1–480 прерываний
  • 3–8 бит приоритета исключения
  • Внутренние и внешние опции WIC, опционально CTI, ITM и DWT
  • Пользовательские инструкции ARM

Чипсы

Следующие микроконтроллеры основаны на ядре Cortex M52

  • Geehy Semiconductor G32R5 [42]

Кортекс-М55

Кортекс-М55
Архитектура и классификация
МикроархитектураARMv8.1-M Основной гелий
Набор инструкцийThumb-1 , Thumb-2 ,
Saturated , DSP ,
Divide, FPU (VFPv5),
TrustZone , Сопроцессор, MVE

Ядро Cortex-M55 было анонсировано в феврале 2020 года и основано на архитектуре Armv8.1-M . Оно имеет 4- или 5-ступенчатый конвейер инструкций. [12]

Ключевые особенности ядра Cortex-M55 включают в себя:

  • Архитектура ARMv8.1-M Mainline/Helium. [30]
  • 4-х ступенчатый конвейер.
  • Границы предела стека (доступно только с опцией SAU).
  • 64-битная основная шина AXI [12]

Варианты кремния:

  • Гелий (расширение вектора M-профиля, MVE)
  • С плавающей точкой одинарной и двойной точности
  • Поддержка расширения цифровой обработки сигналов (DSP)
  • Поддержка расширения безопасности TrustZone
  • Поддержка безопасности и надежности (RAS)
  • Поддержка сопроцессора
  • Безопасный и незащищенный MPU с 0, 4, 8, 12 или 16 областями
  • SAU с 0, 4 или 8 регионами
  • Кэш инструкций размером 4 КБ, 8 КБ, 16 КБ, 32 КБ, 64 КБ
  • Кэш данных размером 4 КБ, 8 КБ, 16 КБ, 32 КБ, 64 КБ
  • ECC на кэшах и TCM
  • 1–480 прерываний
  • 3–8 бит приоритета исключения
  • Внутренние и внешние опции WIC, опционально CTI, ITM и DWT
  • Пользовательские инструкции ARM

Чипсы

  • Семейства микроконтроллеров Alif Semiconductor Ensemble предлагают одно- или двухъядерные ядра Cortex-M55, каждое из которых работает в паре с нейропроцессорами Ethos-U55.
  • Infineon PSoC Edge

Кортекс-М85

Кортекс-М85
Архитектура и классификация
МикроархитектураARMv8.1-M Основной гелий
Набор инструкцийThumb-1 , Thumb-2 ,
Saturated , DSP ,
Divide, FPU (VFPv5),
TrustZone , Сопроцессор, MVE

Ядро Cortex-M85 было анонсировано в апреле 2022 года и основано на архитектуре Armv8.1-M . Оно имеет 7-ступенчатый конвейер инструкций. [13]

Варианты кремния:

  • Дополнительный кэш ЦП : кэш инструкций от 0 до 64 КБ, кэш данных от 0 до 64 КБ, каждый с опциональным ECC .
  • Дополнительная тесно связанная память (TCM): от 0 до 16 МБ инструкций-TCM, от 0 до 16 МБ данных-TCM, каждая с опциональным ECC.
  • Дополнительный блок защиты памяти (MPU): 16 регионов. Могут иметь отдельные для безопасного и небезопасного режима, если реализован TrustZone .
  • До 480 прерываний и NMI
  • 3–8 бит приоритета исключения
  • Опциональная функция двойной избыточности Lock Step .

Чипсы

Инструменты разработки

Документация

Документация для чипов ARM обширна. Раньше документация по 8-битным микроконтроллерам обычно умещалась в один документ, но по мере развития микроконтроллеров также развивалось и все необходимое для их поддержки. Пакет документации для чипов ARM обычно состоит из набора документов от производителя ИС, а также поставщика ядра ЦП ( ARM Limited ).

Типичное нисходящее дерево документации выглядит следующим образом:

Дерево документации (сверху вниз)
  1. Сайт производителя микросхем.
  2. Маркетинговые слайды производителя ИС.
  3. Технический паспорт производителя микросхемы для точного физического чипа.
  4. Справочное руководство производителя микросхем, в котором описываются распространенные периферийные устройства и аспекты семейства физических микросхем.
  5. Основной веб-сайт ARM.
  6. Общее руководство пользователя ядра ARM.
  7. Техническое справочное руководство по ядру ARM.
  8. Справочное руководство по архитектуре ARM.

У производителей ИС есть дополнительные документы, такие как: руководства пользователя оценочной платы, примечания по применению, руководства по началу работы, документы библиотеки программного обеспечения, исправления и т. д. См. раздел Внешние ссылки для ссылок на официальные документы Arm.

Смотрите также

Ссылки

  1. ^ Веб-сайт ARM Cortex-M; ARM Limited.
  2. ^ ab "Cortex-M0 Home". ARM Limited .
  3. ^ "Cortex-M0+ Home". ARM Limited .
  4. ^ ab "Cortex-M1 Home". ARM Limited .
  5. ^ "Cortex-M3 Home". ARM Limited .
  6. ^ "Cortex-M4 Home". ARM Limited .
  7. ^ abc "Cortex-M7 Home". ARM Limited .
  8. ^ ab "Cortex-M23 Home". ARM Limited .
  9. ^ ab "Cortex-M33 Home". ARM Limited .
  10. ^ abc "Cortex-M35P Home". ARM Limited .
  11. ^ abc "Cortex-M52 Home". ARM Limited .
  12. ^ abc "Cortex-M55 Home". ARM Limited .
  13. ^ ab "Cortex-M85 Home". ARM Limited .
  14. ^ abcdefghijklmnopqr "Справочное руководство по архитектуре ARMv6-M". ARM Limited .
  15. ^ abcdefghijklmnopqr "Справочное руководство по архитектуре ARMv7-M". ARM Limited .
  16. ^ abcd Разработка встроенного программного обеспечения Cortex-M3; Примечание к приложению 179; ARM Limited.
  17. ^ abc "Техническое справочное руководство Cortex-M0". ARM Limited .
  18. ^ abcd "Техническое справочное руководство по Cortex-M0+". ARM Limited .
  19. ^ abc "Техническое справочное руководство по Cortex-M1". ARM Limited .
  20. ^ abc "Техническое справочное руководство по Cortex-M3". ARM Limited .
  21. ^ abc "Техническое справочное руководство по Cortex-M4". ARM Limited .
  22. ^ abcd "Техническое справочное руководство по Cortex-M7". ARM Limited .
  23. ^ abc "Техническое справочное руководство по Cortex-M23". ARM Limited .
  24. ^ abc "Техническое справочное руководство по Cortex-M33". ARM Limited .
  25. ^ ab "Техническое справочное руководство Cortex-M52". ARM Limited .
  26. ^ ab "Техническое справочное руководство Cortex-M55". ARM Limited .
  27. ^ ab "Техническое справочное руководство Cortex-M85". ARM Limited .
  28. ^ abc "Cortex-M System Design Kit (CMSDK)". Arm Holdings . Архивировано из оригинала 4 марта 2016 г.
  29. ^ abcdefghij Руководство по программированию ARM Cortex-M для инструкций барьера памяти; Раздел 3.6 Требования к реализации системы; AppNote 321; ARM Limited.
  30. ^ abcdefghijkl "Справочное руководство по архитектуре ARMv8-M". ARM Limited .
  31. ^ 32-битные микроконтроллеры PIC и SAM; Microchip.
  32. ^ Fingas, Jon (25 февраля 2014 г.). «Freescale делает самый маленький в мире чип контроллера ARM еще меньше» . Получено 2 октября 2014 г.
  33. ^ GOWIN Semiconductor присоединяется к ARM DesignStart, предлагая бесплатные процессоры ARM Cortex-M1 для своих семейств продуктов FPGA
  34. ^ Cortex-M1 DesignStart FPGA XilinxEdition; ARM Limited.
  35. ^ Садасиван, Шьям. "Введение в процессор ARM Cortex-M3" (PDF) . ARM Limited. Архивировано из оригинала (PDF) 26 июля 2014 г.
  36. ^ "Samsung Exynos 7420 Deep Dive - Inside a Modern 14nm SoC". AnandTech . Получено 2015-06-15 .
  37. ^ Cortex-M3 DesignStart FPGA XilinxEdition
  38. ^ "ARM выводит рынок микроконтроллеров на новый уровень с помощью высокопроизводительного процессора Cortex-M7". ARM Limited (пресс-релиз). 24 сентября 2014 г.
  39. ^ abcd Новые процессоры ARM Cortex-M предлагают следующий отраслевой стандарт для безопасного Интернета вещей; ARM Limited; 25 октября 2016 г.
  40. ^ Архитектура ARMv8-M упрощает безопасность интеллектуальных встраиваемых устройств; ARM Limited; 10 ноября 2015 г.
  41. ^ "nRF54H20 - Nordic Semiconductor". www.nordicsemi.com . Получено 2024-10-30 .
  42. ^ «Первый в мире двухъядерный микроконтроллер реального времени с процессором Cortex-M52 представлен на выставке Electronica China 2024».

Дальнейшее чтение

  • Руководство разработчика по семейству процессоров Cortex-M ; 3-е изд.; Тревор Мартин; 648 страниц; 2022; ISBN 978-0323854948 . 
  • Полное руководство по процессорам ARM Cortex-M0 и Cortex-M0+ ; 2-е изд.; Джозеф Йиу; 784 страницы; 2015; ISBN 978-0128032770 . 
  • Полное руководство по процессорам ARM Cortex-M3 и Cortex-M4 ; 3-е изд.; Джозеф Йиу; 864 страницы; 2013; ISBN 978-0124080829 . 
  • Полное руководство по процессорам ARM Cortex-M23 и Cortex-M33 ; 1-е изд.; Джозеф Йиу; 928 страниц; 2020; ISBN 978-0128207352 . 
  • Микроконтроллеры на языке C: Cortex-M и далее ; 1-е изд.; Клаус Элк; 227 страниц; 2023; ISBN 979-8862003437 . 
  • Встроенные системы с микроконтроллерами ARM Cortex-M на языках ассемблера и C ; 4-е изд.; Ифэн Чжу; 730 страниц; 2023; ISBN 978-0982692677 . 
  • Сборка ARM для встраиваемых приложений ; 5-е изд.; Дэниел Льюис; 379 страниц; 2019; ISBN 978-1092542234 . 
  • Программирование на языке ассемблера: ARM Cortex-M3 ; 1-е изд.; Винсент Махоут; 256 страниц; 2012; ISBN 978-1848213296 . 
  • Цифровая обработка сигналов и приложения с использованием ARM Cortex-M4 ; 1-е изд.; Дональд Рей; 320 страниц; 2015; ISBN 978-1118859049 . 
  • Практическое руководство по ОСРВ с микроконтроллерами ; 1-е изд.; Брайан Амос; 496 страниц; 2020; ISBN 978-1838826734 . 
Официальные документы ARM Cortex-M
  • Официальный сайт ARM Cortex-M
  • Cortex-M для начинающих arm.com
  • Расширения безопасности ARMv8-M arm.com
  • Стандарт программного интерфейса микроконтроллера Cortex (CMSIS) arm.com
ARM-
ядро

Ширина бита

Веб-сайт АРМ

Общее руководство пользователя ARM

Техническое справочное руководство ARM

Справочное руководство по архитектуре ARM
Кортекс-М032СвязьСвязьСвязьARMv6-М
Кортекс-М0+32СвязьСвязьСвязьARMv6-М
Кортекс-М132СвязьСвязьСвязьARMv6-М
Кортекс-М332СвязьСвязьСвязьARMv7-М
Кортекс-М432СвязьСвязьСвязьARMv7E-M
Кортекс-М732СвязьСвязьСвязьARMv7E-M
Кортекс-М2332СвязьСвязьСвязьARMv8-М
Кортекс-М3332СвязьСвязьСвязьARMv8-М
Cortex-M35P32СвязьН/ДН/ДARMv8-М
Кортекс-М5232СвязьН/ДСвязьARMv8.1-М
Кортекс-М5532СвязьСвязьСвязьARMv8.1-М
Кортекс-М8532СвязьСвязьСвязьARMv8.1-М
Краткие справочные карты
  • Инструкции: Thumb-1 (1), ARM и Thumb-2 (2), Векторные вычисления с плавающей точкой (3) arm.com
  • Коды операций: Thumb-1 (1, 2), ARM (3, 4), Директивы ассемблера GNU (5).
Миграция
  • Переход с 8051 на Cortex-M3 – arm.com
  • Миграция с PIC на Cortex-M3 – arm.com
  • Миграция с ARM7TDMI на Cortex-M3 – arm.com
  • Миграция с Cortex-M4 на Cortex-M7 – keil.com
Другой
  • Bit Banding на микроконтроллерах STM32 Cortex-M
Взято с "https://en.wikipedia.org/w/index.php?title=ARM_Cortex-M&oldid=1254312080#Cortex-M4"