なぜ今、FPGAなのか? そのメリットを探る
(出典:mehaniq41 - stock.adobe.com)
プログラマブルロジックとは、ユーザー自身が自由にプログラムすることができるICのことですが、1980年代半ばに登場して以来、さまざまなアプリケーションで幅広く採用されてきました。最新のプログラマブルロジックICは、PLD(Programmable Logic Device)やCPLD(Complex Programmable Logic Device)からFPGA(Field Programmable Gate Array)へと進化しています。
PLDやCPLDには、限られた数の論理リソースしかないのに対して、FPGAは、数百万もの構成可能論理ブロック(CLB)から構成されているため、開発者は順序回路と組合せ回路を実装することができます。また、最新のFPGAデバイスには、DSPエレメント、ブロックRAM、ギガビットトランシーバ、PCIeエンドポイント、さらには組み込みArm®やRISC-Vプロセッサといった先進機能も提供されています。
もちろん、FPGAは、プログラマブルロジックの並列性が高いため、従来のプロセッサとは異なるデザイン入力、実装、検証のアプローチが必要になります。
FPGAは、並列実行することにより、以下の特性を1つでも必要とするアプリケーションに最適です。
- 応答性: 専用リソースを使用して実行するため、システムリソースを共有する必要がありません。
- 決定論的: 専用リソースを使用して処理パイプラインを実行するため、入力から出力までの処理時間が決定論的に決まります。
- 高スループット: プログラマブルロジックが並列構造であるため、真の並列処理構造のディスクリートエレメントを使用して、処理パイプラインを実行することができます。
- FPGA内のIO柔軟性: FPGA内のIO柔軟性により、 適切なPHYが有効であれば、あらゆる接続が可能になります。また、この柔軟性のおかげで、従来のプロセッサソリューションで提供される標準的なIO数の制約を受けません。
FPGAは、以上のような特性により、自動車、航空宇宙、モーター制御、画像・信号処理、ネットワーキング、処理制御など、さまざまなアプリケーションに最適なものになっています。ここで、いくつかのアプリケーションを取り上げ、FPGAがそのアプリケーションになぜ最適であるのかについて説明したいと思います。
画層処理は、スマートシティー、セキュリティ、そしてインダストリー4.0の生産ライン検査など、多くのアプリケーションの核となる機能です。現在、これらのアプリケーションの画像処理では、複数の複雑な画像処理アルゴリズムをピクセル単位で実行することが求められます。フレームレートと解像度が上がれば、それだけ大きな計算能力が必要になります。FPGAを実装すると、多くの場合、既存のベンダーIPブロックを使って、処理パイプラインの各ステージを論理ゲートで実行することができます。この処理チェーンは、MIPIおよびHDMI受信から、ディベイヤー処理、アルファチャンネル補正、さらにはエンハンス、エッジ検出、セグメンテーション、MLネットワークなどの高度な処理アルゴリズムに至るまで、さまざまな処理が行えます。プログラマブルロジックでパイプラインを実行することで、従来の処理方法よりも高いフレームレートを達成できます。このような画像処理は、SAE自動運転レベルを向上させるために、車載アプリケーションでよく採用されています。
FPGAのもう1つのユースケースは、安全性が重視される高信頼性アプリケーションです。これは、FPGAに高い応答性と決定論的な特性があるためです。安全性が重視される、セーフティクリティカルなシステムの多くは、「ハードリアルタイム要件」を満たす必要があり、つまり、一定の時間内にデータを収集し、結果を判断し、行動を実行しなければなりません。決められた時間内に処理と判断を実行できない場合、システム障害につながります。処理ソリューションをロジックに実装することで、アルゴリズムの各ステージを並列実行することが可能になります。この並列実行により、計算パスがリソースを共有していないため、必要な応答時間を達成することができます。また、リソースが共有されていないため、実装されたソリューションも入力に対して決定論的な応答をします。さらには、この決定論的な応答によって、RTL設計内のすべてのステート、ブランチ、パス、レジスタトグルなどを網羅するRTシミュレーションを作成できるため、より堅牢な検証戦略が可能になります。応答性と決定論という特性のおかげで、FPGAは、セーフティクリティカルなアプリケーションに理想的であり、航空宇宙、自動車、鉄道、プロセス制御のような、DO254、ISO26262、IEC61508認証を要するアプリケーションにおいて広く採用されています。
最後にFPGAのユースケースとして、インターフェイス機能の柔軟性を活用することが挙げられます。FPGAは、幅広いシングルエンドIO規格と差動IO規格をサポートしているため、必要に応じて外部PHYを組み合わることで、あらゆる種類のインターフェイスに対応するソリューションを作成することができます。これにより、開発者は同じチップに同じインターフェイスを大量に実装したり、複数のMIPIインターフェイスを実装して、複数の画像処理ストリームを回復することも可能になります。また、例えば、ギガビットイーサネット(GbE)からSpaceWireへのプロトコル変換をFPGAで実行することもできます。もちろん、IO柔軟性を活かして、FPGAの機能を活用することもできます。その一例として、ビデオトランスコーディング中に、ある規格を受信し、FPGAロジック内で変換後、別の規格を送信するケースが挙げられます。ここでもFPGAの高スループット能力により、ソリューション全体の実行が可能になります。
まとめ
要約すると、FPGAは、応答性、決定論的、スループット、インターフェイスなどのうち、いずれかの特性が求められるシステムに最適であると言えます。これにあてはまるアプリケーションであれば、FPGAの並列性を利用して、要件を満たすソリューションを実装できます。そのため、FPGAは航空宇宙、自動車、産業、ビデオトランスコーディング、プロセス制御、高性能システムなどのさまざまなアプリケーションで導入されています。FPGA技術の進化、特に開発ツールの進化に伴い、今後もさらに多くのアプリケーションでFPGAが広く採用されるようになるでしょう。