(57)【要約】【課題】記憶装置に対する処理の高速化を実現することを課題とする。【解決手段】データ管理装置１０は、ＨＤＤ１４からデータを取り出す命令である取り出し命令に基づいて、該データの取り出しに要する一連の処理を独立して実行可能な処理に分割する。そして、データ管理装置１０は、処理能力が異なるＣＰＵ１１、ＧＰＵ１２それぞれの処理能力と、ＣＰＵ１１およびＧＰＵ１２の処理状況とに応じて、分割部によって分割された各処理をＣＰＵ１１、ＧＰＵ１２のうちのいずれかのプロセッサに割り当てる。【選択図】        図１
2014056425.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割部と、
処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割部によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当部と、
を備えることを特徴とするデータ管理装置。
【請求項２】
前記割当部は、前記複数のプロセッサのうちの所定のプロセッサの処理が完了した場合に、該所定のプロセッサが、他のプロセッサが先行して開始している処理と同一の処理を重複して実行することで短縮できると予想される短縮時間と、前記所定のプロセッサが、後に実行する処理を行うために必要なデータを先読みした場合に要する先読み時間とを比較し、前記短縮時間の方が前記先読み時間よりも長い場合には、前記他のプロセッサが先行して開始している処理を重複して前記所定のプロセッサに割り当て、前記先読み時間の方が前記短縮時間よりも長い場合には、後に実行する処理を行うために必要なデータの先読みを前記所定のプロセッサに実行させることを特徴とする請求項１に記載のデータ管理装置。
【請求項３】
前記割当部は、前記他のプロセッサが先行して開始している処理を重複して後続のプロセッサに割り当てた場合に、前記後続のプロセッサまたは前記他のプロセッサのいずれか一方のプロセッサが処理を完了した場合には、他方のプロセッサの処理を中止させ、両プロセッサに対して次の処理を割り当てることを特徴とする請求項２に記載のデータ管理装置。
【請求項４】
前記分割部は、前記データの取り出しに要する一連の処理のうち、並列処理が可能な部分と、前段の処理の待ち合わせを行い一つの流れで処理の実行を行う部分との間で処理の分割を行うことを特徴とする請求項１〜３のいずれか一つに記載のデータ管理装置。
【請求項５】
記憶装置と、該記憶装置からデータを取り出すデータ管理装置とを備えたデータ管理システムであって、
前記データ管理装置は、
前記記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割部と、
処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割部によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当部と、
を備えることを特徴とするデータ管理システム。
【請求項６】
データ管理装置で実行される処理割当方法であって、
記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割工程と、
処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割工程によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当工程と、
を含んだことを特徴とする処理割当方法。
【請求項７】
記憶装置からデータを取り出すための取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割ステップと、
処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割ステップによって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当ステップと、
をコンピュータに実行させるための処理割当プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ管理装置、データ管理システム、処理割当方法および処理割当プログラムに関する。
【背景技術】
【０００２】
データ管理の高速化として、処理の並列化やパイプライン等の分散処理で実現する方法は従来から広く普及しているが、近年のグラフィックプロセッサを用いた汎用計算（General-purpose  computing  on  graphics  processing  units）による高速化技術に対して従来の分散処理技術をそのまま適用することは、ＣＰＵとＧＰＵの性質、性能の違いから難しい。
【０００３】
従来のリレーショナルデータベース（ＲＤＢ：Relational  Database）については、実行前に立案する実行計画においてＣＰＵとＧＰＵのいずれに分割された処理を割当てるかを静的に定義する方法の検討が進められている。
【０００４】
一方、従来のＲＤＢと比較して事前に詳細なデータ構造設計の必要がない等の利点から、保存データのスキーマを定義せず、様々なデータをまとめて保存することが可能なグラフデータベースの需要が高まっている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】“Parallel  Database  Systems  :  The  Future  of  High  Performance  Database  Systems.  Commun.”、David  J.  DeWitt、  Jim  Gray著、ACM  35（6）:  85-98（1992）
【非特許文献２】“投機的実行を用いたデータベース処理：マルチトランザクション環境下での高速化”、佐々木  敬泰著、IPSJ  SIG  Notes  97(76)、127-132、1997-08-21
【非特許文献３】“Relational  Query  Co-Processing  on  Graphics  Processors”、Bingsheng  He、Mian  Lu、Ke  Yang、Rui  Fang、Naga  K．Govindaraju、Qiong  Luo、and  Pedro  V．Sander、TODS  Dec  2009
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、グラフデータベースを用いた場合には、データベースに対する処理の高速化を実現できない場合があるという問題があった。具体的には、グラフデータベースでは、その構造上の理由からＲＤＢと比較して処理に要するコストの見積が難しく、実行前に立案する静的な実行計画の精度が低いため、実行計画と実処理との乖離が生じ易く、特に処理の分散化が行われた際の待ち合わせまでのアイドル時間増大などの問題が発生し易くなるという問題点があった。
【０００７】
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、プロセッサの使用状況に応じて動的に処理を割り当てることで、記憶装置に対する処理の高速化を実現することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、データ管理装置は、記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割部と、処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割部によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当部と、を備えることを特徴とする。
【０００９】
また、データ管理システムは、記憶装置と、該記憶装置からデータを取り出すデータ管理装置とを備えたデータ管理システムであって、前記データ管理装置は、前記記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割部と、処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割部によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当部と、を備えることを特徴とする。
【００１０】
また、処理割当方法は、データ管理装置で実行される処理割当方法であって、記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割工程と、処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割工程によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当工程と、を含んだことを特徴とする。
【００１１】
また、処理割当プログラムは、記憶装置からデータを取り出すための取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割ステップと、処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割ステップによって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当ステップと、をコンピュータに実行させるための処理割当プログラムである。
【発明の効果】
【００１２】
本願に開示するデータ管理装置、データ管理システム、処理割当方法および処理割当プログラムは、プロセッサの使用状況に応じて動的に処理を割り当てることで、記憶装置に対する処理の高速化を実現することが可能である。
【図面の簡単な説明】
【００１３】
【図１】図１は、第一の実施の形態に係るデータ管理装置の構成を説明するための図である。
【図２】図２は、ＣＰＵ上で動作するプログラムの機能構成を示すブロック図である。
【図３】図３は、取り出し命令の一例を示す図である。
【図４】図４は、取り出し命令の処理フローを示す図である。
【図５】図５は、変数表の一例を示す図である。
【図６】図６は、重複処理のタイムラインを示す図である。
【図７】図７は、重複処理が完了し、キャンセルした場合におけるタイムラインを示す図である。
【図８】図８は、先読み処理のタイムラインを示す図である。
【図９】図９は、第一の実施の形態に係るデータ管理装置の処理動作を示すフローチャートである。
【図１０】図１０は、第一の実施の形態に係るデータ管理装置の判定処理の動作を示すフローチャートである。
【図１１】図１１は、動的な処理の割当による効果を説明する図である。
【図１２】図１２は、投機的な重複処理による効果を説明する図である。
【図１３】図１３は、データの先読み処理による効果を説明する図である。
【図１４】図１４は、処理割当プログラムを実行するコンピュータを示す図である。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、この発明に係るデータ管理装置、データ管理システム、処理割当方法および処理割当プログラムの実施形態を詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
【００１５】
［第一の実施の形態］
以下の実施の形態では、第一の実施の形態に係るデータ管理装置の構成、およびデータ管理装置による処理の流れを順に説明し、最後に第一の実施の形態による効果を説明する。
【００１６】
［データ管理装置の構成］
まず、図１を用いて、データ管理システム１００に含まれるデータ管理装置１０の構成を説明する。図１は、第一の実施の形態に係るデータ管理装置の構成を説明するための図である。図１に示すように、データ管理システム１００は、データ管理装置１０と情報処理装置２０とがネットワーク３０を介して接続されている。
【００１７】
データ管理１０は、ＣＰＵ（Central  Processing  Unit）１１、ＧＰＵ（Graphics  Processing  Unit）１２、メモリ１３およびＨＤＤ（Hard  Disk  Drive）１４を有する。データ管理装置１０は、例えば、グラフデータベース（ＨＤＤ１４に相当）に記憶されたデータを管理する装置であり、保存するデータのスキーマを定義せずに様々なデータをまとめて保存する。このデータ管理装置１０は、ＨＤＤ１４からデータを読み出すために必要な処理を、処理能力が異なるＣＰＵ１１またはＧＰＵ１２に動的に割り当てて、ＨＤＤ１４からデータを読み出す。
【００１８】
具体的には、ＣＰＵ１１が、ＨＤＤ１４からデータを読み出すために必要な処理を分割し、分割した各処理を自ＣＰＵ１１またはＧＰＵ１２に割り当てる。なお、ＣＰＵ１１による詳しい処理は、後に図２等を用いて詳述する。
【００１９】
ＧＰＵ１２は、一般的に動画のエンコードやデコードに使用されるプロセッサであるが、汎用計算を高速に行うことができる。つまり、ＧＰＵ１２は、ＣＰＵ１１のコアに相当する簡素な設計の演算ユニットを大量に並べるという設計のため、ＣＰＵ１１に比べて大量データを単純計算で一度に処理することができる。なお、ＧＰＵ１２は、コア数よりも個々のコアの性能が重要となる処理については、ＣＰＵ１１に比べて苦手とする。
【００２０】
メモリ１３は、各種処理に必要なデータやプログラム等を記憶する。ＨＤＤ１４は、情報処理装置２０のアプリケーション２１が必要とする様々なデータを記憶する。ＨＤＤ１４に記憶されたデータは、アプリケーション２１から出された取り出し命令に応じて読み出される。
【００２１】
情報処理装置２０は、データ管理装置１０のＨＤＤ１４に記憶されたデータを必要とするアプリケーション２１を実行している。アプリケーション２１は、例えば、ＳＰＡＲＱＬと呼ばれるグラフデータベース用の問い合わせ言語で記述された取り出し命令をデータ管理装置１０に対して通知し、ＨＤＤ１４に記憶されたデータの取り出しを要求する。
【００２２】
次に、図２を用いて、データ管理装置１０のＣＰＵ１１上で動作するプログラム１１０の機能構成を説明する。図２は、ＣＰＵ上で動作するプログラムの機能構成を示すブロック図である。図２に示すように、プログラム１１０は、分割部１１ａを実現する機能と割当部１１ｂを実現する機能とを有する。
【００２３】
分割部１１ａは、ＨＤＤ１４からデータを取り出す命令である取り出し命令に基づいて、該データの取り出しに要する一連の処理を独立して実行可能な処理に分割する。具体的には、分割部１１ａは、情報処理装置２０のアプリケーション２１から取り出し命令を受信すると、取り出し命令文の解析を行い、並列処理が可能な部分と、前段の処理の待ち合わせを行い一つの流れ（スレッド）で処理の実行を行う部分との間で処理の分割を行って、データの取り出しに要する一連の処理を独立して実行可能な処理に分割する。
【００２４】
ここで、図３を用いて取り出し命令の例について説明する。図３は、取り出し命令の一例を示す図である。図３に例示する取り出し命令では、ＳＰＡＲＱＬと呼ばれるグラフデータベース用の問い合わせ言語が用いられている。図３の例では、パターンＡからパターンＤまでの４つのパターンが含まれている。図３の例を挙げて具体的に説明すると、パターンＡ「?person  <e:name>  ?name.」と、パターンＢ「?person  <e:address>  ?address.」と、パターンＣ「?name  <e:first>  ?first.」と、パターンＤ「?name  <e:last>  ?last.」とが含まれている。ＣＰＵ１１は、これらの独立して実行可能なパターンを並列化、あるいはパイプライン化することで処理速度を向上させる。
【００２５】
分割部１１ａは、図３に例示するような取り出し命令文の解析を行い、独立した処理の単位に分割する。独立した処理の並列化をどのような順序で行うかはメモリの容量やディスク入出力などの要因に左右されるため、一定ではない。予め定義されている処理に要するコスト見積もり方法などを用いて、計画の立案を行う。ただし、この時点ではどの処理をどの処理ユニット（ＣＰＵ１１、ＧＰＵ１２）に割り当てるかについては決定しない。
【００２６】
例えば、図３に例示した取り出し命令の解析を行い、独立した処理の単位に分割した場合、分割した各処理の流れ示す処理フローを図４に例示する。図４は、取り出し命令の処理フローを示す図である。図４に示すように、最初にパターンＡとパターンＢを取り出し対象となるデータ全体に対して一致させる処理を行い、一致した結果得られる変数表ａ、ｂについて結合を行い、変数表ｘを得る。ここで待ち合わせが行われ、続いて同様に、パターンＣ、パターンＤから変数表ｙを得る処理が行われ、最後に変数表ｘ、ｙを結合し、それを結果として出力処理を行う。
【００２７】
上記の変数表ａ、ｂ、ｘの例を図５に例示する。図５は、変数表の一例を示す図である。図５に例示するように、変数表ａは、例えば、「?person」の項目における「<http://example.com/me>」と、「?name」の項目における「<http://example.com/my_name>」とが対応付けられている。また、図５に例示するように、変数表ｂは、例えば、「?person」の項目における「<http://example.com/me」と、「?address」の項目における「here」とが対応付けられている。
【００２８】
また、図５に例示するように、変数表ａと変数表ｂとが結合された変数表ｘは、例えば、「?person」の項目における「<http://example.com/me>」と、「?name」の項目における「<http://example.com/my_name」と、「?address」の項目における「here」とが対応付けられている。
【００２９】
割当部１１ｂは、処理能力が異なるＣＰＵ１１、ＧＰＵ１２それぞれの処理能力と、ＣＰＵ１１およびＧＰＵ１２の処理状況とに応じて、分割部１１ａによって分割された各処理をＣＰＵ１１、ＧＰＵ１２のうちのいずれかのプロセッサに割り当てる。
【００３０】
具体的には、割当部１１ｂは、ＣＰＵ１１およびＧＰＵ１２のうちのいずれか片方のプロセッサの処理が完了した場合に、処理が完了したプロセッサが、他のプロセッサが先行して開始している処理と同一の処理を重複して実行することで短縮できると予想される短縮時間と、処理が完了したプロセッサが、後に実行する処理を行うために必要なデータを先読みした場合に要する先読み時間とを比較し、短縮時間の方が先読み時間よりも長い場合には、他のプロセッサが先行して開始している処理を処理が完了したプロセッサに重複して割り当て、先読み時間の方が前記短縮時間よりも長い場合には、後に実行する処理を行うために必要なデータの先読みを、処理を完了したプロセッサに実行させる。
【００３１】
例えば、割当部１１ｂは、まず、ＣＰＵ１１に対して処理Ａを割り当て、ＧＰＵ１２に対して処理Ｂをそれぞれ割り当てる。そして、例えば、ＧＰＵ１２が処理Ｂを完了させ、ＣＰＵ１１が処理Ａを継続している場合に、割当部１１ｂは、残りの処理が存在するか判定する。この結果、割当部１１ｂは、残りの処理が存在する場合には、残りの処理のうち選択可能（割当可能）な処理が存在するか判定する。そして、割当部１１ｂは、選択可能な処理が存在する場合には、未割り当ての処理をＧＰＵ１２に割り当てる。
【００３２】
一方、割当部１１ｂは、選択可能な処理が存在しない場合には、ＣＰＵ１１に割り当て済みの処理ＡをＧＰＵ１２に重複して割り当てるか、次のデータの先読みを行うべきかを判定する。ここで、割当部１１ｂは、ＣＰＵ１１に割り当て済みの処理をＧＰＵ１２に重複して割り当てるか、次のデータの先読みを行うべきかを判定する判定処理として、重複処理によって短縮できると予想される時間と、プリフェッチにかかると予想される時間とを比較し、「重複処理によって短縮できると予想される時間」が、「先読み（プリフェッチ）にかかると予想される時間」よりも長いか判定する。
【００３３】
ここで「重複処理によって短縮できると予想される時間」は、例えば、先行して処理を開始しているＣＰＵ１１がその処理に要すると見積もられる時間をＴ１、処理を開始してからの時間をＴｓ、後続となるプロセッサが同じ処理を行う場合に要すると見積もられる時間をＴ２とした場合に、「（Ｔ１−Ｔｓ）−Ｔ２」で求めることができる。
【００３４】
また、「先読み（プリフェッチ）にかかると予想される時間」は、データ量をＤ、単位時間当たりの転送速度をＳとした場合に、「Ｄ／Ｓ」で求めることができる。
【００３５】
そして、割当部１１ｂは、「重複処理によって短縮できると予想される時間」が、「先読み（プリフェッチ）にかかると予想される時間」よりも長い場合には、ＣＰＵ１１に割り当て済みの処理ＡをＧＰＵ１２に重複して割り当てる。一方、割当部１１ｂは、「重複処理によって短縮できると予想される時間」が、「先読み（プリフェッチ）にかかると予想される時間」よりも短い場合には、次の処理のためのデータ読み出しを実行させる。
【００３６】
例えば、図６の例を用いて重複処理について説明する。図６は、重複処理のタイムラインを示す図である。図６の（１）に示すように、ＣＰＵ１１に割り当てられた処理Ａ、ＧＰＵ１２に割り当てられた処理Ｂ、処理Ａまたは処理Ｂが完了した後に実行される処理Ｃがある場合の例を説明する。
【００３７】
図６の（２）に示すように、処理Ｃについては、ＣＰＵ１１が先に処理を開始している。次に、ＧＰＵ１２が処理Ｂを完了し、次の処理を選択するが、選択可能な処理が無い。そこで、割当部１１ｂは、「重複処理によって短縮できると予想される時間」が、「先読み（プリフェッチ）にかかると予想される時間」よりも長いか判定し、「重複処理によって短縮できると予想される時間」が、「先読み（プリフェッチ）にかかると予想される時間」よりも長い場合には、処理ＣをＧＰＵ１２に重複して割り当てる。図６の例では、ＧＰＵ１２が、先行しているＣＰＵ１１よりも早く処理Ｃを完了しているため、ＣＰＵ１１にのみ処理を割り当てるよりも高速に処理Ｃが完了している。
【００３８】
また、上記した重複処理を行って、片方のプロセッサによる処理が完了した場合には、他のプロセッサによる処理を中止（キャンセル）する。ここで、図７を用いて、重複処理が完了した場合に、処理をキャンセルする処理を説明する。図７は、重複処理が完了し、キャンセルした場合におけるタイムラインを示す図である。図７の（１）に示すように、ＣＰＵ１１に割り当てられた処理Ａ、ＧＰＵ１２に割り当てられた処理Ｂ、処理Ａまたは処理Ｂが完了した後に実行される処理Ｃがあり、処理Ｃが完了した後に実行される処理Ｄおよび処理Ｅがある場合の例を説明する。
【００３９】
図７の（２）に示すように、処理Ｃの完了をＣＰＵ１１とＧＰＵ１２が待ち合わせている。重複して行われている処理Ｃは、先行してＣＰＵ１１が完了しているため、ＧＰＵ１２の実行はキャンセルされている。これにより、ＧＰＵ１２は、次の処理Ｅを効率よく開始することができる。
【００４０】
次に、図８を用いて、先読み処理について説明する。図８は、先読み処理のタイムラインを示す図である。図８の（１）に示すように、ＣＰＵ１１に割り当てられた処理Ａ、ＧＰＵ１２に割り当てられた処理Ｂ、処理Ａまたは処理Ｂが完了した後に実行される処理Ｃがあり、処理Ｃが完了した後に実行される処理Ｄおよび処理Ｅがある場合の例を説明する。
【００４１】
図８の（２）に示すように、処理Ｃについては、ＣＰＵ１１が先に処理を開始している。次に、ＧＰＵ１２が処理Ｂを完了し、次の処理を選択するが、選択可能な処理が無い。そこで、割当部１１ｂは、「重複処理によって短縮できると予想される時間」が、「先読み（プリフェッチ）にかかると予想される時間」よりも長いか判定する。図８の例では、処理ＣはＣＰＵ１１がすでにほぼ完了しているため、「重複処理によって短縮できると予想される時間」が、「先読み（プリフェッチ）にかかると予想される時間」よりも短いと判定され、ＧＰＵ１２が処理Ｅで必要となるデータを先読みしている。つまり、処理ＣはＣＰＵ１１がすでにほぼ完了しているため、重複処理に意味がないと判断した場合には、次の処理に必要となるデータを先読みすることで、応答速度を向上させることができる。
【００４２】
特に、ＧＰＵ１２の場合には、データ転送がボトルネックになることから、ＧＰＵ１２内のメモリに、次処理のデータが存在しない場合は、積極的にデータを先読みする必要がある。一方、ＣＰＵ１１とＧＰＵ１２との間には、性能差があることから、先読みで短縮される時間よりも、重複実行による時間短縮の見積もりが大きい場合には、重複実行に必要なメモリの記憶領域を確保するために先読みをせずに、重複実行を行って高速化を図る。
【００４３】
このように、第一の実施の形態に係るデータ管理装置１０は、処理の割当を実行時に動的に決めることにより、事前計画から外れた処理状況でも対応が可能になる。また、重複して処理を割り当てられたプロセッサの性能が、先行するプロセッサの性能よりも優れている場合には、低速なプロセッサの処理を追い越すことで、取り出し処理の完了までに要する時間を短縮することが可能となる。さらに、次の処理に必要なデータをあらかじめ読み込むことにより、次の処理が可能になった段階で、即処理を開始することが可能となり、取り出し完了までに要する時間を短縮することが可能となる。
【００４４】
［データ管理装置による処理］
次に、図９および図１０を用いて、第一の実施の形態に係るデータ管理装置１０による処理を説明する。図９は、第一の実施の形態に係るデータ管理装置の処理動作を示すフローチャートである。図１０は、第一の実施の形態に係るデータ管理装置の判定処理の動作を示すフローチャートである。
【００４５】
図９に示すように、データ管理装置１０は、ＣＰＵ１１またはＧＰＵ１２が割り当てられた処理を実行し（ステップＳ１０１）、処理が終了した場合に、終了した処理が重複割り当てされていたか否かを判定する（ステップＳ１０２）。
【００４６】
この結果、データ管理装置１０は、終了した処理が重複割り当てされていたと判定した場合には（ステップＳ１０２肯定）、キャンセル処理の実行を行って（ステップＳ１０３）、ステップＳ１０４に進む。また、データ管理装置１０は、終了した処理が重複割り当てされていなかったと判定した場合には（ステップＳ１０２否定）、直ちにステップＳ１０４に進む。
【００４７】
ステップＳ１０４では、データ管理装置１０は、残りの処理が存在するか判定する。この結果、データ管理装置１０は、残りの処理が存在しないと判定した場合には（ステップＳ１０４否定）、そのまま処理を終了する。一方、データ管理装置１０は、残りの処理が存在すると判定した場合には（ステップＳ１０４肯定）、選択可能な処理が存在するか判定する（ステップＳ１０５）。
【００４８】
この結果、データ管理装置１０は、選択可能な処理が存在すると判定した場合には（ステップＳ１０５肯定）、処理が完了したプロセッサに対して未割り当ての処理を割り当て（ステップＳ１０６）、ステップＳ１０１に戻る。また、選択可能な処理が存在しないと判定した場合には（ステップＳ１０５否定）、データの先読みを行うべきか否かを判定する（ステップＳ１０７）。なお、ここでの判定処理の詳しい説明は、後に図１０を用いて詳述する。
【００４９】
この判定の結果、データ管理装置１０は、データの先読みを行うべきでないと判定した場合には（ステップＳ１０７否定）、他のプロセッサに対して割り当て済みの処理を、処理が完了したプロセッサに対して重複して割り当て（ステップＳ１０８）、ステップＳ１０１に戻る。
【００５０】
また、データ管理装置１０は、データの先読みを行うべきであると判定した場合には（ステップＳ１０７肯定）、次の処理のデータを先読みするプリフェッチ処理を、処理が完了したプロセッサに対して行わせて（ステップＳ１０９）、ステップＳ１０１に戻る。
【００５１】
次に、図１０を用いて、前述のステップＳ１０７における判定処理の詳しい説明をする。図１０に示すように、データ管理装置１０は、必要なデータがプロセッサ内の直接アクセス可能な記憶域に存在しないか判定する（ステップＳ２０１）。この結果、データ管理装置１０は、必要なデータがプロセッサ内の直接アクセス可能な記憶域に存在しない場合には（ステップＳ２０１肯定）、ステップＳ１０７の判定処理でＹｅｓと判定し、ステップＳ１０９に進んで、先読み処理を行う。
【００５２】
また、データ管理装置１０は、必要なデータがプロセッサ内の直接アクセス可能な記憶域に存在する場合には（ステップＳ２０１否定）、ディスク入出力に余裕があるか判定する（ステップＳ２０２）。この結果、データ管理装置１０は、ディスク入出力に余裕がある場合には（ステップＳ２０２肯定）、ステップＳ１０７の判定処理でＹｅｓと判定し、ステップＳ１０９に進んで、先読み処理を行う。
【００５３】
また、データ管理装置１０は、ディスク入出力に余裕がない場合には（ステップＳ２０２否定）、先読み（プリフェッチ）にかかると予想される時間の見積もりであるデータ転送時間見積もりが、重複処理によって短縮できると予想される時間の見積もりである時間短縮見積もりよりも大きいか判定する（ステップＳ２０３）。
【００５４】
この結果、データ管理装置１０は、データ転送時間見積もりが時間短縮見積もりより大きくないと判定した場合には（ステップＳ２０３否定）、ステップＳ１０７の判定処理でＮｏと判定し、ステップＳ１０８に進んで、他のプロセッサに対して割り当て済みの処理を、処理が完了したプロセッサに対して重複して割り当てる。また、データ管理装置１０は、データ転送時間見積もりが時間短縮見積もりより大きいと判定した場合には（ステップＳ２０３肯定）、ステップＳ１０７の判定処理でＹｅｓと判定し、ステップＳ１０９に進んで、先読み処理を行う。
【００５５】
[第一の実施形態の効果]
上述してきたように、第一の実施形態にかかるデータ管理装置１０は、ＨＤＤ１４からデータを取り出す命令である取り出し命令に基づいて、該データの取り出しに要する一連の処理を独立して実行可能な処理に分割する。そして、データ管理装置１０は、処理能力が異なるＣＰＵ１１、ＧＰＵ１２それぞれの処理能力と、ＣＰＵ１１およびＧＰＵ１２の処理状況とに応じて、分割部１１ａによって分割された各処理をＣＰＵ１１、ＧＰＵ１２のうちのいずれかのプロセッサに割り当てる。
【００５６】
このため、プロセッサの使用状況に応じて動的に処理を割り当てることで、データベース（ＨＤＤ１４）に対する処理の高速化を実現することが可能である。つまり、既存技術のように、処理の実行前に静的な実行計画を立案した場合には、実行計画と実処理との間に乖離が生じると、処理速度の低下が発生する場合があるが、本発明のように、処理の割当を実行時に動的に決めることにより、事前計画から外れた処理状況でも対応が可能になる。
【００５７】
例えば、図１１に示すように、既存技術において、処理ＡをＣＰＵ１１に割り当て、処理Ｂと処理Ｃを割り当てた実行計画を立案したが、実際の処理では、処理Ｂに要する時間が予想以上に掛かったため、ＣＰＵ１１のアイドル時間無駄になってしまう。これに対して、本発明では、ＣＰＵ１１の処理状況や処理能力から、処理ＣをＣＰＵ１１に割り当てることを動的に判断できることから、事前計画から外れた処理状況でも対応することができ、また、処理の高速化を実現することが可能である。
【００５８】
また、第一の実施形態にかかるデータ管理装置１０は、ＣＰＵ１１およびＧＰＵ１２のうちのいずれか片方のプロセッサの処理が完了した場合に、処理が完了したプロセッサが、他のプロセッサが先行して開始している処理と同一の処理を重複して実行することで短縮できると予想される短縮時間と、処理が完了したプロセッサが、後に実行する処理を行うために必要なデータを先読みした場合に要する先読み時間とを比較し、短縮時間の方が先読み時間よりも長い場合には、他のプロセッサが先行して開始している処理を処理が完了したプロセッサに重複して割り当て、先読み時間の方が短縮時間よりも長い場合には、後に実行する処理を行うために必要なデータの先読みを、処理を完了したプロセッサに実行させる。
【００５９】
このため、第一の実施形態にかかるデータ管理装置１０では、重複して処理を割り当てられたプロセッサの性能が、先行するプロセッサの性能よりも優れている場合には、低速なプロセッサの処理を追い越すことで、取り出し処理の完了までに要する時間を短縮することが可能となる。つまり、図１２に示すように、例えば、既存技術では、静的な処理の割当を行うので、処理が遅いＣＰＵ１１が処理を行っている間、高速な処理を行えるＧＰＵ１２がアイドル状態になってしまう可能性がある。これに対して、本発明は、高速な処理を行えるＧＰＵにより、投機的に重複した処理（図１２の例では、処理Ｃ´）を行うことで、先行したＣＰＵ１１よりも先に処理の完了が可能になり、処理の高速化を実現することが可能である。
【００６０】
さらに、第一の実施形態にかかるデータ管理装置１０では、次の処理に必要なデータをあらかじめ読み込むことにより、次の処理が可能になった段階で、即処理を開始することが可能となり、取り出し完了までに要する時間を短縮することが可能となる。つまり、図１３に例示するように、投機的な重複実行が有効でないと予想される場合には、ＧＰＵ１２に次の処理Ｅに必要なデータの先読みを行わせる。ＧＰＵ１２では、データの転送がＣＰＵ１１の場合よりもボトルネックになるため、先読みを行うことによる処理の高速化を図ることが可能である。
【００６１】
また、第一の実施形態にかかるデータ管理装置１０によれば、他のプロセッサが先行して開始している処理を重複して後続のプロセッサに割り当てた場合に、後続のプロセッサまたは他のプロセッサのいずれか一方のプロセッサが処理を完了した場合には、他方のプロセッサの処理を中止させ、両プロセッサに対して次の処理を割り当てる。このため、既に完了した処理を中止することで、次の処理を効率よく開始することが可能である。
【００６２】
また、第一の実施形態にかかるデータ管理装置１０によれば、データの取り出しに要する一連の処理のうち、並列処理が可能な部分と、前段の処理の待ち合わせを行い一つの流れで処理の実行を行う部分との間で処理の分割を行う。このため、各プロセッサに割り当てる処理を適切に分割することが可能である。
【００６３】
［第二の実施形態］
さて、これまで本発明の実施例について説明したが、本発明は上述した実施形態以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では第二の実施形態として本発明に含まれる他の実施形態を説明する。
【００６４】
（１）プロセッサ
上記の第一の実施形態では、処理能力が異なる複数のプロセッサの例として、ＣＰＵとＧＰＵに処理を割り当てる場合を説明したが、これに限定されるものではなく、例えば、処理能力が異なる複数のコアを有するＣＥＬＬプロセッサなどに、本発明の処理割当方法を適用するようにしてもよい。
【００６５】
上記の第一の実施形態では、処理能力が異なる複数のプロセッサの例として、ＣＰＵとＧＰＵが一つずつである場合を説明したが、これに限定されるものではなく、各プロセッサが２つ以上あってもよいし、処理能力が異なる複数のプロセッサの種類が３つ以上であってもよい。
【００６６】
（２）記憶装置
上記の第一の実施形態では、記憶装置であるデータベースがＨＤＤである場合を説明したが、これに限定されるものではなく、データベースがＳＳＤ（Solid  State  Drive）などの不揮発メモリ、あるいはＲＡＭ（Random  Access  Memory）ディスクのような揮発性メモリであってもよい。
【００６７】
（３）システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、分割部１１ａと割当１１ｂを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、ＣＰＵおよび当該ＣＰＵにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
【００６８】
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
【００６９】
（４）プログラム
また、上記実施形態において説明したデータ管理装置１０が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、第一の実施形態に係るデータ管理装置１０が実行する処理をコンピュータが実行可能な言語で記述した処理割当プログラムを作成することもできる。この場合、コンピュータが処理割当プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる処理割当プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録され処理割当プログラムをコンピュータに読み込ませて実行することにより上記第一の実施形態と同様の処理を実現してもよい。以下に、図１に示したデータ管理装置１０と同様の機能を実現する処理割当プログラムを実行するコンピュータの一例を説明する。
【００７０】
図１４は、処理割当プログラムを実行するコンピュータ１０００を示す図である。図１４に例示するように、コンピュータ１０００は、例えば、メモリ１０１０と、ＣＰＵ１０２０と、ハードディスクドライブインタフェース１０３０と、ディスクドライブインタフェース１０４０と、シリアルポートインタフェース１０５０と、ビデオアダプタ１０６０と、ネットワークインタフェース１０７０と、ＧＰＵ１１００とを有し、これらの各部はバス１０８０によって接続される。
【００７１】
メモリ１０１０は、図１４に例示するように、ＲＯＭ（Read  Only  Memory）１０１１及びＲＡＭ１０１２を含む。ＲＯＭ１０１１は、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース１０３０は、図１４に例示するように、ハードディスクドライブ１０３１に接続される。ディスクドライブインタフェース１０４０は、図１４に例示するように、ディスクドライブ１０４１に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ１０４１に挿入される。シリアルポートインタフェース１０５０は、図１４に例示するように、例えばマウス１０５１、キーボード１０５２に接続される。ビデオアダプタ１０６０は、図１４に例示するように、例えばディスプレイ１０６１に接続される。
【００７２】
ここで、図１４に例示するように、ハードディスクドライブ１０３１は、例えば、ＯＳ１０９１、アプリケーションプログラム１０９２、プログラムモジュール１０９３、プログラムデータ１０９４を記憶する。すなわち、上記の処理割当プログラムは、コンピュータ１０００によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ１０３１に記憶される。
【００７３】
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ１０１０やハードディスクドライブ１０３１に記憶される。そして、ＣＰＵ１０２０およびＧＰＵ１１００が、メモリ１０１０やハードディスクドライブ１０３１に記憶されたプログラムモジュール１０９３やプログラムデータ１０９４を必要に応じてＲＡＭ１０１２に読み出し、分割手順、割当手順を実行する。
【００７４】
なお、処理割当プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ハードディスクドライブ１０３１に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ１０２０によって読み出されてもよい。あるいは、処理割当プログラムに係るプログラムモジュール１０９３やプログラムデータ１０９４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェース１０７０を介してＣＰＵ１０２０またはＧＰＵ１１００によって読み出されてもよい。
【符号の説明】
【００７５】
１０  データ管理装置
１１  ＣＰＵ
１１ａ  分割部
１１ｂ  割当部
１１０  プログラム
１２  ＧＰＵ
１３  メモリ
１４  ＨＤＤ
２０  情報処理装置
２１  アプリケーション
３０  ネットワーク
１００  データ管理システム
【図１】
2014056425.tif 000003
【図２】
2014056425.tif 000004
【図３】
2014056425.tif 000005
【図４】
2014056425.tif 000006
【図５】
2014056425.tif 000007
【図６】
2014056425.tif 000008
【図７】
2014056425.tif 000009
【図８】
2014056425.tif 000010
【図９】
2014056425.tif 000011
【図１０】
2014056425.tif 000012
【図１１】
2014056425.tif 000013
【図１２】
2014056425.tif 000014
【図１３】
2014056425.tif 000015
【図１４】
2014056425.tif 000016