概要 ARM Cortex-Mファミリーは、マイクロコントローラ 、ASIC 、ASSP 、FPGA 、およびSoC での使用を想定して設計されたARMマイクロプロセッサコアです。Cortex-Mコアは、専用のマイクロコントローラチップとして一般的に使用されていますが、電源管理コントローラ、I/Oコントローラ、システムコントローラ、タッチスクリーンコントローラ、スマートバッテリーコントローラ、センサーコントローラとしてSoCチップ内部に「隠されて」使用されることもあります。
Cortex-A コアとの主な違いは、Cortex-Mコアには仮想メモリ用の メモリ管理ユニット (MMU)がないことです。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 Limitedは 、自社設計に基づくCPUデバイスの製造や販売は行わず、プロセッサアーキテクチャを希望する企業にライセンス供与しています。ARMは、費用と成果物が異なる様々なライセンス条件を提供しています。すべてのライセンス取得者に対し、ARMコアの統合可能なハードウェア記述、完全なソフトウェア開発ツールセット、およびARM CPUを搭載した製造済みシリコンの販売権を提供します。
シリコンカスタマイズ 集積回路メーカー(IDM)は、ARMプロセッサIPを 合成可能な RTL (Verilog で記述)として受け取ります。この形式により、アーキテクチャレベルの最適化と拡張が可能になります。これにより、メーカーはクロック速度の向上、消費電力の超低、命令セットの拡張(浮動小数点演算を含む)、サイズ最適化、デバッグサポートなど、独自の設計目標を達成できます。特定のARM CPUチップにどのコンポーネントが含まれているかを確認するには、メーカーのデータシートおよび関連ドキュメントを参照してください。
Cortex-Mコアのシリコンオプションには、以下のようなものがあります。
SysTick タイマー: プロセッサとネストされたベクタ割り込みコントローラ (NVIC) の両方の機能を拡張する 24 ビット システム タイマーです。存在する場合、追加の構成可能な優先度 SysTick 割り込みも提供します。[ 15 ] [ 16 ] [ 17 ] SysTick タイマーは M0/M0+/M1/M23 ではオプションですが、これがない Cortex-M マイクロコントローラを見つけることは非常にまれです。Cortex-M33/M35P/M52/M55/M85 マイクロコントローラにセキュリティ拡張オプションがある場合、オプションで 2 つの SysTick (1 つのセキュア、1 つの非セキュア) を持つことができます。 ビットバンド: メモリの完全なワードをビットバンド領域の 1 ビットにマッピングします。たとえば、エイリアス ワードに書き込むと、ビットバンド領域の対応するビットがセットまたはクリアされます。これにより、ビットバンド領域の個々のビットは、ワード境界に揃ったアドレスから直接アクセスできるようになります。特に、個々のビットは、読み取り - 変更 - 書き込みの命令シーケンスを実行することなく、C/C++ からセット、クリア、またはトグルできます。[ 15 ] [ 16 ] [ 17 ] ビットバンドはオプションですが、ビットバンドのない Cortex-M3 および Cortex-M4 マイクロコントローラはあまり一般的ではありません。一部の Cortex-M0 および Cortex-M0+ マイクロコントローラにはビットバンドがあります。メモリ保護ユニット (MPU): 特権とアクセス規則を適用することでメモリ領域を保護するサポートを提供します。最大 16 つの異なる領域をサポートし、それぞれがさらに同じサイズのサブ領域に分割できます。[ 15 ] [ 16 ] [ 17 ] タイトリーカップリングメモリ (TCM):コールスタック 、RTOS 制御構造、割り込みデータ構造、割り込みハンドラ コード、および速度が重要なコードを保持するために使用できる、低遅延 (待機状態 ゼロ) SRAM。CPU キャッシュを 除けば、TCM は ARM Cortex-M マイクロコントローラで最速のメモリです。TCM はキャッシュされず、プロセッサやキャッシュと同じ速度でアクセスできないため、概念的には「アドレス指定可能なキャッシュ」と表現できます。ハーバードアーキテクチャの プロセッサが両方から同時に読み取れるように、ITCM (命令 TCM) と DTCM (データ TCM) があります。DTCM には命令を含めることはできませんが、ITCM にはデータを含めることができます。TCM はプロセッサコアに密接に接続されているため、一部の実装ではDMA エンジンが TCM にアクセスできない場合があります。注:ほとんどのCortex-M3およびM4チップにはビットバンドとMPUが搭載されています。ビットバンドオプションは、Cortex-Mシステム設計キットを使用してM0/M0+に追加できます。[ 29 ] 注:ソフトウェアは、各機能を使用する前に、その存在を検証する必要があります。[ 17 ] 注:Cortex-M35Pの技術リファレンスマニュアル が発行されるまでは、公開されている情報は限られています。 その他のシリコンオプション: [ 15 ] [ 16 ]
データエンディアン:リトルエンディアンまたはビッグエンディアン。従来のARMコアとは異なり、Cortex-Mはこれらの選択肢のいずれかにシリコン上で固定されています。 割り込み: 1~32 (M0/M0+/M1)、1~240 (M3/M4/M7/M23)、1~480 (M33/M35P/M52/M55/M85)。 ウェイクアップ割り込みコントローラ:オプション。 ベクターテーブルオフセットレジスタ:オプション。(M0では使用できません)。 命令フェッチ幅:16ビットのみ、または大部分は32ビット。 ユーザー/権限サポート:オプション。 すべてのレジスタをリセットする:オプション。 シングルサイクルI/Oポート:オプション。(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 アーキテクチャを実装し、[ 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 命令が追加されています。
注:割り込みレイテンシのサイクル数は、1) スタックがゼロウェイトステートの RAM に配置されていること、2) 他の割り込み関数が現在実行されていないこと、3) セキュリティ拡張オプションが存在しないこと(追加のサイクルが発生するため)を前提としています。ハーバードコンピュータアーキテクチャを採用した Cortex-M コアは、フォンノイマンコンピュータアーキテクチャを採用した Cortex-M コアよりも割り込みレイテンシが短くなっています。 注:Cortex-Mシリーズには、スリープモード用の3つの新しい16ビットThumb-1 命令(SEV、WFE、WFI)が含まれています。 注: Cortex-M0 / M0+ / M1 には、これらの 16 ビットThumb-1 命令 (CBZ、CBNZ、IT) は含まれていません。[ 15 ] [ 16 ] 注: Cortex-M0 / M0+ / M1 には、BL、DMB、DSB、ISB、MRS、MSR の32 ビットThumb-2命令のみが含まれています。 [ 15 ] [ 16 ] 注: Cortex-M0 / M0+ / M1 / M23 には、下位 32 ビットの結果 (32ビット × 32ビット = 下位 32ビット) を持つ 32 ビット乗算 命令しかありませんが、Cortex-M3 / M4 / M7 / M33 / M35P には、64 ビットの結果 (32ビット × 32ビット = 64ビット) を持つ追加の 32 ビット乗算命令が含まれています。Cortex-M4 / M7 (オプションで M33 / M35P) には、(16ビット × 16ビット = 32ビット)、(32ビット × 16ビット = 上位 32ビット)、(32ビット × 32ビット = 上位 32ビット) 乗算用の DSP 命令が含まれています。 [ 15 ] [ 16 ] 注:乗算および除算命令の実行に必要なサイクル数は、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 などのコアのバリアントです。[ 15 ] [ 16 ] 注:MOVWは、32ビットの「ワイド」MOV命令を意味する別名です。 注:BWは長距離無条件分岐です(エンコーディング、動作、範囲はBLと似ていますが、LRレジスタの設定は除きます)。 注:Cortex-M1の場合、WFE / WFI / SEV命令は存在しますが、NOP命令として実行されます。 注:半精度(HP)FPU命令は、シリコンにHP FPUオプションが存在する場合にのみ、Cortex-M52 / M55 / M85で有効です。 注:単精度(SP)FPU命令は、シリコンにSP FPUオプションが存在する場合にのみ、Cortex-M4 / M7 / M33 / M35P / M52 / M55 / M85で有効です。 注:倍精度(DP)FPU命令は、シリコンにDP FPUオプションが存在する場合にのみ、Cortex-M7 / M52 / M55 / M85で有効です。
非推奨 ARM Cortex-M シリーズの ARM アーキテクチャでは、古いレガシー コアからいくつかの機能が削除されました。[ 15 ] [ 16 ]
32ビットARM命令セットの機能は、Thumb-1およびThumb-2命令セットによって多くの点で複製されていますが、ARMの一部の機能には同様の機能がありません。
ARMのSWPおよびSWPB(スワップ)命令には、Cortex-Mには同様の機能はありません。 16ビットThumb-1命令セットは、 ARMv4Tアーキテクチャを採用した従来のARM7T コアで初めてリリースされて以来、進化を続けてきました。新しいThumb-1命令は、ARMv5、ARMv6、ARMv6T2といった従来のアーキテクチャがリリースされるたびに追加されました。Cortex-Mコアからは、一部の16ビットThumb-1命令が削除されています。
「BLX <immediate>」命令は、Thumb-1からARM命令セットへの切り替えに使用されていたため、現在は存在しません。「BLX <register>」命令は、Cortex-Mで引き続き利用可能です。 SETEND は存在しません。なぜなら、データエンディアンモードのオンザフライ切り替えはサポートされなくなったからです。 Cortex-Mコアでは、ARM Cortex-M33/M35Pコア向けに「ARMv8-Mメインライン」でシリコンオプションが再導入されるまで、コプロセッサ命令はサポートされていませんでした。 SWI命令はSVCに名称変更されましたが、命令のバイナリコードは同じです。ただし、例外モデルの変更により、SVCハンドラコードはSWIハンドラコードとは異なります。
Cortex-M0 Amazon Dash ボタン Somat: CYBL10563-68FNXInRF51822 Cortex-M0コアは、小型シリコンダイサイズと低価格チップでの使用に最適化されています。[ 2 ]
Cortex-M0コアの主な特徴は次のとおりです。[ 18 ]
ARMv6-Mアーキテクチャ[ 15 ] 3段階パイプライン 命令セット: 親指1(ほとんど)、CBZ、CBNZ、ITが欠落 サム2(一部)、BL、DMB、DSB、ISB、MRS、MSRのみ 32ビットハードウェア整数と32ビット結果の乗算 1~32個の割り込み 、およびNMI シリコンの選択肢:
ハードウェアによる整数乗算速度:1サイクルまたは32サイクル。
チップス 以下のマイクロコントローラは、Cortex-M0コアをベースとしています。
以下のチップは、セカンダリーコアとしてCortex-M0を搭載しています。
NXP LPC4300 (Cortex-M4F×1、Cortex-M0×1)テキサス・インスツルメンツの SimpleLinkワイヤレスMCU CC1310およびCC2650(プログラマブルCortex-M3プロセッサ1基、Cortex-M0ネットワークプロセッサ1基、独自のセンサーコントローラエンジン1基)
Cortex-M0+NXP (フリースケール )FRDM-KL25Zボード(KL25Z128VLK(Kinetis L)搭載)NXP LPC800-MAXボード(LPC812搭載)Cortex-M0+ は Cortex-M0 の最適化された上位互換です。Cortex-M0+ は Cortex-M0 と完全な命令セット互換性があり、同じコンパイラとデバッグツールを使用できます。Cortex-M0+ のパイプラインは 3 段から 2 段に削減され、消費電力が削減され、パフォーマンスが向上します (分岐に必要なサイクルが 1 つ減るため、平均 IPC が高くなります)。既存の Cortex-M0 のデバッグ機能に加えて、Cortex-M0+ には、シンプルな命令トレース バッファを提供する Micro Trace Buffer (MTB) と呼ばれるシリコン オプションを追加できます。Cortex-M0+ には、メモリ保護 ユニット (MPU) やベクタ テーブルの再配置など、シリコン オプションとして追加できる Cortex-M3 および Cortex-M4 の機能も搭載されています。[ 19 ]
Cortex-M0+コアの主な特徴は次のとおりです。[ 19 ]
ARMv6-Mアーキテクチャ[ 15 ] 2段階パイプライン (Cortex-M0より1段階少ない) 命令セット:(Cortex-M0と同じ) 親指1(ほとんど)、CBZ、CBNZ、ITが欠落 サム2(一部)、BL、DMB、DSB、ISB、MRS、MSRのみ 32ビットハードウェア整数と32ビット結果の乗算 1~32個の割り込み 、およびNMI シリコンの選択肢:
ハードウェア整数乗算速度:1サイクルまたは32サイクル 8領域メモリ保護ユニット(MPU)(M3およびM4と同じ) ベクトルテーブルの再配置(M3、M4と同じ) シングルサイクルI/Oポート(M0+/M23で利用可能) マイクロトレースバッファー(MTB)(M0+/M23/M33/M35Pで利用可能)
チップス 以下のマイクロコントローラは、Cortex-M0+コアをベースとしています。
以下のチップは、セカンダリーコアとしてCortex-M0+を搭載しています。
Cypress PSoC 6200(Cortex-M4F×1 + Cortex-M0+×1)ST WB(Cortex-M4F 1個 + Cortex-M0+ 1個)最小のARMマイクロコントローラはCortex-M0+タイプである(2014年現在、チップスケールパッケージ で1.6mm ×2mmの最小サイズはKinetis KL03である)。[ 33 ]
2018年6月21日、ミシガン大学の 研究者らは、2018年のVLSI技術 および回路シンポジウムにおいて、 「0.04mm 3 16nWの無線式バッテリーレスセンサーシステム(Cortex-M0+プロセッサと光通信を統合し、細胞 の温度 測定用)」 という論文を発表し、 ARM Cortex-M0+(RAM、太陽電池に基づく無線送受信 機を含む)をベースとした「世界最小のコンピュータ」、すなわちコンピュータデバイスを発表した。このデバイスは、2018年3月にIBMが世界記録サイズだと主張していたコンピュータの10分の1のサイズで、塩粒よりも小さい。
皮質M1 Cortex-M1は、FPGA チップに搭載するために特別に設計された最適化されたコアです。[ 4 ]
Cortex-M1コアの主な特徴は次のとおりです。[ 20 ]
ARMv6-Mアーキテクチャ[ 15 ] 3段階パイプライン 。 命令セット: 親指1(ほとんど)、CBZ、CBNZ、ITが欠落。 Thumb-2 (一部)、BL、DMB、DSB、ISB、MRS、MSRのみ。 32ビットハードウェア整数と32ビット結果との乗算。 1~32個の割り込み 、およびNMI 。 シリコンの選択肢:
ハードウェアによる整数乗算速度:3サイクルまたは33サイクル。 オプションの密結合メモリ(TCM):0~1MBの 命令TCM、0~1MB のデータTCM(それぞれオプションでECC付き)。 外部割り込み: 0、1、8、16、32。 デバッグ: なし、縮小、完全。 データエンディアン:リトルエンディアンまたはBE-8ビッグエンディアン。 OS拡張機能の有無。
チップス 以下のベンダーは、自社のFPGAチップ上でCortex-M1をソフトコアとしてサポートしています。
皮質M3 Atmel ATSAM3X8E(ARM Cortex-M3 コア)マイクロコントローラを搭載したArduino Dueボード NXP LPCXpresso開発ボード(LPC1343搭載)Cortex-M3コアの主な特徴は次のとおりです。[ 21 ] [ 36 ]
ARMv7-Mアーキテクチャ[ 16 ] 分岐投機 を伴う3段階パイプライン 。命令セット: 親指1(全体)。 親指2(全体)。 32ビットハードウェア整数を乗算し、その結果を32ビットまたは64ビット(符号付きまたは符号なし)で取得します。乗算後に加算または減算を実行します。32ビット乗算は1サイクルで済みますが、64ビット乗算とMAC命令には追加のサイクルが必要です。 32ビットハードウェア整数除算(2~12サイクル)。 飽和演算の サポート。 1~240個の割り込み 、およびNMI 。 12サイクルの割り込みレイテンシ。 統合型スリープモード。 シリコンの選択肢:
オプションのメモリ保護ユニット(MPU):0または8領域。
チップス 以下のマイクロコントローラは、Cortex-M3コアをベースとしています。
Sumup AIR1 E205: MAX32550MikroTik RB260GS r2: STM32F107RBT6The following chips have a Cortex-M3 as a secondary core:
The following FPGAs include a Cortex-M3 core:
The following vendors support the Cortex-M3 as soft-cores on their FPGA chips:
Altera Cyclone-II, Cyclone-III, Stratix-II, Stratix-IIIXilinx Spartan-3, Virtex-2, Virtex-3, Virtex-4, Artix-7[ 38]
Cortex-M4 Silicon Labs (Energy Micro ) Wonder Gecko STK Board with EFM32 WG990 TI Stellaris Launchpad Board with LM4F120Conceptually the Cortex-M4 is a Cortex-M3 plus DSP instructions, and optional floating-point unit (FPU). A core with an FPU is known as Cortex-M4F.
Key features of the Cortex-M4 core are:[ 22]
ARMv7E-M architecture[ 16] 3-stage pipeline with branch speculation . Instruction sets: Thumb-1 (entire). Thumb-2 (entire). 32-bit hardware integer multiply with 32-bit or 64-bit result, signed or unsigned, add or subtract after the multiply. 32-bit Multiply and MAC are 1 cycle. 32-bit hardware integer divide (2–12 cycles). Saturation arithmetic support.DSP extension: Single cycle 16/32-bit MAC , single cycle dual 16-bit MAC, 8/16-bit SIMD arithmetic. 1 to 240 interrupts , plus NMI . 12 cycle interrupt latency. Integrated sleep modes. Silicon options:
オプションの浮動小数点演算ユニット(FPU):単精度のみ、IEEE-754 準拠。FPv4-SP拡張機能と呼ばれます。 オプションのメモリ保護ユニット(MPU):0または8領域。
チップス 以下のマイクロコントローラは、Cortex-M4コアをベースとしています。
以下のマイクロコントローラは、Cortex-M4F(M4 + FPU )コアをベースとしています。
microbit v2上の nRF52833 STM32F407IGH6 以下のチップは、セカンダリーコアとしてCortex-M4またはM4Fを搭載しています。
皮質M7 Arduino GIGA R1 WiFiボード(デュアルコアARM Cortex-M7 + ARM Cortex-M4搭載)STM32H747XIH6マイクロコントローラ ゲーム&ウォッチ:スーパーマリオブラザーズ:STM32H7B0VBT6 Cortex-M7は、旧型のCortex-M4のほぼ2倍の電力効率を持つ高性能コアです。[ 7 ] 分岐予測機能 を備えた6段スーパースカラ パイプラインと、単精度演算とオプションで倍精度演算 が可能なオプションの浮動小数点ユニットを搭載しています。[ 7 ] [ 39 ] 命令バスとデータバスは、以前の32ビットバスから64ビット幅に拡張されています。FPUを搭載したコアはCortex-M7Fと呼ばれ、そうでない場合はCortex-M7と呼ばれます。
Cortex-M7コアの主な特徴は次のとおりです。[ 23 ]
ARMv7E-Mアーキテクチャ。 分岐推測機能 を備えた6段パイプライン 。ARM Cortex-Mコアの中で2番目に長いパイプラインで、1番目は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拡張機能と呼ばれます。 オプションのCPUキャッシュ :0~ 64KBの命令キャッシュ、0~64KB のデータキャッシュ、それぞれオプションでECC 付き。 オプションの密結合メモリ(TCM):0~16MB の命令TCM、0~16MB のデータTCM(それぞれオプションでECC付き)。 オプションのメモリ保護ユニット(MPU):8領域または16領域。 オプションの組み込みトレースマクロセル(ETM):命令のみ、または命令とデータ。 スリープモード用のオプションの保持モード(Arm Power Management Kit使用時)。 オプションで二重冗長 同期 動作が可能。
チップス 以下のマイクロコントローラは、Cortex-M7コアをベースとしています。
以下のチップは、セカンダリーコアとしてCortex-M7を搭載しています。
皮質M23 Cortex-M23コアは2016年10月に発表され[ 40 ] 、2015年11月に発表されたARMv8-Mアーキテクチャに基づいています [ 41 ]。 概念的には、Cortex-M23はCortex-M0+に整数除算命令とTrustZoneセキュリティ機能を追加したものに似ており、2段階の命令パイプラインも備えています [ 8 ] 。
Cortex-M23コアの主な特徴は次のとおりです。[ 24 ] [ 40 ]
ARMv8-M ベースラインアーキテクチャ。[ 31 ] 2段階パイプライン。(Cortex-M0+と同様) TrustZoneの セキュリティに関する手順。32ビットハードウェア整数除算(17サイクルまたは34サイクル)。(他のすべてのコアでの除算よりも遅い) スタック制限境界。(SAUオプションでのみ利用可能) シリコンの選択肢:
ハードウェアによる整数乗算速度:1サイクルまたは32サイクル。 ハードウェアによる整数除算の速度:最大17サイクルまたは34サイクル。除数によっては、より少ないサイクルで命令が完了する場合があります。 オプションのメモリ保護ユニット(MPU):0、4、8、12、16領域。 オプションのセキュリティ帰属ユニット(SAU):0、4、8リージョン。 シングルサイクルI/Oポート(M0+/M23で利用可能)。 マイクロトレースバッファー(MTB)
チップス 以下のマイクロコントローラは、Cortex-M23コアをベースとしています。
皮質M33 SparkFun Thing Plus: RP2350 Cortex-M33コアは2016年10月に発表され[ 40 ] 、2015年11月に発表されたARMv8-Mアーキテクチャに基づいています [ 41 ]。 概念的には、Cortex-M33はCortex-M4とCortex-M23のクロスオーバーに似ており、3ステージの命令パイプラインも備えています [ 9 ] 。
Cortex-M33コアの主な特徴は次のとおりです。[ 25 ] [ 40 ]
ARMv8-M メインラインアーキテクチャ。[ 31 ] 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コアは2018年5月に発表され、Armv8-Mアーキテクチャ に基づいています。概念的には、新しい命令キャッシュ、ARM SecurCoreファミリーから借用した新しい耐タンパー性ハードウェアコンセプト、構成可能なパリティおよびECC機能を備えたCortex-M33コアです。[ 10 ]
現在、Cortex-M35Pに関する情報は限られています。これは、技術リファレンスマニュアル と汎用ユーザーガイド がまだ公開されていないためです。
チップス 以下のマイクロコントローラは、Cortex-M35Pコアをベースとしています。
皮質M52 Cortex-M52コアは2023年11月に発表され、Armv8.1-Mアーキテクチャ に基づいています。概念的には、Cortex-M33とCortex-M55の中間のようなものと言えます。主な違いは、Heliumコプロセッサがシングルビート(M55はデュアルビート)であること、そしてアプリケーションの移行を容易にするためにM33と同様の32ビットメインバスを備えていることです。4段の命令パイプラインを備えています。[ 11 ]
Cortex-M52コアの主な特徴は以下のとおりです。
ARMv8.1-M メインライン/ヘリウムアーキテクチャ。[ 31 ] 4段階のパイプライン。 スタック制限境界(SAUオプションでのみ利用可能)。 32ビットメインバス(AHBまたはAXI)[ 11 ] シリコンの選択肢:
ヘリウム(Mプロファイルベクトル拡張、MVE) ポインタ認証および分岐ターゲット識別拡張機能 単精度浮動小数点数と倍精度浮動小数点数 デジタル信号処理(DSP)拡張機能のサポート TrustZone セキュリティ拡張機能のサポート安全性と信頼性(RAS)のサポート コプロセッサのサポート 0、4、8、12、または16領域を持つセキュアおよび非セキュアMPU 0、4、または8つの領域を持つSAU 最大64KBの命令キャッシュ 最大64KBのデータキャッシュ キャッシュとTCMにおけるECC 1~480 割り込み 3~8ビットの例外優先度 内部および外部のWICオプション、オプションのCTI、ITM、およびDWT ARMカスタム手順
チップス 以下のマイクロコントローラは、Cortex M52コアをベースとしています。
Geehy Semiconductor G32R5、G32R430 [ 43 ]
コルテックスM55 Cortex-M55コアは2020年2月に発表され、Armv8.1-Mアーキテクチャ に基づいています。4段または5段の命令パイプラインを備えています。[ 12 ]
Cortex-M55コアの主な特徴は以下のとおりです。
ARMv8.1-M メインライン/ヘリウムアーキテクチャ。[ 31 ] 4段階のパイプライン。 スタック制限境界(SAUオプションでのみ利用可能)。 64ビットAXIメインバス[ 12 ] シリコンの選択肢:
ヘリウム(Mプロファイルベクトル拡張、MVE) 単精度浮動小数点数と倍精度浮動小数点数 デジタル信号処理(DSP)拡張機能のサポート TrustZone セキュリティ拡張機能のサポート安全性と信頼性(RAS)のサポート コプロセッサのサポート 0、4、8、12、または16領域を持つセキュアおよび非セキュアMPU 0、4、または8つの領域を持つSAU 命令キャッシュのサイズは4KB、8KB、16KB、32KB、64KBです。 データキャッシュのサイズは4KB、8KB、16KB、32KB、64KBです。 キャッシュとTCMにおけるECC 1~480 割り込み 3~8ビットの例外優先度 内部および外部のWICオプション、オプションのCTI、ITM、およびDWT ARMカスタム手順
チップス Alif SemiconductorのEnsembleおよびBalletto MCUファミリーは、シングルまたはデュアルのCortex-M55コアを搭載し、それぞれにEthos-U55 NPUが組み合わされています。 Ambiq Apollo330 Plus、Apollo510インフィニオン PSoC エッジST STM32 N6
文書 ARMチップのドキュメントは非常に充実しています。従来、8ビットマイクロコントローラのドキュメントは通常1つのドキュメントに収まっていましたが、マイクロコントローラの進化に伴い、それらをサポートするために必要なものも進化してきました。ARMチップのドキュメントパッケージは通常、ICメーカーとCPUコアベンダー(ARM Limited )からのドキュメントの集合体で構成されています。
典型的なトップダウン型のドキュメントツリーは以下のとおりです。
ドキュメントツリー(上から下へ) ICメーカーのウェブサイト。 ICメーカーのマーケティング資料。 正確な物理チップに関するICメーカーのデータシート。 ICメーカーが作成した、一般的な周辺機器や物理チップファミリの特性について解説したリファレンスマニュアル。 ARMコアのウェブサイト。 ARMコア汎用ユーザーガイド。 ARMコア技術リファレンスマニュアル。 ARMアーキテクチャリファレンスマニュアル。 ICメーカーは、評価ボードのユーザーマニュアル、アプリケーションノート、入門ガイド、ソフトウェアライブラリのドキュメント、正誤表など、追加のドキュメントを提供しています。Armの公式ドキュメントへのリンクについては、 「外部リンク」 セクションを参照してください。
参考文献 ↑ ARM Cortex-Mのウェブサイト。ARM Limited。 1 2 "Cortex-M0 Home" . ARM Limited . ↑ "Cortex-M0+ ホーム" . ARM Limited . 1 2 "Cortex-M1 Home" . ARM Limited . ↑ 「Cortex-M3 ホーム」 . ARM Limited . ↑ 「Cortex-M4 ホーム」 . ARM Limited . 1 2 3 "Cortex-M7 ホーム" . ARM Limited . 1 2 "Cortex-M23 Home" . ARM Limited . 1 2 "Cortex-M33 Home" . ARM Limited . 1 2 3 "Cortex-M35P ホーム" . ARM Limited . 1 2 3 "Cortex-M52 ホーム" . ARM Limited . 1 2 3 "Cortex-M55 ホーム" . ARM Limited . 1 2 "Cortex-M85 Home" . ARM Limited . ↑ 「マイクロSDカードのハッキングについて 」 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 「ARMv6-M アーキテクチャ リファレンス マニュアル」 . ARM Limited . 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 「ARMv7-M アーキテクチャ リファレンス マニュアル」 . ARM Limited . 1 2 3 4 Cortex-M3組み込みソフトウェア開発; アプリケーションノート179; ARM Limited。 1 2 3 「Cortex-M0 テクニカル リファレンス マニュアル」 . ARM Limited . 1 2 3 4 「Cortex-M0+ テクニカル リファレンス マニュアル」 . ARM Limited . 1 2 3 「Cortex-M1 テクニカル リファレンス マニュアル」 . ARM Limited . 1 2 3 「Cortex-M3 テクニカル リファレンス マニュアル」 . ARM Limited . 1 2 3 「Cortex-M4 テクニカル リファレンス マニュアル」 . ARM Limited . 1 2 3 4 「Cortex-M7 テクニカル リファレンス マニュアル」 . ARM Limited . 1 2 3 「Cortex-M23 テクニカル リファレンス マニュアル」 . ARM Limited . 1 2 3 「Cortex-M33 テクニカル リファレンス マニュアル」 . ARM Limited . 1 2 「Cortex-M52 テクニカル リファレンス マニュアル」 . ARM Limited . 1 2 「Cortex-M55 テクニカル リファレンス マニュアル」 . ARM Limited . 1 2 「Cortex-M85 テクニカル リファレンス マニュアル」 . ARM Limited . 1 2 3 「Cortex-M システム設計キット (CMSDK)」 . Arm Holdings . 2016 年 3 月 4 日の オリジナル からアーカイブ済み。 1 2 3 4 5 6 7 8 9 10 ARM Cortex-M メモリバリア命令プログラミングガイド; セクション 3.6 システム実装要件; AppNote 321; ARM Limited. 1 2 3 4 5 6 7 8 9 10 11 12 「ARMv8-Mアーキテクチャリファレンスマニュアル」 . ARM Limited . ↑ 32ビットPICおよびSAMマイクロコントローラ; マイクロチップ社製。 ↑ フィンガス、ジョン(2014年2月25日)。 「フリースケールが世界最小のARMコントローラチップをさらに小型化」 。 2014年 10月2日 取得 。 ↑ GOWIN SemiconductorがARM DesignStartに参加し、FPGA製品ファミリー向けにARM Cortex-M1プロセッサを無償提供開始 ↑ Cortex-M1 DesignStart FPGA XilinxEdition; ARM Limited. ↑ Sadasivan, Shyam. 「ARM Cortex-M3 プロセッサ入門」 (PDF) 。ARM Limited。2014 年 7 月 26 日に オリジナル (PDF)からアーカイブ済み。 ↑ 「Samsung Exynos 7420 徹底分析 - 最新の14nm SoCの内部」 。AnandTech。 2015年6月30日の オリジナルからアーカイブ済み。 2015年6月15日 取得 。 ↑ Cortex-M3 DesignStart FPGA XilinxEdition ↑ 「ARM、高性能Cortex-M7プロセッサでMCU市場を活性化」 。ARM Limited (プレスリリース)。2014年9月24日。 1 2 3 4 新しいARM Cortex-Mプロセッサは、セキュアなIoTの次世代業界標準を提供します。ARM Limited; 2016年10月25日。 1 2 ARMv8-Mアーキテクチャによりスマート組み込みデバイスのセキュリティが簡素化されます。ARM Limited、2015年11月10日。 ↑ "nRF54H20 - Nordic Semiconductor" . www.nordicsemi.com . 2024年10月30日 取得 . ↑ 「世界初のデュアルコアリアルタイム制御MCU、Cortex-M52プロセッサ搭載、Electronica China 2024で発表 」 ↑ https://newsroom.st.com/media-center/press-item.html/p4733.html
さらに読む 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版;Yifeng Zhu;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 。マイクロコントローラによる実践RTOS ;第1版;ブライアン・エイモス;496ページ;2020年;ISBN 978-1838826734 。
外部リンク ウィキメディア・コモンズには、ARM Cortex-M に関連するメディアがあります。
ARM Cortex-Mの公式文書 ARM Cortex-M 公式ウェブサイト Cortex-M入門(arm.com) ARMv8-M セキュリティ拡張機能arm.com Cortexマイクロコントローラソフトウェアインターフェース規格(CMSIS) arm.com クイックリファレンスカード 手順: 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 他の STM32 Cortex-Mマイクロコントローラにおけるビットバンディング