JP2014056425A - データ管理装置、データ管理システム、処理割当方法および処理割当プログラム - Google Patents

データ管理装置、データ管理システム、処理割当方法および処理割当プログラム Download PDF

Info

Publication number
JP2014056425A
JP2014056425A JP2012200787A JP2012200787A JP2014056425A JP 2014056425 A JP2014056425 A JP 2014056425A JP 2012200787 A JP2012200787 A JP 2012200787A JP 2012200787 A JP2012200787 A JP 2012200787A JP 2014056425 A JP2014056425 A JP 2014056425A
Authority
JP
Japan
Prior art keywords
processing
data
processor
data management
processes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012200787A
Other languages
English (en)
Inventor
Yudai Iwasaki
雄大 岩嵜
Junichi Akahani
淳一 赤埴
Takahiko Murayama
隆彦 村山
Masahiko Minaguchi
正彦 水口
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nippon Telegraph and Telephone Corp
Original Assignee
Nippon Telegraph and Telephone Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nippon Telegraph and Telephone Corp filed Critical Nippon Telegraph and Telephone Corp
Priority to JP2012200787A priority Critical patent/JP2014056425A/ja
Publication of JP2014056425A publication Critical patent/JP2014056425A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】記憶装置に対する処理の高速化を実現することを課題とする。
【解決手段】データ管理装置10は、HDD14からデータを取り出す命令である取り出し命令に基づいて、該データの取り出しに要する一連の処理を独立して実行可能な処理に分割する。そして、データ管理装置10は、処理能力が異なるCPU11、GPU12それぞれの処理能力と、CPU11およびGPU12の処理状況とに応じて、分割部によって分割された各処理をCPU11、GPU12のうちのいずれかのプロセッサに割り当てる。
【選択図】 図1

Description

