NECのシステムIPコア研究所(中央研究所の一つの部門)は、FPGAと高位合成、さらに新規開発した論理設計技術を組み合せて、さまざまな金融関連データを複合的に分析したり、演算したりする手法を確立した(ニュース・リリース)。今回の手法を応用すると、証券会社などの金融機関のノウハウであるデータの分析・演算のアルゴリズムを、金融機関自身がFPGAに実装して高速に処理することが可能になる。

図1●アルゴリズム(図の中では「複合イベント処理」\)を、高位合成が担当できる部分(右側)と、できない部分(左側)に分ける できない部分向けに、新たな論理設計技術を開発した。NECのデータ。
図1●アルゴリズム(図の中では「複合イベント処理」)を、高位合成が担当できる部分(右側)と、できない部分(左側)に分ける
できない部分向けに、新たな論理設計技術を開発した。NECのデータ。
[画像のクリックで拡大表示]
図2●正規表現とは NECのデータ。
図2●正規表現とは
NECのデータ。
[画像のクリックで拡大表示]
図3●正規表現に相当するマクロを開発 NECのデータ。
図3●正規表現に相当するマクロを開発
NECのデータ。
[画像のクリックで拡大表示]

 金融機関では、株価をはじめとした各種の市況データや市場データなど分析・演算する用途でFPGAボードが使われ始めている。 サーバー本体のマイクロプロセサ(MPU)でソフトウェア処理する場合に比べて、高速な処理が可能になるためだ。ただし、課題が残っている。ほとんどの場合、分析や演算のためのアルゴリズムはC言語プログラムなどのソフトウェアとして実現されており 、それを金融機関自身がFPGAに最適な形で実装するのが難しいことである。

 このため、アルゴリズムを変更する場合には、外部のハードウェア設計会社に依頼する必要があった。これだと、変更に時間がかかる上に、機密保持契約を結ぶとは言え、社外にアルゴリズムを持ちだすことになる。サーバーのMPUでソフトウェア処理する場合のように、金融機関内で変更できる手法が望まれていた。

正規表現を応用

 それに応えるのが、今回のNECの手法である。この手法では、アルゴリズム全体を、演算を行う複数の関数と、関数間の関係で表す(図1)。前者の関数は、C言語のプログラムとして記述し、NECが開発した高位合成ツール(C言語入力のLSI設計用EDAシステム「CyberWorkBench」に含まれる)を使って、ハードウェア設計データであるRTL(register transfer level)コードに変換する。一方、関数間の関係は、正規表現を使って前者の関数とは別に記述する。

 ここで、正規表現とは、複数の文字列を一つの文字列で表すための表記法を言う(図2)。これを使うと、複数の文字列を同時に検索できる。Googleなどのサーチ・エンジンの窓に、*(アスタリスク)が含まれる言葉を入れると、ワイルド・カード検索できるのは 、正規表現の応用例である。例えば、「N*C」と入れれば、「N*C」はもちろん、「NEC」や「NBC」などを含むWEBページが検索結果として並ぶ。正規表現は文字列やデータの検索では一般的な表記法であり、今回、それを関数間の関係を表すのに使うことにした。

 ただし、C言語は関数間の関係を表す正規表現 を直接サポートしていないため、この部分はCyberWorkBenchを使ってハードウェア設計データに変換できない。そこで、NECでは、関数間の関係を表す正規表現 に相当するRTLのマクロを開発し、正規表現をこのマクロに直接置き換えることにした(図3)。マクロは四つ開発した。このうち、三つは正規表現すなわち、「連接」、「選択」、「繰り返し」に対応するマクロである。もう一つは、CyberWorkBenchで生成した関数のRTLデータを収めるマクロ「関数」である。

 4種類のマクロを接続することで、アルゴリズム全体のRTL設計データが得られる。このRTL設計データを、FPGAメーカーやEDAベンダーが提供するFPGA対応の論理合成ツールを経て、FPGAメーカーが提供するレイアウト設計ツール(コンパイル・ツール)に入れれば、FPGAのプログラミング・データが生成できる。こうして、アルゴリズムがFPGAに実装される。