フィールド・プログラマブル・ゲート・アレイ(FPGA)は、汎用的なタイプの集積回路であり、特定用途向け集積回路(ASIC)などの従来のロジック・デバイスとは異なり、さまざまな目的、特に高性能コンピューティング(HPC)やプロトタイピングに合わせてプログラム可能(多くの場合、再プログラム可能)に設計されています。
「フィールド・プログラマブル」という語句は、FPGAが「現場で」、つまりチップがメーカーからリリースされた後にプログラムできる能力を指します。テクノロジーメーカーのXilinx社は、1985年に初めてFPGAを導入しました。
FPGAは、ハードウェアを物理的に変更したり修正したりすることなく、新興目的や実験目的を含む複数のユースケースに合わせて調整できます。この再構成可能な汎用性により、複雑な操作を実行するように構成することも、単純なロジック・ゲートとして機能するように構成することもできる、固定されたプログラマブル・ロジック・ブロック(PLB)と柔軟な相互接続の配列によって実現されます。FPGAには、デバイス内でデジタル・データを保存するための、シングル・ビットのフリップフロップから非常に高密度のメモリー・アレイまで、さまざまなメモリー要素も含まれています。
FPGAは、高いパフォーマンスと極めて高い汎用性を兼ね備えていることから高く評価されています。これらは、高パフォーマンス、低レイテンシー、リアルタイムの柔軟性を必要とするアプリケーションで特に役立ちます。このため、通信産業、自動車産業、航空宇宙産業でよく使用されています。
FPGAとASICでは目的が異なります。
ASICは特定のアプリケーション向けに開発および最適化されており、再構成することはできません。内部の回路素子(トランジスター)は、固定された変更不可能な相互接続(配線)を介して固定構造で配置されています。
ASICは1つの目的のみを果たすため、その目的に必要なロジック要素のみが組み込まれています。例えば、浮動小数点乗算器が必要ない場合は、設計に組み込まれません。
逆に、FPGAはあらゆる潜在的なアプリケーションに合わせて構成および再構成できます。ASICと同様に、内部回路要素は固定構造(プログラマブル・ロジック・ブロック:PLB)に配置されていますが、その間に再構成可能な相互接続が存在します。FPGA内のロジック要素は、さまざまなアプリケーションをサポートするように選択されますが、特定のロジック要素が使用されない場合は、「使用しないと失われる」という問題が生じます。特定のアプリケーションに浮動小数点乗算器が必要ないのに、FPGAに浮動小数点乗算器が含まれている場合、そのリソースは接続されず、FPGA内の「無駄なスペース」を表します。
どちらのデバイスにも数億個のトランジスターが含まれますが、ASICではそれらのトランジスターを使用して、柔軟性を犠牲にして高い効率とパフォーマンスを実現できます。ASICを開発するための初期NRE料金は法外な額になる可能性がありますが、単価は比較的低くなる可能性があります。
FPGAはトランジスターを使用して、高い効率と高いパフォーマンスを実現すると同時に、非常に優れた柔軟性も実現します。FPGAを開発するための初期NRE料金は非常に低くなる可能性がありますが、単価は一般的に高くなります。これらは厳格なルールではないことに注意することが重要です。例えば、パフォーマンスの分野では、最近のFPGAは500 MHzを超えるクロック・レートを実現するように進化しており、一般的に最先端のシリコン・プロセス・ジオメトリーで製造されています。つまり、FPGAとASICの境界は、FPGAの世代が新しくなるごとにますます曖昧になっています。
FPGAは、VerilogやVHDLなどの標準ハードウェア記述言語(HDL)を使用してPLBと相互接続を構成することで、カスタマイズされたハードウェア・デバイスです。
特定のFPGAベースの機能、およびそれらの機能間の相互接続は、HDLで「記述」されます。その後、記述されたものはコンパイルされ、FPGA構成ファイルが生成されます。ハードウェア記述言語を使用すると、組み込みのFPGAリソース(メモリー・アレイ、PCIコアなど)を使用したり、より基本的なFPGA要素からカスタマイズされたロジック回路(加算器、マルチプレクサー、その他のアプリケーション固有の機能)を作成したりすることもできます。
合成と呼ばれるプロセスでは、HDLコードはネットリストに変換されます。ネットリストは、HDL コードを実装するために必要な論理ゲートと相互接続の効果的な記述です。次に、ネットリストはPLBにマッピングされ、固有の回路を物理的に形成する相互接続が行われます。
Intel社やAltera社などのメーカーが製造する最新のFPGAは、優れたロジック密度、フラッシュ・メモリー、組み込みプロセッサー、デジタル信号処理(DSP)ブロックなど、幅広いデジタルおよびアナログ機能を提供します。FPGAは、電気入力と出力を変更し、使用する内部リソースを選択し、構成可能なルーティング・リソースを通じてこれらのリソースがどのように接続されるかを決定することによって構成および再構成することができ、最終的には特定の問題を解決するための専用のハードウェア・ソリューションが実現します。
ソフトウェアと同様に、複雑なFPGA設計の開発は、知的財産(IP)コアと呼ばれるさまざまな機能とデジタル回路の事前に設計されたライブラリーを使用することで効率化される可能性があります。これらのライブラリーは、さまざまな機能の開発を専門とするFPGAベンダーやサード・パーティー・サプライヤーから購入またはリースできます。
マイクロコントローラーやコンバーターなどの従来の回路コンポーネントに加えて、最新のFPGAデバイスではさまざまなプログラム可能な要素を組み合わせて、再構成可能な機能を実現します。
これらのプログラム可能な要素は、主に、プログラマブル・ロジック・ブロック(CLB)、プログラマブル・インターコネクト、プログラマブル・ルーティング、プログラマブル入出力ブロック(IOB)、オンチップ・メモリー、およびデジタル信号処理ブロック(DSP)です。
プログラマブル・ロジック・ブロック(CLB)は、FPGAの主要コンポーネントです。CLBには通常、いくつかの基本的なロジック要素(ロジック・ゲート、小さなルックアップ・テーブル、フリップフロップ、マルチプレクサーなど)が含まれています。CLB内では通常、フリップフロップが主なデータ・ストレージ要素として機能しますが、新しいデバイス・ファミリーでは、CLB内に浅いメモリー要素も組み込まれる場合があります。
電気的にプログラム可能なスイッチによって結合されたワイヤー・セグメントから構築されたリンクは、FPGAのロジック・ブロック間のルーティング・パスを提供します。複数の基本的な半導体スイッチを含むスイッチ・ボックスは、FPGAのプログラマブル・インターコネクトを確立するためによく使用されます。これらのインターコネクト(相互接続)により、特定の装置または入力パッドの出力を回路内の他のセルまたはパッドにリンクできます。
プログラマブル・インターコネクトによってプレハブ・ワイヤー・セグメントが結合され(または未接続のまま)、FPGA内で完全にプログラマブル・ルーティング・インフラストラクチャーが実現されます。配線リソースは本質的に階層化されており、FPGA内でさまざまな「長さ」のワイヤー(長いワイヤー、短いワイヤー、その間の長さのワイヤー)の組み合わせがあります。プログラマブル・インターコネクトによって実現されるこのプログラマブル・ルーティング・インフラストラクチャーにより、ユーザーは特定のタスクまたはアプリケーションの実装用にFPGAリソースを構成できます。
FPGAと他の外部デバイス間のインターフェースは、入力/出力(I/O)ブロック(IOB)によって実現されます。IOBは、FPGAが接続する外部デバイスのプロトコルと一致するように構成されたプログラム可能な入力および出力リソースです。FPGAに出入りするすべての信号は、デバイス・ピンと関連するJOBを介して行われます。
初期のFPGAでは、メモリーをFPGAロジック・ブロックに統合するためにフリップフロップ(FF)のみを使用していました。しかし、FPGA の機能が向上するにつれて、ますます複雑な設計では、データのバッファリングと再利用のために専用のオンチップ・メモリーが必要になりました。最新のFPGAは、大規模なSRAMメモリー・アレイ、小型のルックアップ・テーブル(LUT)、従来のフリップフロップ要素を使用して、特定のアプリケーションに必要なストレージを提供します。
初期のFPGAでは、利用できる唯一の演算リソースは単純な加算器であり、より複雑なものはより基本的な論理要素から構成されていました。しかし、シリコン・テクノロジーが進歩するにつれて、より複雑な演算リソースがFPGAに組み込まれ、最終的に、現代のFPGA DSPブロックが誕生しました。DSPブロックは、高性能な演算機能を実装するために高度に最適化されたリソース(乗算器、累算器など)を提供します。
これらを使用すると、汎用CLBにこれらの機能を組み入れる必要がなくなり、CLBを他の目的に使用できるようになります。デジタル・フィルタリング、畳み込み、フーリエ変換、三角関数演算などの操作では、これらのリソースを活用して、レーダー処理、ビームフォーミング、パターン認識などのさまざまなアプリケーションでリアルタイムのパフォーマンスを実現できます。
FPGAにはさまざまな種類があり、さまざまなタイプの構成可能性、消費電力、プログラム可能な要素、オンチップ・メモリーを提供します。
FPGAは本質的に汎用性が高く、さまざまな用途に適しています。
FPGAは、高速並列処理能力を備えているため、信号処理やデータ取得に適しています。
高速信号処理アルゴリズムにより、FPGAはドローンなどの無人航空機で使用される飛行管理、センサー処理、通信タスクの実行に最適です。
電力網、石油精製所、水処理場などのインフラストラクチャーを監視するために使用される産業用管理システムでは、さまざまな業界の固有のニーズに合わせて簡単に最適化できるFPGAが使用されています。これらの重要な業界では、FPGAを使用した各種オートメーション機能やハードウェアベースの暗号化機能を実装し、効率的なサイバーセキュリティーを実現できます。
FPGAは柔軟性が求められるタスクには便利なソリューションですが、タスク固有のASICは標準化された操作に適している場合が多くあります。新しいシステムが開発されるにつれて、FPGAは新興技術向けの新しいASICの開発とプロトタイプ作成に役立ちます。
FPGAは、高帯域幅、低遅延のサーバー、ネットワーク、ストレージ・インフラストラクチャーを実現することで、データセンターに付加価値をもたらします。
IBM® Storage FlashSystemは、サイバー・レジリエンスと強化されたデータ・ストレージ機能を提供します。
IBM Storageは、データ・ストレージ・ハードウェア、 ソフトウェア定義ストレージおよびストレージ管理ソフトウェアの製品群です。
IBM Technology Expert Labsは、IBMサーバー、メインフレーム、ストレージ向けのインフラストラクチャー・サービスを提供します。