米IBM社研究所は、異なるアーキテクチャのリソースが混在したコンピューティング・システムのプログラミングを一括して行える設計環境に関して、「Asia and South Pacific Design Automation Conference(ASP-DAC) 2013」(2013年1月22日~25日にパシフィコ横浜で開催)で招待講演した。講演タイトルは「The Liquid Metal IP Bridge」(講演番号:4A-3)である。

図1●現在はアーキテクチャごとに異なる言語が必要 右端はRabbah氏。Tech\-On!が撮影。スクリーンはIBMのスライド。
図1●現在はアーキテクチャごとに異なる言語が必要
右端はRabbah氏。Tech-On!が撮影。スクリーンはIBMのスライド。
[画像のクリックで拡大表示]

 講演タイトルにある「Liquid Metal」は、異なるアーキテクチャのリソースが混在したコンピューティング・システムのプログラミングを一括して行える設計環境を開発するプロジェクトの名称である(プロジェクトのホームページ)。このプロジェクトは2007年に始まった。今回、登壇したのはRodric Rabbah氏で、同氏はThomas J. Watson Research Center所属だが、複数の拠点にいるIBMの研究者で同プロジェクトは進められている。Rabbah氏によれば、特定の処理を高速実行するためのFPGAボードを備えたサーバーが、Liquid Metalプロジェクトのターゲットの1つだという。

 金融や石油探索など、汎用のMPUだけでは処理能力が不足するアプリケーションは少なくない。FPGAを搭載したPCI ExpressボードやGPUを使って特定の処理を高速実行し、低コストで全体のスループットを上げる試みが、さまざまな企業や機関で行われている。Liquid Metalも、そうした試みの一つである。

図2●「Lime」と呼ぶ1つの言語で設計可能に 右端はRabbah氏。Tech\-On!が撮影。スクリーンはIBMのスライド。
図2●「Lime」と呼ぶ1つの言語で設計可能に
右端はRabbah氏。Tech-On!が撮影。スクリーンはIBMのスライド。
[画像のクリックで拡大表示]

 Liquid Metalでは、「Lime」と呼ぶJavaを拡張した言語を使う。「これまで、MPUにはC言語、GPUにはCUDA、FPGAにはHDLなど、アーキテクチャごとに異なる言語を使っていたが(図1、Liquid MetalではLime一つで済む(図2)」(Rabbah氏)。Limeの肝は、複数種類のリソースに処理をスイッチしやすい記述をすることだ。具体的には、途中で他のリソースと通信しないような単位の処理(task)を作り、その連続で処理全体を構成する。通信は基本的にtaskの開始時と終了時に行う。

図3●EclipseベースのIDEを用意 IBMのスライド。
図3●EclipseベースのIDEを用意
右端はRabbah氏。Tech-On!が撮影。スクリーンはIBMのスライド。
[画像のクリックで拡大表示]

 すでにIBMは、Limeを使ったIDE(integrated development environment)をEclipseベースで開発している(図3)。現段階では、taskのリソースの割り付け(例えば、FPGAで実行する処理を決めること)は、人手で行う。機能の割り付け先がMPUやGPUなどソフトウエア処理になる場合、Limeの処理系自体の出力はJavaバイト・コード、FPGAの場合はRTLのVerilog-HDLである。

 後者に向けて、LimeのIDEには、動作合成と論理合成の機能が備わっている。RTLのVerilog-HDLをFPGAメーカーの開発環境に渡せば、FPGAのプログラミング・データ(ビットストリーム)が得られる。ただし、全体の処理には、MPUやGPUに実装したtaskとFPGA上のtaskとの通信(処理前および処理後のデータの引き渡し)を司るものが必要で、これが講演タイトル後半の「IP Bridge」である。