Nios II マルチプロセッサー・デザイン例では、インテル® FPGA で複数の Nios II プロセッサーを使用する方法を示します。この例では、適切に構築された階層的なハードウェア・システムを示すことを主眼としていますが、システムのプロセッサー間協調機能を発揮するためのソフトウェアも含んでいます。
この例では、古典的な「食事する哲学者」の同期問題を実装しています。5 人の哲学者が円卓を囲んでいるところを想像してみてください。それぞれの哲学者の間には一本の箸が置かれています。それぞれの哲学者は、まず左の箸をつかみ、次に右の箸をつかみます。両方の箸が手に入れば、その哲学者は食事ができます。それぞれの哲学者は、少しの遅延 (食事の時間を表す) の後で、両方の箸を落とし、隣の哲学者たちが使えるようにします。さらに少しの遅延 (思考時間を表す) の後で、このサイクルが繰り返されます。デッドロックを防ぐため、哲学者が左の箸をつかんだ後、すぐに右の箸をつかめない場合は、左の箸を落として、後でもう一度やり直さなければなりません。
Qsys を使って作成されたこの階層型ハードウェア・デザインでは、5つのプロセッサを 5 人の食事をする哲学者のそれぞれに割り当て、5 つのハードウェア・ミューテックスを 5 本の箸のそれぞれに割り当てています。トップレベルには、6 番目の Nios II プロセッサーとオンチップ RAM があり、さらに JTAG UART とタイマーがあります。5 つのサブシステムはそれぞれ、トップレベルのオンチップ RAM を共有し、Nios II プロセッサー、JTAG UART、タイマー、そしてプロセッサーに相互排他的な連携を提供するハードウェア・ペリフェラルであるミューテックスを搭載しています。Avalon® メモリーマップド (Avalon-MM) パイプライン・ブリッジは、サブシステムとトップレベルのコンポーネント間、およびリング状に接続された論理的に隣接するサブシステムにあるプロセッサーとミューテックス間の通信を可能にします。
dining_philosophers.c ソフトウェアは、は、5 つのサブシステム・プロセッサー上で動作し、考える、食べる、箸を取る、離すといったプロセスを実行します。トップレベルのプロセッサーは、philosophers_monitor.c を実行し、任意のミューテックスを獲得するための数字のコマンドを受け付けます。これにより、論理的に隣接する「哲学者」プロセッサーは、「箸」のミューテックスが解放されるまで、食事ができません。
ハードウェアのデザイン仕様
- ボードのサポート
- Cyclone® III 3C120 FPGA デベロップメント・キット
- Nios II/f ロセッサーコア、デバッグ対応、4KB のインストラクション・キャッシュ、2KB のデータキャッシュ: 6
- システムタイマー: 6
- オンチップ RAM: 64 KB
- JTAG UART ペリフェラル: 6
- ミューテックス・ペリフェラル: 5
- システム IDペリフェラル: 1
このデザイン例は、マルチプロセッサー Nios II システムの作成チュートリアル (PDF)に基づいています。Nios II マルチプロセッサー・システムの実装に関する詳細は、上記のチュートリアルを参照してください。
ブロック図
この例で使用されているファイルをダウンロード:
.zip ファイルには、例を再現するのに必要なすべてのハードウェアおよびソフトウェアのファイル、ならびに readme.txt ファイルが含まれます。
このデザインの使用には、インテル® デザイン例ライセンス契約の条件が適用されます。