Cortex-M3の特徴

Cortex-M3プロセッサの概要

Cortex-M3プロセッサの機能概要を簡単に説明します。その後、各特徴毎に詳しく説明していきたいと思います。

Cortex-M3コアの特徴

Cortex-M3コアは、少ないゲート数、短い割り込みのオーバーヘッド、低コストのデバッグを特徴とする低電力コアです。高速な割り込み応答機能を要求する組み込み用途に向いています。

Thumb-2 命令セット

Cortex-M3コアではThumb-2 命令セット(16ビット長と32ビット長の混在命令)を採用しています。これは命令セット・アーキテクチャ(ISA)のサブセットで、16ビットおよび32ビットの基本Thumb-2ハーバードアーキテクチャ命令がすべて含まれますが、メディア、単一命令複数データ処理(SIMD)、デジタル信号処理(DSP)命令(Eバリアント)、ARMシステムアクセスの部分は含まれていません(Cortex-M4では搭載)。そして、32ビットコードの性能と16ビットの高いコード密度の両方を提供します。(ARM7等のARM命令は使えません。)

ハーバードアーキテクチャ

ハーバードアーキテクチャを採用することにより、命令バスとデータバスが独立した構成になり、メモリのアクセスが効率的に行えます。たとえば、命令フェッチとデータ保存が同時に実行可能です。

ベクタテーブル

ベクタテーブルは命令方式ではなくアドレス方式です。ジャンプ先アドレスを格納すれば良いだけの簡単な方式です。

完全C言語対応

完全C言語対応しています。例外処理のリセット、割り込みもC言語で記述可能です。

3段パイプライン

フェッチ、デコード、実行の3段パイプラインです。

統合システムタイマ (SysTick)

リアルタイムOS、スケジュールタスクの為の統合システムタイマ(SysTick)を搭載しています。タイムベース管理が容易にできます。

ハードウエア除算(割り算器)

ハードウェア除算命令のSDIVおよびUDIV(Thumb-2 命令、符号付、符号なし除算)があります。2から12サイクルで実行されます。サイクル数は、被除数と除数に依存し、被除数と除数がほぼ同じサイズの場合、除算は少ないサイクル数で終了します。また、除算は割り込み等により中断されます。その場合、演算結果は一旦破棄され、再計算されます。

統合バスマトリック・バスインタフェース

統合バスマトリックを採用したため、バスアービター、ビット操作が容易なビットバンディング、書き込みデータをバッファするためのライトバッファ等の特徴があります。

シングルサイクル乗算

結果が32ビットの掛け算は1サイクルで実行されますが、64ビットの結果の掛け算は3~7サイクルかかります。ソースの値に依存して演算を早く終わらせる仕組みが採用されています。また、割り算と同じように掛け算も 実行中に割り込みが発生した場合、中断されます。

乗算のサイクル数
Source Destination Cycles
16b x 16b 32b 1
32b x 16b 32b 1
32b x 32b 32b 1
32b x 32b 64b 3-7

ネスト型ベクタ割り込みコントローラ(NVIC)

ネスト型ベクタ割り込みコントローラ(NVIC)が密接にプロセッサに統合されているので、短いオーバーヘッドの割り込み処理を実現しています。

外部割り込み(マイコンの外部割り込みではなくCPUコアとして)は、1~239要因が可能です。優先度は、3~8ビット(最大256レベル)の間で選択可能です。割り込みの優先度をダイナミックに設定可能ですので、割り込みサービスルーチンの中でも、優先順位を変更して、割り込みの実行順序を制御することができます。

さらに、優先度のグループ化が可能です。これにより、優先して実行される割り込みレベルと実行されない割り込みのレベルを選択できるようになります。割り込み処理では、割り込みと割り込みの間における状態の保存と復元(PUSH&POP)のオーバヘッド無しで、連続した割り込み処理が可能になります。自動的にプロセッサ状態が割り込みエントリ時に保存され、割り込み復帰時に復元されるため、命令のオーバーヘッドがありません。割り込みのオーバーヘッドを削減するために、中断可能で、割り込みから復帰後に継続可能な複数転送命令(LDM/STM)、PUSH/POPを持っています。

メモリ保護ユニット(MPU)

メモリ保護に使用されるオプションのMPUです。8つのメモリ領域をサポートします。サブ領域無効化(SRD)(Sub Region Disable)によるメモリ領域の効率的な利用が可能です。バックグラウンド領域の許可により、デフォルトでのメモリマップ属性を与えることが可能です。

低コストのデバッグソリューション

Cortex-M3のデバッキング・ハードウエアは、CoreSightに基づいて、下表の機能が搭載されています。CoreSightの詳細についてはARMのWebサイトをご参照ください

機能 CoreSightコンポーネント Cortex-M0(参考) Cortex-M3
デバッグ デバッグ インタフェース テクノロジ
少ない配線で高機能なデバッグを可能にしたシリアルワイヤ デバッグポート(SW-DP)(Serial Wire Debug Port)および、シリアルワイヤJTAGデバッグポート(SWJ-DP)(Serial Wire JTAG Debug Port)の、一方または両方によるデバッグアクセスが可能です。
JTAGまたはシリアル ワイヤ デバッグ(Cortex-M0 DAPを使用)デュアル モードには完全なCoreSight DAPが必要 デュアルJTAG & SWDのサポート(CoreSight SWJ-DPを使用)
コード実行中のメモリ アクセス
デバッグアクセスは、システムのすべてのメモリとレジスタへアクセス可能です。アクセスは、コアの実行中、ホールト中、またはリセット中のすべての場合に可能です。レジスタの中にはCortex-M3のレジスタ バンクも含みます。
有り 有り
ブレークポイント
フラッシュパッチおよびブレークポイント(FPB)(Flash Patch and Breakpoint)ユニットにより、ブレークポイントおよびコードへのパッチを実現しました。
4 6個の命令アドレス + 2個のリテラル アドレス
ウォッチポイント
データウォッチポイントおよびトレース(DWT)(Data Watchpoint and Trace)ユニットにより、ウォッチポイント、データトレース、およびシステムプロファイリングを実現しました。
2 4
BKPT命令 有り 有り
トレース ETM命令トレース
エンベデッドトレース マクロセル(ETM)によるリアルタイムな命令トレースが可能です。
○(オプション)
データ ウォッチポイント & トレース(DWT) ○(オプション)
計装トレース マクロセル(ITM)
ITM(Instrumentation Trace Macrocell)により、printf方式のデバッグをサポートしています。
○(オプション)
AHBトレース マクロセルへのインタフェース ○(オプション)
シリアル ワイヤ ビューア ○(トレースがあるとき)
トレース ポート
トレースポート インタフェースユニット(TPIU)が、トレースポート アナライザ(TPA)(Trace Port Analyzer)へのブリッジとなります。
M3 TPIUの場合、1~4ビット。
より大型のトレース ポートにはCoreSight TPIUを使用可能

その他の特徴

  • ①レジスタのうち、スタックポインタ(SP)のみがバンク切替え方式
  • ②ハンドラモードとスレッドモード
  • ③Thumb状態とデバッグ状態
  • ④エンディアンは、ARMv6アーキテクチャ方式のBE8/LE をサポートしています
  • ⑤メモリアクセスは、ARMv6のアンアラインドアクセスをサポートしています