エンタープライズ・IoT領域でのFPGA活用に関する研究開発成果(2/3)
ミラクル・リナックスは、FPGAを用いて文字列分割処理を高速処理する仕組みを開発。従来の手法に比較して10倍の高速化を実現しました。この研究ドキュメントを公開しています。
FPGAを活用した文字列分割処理の高速化に関する研究開発成果
ミラクル・リナックスは、エンタープライズやIoT領域でのFPGA活用について研究開発を行い、その成果を公開しています。文字列分割における高速処理の仕組みを開発し、CPU利用時に比べ最大10倍の高速化を実現しました。
ミラクル・リナックスは、エンタープライズやIoT領域でのFPGA活用について研究開発を行い、その成果を公開しています。文字列分割における高速処理の仕組みを開発し、CPU利用時に比べ最大10倍の高速化を実現しました。
解説
テキスト処理の高速化への手法
テキスト処理の高速化を実施するために、あとで紹介する文字列の単語へ分解を行う分割器と、自社製のソフトウェアとFPGAのためのグルー・ロジック (複数の集積回路を相互に接続するときに外付けする論理回路)で構成するVolvoxフレームワークを開発しました。
この2つの機能を利用することで、CPUだけを利用した文字列処理に比較して、FPGAを利用した文字列処理が高速であり、かつ、OSの標準機能からFPGAを透過的に使用できることを確認することにしました。
アーキテクチャーについて
ホストマシンとFPGAボードをPCI Express (PCIe)で接続します。
前述のように基本的な機能のひとつである文字列の単語へ分解を行う分割器のプロトタイプを開発しました。これを、ミラクル・リナックスでは、文字列分割器(Tokenizer)と呼んでいます。
文字列の区切り文字へ分解は、Cライブラリ(glibc) では関数strtok()で実施されます。今回、strtok()に相当する機能として strtok_v() を開発しています。
Tokenizerカーネルは、各行ごとに、入力される文字列のすべての単語に対して、開始と終端位置の組を算出します( 注: FPGA内に構成される処理機構をカーネルと呼びます。Linuxカーネルとは異なるので混同に注意してください)。
2つの行 ‘␣␣MIRACLE␣␣␣LINUX’ と ‘Corporate␣color␣is␣green.’ (␣はスペースを 表す)の分割を例示すると以下の図のようになります。
Volvox フレームワークとは
Volvoxフレームワークは、自社製のソフトウェアとFPGAのためのグルー・ロジックで構成しています。
Volvoxフレームワークでのデータの流れ
Volvox の特徴
- 分割器のカーネルが、上図に示すようにアプリケーション・プログラムのメモリ空間にマップされているバッファに対して直接読み書きする
- Linuxカーネルとアプリケーションプログラム間のデータのコピーがない
これらの特徴により、高い性能が実現されています。