図3にCortex-M3のブロック図を示します。
Cortex-M3プロセッサのブロック図の下の方に命令を取り込む「コードインタフェース」とデータのインタフェースの「SRAM&周辺インタフェース」回路があり、さらにそれらの上部にバスマトリックスがあって、命令とデータを処理するようになっています。また、Cortex-M3コアのブロック図の下の方に「命令インタフェース」と「データインタフェース」があり、これらはそれぞれ32ビット構成回路になります。
以前はコストの制限からノイマン型を用いたマイコンが主流でしたが、近年、マイコンの製造プロセスが微細化されたことによって、随分とマイコンの論理回路を小さく作れるようになりました*1)。そのためバス面積が増えるハーバード型を用いてもマイコン全体の面積に大きな影響を与えなくなりました。最近では多くのマイコンでハーバード型が採用されています。
*1)参考記事:マイコン入門!! 必携用語集(11):90nmプロセスの“90nm”ってどこの長さ?――マイコンの作り方
ここでは、STM32F1シリーズの「STM32F103」を例にとって説明します。
図4にSTM32F103のバス構成を示します。
図左側のCortex-M3とDMA(Direct Memory Access)がバスマスターです。Cortex-M3の命令バスはICodeバスです。そしてデータバスとしてDCodeバスとシステムインタフェースバスの2種類をもっています。STM32F103のデータバスはバスマトリックス構成になっていますので、バスマスター側は、Cortex-M3のDcodeバスとシステムインタフェースバスとDMAのデータバスが接続されています。バススレーブ側のデータバスは、全てバスマトリックスにつながっています。フラッシュメモリにデータを保存する場合もありますので、フラッシュメモリからもバスマトリックスにつながっています。Cortex-M3のICodeバスはフラッシュメモリインタフェース回路経由で内蔵フラッシュメモリにつながっていて、バスマトリックスにはつながっていません。
この図だけ見ると、命令はフラッシュメモリからしか実行できないように見えますが、Cortex-M3の場合、データバスからでも実行できますので、RAM*2)や周辺機能経由で接続されている外部メモリからも実行できます。
*2)参考記事:Q&Aで学ぶマイコン講座(34):RAMで命令を実行する方法
日系半導体メーカーにて、25年以上にわたりマイコンの設計業務に携わる。その後、STマイクロエレクトロニクスに入社し、現在までARM Cortex-Mプロセッサを搭載したSTM32ファミリの技術サポート業務に従事。ARMマイコン以外にも精通しており、一般的な4ビットマイコンから32ビットマイコンまで幅広い知識を有する。業務の傍らマイコンに関する技術論文や記事の執筆を行っており、複雑な技術を誰にでも分かりやすい文章で解説することがモットー。
(次の記事を読む)
Copyright © ITmedia, Inc. All Rights Reserved.