ソフト・マクロのCPUでLinuxを動かす(前編) ――FPGAベースのボード・コンピュータを設計する

川岡 圭一

tag: 組み込み 半導体

技術解説 2004年8月16日

●○● Column ●○●
◆ソフト・プロセッサ「MicroBlaze」について◆

 Xilinx社のFPGA向けのソフト・プロセッサ「MicroBlaze」のブロック図を図Aに示します.以下に,特徴を簡単にまとめます.

f07_01.gif
図A MicroBlazeのブロック図

1)命令セット

 すべての命令は32ビット固定長です.Type AとType Bの2種類の命令に分けられます.Type Aの命令は,二つまでのソース・レジスタのオペランドと一つのデスティネーション・レジスタのオペランドを持ちます.Type Bの命令は,一つのソース・レジスタのオペランドと16ビット即値のオペランド,そして一つのデスティネーション・レジスタのオペランドを持ちます.また,IMM命令を使用することによって32ビットの即値を扱うことができます.

2)レジスタ

 MicroBlazeには2個のシステム・レジスタと32個の32ビット汎用レジスタがあります.システム・レジスタはPC(program counter)とMSR(machine status register)の2種類です.

3)パイプライン

 MicroBlazeの命令実行には,フェッチ,デコード,実行の三つのステージがあります.それぞれのステージは1クロック・サイクルで完了し,一つの命令が完了するのに3クロック必要です.各ステージはパイプライン化されており,1クロック・サイクルごとに命令実行が完了します.また,遅延分岐(遅延スロットを使用する)命令を持ち,分岐時にパイプラインをフラッシュすることのペナルティを減らすことができます.遅延分岐の命令はオペランドの末尾に"D"を追加します.

4)割り込み,例外,ブレーク

 MicroBlazeの割り込み,例外,ブレークは固定ベクタ方式で処理されます.

 リセット時には0x00番地からプログラムの実行を開始します.PCとMSRは初期化されます.

 例外が発生すると,0x08番地に分岐し,例外発生時のPCの値はR17に退避されます.

 MSRの割り込みイネーブル・ビット(IE)に'1'をセットすることで割り込み許可状態になります.割り込み発生時は0x10番地に分岐し,割り込み発生時のPCの値を14に退避し,IEを自動的に'0'にセットして割り込み禁止状態になります.割り込み応答については,通常命令を実行している場合は4~6サイクルの,divider(除算)命令を実行している場合は最大40サイクルの遅延が発生します.

 ブレークにはソフトウェア・ブレークとハードウェア・ブレークの2種類があります.ソフトウェア・ブレークにはBRK(BRKI)命令を使います.ハードウェア・ブレークはプロセッサの外部から信号を与えたときに発生します.ブレークが発生すると0x18番地に分岐し,ブレーク発生時のPCの値はR17に退避されます.

5)キャッシュ・メモリ

 独立した命令キャッシュとデータ・キャッシュを構成することができます.データ・キャッシュはライト・スルー方式です.キャッシュ・メモリにはFPGAの内蔵メモリを使用します.キャッシュ対 象領域,キャッシュ・サイズ,タグ・アドレス・ビット幅をEDK(Embedded Design Kit)上で指定すると,所望のキャッシュ・メモリが構成されます.

6)エンディアン

 MicroBlazeはビック・エンディアンのアーキテクチャです.MSBがビット0,LSBがビット31と表現されています.ソフトウェアからワード(32ビット)アクセスで0x00番地に0x00000001を書き込むと,ビット31に'1'がセットされます.

7)内部バス・インターフェース

 内部バスとしては,LMB(local memory bus)とOPB(on-chip peripheral bus)があります.また,それぞれ命令用とデータ用に分かれています.

 LMBは,FPGA内部のBRAM(Block RAM)に接続するための専用バスです.2クロック/サイクルと高速に動作します.

 OPBは米国IBM社のCoreConnectバス・アーキテクチャに準拠したものです.オンチップ・バスとして有名なバスの一つです.複数のマスタを接続でき,最短3クロック/サイクルで動作します.バス調停選択順序にはfixedとdynamicの2種類の方式があります.優先的に占有率上げたいものがある場合はfixedを指定し,均等にバスを使用させたい場合はdynamicを指定します.fixedを指定した場合,三つ以上のマスタを接続したときに優先度が低いものにバス権が回ってこないことあるので,占有率を考慮する必要があります.また,バス・ロック機能もあり,任意のサイクル間においてバスを占有することも可能です.

 OPB,LMBのほかに,MicroBlazeとFPGA内部の機能を直接接続するFSL(fast simplex link)インターフェースがあります.FSLには,32ビット幅の入力ポートと出力ポートがそれぞれ8個ずつ用意されています.MicroBlazeと内部機能をポイント・ツー・ポイントで接続しています.ソフトウェアからFSLリード命令およびFSLライト命令により,汎用レジスタと直接データをやりとりできます.

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日