ARM Cortex-Mпредставляет собой группу процессорных ядер 32-bit RISC ARM. лицензированы Arm Holdings. Эти ядра оптимизированы для недорогих и энергоэффективных микроконтроллеров, встроенных в десятки миллиардов потребительских устройств. Ядра состоят из Cortex-M0, Cortex-M0 +, Cortex-M1, Cortex-M3, Cortex-M4, Cortex-M7, Cortex-M23, Cortex-M33, Cortex-M35P, Cortex-M55. Ядра Cortex-M4 / M7 / M33 / M35P / M55 имеют FPU кремниевый вариант, и когда эти ядра включены в кремний, эти ядра иногда называют «Cortex-Mx с FPU» или «Cortex-MxF», где 'x' - номер ядра.
32-битный | |
---|---|
Год | Core |
2004 | Cortex-M3 |
2007 | Cortex-M1 |
2009 | Cortex-M0 |
2010 | Cortex-M4 |
2012 | Cortex-M0 + |
2014 | Cortex-M7 |
2016 | Cortex-M23 |
2016 | Cortex-M33 |
2018 | Cortex-M35P |
2020 | Cortex-M55 |
Семейство ARM Cortex-M - это ядра микропроцессоров ARM, которые предназначены для использования в микроконтроллерах, ASIC, ASSP, ПЛИС и SoC. Ядра Cortex-M обычно используются как специализированные микросхемы микроконтроллеров, но также «спрятаны» внутри микросхем SoC в качестве контроллеров управления питанием, контроллеров ввода-вывода, системных контроллеров, контроллеров сенсорных экранов, контроллеров интеллектуальных батарей и контроллеров датчиков.
Хотя 8-битные микроконтроллеры были очень популярны в прошлом, Cortex-M постепенно уступает место 8-битному рынку, поскольку цены на недорогие чипы Cortex-M падают. Cortex-M стал популярной заменой 8-битных чипов в приложениях, которые выигрывают от 32-битных математических операций, и заменяет старые устаревшие ядра ARM, такие как ARM7 и ARM9.
Arm Holdings не производит и не продает устройства ЦП на основе собственных разработок, а скорее предоставляет лицензии на архитектуру процессора заинтересованным сторонам. Arm предлагает различные условия лицензирования, различающиеся по стоимости и результатам. Всем лицензиатам Arm предоставляет интегрируемое описание аппаратного обеспечения ядра ARM, а также полный набор инструментов для разработки программного обеспечения и право продавать произведенные кремниевые, содержащие ЦП ARM.
Производители интегрированных устройств (IDM) получают процессор ARM IP как синтезируемый RTL (записанный в Verilog ). В этой форме они могут выполнять оптимизацию и расширения архитектурного уровня. Это позволяет производителю достичь индивидуальных целей проектирования, таких как более высокая тактовая частота, очень низкое энергопотребление, расширения набора команд (включая числа с плавающей запятой), оптимизация размера, поддержка отладки и т. Д. Чтобы определить, какие компоненты были включены в конкретный ARM Чип процессора, обратитесь к техническому описанию производителя и сопутствующей документации.
Вот некоторые из вариантов микросхемы для ядер Cortex-M:
ARM Core | Cortex M0 | Cortex M0 + | Cortex M1 | Cortex M3 | Cortex M4 | Cortex M7 | Cortex M23 | Cortex M33 | Cortex M35P |
---|---|---|---|---|---|---|---|---|---|
SysTick 24-bit Таймер | Необязательно (0,1) | Необязательно (0,1) | Необязательно (0,1) | Да (1) | Да (1) | Да (1) | Необязательно (0,1,2 ) | Да (1,2) | Да (1,2) |
Порт одноциклового ввода-вывода | No | Дополнительно | No | No | No | No | Дополнительно | No | Нет |
Память Bit-Band | No | No | Нет * | Дополнительно | Дополнительно | Дополнительно | No | No | Нет |
Защита памяти Модуль ( MPU) | No | Необязательно (0,8) | No | Необязательно (0,8) | Необязательно (0,8) | Необязательно (0,8,16) | Необязательно (0,4,8,12,16) | Необязательно (0,4,8,12,16) | Необязательно * |
Безопасность Атрибуция Единица (SAU) и Ограничения стека | No | No | No | No | No | No | Необязательно (0,4,8) | Дополнительно (0,4,8) | Дополнительно * |
Инструкция TCM | No | No | Дополнительно | No | No | Дополнительно | No | No | Нет |
Данные TCM | No | No | Дополнительно | No | No | Дополнительно | No | No | Нет |
Инструкция Кэш | No | No | No | No | No | Необязательно | No | No | Необязательно |
Кэш данных | No | No | No | No | No | Необязательно | No | No | Нет |
Таблица векторов Смещение Регистр (VTOR) | No | Необязательно (0,1) | Необязательно (0,1) | Необязательно (0,1) | Необязательно (0,1) | Необязательно (0,1) | Необязательно (0,1,2) | Да (1 , 2) | Да (1,2) |
Дополнительные параметры микросхемы:
Cortex-M0 / M0 + / M1 реализуют архитектуру ARMv6-M, Cortex-M3 реализует архитектуру ARMv7-M, Cortex -M4 / Cortex-M7 реализует архитектуру ARMv7E-M, Cortex-M23 / M33 / M35P реализует архитектуру ARMv8-M, а Cortex-M55 реализует ARMv8.1-Mархитектура. Архитектуры являются двоичными инструкциями, совместимыми снизу вверх, от 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. В архитектурах 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). 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). Cortex-M23 / M33 добавляет инструкции TrustZone.
Arm Core | Cortex M0 | Cortex M0 + | Cortex M1 | Cortex M3 | Cortex M4 | Cortex M7 | Cortex M23 | Cortex M33 | Cortex M35P | Cortex M55 |
---|---|---|---|---|---|---|---|---|---|---|
Архитектура ARM | ARMv6-M | ARMv6-M | ARMv6-M | ARMv7-M | ARMv7E-M | ARMv7E-M | ARMv8-M Baseline | ARMv8-M Mainline | ARMv8-M Mainline | Armv8.1-M |
Архитектура компьютера | Фон Нейман | Фон Нейман | Фон Нейман | Гарвард | Гарвард | Гарвард | Фон Нейман | Гарвард | Гарвард | Гарвард |
Канал обучения | 3 этапа | 2 этапа | 3 этапа | 3 этапа | 3 стадии | 6 стадий | 2 стадии | 3 стадии | 3 стадии | от 4 до 5 стадий |
Thumb -1 инструкции | Большая часть | Большая часть | Большая часть | Весь | Весь | Весь | Мост | Энти re | Вся | Вся |
Thumb-2 instructions | Some | Some | Some | Весь | Весь | Весь | Немного | Целый | Целый | Весь |
Умножить инструкции 32x32 = 32-битный результат | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да |
Инструкции умножения 32x32 = 64-битный результат | No | No | No | Да | Да | Да | No | Да | Да | Да |
Разделить инструкции 32/32 = 32-бит частное | No | No | No | Да | Да | Да | Да | Да | Да | Да |
Насыщенные инструкции | No | No | No | Некоторые | Да | Да | No | Да | Да | Да |
DSP инструкции | No | No | No | No | Да | Да | No | Необязательно | Необязательно | Необязательно |
Single-Precision (SP) Плавающая точка инструкции | No | No | No | No | Необязательно | Необязательно | No | Необязательно | Необязательно | Необязательно |
Двойная точность (DP) Инструкции с плавающей запятой | No | No | No | No | No | Необязательно | No | No | No | Необязательно |
С половинной точностью (HP) | No | No | No | No | No | No | No | No | No | Необязательно |
Инструкции TrustZone | No | No | No | No | No | No | Дополнительно | Optional | Optional | Необязательно |
Процессор инструкции | No | No | No | No | No | No | No | Optional | Дополнительно | Необязательно |
Технология гелия | No | No | No | No | No | No | No | No | No | Необязательно |
Задержка прерывания (если ОЗУ с нулевым ожиданием) | 16 циклов | 15 циклов | 23 для NMI 26 для IRQ | 12 циклов | 12 циклов | 12 циклов | 15 без защиты ext 27 security ext | TBD | TBD | TBD |
Группа | Instr биты | Инструкции | Cortex M0, M0 +, M1 | Cortex M3 | Cortex M4 | Cortex M7 | Cortex M23 | Cortex M33, M35P | Cortex M55 |
---|---|---|---|---|---|---|---|---|---|
Thumb-1 | 16 | ADC, 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 | Да | Да | Да | Да | Да | Да | Да |
Thumb-1 | 16 | CBNZ, CBZ | No | Да | Да | Да | Да | Да | Да |
Thumb-1 | 16 | IT | No | Да | Да | Да | No | Да | Да |
Thumb-2 | 32 | BL, DMB, DSB, ISB, MRS, MSR | Да | Да | Да es | Да | Да | Да | Да |
Thumb-2 | 32 | SDIV, UDIV | No | Да | Да | Да | Да | Да | Да |
Thumb-2 | 32 | ADC, ADD, ADR, AND, ASR, B , BFC, BFI, BIC, CDP, CLREX, CLZ, CMN, CMP, DBG, EOR, LDC, LDM, LDR, LDRB, LDRBT, LDRD, LDREX, LDREXB, LDREXH, LDRH, LDRHT, LDRSB , LDRSBT, LDRSH, LDRSHT, LDRT, LSL, LSR, MCR, MCRR, MLA, MLS, MOV, MOVT, 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, STREX, STREXB, STREXH, STRH, STRHT, STRT, SUB , SXTB, SXTH, TBB, TBH, TEQ, TST, UBFX, UMLAL, UMULL, USAT, UXTB, UXTH, WFE, WFI, YIELD | No | Да | Да | Да | No | Да | Да |
DSP | 32 | PKH, QADD, QADD16, QADD8, QASX, QDADD, QDSUB, QSAX, QSUB, QSUB16, QSUB8, SADD16, SADD8, SASX, SEL, SHADD16, SHADD8, SHASX, SHSAX, SHSUB16, SHSUB8, SMLABB, SMLABT, SMLATB, SMLATT, SMLAD, SMLALBB, SMLALBT, SMLALTB, SML ALTT, SMLALD, SMLAWB, SMLAWT, SMLSD, SMLSLD, SMMLA, SMMLS, SMMUL, SMUAD, SMULBB, SMULBT, SMULTT, SMULTB, SMULWT, SMULWB, SMUSD, SSAT16, SSAX, SSUB16, SSABX8, SXTH16, SSABXTX, SXTX UADD16, UADD8, UASX, UHADD16, UHADD8, UHASX, UHSAX, UHSUB16, UHSUB8, UMAAL, UQADD16, UQADD8, UQASX, UQSAX, UQSUB16, UQSUBTA8, USAD8, USADA8, USATUB16, USATUB16, США. UXTB16 | No | No | Да | Да | No | Необязательно | Да |
SP Float | 32 | VABS, VADD, VCMP, VCMPE, VCVT, VCVTR, VDIV, VLDM, VLDR, VMLA , VMLS, VMOV, VMRS, VMSR, VMUL, VNEG, VNMLA, VNMLS, VNMUL, VPOP, VPUSH, VSQRT, VSTM, VSTR, VSUB | No | No | Дополнительно | Дополнительно | No | Дополнительно | Дополнительно |
DP Float | 32 | VCVTA, VCVTM, VCVTN, VCVTP, VMAXNM, VMINNM, VRINTA, VRINTM, VRINTN, VRINTP, VRINTR, VRINTX, VRINTZ, VSEL | No | No | No | Дополнительно | No | No | Дополнительно |
TrustZone | 16 | BLXNS, BXNS | No | No | No | No | Дополнительно | Дополнительно | Дополнительно |
TrustZone | 32 | SG, TT, TTT, TTA, TTAT | No | No | No | No | Дополнительно | Дополнительно | Дополнительно |
Co-pro cessor | 16 | CDP, CDP2, MCR, MCR2, MCRR, MCRR2, MRC, MRC2, MRRC, MRRC2 | No | No | No | No | No | Необязательно | Необязательно |
Архитектура ARM для серии ARM Cortex-M удалила некоторые функции из старых устаревших ядер:
Возможности 32-битного набора инструкций ARM во многом дублируются наборами инструкций Thumb-1 и Thumb-2, но некоторые функции ARM этого не делают. имеют похожую функцию:
16-битный набор инструкций Thumb-1 со временем развивался с момента его первого выпуска в устаревших ядрах ARM7T с архитектурой ARMv4T. Новые инструкции Thumb-1 были добавлены по мере выпуска каждой устаревшей архитектуры ARMv5 / ARMv6 / ARMv6T2. Некоторые 16-битные инструкции Thumb-1 были удалены из ядер Cortex-M:
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv6-M |
Набор команд | Thumb-1 (большая часть), Thumb-2 (некоторые) |
Ядро Cortex-M0 оптимизировано для использования в кремниевых кристаллах небольшого размера и использовании в фишках по самой низкой цене.
Ключевые особенности ядра Cortex-M0:
Параметры кремния:
Следующие микроконтроллеры основаны на ядре Cortex-M0:
Следующие чипы имеют Cortex-M0 в качестве вторичного ядра:
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv6-M |
Набор команд | Thumb-1 (большинство), Thumb-2 (некоторые) |
Cortex-M0 + является оптимизированным расширенным набором Cortex-M0. Cortex-M0 + полностью совместим с набором инструкций Cortex-M0, что позволяет использовать те же инструменты компилятора и отладки. Конвейер Cortex-M0 + был сокращен с 3 до 2 этапов, что снижает энергопотребление. В дополнение к функциям отладки в существующем Cortex-M0, в Cortex-M0 + можно добавить кремниевую опцию, называемую Micro Trace Buffer (MTB), которая обеспечивает простой буфер трассировки инструкций. Cortex-M0 + также получил функции Cortex-M3 и Cortex-M4, которые могут быть добавлены в качестве кремниевых опций, такие как модуль защиты памяти (MPU) и перемещение векторной таблицы.
Ключевые особенности ядра Cortex-M0 +:
Параметры кремния:
Следующие микроконтроллеры на базе ядра Cortex-M0 +:
Следующие микросхемы имеют Cortex-M0 + в качестве вторичного ядра:
Самые маленькие микроконтроллеры ARM относятся к типу Cortex-M0 + (по состоянию на 2014 г. , самый маленький (1,6 мм на 2 мм) - Kinetis KL03).
21 июня 2018 года «самый маленький компьютер в мире ' » или компьютерное устройство было анонсировано - на базе ARM Cortex-M0 + (включая RAM и беспроводные передатчики и приемники на базе на фотогальванике ) - исследователями Мичиганского университета на симпозиуме 2018 года по технологиям и схемам СБИС с докладом «Беспроводная сенсорная система без батареи 0,04 мм 16 нВт со встроенным процессором Cortex-M0 + и Оптическая связь для измерения температуры сотовой связи ». Размер устройства составляет 1/10 от размера компьютера IBM, который ранее был объявлен мировым рекордом по сравнению с мартом 2018 года, что меньше, чем крупица скепсиса.
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv6-M |
Набор команд | Thumb-1 (большинство), Thumb- 2 (некоторые) |
Cortex-M1 - это оптимизированное ядро, специально разработанное для загрузки в микросхемы FPGA.
Ключевые особенности ядра Cortex-M1:
Кремниевые опции:
Следующие производители поддерживают Cortex-M1 в качестве программных ядер на своих микросхемах FPGA:
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv7-M |
Набор команд | Thumb-1, Thumb-2, Насыщенный (некоторые), Divide |
Ключевые особенности ядра Cortex-M3:
Варианты кремния:
Следующие микроконтроллеры основаны на ядре Cortex-M3:
Следующие микросхемы имеют Cortex-M3 в качестве вторичного ядра:
Следующие FPGA включают ядро Cortex-M3:
Следующие производители поддерживают Cortex-M3 в качестве программных ядер на своих чипах FPGA:
Architectu по и классификация | |
---|---|
Микроархитектура | ARMv7E-M |
Набор команд | Thumb-1, Thumb-2, Saturation, DSP, Divide, FPU (SP) |
Концептуально Cortex-M4 представляет собой Cortex-M3 с инструкциями DSP и дополнительным блоком с плавающей запятой (FPU). Ядро с FPU известно как Cortex-M4F.
Ключевые особенности ядра Cortex-M4:
Кремниевые опции:
Следующие микроконтроллеры основаны на ядре Cortex-M4:
Следующие микроконтроллеры основаны на Cortex- Ядро M4F (M4 + FPU ):
Следующие микросхемы имеют либо Cortex-M4 или M4F в качестве вторичного ядра:
Архитектура и классификация cation | |
---|---|
Микроархитектура | ARMv7E-M |
Набор инструкций | Thumb-1, Thumb-2, Насыщенный, DSP, Divide, FPU (SP & DP) |
Cortex-M7 - это высокопроизводительное ядро с почти вдвое большей энергоэффективностью, чем у более старого Cortex-M4. Он имеет 6-этапный суперскалярный конвейер с предсказанием ветвления и дополнительный модуль с плавающей запятой, способный выполнять операции с одинарной точностью и, опционально, с двойной точностью. Шины инструкций и данных были увеличены до 64-битной ширины по сравнению с предыдущими 32-битными шинами. Если ядро содержит FPU, оно называется Cortex-M7F, иначе это Cortex-M7.
Ключевые особенности ядра Cortex-M7:
Кремниевые опции:
Следующие микроконтроллеры основаны на ядре Cortex-M7:
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv8-M Baseline |
Набор команд | Thumb-1 (most), Thumb-2 (some), Divide, TrustZone |
The Cortex-M23 core was announced in October 2016 and based on the newer ARMv8-M archit ecture that was previously announced in November 2015. Conceptually the Cortex-M23 is similar to a Cortex-M0+ plus integer divide instructions and TrustZone security features, and also has a 2-stage instruction pipeline.
Key features of the Cortex-M23 core are:
Кремниевые опции:
Следующие микроконтроллеры основаны на ядре Cortex-M23:
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv8-M Mainline |
Набор команд | Thumb-1, Thumb-2, Насыщенный, DSP, Divide , FPU (SP), TrustZone, Co-processor |
Ядро Cortex-M33 было анонсировано в октябре 2016 года и основано на более новом ARMv8-M архитектура, о которой ранее было объявлено в ноябре 2015 года. Концептуально Cortex-M33 - это si похож на гибрид Cortex-M4 и Cortex-M23, а также имеет трехступенчатый конвейер команд..
Ключевые особенности ядра Cortex-M33:
Кремниевые опции:
Следующие микроконтроллеры основаны на ядре Cortex-M33:
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv8-M Mainline |
Набор команд | Thumb-1, Thumb-2, Насыщенный, DSP, Разделить, FPU (SP), TrustZone, Сопроцессор |
Ядро Cortex-M35P было анонсировано в мае 2018 года. Концептуально это ядро Cortex-M33 с новым кешем инструкций, а также новыми концепциями оборудования с защитой от несанкционированного доступа, заимствованными из семейства ARM SecurCore, и настраиваемыми функциями четности и ECC.
Limited public i Информация о Cortex-M35P в настоящее время доступна до выпуска его Технического справочного руководства.
Следующие микроконтроллеры основаны на ядре Cortex-M35P:
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv8.1-M Mainline Helium |
Набор команд | Thumb-1, Thumb-2, Насыщенный, DSP, Divide, FPU (VFPv5), TrustZone, Coprocessor, MVE |
Ядро Cortex-M55 было анонсировано в феврале 2020 и основан на архитектуре Armv8.1-M, анонсированной ранее в феврале 2019 года. Он также имеет 4-этапный конвейер команд.
Ключевые особенности ядра Cortex-M55 включают:
Кремниевые опции:
Следующие микроконтроллеры основаны на сотрудничество Ядро rtex-M55:
документация для чипов ARM обширна. В прошлом документация по 8-битным микроконтроллерам обычно помещалась в один документ, но по мере развития микроконтроллеров появилось все необходимое для их поддержки. Пакет документации для микросхем ARM обычно состоит из набора документов от производителя ИС, а также поставщика ядра ЦП (Arm Holdings ).
Типичное нисходящее дерево документации:
Производители ИС имеют дополнительные документы, такие как: руководства пользователя оценочной платы, примечания по применению, руководства по началу работы, программное обеспечение библиотечные документы, исправления и многое другое. См. Раздел Внешние ссылки для ссылок на официальные документы Arm.
Викискладе есть носители, относящиеся к ARM Cortex-M . |
ARM ядро | Бит ширина | ARM веб-сайт | ARM generic руководство пользователя | Техническое руководство ARM справочное руководство | Архитектура ARM справочное руководство |
---|---|---|---|---|---|
Cortex-M0 | 32 | Ссылка | Ссылка | Ссылка | ARMv6-M |
Cortex-M0 + | 32 | Ссылка | Ссылка | Ссылка | ARMv6-M |
Cortex-M1 | 32 | Ссылка | Ссылка | Ссылка | ARMv6-M |
Cortex-M3 | 32 | Ссылка | Ссылка | Ссылка | ARMv7-M |
Cortex-M4 | 32 | Ссылка | Ссылка | Ссылка | ARMv7E-M |
Cortex- M7 | 32 | Ссылка | Ссылка | Ссылка | ARMv7E-M |
Cortex-M23 | 32 | Ссылка | Ссылка | Ссылка | ARMv8-M |
Cortex-M33 | 32 | Ссылка | Ссылка | Ссылка | ARMv8-M |
Cortex-M35P | 32 | Ссылка | TBD | TBD | ARMv8-M |
Cortex-M55 | 32 | Ссылка | TBD | TBD | ARMv8.1- M |