MicroBlazeは、ザイリンクス社のフィールドプログラマブルゲートアレイ(FPGA)向けに設計されたソフトマイクロプロセッサコアです。ソフトコアプロセッサであるMicroBlazeは、ザイリンクスFPGAの汎用メモリおよびロジックファブリック上に完全に実装されています。
MicroBlazeは2002年に導入されました。[ 1 ]
命令セットアーキテクチャに関して言えば、MicroBlazeは、PattersonとHennessyによる人気のコンピュータアーキテクチャ書籍で解説されているRISCベースのDLXアーキテクチャに類似している。ごく一部の例外を除き、MicroBlazeは毎サイクル新しい命令を発行することができ、ほとんどの場合、シングルサイクルスループットを維持する。
MicroBlazeは、さまざまな組み込みアプリケーションをサポートする汎用性の高い相互接続システムを備えています。MicroBlazeの主要なI/OバスであるAXI相互接続は、マスタースレーブ機能を備えたシステムメモリマップドトランザクションバスです。MicroBlazeの旧バージョンでは、CoreConnect PLBバスが使用されていました。ベンダー提供およびサードパーティ製のIPの大部分は、AXIに直接(またはAXI相互接続を介して)接続します。ローカルメモリ(FPGA RAM)へのアクセスには、MicroBlazeは専用のLMBバスを使用し、高速なオンチップストレージを提供します。ユーザー定義のコプロセッサは、専用のAXI4-Stream接続を介してサポートされます。コプロセッサインターフェースは、計算の一部または全体をユーザーが設計したハードウェアモジュールにオフロードすることで、計算負荷の高いアルゴリズムを高速化できます。
MicroBlazeの多くの側面はユーザーが構成できます。キャッシュサイズ、パイプラインの深さ(3段、5段、または8段)、組み込み周辺機器、メモリ管理ユニット、バスインターフェースなどをカスタマイズできます。面積最適化バージョンのMicroBlazeは3段パイプラインを使用し、クロック周波数を犠牲にしてロジック面積を削減しています。パフォーマンス最適化バージョンは実行パイプラインを5段に拡張し、700MHzを超える最高速度を実現します( Virtex UltraScale+ FPGAファミリの場合)。また、使用頻度は低いもののハードウェアでの実装コストが高い主要なプロセッサ命令(乗算、除算、浮動小数点演算など)を選択的に追加/削除できます。このカスタマイズにより、開発者は特定のホストハードウェアとアプリケーションソフトウェアの要件に合わせて適切な設計上のトレードオフを行うことができます。
MicroBlazeはメモリ管理ユニットを備えているため、Linuxカーネルのようにハードウェアベースのページングと保護を必要とするオペレーティングシステムをホストできます。それ以外の場合は、 FreeRTOSやMMUをサポートしないLinuxなど、保護と仮想メモリモデルが簡素化されたオペレーティングシステムに限定されます。MicroBlazeの全体的なスループットは、同等のハードCPUコア( ZynqのARM Cortex-A9など)と比べて大幅に低くなっています。
MicroBlaze VはRISC-Vアーキテクチャに基づいています。
Fast Simplex Link (FSL) はMicroBlaze上の 32 ビット幅のインターフェースです。FSL チャネルは、単方向のポイントツーポイントデータ ストリーミングインターフェイスです。[ 2 ] MicroBlaze プロセッサは最大 8 つの FSL チャネルをサポートします。[ 3 ]このインターフェイスにより、MicroBlaze プロセッサは周辺機器や他のプロセッサと通信できます。[ 4 ] FSL は、プロセッサ パイプラインへの低遅延専用インターフェイスのおかげで、カスタムハードウェア アクセラレータを使用してプロセッサ実行ユニットを拡張するために使用できます。さらに、同じ FSL チャネルを使用して、制御ワードまたはデータ ワードの送受信を行うことができます。インターフェイスはFIFOであり、送信または受信されたワードが制御情報かデータ情報かを示す別のビットがあります。[ 5 ] FSL は、 CoreConnectのオンチップ周辺バスと比較して低遅延です。 [ 6 ]
ザイリンクスのVivado Design Suiteは、ザイリンクス製FPGA上で最新のMicroBlaze(またはARM - Zynqを参照)組み込みプロセッサシステムを構築するための開発環境です。旧バージョンでは、ザイリンクスのEDK(組み込み開発キット)開発パッケージが使用されていました。
設計者は Vivado IP Integrator を使用して、組み込みシステムのハードウェア仕様(プロセッサ コア、メモリ コントローラ、I/O 周辺機器など)を構成および構築します。IP Integrator は、設計者のブロック設計を合成可能なRTL記述(VerilogまたはVHDL)に変換し、組み込みシステムの実装(RTL からビットストリーム ファイルまで)を自動化します。MicroBlaze コアの場合、Vivado は暗号化された(人間が読み取れない)ネットリストを生成します。
SDKは、組み込みシステム上で実行されるソフトウェアを管理します。GNUツールチェーン(GNUコンパイラコレクション、GNUデバッガ)を基盤とするSDKを使用することで、プログラマは組み込みシステム向けのC/C++アプリケーションの作成、コンパイル、デバッグを行うことができます。ザイリンクスのツールは、シミュレーション環境でソフトウェアを実行したり、適切なFPGAボードを使用して実際のシステムにダウンロードして実行したりすることを可能にします。
Vivadoの購入者には、Xilinx FPGAでMicroBlazeを使用するための永久ライセンスが付与され、継続的なロイヤリティは発生しません。このライセンスは、Xilinx製デバイス以外でMicroBlazeを使用する権利を付与するものではありません。
Altium社からは代替コンパイラと開発ツールが提供されていますが、EDKのインストールとライセンスは依然として必要です。
2009年6月、MicroBlazeはLinuxカーネルのメインラインソースツリーに統合された最初のソフトCPUアーキテクチャとなった。この開発はMichal Simek氏によって行われ、PetaLogix社とXilinx社が支援した。
2009年に、MicroBlaze GNUツールサポートがフリーソフトウェア財団のメインラインリポジトリに貢献されました。MicroBlazeのサポートは、バージョン4.6以降のGCCリリースに含まれています[ 7 ]。
LLVMへのサポートは2010年4月に追加されたが[ 8 ]、その後、メンテナーの不足により2013年7月に削除された[ 9 ] 。
ソフトコア プロセッサ (microblaze-elf) 組み込みターゲットのサポートが追加されました。