本発明は、データ管理装置、データ管理システム、処理割当方法および処理割当プログラムに関する。
データ管理の高速化として、処理の並列化やパイプライン等の分散処理で実現する方法は従来から広く普及しているが、近年のグラフィックプロセッサを用いた汎用計算(General-purpose computing on graphics processing units)による高速化技術に対して従来の分散処理技術をそのまま適用することは、CPUとGPUの性質、性能の違いから難しい。
従来のリレーショナルデータベース(RDB:Relational Database)については、実行前に立案する実行計画においてCPUとGPUのいずれに分割された処理を割当てるかを静的に定義する方法の検討が進められている。
一方、従来のRDBと比較して事前に詳細なデータ構造設計の必要がない等の利点から、保存データのスキーマを定義せず、様々なデータをまとめて保存することが可能なグラフデータベースの需要が高まっている。
"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
しかしながら、グラフデータベースを用いた場合には、データベースに対する処理の高速化を実現できない場合があるという問題があった。具体的には、グラフデータベースでは、その構造上の理由からRDBと比較して処理に要するコストの見積が難しく、実行前に立案する静的な実行計画の精度が低いため、実行計画と実処理との乖離が生じ易く、特に処理の分散化が行われた際の待ち合わせまでのアイドル時間増大などの問題が発生し易くなるという問題点があった。
そこで、この発明は、上述した従来技術の課題を解決するためになされたものであり、プロセッサの使用状況に応じて動的に処理を割り当てることで、記憶装置に対する処理の高速化を実現することを目的とする。
上述した課題を解決し、目的を達成するため、データ管理装置は、記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割部と、処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割部によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当部と、を備えることを特徴とする。
また、データ管理システムは、記憶装置と、該記憶装置からデータを取り出すデータ管理装置とを備えたデータ管理システムであって、前記データ管理装置は、前記記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割部と、処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割部によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当部と、を備えることを特徴とする。
また、処理割当方法は、データ管理装置で実行される処理割当方法であって、記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割工程と、処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割工程によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当工程と、を含んだことを特徴とする。
また、処理割当プログラムは、記憶装置からデータを取り出すための取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割ステップと、処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割ステップによって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当ステップと、をコンピュータに実行させるための処理割当プログラムである。
本願に開示するデータ管理装置、データ管理システム、処理割当方法および処理割当プログラムは、プロセッサの使用状況に応じて動的に処理を割り当てることで、記憶装置に対する処理の高速化を実現することが可能である。
図1は、第一の実施の形態に係るデータ管理装置の構成を説明するための図である。 図2は、CPU上で動作するプログラムの機能構成を示すブロック図である。 図3は、取り出し命令の一例を示す図である。 図4は、取り出し命令の処理フローを示す図である。 図5は、変数表の一例を示す図である。 図6は、重複処理のタイムラインを示す図である。 図7は、重複処理が完了し、キャンセルした場合におけるタイムラインを示す図である。 図8は、先読み処理のタイムラインを示す図である。 図9は、第一の実施の形態に係るデータ管理装置の処理動作を示すフローチャートである。 図10は、第一の実施の形態に係るデータ管理装置の判定処理の動作を示すフローチャートである。 図11は、動的な処理の割当による効果を説明する図である。 図12は、投機的な重複処理による効果を説明する図である。 図13は、データの先読み処理による効果を説明する図である。 図14は、処理割当プログラムを実行するコンピュータを示す図である。
以下に添付図面を参照して、この発明に係るデータ管理装置、データ管理システム、処理割当方法および処理割当プログラムの実施形態を詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
[第一の実施の形態]
以下の実施の形態では、第一の実施の形態に係るデータ管理装置の構成、およびデータ管理装置による処理の流れを順に説明し、最後に第一の実施の形態による効果を説明する。
[データ管理装置の構成]
まず、図1を用いて、データ管理システム100に含まれるデータ管理装置10の構成を説明する。図1は、第一の実施の形態に係るデータ管理装置の構成を説明するための図である。図1に示すように、データ管理システム100は、データ管理装置10と情報処理装置20とがネットワーク30を介して接続されている。
データ管理10は、CPU(Central Processing Unit)11、GPU(Graphics Processing Unit)12、メモリ13およびHDD(Hard Disk Drive)14を有する。データ管理装置10は、例えば、グラフデータベース(HDD14に相当)に記憶されたデータを管理する装置であり、保存するデータのスキーマを定義せずに様々なデータをまとめて保存する。このデータ管理装置10は、HDD14からデータを読み出すために必要な処理を、処理能力が異なるCPU11またはGPU12に動的に割り当てて、HDD14からデータを読み出す。
具体的には、CPU11が、HDD14からデータを読み出すために必要な処理を分割し、分割した各処理を自CPU11またはGPU12に割り当てる。なお、CPU11による詳しい処理は、後に図2等を用いて詳述する。
GPU12は、一般的に動画のエンコードやデコードに使用されるプロセッサであるが、汎用計算を高速に行うことができる。つまり、GPU12は、CPU11のコアに相当する簡素な設計の演算ユニットを大量に並べるという設計のため、CPU11に比べて大量データを単純計算で一度に処理することができる。なお、GPU12は、コア数よりも個々のコアの性能が重要となる処理については、CPU11に比べて苦手とする。
メモリ13は、各種処理に必要なデータやプログラム等を記憶する。HDD14は、情報処理装置20のアプリケーション21が必要とする様々なデータを記憶する。HDD14に記憶されたデータは、アプリケーション21から出された取り出し命令に応じて読み出される。
情報処理装置20は、データ管理装置10のHDD14に記憶されたデータを必要とするアプリケーション21を実行している。アプリケーション21は、例えば、SPARQLと呼ばれるグラフデータベース用の問い合わせ言語で記述された取り出し命令をデータ管理装置10に対して通知し、HDD14に記憶されたデータの取り出しを要求する。
次に、図2を用いて、データ管理装置10のCPU11上で動作するプログラム110の機能構成を説明する。図2は、CPU上で動作するプログラムの機能構成を示すブロック図である。図2に示すように、プログラム110は、分割部11aを実現する機能と割当部11bを実現する機能とを有する。
分割部11aは、HDD14からデータを取り出す命令である取り出し命令に基づいて、該データの取り出しに要する一連の処理を独立して実行可能な処理に分割する。具体的には、分割部11aは、情報処理装置20のアプリケーション21から取り出し命令を受信すると、取り出し命令文の解析を行い、並列処理が可能な部分と、前段の処理の待ち合わせを行い一つの流れ(スレッド)で処理の実行を行う部分との間で処理の分割を行って、データの取り出しに要する一連の処理を独立して実行可能な処理に分割する。
ここで、図3を用いて取り出し命令の例について説明する。図3は、取り出し命令の一例を示す図である。図3に例示する取り出し命令では、SPARQLと呼ばれるグラフデータベース用の問い合わせ言語が用いられている。図3の例では、パターンAからパターンDまでの4つのパターンが含まれている。図3の例を挙げて具体的に説明すると、パターンA「?person <e:name> ?name.」と、パターンB「?person <e:address> ?address.」と、パターンC「?name <e:first> ?first.」と、パターンD「?name <e:last> ?last.」とが含まれている。CPU11は、これらの独立して実行可能なパターンを並列化、あるいはパイプライン化することで処理速度を向上させる。
分割部11aは、図3に例示するような取り出し命令文の解析を行い、独立した処理の単位に分割する。独立した処理の並列化をどのような順序で行うかはメモリの容量やディスク入出力などの要因に左右されるため、一定ではない。予め定義されている処理に要するコスト見積もり方法などを用いて、計画の立案を行う。ただし、この時点ではどの処理をどの処理ユニット(CPU11、GPU12)に割り当てるかについては決定しない。
例えば、図3に例示した取り出し命令の解析を行い、独立した処理の単位に分割した場合、分割した各処理の流れ示す処理フローを図4に例示する。図4は、取り出し命令の処理フローを示す図である。図4に示すように、最初にパターンAとパターンBを取り出し対象となるデータ全体に対して一致させる処理を行い、一致した結果得られる変数表a、bについて結合を行い、変数表xを得る。ここで待ち合わせが行われ、続いて同様に、パターンC、パターンDから変数表yを得る処理が行われ、最後に変数表x、yを結合し、それを結果として出力処理を行う。
上記の変数表a、b、xの例を図5に例示する。図5は、変数表の一例を示す図である。図5に例示するように、変数表aは、例えば、「?person」の項目における「<http://example.com/me>」と、「?name」の項目における「<http://example.com/my_name>」とが対応付けられている。また、図5に例示するように、変数表bは、例えば、「?person」の項目における「<http://example.com/me」と、「?address」の項目における「here」とが対応付けられている。
また、図5に例示するように、変数表aと変数表bとが結合された変数表xは、例えば、「?person」の項目における「<http://example.com/me>」と、「?name」の項目における「<http://example.com/my_name」と、「?address」の項目における「here」とが対応付けられている。
割当部11bは、処理能力が異なるCPU11、GPU12それぞれの処理能力と、CPU11およびGPU12の処理状況とに応じて、分割部11aによって分割された各処理をCPU11、GPU12のうちのいずれかのプロセッサに割り当てる。
具体的には、割当部11bは、CPU11およびGPU12のうちのいずれか片方のプロセッサの処理が完了した場合に、処理が完了したプロセッサが、他のプロセッサが先行して開始している処理と同一の処理を重複して実行することで短縮できると予想される短縮時間と、処理が完了したプロセッサが、後に実行する処理を行うために必要なデータを先読みした場合に要する先読み時間とを比較し、短縮時間の方が先読み時間よりも長い場合には、他のプロセッサが先行して開始している処理を処理が完了したプロセッサに重複して割り当て、先読み時間の方が前記短縮時間よりも長い場合には、後に実行する処理を行うために必要なデータの先読みを、処理を完了したプロセッサに実行させる。
例えば、割当部11bは、まず、CPU11に対して処理Aを割り当て、GPU12に対して処理Bをそれぞれ割り当てる。そして、例えば、GPU12が処理Bを完了させ、CPU11が処理Aを継続している場合に、割当部11bは、残りの処理が存在するか判定する。この結果、割当部11bは、残りの処理が存在する場合には、残りの処理のうち選択可能(割当可能)な処理が存在するか判定する。そして、割当部11bは、選択可能な処理が存在する場合には、未割り当ての処理をGPU12に割り当てる。
一方、割当部11bは、選択可能な処理が存在しない場合には、CPU11に割り当て済みの処理AをGPU12に重複して割り当てるか、次のデータの先読みを行うべきかを判定する。ここで、割当部11bは、CPU11に割り当て済みの処理をGPU12に重複して割り当てるか、次のデータの先読みを行うべきかを判定する判定処理として、重複処理によって短縮できると予想される時間と、プリフェッチにかかると予想される時間とを比較し、「重複処理によって短縮できると予想される時間」が、「先読み(プリフェッチ)にかかると予想される時間」よりも長いか判定する。
ここで「重複処理によって短縮できると予想される時間」は、例えば、先行して処理を開始しているCPU11がその処理に要すると見積もられる時間をT1、処理を開始してからの時間をTs、後続となるプロセッサが同じ処理を行う場合に要すると見積もられる時間をT2とした場合に、「(T1−Ts)−T2」で求めることができる。
また、「先読み(プリフェッチ)にかかると予想される時間」は、データ量をD、単位時間当たりの転送速度をSとした場合に、「D/S」で求めることができる。
そして、割当部11bは、「重複処理によって短縮できると予想される時間」が、「先読み(プリフェッチ)にかかると予想される時間」よりも長い場合には、CPU11に割り当て済みの処理AをGPU12に重複して割り当てる。一方、割当部11bは、「重複処理によって短縮できると予想される時間」が、「先読み(プリフェッチ)にかかると予想される時間」よりも短い場合には、次の処理のためのデータ読み出しを実行させる。
例えば、図6の例を用いて重複処理について説明する。図6は、重複処理のタイムラインを示す図である。図6の(1)に示すように、CPU11に割り当てられた処理A、GPU12に割り当てられた処理B、処理Aまたは処理Bが完了した後に実行される処理Cがある場合の例を説明する。
図6の(2)に示すように、処理Cについては、CPU11が先に処理を開始している。次に、GPU12が処理Bを完了し、次の処理を選択するが、選択可能な処理が無い。そこで、割当部11bは、「重複処理によって短縮できると予想される時間」が、「先読み(プリフェッチ)にかかると予想される時間」よりも長いか判定し、「重複処理によって短縮できると予想される時間」が、「先読み(プリフェッチ)にかかると予想される時間」よりも長い場合には、処理CをGPU12に重複して割り当てる。図6の例では、GPU12が、先行しているCPU11よりも早く処理Cを完了しているため、CPU11にのみ処理を割り当てるよりも高速に処理Cが完了している。
また、上記した重複処理を行って、片方のプロセッサによる処理が完了した場合には、他のプロセッサによる処理を中止(キャンセル)する。ここで、図7を用いて、重複処理が完了した場合に、処理をキャンセルする処理を説明する。図7は、重複処理が完了し、キャンセルした場合におけるタイムラインを示す図である。図7の(1)に示すように、CPU11に割り当てられた処理A、GPU12に割り当てられた処理B、処理Aまたは処理Bが完了した後に実行される処理Cがあり、処理Cが完了した後に実行される処理Dおよび処理Eがある場合の例を説明する。
図7の(2)に示すように、処理Cの完了をCPU11とGPU12が待ち合わせている。重複して行われている処理Cは、先行してCPU11が完了しているため、GPU12の実行はキャンセルされている。これにより、GPU12は、次の処理Eを効率よく開始することができる。
次に、図8を用いて、先読み処理について説明する。図8は、先読み処理のタイムラインを示す図である。図8の(1)に示すように、CPU11に割り当てられた処理A、GPU12に割り当てられた処理B、処理Aまたは処理Bが完了した後に実行される処理Cがあり、処理Cが完了した後に実行される処理Dおよび処理Eがある場合の例を説明する。
図8の(2)に示すように、処理Cについては、CPU11が先に処理を開始している。次に、GPU12が処理Bを完了し、次の処理を選択するが、選択可能な処理が無い。そこで、割当部11bは、「重複処理によって短縮できると予想される時間」が、「先読み(プリフェッチ)にかかると予想される時間」よりも長いか判定する。図8の例では、処理CはCPU11がすでにほぼ完了しているため、「重複処理によって短縮できると予想される時間」が、「先読み(プリフェッチ)にかかると予想される時間」よりも短いと判定され、GPU12が処理Eで必要となるデータを先読みしている。つまり、処理CはCPU11がすでにほぼ完了しているため、重複処理に意味がないと判断した場合には、次の処理に必要となるデータを先読みすることで、応答速度を向上させることができる。
特に、GPU12の場合には、データ転送がボトルネックになることから、GPU12内のメモリに、次処理のデータが存在しない場合は、積極的にデータを先読みする必要がある。一方、CPU11とGPU12との間には、性能差があることから、先読みで短縮される時間よりも、重複実行による時間短縮の見積もりが大きい場合には、重複実行に必要なメモリの記憶領域を確保するために先読みをせずに、重複実行を行って高速化を図る。
このように、第一の実施の形態に係るデータ管理装置10は、処理の割当を実行時に動的に決めることにより、事前計画から外れた処理状況でも対応が可能になる。また、重複して処理を割り当てられたプロセッサの性能が、先行するプロセッサの性能よりも優れている場合には、低速なプロセッサの処理を追い越すことで、取り出し処理の完了までに要する時間を短縮することが可能となる。さらに、次の処理に必要なデータをあらかじめ読み込むことにより、次の処理が可能になった段階で、即処理を開始することが可能となり、取り出し完了までに要する時間を短縮することが可能となる。
[データ管理装置による処理]
次に、図9および図10を用いて、第一の実施の形態に係るデータ管理装置10による処理を説明する。図9は、第一の実施の形態に係るデータ管理装置の処理動作を示すフローチャートである。図10は、第一の実施の形態に係るデータ管理装置の判定処理の動作を示すフローチャートである。
図9に示すように、データ管理装置10は、CPU11またはGPU12が割り当てられた処理を実行し(ステップS101)、処理が終了した場合に、終了した処理が重複割り当てされていたか否かを判定する(ステップS102)。
この結果、データ管理装置10は、終了した処理が重複割り当てされていたと判定した場合には(ステップS102肯定)、キャンセル処理の実行を行って(ステップS103)、ステップS104に進む。また、データ管理装置10は、終了した処理が重複割り当てされていなかったと判定した場合には(ステップS102否定)、直ちにステップS104に進む。
ステップS104では、データ管理装置10は、残りの処理が存在するか判定する。この結果、データ管理装置10は、残りの処理が存在しないと判定した場合には(ステップS104否定)、そのまま処理を終了する。一方、データ管理装置10は、残りの処理が存在すると判定した場合には(ステップS104肯定)、選択可能な処理が存在するか判定する(ステップS105)。
この結果、データ管理装置10は、選択可能な処理が存在すると判定した場合には(ステップS105肯定)、処理が完了したプロセッサに対して未割り当ての処理を割り当て(ステップS106)、ステップS101に戻る。また、選択可能な処理が存在しないと判定した場合には(ステップS105否定)、データの先読みを行うべきか否かを判定する(ステップS107)。なお、ここでの判定処理の詳しい説明は、後に図10を用いて詳述する。
この判定の結果、データ管理装置10は、データの先読みを行うべきでないと判定した場合には(ステップS107否定)、他のプロセッサに対して割り当て済みの処理を、処理が完了したプロセッサに対して重複して割り当て(ステップS108)、ステップS101に戻る。
また、データ管理装置10は、データの先読みを行うべきであると判定した場合には(ステップS107肯定)、次の処理のデータを先読みするプリフェッチ処理を、処理が完了したプロセッサに対して行わせて(ステップS109)、ステップS101に戻る。
次に、図10を用いて、前述のステップS107における判定処理の詳しい説明をする。図10に示すように、データ管理装置10は、必要なデータがプロセッサ内の直接アクセス可能な記憶域に存在しないか判定する(ステップS201)。この結果、データ管理装置10は、必要なデータがプロセッサ内の直接アクセス可能な記憶域に存在しない場合には(ステップS201肯定)、ステップS107の判定処理でYesと判定し、ステップS109に進んで、先読み処理を行う。
また、データ管理装置10は、必要なデータがプロセッサ内の直接アクセス可能な記憶域に存在する場合には(ステップS201否定)、ディスク入出力に余裕があるか判定する(ステップS202)。この結果、データ管理装置10は、ディスク入出力に余裕がある場合には(ステップS202肯定)、ステップS107の判定処理でYesと判定し、ステップS109に進んで、先読み処理を行う。
また、データ管理装置10は、ディスク入出力に余裕がない場合には(ステップS202否定)、先読み(プリフェッチ)にかかると予想される時間の見積もりであるデータ転送時間見積もりが、重複処理によって短縮できると予想される時間の見積もりである時間短縮見積もりよりも大きいか判定する(ステップS203)。
この結果、データ管理装置10は、データ転送時間見積もりが時間短縮見積もりより大きくないと判定した場合には(ステップS203否定)、ステップS107の判定処理でNoと判定し、ステップS108に進んで、他のプロセッサに対して割り当て済みの処理を、処理が完了したプロセッサに対して重複して割り当てる。また、データ管理装置10は、データ転送時間見積もりが時間短縮見積もりより大きいと判定した場合には(ステップS203肯定)、ステップS107の判定処理でYesと判定し、ステップS109に進んで、先読み処理を行う。
[第一の実施形態の効果]
上述してきたように、第一の実施形態にかかるデータ管理装置10は、HDD14からデータを取り出す命令である取り出し命令に基づいて、該データの取り出しに要する一連の処理を独立して実行可能な処理に分割する。そして、データ管理装置10は、処理能力が異なるCPU11、GPU12それぞれの処理能力と、CPU11およびGPU12の処理状況とに応じて、分割部11aによって分割された各処理をCPU11、GPU12のうちのいずれかのプロセッサに割り当てる。
このため、プロセッサの使用状況に応じて動的に処理を割り当てることで、データベース(HDD14)に対する処理の高速化を実現することが可能である。つまり、既存技術のように、処理の実行前に静的な実行計画を立案した場合には、実行計画と実処理との間に乖離が生じると、処理速度の低下が発生する場合があるが、本発明のように、処理の割当を実行時に動的に決めることにより、事前計画から外れた処理状況でも対応が可能になる。
例えば、図11に示すように、既存技術において、処理AをCPU11に割り当て、処理Bと処理Cを割り当てた実行計画を立案したが、実際の処理では、処理Bに要する時間が予想以上に掛かったため、CPU11のアイドル時間無駄になってしまう。これに対して、本発明では、CPU11の処理状況や処理能力から、処理CをCPU11に割り当てることを動的に判断できることから、事前計画から外れた処理状況でも対応することができ、また、処理の高速化を実現することが可能である。
また、第一の実施形態にかかるデータ管理装置10は、CPU11およびGPU12のうちのいずれか片方のプロセッサの処理が完了した場合に、処理が完了したプロセッサが、他のプロセッサが先行して開始している処理と同一の処理を重複して実行することで短縮できると予想される短縮時間と、処理が完了したプロセッサが、後に実行する処理を行うために必要なデータを先読みした場合に要する先読み時間とを比較し、短縮時間の方が先読み時間よりも長い場合には、他のプロセッサが先行して開始している処理を処理が完了したプロセッサに重複して割り当て、先読み時間の方が短縮時間よりも長い場合には、後に実行する処理を行うために必要なデータの先読みを、処理を完了したプロセッサに実行させる。
このため、第一の実施形態にかかるデータ管理装置10では、重複して処理を割り当てられたプロセッサの性能が、先行するプロセッサの性能よりも優れている場合には、低速なプロセッサの処理を追い越すことで、取り出し処理の完了までに要する時間を短縮することが可能となる。つまり、図12に示すように、例えば、既存技術では、静的な処理の割当を行うので、処理が遅いCPU11が処理を行っている間、高速な処理を行えるGPU12がアイドル状態になってしまう可能性がある。これに対して、本発明は、高速な処理を行えるGPUにより、投機的に重複した処理(図12の例では、処理C´)を行うことで、先行したCPU11よりも先に処理の完了が可能になり、処理の高速化を実現することが可能である。
さらに、第一の実施形態にかかるデータ管理装置10では、次の処理に必要なデータをあらかじめ読み込むことにより、次の処理が可能になった段階で、即処理を開始することが可能となり、取り出し完了までに要する時間を短縮することが可能となる。つまり、図13に例示するように、投機的な重複実行が有効でないと予想される場合には、GPU12に次の処理Eに必要なデータの先読みを行わせる。GPU12では、データの転送がCPU11の場合よりもボトルネックになるため、先読みを行うことによる処理の高速化を図ることが可能である。
また、第一の実施形態にかかるデータ管理装置10によれば、他のプロセッサが先行して開始している処理を重複して後続のプロセッサに割り当てた場合に、後続のプロセッサまたは他のプロセッサのいずれか一方のプロセッサが処理を完了した場合には、他方のプロセッサの処理を中止させ、両プロセッサに対して次の処理を割り当てる。このため、既に完了した処理を中止することで、次の処理を効率よく開始することが可能である。
また、第一の実施形態にかかるデータ管理装置10によれば、データの取り出しに要する一連の処理のうち、並列処理が可能な部分と、前段の処理の待ち合わせを行い一つの流れで処理の実行を行う部分との間で処理の分割を行う。このため、各プロセッサに割り当てる処理を適切に分割することが可能である。
[第二の実施形態]
さて、これまで本発明の実施例について説明したが、本発明は上述した実施形態以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では第二の実施形態として本発明に含まれる他の実施形態を説明する。
(1)プロセッサ
上記の第一の実施形態では、処理能力が異なる複数のプロセッサの例として、CPUとGPUに処理を割り当てる場合を説明したが、これに限定されるものではなく、例えば、処理能力が異なる複数のコアを有するCELLプロセッサなどに、本発明の処理割当方法を適用するようにしてもよい。
上記の第一の実施形態では、処理能力が異なる複数のプロセッサの例として、CPUとGPUが一つずつである場合を説明したが、これに限定されるものではなく、各プロセッサが2つ以上あってもよいし、処理能力が異なる複数のプロセッサの種類が3つ以上であってもよい。
(2)記憶装置
上記の第一の実施形態では、記憶装置であるデータベースがHDDである場合を説明したが、これに限定されるものではなく、データベースがSSD(Solid State Drive)などの不揮発メモリ、あるいはRAM(Random Access Memory)ディスクのような揮発性メモリであってもよい。
(3)システム構成等
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、分割部11aと割当11bを統合してもよい。さらに、各装置にて行なわれる各処理機能は、その全部または任意の一部が、CPUおよび当該CPUにて解析実行されるプログラムにて実現され、あるいは、ワイヤードロジックによるハードウェアとして実現され得る。
また、本実施例において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的におこなうこともでき、あるいは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的におこなうこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。
(4)プログラム
また、上記実施形態において説明したデータ管理装置10が実行する処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。例えば、第一の実施形態に係るデータ管理装置10が実行する処理をコンピュータが実行可能な言語で記述した処理割当プログラムを作成することもできる。この場合、コンピュータが処理割当プログラムを実行することにより、上記実施形態と同様の効果を得ることができる。さらに、かかる処理割当プログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録され処理割当プログラムをコンピュータに読み込ませて実行することにより上記第一の実施形態と同様の処理を実現してもよい。以下に、図1に示したデータ管理装置10と同様の機能を実現する処理割当プログラムを実行するコンピュータの一例を説明する。
図14は、処理割当プログラムを実行するコンピュータ1000を示す図である。図14に例示するように、コンピュータ1000は、例えば、メモリ1010と、CPU1020と、ハードディスクドライブインタフェース1030と、ディスクドライブインタフェース1040と、シリアルポートインタフェース1050と、ビデオアダプタ1060と、ネットワークインタフェース1070と、GPU1100とを有し、これらの各部はバス1080によって接続される。
メモリ1010は、図14に例示するように、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、図14に例示するように、ハードディスクドライブ1031に接続される。ディスクドライブインタフェース1040は、図14に例示するように、ディスクドライブ1041に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1041に挿入される。シリアルポートインタフェース1050は、図14に例示するように、例えばマウス1051、キーボード1052に接続される。ビデオアダプタ1060は、図14に例示するように、例えばディスプレイ1061に接続される。
ここで、図14に例示するように、ハードディスクドライブ1031は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、上記の処理割当プログラムは、コンピュータ1000によって実行される指令が記述されたプログラムモジュールとして、例えばハードディスクドライブ1031に記憶される。
また、上記実施形態で説明した各種データは、プログラムデータとして、例えばメモリ1010やハードディスクドライブ1031に記憶される。そして、CPU1020およびGPU1100が、メモリ1010やハードディスクドライブ1031に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出し、分割手順、割当手順を実行する。
なお、処理割当プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1031に記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してCPU1020によって読み出されてもよい。あるいは、処理割当プログラムに係るプログラムモジュール1093やプログラムデータ1094は、ネットワーク(LAN(Local Area Network)、WAN(Wide Area Network)等)を介して接続された他のコンピュータに記憶され、ネットワークインタフェース1070を介してCPU1020またはGPU1100によって読み出されてもよい。
10 データ管理装置
11 CPU
11a 分割部
11b 割当部
110 プログラム
12 GPU
13 メモリ
14 HDD
20 情報処理装置
21 アプリケーション
30 ネットワーク
100 データ管理システム

