連載
» 2017年03月22日 12時00分 UPDATE

Q&Aで学ぶマイコン講座(36):ハーバードアーキテクチャって何? (3/3)

[菅井賢(STマイクロエレクトロニクス),EDN Japan]
前のページへ 1|2|3       

Cortex-M3のブロック図で確認

 図3にCortex-M3のブロック図を示します。

図3:ハーバードアーキテクチャ対応のCPU(Cortex-M3の場合)

 Cortex-M3プロセッサのブロック図の下の方に命令を取り込む「コードインタフェース」とデータのインタフェースの「SRAM&周辺インタフェース」回路があり、さらにそれらの上部にバスマトリックスがあって、命令とデータを処理するようになっています。また、Cortex-M3コアのブロック図の下の方に「命令インタフェース」と「データインタフェース」があり、これらはそれぞれ32ビット構成回路になります。

 以前はコストの制限からノイマン型を用いたマイコンが主流でしたが、近年、マイコンの製造プロセスが微細化されたことによって、随分とマイコンの論理回路を小さく作れるようになりました*1)。そのためバス面積が増えるハーバード型を用いてもマイコン全体の面積に大きな影響を与えなくなりました。最近では多くのマイコンでハーバード型が採用されています。

*1)参考記事:マイコン入門!! 必携用語集(11):90nmプロセスの“90nm”ってどこの長さ?――マイコンの作り方

実際のハーバードアーキテクチャ

 ここでは、STM32F1シリーズの「STM32F103」を例にとって説明します。

 図4に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で命令を実行する方法

筆者プロフィール

菅井 賢(すがい まさる)
(STマイクロエレクトロニクス マイクロコントローラ製品部 アプリケーション・マネージャー)

 日系半導体メーカーにて、25年以上にわたりマイコンの設計業務に携わる。その後、STマイクロエレクトロニクスに入社し、現在までARM Cortex-Mプロセッサを搭載したSTM32ファミリの技術サポート業務に従事。ARMマイコン以外にも精通しており、一般的な4ビットマイコンから32ビットマイコンまで幅広い知識を有する。業務の傍らマイコンに関する技術論文や記事の執筆を行っており、複雑な技術を誰にでも分かりやすい文章で解説することがモットー。


Q&Aで学ぶマイコン講座:過去の質問一覧はこちら

前のページへ 1|2|3       

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

RSSフィード

EDN 海外ネットワーク

All material on this site Copyright © 2005 - 2017 ITmedia Inc. All rights reserved.
This site contains articles under license from UBM Electronics, a division of United Business Media LLC.