(57)【要約】【課題】再利用し易くしつつ特定用途向け回路を用いたデータ処理を高速化すること。【解決手段】所望の回路コンフィギュレーションデータに基づいて再構成可能回路を特定のデータ処理に特化した特定用途向け回路として機能させるアクセラレータサーバと、アクセラレータサーバに対して問い合わせを発行するアプリケーションが実行されるクライアントと、データが格納されたデータベースを管理する複数の異なるデータベース管理システムが実行されるデータベースサーバとを備えるアクセラレーションシステムにおけるアクセラレーション方法において、アクセラレータサーバが、特定用途向け回路に入力すべきデータのデータ量を調整した上で特定用途向け回路に調整後のデータ量ごとにデータを入力して特定のデータ処理を実行する。【選択図】図１
2018055648.tif 000002
【特許請求の範囲】
【請求項１】
所望の回路コンフィギュレーションデータに基づいて再構成可能回路を特定のデータ処理に特化した特定用途向け回路として機能させるアクセラレータサーバと、
前記アクセラレータサーバに対して問い合わせを発行するアプリケーションが実行されるクライアントと、
データが格納されたデータベースを管理するデータベース管理システムが実行されるデータベースサーバとを備え、
前記アクセラレータサーバは、
前記特定用途向け回路に入力すべきデータのデータ量を調整した上で前記特定用途向け回路に前記調整後のデータ量ごとに前記データを入力して前記特定のデータ処理を実行する
ことを特徴とするアクセラレーションシステム。
【請求項２】
前記アクセラレータサーバは、
前記特定用途向け回路を利用するためのプログラムであるアクセラレータプラットフォームが記録されているともに前記データベースのデータが記録されるメモリと、
前記アクセラレータプラットフォームを実行するプロセッサと、を備え、
前記アクセラレータプラットフォームは、
前記アプリケーションからの問い合わせに応じた一連の処理を前記データベース管理システムの実行計画上の最小単位処理に分割するアプリケーション処理分割部と、
前記最小単位処理を前記特定用途向け回路を用いて所定の速度以上で処理可能であるか判断する処理方法判断部と、
前記処理方法判断部が前記特定用途向け回路を用いて前記所定の速度以上で処理可能であると判断した場合に前記最小単位処理に対応する回路モジュールをダウンロードして前記特定用途向け回路にコンフィギュレーションを実施する回路ダウンロード部と、
前記データベースサーバから前記データを取得するデータ取得部と、
前記データを前記特定用途向け回路での処理に適したデータ形式に変換する回路適合データ変換部と、
前記特定用途向け回路のハードウェア情報を考慮しつつ前記データを分割するデータ分割部と、
前記分割したデータを前記特定用途向け回路に送信することにより処理実行依頼を行うデータ送信部と、
前記特定用途向け回路による処理結果を受信する結果受信部と、
を備えることを特徴とする請求項１に記載のアクセラレーションシステム。
【請求項３】
前記処理方法判断部は、
前記特定用途向け回路にコンフィギュレーションを実施可能な回路モジュールの情報を管理する回路情報テーブルと、前記データベース管理システムに実装されている前記データのデータ型に関連した情報を管理するデータベースデータ構造テーブルと、を利用して前記最小単位処理のデータが前記特定用途向け回路を用いて前記所定の速度以上で処理可能であるか判断し、
前記データ取得部は、
前記処理方法判断部によって前記特定用途向け回路を用いて処理可能であると判断された前記最小単位処理にて処理されるデータを前記データベースから取得し、
前記回路適合データ変換部は、
前記回路情報テーブルと、前記データベースに組み込まれているデータ型の情報を記録するＤＢデータ構造管理テーブルと、前記データベースに登録されている前記データが記録されているテーブルのスキーマを記録するＤＢスキーマ管理テーブルと、を利用し、前記データを前記特定用途向け回路に入力可能な形式に変換し、
前記データ分割部は、
前記特定用途向け回路のＳＲＡＭの容量、ＤＲＡＭの容量及びバイトオーダを記録したハードウェア情報テーブルと、前記特定用途向け回路に入力する前記データと前記特定用途向け回路での処理後に前記特定用途向け回路のＳＲＡＭ内に保管される中間結果データとの関係を記録した入力データ中間結果データ管理テーブルとを利用して前記特定用途向け回路に入力する前記データのエントリ数を計算し、
前記データ送信部は、
前記データ分割部が計算した結果を用いて前記特定用途向け回路に前記データを入力して前記特定用途向け回路を起動し、
前記結果受信部は、
前記特定用途向け回路による処理結果のデータを受信し前記アプリケーションに適した前記データ形式に変換して前記アプリケーションに前記データ形式で前記データを送信することを特徴とする請求項２に記載のアクセラレーションシステム。
【請求項４】
前記特定用途向け回路は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）であることを特徴とする請求項１に記載のアクセラレーションシステム。
【請求項５】
所望の回路コンフィギュレーションデータに基づいて再構成可能回路を特定のデータ処理に特化した特定用途向け回路として機能させるアクセラレータサーバと、
前記アクセラレータサーバに対して問い合わせを発行するアプリケーションが実行されるクライアントと、
データが格納されたデータベースを管理するデータベース管理システムが実行されるデータベースサーバとを備えるアクセラレーションシステムにおけるアクセラレーション方法において、
前記アクセラレータサーバが、
前記特定用途向け回路に入力すべきデータのデータ量を調整した上で前記特定用途向け回路に前記調整後のデータ量ごとに前記データを入力して前記特定のデータ処理を実行する
ことを特徴とするアクセラレーション方法。
【請求項６】
前記アクセラレータサーバは、
前記特定用途向け回路を利用するためのプログラムであるアクセラレータプラットフォームが記録されているともに前記データベースのデータが記録されるメモリと、
前記アクセラレータプラットフォームを実行するプロセッサと、を備え、
前記アクセラレータプラットフォームは、
前記アプリケーションからの問い合わせに応じた一連の処理を前記データベース管理システムの実行計画上の最小単位処理に分割し、
前記最小単位処理を前記特定用途向け回路を用いて所定の速度以上で処理可能であるか判断し、その結果、前記特定用途向け回路を用いて前記所定の速度以上で処理可能であると判断した場合に前記最小単位処理に対応する回路モジュールをダウンロードして前記特定用途向け回路にコンフィギュレーションを実施し、
前記データベースサーバから前記データを取得し、前記データを前記特定用途向け回路での処理に適したデータ形式に変換し、
前記特定用途向け回路のハードウェア情報を考慮しつつ前記データを分割し、
前記分割したデータを前記特定用途向け回路に送信することにより処理実行依頼を行い、
前記特定用途向け回路による処理結果を受信することを特徴とする請求項５に記載のアクセラレーション方法。
【請求項７】
前記アクセラレータプラットフォームは、
前記特定用途向け回路にコンフィギュレーションを実施可能な回路モジュールの情報を管理する回路情報テーブルと、前記データベース管理システムに実装されている前記データのデータ型に関連した情報を管理するデータベースデータ構造テーブルと、を利用して前記最小単位処理のデータが前記特定用途向け回路を用いて前記所定の速度以上で処理可能であるか判断し、
前記特定用途向け回路を用いて処理可能であると判断された前記最小単位処理にて処理されるデータを前記データベースから取得し、
前記回路情報テーブルと、前記データベースに組み込まれているデータ型の情報を記録するＤＢデータ構造管理テーブルと、前記データベースに登録されている前記データが記録されているテーブルのスキーマを記録するＤＢスキーマ管理テーブルと、を利用し、前記データを前記特定用途向け回路に入力可能な形式に変換し、
前記特定用途向け回路のＳＲＡＭの容量、ＤＲＡＭの容量及びバイトオーダを記録したハードウェア情報テーブルと、前記特定用途向け回路に入力する前記データと前記特定用途向け回路での処理後に前記特定用途向け回路のＳＲＡＭ内に保管される中間結果データとの関係を記録した入力データ中間結果データ管理テーブルとを利用して前記特定用途向け回路に入力する前記データのエントリ数を計算し、
前記計算された結果を用いて前記特定用途向け回路に前記データを入力して前記特定用途向け回路を起動し、
前記特定用途向け回路による処理結果のデータを受信し前記アプリケーションに適した前記データ形式に変換して前記アプリケーションに前記データ形式で前記データを送信することを特徴とする請求項６に記載のアクセラレーション方法。
【請求項８】
前記特定用途向け回路は、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）であることを特徴とする請求項５に記載のアクセラレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセラレーションシステム及びアクセラレーション方法に関し、特に、ハードウェア回路を用いてデータ処理を高速化するアクセラレーションシステム及びアクセラレーション方法に適用して好適なものである。
【背景技術】
【０００２】
近年、センサ技術やデータ分析手法の発達により、大量データの分析が盛んに行われている。この際、大量データを高速に処理するために、汎用の演算装置の代わりに特定のデータ処理に特化したハードウェアアクセラレータによってデータ処理が行われることが多い。
【０００３】
高速なデータ処理を可能とするハードウェアアクセラレータとしては、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）などが存在している。これらのうち、高速化したい処理に合わせて柔軟に回路の開発を行えること及び製造コストの面で、ＦＰＧＡがよく用いられる。
【０００４】
特許文献１では、ハードウェア回路の開発工数を削減するための技術として、高級プログラミング言語からハードウェア回路を合成する高位合成技術が提案されている。一方、特許文献２では、データベースを利用するアプリケーションのデータ処理をＦＰＧＡを用いて高速化するための技術が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１５−１１４８７４号公報
【特許文献２】国際公開公報２０１５／１５５８４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
既に説明したように大容量のデータを高速に処理するためのハードウェアアクセラレータとしてＦＰＧＡが利用されており、ＦＰＧＡは特定のデータ処理に特化した特定用途向け回路として開発される。このようなＦＰＧＡの処理性能は処理対象データの容量または型によって変わるため、データ処理を十分に高速化するためにＦＰＧＡに入力する処理対象データを操作する必要がある。
【０００７】
一般的にＦＰＧＡはデータを保持するメモリとしてＳＲＡＭ及びＤＲＡＭを搭載する。ＳＲＡＭは記憶容量が小さいが高速に動作する一方、ＤＲＡＭは記憶容量が大きいが低速で動作する。ＦＰＧＡによるデータ処理を高速化する場合、処理内容を考慮して参照頻度の高い処理結果データをＳＲＡＭに格納する必要がある。しかしながら、処理結果データはデータ処理中にも増加していくため、入力データを処理している最中に処理結果データがＳＲＡＭに格納しきれなくなるおそれがある。このように格納しきれない状態に至ると、ＦＰＧＡのデータ処理性能が低下する。このように、ＦＰＧＡを用いて高速なデータ処理を行うためにはＦＰＧＡのハードウェア特性を考慮する必要がある。
【０００８】
ところで、このようにＦＰＧＡを用いてデータ処理を行うためにはＦＰＧＡの回路設計を行う必要がある。ＦＰＧＡは特定のデータ構造を持つデータのデータ処理に特化して開発されるが、非常に開発工数が掛かる。回路設計の工数を低減する技術としては、高級プログラミング言語からハードウェア回路記述を自動で作成する方法（高位合成技術）が存在しているが、このような高位合成技術は設計済みのＦＰＧＡのような特定用途向け回路の再利用を考慮した手法ではない。
【０００９】
本発明は以上の点を考慮してなされたもので、再利用し易くしつつ特定用途向け回路を用いたデータ処理を高速化することができるアクセラレーションシステム及びアクセラレーション方法を提案しようとするものである。
【課題を解決するための手段】
【００１０】
かかる課題を解決するため、本発明においては、所望の回路コンフィギュレーションデータに基づいて再構成可能回路を特定のデータ処理に特化した特定用途向け回路として機能させるアクセラレータサーバと、前記アクセラレータサーバに対して問い合わせを発行するアプリケーションが実行されるクライアントと、データが格納されたデータベースを管理する複数の異なるデータベース管理システムが実行されるデータベースサーバとを備え、前記アクセラレータサーバは、前記特定用途向け回路に入力すべきデータのデータ量を調整した上で前記特定用途向け回路に前記調整後のデータ量ごとに前記データを入力して前記特定のデータ処理を実行することを特徴とする。
【００１１】
また、本発明においては、所望の回路コンフィギュレーションデータに基づいて再構成可能回路を特定のデータ処理に特化した特定用途向け回路として機能させるアクセラレータサーバと、前記アクセラレータサーバに対して問い合わせを発行するアプリケーションが実行されるクライアントと、データが格納されたデータベースを管理する複数の異なるデータベース管理システムが実行されるデータベースサーバとを備えるアクセラレーションシステムにおけるアクセラレーション方法において、前記アクセラレータサーバが、前記特定用途向け回路に入力すべきデータのデータ量を調整した上で前記特定用途向け回路に前記調整後のデータ量ごとに前記データを入力して前記特定のデータ処理を実行することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、再利用し易くしつつ特定用途向け回路を用いたデータ処理を高速化することができる。
【図面の簡単な説明】
【００１３】
【図１】本実施の形態によるアクセラレーションシステムにおける構成例の概要を示した図である。
【図２】図１に示すアクセラレーションシステムの部的な構成例を示したブロック図である。
【図３】本実施の形態によるアクセラレーションシステムにおけるＤＢスキーマ管理テーブルの例を示した表である。
【図４】本実施の形態によるアクセラレーションシステムにおけるＤＢデータ構造管理テーブルの例を示した表である。
【図５】本実施の形態によるアクセラレーションシステムにおけるＦＰＧＡ回路情報テーブルの例を示した表である。
【図６】本実施の形態によるアクセラレーションシステムにおけるＦＰＧＡハードウェア情報テーブルの例を示した表である。
【図７】本実施の形態によるアクセラレーションシステムにおける入力データ中間結果データ管理テーブルの例を示した表である。
【図８】本実施の形態によるアクセラレーション処理を示したフローチャートである。
【図９】事前設定処理を示したフローチャートである。
【図１０】ＦＰＧＡ情報登録・取得処理を示したフローチャートである。
【図１１】処理方法判断処理を示したフローチャートである。
【図１２】データ取得処理を示したフローチャートである。
【図１３】ＦＰＧＡ回路適合データ変換処理を示したフローチャートである。
【図１４】データ分割処理を示したフローチャートである。
【図１５】データ送信処理を示したフローチャートである。
【図１６】本実施の形態によるアクセラレーション処理を示したシーケンス図である。
【発明を実施するための形態】
【００１４】
以下、図面について、本発明の一実施の形態について詳述する。
【００１５】
（１）本実施の形態によるアクセラレーションシステムの構成
図１は、本実施の形態によるアクセラレーションシステムにおける構成例の概要について示した図であり、図２は、図１に示すアクセラレーションシステムの部的な構成例を示したブロック図である。
【００１６】
本実施の形態によるアクセラレーションシステムは、利用者がアプリケーション１０１を実行するクライアント１と、アプリケーション１０１の処理を高速に実行するアクセラレータサーバ２と、アプリケーション１０１が利用するデータが記録されているデータベース３１と、データベース３１を管理するデータベース管理システム（図示のＤＢＭＳに相当）３２が動作するデータベースサーバ３（図示のＤＢサーバに相当）と、ＦＰＧＡ回路４１を管理しているＦＰＧＡ回路管理サーバ４とを備えている。クライアント１、アクセラレータサーバ２、データベースサーバ３及びＦＰＧＡ回路管理サーバ４は、それぞれネットワーク５によって互いに接続されている。
【００１７】
アクセラレータサーバ２は、アプリケーション１０１の処理を高速に実行するＦＰＧＡ２１と、ＦＰＧＡ２１を利用するためのアプリケーションソフトウェアであるアクセラレータプラットフォーム２０１が記録されているメモリ２２と、アクセラレータプラットフォーム２０１を実行するＣＰＵ２０とを備えている。
【００１８】
アクセラレータプラットフォーム２０１は、アプリケーション１０１からの問い合わせに対してＦＰＧＡ２１を用いて所定の速度以上で（「高速に」という）処理可能である場合にはＦＰＧＡ２１に処理を割り当てる一方、ＦＰＧＡ２１を用いて高速に処理が不可能である場合にはデータベースサーバ３に処理を割り当てる。
【００１９】
ＦＰＧＡ回路管理サーバ４は、アクセラレータサーバ２に搭載されたＦＰＧＡ２１にダウンロードされる回路コンフィギュレーションデータとしてのＦＰＧＡ回路４１を管理している。ＦＰＧＡ回路４１は、アクセラレータサーバ２のＦＰＧＡ２１にダウンロードされてコンフィグレーションが実施されることにより、特定用途向け回路として機能する。これらに関する情報はＦＰＧＡ回路情報テーブル２１３において管理されている。
【００２０】
図３は、図１及び図２に示すＤＢスキーマ管理テーブル２１５の構成例を示す。ＤＢスキーマ管理テーブル２１５は、そのカラムとして、ユーザが利用するＤＢＭＳを表すＤＢＭＳ番号４２７と、ＤＢＭＳに登録されているテーブル名を表すテーブル名４２８と、テーブル名４２８で表されるテーブルに属するカラムの名前であるカラム名４２９と、各カラムのデータがどのようなデータ型であるかを表すカラムのデータ型４３０と、を有する。
【００２１】
図４は、図１及び図２に示すＤＢデータ構造管理テーブル２１４の構成例を示す。ＤＢデータ構造管理テーブル２１４は、そのカラムとして、ユーザが利用するデータベース管理システム３２の名前を表すＤＢＭＳ番号４１６と、ＤＢＭＳ番号４１６で利用できるデータ型を表すデータ型４１７と、データ型４１７のサイズを表すサイズ４１８と、データ型４１７が負数を扱えるか否かを表す負数４１９と、データ型４１７がどのような種類のデータであるかを表すデータ型識別子４２０と、ＤＢＭＳ番号４１６のバイトオーダを表すバイトオーダ４２１と、を有する。
【００２２】
図５は、ＦＰＧＡ回路情報テーブル２１３の構成例を示す。ＦＰＧＡ回路情報テーブル２１３は、そのカラムとして、各回路コンフィギュレーションデータのファイル名を示す回路ファイル名４０１と、各回路コンフィギュレーションデータのダウンロード先を示すダウンロード先４０２と、各回路コンフィギュレーションデータを一意に識別するための回路識別子４０３と、各回路コンフィギュレーションデータに基づく回路に対する入力データ数を示す入力数４０４と、入力データのサイズである入力データエントリサイズ４０５と、入力データのデータ型の種類を表す入力データ型識別子４０６と、入力データが数値である場合に、その数値の固定小数点の桁数を表す小数点桁数４０７と、入力データが数値である場合に、その数値が負数を許容するか否かを表す負数４０８と、各回路コンフィギュレーションデータに基づく回路の処理内容を表す処理内容４０９と、を有する。
【００２３】
入力データ型識別子４０６は、数値型データであることを表す「ＮＵＭＢＥＲ」、文字列形データであることを表す「ＳＴＲＩＮＧ」、及び、その他のデータ型であることを表す「ＢＩＴ」のいずれかが登録される。
【００２４】
図６は、ＦＰＧＡハードウェア情報テーブル２１１の構成例を示す。ＦＰＧＡハードウェア情報テーブル２１１は、そのカラムとして、ＦＰＧＡ２１の名前を表すＦＰＧＡ番号４２２と、ＦＰＧＡ２１を一意に特定するＦＰＧＡ識別子４２３と、ＦＰＧＡ２１のＳＲＡＭ容量４２４と、ＦＰＧＡ２１のＤＲＡＭ容量４２５と、ＦＰＧＡ２１のバイトオーダ４２６と、を有する。
【００２５】
図７は、入力データ中間結果データ管理テーブル２１２の構成例を示す。入力データ中間結果データ管理テーブル２１２は、そのカラムとして、回路識別子４１０と、入力データ型識別子４１１と、入力データ１つ分のサイズを表す入力データエントリサイズ４１２と、ＦＰＧＡ回路４１での処理によって生成されるデータの数である中間結果データ数４１３と、ＦＰＧＡ回路４１での処理後にＦＰＧＡ２１内のＳＲＡＭに保管されるデータの種類を表す中間結果データ型識別子４１４と、中間結果データ１つ分のサイズを表す中間結果データエントリサイズ４１５と、を有する。
【００２６】
（２）アクセラレーションシステムの動作例
本実施の形態によるアクセラレーションシステムの概要構成は以上のようであり、次にその動作例としてのアクセラレーション方法の一例について説明する。
【００２７】
図８は、本実施の形態によるアクセラレーションシステムにおける全体の処理の流れを示し、図９は、図８に示すステップＳ１０１の詳細を示す。図１０は、図８に示すステップＳ１０２の詳細を示す。図１１は、図８に示すステップＳ１０５の詳細を示す。図１３は、図８のステップＳ１０８の詳細を示す。図１４は、図８に示すステップＳ１０９の詳細を示す。図１５は、図８に示すステップＳ１１０の詳細を示す。図１６は、本実施の形態によるアクセラレーション処理を示すシーケンスチャートである。
【００２８】
図８のステップＳ１０１では、各テーブルへの登録処理が実行される。具体的には、データ処理の高速化に用いるＦＰＧＡ２１にコンフィギュレーションを実施したい回路コンフィギュレーションデータがＦＰＧＡ回路情報テーブル２１３に登録される（図９のステップＳ１１１）。
【００２９】
次にデータ処理に用いる回路コンフィギュレーションデータに基づく回路の入力データと、ＦＰＧＡ回路４１によって処理された後にＦＰＧＡ２１内のＳＲＡＭに保管される中間結果データとの関係が、入力データ中間結果データ管理テーブル２１２に登録される（図９のステップＳ１１２）。さらに、利用するデータベース管理システム３２において使用可能なデータ型に関連する情報がＤＢデータ構造管理テーブル２１４に登録される（図９のステップＳ１１３）。
【００３０】
図８のステップＳ１０２では、ＦＰＧＡ情報登録・取得部２１６が、アクセラレータサーバ２に搭載されているＦＰＧＡ２１のハードウェア情報を取得し、ＦＰＧＡハードウェア情報テーブル２１１に登録する。
【００３１】
具体的には、図１０のステップＳ１２１ではまず、ＦＰＧＡ情報登録・取得部２１６が、アクセラレータサーバ２に接続されているＦＰＧＡ２１に関する情報を取得する。ステップＳ１２２では、ＦＰＧＡ情報登録・取得部２１６が、ＦＰＧＡ２１に関する情報が全てＦＰＧＡハードウェア情報テーブル２１１で管理されているか否かを確認する。
【００３２】
ＦＰＧＡ２１に関する情報が全てＦＰＧＡハードウェア情報テーブル２１１で管理されてない場合、ＦＰＧＡ情報登録・取得部２１６は、ＦＰＧＡハードウェア情報テーブル２１１で管理されていないＦＰＧＡ２１に関する情報をＦＰＧＡハードウェア情報テーブル２１１に記録する（ステップＳ１２３）。
【００３３】
一方、ＦＰＧＡ２１に関する情報が全てＦＰＧＡハードウェア情報テーブル２１１で管理されている場合、ＦＰＧＡ情報登録・取得部２１６は、ＦＰＧＡハードウェア情報テーブル２１１から使用するＦＰＧＡ２１に関する情報としてＳＲＡＭ容量を取得する（ステップＳ１２４）。
【００３４】
図８のステップＳ１０３では、アプリケーション１０１がアクセラレータプラットフォーム２０１に対してＳＱＬを用いて問い合わせを発行する（図８のステップＳ１０３に相当）。
【００３５】
次にステップＳ１０４では、ＡＰ処理分割部２１７が、アプリケーション１０１によって発行されたＳＱＬに応じて、例えばＳＱＬの構文解析を実行したりＳＱＬに対するＤＢＭＳの実行計画を解析する。ＡＰ処理分割部２１７は、そのＳＱＬに応じて実行される全体処理をデータベース３１によって実行可能な最小単位の処理に分割する（図１６のステップＳ１０４にも相当）。以下、このように分割された各単位処理を「最小単位処理」と呼称する。
【００３６】
次にステップＳ１０５では、処理方法判断部２１８が、上述した最小単位処理の全てに関して、ＦＰＧＡ回路情報テーブル２１３及びＤＢデータ構造管理テーブル２１４を用いてＦＰＧＡ２１によって実行可能であるか否かについて最小単位処理ごとに判断する（図１６のステップＳ１０５にも相当）。
【００３７】
具体的には、図１１のステップＳ１３１では、処理方法判断部２１８が、分割された処理に対応する回路コンフィギュレーションデータがＦＰＧＡ回路情報テーブル２１３内に記録されているか否かを判断する。
【００３８】
分割された処理に対応する回路がＦＰＧＡ回路情報テーブル２１３内に記録されている場合、処理方法判断部２１８は、回路ダウンロード部２１９に、回路コンフィギュレーションデータのダウンロード先（図５に示すダウンロード先４０２に対応）を通知し、回路に関する情報、例えば図５に示す回路識別子４０３〜処理内容４０９を保存する（ステップＳ１３２）。一方、分割された処理に対応する回路コンフィギュレーションデータがＦＰＧＡ回路情報テーブル２１３内に記録されていない場合、処理方法判断部２１８は、最小単位処理をデータベース管理システム３２で実行するためのクエリを発行する（ステップＳ１３７）。
【００３９】
次に処理方法判断部２１８は、ＤＢスキーマ管理テーブル２１５を参照して、分割された処理で用いるカラムのデータ型を取得する（図１１のステップＳ１３３）。
【００４０】
次に処理方法判断部２１８は、図４に示すＤＢデータ構造管理テーブル２１４から、上述したステップＳ１３３において取得したデータ型４１７に対応するデータ型識別子４２０及びサイズ４１８を取得する（図１１のステップＳ１３４）。
【００４１】
次に処理方法判断部２１８は、サイズ４１８と、回路の入力データエントリサイズ４０５とを比較する（図１１のステップＳ１３５）。処理で用いるカラムの中間結果データエントリサイズ４１５が回路コンフィギュレーションデータに基づく回路の入力データエントリサイズ４０５のサイズ以下でない場合、処理方法判断部２１８は、最小単位処理をデータベース管理システム３２で実行するためのクエリを発行する（ステップＳ１３７）。一方、処理で用いるカラムの中間結果データエントリサイズ４１５が回路の入力データエントリサイズ４０５のサイズ以下である場合、処理方法判断部２１８は、取得したデータ型識別子４２０と回路の入力データ型識別子４０６を比較する（図１１のステップＳ１３６）。
【００４２】
取得したデータ型識別子４２０と回路の入力データ型識別子４０６とが一致している場合、処理方法判断部２１８は、対象単位処理に用いるカラムデータを取得するためのクエリと、処理対象カラム情報を取得するためのクエリとを発行する（図１１のステップＳ１３８）。一方、取得したデータ型識別子４２０と回路の入力データ型識別子４０６とが一致していない場合、処理方法判断部２１８は、最小単位処理をデータベース管理システム３２で実行するためのクエリを発行する（ステップＳ１３７）。
【００４３】
次に処理方法判断部２１８は、データ取得部２２０に対して既述のステップＳ１３７またはステップＳ１３８において発行したクエリの実行を依頼する（図１１のステップＳ１３９）。
【００４４】
次に図８のステップＳ１０６では、回路ダウンロード部２１９が、処理方法判断部２１８から通知されたダウンロード先４０２において示されたダウンロード先から回路コンフィギュレーションデータをダウンロードし、ＦＰＧＡ２１にコンフィギュレーションを実施する（図１６のステップＳ１０６にも相当）。ダウンロード先４０２は、ＦＰＧＡ回路管理サーバ４上のＦＰＧＡ回路４１において各回路コンフィギュレーションデータを一意に特定可能なアドレスを指している。
【００４５】
次に図８のステップＳ１０７では、データ取得部２２０が、処理方法判断部２１８から通知された情報に従って、処理対象カラムデータをデータベース管理システム３２から取得する（図１６のステップＳ１０７に相当）。具体的には、図１２のステップＳ１４１に示すようにデータ取得部２２０が、ステップＳ１０５において処理方法判断部２１８から通知されたクエリを実行し、データベース管理システム３２から処理対象カラムデータを取得する。
【００４６】
次に図８のステップＳ１０８では、ＦＰＧＡ回路適合データ変換部２２１が、ＦＰＧＡ回路情報テーブル２１３、ＤＢデータ構造管理テーブル２１４及びＤＢスキーマ管理テーブル２１５を用いて、データ取得部２２０によってデータベース管理システム３２から取得されたデータを、ＦＰＧＡ２１に入力可能なデータ形式に変換する（図１６のステップ１０８に相当）。
【００４７】
具体的には、図１３のステップＳ１５１では、ＦＰＧＡ回路適合データ変換部２２１が、ＤＢデータ構造管理テーブル２１４から、データ取得部２２０がデータを読み出したデータベース管理システム３２のバイトオーダを取得する。
【００４８】
次にＦＰＧＡ回路適合データ変換部２２１が、ステップＳ１５１において取得したデータベース管理システム３２のバイトオーダ４２１と、ＦＰＧＡ情報登録・取得部２１６がステップＳ１２１またはステップＳ１２２において取得したＦＰＧＡ２１のバイトオーダ４２６と、が同一であるか否かを判定する（ステップＳ１５２）。
【００４９】
バイトオーダ４２１がバイトオーダ４２６と同一である場合、ＦＰＧＡ回路適合データ変換部２２１が、データ取得部２２０によって取得されたデータが数値であるか否かを判定する（ステップＳ１５３）。一方、バイトオーダ４２１がバイトオーダ４２６と同一ではない場合、ＦＰＧＡ回路適合データ変換部２２１が、データのバイトオーダを回路のバイトオーダに合わせるようにデータの変換を行う（ステップＳ１５６）。
【００５０】
データ取得部２２０によって取得されたデータが数値である場合、図１３のステップＳ１５４では、ＦＰＧＡ回路適合データ変換部２２１が、データが固定小数点であるか否かを判定する（ステップＳ１５４）。一方、データ取得部２２０によって取得されたデータが数値ではない場合は、ＦＰＧＡ回路適合データ変換部２２１が、データ取得部２２０によって取得されたデータのデータサイズが回路の入力信号線のビット幅と同一になるようにデータ取得部２２０によって取得されたデータを変換する（ステップＳ１５７）。
【００５１】
データ取得部２２０によって取得されたデータが固定小数点ではない場合、データ取得部２２０は取得したデータを固定小数点に変換する（ステップＳ１５８）。データ取得部２２０は、取得した固定小数点データ、またはステップＳ１５８において固定小数点に変換されたデータを、利用するＦＰＧＡ回路の小数点桁数４０７に合わせて変換する（ステップＳ１５５）。
【００５２】
次に図８のステップＳ１０９では、データ分割部２２２が、ＦＰＧＡハードウェア情報テーブル２１１及び入力データ中間結果データ管理テーブル２１２を用いて、ＦＰＧＡ回路４１に入力するデータのエントリ数を決定する（図１６のステップＳ１０９に相当）。
【００５３】
具体的には、データ分割部２２２が、取得した回路識別子４１０が入力データ中間結果データ管理テーブル２１２に存在するか否かを判定する（図１４のステップＳ１６１）。
【００５４】
取得した回路識別子４１０が入力データ中間結果データ管理テーブル２１２に存在しないと判定した場合、データ分割部２２２はデータ分割処理を終了する。一方、取得した回路識別子４１０が入力データ中間結果データ管理テーブル２１２に存在すると判定した場合、データ分割部２２２は、入力データ中間結果データ管理テーブル２１２から、中間結果データのエントリサイズを取得する（ステップＳ１６２）。
【００５５】
次にデータ分割部２２２は、次のようなＦＰＧＡ入力データエントリ数計算式（１）を用いて、ＦＰＧＡ回路４１に入力するデータのエントリ数（以下「ＦＰＧＡ入力データエントリ数」ともいう）を計算する（ステップＳ１６３）。
【００５６】
ＦＰＧＡ入力データエントリ数＝ＳＲＡＭ容量（ビット）／中間結果エントリサイズ（ビット）  ・・・  （１）
【００５７】
このＦＰＧＡ入力データエントリ数計算式（１）は、アクセラレーションシステムにおけるデータ分割部２２２の処理中にも実行されるＦＰＧＡ２１に入力するデータ量の計算方法の一例を示している。
【００５８】
図８のステップＳ１１０では、データ送信部２２３が、既述のステップＳ１０８においてＦＰＧＡ回路適合データ変換部２２１によって変換されたデータを、ステップＳ１６３においてデータ分割部２２２によって算出された入力データエントリ数の分だけＦＰＧＡ２１に送信し、ＦＰＧＡ２１を起動する（図１６のステップＳ１１０に相当）。
【００５９】
具体的には、まずデータ送信部２２３が、データ分割部２２２によって入力データのエントリ数が算出されたか否かを判定する（図１５のステップＳ１７１）。入力データのエントリ数が算出されていない場合、データ送信部２２３が、ＦＰＧＡ回路適合データ変換部２２１によって変換されたデータを全てＦＰＧＡ２１に送信する（ステップＳ１７２）。
【００６０】
一方、データ分割部２２２によって入力データのエントリ数が算出されていた場合、データ送信部２２３が、データ分割部２２２によって算出された入力データのエントリ数の分だけ、ＦＰＧＡ回路適合データ変換部２２１によって変換されたデータをＦＰＧＡ２１に送信する（ステップＳ１７３）。
【００６１】
データ送信部２２３は、ＦＰＧＡ回路適合データ変換部２２１によって変換されたデータを全てＦＰＧＡ２１に送信したか否かを判定する（ステップＳ１７４）。データ送信部２２３は、ＦＰＧＡ回路適合データ変換部２２１によって変換されたデータが全てＦＰＧＡ２１に送信されていない場合にはステップＳ１７３に戻ってこのステップＳ１７３を実行する一方、全て送信した場合にはデータ送信処理を終了する。
【００６２】
図８のステップＳ１１１では、ＦＰＧＡ２１が、上述のように入力されたデータを処理する（図１６のステップ１１１に相当）。次にステップＳ１１２では、結果受信部２２４が、ＦＰＧＡ２１の処理結果データを取得する（図１６のステップＳ１１２に相当）。ステップＳ１１３では、データ送信部２２３が、分割された全てのデータを送信し、ＦＰＧＡ２１が全てのデータの処理を完了し、結果受信部２２４が処理結果を全て受信しているか否かを判定する（図１６のステップＳ１１３に相当）。
【００６３】
分割された全てのデータについて処理が完了している場合には図８のステップＳ１１４が実行される一方、分割された全てのデータについて処理が完了していない場合には既述のステップＳ１１０に戻って実行される。
【００６４】
図８のステップＳ１１４では、処理方法判断部２１８が全ての処理について判断を完了しており、その処理に対する結果を結果受信部２２４が全て受信しているか否かが判定される（図１６のステップＳ１１４に相当）。アクセラレータプラットフォーム２０１は、処理方法判断部２１８が全ての処理について判断を完了しており、その処理に対する結果を結果受信部２２４が全て受信している場合には処理を終了する一方、そうではない場合にはステップＳ１０５に戻ってこのステップＳ１０５を実行する。
【００６５】
（３）本実施の形態の作用効果
以上のように本実施の形態によれば、アクセラレータプラットフォーム２０１が、データベース管理システム３２、データベース３１及びアプリケーション１０１を改変することなく、データベース３１から取得したデータを変換してＦＰＧＡ２１に入力するデータ量を調整することによりＦＰＧＡ２１を用いてデータ処理を高速化することができる。これにより、入力データが同様となるためＦＰＧＡ２１が再利用し易くなるとともに、好適なデータ量ずつデータが入力されるためＦＰＧＡ２１を用いたデータ処理を高速化することができる。
【００６６】
（４）その他の実施形態
上記実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その趣旨を逸脱しない限り、様々な形態で実施することができる。例えば、上記実施形態では、各種プログラムの処理をシーケンシャルに説明したが、特にこれにこだわるものではない。従って、処理結果に矛盾が生じない限り、処理の順序を入れ替え又は並行動作するように構成しても良い。
【産業上の利用可能性】
【００６７】
本発明は、ハードウェア回路を用いてデータ処理を高速化するアクセラレーションシステム及びデータベース統合アクセラレーション方法に広く適用することができる。
【符号の説明】
【００６８】
１……クライアント、２……アクセラレータサーバ、３……データベースサーバ、２０……ＣＰＵ、２１……ＦＰＧＡ、２２……メモリ、３１……データベース、３２……データベース管理システム、１０１……アプリケーション、２０１……アクセラレータプラットフォーム、２１１……ＦＰＧＡハードウェア情報テーブル、２１２……入力データ中間結果データ管理テーブル、２１３……ＦＰＧＡ回路情報テーブル、２１４……ＤＢデータ構造管理テーブル、２１５……ＤＢスキーマ管理テーブル、２１６……ＦＰＧＡ情報登録・取得部、２１７……ＡＰ処理分割部、２１８……処理方法判断部、２１９……回路ダウンロード部、２２０……データ取得部、２２１……ＦＰＧＡ回路適合データ変換部、２２２……データ分割部、２２３……データ送信部、２２４……結果受信部。
【図１】
2018055648.tif 000003
【図２】
2018055648.tif 000004
【図３】
2018055648.tif 000005
【図４】
2018055648.tif 000006
【図５】
2018055648.tif 000007
【図６】
2018055648.tif 000008
【図７】
2018055648.tif 000009
【図８】
2018055648.tif 000010
【図９】
2018055648.tif 000011
【図１０】
2018055648.tif 000012
【図１１】
2018055648.tif 000013
【図１２】
2018055648.tif 000014
【図１３】
2018055648.tif 000015
【図１４】
2018055648.tif 000016
【図１５】
2018055648.tif 000017
【図１６】
2018055648.tif 000018