PR

FPGAを機器ユーザーがコンピューティングデバイスとして使う際の課題は、開発環境だ。従来、FPGAの開発環境は主にハードウエア技術者向けに発展してきたが、最近では「OpenCL」など、よりソフト技術者がなじみやすい環境が整備されてきている。

 データセンター向けにFPGAを使う企業は、現在では大半がVerilog-HDLやVHDLといったハードウエア記述言語(HDL)を用い、RTL(register-transfer level)の抽象度で設計している。RTLでは論理回路のクロックサイクルを意識して設計する必要があるため、論理回路設計の専門知識を学ぶ必要がある。各社ともそうした人材をそろえてFPGAの利用に当たっているのが実情だ。

 FPGAに実装する機能が比較的簡易であれば、RTLでの設計でも事足りる。しかし、機械学習などネット企業が持つ複雑な処理を実装しようとする場合、より抽象度が高いC言語やJavaなど、ソフト技術者がなじみやすい環境の方が好都合だ。FPGAメーカーやツールベンダーもソフト技術者がFPGAをコンピューティングデバイスとして利用しやすい開発環境の整備を進めている。

Cコンパイラーのような状況

 ソフト技術者向きの開発環境としては、C言語など抽象度の高い記述でFPGAを設計できる高位合成ツールがある。ASIC向けの設計ツールとして発展し、特に日本国内では機器メーカーの間で普及している。

 主にASIC向けとして発展してきた高位合成ツールをFPGAに適用する際、1つの課題となるのがFPGAのメーカーごとの“クセ”への対応である。「Cコンパイラーでは、x86やARMなどターゲットとなるCPUの命令セットアーキテクチャーごとにさまざまな最適化がなされてきたが、高位合成ツールもFPGA向けでは似たような状況になりつつある」(高位合成ツールのCyberWorkBench(CWB)を手掛けるNECの若林一敏氏)。

 そもそも、スクラッチから回路を設計するASICであれば、さまざまな回路を自由に使える。これに対しFPGAでは、利用できるハードマクロの種類や数、配置などに制約がある上、それらがFPGAメーカーによって異なる。「ASIC向けよりも、ツールとしての難しさは上」(若林氏)という。

 例えば、「RTLの記述もFPGAメーカーごとに異なる特別な規約などがある。各FPGAメーカーのマニュアルを丹念に読み込み、それに応じたRTLを出力できるよう日々改善している」(若林氏)という。NECでは、米Xilinx社向け、米Altera社向けなどFPGAメーカーごとに個別にツールの最適化を施している。「本来は、FPGAメーカーごとではなく、メタ言語など共通の形で最適化できれば理想的だが、そこまではまだ着手できていない」(若林氏)。

複雑な制御回路も生成

 高位合成ツールは一般に「データパスの生成に向いており、複雑なステートマシン(制御回路)の生成には向いていない」と言われることが多い。FPGAをデータセンター向けに先駆的に利用する米Microsoft社も高位合成ツールの活用を視野に入れているが、「ステートマシンの生成が不得手なのが難点」としている。

 こうした見方に対し、NECの若林氏は反論する。高位合成エンジンには、データパスの生成に向いたタイプと、ステートマシンの生成に向いたタイプの2種類があり、海外で主流なのは前者のタイプだ。このため、特に海外では、「高位合成ツールはステートマシンの生成に向かないとの誤解が多い」(若林氏)。NECのCWBの場合、もともとステートマシンの生成のために開発され、その後、データパス生成向けのエンジンを追加した。「ツール内部に2種類のエンジンを搭載しているため、いずれのタイプの回路生成も対応できる」(若林氏)という。