

ARM Cortex-Mは、 ARM Limitedがライセンス供与する32 ビットRISC ARMプロセッサ コアのグループです。これらのコアは、低コストでエネルギー効率の高い集積回路向けに最適化されており、数百億個の民生機器に組み込まれています。[ 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」はコアのバリアントです。
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コアのシリコンオプションには、以下のようなものがあります。
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-M シリーズの ARM アーキテクチャでは、古いレガシー コアからいくつかの機能が削除されました。[ 15 ] [ 16 ]
32ビットARM命令セットの機能は、Thumb-1およびThumb-2命令セットによって多くの点で複製されていますが、ARMの一部の機能には同様の機能がありません。
16ビットThumb-1命令セットは、 ARMv4Tアーキテクチャを採用した従来のARM7Tコアで初めてリリースされて以来、進化を続けてきました。新しいThumb-1命令は、ARMv5、ARMv6、ARMv6T2といった従来のアーキテクチャがリリースされるたびに追加されました。Cortex-Mコアからは、一部の16ビットThumb-1命令が削除されています。


Cortex-M0コアは、小型シリコンダイサイズと低価格チップでの使用に最適化されています。[ 2 ]
Cortex-M0コアの主な特徴は次のとおりです。[ 18 ]
シリコンの選択肢:
以下のマイクロコントローラは、Cortex-M0コアをベースとしています。
以下のチップは、セカンダリーコアとしてCortex-M0を搭載しています。

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 ]
シリコンの選択肢:
以下のマイクロコントローラは、Cortex-M0+コアをベースとしています。
以下のチップは、セカンダリーコアとしてCortex-M0+を搭載しています。
最小の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のサイズで、塩粒よりも小さい。
Cortex-M1は、FPGAチップに搭載するために特別に設計された最適化されたコアです。[ 4 ]
Cortex-M1コアの主な特徴は次のとおりです。[ 20 ]
シリコンの選択肢:
以下のベンダーは、自社のFPGAチップ上でCortex-M1をソフトコアとしてサポートしています。


Cortex-M3コアの主な特徴は次のとおりです。[ 21 ] [ 36 ]
シリコンの選択肢:
以下のマイクロコントローラは、Cortex-M3コアをベースとしています。


以下のチップは、セカンダリーコアとしてCortex-M3を搭載しています。
以下のFPGAにはCortex-M3コアが搭載されています。
以下のベンダーは、自社のFPGAチップ上でCortex-M3をソフトコアとしてサポートしています。
概念的には、Cortex-M4はCortex-M3にDSP命令とオプションの浮動小数点演算ユニット(FPU)を追加したものです。FPUを搭載したコアはCortex-M4Fと呼ばれます。
Cortex-M4コアの主な特徴は次のとおりです。[ 22 ]
シリコンの選択肢:
以下のマイクロコントローラは、Cortex-M4コアをベースとしています。
以下のマイクロコントローラは、Cortex-M4F(M4 + FPU)コアをベースとしています。

以下のチップは、セカンダリーコアとしてCortex-M4またはM4Fを搭載しています。


Cortex-M7は、旧型のCortex-M4のほぼ2倍の電力効率を持つ高性能コアです。[ 7 ]分岐予測機能を備えた6段スーパースカラパイプラインと、単精度演算とオプションで倍精度演算が可能なオプションの浮動小数点ユニットを搭載しています。[ 7 ] [ 39 ] 命令バスとデータバスは、以前の32ビットバスから64ビット幅に拡張されています。FPUを搭載したコアはCortex-M7Fと呼ばれ、そうでない場合はCortex-M7と呼ばれます。
Cortex-M7コアの主な特徴は次のとおりです。[ 23 ]
シリコンの選択肢:
以下のマイクロコントローラは、Cortex-M7コアをベースとしています。
以下のチップは、セカンダリーコアとしてCortex-M7を搭載しています。
Cortex-M23コアは2016年10月に発表され[ 40 ]、2015年11月に発表されたARMv8-Mアーキテクチャに基づいています[ 41 ]。 概念的には、Cortex-M23はCortex-M0+に整数除算命令とTrustZoneセキュリティ機能を追加したものに似ており、2段階の命令パイプラインも備えています[ 8 ]。
Cortex-M23コアの主な特徴は次のとおりです。[ 24 ] [ 40 ]
シリコンの選択肢:
以下のマイクロコントローラは、Cortex-M23コアをベースとしています。

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を搭載しています。
Cortex-M35Pコアは2018年5月に発表され、Armv8-Mアーキテクチャに基づいています。概念的には、新しい命令キャッシュ、ARM SecurCoreファミリーから借用した新しい耐タンパー性ハードウェアコンセプト、構成可能なパリティおよびECC機能を備えたCortex-M33コアです。[ 10 ]
現在、Cortex-M35Pに関する情報は限られています。これは、技術リファレンスマニュアルと汎用ユーザーガイドがまだ公開されていないためです。
以下のマイクロコントローラは、Cortex-M35Pコアをベースとしています。
Cortex-M52コアは2023年11月に発表され、Armv8.1-Mアーキテクチャに基づいています。概念的には、Cortex-M33とCortex-M55の中間のようなものと言えます。主な違いは、Heliumコプロセッサがシングルビート(M55はデュアルビート)であること、そしてアプリケーションの移行を容易にするためにM33と同様の32ビットメインバスを備えていることです。4段の命令パイプラインを備えています。[ 11 ]
Cortex-M52コアの主な特徴は以下のとおりです。
シリコンの選択肢:
以下のマイクロコントローラは、Cortex M52コアをベースとしています。
Cortex-M55コアは2020年2月に発表され、Armv8.1-Mアーキテクチャに基づいています。4段または5段の命令パイプラインを備えています。[ 12 ]
Cortex-M55コアの主な特徴は以下のとおりです。
シリコンの選択肢:
Cortex-M85コアは2022年4月に発表され、Armv8.1-Mアーキテクチャに基づいています。7段の命令パイプラインを備えています。[ 13 ]
シリコンの選択肢:
ARMチップのドキュメントは非常に充実しています。従来、8ビットマイクロコントローラのドキュメントは通常1つのドキュメントに収まっていましたが、マイクロコントローラの進化に伴い、それらをサポートするために必要なものも進化してきました。ARMチップのドキュメントパッケージは通常、ICメーカーとCPUコアベンダー(ARM Limited)からのドキュメントの集合体で構成されています。
典型的なトップダウン型のドキュメントツリーは以下のとおりです。
ICメーカーは、評価ボードのユーザーマニュアル、アプリケーションノート、入門ガイド、ソフトウェアライブラリのドキュメント、正誤表など、追加のドキュメントを提供しています。Armの公式ドキュメントへのリンクについては、 「外部リンク」セクションを参照してください。