そのシステムにはパフォーマンスの向上が求められていますか?それでしたら、ハードウェア・アクセラレーションをご検討ください。ハードウェア・アクセラレーションを使用することで、システムのボトルネクとなっているCコードを切り出しFPGA内でハードウェア化(アクセラレータ)することで、システム性能を向上させることが可能となります。
ハードウェア・アクセラレータ生成を面倒なこととお考えですか?アルテラのツールでは、右クリックするだけで高性能化を妨げる C 言語のサブルーチンをハードウェアへ自動変換し、システム性能を向上させることが可能となります。
以下では、FPGAによるソフトウェア処理の高速化について解説します。Nios II の開発においては、次の 2つのハードウェア・アクセラレーション方法を使用できます。
ハードウェア・アクセラレータ
C2H コンパイラで自動的生成されるロジックブロックや、システム・プロセッサから特定のタスクをオフロードして動作させるためのマニュアルで作成したロジックブロックを、ハードウェア・アクセラレータと呼びます。多くの算術演算は、ソフトウェアよりもハードウェアで実装した方が、より高速かつ効率的に実行されます。SOPC Builder および Avalon スイッチ・ファブリックは、Nios II プロセッサで実行されるソフトウェアの性能を向上させるために、ハードウェア・アクセラレータをサポートしています。ハードウェア・アクセラレータには、以下のような特長があります。
- 完全なパイプラインやレイテンシを考慮したマスタポートのあるメインメモリや他のシステムリソースが、広いメモリ帯域幅を維持します。
- スレーブ・ポートを通して、CPU により制御されます。
- CPU からコントロールするためのソフトウェア・ラッパ機能があり、ツール・チェイン内でオリジナルの C コードの代わりをします。
図 1 は、標準的なハードウェア・アクセラレータの構造を示します。 この例では、アクセラレータは Avalon スイッチ・ファブリックに対する 2つのマスタ・ポート(リードとライト)を備えています。アクセラレータは、ダイレクト・メモリ・アクセス(DMA)コンポーネントを使用して、バスのリードおよびライト動作を実行します。プロセッサ制御に対処するためのコントロール・ポートを備えています。 さらに、中核のアクセラレータ・ロジックが、指定されたアルゴリズムを実際に計算するエンジンになります。
図 1. 標準的なハードウェア・アクセラレータ

ハードウェア・アクセラレータは、アルテラの FPGA に非常に強力な機能を付加します。 ハードウェア・アクセラレータは、システム内の任意のメモリまたはペリフェラルに、パイプライン化アクセスを実行する複雑なマルチサイクル・コプロセッサとして実装されます。ハードウェア・アクセラレータは、オンチップ・メモリやハード・マクロ乗算器などの FPGA リソースを利用して、ローカル・メモリ・バッファや乗算累積 (MAC) 回路を実装することができます。 ハードウェア・アクセラレータは、必要数のマスタポートを使用しながら独自のリードおよびライト動作を開始して、システム内の任意の I/O にアクセスできます。 Nios II の開発者の多くが、ハードウェア・アクセラレータはソフトウェア・コードの性能を強化する良い方法であり、アルテラ FPGA のアーキテクチャの高性能性を十分に生かすものであることを認識しています。
カスタム命令
ハードウェア・アクセラレータと同様に、カスタム命令でも、ソフトウェア・コードの一部をハードウェア機能に肩代わりさせることによって、システム性能の向上を図ることができます。 ただし、カスタム命令はプロセッサコア内に実装され、CPU 命令セットを拡張して時間重視のソフトウェアの高速化を図ります。
Nios II プロセッサはコンフィギュレーション可能な特質を備えているため、カスタム・ロジックを演算ロジック・ユニット(ALU)に直接統合することができます。 開発者は、カスタム命令によって、デジタル信号処理、パケット・ヘッダ処理、および演算を多用するアプリケーションなどの用途に対し、ソフトウェアの内側ループを最適化して、複雑な動作シーケンスをハードウェアで実装される 1 つの命令に縮小できます。
カスタム命令を使用すれば、従来の標準プロセッサでは不可能な方法でシステム性能を最適化できます。 開発者は、アルテラの SOPC Builderツールで提供されるグラフィカル・ユーザ・インタフェースを使用して、独自のハードウェア・デザイン・ファイルを簡単にインポートしてカスタム命令を作成することができ、作成されたカスタム命令は Nios II プロセッサに自動的に統合されます。
Nios II プロセッサのカスタム命令は、以下を提供します。
- 最大 256 のユーザ定義命令
- 固定および可変サイクル動作
- ユーザ・ロジックのインポート・ウィザード
- C 言語およびアセンブリ言語ソフトウェア・マクロ
図 1 は、カスタム命令ロジックの柔軟性を示します。
図 1. カスタム命令ロジック

詳細については、Nios II プロセッサ・ハンドブック を参照してください。
