(57)【要約】【課題】  処理性能の高い情報処理装置及び方法を提案する。【解決手段】  データに対する所定処理を実行するアクセラレータが搭載された情報処理装置及び当該情報処理装置において実行される情報処理方法であって、データを記憶保持するストレージ装置と、外部から要求されたタスクに含まれる所定処理の実行をアクセラレータに要求するホスト制御部とを情報処理装置に設け、データを圧縮してストレージ装置に格納し、アクセラレータが、ホスト制御部からの要求に応じて、ストレージ装置に格納されたデータのうちの処理対象のデータを読み込み、読み込んだデータを伸張しながら、当該データに対する所定処理を実行するようにした。
2018179243.tif 000002
【特許請求の範囲】
【請求項１】
データに対する所定処理を実行するアクセラレータが搭載された情報処理装置において、
データを記憶保持するストレージ装置と、
外部から要求されたタスクに含まれる前記所定処理の実行を前記アクセラレータに要求するホスト制御部と
を備え、
前記データは圧縮されて前記ストレージ装置に格納され、
前記アクセラレータは、
前記ホスト制御部からの要求に応じて、前記ストレージ装置に格納された前記データのうちの処理対象の前記データを読み込み、読み込んだ前記データを伸張しながら、当該データに対する前記所定処理を実行する
ことを特徴とする情報処理装置。
【請求項２】
前記アクセラレータは、
当該アクセラレータにデータを入出力する入出力回路と、
圧縮されたデータを伸張する伸張回路と、
前記所定処理を実行する処理回路と、
データを記憶保持するメモリと
を備え、
前記入出力回路は、
前記ホスト制御部からの要求に応じて、前記ストレージ装置から処理対象の前記データを読み出して前記メモリに格納し、
前記伸張回路は、
前前記メモリに格納された処理対象の前記データを伸張して前記処理回路に転送し、
前記処理回路は、
前記伸張回路から転送された伸張された前記データに対して前記所定処理を実行し、当該所定処理の処理結果を前記メモリに格納し、
前記入出力回路は、
前記メモリに格納された前記所定処理の処理結果を前記ホスト制御部に送信する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ホスト制御部は、
外部から取り込んだ前記データを圧縮して前記ストレージ装置に格納する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記ホスト制御部は、
前記所定処理の実行を前記アクセラレータに要求する際、処理対象の前記データの圧縮後のデータ長をそれぞれ前記アクセラレータの入出力回路に通知し、
当該入出力回路は、
前記ホスト制御部から通知された前記データの圧縮後のデータ長に応じて、必要な容量の記憶領域を前記メモリ上に確保する
ことを特徴とする請求項３に記載の情報処理装置。
【請求項５】
外部のデータソースから前記データを取り込んで前記ストレージ装置に転送する通信装置をさらに備え、
前記ストレージ装置は、
記憶領域を提供する記憶装置と、
前記記憶装置に対するデータの読書きを制御するコントローラと
を備え、
前記コントローラは、
前記通信装置から転送されてきた前記データを圧縮して前記記憶装置に格納する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項６】
前記コントローラは、
前記アクセラレータの前記入出力回路が処理対象の前記データを読み出す際に、当該データの圧縮後のデータ長を前記入出力回路に通知し、
当該入出力回路は、
前記コントローラから通知された圧縮後の前記データのデータ長に応じて、必要な容量の記憶領域を前記メモリ上に確保する
ことを特徴とする請求項５に記載の情報処理装置。
【請求項７】
データに対する所定処理を実行するアクセラレータが搭載された情報処理装置において実行される情報処理方法であって、
前記情報処理装置は、
データを記憶保持するストレージ装置と、
外部から要求されたタスクに含まれる前記所定処理の実行を前記アクセラレータに要求するホスト制御部と
を有し、
前記データを圧縮して前記ストレージ装置に格納する第１のステップと、
前記アクセラレータが、前記ホスト制御部からの要求に応じて、前記ストレージ装置に格納された前記データのうちの処理対象の前記データを読み込み、読み込んだ前記データを伸張しながら、当該データに対する前記所定処理を実行する第２のステップと
を備えることを特徴とする情報処理方法。
【請求項８】
前記アクセラレータは、
当該アクセラレータにデータを入出力する入出力回路と、
圧縮されたデータを伸張する伸張回路と、
前記所定処理を実行する処理回路と、
データを記憶保持するメモリと
を有し、
前記第２のステップでは、
前記入出力回路が、前記ホスト制御部からの要求に応じて、前記ストレージ装置から処理対象の前記データを読み出して前記メモリに格納し、
前記伸張回路が、前前記メモリに格納された処理対象の前記データを伸張して前記処理回路に転送し、
前記処理回路が、前記伸張回路から転送された伸張された前記データに対して前記所定処理を実行し、当該所定処理の処理結果を前記メモリに格納し、
前記入出力回路が、前記メモリに格納された前記所定処理の処理結果を前記ホスト制御部に送信する
ことを特徴とする請求項７に記載の情報処理方法。
【請求項９】
前記第１のステップでは、
前記ホスト制御部が、外部から取り込んだ前記データを圧縮して前記ストレージ装置に格納する
ことを特徴とする請求項８に記載の情報処理方法。
【請求項１０】
前記ホスト制御部は、
前記所定処理の実行を前記アクセラレータに要求する際、処理対象の前記データの圧縮後のデータ長をそれぞれ前記アクセラレータの入出力回路に通知し、
前記第２のステップにおいて、前記入出力回路は、
前記ホスト制御部から通知された圧縮後の前記データのデータ長に応じて、必要な容量の記憶領域を前記メモリ上に確保する
ことを特徴とする請求項９に記載の情報処理方法。
【請求項１１】
前記情報処理装置は、
外部のデータソースから前記データを取り込んで前記ストレージ装置に転送する通信装置をさらに有し、
前記ストレージ装置は、
記憶領域を提供する記憶装置と、
前記記憶装置に対するデータの読書きを制御するコントローラと
を有し、
前記第１のステップにおいて、前記コントローラは、
前記通信装置から転送されてきた前記データを圧縮して前記記憶装置に格納する
ことを特徴とする請求項８に記載の情報処理方法。
【請求項１２】
前記第２のステップにおいて、
前記コントローラは、
前記アクセラレータの前記入出力回路が処理対象の前記データを読み出す際に、当該データの圧縮後のデータ長を前記入出力回路に通知し、
当該入出力回路は、
前記コントローラから通知された圧縮後の前記データのデータ長に応じて、処理に必要な容量の記憶領域を前記メモリ上に確保する
ことを特徴とする請求項１１に記載の情報処理方法。
【請求項１３】
情報処理装置において、
データを記憶保持するストレージ装置と、
データに対する所定処理を実行するアクセラレータと、
外部から要求されたタスクに含まれる前記所定処理の実行を前記アクセラレータに要求するホスト制御部と
を有し、
前記データは圧縮されて前記ストレージ装置に格納され、
前記アクセラレータは、
当該アクセラレータにデータを入出力する入出力回路と、
圧縮されたデータを伸張する伸張回路と、
前記所定処理を実行する処理回路と、
データを記憶保持するメモリと
を備え、
前記入出力回路は、
前記ホスト制御部からの要求に応じて、前記ストレージ装置から処理対象の前記データを読み出して前記メモリに格納し、
前記伸張回路は、
前前記メモリに格納された処理対象の前記データを伸張して前記処理回路に転送し、
前記処理回路は、
前記伸張回路から転送された伸張された前記データに対して前記所定処理を実行し、当該所定処理の処理結果を前記メモリに格納し、
前記入出力回路は、
前記メモリに格納された前記所定処理の処理結果を前記ホスト制御部に送信する
ことを特徴とする情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は情報処理装置及び方法に関し、例えばビッグデータを分析する分析システムに適用して好適なものである。
【背景技術】
【０００２】
近年、ビジネス現場においてビックデータ分析が普及し、分析対象のデータ量は増加の一途を辿っている。例えば、商品の販売データ（ＰＯＳ（Point Of Sale）データ）は、事業のグローバル化や、実店舗及びオンライン店舗双方での販売といった販売形態の多様化により、データ量が益々増加してきている。このような販売データは、今後、ＴＢ（Terra Byte）以上のオーダとなることが見込まれている。【０００３】
ビッグデータの分析結果を迅速にビジネス判断に活かすためには、分析処理を高速化し、短時間で結果を出すことが必要となる。しかしながら、半導体加工の微細化の限界に伴い、分析装置において分析処理を実行するＣＰＵ（Central Processing Unit）の性能向上は鈍化することが予測されている。【０００４】
データ量の増加及びＣＰＵの性能限界に伴い、１つの分析処理に多くの時間を要し、さらに１つのデータベースに対して複数の分析手法を適用したり、多数のデータベースに対する分析処理を実行すると、分析処理にはさらに多くの時間を要する。【０００５】
かかる問題を解決するための方法として、従来、ＣＰＵが実行していた分析処理の一部をＦＰＧＡ（Field Programmable Gate Array）が搭載されたアクセラレータにオフロードする方法が知られている。ＦＰＧＡは、ユーザが自由にプログラミングすることができる集積回路（ＬＳＩ：Large-Scale Integration）である。【０００６】
ただし、分析処理をＣＰＵ又はアクセラレータのいずれで実行する場合も、ストレージ装置からそのＣＰＵ又はアクセラレータが処理対象のデータを読み出す際にそのデータ量が大きい場合には、そのＣＰＵ又はアクセラレータと、ストレージ装置との間のネットワーク帯域がボトルネックになってシステム全体としての処理が遅くなる。【０００７】
このためＣＰＵのみで分析処理を行っていた従来の分析装置では、ＣＰＵの近くに伸張回路を配置し、ストレージ装置に格納された圧縮データを伸張回路において伸張処理した後に主記憶装置（メモリ）に格納し、その後、そのデータをＣＰＵにより処理していた（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】国際公開第２０１５／１８１９０２号
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、ＦＰＧＡが搭載されたアクセラレータでは、実装されたメモリの容量やその帯域に限りがある。このためＣＰＵが実行していた分析処理の一部をＦＰＧＡにオフロードする場合、伸張後のデータをかかるアクセラレータに搭載されたメモリに格納するものとすると、かかるメモリの容量、あるいはＦＰＧＡに接続されるメモリチャネルの帯域がボトルネックとなってシステム全体としての処理が遅くなるという課題があった。【００１０】
本発明は以上の点を考慮してなされたもので、大容量のデータを高速にアクセラレータに転送でき、かつアクセラレータ内のメモリ容量やメモリチャネル帯域のボトルネックをも解消し得る処理性能の高い情報処理装置及び方法を提案しようとするものである。
【課題を解決するための手段】
【００１１】
かかる課題を解決するため本発明の一実施形態においては、データに対する所定処理を実行するアクセラレータが搭載された情報処理装置において、データを記憶保持するストレージ装置と、外部から要求されたタスクに含まれる前記所定処理の実行を前記アクセラレータに要求するホスト制御部とを設け、前記データは圧縮されて前記ストレージ装置に格納され、前記アクセラレータは、前記ホスト制御部からの要求に応じて、前記ストレージ装置に格納された前記データのうちの処理対象の前記データを読み込み、読み込んだ前記データを伸張しながら、当該データに対する前記所定処理を実行するようにした。【００１２】
また本発明の一実施形態においては、データに対する所定処理を実行するアクセラレータが搭載された情報処理装置において実行される情報処理方法であって、前記情報処理装置は、データを記憶保持するストレージ装置と、外部から要求されたタスクに含まれる前記所定処理の実行を前記アクセラレータに要求するホスト制御部とを有し、前記データを圧縮して前記ストレージ装置に格納する第１のステップと、前記アクセラレータが、前記ホスト制御部からの要求に応じて、前記ストレージ装置に格納された前記データのうちの処理対象の前記データを読み込み、読み込んだ前記データを伸張しながら、当該データに対する前記所定処理を実行する第２のステップとを設けるようにした。【００１３】
さらに本発明の一実施形態においては、情報処理装置において、データを記憶保持するストレージ装置と、データに対する所定処理を実行するアクセラレータと、外部から要求されたタスクに含まれる前記所定処理の実行を前記アクセラレータに要求するホスト制御部とを有し、前記データは圧縮されて前記ストレージ装置に格納され、前記アクセラレータは、当該アクセラレータにデータを入出力する入出力回路と、圧縮されたデータを伸張する伸張回路と、前記所定処理を実行する処理回路と、データを記憶保持するメモリとを備え、前記入出力回路は、前記ホスト制御部からの要求に応じて、前記ストレージ装置から処理対象の前記データを読み出して前記メモリに格納し、前記伸張回路は、前前記メモリに格納された処理対象の前記データを伸張して前記処理回路に転送し、前記処理回路は、前記伸張回路から転送された伸張された前記データに対して前記所定処理を実行し、当該所定処理の処理結果を前記メモリに格納し、前記入出力回路は、前記メモリに格納された前記所定処理の処理結果を前記ホスト制御部に送信するようにした。【００１４】
本発明の情報処理装置及び方法によれば、圧縮されたデータをストレージ装置からアクセラレータに転送するため、ストレージ装置からアクセラレータに転送するデータ量も少なく、ストレージ装置及びアクセラレータ間のネットワーク帯域がボトルネックとなって処理が遅くなる可能性を低減できる。また本情報処理装置及び方法によれば、アクセラレータ内部でデータを伸張しながら当該データに対する処理を行っているため、伸張したデータによりアクセラレータ内部のメモリの容量やメモリチャンネルの帯域が圧迫されることもなく、かかるメモリの容量及びメモリチャンネルの帯域がボトルネックとなって処理が遅くなるという事態の発生を有効に回避することができる。
【発明の効果】
【００１５】
本発明によれば、処理性能の高い情報処理装置及び方法を実現できる。
【図面の簡単な説明】
【００１６】
【図１】第１及び第２の実施の形態による情報処理システムの全体構成を示すブロック図である。
【図２】アクセラレータのハードウェア構成を示すブロック図である。
【図３】主記憶装置におけるソフトウェア構成及びデータ構成を示すブロック図である。
【図４】ファイル保存位置管理テーブルの構成例を示す図表である。
【図５】圧縮情報管理テーブルの構成例を示す図表である。
【図６】第１の実施の形態のワーカノードサーバにおいて実行されるフィルタ処理等の概略的な処理の流れの説明に供するブロック図である。
【図７】第１の実施の形態のワーカノードサーバにおいて実行されるフィルタ処理及び集約処理のより詳しい処理の流れの説明に供するシーケンス図である。
【図８】第１の実施の形態による処理コマンドの構成例を示す概念図である。
【図９】処理コマンドの生成処理の説明に供するシーケンス図である。
【図１０】ＬＢＡリストの構成例を示す図表である。
【図１１】第２の実施の形態のワーカノードサーバにおいて実行されるフィルタ処理等の概略的な処理の流れの説明に供するブロック図である。
【図１２】第２の実施の形態のワーカノードサーバにおいて実行されるフィルタ処理及び集約処理のより詳しい処理の流れの説明に供するシーケンス図である。
【図１３】第２の実施の形態による処理コマンドの構成例を示す概念図である。
【図１４】圧縮情報の構成例を示す概念図である。
【発明を実施するための形態】
【００１７】
以下図面について、本発明の一実施の形態を詳述する。
【００１８】
（１）第１の実施の形態
（１−１）本実施の形態の情報処理システムの構成
図１において、１は全体として本実施の形態による情報処理システムを示す。この情報処理システム１は、ビッグデータの分析を行う分析システムである。
【００１９】
実際上、情報処理システム１は、１又は複数のクライアント２と、アプリケーションサーバ３と、分散データベースシステム４とを備えて構成される。そして各クライアント２は、ＬＡＮ（Local Area Network）又はインターネットなどからなる第１のネットワーク５を介してアプリケーションサーバ３と接続されている。
【００２０】
また分散データベースシステム４は、マスタノードサーバ６及び複数のワーカノードサーバ７から構成されており、これらマスタノードサーバ６及びワーカノードサーバ７がＬＡＮなどから構成される第２のネットワーク８を介してアプリケーションサーバ３とそれぞれ接続されている。
【００２１】
クライアント２は、ユーザが使用する汎用のコンピュータ装置である。クライアント２は、ユーザ操作又は当該クライアント２に実装されたアプリケーションからの要求に応じて、ビッグデータの分析要求を第１のネットワーク５を介してアプリケーションサーバ３に送信する。またクライアント２は、アプリケーションサーバ３から第１のネットワーク５を介して送信されてきた分析結果を表示する。
【００２２】
アプリケーションサーバ３は、分析ＢＩ（Business Intelligence）ツールが実装された汎用のサーバ装置から構成される。アプリケーションサーバ３は、クライアント２から要求された分析処理を実行するのに必要なデータを取得するためのＳＱＬ（Structured Query Language）クエリを生成し、生成したＳＱＬクエリを分散データベースシステム４のマスタノードサーバ６に送信する。またアプリケーションサーバ３は、マスタノードサーバ６から送信されるそのＳＱＬクエリの処理結果に基づいて分析処理を実行し、その分析結果をクライアント２に送信する。
【００２３】
マスタノードサーバ６は、例えばHadoopにおけるマスタノードとして機能する汎用のサーバ装置である。実際上、マスタノードサーバ６は、アプリケーションサーバ３から第２のネットワーク８を介して送信されてきたＳＱＬクエリを解析し、当該ＳＱＬクエリに基づく処理を複数のタスクに分解する。またマスタノードサーバ６は、これらのタスクの実行計画を立案し、立案した実行計画に従ってこれらタスクの実行要求（以下、これをタスク実行要求と呼ぶ）を各ワーカノードサーバ７に送信する。そしてマスタノードサーバ６は、各ワーカノードサーバ７から送信されてきたこれらタスク実行要求の実行結果をＳＱＬクエリの処理結果としてアプリケーションサーバ３に送信する。
【００２４】
ワーカノードサーバ７は、例えばHadoopにおけるワーカノードとして機能する汎用のサーバ装置である。実際上、ワーカノードサーバ７は、分散データベースシステム４内で分散配置されたデータベースの一部データを後述するストレージ装置１２に保持しており、マスタノードサーバ６から与えられたタスク実行要求に従って必要な処理を実行し、その処理結果を他のワーカノードサーバ７やマスタノードサーバ６に送信する。
【００２５】
このワーカノードサーバ７は、ホストＣＰＵ（Central Processing Unit）１０、主記憶装置１１、１又は複数のストレージ装置１２、通信装置１３及びアクセラレータ１４を備えて構成される。そしてホストＣＰＵ１０、ストレージ装置１２、通信装置１３及びアクセラレータ１４は、ＰＣＩｅ（Peripheral Component Interconnect express）スイッチ１５を介して相互に接続されている。
【００２６】
ホストＣＰＵ１０は、ワーカノードサーバ７全体の動作制御を司るプロセッサである。ホストＣＰＵ１０は、後述のように主記憶装置１１に格納されたソフトウェアに基づいて、マスタノードサーバ６から送信されてきたタスク実行要求において指示されたタスクを実行し、その実行結果をマスタノードサーバ６に通知する。この際、ホストＣＰＵ１０は、そのタスクにフィルタ処理や、フィルタ処理及び集約処理（以下、これらをフィルタ処理等と呼ぶ）が含まれる場合には、これに応じた処理コマンドをアクセラレータに送信することにより、そのフィルタ処理等をアクセラレータ１４に実行させる。
【００２７】
主記憶装置１１は、例えば、揮発性の半導体メモリから構成され、ストレージ装置１２からロードした各種ソフトウェアや各種データを一時的に記憶保持するために利用される。主記憶装置１１に格納されたソフトウェアをホストＣＰＵ１０が実行することにより、後述のようなワーカノードサーバ７全体としての各種処理が実行される。
【００２８】
ストレージ装置１２は、例えばハードディスク装置やＳＳＤ（Solid State Drive）などの大容量の不揮発性記憶装置から構成される。ストレージ装置１２には、分散データベースシステム４内で分散配置されたデータベースの一部のテーブルのデータがデータベースデータとして１又は複数のファイルにファイル化されて格納される。なお以下においては、ストレージ装置１２はＳＳＤであるものとし、データベースデータが格納された各ファイルはホストＣＰＵ１０により圧縮されてストレージ装置１２に格納されているものとする。
【００２９】
通信装置１３は、例えばＮＩＣ（Network Interface Card）から構成され、第２のネットワーク８を介したマスタノードサーバ６やアプリケーションサーバ３との通信時におけるプロトコル制御を行うインタフェースとして機能する。
【００３０】
アクセラレータ１４は、ＦＰＧＡ（Field Programmable Gate Array）１６及びメモリ１７を備えて構成される。ＦＰＧＡ１６は、ホストＣＰＵ１０から与えられた処理コマンドに応じたフィルタ処理等を実行し、その処理結果をホストＣＰＵ１０に送信する。またメモリ１７は、例えばＤＲＡＭ（Dynamic Random Access Memory）から構成され、ＦＰＧＡ１６のワークメモリとして利用される。
【００３１】
図２は、ＦＰＧＡ１６の詳細構成を示す。この図２に示すように、ＦＰＧＡ１６は、Ｉ／Ｏ（Input/Output）処理回路２０、フィルタ処理回路２１及び集約処理回路２２がスイッチ２３を介して相互に接続されることにより構成される。
【００３２】
Ｉ／Ｏ処理回路２０は、アクセラレータ１４の起動時にＲＯＭ２４に格納されたＦＰＧＡファームウェア２５を読み出し、読み出したＦＰＧＡファームウェア２５に基づいて必要なＩ／Ｏ処理を実行する機能を有する入出力回路であり、その内部に伸張回路２６を備えて構成される。
【００３３】
実際上、Ｉ／Ｏ処理回路２０は、ホストＣＰＵ１０からＰＣＩｅスイッチ１５（図１）を介して送信されてきた上述の処理コマンドを解析し、要求されたフィルタ処理等の処理対象となるデータベースデータのファイルをストレージ装置１２（図１）から読み出してメモリ１７に格納したり、必要な処理を実行するようスイッチ２３を介してフィルタ処理回路２１や、フィルタ処理回路２１及び集約処理回路２２の双方に指示を与える。この際、Ｉ／Ｏ処理回路２０は、ストレージ装置１２からメモリ１７に読み出した圧縮されたデータベースデータを、伸張回路２６において伸張しながらスイッチ２３を介してフィルタ処理回路２１に送信する。またＩ／Ｏ処理回路２０は、フィルタ処理回路２１や集約処理回路２２により実行されたフィルタ処理や集約処理の処理結果を処理コマンドの実行結果としてホストＣＰＵ１０（図１）に送信する。
【００３４】
フィルタ処理回路２１は、Ｉ／Ｏ処理回路２０から与えられた伸張されたデータベースデータに対して、当該Ｉ／Ｏ処理回路２０から与えられた指示に応じたフィルタ処理を実行する機能を有する回路である。フィルタ処理は、ＳＱＬクエリで指定された条件式と対象となるデータベースデータを比較し、条件式に一致するものだけを抽出するという処理である。フィルタ処理回路２１は、かかる処理コマンドの内容がフィルタ処理だけの場合には、フィルタ処理の処理結果をスイッチ２３を介してメモリ１７に格納し、処理コマンドの内容がフィルタ処理及び集約処理の場合には、フィルタ処理の処理結果を集約処理回路２２に送信する。
【００３５】
また集約処理回路２２は、フィルタ処理回路２１から与えられたフィルタ処理で抽出されたデータに対して、平均値若しくは合計値を算出し、又は、最大値若しくは最小値を抽出するなどの要求された集約処理実行する機能を有する回路である。集約処理回路２２は、かかる集約処理の処理結果をスイッチ２３を介してメモリ１７に格納する。
【００３６】
図３は、主記憶装置１１におけるソフトウェア構成及びデータ構成を示す。主記憶装置１１には、ＯＳ（Operating System）３０が格納されており、当該ＯＳ３０上でＳＳＤドライバ３１及びＦＰＧＡドライバ３２が稼働する。ＳＳＤドライバ３１は、ストレージ装置１２（図１）を制御する機能を有するソフトウェアであり、ＦＰＧＡドライバ３２は、アクセラレータ１４（図１）のＦＰＧＡ１６（図２）を制御する機能を有するソフトウェアである。
【００３７】
またＯＳ３０は、その機能の一部としてファイルシステム３３を備える。ファイルシステム３３は、ストレージ装置１２に格納されたデータベースデータの各ファイルを管理する機能部であり、例えば、そのワーカノードサーバ７が保持する各ファイルのファイル名や、これらのファイルのデータがどのストレージ装置１２内のどの論理ブロックにそれぞれ格納されているか、及びそのファイルのデータが圧縮されているか否かといった情報を、図４について後述するファイル保存位置管理テーブル３８や、図５について後述する圧縮情報管理テーブル３９を用いて管理する。
【００３８】
なお「論理ブロック」とは、ストレージ装置１２が提供する記憶領域の管理単位を指す。ストレージ装置１２が提供する記憶領域は、所定大きさ（例えば4096バイト）の「論理ブロック」と呼ばれる小領域に区分され、これら「論理ブロック」にそれぞれＬＢＡ（Logical Brock Address）と呼ばれるその「論理ブロック」に固有のアドレスが付与されて管理される。
【００３９】
主記憶装置１１には、分散ファイルシステム３４、データベースエンジン３５、ＦＰＧＡライブラリ３６及びＬＢＡ取得部３７も格納される。分散ファイルシステム３４は、例えばHadoopにおけるＨＤＦＳ（Hadoop Distributed File System）として機能するソフトウェアであり、分散データベースシステム４（図１）においてどのデータベースデータ（ファイル）がどのワーカノードサーバ７に保持されているかの情報などを管理する。
【００４０】
またデータベースエンジン３５は、マスタノードサーバ６から与えられたタスク実行要求に応じて、自ワーカノードサーバ内のストレージ装置１２に格納されたデータベースデータに対する各種処理（検索、削除又は更新など）を実行する機能を有するソフトウェアである。この場合、データベースエンジン３５は、かかるタスク実行要求において要求されたタスクの処理内容がフィルタ処理等を含む場合には、ＦＰＧＡライブラリ３６にそのフィルタ処理等の実行を依頼する。またデータベースエンジン３５は、かかるタスク実行要求において指定されたタスクの実行結果をマスタノードサーバ６や他のワーカノードサーバ７に送信する。
【００４１】
ＦＰＧＡライブラリ３６は、データベースエンジン３５、ＦＰＧＡドライバ３２及びＬＢＡ取得部３７とそれぞれ通信を行うためのモジュールを備えて構成される。ＦＰＧＡライブラリ３６は、データベースエンジン３５からフィルタ処理等の実行が依頼されると、ＬＢＡ取得部３７を介してファイルシステム３３からそのフィルタ処理等の処理対象となるファイルが格納されているストレージ装置１２の識別子（デバイス番号）と、当該ストレージ装置１２内のそのファイルのデータが格納されている論理ブロックのＬＢＡとを取得し、取得したこれらの情報を付加した処理コマンドをＦＰＧＡドライバ３２を介してアクセラレータ１４（図１）のＦＰＧＡ１６（図１）に送信する。またＦＰＧＡライブラリ３６は、この後、ＦＰＧＡ１６からＦＰＧＡドライバ３２を介して与えられる当該処理コマンドに基づくフィルタ処理等の処理結果をデータベースエンジン３５に通知する。
【００４２】
ＬＢＡ取得部３７は、ＦＰＧＡライブラリ３６からの要求に応じて、要求されたファイルのデータが格納されているストレージ装置１２の識別子と、当該ストレージ装置１２内のそのファイルのデータが格納されている論理ブロックのＬＢＡとをファイルシステム３３に問い合わせる機能を有するソフトウェアである。ＬＢＡ取得部３７は、かかる問合せの結果得られたストレージ装置１２の識別子及びＬＢＡをＦＰＧＡライブラリ３６に通知する。
【００４３】
なお、ファイルシステム３３が管理する上述のファイル保存位置管理テーブル３８の構成例を図４に示す。ファイル保存位置管理テーブル３８は、そのワーカノードサーバ７のストレージ装置１２に格納されているデータベースデータの各ファイルの格納位置を管理するために利用されるテーブルであり、図４に示すように、ファイル名欄３８Ａ、デバイス番号欄３８Ｂ、ｉノード番号欄３８Ｃ及びＬＢＡリスト欄３８Ｄを備えて構成される。ファイル保存位置管理テーブル３８では、１つのレコード（行）が１つのファイルに対応する。
【００４４】
そしてファイル名欄３８Ａには、そのワーカノードサーバ７のストレージ装置１２に格納されているすべてのファイルのファイル名がそれぞれ格納される。またデバイス番号欄３８Ｂには、対応するファイルが格納されたストレージ装置１２の識別子（デバイス番号）が格納される。
【００４５】
さらにｉノード番号欄３８Ｃには、そのファイルを構成する各ｉノード（inode）にそれぞれ付与されたそれらのｉノードに固有の識別子（ｉノード番号）が格納され、ＬＢＡリスト欄３８Ｄには、対応するファイルの各ｉノードのデータがそれぞれ格納された各論理ブロックのＬＢＡが格納される。なお、１つのｉノードのデータが１つの論理ブロックに格納される（１つのｉノード番号が１つのＬＢＡに対応付けられる）。
【００４６】
またファイルシステム３３が管理する上述の圧縮情報管理テーブル３９の構成例を図５に示す。圧縮情報管理テーブル３９は、そのワーカノードサーバ７のストレージ装置１２の各論理ブロックに格納されたデータが圧縮されているか否かを管理するために利用されるテーブルであり、図５に示すように、ＬＢＡ欄３９Ａ、圧縮フラグ欄３９Ｂ、圧縮前データ長欄３９Ｃ及び圧縮後データ長欄３９Ｄを備えて構成される。圧縮情報管理テーブル３９では、１つのレコード（行）が１つの論理ブロックに対応する。
【００４７】
そしてＬＢＡ欄３９Ａには、論理ブロックのＬＢＡが格納され、圧縮フラグ欄３９Ｂには、対応する論理ブロックに格納されているデータベースデータが圧縮されているか否かを表すフラグ（以下、これを圧縮フラグと呼ぶ）が格納される。本実施の形態の場合、圧縮フラグは、対応するファイルのデータが圧縮されてストレージ装置１２に格納されている場合には「１」、当該データが圧縮されずにストレージ装置１２に格納されている場合には「０」に設定される。
【００４８】
また圧縮前データ長欄３９Ｃには、対応する論理ブロックに格納されたデータが圧縮されている場合に、当該データの圧縮前のデータ長が格納され、圧縮後データ長欄３９Ｄには、そのデータの圧縮後のデータ長が格納される。なお、対応する論理ブロックに格納されたデータが圧縮されていない場合、圧縮後データ長欄３９Ｄには、データが存在しないことを表す「Null」が格納される。
【００４９】
（１−２）ワーカノードサーバにおける処理の流れ
図６は、ワーカノードサーバ７において実行されるフィルタ処理等に関連する各処理の一連の流れを示す。
【００５０】
この図６に示すように、主記憶装置１１に格納されるデータベースデータの各ファイルのデータＤ１は、通信装置１３により第２のネットワーク８を介して所定のデータソースＤＳから取り込まれ、ＰＣＩｅスイッチ１５及びホストＣＰＵ１０を介して主記憶装置１１に格納される（Ｓ１）。そして、このデータＤ１は、この後、ホストＣＰＵ１０により圧縮処理された後に（Ｓ２）、圧縮データＤ２としてストレージ装置１２に格納される（Ｓ３）。
【００５１】
なお、ホストＣＰＵ１０は、圧縮データＤ２をストレージ装置１２に格納後、そのときデータＤ１を圧縮したデータベースデータのファイルごとに、そのファイル名と、圧縮データＤ２の格納先のストレージ装置１２のデバイス番号と、当該ストレージ装置１２における圧縮データＤ２の格納さきの各論理ブロックのＬＢＡとをそれぞれファイル保存位置管理テーブル３８に格納する。またホストＣＰＵ１０は、ストレージ装置１２におけるかかる圧縮データＤ２を格納した論理ブロックごとに、そのＬＢＡと、圧縮の有無を表す圧縮フラグと、その論理ブロックに格納したデータＤ１の圧縮前後のデータ長とを圧縮情報管理テーブル３９に格納する。
【００５２】
ホストＣＰＵ１０は、この後、マスタノードサーバ６からタスク実行要求が与えられ、そのタスク実行要求で指示された処理がフィルタ処理等である場合には、これに応じた処理コマンドをＰＣＩｅスイッチ１５を介してアクセラレータ１４のＦＰＧＡ１６に送信する（Ｓ４）。
【００５３】
ＦＰＧＡ１６は、かかる処理コマンドを受領すると、その処理コマンドに従ったフィルタ処理等の処理対象となるファイルの圧縮データＤ２をストレージ装置１２からアクセラレータ１４のメモリ１７に読み出す（Ｓ５）。
【００５４】
またＦＰＧＡ１６は、メモリ１７に読み出した圧縮データＤ２を伸張しながら処理コマンドにおいて指定されたフィルタ処理等を実行し、その処理結果のデータ（以下、これを処理結果データと呼ぶ）Ｄ３をメモリ１７に格納する（Ｓ６）。さらにＦＰＧＡ１６は、この後、処理結果データＤ３をメモリ１７から読み出してホストＣＰＵ１０に送信する（Ｓ７）。
【００５５】
かくして、ホストＣＰＵ１０は、このようにして得られた処理結果データＤ３をタスク実行要求の処理結果としてマスタノードサーバ６に送信する。
【００５６】
図７は、上述した図６のステップＳ４〜ステップＳ７のより詳しい処理の流れを示す。この図７では、マスタノードサーバ６からワーカノードサーバ７に与えられたタスク実行要求において要求されたタスクの内容がフィルタ処理及び集約処理であるものとしている。
【００５７】
そしてワーカノードサーバ７のホストＣＰＵ１０は、かかるタスク実行要求がマスタノードサーバ６から与えられると、そのタスク実行要求において要求されたフィルタ処理及び集約処理に応じた処理コマンド４０（図８）を生成する（Ｓ１０）。
【００５８】
図８に示すように、この処理コマンド４０は、コマンドフィールド４０Ａ、圧縮フラグフィールド４０Ｂ、デバイス番号フィールド４０Ｃ、ＬＢＡリストフィールド４０Ｄ、圧縮後データ長フィールド４０Ｅ及び圧縮前データ長フィールド４０Ｆを備えたコマンドフォーマットを有する。
【００５９】
そしてコマンドフィールド４０Ａには、タスク実行要求において要求されたフィルタ処理等の具体的な内容（処理対象のファイルのファイル名を含む）が格納される。また圧縮フラグフィールド４０Ｂには、かかるフィルタ処理等の処理対象のファイルのデータ（データベースデータ）が圧縮されてストレージ装置に格納されているか否かを表す圧縮フラグが格納される。圧縮フラグは、処理対象となるファイルのデータが圧縮されてストレージ装置１２に格納されている場合には「１」に設定され、当該ファイルのデータが圧縮されずにストレージ装置１２に格納されている場合には「０」に設定される。
【００６０】
デバイス番号フィールド４０Ｃには、かかるフィルタ処理等の処理対象となるファイルのデータが格納されているストレージ装置１２の識別子であるデバイス番号が格納され、ＬＢＡリストフィールド４０Ｄには、そのストレージ装置１２におけるそのファイルのデータが格納されているすべての論理ブロックのＬＢＡが格納される。また圧縮後データ長フィールド４０Ｅには、そのファイルのデータが圧縮されている場合の圧縮後の総データ長（圧縮後データ長）が格納され、圧縮前データ長フィールド４０Ｆには、そのファイルのデータの圧縮前の総データ長（圧縮前データ長）が格納される。
【００６１】
ホストＣＰＵ１０は、以上のような処理コマンド４０のうち、デバイス番号及びＬＢＡリストについては、タスク実行要求において指定された処理対象のファイルのファイル名をキーとしてファイル保存位置管理テーブル３８を検索することにより取得して処理コマンド４０のデバイス番号フィールド４０ＣやＬＢＡリストフィールド４０Ｄに格納する。またホストＣＰＵ１０は、圧縮フラグについては、ファイル保存位置管理テーブル３８から取得したＬＢＡリストに登録された各ＬＢＡに格納されているデータが圧縮されているか否かを圧縮情報管理テーブル３９の対応する圧縮フラグ欄３９Ｂに格納された圧縮フラグを参照して判定し、その判定結果に応じた値（「１」又は「０」）の圧縮フラグを処理コマンド４０の圧縮フラグフィールド４０Ｂに格納する。
【００６２】
さらにホストＣＰＵ１０は、圧縮前データ長については、圧縮情報管理テーブル３９（図５）における処理対象となるファイルのデータが格納された各論理ブロックに対応する各圧縮前データ長欄３９Ｃにそれぞれ格納されたデータ長の総和として算出し、算出結果を処理コマンド４０の圧縮前データ長フィールド４０Ｆに格納する。同様に、ホストＣＰＵ１０は、圧縮後データ長については、圧縮情報管理テーブル３９（図５）における処理対象となるファイルのデータが格納された各論理ブロックに対応する各圧縮後データ長欄３９Ｄにそれぞれ格納されたデータ長の総和として算出して、算出結果を処理コマンド４０の圧縮後データ長フィールド４０Ｅに格納する。
【００６３】
なお圧縮後データ長は、アクセラレータ１４のＩ／Ｏ処理回路２０がストレージ装置１２から読み出した処理対象のファイルのデータを格納するために必要な容量の記憶領域をメモリ１７上に確保するためや、伸張回路２６が処理対象のデータをメモリ１７からＦＰＧＡ１６内に設けられた図示しないメモリ（以下、これをＦＰＧＡ内メモリと呼ぶ）に読み込むための記憶領域を当該ＦＰＧＡ内メモリ上に確保するために利用される。また、圧縮前データ長は、伸張回路２６がＦＰＧＡ内メモリに読み込んだデータを伸張した後に、伸張後のデータを格納するための記憶領域を当該ＦＰＧＡ内メモリ上に確保するために利用される。なお、かかるＦＰＧＡ内メモリはスイッチ２３に接続されており、伸張回路２６やフィルタ処理回路２１及び集約処理回路２２による当該ＦＰＧＡ内メモリへのデータの読み書きは、スイッチ２３を介して行われる。また、ＦＰＧＡ内メモリは、関係する２つの回路に直結されている場合もある。
【００６４】
図７に戻って、ホストＣＰＵ１０は、ステップＳ１０で上述のようにして処理コマンド４０を生成すると、生成した処理コマンド４０を主記憶装置１１に格納すると共に（Ｓ１１）、かかる処理コマンド４０を主記憶装置１１に格納した旨の通知（以下、これを処理コマンド格納通知と呼ぶ）をアクセラレータ１４のＦＰＧＡ１６（図２）のＩ／Ｏ処理回路２０に送信する（Ｓ１２）。
【００６５】
Ｉ／Ｏ処理回路２０は、かかる処理コマンド格納通知が与えられると、上述の処理コマンド４０を主記憶装置１１から読み出し（Ｓ１３）、読み出した処理コマンド４０のコマンドフィールド４０Ａに格納されたコマンドの内容を解析する（Ｓ１４）。この際、Ｉ／Ｏ処理回路２０は、処理コマンド４０で指示されたフィルタ処理及び集約処理の対象となるファイルのファイル名を特定し、ファイル保存位置管理テーブル３８（図４）におけるそのファイルのファイル名がファイル名欄３８Ａ（図４）に格納されたレコード（行）のＬＢＡリスト欄３８Ｄ（図４）から、そのファイルのデータが格納された各論理ブロックのＬＢＡを取得する。
【００６６】
続いて、Ｉ／Ｏ処理回路２０は、ステップＳ１４でＬＢＡを取得した、処理対象のファイルのデータが格納された論理ブロックごとのデータリードコマンドを順次生成し、生成したデータリードコマンドを処理コマンド４０のデバイス番号フィールド４０Ｃ（図８）に格納されたデバイス番号が付与されたストレージ装置１２に順次送信する（Ｓ１５）。この際、Ｉ／Ｏ処理回路２０は、生成したデータリードコマンドをストレージ装置１２に送信する前に、圧縮情報管理テーブル３９（図５）におけるそのデータリードコマンドに対応する論理ブロックのＬＢＡがＬＢＡ欄３９Ａに格納されたレコード（行）の圧縮前データ長欄３９Ｃ（図５）を参照して、その圧縮前データ長欄３９Ｃに格納されたデータ長と同じ容量の記憶領域をメモリ１７上に確保し、その記憶領域のアドレスをデータリードコマンドに格納する。
【００６７】
ストレージ装置１２は、データリードコマンドが送信されてくるごとに、そのデータリードコマンドにおいて指定された論理ブロックからデータを読み出し、読み出したデータを、アクセラレータ１４のメモリ１７におけるそのデータリードコマンドにおいて指定された記憶領域に書き込む（Ｓ１６）。この際、ストレージ装置１２は、１つの論理ブロックに格納されたデータをアクセラレータ１４のメモリ１７に書き込むごとに、リード完了通知をＩ／Ｏ処理回路２０に送信する（Ｓ１７）。
【００６８】
そしてＩ／Ｏ処理回路２０は、処理対象となるファイルのデータがすべてストレージ装置１２からメモリ１７に転送されると、そのデータを伸張するよう伸張回路２６に指示（以下、これを伸張指示と呼ぶ）を与える（Ｓ１８）。またＩ／Ｏ処理回路２０は、これと併せて、伸張回路２６が伸張処理に必要な容量の記憶領域を上述のＦＰＧＡ内メモリ上に確保できるようにするため、処理対象となるファイルの圧縮前後の各データ長を圧縮情報として伸張回路２６に通知する（Ｓ１９）。
【００６９】
さらにＩ／Ｏ処理回路２０は、ホストＣＰＵ１０からの処理コマンド４０において指定されたフィルタ処理及び集約処理を実行すべき旨の指示（以下、これを処理実行指示と呼ぶ）をフィルタ処理回路２１及び集約処理回路２２に送信する（Ｓ２０）。
【００７０】
かくして、ステップＳ１８の伸張指示が与えられた伸張回路２６は、メモリ１７に転送された処理対象とするファイルのデータを所定単位で上述のＦＰＧＡ内メモリに順次取り込み（Ｓ２１）、取り込んだデータを伸張処理した後に当該ＦＰＧＡ内メモリを経由してフィルタ処理回路２１に引き渡す（Ｓ２２）。
【００７１】
またフィルタ処理回路２１は、伸張回路２６から引き渡されたデータ（処理対象とするファイルの伸張されたデータ）に対して、Ｉ／Ｏ処理回路２０から指示されたフィルタ処理を実行し、処理結果をスイッチ２３（図２）を介して集約処理回路２２に送信する（Ｓ２３）。
【００７２】
さらに集約処理回路２２は、フィルタ処理回路２１から与えられたフィルタ処理されたデータ（データベースデータ）に対して、Ｉ／Ｏ処理回路２０から指示された集約処理を実行し（Ｓ２４）、その処理結果をメモリ１７に格納する（Ｓ２５）。また集約処理回路２２は、かかる集約処理が完了すると、Ｉ／Ｏ処理回路２０に処理完了通知を送信する（Ｓ２６）。
【００７３】
Ｉ／Ｏ処理回路２０は、かかる処理完了通知を受領すると、メモリ１７に格納されている集約処理の処理結果を読み出し、これをＰＣＩｅスイッチ１５（図１）を介して主記憶装置１１に転送すると共に（Ｓ２７）、ホストＣＰＵ１０に処理完了通知を送信する（Ｓ２８）。
【００７４】
かくして、かかる処理完了通知を受領したホストＣＰＵ１０は、この後、主記憶装置１１に格納された集約処理の処理結果を読み出し、これをマスタノードサーバ６に送信する。
【００７５】
ここで、図７について上述した一連の処理のステップＳ１０においてホストＣＰＵ１０により実行される処理コマンド４０の生成処理の具体的な処理内容を、図３について上述した各ソフトウェア間の処理の流れとして図９を用いて説明する。
【００７６】
なお、以下においては、各処理の処理主体を「ソフトウェア」として説明するが、実際上は、その「ソフトウェア」に基づいてホストＣＰＵ１０がその処理を実行することは言うまでもない。また、データベースエンジン３５、ＦＰＧＡライブラリ３６、ＬＢＡ取得部３７及びファイルシステム３３間のコマンドやデータの受け渡しは主記憶装置１１を介して行われるが、以下においては、主記憶装置１１の存在を省略して説明する。
【００７７】
マスタノードサーバ６からフィルタ処理及び集約処理をタスクとして含むタスク実行要求がワーカノードサーバ７に与えられると、この図９に示す一連の処理が開始され、まず、データベースエンジン３５がそのフィルタ処理及び集約処理の実行をＦＰＧＡライブラリ３６に依頼する（Ｓ３０）。またデータベースエンジン３５は、さらに、かかるタスク実行要求において指示されたフィルタ処理及び集約処理の具体的な内容（処理対象となるファイルのファイル名を含む）をＦＰＧＡライブラリ３６に通知する（Ｓ３１）。
【００７８】
ＦＰＧＡライブラリ３６は、かかる処理内容がデータベースエンジン３５から通知されると、処理対象となるファイルのファイル名をＬＢＡ取得部３７に通知する（Ｓ３２）。またＬＢＡ取得部３７は、かかるファイル名が通知されると、当該ファイル名をファイルシステム３３に通知する（Ｓ３３）。
【００７９】
そしてファイルシステム３３は、かかるファイル名が通知されると、ファイル保存位置管理テーブル３８（図４）を参照して、そのファイル名のファイルのデータが格納されているストレージ装置１２の識別子（デバイス番号）と、そのストレージ装置１２におけるそのファイルのデータが格納されている論理ブロックのブロック数とを取得する。具体的に、ファイルシステム３３は、ファイル保存位置管理テーブル３８（図４）においてそのファイル名がファイル名欄３８Ａ（図４）に格納されたレコード（行）のデバイス番号欄３８Ｂ（図４）に格納されているデバイス番号を取得すると共に、当該レコードのＬＢＡリスト欄３８Ｄに格納されているＬＢＡの数をカウントすることにより、かかるブロック数を取得する。そしてファイルシステム３３は、このようにして取得したデバイス番号及びブロック数をＬＢＡ取得部３７に通知する（Ｓ３４）。
【００８０】
さらにファイルシステム３３は、ファイル保存位置管理テーブル３８（図４）及び圧縮情報管理テーブル３９を参照して、図１０に示すようなＬＢＡリスト４１を生成してＬＢＡ取得部３７に通知する（Ｓ３５）。
【００８１】
具体的に、ファイルシステム３３は、ファイル保存位置管理テーブル３８におけるステップＳ３３でＦＰＧＡライブラリ３６から通知されたファイル名に対応するレコード（行）のＬＢＡリスト欄３８Ｄに格納されているＬＢＡをすべて読み出す。またファイルシステム３３は、読み出したＬＢＡごとに、圧縮情報管理テーブル３９におけるそのＬＢＡがＬＢＡ欄３９Ａ（図５）に格納されているレコードの圧縮前データ長欄３９Ｃに格納されているデータ長を読み出し、これらＬＢＡとこれらデータ長とをそれぞれ対応付けた図１０のＬＢＡリスト４１を生成する。そしてファイルシステム３３は、このようにして生成したＬＢＡリスト４１をＬＢＡ取得部３７に通知する。
【００８２】
そして、かかるＬＢＡリスト４１を受領したＬＢＡ取得部３７は、このＬＢＡリスト４１をＦＰＧＡライブラリ３６に通知する（Ｓ３６）。
【００８３】
またＦＰＧＡライブラリ３６は、かかるＬＢＡリスト４１を受領すると、このＬＢＡリスト４１と、ファイル保存位置管理テーブル３８（図４）及び圧縮情報管理テーブル３９（図５）とに基づいて図８について上述した処理コマンド４０を上述のように生成する（Ｓ３７）。以上により、図７のステップＳ１０の処理が終了する。
【００８４】
（１−３）本実施の形態の効果
以上のように本実施の形態では、ワーカノードサーバ７において、ストレージ装置１２に格納された圧縮されたデータを圧縮されたままの状態でアクセラレータ１４に転送し、アクセラレータ１４においてそのデータを伸張しながら当該データに対するフィルタ処理等を実行する。
【００８５】
従って、本実施の形態によれば、ストレージ装置１２及びアクセラレータ１４間においてデータを圧縮して転送するため、当該データを圧縮せずに転送する場合と比べて転送データ量も少なく、その分、ストレージ装置１２及びアクセラレータ１４間のネットワーク帯域がボトルネックとなって処理が遅くなる可能性を低減できる。また本実施の形態によれば、アクセラレータ１４内においてデータを伸張しながらメモリ１７を介在させることなくフィルタ処理回路２１や集約処理回路２２においてフィルタ処理や集約処理を実行するため、伸張されたデータをメモリ１７に保存しておく必要がなく、その分、アクセラレータ１４内のメモリ容量やメモリチャネルの帯域がボトルネックとなって処理が遅くなる事態の発生を有効に回避することができる。よって、本実施の形態によれば、処理性能の高いワーカノードサーバ７を実現できる。
【００８６】
（２）第２の実施の形態
図１との対応部分に同一符号を付した図１１は、第１の実施の形態のワーカノードサーバ７に代えて、図１の情報処理システム１に適用される第２の実施の形態によるワーカノードサーバ５０を示す。
【００８７】
このワーカノードサーバ５０は、データソースＤＳから取り込んだデータベースデータの各ファイルのデータＤ１をストレージ装置５１において圧縮処理する点と、その結果として、圧縮情報管理テーブル３９が主記憶装置１１ではなくストレージ装置５１に格納されている点とを除いて第１の実施の形態によるワーカノードサーバ７と同様に構成されている。
【００８８】
実際上、本実施の形態のワーカノードサーバ５０では、図１１に示すように、データベースデータが格納された各ファイルのデータＤ１を、通信装置１３により第２のネットワーク８を介して所定のデータソースＤＳから取り込み、これをＰＣＩｅスイッチ１５を介してストレージ装置５１に格納する（Ｓ４０）。
【００８９】
ストレージ装置５１は、記憶領域を提供する記憶装置（本実施の形態においては、上述のようにＳＳＤ）と、記憶装置に対するデータの読書きを制御するコントローラ５２を備える。このコントローラ５２は、ＣＰＵ及びメモリ等の情報処理資源を備えるマイクロコンピュータとして構成される。そして、コントローラ５２は、通信装置１３から各ファイルのデータＤ１が書き込まれると、そのデータＤ１を圧縮処理し、かくして得られた圧縮データＤ２をストレージ装置５１内のＳＳＤに書き込む（Ｓ４１）。
【００９０】
この際、コントローラ５２は、そのデータＤ１を書き込んだ記憶装置上の論理ブロックのＬＢＡや、圧縮の有無及びそのデータの圧縮前後のデータ長といった情報を圧縮情報管理テーブル３９（図１）に書き込む。またコントローラ５２は、データＤ１を書き込んだ記憶装置上の各論理ブロックのＬＢＡやストレージ装置５１のデバイス番号をＰＣＩｅスイッチ１５を介してホストＣＰＵ１０に通知する。
【００９１】
一方、ホストＣＰＵ１０は、この後、マスタノードサーバ６からタスク実行要求が与えられ、そのタスク実行要求で指示された処理がフィルタ処理等である場合には、これに応じた処理コマンドをＰＣＩｅスイッチ１５を介してアクセラレータ１４のＦＰＧＡ１６に送信する（Ｓ４２）。
【００９２】
ＦＰＧＡ１６は、かかる処理コマンド４０を受領すると、その処理コマンドに従ったフィルタ処理等の処理対象となるファイルの圧縮データＤ２をストレージ装置５１からアクセラレータ１４のメモリ１７に読み出す（Ｓ４３）。
【００９３】
またＦＰＧＡ１６は、メモリ１７に読み出した圧縮データＤ２を伸張しながら処理コマンドにおいて指定されたフィルタ処理等を実行し、かくして得られた処理結果データＤ３をメモリ１７に格納する（Ｓ４４）。さらにＦＰＧＡ１６は、この後、処理結果データＤ３をメモリ１７から読み出してホストＣＰＵ１０に送信する（Ｓ４５）。
【００９４】
かくして、ホストＣＰＵ１０は、このようにして得られた処理結果データＤ３をタスク実行要求の処理結果としてマスタノードサーバ６に送信する。
【００９５】
図１２は、上述した図１１のステップＳ４２〜ステップＳ４５のより詳しい処理の流れを示す。この図１２では、マスタノードサーバ６からワーカノードサーバ５０に与えられたタスク実行要求において指示されたタスクの内容がフィルタ処理及び集約処理であるものとしている。
【００９６】
そしてワーカノードサーバ５０のホストＣＰＵ１０は、かかるタスク実行要求がマスタノードサーバ６から与えられると、そのタスク実行要求において指示されたフィルタ処理及び集約処理に応じた処理コマンド６０（図１３）を生成する（Ｓ５０）。
【００９７】
図１３に示すように、この処理コマンド６０は、コマンドフィールド６０Ａ、デバイス番号フィールド６０Ｂ、ＬＢＡリストフィールド６０Ｃ及びデータ長フィールド６０Ｄを備えたコマンドフォーマットを有する。
【００９８】
そしてコマンドフィールド６０Ａには、タスク実行要求において指示されたフィルタ処理等の具体的な内容が格納され、デバイス番号フィールド６０Ｂには、かかるフィルタ処理等の処理対象となるファイルのデータが格納されているストレージ装置５１の識別子であるデバイス番号が格納される。
【００９９】
またＬＢＡリストフィールド６０Ｃには、そのストレージ装置５１におけるそのファイルのデータが格納されているすべての論理ブロックのＬＢＡが格納され、データ長フィールド６０Ｄには、そのファイルの圧縮前のデータのデータ長が格納される。
【０１００】
ホストＣＰＵ１０は、以上のような処理コマンド６０のうち、デバイス番号及びＬＢＡリストについては、タスク実行要求において指定された処理対象のファイルのファイル名をキーとしてファイル保存位置管理テーブル３８（図４）を検索することにより取得して処理コマンド６０のデバイス番号フィールド６０ＢやＬＢＡリストフィールド６０Ｃに格納する。またホストＣＰＵ１０は、データ長については、かかるＬＢＡリストに登録されているＬＢＡの数（論理ブロックの数）に１つの論理ブロックのブロック長（4096バイト）を乗算した乗算結果をデータ長フィールド６０Ｄに格納する。
【０１０１】
なお、この処理コマンド６０と、第１の実施の形態の処理コマンド４０（図８）との違いは、本実施の形態の処理コマンド６０が圧縮フラグと、処理対象とするファイルの圧縮前後のデータ長の情報（圧縮前データ長及び圧縮後データ長）とを含まない点にある。
【０１０２】
これは、本実施の形態の場合、上述のようにストレージ装置５１において各ファイルのデータを圧縮処理しており、これに伴って圧縮情報管理テーブル３９もストレージ装置５１に格納され、主記憶装置１１には格納されていないため、ホストＣＰＵ１０が各ファイルのデータの圧縮に関する情報を保持していないことによる。
【０１０３】
この後、本実施の形態のワーカノードサーバ５０では、ステップＳ５１〜ステップＳ５５において、図７のステップＳ１１〜ステップＳ１５と同様の処理が実行される。
【０１０４】
そしてストレージ装置５１のコントローラ５２は、ステップＳ５５においてＩ／Ｏ処理回路２０から処理対象とするファイルの圧縮データ（圧縮データベースデータ）が格納された論理ブロックごとのデータリードコマンドが与えられるごとに、それぞれ図１４に示すような圧縮情報６１をＩ／Ｏ処理回路２０に通知する（Ｓ５６）。
【０１０５】
この圧縮情報６１は、そのストレージ装置５１のデバイス番号（「デバイス番号６１Ａ」）と、対応するデータリターンコマンドで指定された論理ブロックのＬＢＡ（「ＬＢＡ６１Ｂ」）と、そのＬＢＡの論理ブロックに格納されたデータベースデータの圧縮後のデータ長（「圧縮後データ長６１Ｃ」）と、当該データベースデータの圧縮前のデータ長（「圧縮前データ長６１Ｄ」）との各情報から構成されるものである。
【０１０６】
かくして、Ｉ／Ｏ処理回路２０は、ストレージ装置５１から圧縮情報６１が送られてくると、その圧縮情報６１に基づいて、必要な容量の記憶領域をメモリ１７上に確保し、その記憶領域にデータを書き込むようストレージ装置５１に指示を与える。
【０１０７】
そして、ストレージ装置５１は、この指示が与えられると、そのデータリードコマンドにおいて指定された論理ブロックに格納されているデータをアクセラレータ１４のメモリ１７における、上述のようにして指示された記憶領域に書込み（Ｓ５７）、その後、リード完了通知をＩ／Ｏ処理回路２０に送信する（Ｓ５８）。
【０１０８】
そして本実施の形態のワーカノードサーバ５０では、この後、ステップＳ５９〜ステップＳ６９が、図７のステップＳ１８〜ステップＳ２８と同様に実行される。
【０１０９】
以上のように本実施の形態のワーカノードサーバ５０では、データベースデータをストレージ装置５１において圧縮し、圧縮したデータを圧縮した状態のままアクセラレータ１４に転送するため、第１の実施の形態と同様の効果を得ることができる。加えて、本実施の形態では、データソースＤＳから取得したデータベースデータの圧縮処理をストレージ装置５１で行うため、かかる圧縮処理に関する負荷からホストＣＰＵ１０を開放することができ、その分、ホストＣＰＵ１０の処理能力を他の処理に振り分けることができる。かくするにつき、本実施の形態によれば、より第１の実施の形態よりもさらに処理能力の高いワーカノードサーバ５０を実現することができる。
【０１１０】
（３）他の実施の形態
なお上述の第１及び第２の実施の形態においては、本発明を分散データベースシステム４のワーカノードサーバ７に適用するようにした場合について述べたが、本発明はこれに限らず、アクセラレータが実装されたこの他種々の情報処理装置に広く適用することができる。この場合、アクセラレータにおいて実行される処理は、フィルタ処理や集約処理以外の処理であってもよい。
【０１１１】
また上述の第１及び第２の実施の形態においては、伸張回路２６をＩ／Ｏ処理回路２０の一部として構成するようにした場合について述べたが、本発明はこれに限らず、伸張回路２６及びＩ／Ｏ処理回路２０を物理的に別個に構成するようにしてもよい。
【０１１２】
さらに上述の第１及び第２の実施の形態においては、外部から要求されたタスクに含まれるフィルタ処理等の実行をアクセラレータ１４に要求するホスト制御部の機能をホストＣＰＵ１０に搭載するようにした場合について述べたが、本発明はこれに限らず、かかるホスト制御部としての機能を有する回路をホストＣＰＵ１０とは物理的に別個に設けるようにしてもよい。
【産業上の利用可能性】
【０１１３】
本発明はデータに対する所定処理を実行するアクセラレータが搭載された種々の構成の情報処理装置に広く適用することができる。
【符号の説明】
【０１１４】
１……情報処理システム、２……クライアント、３……アプリケーションサーバ、４……分散データベースシステム、６……マスタノードサーバ、７，５０……ワーカノードサーバ、１０……ホストＣＰＵ、１１……主記憶装置、１２，５１……ストレージ装置、１４……アクセラレータ、１６……ＦＰＧＡ、１７……メモリ、２０……Ｉ／Ｏ処理回路、２１……フィルタ処理回路、２２……集約処理回路、２６……伸張回路、３８……ファイル保存位置管理テーブル、３９……圧縮情報管理テーブル、４０，６０……処理コマンド、５２……コントローラ。
【図１】
2018179243.tif 000003
【図２】
2018179243.tif 000004
【図３】
2018179243.tif 000005
【図４】
2018179243.tif 000006
【図５】
2018179243.tif 000007
【図６】
2018179243.tif 000008
【図７】
2018179243.tif 000009
【図８】
2018179243.tif 000010
【図９】
2018179243.tif 000011
【図１０】
2018179243.tif 000012
【図１１】
2018179243.tif 000013
【図１２】
2018179243.tif 000014
【図１３】
2018179243.tif 000015
【図１４】
2018179243.tif 000016
【国際調査報告】
2018179243.tif 000017
2018179243.tif 000018
2018179243.tif 000019
2018179243.tif 000020