FPGAの応用領域が拡大,ビッグ・データや金融取引,Webデータ処理のインフラ技術に
FPGA(Field Programmable Gate Array)は,ユーザが所望の処理をハードウェア・ロジックとして構築できる,プログラム可能なハードウェア・デバイス(LSIチップ)です.大規模LSIの機能検証や高速伝送装置のデータ転送処理,画像処理機器のフロントエンド処理など,特定の演算処理を高速化するハードウェア・コンポーネントとして活用されています.
しかし近年,半導体プロセスの微細化に伴って,一つのFPGAチップ上に実装可能な回路規模が増大し(図1),また最高動作周波数も上昇しています.そのため,従来はOS上で動作するソフトウェア・プログラムとして記述されてきたアプリケーション処理を,まるごとFPGA上に実装することが可能となってきました.
FPGAはプログラム可能なハードウェア・デバイスなので,アプリケーションのI/O特性に適した回路構成を採ることができます(図2).例えば,ネットワーク・インターフェースやメモリ・インターフェース,ストレージ・インターフェースの処理について,それぞれのアプリケーションの動作に最適化した回路を用意することで,効率的にアプリケーションを実行する環境を構築できます.
●IT系処理の中核ハードウェアとして採用が進む
以下では,FPGAをアプリケーション処理,特に最近急増しているIT(Information Technology)系処理の高速化に活用した事例を紹介します.
1) ビッグ・データの分析を効率的に処理
米国IBM社のNetezza(1)は,データウェア・ハウス・アプライアンス(データ収集・解析処理専用サーバ)にFPGAが活用されている事例の一つです.データウェア・ハウスでは,膨大な顧客データをほぼリアルタイムに収集し,データベースに格納します.そして,保存したデータを顧客分析や収益分析,不正検出,リスク分析に利用し,企業経営に役立てています.
ただし,ディスクに保存された膨大なデータをプロセッサとソフトウェアだけで処理するのは容易ではありません.通常,プロセッサでデータを処理する場合,いったんメモリ上にデータを展開する必要があります.すなわち,データ処理の速度は,ディスクとメモリのデータ転送速度,およびメモリとプロセッサのデータ転送速度の制限を受けます.
Netezzaは,FPGAによりディスクから高速にデータを読み出し,適切な前処理を行うことで,メイン・プロセッサの負荷を軽減し,ディスクとメモリの間のデータ転送速度を引き上げます.FPGAは,ディスクから読み出したデータをいったんFPGA内の高速メモリ領域やブロックRAMに格納します.そして,データの読み出しとほぼ同じ速度で,データの分析処理を実行します.
2) 処理に合わせたデータ・フロー・マシンを構成
米国Maxeler Technologies社(2)は,アプリケーションに特化したデータ・フロー・マシン(データ処理機能)をFPGA上に実装することで,プロセッサとソフトウェアを使った従来のシステムと比べて1けた高い処理性能を実現するアプライアンスを提供しています.適用分野は,油田探索や金融分析,HFT(High-frequency Trading;高頻度取引),科学技術計算と多岐に渡ります.
Maxeler社のプラットフォームの特徴は,大量のメモリがFPGAに接続されていることにあります.FPGAは豊富なI/Oを使ってメモリ転送帯域を稼ぐことができます.広範囲のデータに対して繰り返し演算を行うようなシステムについて,プロセッサを使った従来型のシステムより効率的に処理を実行できます.また,従来より低遅延,かつ一定値以下の遅延で処理できるので,1ms(ミリ秒),1μs(マイクロ秒)を争う金融系の処理において非常に強みがあります.
Maxeler社は,データ・フロー・マシンの開発に「MaxCompiler」と呼ぶ独自の環境を利用しています.本環境では,Javaで記述されたデータ・フローからハードウェア・ロジックを生成しているそうです.
3) 50万コネクションを同時に処理できるWebサーバを実現
実は筆者ら(イーツリーズ・ジャパン(3))もFPGAを利用してIT系アプライアンスを開発しています.TCP/IPやHTTPのプロトコル処理,およびファイル・システム処理をFPGA上のハードウェア・ロジックとして実装し,Web配信サーバ「freeocean」を実現しました.
本Web配信サーバは,Ethernet PHYの入出力処理をFPGAで実現しています.これにより,HTTPリクエストのパケット転送を遅延なく高速に処理し,かつ多数のコネクションを同時にさばいています.また,すべてハードウェアで実現しているので,OSにセキュリティ・パッチを当てるなどの作業が不要となり,保守に要するコストを低減できます.
複雑なWebアプリケーションの処理には不向きなのですが,突発的に発生するトラフィックの増大に速やかに対応できます.例えばWebキャッシュ・サーバとして,アンチウイルス・ソフトウェアのパターン・ファイル(ウイルス定義ファイル)の配布やプロ野球のスコア情報の配信,映画サイトのプロモーション情報の配信などに採用されています.
図3に,Web配信サーバの開発という観点から見たFPGAに対する回路規模の要求についてまとめました.