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 |
2018 | Cortex-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:
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) |
Дополнительные варианты кремния: [14] [15]
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 .
Ядро руки | Кортекс М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) | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Необязательный | Нет | Необязательный |
Группа | Инстр биты | Инструкции | Кортекс М0, М0+, М1 | Кортекс М3 | Кортекс М4 | Кортекс М7 | Кортекс М23 | Кортекс М33 | Кортекс М35П | Кортекс М52 | Кортекс М55 | Кортекс М85 |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Большой палец-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 | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да |
Большой палец-1 | 16 | CBNZ, CBZ | Нет | Да | Да | Да | Да | Да | Да | Да | Да | Да |
Большой палец-1 | 16 | ЭТО | Нет | Да | Да | Да | Нет | Да | Да | Да | Да | Да |
Большой палец-2 | 32 | BL, DMB, DSB, ISB, MRS, MSR | Да | Да | Да | Да | Да | Да | Да | Да | Да | Да |
Большой палец-2 | 32 | SDIV, UDIV, MOVT, MOVW, BW, LDREX, LDREXB, LDREXH, STREX, STREXB, STREXH | Нет | Да | Да | Да | Да | Да | Да | Да | Да | Да |
Большой палец-2 | 32 | ADC, 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, ДОХОДНОСТЬ | Нет | Да | Да | Да | Нет | Да | Да | Да | Да | Да |
ЦСП | 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, SMLALTT, SMLALD, SMLAWB, SMLAWT, SMLSD, SMLSLD, SMMLA, SMMLS, SMMUL, SMUAD, SMULBB, SMULBT, SMULTT, SMULTB, SMULWT, SMULWB, SMUSD, SSAT16, SSAX, SSUB16, SSUB8, СХТАБ, SXTAB16, SXTAH, SXTB16, UADD16, UADD8, UASX, UHADD16, UHADD8, UHASX, UHSAX, UHSUB16, UHSUB8, UMAAL, UQADD16, UQADD8, UQASX, UQSAX, UQSUB16, UQSUB8, USAD8, USADA8, USAT16, USAX, , USB8, UXTAB, UXTAB16, UXTAH, UXTB16 | Нет | Нет | Да | Да | Нет | Необязательный | Необязательный | Да | Да | Да |
SP-поплавок | 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 | Нет | Нет | Необязательный | Необязательный | Нет | Необязательный | Необязательный | Необязательный | Необязательный | Необязательный |
DP-поплавок | 32 | VCVTA, VCVTM, VCVTN, VCVTP, VMAXNM, VMINNM, VRINTA, VRINTM, VRINTN, VRINTP, VRINTR, VRINTX, VRINTZ, VSEL | Нет | Нет | Нет | Необязательный | Нет | Нет | Нет | Необязательный | Необязательный | Необязательный |
Приобрести/Освободить | 32 | LDA, LDAB, LDAH, LDAEX, LDAEXB, LDAEXH, STL, STLB, STLH, STLEX, STLEXB, STLEXH | Нет | Нет | Нет | Нет | Да | Да | Да | Да | Да | Да |
TrustZone | 16 | БЛКСНС, БКСНС | Нет | Нет | Нет | Нет | Необязательный | Необязательный | Необязательный | Необязательный | Необязательный | Да |
32 | СГ, ТТ, ТТТ, ТТА, ТТАТ | |||||||||||
Сопроцессор | 16 | CDP, CDP2, MCR, MCR2, MCRR, MCRR2, MRC, MRC2, MRRC, MRRC2 | Нет | Нет | Нет | Нет | Нет | Необязательный | Необязательный | Необязательный | Необязательный | Необязательный |
АКИ | 32 | CX1, CX1A, CX2, CX2A, CX3, CX3A, CX1D, CX1DA, CX2D, CX2DA, CX3D, CX3DA, VCX1, VCX1A, VCX2, VCX2A, VCX3, VCX3A | Нет | Нет | Нет | Нет | Нет | Необязательный | Нет | Необязательный | Необязательный | Необязательный |
ПАКБТИ | 32 | AUT, AUTG, BTI, BXAUT, PAC, PACBTI, PACG | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Необязательный | Нет | Необязательный |
Архитектура ARM для серии ARM Cortex-M удалила некоторые функции старых ядер: [14] [15]
Возможности 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 оптимизировано для небольших размеров кремниевых кристаллов и использования в самых недорогих чипах. [2]
Ключевые особенности ядра Cortex-M0: [17]
Варианты кремния:
На базе ядра Cortex-M0 построены следующие микроконтроллеры:
Следующие чипы имеют Cortex-M0 в качестве вторичного ядра:
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv6-М |
Набор инструкций | Большой палец 1 (большинство) , Большой палец 2 (некоторые) |
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]
Варианты кремния:
На базе ядра Cortex-M0+ построены следующие микроконтроллеры:
Следующие чипы имеют 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 года, что меньше крупинки соли.
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv6-М |
Набор инструкций | Большой палец 1 (большинство) , Большой палец 2 (некоторые) |
Cortex-M1 — это оптимизированное ядро, специально разработанное для загрузки в микросхемы FPGA . [4]
Ключевые особенности ядра Cortex-M1: [19]
Варианты кремния:
Следующие поставщики поддерживают Cortex-M1 в качестве программных ядер на своих чипах FPGA:
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv7-М |
Набор инструкций | Большой палец-1 , Большой палец-2 , Насыщенный (немного), Разделить |
Ключевые особенности ядра Cortex-M3: [20] [35]
Варианты кремния:
На базе ядра Cortex-M3 построены следующие микроконтроллеры:
Следующие чипы имеют Cortex-M3 в качестве вторичного ядра:
Следующие ПЛИС включают в себя ядро Cortex-M3:
Следующие поставщики поддерживают Cortex-M3 в качестве программных ядер на своих чипах FPGA:
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv7E-M |
Набор инструкций | Большой палец-1 , Большой палец-2 , Насыщенный , DSP , Разделение, FPU (SP) |
Концептуально Cortex-M4 — это Cortex-M3 плюс инструкции DSP и опциональный блок с плавающей точкой (FPU). Ядро с FPU известно как Cortex-M4F.
Ключевые особенности ядра Cortex-M4: [21]
Варианты кремния:
На базе ядра Cortex-M4 построены следующие микроконтроллеры:
На базе ядра Cortex-M4F (M4 + FPU ) построены следующие микроконтроллеры :
Следующие чипы имеют Cortex-M4 или M4F в качестве вторичного ядра:
Архитектура и классификация | |
---|---|
Микроархитектура | ARMv7E-M |
Набор инструкций | Thumb-1 , Thumb-2 , Saturated , DSP , Divide, FPU (SP и DP) |
Cortex-M7 — это высокопроизводительное ядро с почти вдвое большей энергоэффективностью, чем у старого Cortex-M4. [7] Он оснащен 6-ступенчатым суперскалярным конвейером с предсказанием ветвлений и дополнительным блоком с плавающей точкой, способным выполнять операции с одинарной точностью и, опционально, с двойной точностью . [7] [38] Шины инструкций и данных были увеличены до 64 бит по сравнению с предыдущими 32-битными шинами. Если ядро содержит FPU, оно известно как Cortex-M7F, в противном случае это Cortex-M7.
Ключевые особенности ядра Cortex-M7: [22]
Варианты кремния:
На базе ядра Cortex-M7 построены следующие микроконтроллеры:
Архитектура и классификация | |
---|---|
Микроархитектура | Базовый уровень 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]
Варианты кремния:
На базе ядра Cortex-M23 построены следующие микроконтроллеры:
Архитектура и классификация | |
---|---|
Микроархитектура | 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]
Варианты кремния:
На базе ядра Cortex-M33 построены следующие микроконтроллеры:
Следующие чипы имеют Cortex-M33 или M33F в качестве вторичного ядра:
Архитектура и классификация | |
---|---|
Микроархитектура | 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 построены следующие микроконтроллеры:
Архитектура и классификация | |
---|---|
Микроархитектура | 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 включают в себя:
Варианты кремния:
Следующие микроконтроллеры основаны на ядре Cortex M52
Архитектура и классификация | |
---|---|
Микроархитектура | 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 Основной гелий |
Набор инструкций | Thumb-1 , Thumb-2 , Saturated , DSP , Divide, FPU (VFPv5), TrustZone , Сопроцессор, MVE |
Ядро Cortex-M85 было анонсировано в апреле 2022 года и основано на архитектуре Armv8.1-M . Оно имеет 7-ступенчатый конвейер инструкций. [13]
Варианты кремния:
Документация для чипов ARM обширна. Раньше документация по 8-битным микроконтроллерам обычно умещалась в один документ, но по мере развития микроконтроллеров также развивалось и все необходимое для их поддержки. Пакет документации для чипов ARM обычно состоит из набора документов от производителя ИС, а также поставщика ядра ЦП ( ARM Limited ).
Типичное нисходящее дерево документации выглядит следующим образом:
У производителей ИС есть дополнительные документы, такие как: руководства пользователя оценочной платы, примечания по применению, руководства по началу работы, документы библиотеки программного обеспечения, исправления и т. д. См. раздел Внешние ссылки для ссылок на официальные документы Arm.
ARM- ядро | Ширина бита | Веб-сайт АРМ | Общее руководство пользователя ARM | Техническое справочное руководство ARM | Справочное руководство по архитектуре ARM |
---|---|---|---|---|---|
Кортекс-М0 | 32 | Связь | Связь | Связь | ARMv6-М |
Кортекс-М0+ | 32 | Связь | Связь | Связь | ARMv6-М |
Кортекс-М1 | 32 | Связь | Связь | Связь | ARMv6-М |
Кортекс-М3 | 32 | Связь | Связь | Связь | ARMv7-М |
Кортекс-М4 | 32 | Связь | Связь | Связь | ARMv7E-M |
Кортекс-М7 | 32 | Связь | Связь | Связь | ARMv7E-M |
Кортекс-М23 | 32 | Связь | Связь | Связь | ARMv8-М |
Кортекс-М33 | 32 | Связь | Связь | Связь | ARMv8-М |
Cortex-M35P | 32 | Связь | Н/Д | Н/Д | ARMv8-М |
Кортекс-М52 | 32 | Связь | Н/Д | Связь | ARMv8.1-М |
Кортекс-М55 | 32 | Связь | Связь | Связь | ARMv8.1-М |
Кортекс-М85 | 32 | Связь | Связь | Связь | ARMv8.1-М |