

ARM Cortex-M은ARM 리미티드가 라이선스를 부여한32비트RISCARM 아키텍처 프로세서 코어 그룹이다. 이 코어들은 저가형 및 에너지 효율적인집적 회로에 최적화되어 있으며, 수백억 개의 소비자 기기에 내장되어 있다.[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] Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85 코어에는부동소수점 장치 (FPU) 옵션이 제공되며, 실리콘에 포함될 경우 이 코어들은 때때로 "Cortex-MxF"로 알려져 있으며, 여기서 'x'는 코어 변형을 나타낸다.
| 32비트 | |
|---|---|
| 연도 | 코어 |
| 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 |
| 2022 | Cortex-M85 |
| 2023 | Cortex-M52 |
ARM Cortex-M 제품군은마이크로컨트롤러,ASIC,ASSP,FPGA,SoC에 사용하도록 설계된 ARM 마이크로프로세서 코어이다. Cortex-M 코어는 일반적으로 전용 마이크로컨트롤러 칩으로 사용되지만, 전원 관리 컨트롤러, I/O 컨트롤러, 시스템 컨트롤러, 터치스크린 컨트롤러, 스마트 배터리 컨트롤러 및 센서 컨트롤러와 같은 SoC 칩 내부에도 "숨겨져" 있다.
Cortex-A 코어와의 주요 차이점은 Cortex-M 코어는 "완전한"운영체제에 필수적인 것으로 간주되는가상 메모리용메모리 관리 장치 (MMU)가 없다는 것이다. Cortex-M 프로그램은 대신베어 메탈 또는Cortex-M을 지원하는 다양한실시간 운영체제 중 하나에서 실행된다.
과거에는 8비트 마이크로컨트롤러가 매우 인기가 있었지만, 저가형 Cortex-M 칩의 가격이 하락하면서 Cortex-M은 점차 8비트 시장을 잠식하고 있다. Cortex-M은 32비트 수학 연산에 이점이 있는 응용 분야에서 8비트 칩을 대체하고 있으며,ARM7 및ARM9과 같은 오래된 ARM 코어를 대체하고 있다.
특히, 대부분의SD 카드 또는플래시 드라이브 내부에 내장된 마모 평준화 컨트롤러는 (8비트)8051 마이크로컨트롤러 또는 ARM CPU이다.[14]
ARM 리미티드는 자체 설계에 기반한 CPU 장치를 제조하거나 판매하지 않고, 대신 프로세서 아키텍처를 관심 있는 당사자에게 라이선스한다. Arm은 비용과 결과물에 따라 다양한 라이선스 조건을 제공한다. 모든 라이선스 사용자에게 Arm은 ARM 코어의 통합 가능한 하드웨어 설명뿐만 아니라 완전한 소프트웨어 개발 도구 세트와 ARM CPU를 포함하는 제조된규소를 판매할 권리를 제공한다.
통합 장치 제조업체(IDM)는합성 가능한RTL (베릴로그로 작성됨) 형태로 ARM 프로세서IP를 받는다. 이 형태로 그들은 아키텍처 수준의 최적화 및 확장을 수행할 수 있다. 이를 통해 제조업체는 더 높은 클록 속도, 매우 낮은 전력 소비, 명령어 세트 확장(부동 소수점 포함), 크기 최적화, 디버그 지원 등과 같은 맞춤형 설계 목표를 달성할 수 있다. 특정 ARM CPU 칩에 어떤 구성 요소가 포함되어 있는지 확인하려면 제조업체의 데이터시트 및 관련 문서를 참조해야 한다.
Cortex-M 코어의 실리콘 옵션 중 일부는 다음과 같다.
| ARM 코어 | Cortex M0[18] | Cortex M0+[19] | Cortex M1[20] | Cortex M3[21] | Cortex M4[22] | Cortex M7[23] | Cortex M23[24] | Cortex M33[25] | Cortex M35P[10] | Cortex M52[26] | Cortex M55[27] | Cortex M85[28] |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| SysTick 24비트타이머 | 선택 사항 (0,1) | 선택 사항 (0, 1) | 선택 사항 (0,1) | 예 예 (1) | 예 예 (1) | 예 예 (1) | 선택 사항 (0, 1, 2) | 예 예 (1, 2) | 예 예 (1, 2) | 예 예 (1, 2) | 예 예 (1, 2) | 예 예 (1, 2) |
| 단일 사이클 I/O 포트 | 아니요 | 선택 사항 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 |
| 비트 밴드 메모리 | 아니요[29] | 아니요[29] | 아니요* | 선택 사항 | 선택 사항 | 선택 사항 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 |
| 메모리 보호 장치 (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) |
| 명령어 캐시 | 아니요[30] | 아니요[30] | 아니요[30] | 아니요[30] | 아니요[30] | 선택 사항 (최대 64 KB) | 아니요 | 아니요 | 선택 사항 (최대 16 KB) | 선택 사항 (최대 64 KB) | 선택 사항 (최대 64 KB) | 선택 사항 (최대 64 KB) |
| 데이터 캐시 | 아니요[30] | 아니요[30] | 아니요[30] | 아니요[30] | 아니요[30] | 선택 사항 (최대 64 KB) | 아니요 | 아니요 | 아니요 | 선택 사항 (최대 64 KB) | 선택 사항 (최대 64 KB) | 선택 사항 (최대 64 KB) |
| 명령어 TCM (ITCM) 메모리 | 아니요 | 아니요 | 선택 사항 (최대 1 MB) | 아니요 | 아니요 | 선택 사항 (최대 16 MB) | 아니요 | 아니요 | 아니요 | 선택 사항 (최대 16 MB) | 선택 사항 (최대 16 MB) | 선택 사항 (최대 16 MB) |
| 데이터 TCM (DTCM) 메모리 | 아니요 | 아니요 | 선택 사항 (최대 1 MB) | 아니요 | 아니요 | 선택 사항 (최대 16 MB) | 아니요 | 아니요 | 아니요 | 선택 사항 (최대 16 MB) | 선택 사항 (최대 16 MB) | 선택 사항 (최대 16 MB) |
| TCM 및 캐시용ECC | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 |
| 벡터 테이블 오프셋 레지스터 (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-M0 / M0+ / M1은ARMv6-M 아키텍처를 구현하고,[15] Cortex-M3은ARMv7-M 아키텍처를 구현하며,[16] Cortex-M4 / Cortex-M7은ARMv7E-M 아키텍처를 구현하고,[16] Cortex-M23 / M33 / M35P는ARMv8-M 아키텍처를 구현하며,[31] Cortex-M52 / M55 / M85는ARMv8.1-M 아키텍처를 구현한다.[31] 이 아키텍처들은 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에서 수정 없이 실행할 수 있다.[15][16] 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은 ARMv7-M 아키텍처에 추가된 새로운 명령어(CBZ, CBNZ, IT)를 제외한 Thumb-1 명령어를 포함한다. Cortex-M0 / M0+ / M1은 Thumb-2 명령어의 작은 하위 집합(BL, DMB, DSB, ISB, MRS, MSR)을 포함한다.[15] Cortex-M3 / M4 / M7 / M33 / M35P는 모든 기본 Thumb-1 및 Thumb-2 명령어를 가지고 있다. Cortex-M3은 3개의 Thumb-1 명령어, 모든 Thumb-2 명령어, 하드웨어 정수 나눗셈 및포화 연산 명령어를 추가한다. Cortex-M4는DSP 명령어와 선택적 단정밀도부동소수점 장치 (VFPv4-SP)를 추가한다. Cortex-M7은 선택적 배정밀도 FPU (VFPv5)를 추가한다.[23][16] Cortex-M23 / M33 / M35P / M52 / M55 / M85는TrustZone 명령어를 추가한다.
| Arm 코어 | Cortex M0[18] | Cortex M0+[19] | Cortex M1[20] | Cortex M3[21] | Cortex M4[22] | Cortex M7[23] | Cortex M23[24] | Cortex M33[25] | Cortex M35P | Cortex M52[26] | Cortex M55[27] | Cortex M85[28] |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ARM 아키텍처 | ARMv6-M [15] | ARMv6-M [15] | ARMv6-M [15] | ARMv7-M [16] | ARMv7E-M [16] | ARMv7E-M [16] | ARMv8-M 기준[31] | ARMv8-M 주류[31] | ARMv8-M 주류[31] | Armv8.1-M 주류[31] | Armv8.1-M 주류[31] | Armv8.1-M 주류[31] |
| 컴퓨터 구조 | 폰 노이만 | 폰 노이만 | 폰 노이만 | 하버드 | 하버드 | 하버드 | 폰 노이만 | 하버드 | 하버드 | 하버드 | 하버드 | 하버드 |
| 명령어 파이프라인 | 3단계 | 2단계 | 3단계 | 3단계 | 3단계 | 6단계 | 2단계 | 3단계 | 3단계 | 4단계 | 4-5단계 | 7단계 |
| 인터럽트 지연 시간 (대기 상태 0 메모리) | 16 사이클 | 15 사이클 | NMI 23, IRQ 26 | 12 사이클 | 12 사이클 | 12 사이클, 최악 14 사례 | 15 사이클, NS IRQ 보안 24 | 12 사이클, NS IRQ 보안 21 | TBD | TBD | TBD | TBD |
| Thumb-1 명령어 | 대부분 | 대부분 | 대부분 | 예 전체 | 예 전체 | 예 전체 | 대부분 | 예 전체 | 예 전체 | 예 전체 | 예 전체 | 예 전체 |
| Thumb-2 명령어 | 일부 | 일부 | 일부 | 예 전체 | 예 전체 | 예 전체 | 일부 | 예 전체 | 예 전체 | 예 전체 | 예 전체 | 예 전체 |
| 곱셈 명령어 32×32 = 32비트 결과 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 |
| 곱셈 명령어 32×32 = 64비트 결과 | 아니요 | 아니요 | 아니요 | 예 | 예 | 예 | 아니요 | 예 | 예 | 예 | 예 | 예 |
| 나눗셈 명령어 32/32 = 32비트 몫 | 아니요 | 아니요 | 아니요 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 |
| 포화 수학 명령어 | 아니요 | 아니요 | 아니요 | 일부 | 예 | 예 | 아니요 | 예 | 예 | 예 | 예 | 예 |
| DSP 명령어 | 아니요 | 아니요 | 아니요 | 아니요 | 예 | 예 | 아니요 | 선택 사항 | 선택 사항 | 예 | 예 | 예 |
| 반정밀도 (HP) 부동소수점 명령어 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 |
| 단정밀도 (SP) 부동소수점 명령어 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 선택 사항 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 |
| 배정밀도 (DP) 부동소수점 명령어 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 아니요 | 아니요 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 |
| 헬륨 벡터 명령어 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 |
| TrustZone 보안 명령어 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 | 예 |
| 보조 프로세서 명령어 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 |
| ARM 사용자 정의 명령어 (ACI) | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 |
| 포인터 인증 및 분기 대상 식별 (PACBTI) 명령어 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 아니요 | 선택 사항 |
| 그룹 | 명령어 비트 수 | 명령어 | Cortex M0, M0+, M1 | Cortex M3 | Cortex M4 | Cortex M7 | Cortex M23 | Cortex M33 | Cortex M35P | Cortex M52 | Cortex M55 | Cortex M85 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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 | 아니요 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 |
| Thumb-1 | 16 | IT | 아니요 | 예 | 예 | 예 | 아니요 | 예 | 예 | 예 | 예 | 예 |
| Thumb-2 | 32 | BL, DMB, DSB, ISB, MRS, MSR | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 |
| Thumb-2 | 32 | SDIV, UDIV, MOVT, MOVW, B.W, LDREX, LDREXB, LDREXH, STREX, STREXB, STREXH | 아니요 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 | 예 |
| 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, 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, YIELD | 아니요 | 예 | 예 | 예 | 아니요 | 예 | 예 | 예 | 예 | 예 |
| 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, 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 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 | 아니요 | 아니요 | 선택 사항 | 선택 사항 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 |
| DP Float | 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 | BLXNS, BXNS | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 | rowspan="2" 예 |
| 32 | SG, TT, TTT, TTA, TTAT | |||||||||||
| 보조 프로세서 | 16 | CDP, CDP2, MCR, MCR2, MCRR, MCRR2, MRC, MRC2, MRRC, MRRC2 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 | 선택 사항 |
| ACI | 32 | CX1, CX1A, CX2, CX2A, CX3, CX3A, CX1D, CX1DA, CX2D, CX2DA, CX3D, CX3DA, VCX1, VCX1A, VCX2, VCX2A, VCX3, VCX3A | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 아니요 | 선택 사항 | 선택 사항 | 선택 사항 |
| PACBTI | 32 | AUT, AUTG, BTI, BXAUT, PAC, PACBTI, PACG | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 아니요 | 선택 사항 | 아니요 | 선택 사항 |
ARM Cortex-M 시리즈를 위한 ARM 아키텍처는 이전 레거시 코어에서 일부 기능을 제거했다.[15][16]
32비트 ARM 명령어 세트의 기능은 Thumb-1 및 Thumb-2 명령어 세트에 의해 여러 가지 방식으로 복제되지만, 일부 ARM 기능은 유사한 기능을 가지고 있지 않다.
16비트 Thumb-1 명령어 세트는 ARMv4T 아키텍처를 가진 기존ARM7T 코어에 처음 출시된 이후 시간이 지남에 따라 진화했다. 각 기존 ARMv5 / ARMv6 / ARMv6T2 아키텍처가 출시됨에 따라 새로운 Thumb-1 명령어가 추가되었다. 일부 16비트 Thumb-1 명령어는 Cortex-M 코어에서 제거되었다.
| 명령어 집합 | ARMv6-M (Thumb-1 (대부분), Thumb-2 (일부)) |
|---|
Cortex-M0 코어는 작은 실리콘 다이 크기와 가장 낮은 가격의 칩에 사용하기에 최적화되어 있다.[2]
Cortex-M0 코어의 주요 기능은 다음과 같다.[18]
실리콘 옵션:

다음 마이크로컨트롤러는 Cortex-M0 코어를 기반으로 한다.
다음 칩은 Cortex-M0을 보조 코어로 사용한다.
| 명령어 집합 | Thumb-1 (대부분), Thumb-2 (일부) |
|---|---|
| 마이크로아키텍처 | ARMv6-M |
Cortex-M0+는 Cortex-M0의 최적화된 상위 집합이다. Cortex-M0+는 Cortex-M0와 완벽한 명령어 세트 호환성을 가지므로 동일한 컴파일러 및 디버그 도구를 사용할 수 있다. Cortex-M0+ 파이프라인은 3단계에서 2단계로 줄어들어 전력 사용량을 낮추고 성능을 향상시킨다 (분기가 한 사이클 더 적게 걸리므로 평균 IPC가 더 높다). 기존 Cortex-M0의 디버그 기능 외에도 마이크로 트레이스 버퍼(MTB)라는 실리콘 옵션을 Cortex-M0+에 추가할 수 있으며, 이는 간단한 명령어 트레이스 버퍼를 제공한다. Cortex-M0+는 또한메모리 보호 장치(MPU) 및 벡터 테이블 재배치와 같은 Cortex-M3 및 Cortex-M4 기능을 실리콘 옵션으로 추가할 수 있다.[19]
Cortex-M0+ 코어의 주요 기능은 다음과 같다.[19]
실리콘 옵션:
다음 마이크로컨트롤러는 Cortex-M0+ 코어를 기반으로 한다.
다음 칩은 Cortex-M0+를 보조 코어로 사용한다.
가장 작은 ARM 마이크로컨트롤러는 Cortex-M0+ 유형이다 (2014년 현재,칩 스케일 패키지에서 1.6 mm x 2 mm로 가장 작은 것은 Kinetis KL03이다).[33]
2018년 6월 21일, "세계에서 가장 작은 컴퓨터" 또는 컴퓨터 장치가 발표되었다 –미시간 대학교 연구원들이 2018년 VLSI 기술 및 회로 심포지엄에서 "A 0.04mm3 16nW 무선 및 배터리 없는 센서 시스템, 통합 Cortex-M0+ 프로세서 및 셀룰러 온도 측정을 위한 광통신" 논문과 함께 ARM Cortex-M0+를 기반으로 한 (RAM 및태양광 발전 기반의 무선 송수신기를 포함한) 장치이다. – 이 장치는 2018년 3월에 IBM이 이전에 주장했던 세계 기록 크기 컴퓨터보다 10분의 1 크기로, 소금 알갱이보다 작다.
| 명령어 집합 | Thumb-1 (대부분), Thumb-2 (일부) |
|---|---|
| 마이크로아키텍처 | ARMv6-M |
Cortex-M1은FPGA 칩에 로드되도록 특별히 설계된 최적화된 코어이다.[4]
Cortex-M1 코어의 주요 기능은 다음과 같다.[20]
실리콘 옵션:
다음 공급업체는 Cortex-M1을 FPGA 칩의 소프트 코어로 지원한다.
| 명령어 집합 | Thumb-1,Thumb-2, 포화 (일부), 나눗셈 |
|---|---|
| 마이크로아키텍처 | ARMv7-M |


Cortex-M3 코어의 주요 기능은 다음과 같다.[21][36]
실리콘 옵션:
다음 마이크로컨트롤러는 Cortex-M3 코어를 기반으로 한다.
다음 칩은 Cortex-M3를 보조 코어로 사용한다.
다음 FPGA에는 Cortex-M3 코어가 포함되어 있다.
다음 공급업체는 Cortex-M3를 FPGA 칩의 소프트 코어로 지원한다.
| 명령어 집합 | Thumb-1,Thumb-2, 포화,DSP, 나눗셈,FPU (SP) |
|---|---|
| 마이크로아키텍처 | ARMv7E-M |
개념적으로 Cortex-M4는 Cortex-M3에DSP 명령어와 선택적부동소수점 장치 (FPU)를 더한 것이다. FPU가 있는 코어는 Cortex-M4F로 알려져 있다.
Cortex-M4 코어의 주요 기능은 다음과 같다.[22]
실리콘 옵션:

다음 마이크로컨트롤러는 Cortex-M4 코어를 기반으로 한다.
다음 마이크로컨트롤러는 Cortex-M4F (M4 +FPU) 코어를 기반으로 한다.
다음 칩은 Cortex-M4 또는 M4F를 보조 코어로 사용한다.
| 명령어 집합 | Thumb-1,Thumb-2, 포화,DSP, 나눗셈,FPU (SP & DP) |
|---|---|
| 마이크로아키텍처 | ARMv7E-M |

Cortex-M7은 이전 Cortex-M4보다 거의 두 배의 전력 효율을 가진 고성능 코어이다.[7]분기 예측을 포함한 6단계슈퍼스칼라 파이프라인과 단정밀도 및 선택적으로배정밀도 연산이 가능한 선택적부동소수점 장치를 특징으로 한다.[7][39] 명령어 및 데이터 버스는 이전 32비트 버스에서 64비트 폭으로 확장되었다. 코어에 FPU가 포함되어 있으면 Cortex-M7F로 알려져 있고, 그렇지 않으면 Cortex-M7이다.
Cortex-M7 코어의 주요 기능은 다음과 같다.[23]
실리콘 옵션:
다음 마이크로컨트롤러는 Cortex-M7 코어를 기반으로 한다.
| 명령어 집합 | Thumb-1 (대부분), Thumb-2 (일부), 나눗셈,TrustZone |
|---|---|
| 마이크로아키텍처 | ARMv8-M 기준 |
Cortex-M23 코어는 2016년 10월에 발표되었으며,[40] 2015년 11월에 이전에 발표된ARMv8-M 아키텍처를 기반으로 한다.[41] 개념적으로 Cortex-M23은 Cortex-M0+와 유사하며, 정수 나눗셈 명령어와 TrustZone 보안 기능이 추가되었고, 2단계명령어 파이프라인도 가지고 있다.[8]
Cortex-M23 코어의 주요 기능은 다음과 같다.[24][40]
실리콘 옵션:
다음 마이크로컨트롤러는 Cortex-M23 코어를 기반으로 한다.
| 명령어 집합 | Thumb-1,Thumb-2, 포화,DSP, 나눗셈,FPU (SP), TrustZone, 코프로세서 |
|---|---|
| 마이크로아키텍처 | ARMv8-M Mainline |
Cortex-M33 코어는 2016년 10월에 발표되었으며,[40] 2015년 11월에 이전에 발표된ARMv8-M 아키텍처를 기반으로 한다.[41] 개념적으로 Cortex-M33은 Cortex-M4와 Cortex-M23의 교차점과 유사하며, 3단계명령어 파이프라인도 가지고 있다.[9]
Cortex-M33 코어의 주요 기능은 다음과 같다.[25][40]
실리콘 옵션:
다음 마이크로컨트롤러는 Cortex-M33 코어를 기반으로 한다.
다음 칩은 Cortex-M33 또는 M33F를 보조 코어로 사용한다.
| 명령어 집합 | Thumb-1,Thumb-2, 포화,DSP, 나눗셈,FPU (SP), TrustZone, 코프로세서 |
|---|---|
| 마이크로아키텍처 | ARMv8-M Mainline |
Cortex-M35P 코어는 2018년 5월에 발표되었으며Armv8-M 아키텍처를 기반으로 한다. 이는 새로운 명령어 캐시와 ARM SecurCore 제품군에서 가져온 새로운 변조 방지 하드웨어 개념, 구성 가능한 패리티 및 ECC 기능을 추가한 Cortex-M33 코어로 볼 수 있다.[10]
현재 Cortex-M35P에 대한 정보는 기술 참조 매뉴얼 및 일반 사용자 가이드가 아직 출시되지 않았기 때문에 제한적이다.
다음 마이크로컨트롤러는 Cortex-M35P 코어를 기반으로 한다.
| 명령어 집합 | Thumb-1,Thumb-2, 포화,DSP, 나눗셈,FPU (VFPv5), TrustZone, 코프로세서, MVE |
|---|---|
| 마이크로아키텍처 | ARMv8.1-M Mainline Helium |
Cortex-M52 코어는 2023년 11월에 발표되었으며Armv8.1-M 아키텍처를 기반으로 한다. 개념적으로는 Cortex-M33과 Cortex-M55의 교차점으로 볼 수 있다. 주요 차이점은 Helium 코프로세서가 단일 비트(M55는 듀얼 비트)이며, 애플리케이션 전환을 용이하게 하기 위해 M33과 유사한 32비트 메인 버스를 가지고 있다는 것이다. 4단계 명령어 파이프라인을 가지고 있다.[11]
Cortex-M52 코어의 주요 기능은 다음과 같다.
실리콘 옵션:
다음 마이크로컨트롤러는 Cortex M52 코어를 기반으로 한다.
| 명령어 집합 | Thumb-1,Thumb-2, 포화,DSP, 나눗셈,FPU (VFPv5), TrustZone, 코프로세서, MVE |
|---|---|
| 마이크로아키텍처 | ARMv8.1-M Mainline Helium |
Cortex-M55 코어는 2020년 2월에 발표되었으며Armv8.1-M 아키텍처를 기반으로 한다. 4단계 또는 5단계 명령어 파이프라인을 가지고 있다.[12]
Cortex-M55 코어의 주요 기능은 다음과 같다.
실리콘 옵션:
| 명령어 집합 | Thumb-1,Thumb-2, 포화,DSP, 나눗셈,FPU (VFPv5), TrustZone, 코프로세서, MVE |
|---|---|
| 마이크로아키텍처 | ARMv8.1-M Mainline Helium |
Cortex-M85 코어는 2022년 4월에 발표되었으며Armv8.1-M 아키텍처를 기반으로 한다. 7단계 명령어 파이프라인을 가지고 있다.[13]
실리콘 옵션:
ARM 칩에 대한 문서는 광범위하다. 과거에는 8비트 마이크로컨트롤러 문서가 일반적으로 단일 문서에 담겼지만, 마이크로컨트롤러가 진화함에 따라 이를 지원하는 데 필요한 모든 것도 진화했다. ARM 칩의 문서 패키지는 일반적으로 IC 제조업체와 CPU 코어 공급업체(ARM 리미티드)의 문서 모음으로 구성된다.
일반적인 하향식 문서 트리는 다음과 같다.
IC 제조업체는 평가 보드 사용자 매뉴얼, 애플리케이션 노트, 시작 가이드, 소프트웨어 라이브러리 문서, 오류 정정(errata) 등 추가 문서를 가지고 있다. 공식 Arm 문서 링크는외부 링크 섹션을 참조한다.
| ARM 코어 | 비트 폭 | ARM 웹사이트 | ARM 일반 사용자 가이드 | 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 | 링크 | N/A | N/A | ARMv8-M |
| Cortex-M52 | 32 | 링크 | 링크 | 링크 | ARMv8.1-M |
| Cortex-M55 | 32 | 링크 | 링크 | 링크 | ARMv8.1-M |
| Cortex-M85 | 32 | 링크 | 링크 | 링크 | ARMv8.1-M |