Linux OSからFPGAを透過的に利用する構想。文字列処理をCPUからFPGAへオフロードで10倍速になった研究結果をミラクル・リナックスが発表

2016年12月5日

プロセッサ内部のロジックをソフトウェアで動的に書き換えることができるFPGAは、アプリケーションごとにロジックを最適化できるため、x86などの汎用プロセッサよりも高速かつ効率的なアプリケーションの実行が可能になると注目されています。

特に、今年の1月にインテルがFPGA大手のアルテラを買収し、XeonにFPGAを統合するという将来計画を発表してから、FPGAへの注目度はさらに高まっています。

しかしいまのところ、FPGAをアプリケーションから利用するには、ロジックを開発ツールなどを用いてFPGAに書き込み、それをデバイスドライバを経由してフレームワークなどを通じて利用するというものになります。

これをもっと簡単にしようという構想を明らかにしたのがミラクル・リナックスです。同社はFPGAの恩恵を容易に享受できるOSの提供を目指し、従来と互換性を保ったOSのAPIからシームレスにFPGAが利用できる環境を実現しようとしています。

これによりアプリケーションの書き換えをしなくともFPGAの恩恵を受けることができると考えられますが、API互換のままFPGAの利用でどれだけ処理を効率化できるかが課題です。

fig

同社はそのための研究として、既存の標準ライブラリで行われている文字列処理と同じ処理をFPGAにオフロードすることで、10倍の高速化を実現したという結果を発表しました。具体的には文字列を特定の記号ごとに分割するC言語のStrtok関数に相当する機能をFPGAで実行し、ベンチマークを行いました。

fig

グラフの横軸が入力データ量、縦軸が処理に掛かった時間を示し、赤い線がFPGA、青い線がCPUの処理を示しています。

グラフを見ると、データ量が1KB(103Bytes)まではCPUでの処理時間の方が短くなっていますが、データ量を10KBを超えるところからはFPGAの方が処理時間が短くなり、最大でCPUよりも約10倍速となっていることがわかります。

これはデータ量が小さい場合にはFPGAにデータを転送する際にかかる時間がオーバーヘッドとなっているためCPUの方が処理時間が短い一方、データ量が増えてくることでかかる処理時間に対してオーバーヘッドが無視できるほどの割合になり、FPGAによるカスタムロジックの有効性が顕著になってくるためです。

ただし今回のベンチマークではFPGAがPCIeを通じて接続されているため「FPGAのロジックを32にして並列度を上げても、PCIeの速度によって制限されている面がある。CPUとFPGAがワンチップになればオーバーヘッドがもっと小さくなり、性能がもっと向上するだろう」(ミラクル・リナックス 技術本部 開発部 シニアエキスパート 大和一洋氏)とのことで、将来はさらにオーバーヘッドが小さくなり、性能向上が期待できるとしています。

あわせて読みたい

Linux プログラミング言語 FPGA




タグクラウド

クラウド
AWS / Azure / Google Cloud
クラウドネイティブ / サーバレス
クラウドのシェア / クラウドの障害

コンテナ型仮想化

プログラミング言語
JavaScript / Java / .NET
WebAssembly / Web標準
開発ツール / テスト・品質

アジャイル開発 / スクラム / DevOps

データベース / 機械学習・AI
RDB / NoSQL

ネットワーク / セキュリティ
HTTP / QUIC

OS / Windows / Linux / 仮想化
サーバ / ストレージ / ハードウェア

ITエンジニアの給与・年収 / 働き方

殿堂入り / おもしろ / 編集後記

全てのタグを見る

Blogger in Chief

photo of jniino

Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。
詳しいプロフィール

Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed

最新記事10本