Remove ads
来自维基百科,自由的百科全书
ARM Cortex-M是ARM架構處理器核心中,低階系列的統稱,由安謀控股所授權。這組核心的特點為低成本以及高能源效率的微處理器而最佳化設計,已有上千萬個消費性設備中有此系列的微處理器[1]。此系列核心包括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 核心有浮點運算器的選項,若有浮點運算器的選項,會在型號後面說明,例如Cortex-Mx with FPU或Cortex-MxF,其中x是核心編號。
32-bit | |
---|---|
年份 | 核心 |
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系列是為了單片機、特殊應用積體電路(ASIC)、應用專門標準產品(ASSP)、現場可編程邏輯門陣列(FPGA)及單片系統(SoC)設計的ARM微處理器核心。Cortex-M核心常用在 專用微控制器晶片中,但也會藏在SoC晶片中,例如電源管理制器、輸入/輸出控制器、系統控制器、觸碰螢幕控制器、智慧電池控制器以及感測器控制器。
以往8位元的微控制器相當流行,但低階的Cortex-M晶片已經降價,佔據了一些8位元微控制器的市場。在取代8位元微控制器時,Cortex-M是常出現的選項,因為有32位元數學運算上的優勢,也會用來替換一些較舊的ARM核心 ,例如ARM7及ARM9。
安謀控股不會以其自身的技術生產CPU或販售CPU,而是其將處理器的架構授權給其他有意願開發的公司。安謀有許多不同的授權條款,差異在成本以及可交付成果。對於所有的授權,安謀都會提出一份可整合的ARM核心硬體描述,也包括完整的軟體開發工具組,以及販售包括ARM CPU在內的積體電路的權利。
整合元件製造廠(IDM)收到的ARM處理器知識產權,是可邏輯綜合的寄存器傳輸級(用Verilog所寫)。以此型式,整合元件製造商可以進行架構層級的最佳化以及延伸,可以讓製造商達成其客戶的設計目的,例如高時脈速度、非常低的能耗、指令集延伸(包括浮點數)、針對大小的最佳化、除錯器的支援等。若要確認特定的ARM CPU晶片中已有那些功能,則需確認製造商的資料表以及相關文件。
Cortex-M核心的部份選配機能如下:
ARM Core | Cortex M0[5] |
Cortex M0+[6] |
Cortex M1[7] |
Cortex M3[8] |
Cortex M4[9] |
Cortex M7[10] |
Cortex M23[11] |
Cortex M33[12] |
Cortex M35P |
---|---|---|---|---|---|---|---|---|---|
SysTick 24位元計時器 | 選配 (0,1) |
選配 (0,1) |
選配 (0,1) |
是 (1) |
是 (1) |
是 (1) |
選配 (0,1,2) |
是 (1,2) |
是 (1,2) |
單週期I/O埠 | 否 | 選配 | 否 | 否 | 否 | 否 | 選配 | 否 | 否 |
位元帶記憶體 | 否[13] | 否[13] | 否* | 選配 | 選配 | 選配 | 否 | 否 | 否 |
記憶體保護單元 (MPU) |
否 | 選配 (0,8) |
否 | 選配 (0,8) |
選配 (0,8) |
選配 (0,8,16) |
選配 (0,4,8,12,16) |
選配 (0,4,8,12,16) |
選配 * |
安全屬性單元(SAU) 及堆疊限制 |
否 | 否 | 否 | 否 | 否 | 否 | 選配 (0,4,8) |
選配 (0,4,8) |
選配 * |
指令TCM | 否 | 否 | 選配 | 否 | 否 | 選配 | 否 | 否 | 否 |
資料TCM | 否 | 否 | 選配 | 否 | 否 | 選配 | 否 | 否 | 否 |
指令緩存 | 否[14] | 否[14] | 否[14] | 否[14] | 否[14] | 選配 | 否 | 否 | 選配 |
資料緩存 | 否[14] | 否[14] | 否[14] | 否[14] | 否[14] | 選配 | 否 | 否 | 否 |
向量表位移暫存器 (VTOR) |
否 | 選配 (0,1) |
選配 (0,1) |
選配 (0,1) |
選配 (0,1) |
選配 (0,1) |
選配 (0,1,2) |
是 (1,2) |
是 (1,2) |
Cortex-M0 / M0+ / M1實現的是ARMv6-M架構[2],Cortex-M3實現的是ARMv7-M架構[3],Cortex-M4 / Cortex-M7實現的是ARMv7E-M架構[3]。Cortex-M23 / M33 / M35P實現的是ARMv8-M架構[15],Cortex-M55實現的是ARMv8.1-M架構[16]。這些架構是二進制的指令碼,可以和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上執行[2][3]。Cortex-M架構中支援Thumb-1和Thumb-2的指令集,不支援早期的32-bit ARM指令集。
所有Cortex-M的核心都有一個共通的指令子集,包括大部份Thumb-1指令、一些Thumb-2指令,以及結果為32位元的乘法。Cortex-M0 / Cortex-M0+ / Cortex-M1 / Cortex-M23設計目的就是希望讓矽晶面積最小,因此其指令集也是Cortex-M家族中最少的。
Cortex-M0 / M0+ / M1中有Thumb-1指令,不過沒有ARMv7-M架構才加入的指令(CBZ, CBNZ, IT)。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加上了可選的雙精度浮點運算器(VFPv5)[2][3]。Cortex-M23 / M33加上了TrustZone指令。
Arm Core | Cortex M0[5] |
Cortex M0+[6] |
Cortex M1[7] |
Cortex M3[8] |
Cortex M4[9] |
Cortex M7[10] |
Cortex M23[11] |
Cortex M33[12] |
Cortex M35P |
Cortex M55 |
---|---|---|---|---|---|---|---|---|---|---|
ARM架構 | ARMv6-M[2] | ARMv6-M[2] | ARMv6-M[2] | ARMv7-M[3] | ARMv7E-M[3] | ARMv7E-M[3] | ARMv8-M Baseline[15] |
ARMv8-M Mainline[15] |
ARMv8-M Mainline[15] |
Armv8.1-M |
計算機系統結構 | Von Neumann | Von Neumann | Von Neumann | Harvard | Harvard | Harvard | Von Neumann | Harvard | Harvard | Harvard |
指令管線化 | 3層 | 2層 | 3層 | 3層 | 3層 | 6層 | 2層 | 3層 | 3層 | 4到5層 |
Thumb-1指令 | 大部份 | 大部份 | 大部份 | 全部 | 全部 | 全部 | 大部份 | 全部 | 全部 | 全部 |
Thumb-2指令 | 部份 | 部份 | 部份 | 全部 | 全部 | 全部 | 部份 | 全部 | 全部 | 全部 |
乘法指令 32x32, 輸出32-bit |
是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
乘法指令 32x32, 輸出64-bit |
否 | 否 | 否 | 是 | 是 | 是 | 否 | 是 | 是 | 是 |
除法指令 32/32,商32-bit |
否 | 否 | 否 | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
飽和指令 | 否 | 否 | 否 | 部份 | 是 | 是 | 否 | 是 | 是 | 是 |
DSP指令 instructions | 否 | 否 | 否 | 否 | 是 | 是 | 否 | 可選 | 可選 | 可選 |
單精度浮點數(SP) 浮點運算指令 |
否 | 否 | 否 | 否 | 可選 | 可選 | 否 | 可選 | 可選 | 可選 |
雙精度浮點數(DP) 浮點指令 |
否 | 否 | 否 | 否 | 否 | 可選 | 否 | 否 | 否 | 可選 |
半精度(HP) | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 可選 |
TrustZone指令 | 否 | 否 | 否 | 否 | 否 | 否 | 可選 | 可選 | 可選 | 可選 |
輔助處理器指令 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 可選 | 可選 | 可選 |
Helium技術 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 否 | 可選 |
中斷延遲 (若用零等待狀態的RAM) |
16 cycles | 15 cycles | 23 for NMI 26 for IRQ |
12 cycles | 12 cycles | 12 cycles | 15 no security ext 27 security ext |
TBD | TBD | TBD |
Group | Instr bits |
Instructions | 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 | 否 | 是 | 是 | 是 | 是 | 是 | 是 |
Thumb-1 | 16 | IT | 否 | 是 | 是 | 是 | 否 | 是 | 是 |
Thumb-2 | 32 | BL, DMB, DSB, ISB, MRS, MSR | 是 | 是 | 是 | 是 | 是 | 是 | 是 |
Thumb-2 | 32 | SDIV, UDIV | 否 | 是 | 是 | 是 | 是 | 是 | 是 |
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 | 否 | 是 | 是 | 是 | 否 | 是 | 是 |
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 | 否 | 否 | 是 | 是 | 否 | 可選 | 是 |
單精度浮點數 | 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 | 否 | 否 | 可選 | 可選 | 否 | 可選 | 可選 |
雙精度浮點數 | 32 | VCVTA, VCVTM, VCVTN, VCVTP, VMAXNM, VMINNM, VRINTA, VRINTM, VRINTN, VRINTP, VRINTR, VRINTX, VRINTZ, VSEL | 否 | 否 | 否 | 可選 | 否 | 否 | 可選 |
TrustZone | 16 | BLXNS, BXNS | 否 | 否 | 否 | 否 | 可選 | 可選 | 可選 |
TrustZone | 32 | SG, TT, TTT, TTA, TTAT | 否 | 否 | 否 | 否 | 可選 | 可選 | 可選 |
輔助處理器 | 16 | CDP, CDP2, MCR, MCR2, MCRR, MCRR2, MRC, MRC2, MRRC, MRRC2 | 否 | 否 | 否 | 否 | 否 | 可選 | 可選 |
ARM Cortex-M系列的ARM架構,已停用一些早期核心的穖能[2][3]:
32位元ARM指令的能力和Thumb-1和Thumb-2指令集有很多地方重疊了,不過有些ARM的特徵找不到類似的特性。
16位元Thumb-1指令集最早是出現在早期ARMv4T架構的ARM7T核心,隨著時代而演進。在ARMv5 / ARMv6 / ARMv6T2 架構問世時,Thumb-1指令集也有擴充。不過也有移除一些Thumb-1指令。
Cortex-M0核心是依小矽晶元面積以及最低價晶片進行最佳化的核心。
Cortex-M0核心的主要特點有[5]:
矽智財選項:
微架構 | ARMv6-M |
---|---|
指令集架構 | Thumb-1 (most), Thumb-2 (some) |
Cortex-M0+是以Cortex-M0再進行優化的版本。Cortex-M0+支援所有Cortex-M0的指令,因此可以用相同的編譯器以及除錯工具。Cortex-M0+的管線由三層變成二層,因此耗能較少。除了Cortex-M0已有的除錯功能外,Cortex-M0+增加了稱為微追蹤緩衝區(Micro Trace Buffer、MTB)的選項,有簡易的指令追蹤緩衝區。Cortex-M0+也有加入Cortex-M3和Cortex-M4的一些特點,是以矽智財選項的方式加入,例如記憶體保護單元(MPU),以及中斷向量表重新定位[6]。
Cortex-M0+核心的主要特點有[6]:
矽智財選項:
微架構 | ARMv6-M |
---|---|
指令集架構 | Thumb-1 (most), Thumb-2 (some) |
The Cortex-M1是特別設計可以放入FPGA晶片的內核。
Cortex-M1內核的主要特點有[7]:
矽智財選項:
矽智財選項:
在概念上,Cortex-M4是Cortex-M3加上數位信號處理(DSP)指令、可選的浮點運算器。若有浮點運算器,會稱為Cortex-M4F。
Cortex-M4內核的主要特點有[9]:
矽智財選項:
Cortex-M7是高性能的內核,其運算效能是Cortex-M4的二倍。其中包括六層的超純量管線有分支預測,有可選的單精度浮點運算器或雙精度浮點運算器[18][19]。指令集以及資料匯流排已由32-bit寬度增加到64-bit寬度。若內核中有FPU,會稱為Cortex-M7F,不然會稱為Cortex-M7。
Cortex-M7內核的主要特點有[10]:
矽智財選項:
微架構 | ARMv8-M Baseline |
---|---|
指令集架構 | Thumb-1 (most), Thumb-2 (some), 除法、TrustZone |
Cortex-M23內核在2016年10月上市[20],以2015年11月發佈的ARMv8-M架構為基礎[21]。在概念上Cortex-M23類似Cortex-M0+,加上整數除法指令、TrustZone安全特性、也是二層管線。
矽智財選項:
Cortex-M33內核是在2016年10月發佈[20],是以2015年11月發佈的ARMv8-M架構為基礎[21]。概念上類似Cortex-M4和Cortex-M23的交集,也有三階的指令管道。
矽智財選項:
Cortex-M35P內核是在2018年5月發佈的,在概念上是Cortex-M33內核加上新的指令集,以及來自ARM SecurCore系列,新的防篡改硬體、可選的同位元以及ECC功能[22]。
目前此晶片的公開資料不多,只有技術參考手冊。到2020年2月為止,尚未看到各廠商推出此系列的微處理器。
Cortex-M55是在2020年2月發佈,是以2019年2月發佈的Armv8.1-M架構為基礎,有四階指令管道。
Cortex-M55核心的主要特點有:
矽智財選項:
ARM晶片的文件很多。 過去八位元的微處理器只有一份文件,不過隨著微處理器的進步,許多功能都需要支援。ARM晶片的文件包一般會包括IC製造商以及CPU內核供應商(Arm)的文件。
典型的文件結構如下:
IC製造商可能會有其他資料,例如開發板使用手冊、應用指南、快速手冊、軟體函式庫文件、已知問題等。
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.