このデザイン例では、FPGA ベースのエンベデッド・デザインにおいて、Nios® II C-to-Hardware(C2H) アクセラレーション・コンパイラを使用してどのようにダイナミック消費電力を低減するかについて解説します。このデザインでは、マンデルブロー・フラクタル・パターンを計算し、消費電力およびシステム全体のスループットの効果を測定します。
このデザイン例は、低コスト Cyclone® III FPGA スタータ開発キットにて動作します。
この例には、3つの個別のデザインが含まれます。それぞれは、異なるレベルのハードウェア・アクセラレーションを示します。
-
ハードウェア・アクセラレータ なし
-
1個のハードウェア・アクセラレータ
-
5個のハードウェア・アクセラレータ
3つすべての例は、プロセッサおよびアクセラレータ両方のクロック周波数を順番に変更するため、個々のコンフィギュレーションごとに消費電力が計測および比較可能となります。
この例では、ハードウェア・アクセラレータをデザインに追加することで、システムのクロック周波数を大幅に削減することができることを示しています。これにより、ダイナミック消費電力を低減しながらシステムに必要とされる性能を維持します。表1では、3つのサンプル・コンフィギュレーション用に計測したダイナミック消費電力を示しています。
| 表 1. 計測したダイナミック消費電力 | |||
| システム・コンフィギュレーション | Nios II アクセラレータ なし | Nios II 1個アクセラレータ | Nios II 5個の アクセラレータ |
|---|---|---|---|
| クロック周波数 |
80 MHz |
40 MHz |
20 MHz |
| トータル・ダイナミック消費電力(1) |
132 mW |
72 mW |
84 mW |
| マンデルブロー処理性能 |
.184 Fps (2) |
8.2 Fps |
20.1Fps |
| システム効率 | フレームあたり 717 mWs (3) | フレームあたり 8.7 mWs | フレームあたり 4.1 mWs |
注:
- ダイナミック消費電力は、トータル消費電力からスタティック消費電力を差し引いた値です(クロックを適用しない消費電力を計測)。
- Fps = Frames per second
- mWs = Miliwatt seconds
5個のアクセラレータがあるシステムでは、それぞれのアクセラレータが独立して動作し、1ラインごとに処理を行います。1ラインのイメージ処理が完了すると、次のラインを取得し、処理を開始します。複数のアクセラレータが同じラインを取得しないように、ハードウェア Mutex が使用されています。図 1 では、5個のアクセラレータがあるシステムのブロック図を示します。
図 1. 5個のアクセラレータがあるシステムのブロック図
デザイン例の実行
Nios II 低費電力デザイン例を、以下の手順に従ってダウンロードし、動作することが可能です。
- Nios II 低消費電力デザイン例 (Zip ファイル)をダウンロード
- ダウンロードしたZip ファイルを解凍し、任意の場所に保管
- 電源をオンにし、USB ケーブルを Cyclone III スタータ開発キットに接続し、ケーブルの逆側を使用しているコンピュータの USB コネクターに接続。そして、ボードの電源をオン。
- Nios II コマンド・シェルを立ち上げ、デレクトリーを Zip ファイルを解凍した場所に変更
- デレクトリを "c3_power_c2h_0_accel//software_examples/app/accel_0_test"に変更
- “./create_this_app” のコマンドを入力し、ソフトウェア・プロジェクトを作成
- “nios2-configure-sof ../../../c3_power_proj.sof “ のコマンドを入力し、Cyclone IIIスタータ開発キットのボードを 65nm FPGA をコンフィギュレーション
- “nios2-terminal” のコマンドを入力し、ターミナル・セッションを起動
- “make download-elf” のコマンドを入力し、Nios II プロセッサのソフトウェアをダウンロードし、実行
これは、Nios II のみ(アクセラレータなし)のデザインで動作可能です。Nios II と 1個のアクセラレータ、そしてNios II と 5個のアクセラレータ・デザインを動作させるには、ステップ5から9を繰り返し、ステップ5のパスを "c3_power_c2h_1_accel" と "c3_power_c2h_5_accel" にそれぞれ置き換えてください。
このボードは、クロック周波数情報とマンデルブロー性能計測値をターミナル・セッションに出力します。電流検知レジスタおよびボードの電圧を測定することで、FPGA コアのトータル消費電力を測定可能です。
FPGA コアの消費電力を正確に計測し、計算する手順の詳細については、Cyclone III FPGA スタータ開発キットのユーザガイドを参照してください。