Claims (7)

  1. 記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割部と、
    処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割部によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当部と、
    を備えることを特徴とするデータ管理装置。
  2. 前記割当部は、前記複数のプロセッサのうちの所定のプロセッサの処理が完了した場合に、該所定のプロセッサが、他のプロセッサが先行して開始している処理と同一の処理を重複して実行することで短縮できると予想される短縮時間と、前記所定のプロセッサが、後に実行する処理を行うために必要なデータを先読みした場合に要する先読み時間とを比較し、前記短縮時間の方が前記先読み時間よりも長い場合には、前記他のプロセッサが先行して開始している処理を重複して前記所定のプロセッサに割り当て、前記先読み時間の方が前記短縮時間よりも長い場合には、後に実行する処理を行うために必要なデータの先読みを前記所定のプロセッサに実行させることを特徴とする請求項1に記載のデータ管理装置。
  3. 前記割当部は、前記他のプロセッサが先行して開始している処理を重複して後続のプロセッサに割り当てた場合に、前記後続のプロセッサまたは前記他のプロセッサのいずれか一方のプロセッサが処理を完了した場合には、他方のプロセッサの処理を中止させ、両プロセッサに対して次の処理を割り当てることを特徴とする請求項2に記載のデータ管理装置。
  4. 前記分割部は、前記データの取り出しに要する一連の処理のうち、並列処理が可能な部分と、前段の処理の待ち合わせを行い一つの流れで処理の実行を行う部分との間で処理の分割を行うことを特徴とする請求項1〜3のいずれか一つに記載のデータ管理装置。
  5. 記憶装置と、該記憶装置からデータを取り出すデータ管理装置とを備えたデータ管理システムであって、
    前記データ管理装置は、
    前記記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割部と、
    処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割部によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当部と、
    を備えることを特徴とするデータ管理システム。
  6. データ管理装置で実行される処理割当方法であって、
    記憶装置からデータを取り出す指示である取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割工程と、
    処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割工程によって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当工程と、
    を含んだことを特徴とする処理割当方法。
  7. 記憶装置からデータを取り出すための取り出し命令に基づいて、該データの取り出しに要する一連の処理を、独立して実行可能な処理に分割する分割ステップと、
    処理能力が異なる複数のプロセッサそれぞれの処理能力と、各プロセッサの処理状況とに応じて、前記分割ステップによって分割された各処理を前記複数のプロセッサのうちのいずれかのプロセッサに割り当てる割当ステップと、
    をコンピュータに実行させるための処理割当プログラム。
