| デザイン: | インパルス加速技術 |
|---|---|
| 開発者 | インパルス加速技術 |
| 初登場 | 2003 |
| 安定リリース | 3.60.a.8 / 2009-09-30 |
| OS | FPGAおよび関連組み込みプロセッサ |
| ライセンス | Impulse Accelerated Technologies が販売および配布する FPGA コンパイラ |
| Webサイト | www.ImpulseC.com [リンク切れ ] |
| 影響を受けた | |
| C プログラミング言語、Streams-C | |
Impulse C は、並列プログラミング、特にFPGAデバイスをターゲットとするアプリケーションのプログラミングをサポートするC 互換の関数ライブラリと組み合わせたC プログラミング言語のサブセットです。ワシントン州カークランドの Impulse Accelerated Technologies によって開発されました。
概要
高レベル合成ツール CoDeveloper には、FPGA ベースのアプリケーションの開発を目的とした Impulse Cコンパイラと関連関数ライブラリが含まれています。Impulse C は標準ANSI Cと互換性があり、FPGA をターゲットとするアプリケーションの設計とデバッグに標準 C ツールを使用できます。Impulse C コンパイラは C のサブセットを受け入れ、ハードウェア記述言語 (HDL)ファイルの形式で FPGA ハードウェアを生成します。Impulse C を使用すると、組み込みシステムの設計者やソフトウェア プログラマは、C 言語アプリケーションを高速化するために FPGA デバイスをターゲットにすることができます。
Impulse C は、混合プロセッサと FPGA プラットフォーム用の並列プログラミング モデルを提供するという点で、標準 C とは異なります。この目的のために、Impulse C には関数とデータ型の形で C の拡張機能が含まれており、標準 C で記述されたアプリケーションを、標準プロセッサとプログラム可能な FPGA ハードウェアを含む可能性のある粗粒度の並列アーキテクチャにマッピングできます。
Impulse C ツールには、ハードウェア/ソフトウェア共同シミュレーション ツールのほか、FPGAロジック合成ツールを介してアプリケーション要素をハードウェアにマッピングするために使用される C からRTLへのスケジューリング/最適化テクノロジが含まれています。
プログラミングモデル
Impulse C は、デバッガーやプロファイラーなどの標準 C ツールとの互換性を保ちながら、通信シーケンシャル プロセス(CSP) プログラミング モデルのバリアントをサポートします。Impulse C は、データフロー指向のストリーミング アプリケーション向けに設計されていますが、通信メカニズムとして共有メモリを使用するなどの代替プログラミング モデルもサポートするように設計されています。
Impulse C ストリーミング アプリケーションでは、ハードウェア プロセスとソフトウェア プロセスは、主にハードウェアに直接実装されたバッファリングされたデータ ストリームを介して通信します。コンパイラによって生成されたデュアル クロックFIFO を使用して実装されるこのデータバッファリングにより、通常は必要となるサイクルごとの同期を行わずに、比較的高い抽象レベルで並列アプリケーションを記述できるようになります。
Impulse C を使用すると、アプリケーションを分割して、ハードウェア コンポーネントとソフトウェア コンポーネントに分割されたマルチプロセス実装を作成したり、FPGA デバイス内に完全に実装したりできます。たとえば、画像フィルタリング アプリケーションは、Impulse C を使用して、それぞれが 1 つ以上の C サブルーチンを使用して記述された並列パイプライン プロセスのコレクションとして記述できます。
アプリケーションのソフトウェア側、たとえば組み込み FPGA プロセッサでは、Impulse C ライブラリ関数を使用して、データ ストリームを開いたり閉じたり、ストリーム上でデータを読み書きしたり、必要に応じてステータス メッセージを送信したり結果をポーリングしたりします。プロセッサと FPGA 間の通信では、ストリームの読み取りと書き込みは、FPGA 固有の内部または外部バス インターフェイスを利用する操作として指定できます。
アプリケーションのハードウェア側では、Impulse C ライブラリ関数とその他の C ステートメントがコンパイルされ、合成可能な HDL ファイルの形式で同等の並列ハードウェア実装が生成されます。これらのファイルは FPGA ツールによって処理され、FPGA ハードウェア ビットマップが作成されます。
Impulse C ストリーミング プログラミング モデルの中心となるのは、プロセスとストリームです。プロセスは独立して同期され、アプリケーションのセグメントを同時に実行します。ハードウェア プロセスは標準 C のサブセットを使用して記述され、データの受信、計算の実行、出力の生成によってアプリケーションの作業を実行します。一般的なアプリケーションでは、データはバッファ ストリームによってプロセスからプロセスへと流れますが、場合によってはメッセージや共有メモリによっても流れます。生成された FIFO の幅や深さなど、各ストリームの特性は、C アプリケーションで指定できます。
アプリケーション
Impulse C は、組み込みシステムでの画像処理やデジタル信号処理などのアプリケーションのほか、金融分析、バイオインフォマティクス、科学計算などの高性能コンピューティング アプリケーションの高速化にも使用されます。
対象プラットフォーム
Impulse C は、 Altera Nios IIやXilinxのMicroBlazeおよびPowerPCなどのソフト コアおよびハードコア プロセッサを含む、Xilinx および Altera の FPGA をサポートしています。
参考文献
外部リンク
- スタートアップライセンス Streams-C
- インパルス加速技術
