Cortex-M3の概要

プロセッサについて

一般的に、プロセッサと言うと、演算部と制御部が一つにまとめられているものを指します。(人によって、プロセッサの定義は異なる場合がありますが…)

Cortex-M3も制御部と演算部を含んで、Cortex-M3プロセッサと呼んでいます。 Cortex-M3プロセッサの中に、演算部であるCortex-M3コアが含まれていますので、Cortex-M3プロセッサとCortex-M3コアの2層構造になっていると言えます。

Cortex-M3コア

Cortex-M3コアはいわゆるCPU部分になります。メイン回路は32ビットのALU(Arithmetic Logical Unit)です。この中にハードウエアの割り算回路と掛け算回路も含まれています。

下図には記載されていませんが、バレルシフタも搭載されていて、一度に多ビットのシフトもできるようになっています。演算回路の他には命令デコーダが含まれていて、命令インターフェースから取り込んだ命令を解読します。そして、これらを制御する制御回路があります。

割り込み回路NVICはCortex-M3コアには含まれていません。インターフェース回路だけを搭載していて、NVICの本体はCortex-M3コアの外側にあります。また、デバッグ用回路のETMもCortex-M3コアには含まれていません。これもインターフェース回路だけでCortex-M3コアの外に搭載されています。

その他の回路としては、データを出し入れするためのデータインタフェースがあります。

図1

Cortex-M3プロセッサ

Cortex-M3プロセッサのメインはCortex-M3コアです。Cortex-M3コアと密接に関係しているのは統合ネスト型ベクタ割り込みコントローラ(NVIC)です。例外(割り込み、フォールト)処理を一手に引き受けています。

デバッグ用の回路は命令トレース用のETMとデータトレース用のシリアルワイヤビューア(SWV)が搭載されています。ETMはオプションですがSWVは標準装備です。

デバッグ回路に関してですが、Cortex-M3プロセッサ自身にはJTAG(Joint Test Action Group)は搭載されていません。Cortex-M3の外部に置かれていて、そのインターフェースはDAP(Debug Access Port)が担っています。

メモリプロテクトユニット(MPU)もオプションです。ユーザーが保護設定したメモリのエリアをアクセスするとフォールト処理を行います。MPUに関連したハードはデータウォッチポイントとFlashパッチです。

Cortex-M3プロセッサの中にバスマトリックスがあり、データのアクセスを容易にかつ高速に処理することができます。ビット単位のデータ処理を簡単に行えるのも、バスマトリックスのおかげです。バスマトリックスに付随した回路は、コードインターフェースとSRAM & 周辺インターフェースです。いずれもメモリアクセスの管理と制御を行います。