JP2012200787A 2012-09-12 2012-09-12 データ管理装置、データ管理システム、処理割当方法および処理割当プログラム Pending JP2014056425A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012200787A JP2014056425A (ja) 2012-09-12 2012-09-12 データ管理装置、データ管理システム、処理割当方法および処理割当プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012200787A JP2014056425A (ja) 2012-09-12 2012-09-12 データ管理装置、データ管理システム、処理割当方法および処理割当プログラム

Publications (1)

Publication Number Publication Date
JP2014056425A true JP2014056425A (ja) 2014-03-27

Family

ID=50613685

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012200787A Pending JP2014056425A (ja) 2012-09-12 2012-09-12 データ管理装置、データ管理システム、処理割当方法および処理割当プログラム

Country Status (1)

Country Link
JP (1) JP2014056425A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017069744A (ja) * 2015-09-30 2017-04-06 沖電気工業株式会社 通信制御装置及びプログラム、記録媒体、並びに、通信制御方法
KR101721341B1 (ko) * 2015-12-31 2017-04-10 전북대학교산학협력단 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법
WO2017085985A1 (ja) * 2015-11-22 2017-05-26 浩平 海外 データベース処理高速化のシステム、方法、及び、プログラム
KR101862981B1 (ko) * 2017-02-02 2018-05-30 연세대학교 산학협력단 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법
WO2022244072A1 (ja) * 2021-05-17 2022-11-24 ファナック株式会社 数値制御装置及びコンピュータ読み取り可能な記憶媒体
CN116028011A (zh) * 2023-03-30 2023-04-28 山东大学 一种用于gpu数据库任意精度十进制数据的计算方法

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2017069744A (ja) * 2015-09-30 2017-04-06 沖電気工業株式会社 通信制御装置及びプログラム、記録媒体、並びに、通信制御方法
WO2017085985A1 (ja) * 2015-11-22 2017-05-26 浩平 海外 データベース処理高速化のシステム、方法、及び、プログラム
KR101721341B1 (ko) * 2015-12-31 2017-04-10 전북대학교산학협력단 이종 멀티코어 환경에서 사용되는 수행장치 결정 모듈 및 이를 이용한 수행장치 결정방법
KR101862981B1 (ko) * 2017-02-02 2018-05-30 연세대학교 산학협력단 명령어 기반 카운터를 통한 성능 및 전력량 예측 시스템 및 방법
WO2022244072A1 (ja) * 2021-05-17 2022-11-24 ファナック株式会社 数値制御装置及びコンピュータ読み取り可能な記憶媒体
CN116028011A (zh) * 2023-03-30 2023-04-28 山东大学 一种用于gpu数据库任意精度十进制数据的计算方法

Similar Documents

Publication Publication Date Title
US9417935B2 (en) Many-core process scheduling to maximize cache usage
US10877757B2 (en) Binding constants at runtime for improved resource utilization
TWI525540B (zh) 具有橫跨多個處理器之平行資料執行緒的映射處理邏輯
TWI644208B (zh) 藉由對硬體資源之限制實現的向後相容性
JP2014056425A (ja) データ管理装置、データ管理システム、処理割当方法および処理割当プログラム
US10558460B2 (en) General purpose register allocation in streaming processor
US10169105B2 (en) Method for simplified task-based runtime for efficient parallel computing
US9069609B2 (en) Scheduling and execution of compute tasks
CN101506774A (zh) 相依指令线程调度
EP2613257B1 (en) Systems and methods for use in performing one or more tasks
US11537397B2 (en) Compiler-assisted inter-SIMD-group register sharing
JP2017102919A (ja) 命令を処理するための複数の実行ユニットを備えるプロセッサ、プロセッサを使用して命令を処理するための方法、およびプロセッサの設計プロセスにおいて使用される設計構造
JP2014225263A (ja) プロセッシング装置及びプロセッシング方法
US8006238B2 (en) Workload partitioning in a parallel system with hetergeneous alignment constraints
US10152243B2 (en) Managing data flow in heterogeneous computing
US10241838B2 (en) Domain based resource isolation in multi-core systems
US20140281246A1 (en) Instruction boundary prediction for variable length instruction set
US9690600B2 (en) Reconfigurable processor and method of operating the same
KR102205899B1 (ko) 메모리의 뱅크 충돌을 방지하기 위한 방법 및 장치
US8332595B2 (en) Techniques for improving parallel scan operations
CN103870247A (zh) 用于保存和恢复线程组操作状态的技术
TW202125240A (zh) 用於擷取作業系統組態狀態和記憶體管理的資源管理單元
JP6731620B2 (ja) 計算機システム及び記憶デバイス起動制御方法
JP2017126172A (ja) データベース制御プログラム、データベース制御装置、およびデータベース制御方法
TW202418076A (zh) 用於記憶體管理機會與記憶體交換任務之運算系統及管理其之方法