JP4719859B2 - データ処理方法、データ処理装置及びコンピュータプログラム - Google Patents

データ処理方法、データ処理装置及びコンピュータプログラム Download PDF

Info

Publication number
JP4719859B2
JP4719859B2 JP2004267528A JP2004267528A JP4719859B2 JP 4719859 B2 JP4719859 B2 JP 4719859B2 JP 2004267528 A JP2004267528 A JP 2004267528A JP 2004267528 A JP2004267528 A JP 2004267528A JP 4719859 B2 JP4719859 B2 JP 4719859B2
Authority
JP
Japan
Prior art keywords
level
data object
data
scanning
target
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.)
Active
Application number
JP2004267528A
Other languages
English (en)
Other versions
JP2006085300A (ja
Inventor
昌宏 八杉
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.)
Kyoto University
Original Assignee
Kyoto University
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 Kyoto University filed Critical Kyoto University
Priority to JP2004267528A priority Critical patent/JP4719859B2/ja
Publication of JP2006085300A publication Critical patent/JP2006085300A/ja
Application granted granted Critical
Publication of JP4719859B2 publication Critical patent/JP4719859B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Memory System Of A Hierarchy Structure (AREA)

Description

本発明は、走査対象として順次配列されるデータオブジェクトを、優先順位が付けられた複数の階層レベル夫々について、列の先頭側から後方側へと走査し、走査中のデータオブジェクトが指している他のデータオブジェクトを選択的に次に配列して走査対象に追加するデータ処理方法、該データ処理方法を適用したデータ処理装置、及び該データ処理装置を実現するためのコンピュータプログラムに関し、特にコピー方式のゴミ集め(Garbage Collection)に適用することにより、効率の良いメモリ管理を行うデータ処理方法、データ処理装置及びコンピュータプログラムに関する。
自動的なメモリ領域の管理を行うゴミ集め(Garbage Collection:以下GCという)を用いることで、プログラマはメモリ領域管理の負担から解放されアルゴリズムに関する記述等の本質的な作業に専念することができる。またGCを用いることで明示的なメモリ領域管理を行うよりも効率の良いプログラムの実行が可能な場合もある。
代表的なGCの一つであるコピー方式のGCでは、Fromスペースと呼ばれるメモリ領域に記録されているデータの中で、今後アクセスされる可能性のある(生きている)データのみをToスペースと呼ばれるメモリ領域にコピーし、Fromスペースのメモリ領域を、再利用することが可能なメモリ領域として確保する。
コピー方式のGCの代表的な方法として、非特許文献1に記載されている方法がある。図14は従来のコピー方式のGC処理を概念的に示すメモリマップである。図14(a)はFromスペースとして用いられるメモリ領域を示し、図14(b)はToスペースとして用いられるメモリ領域を示している。各メモリ領域中には、四角形にて示すデータオブジェクトが記録されており、一方のデータオブジェクトに含まれる記憶単位であるワードが他方のデータオブジェクトを指す参照関係については、その関係を矢印により示している。またsとして示した矢印は、Toスペースとなるメモリ領域に設定され、走査するデータオブジェクトを指示するスキャンポインタであり、bとして示した矢印は、Toスペースの空き領域の先頭を指示するフリーポインタである。
Toスペースにおいては、記録されているデータオブジェクトに含まれるワードを先頭側から後方側へ、図14(b)中の左方から右方へと走査を行い、走査に伴いスキャンポインタが右方へ移動する。走査したワードがFromスペースに記録されているデータオブジェクトを指している場合、指されているFromスペースのデータオブジェクトをフリーポインタの位置にコピーし、フリーポインタを右方へ移動させる。そしてスキャンポインタがフリーポインタに追いついた時点で、今後アクセスされる可能性のあるデータが全てToスペースへコピーされたと判定する。
上述の非特許文献1に記載されている方法を、データオブジェクト間の参照関係が木構造をなす構成のデータオブジェクト群に適用する場合、Toスペースには幅優先順と呼ばれる順番で夫々のデータオブジェクトが配置される。図15は従来のコピー方式のGC処理によるデータオブジェクトの配置を概念的に示す説明図である。図15(a)は木構造をなすデータの関係を示しており、図15(b)は幅優先順でコピーされたデータオブジェクトの配置を示している。なお図15(a)において、データオブジェクトに付された番号は、Toスペース内に配置される順番を示している。また図15(a)及び図15(b)において矢印は各データオブジェクト間の参照関係を示している。
また幅優先順と異なる順番でデータオブジェクトを配置する方法として、深さ優先順と呼ばれる順番で夫々のデータオブジェクトを配置する方法がある。図16は従来のコピー方式のGC処理によるデータオブジェクトの配置を概念的に示す説明図である。図16(a)は木構造をなすデータオブジェクトの関係を示しており、図16(b)は深さ優先順でコピーされたデータオブジェクトの配置を示している。なお図16(a)において、Toスペース内の接近した記録位置に配置されるデータオブジェクト同士を一点鎖線で囲んでいる。また図16(a)及び図16(b)において矢印は各データオブジェクト間の参照関係を示している。
さらに非特許文献2には、関連するデータの位置が接近するようにグループ化(クラスタリング)して配置する方法を用いたコピー方式のGCが開示されている。図17は従来のコピー方式のGC処理を概念的に示すメモリマップである。図17はToスペースとして用いられるメモリ領域を示しており、sとして示した矢印はスキャンポインタであり、bとして示した矢印はフリーポインタを示している。また非特許文献2に開示された方法では、未走査データオブジェクトの先頭を指示するスキャンポインタと、空き領域の先頭及び未走査データの末尾を指示するフリーポインタと以外に、pとして示す未走査データオブジェクトの一部を指す部分使用ページ内走査ポインタを用いる。なお図中の破線は、記録領域の区切りであるページの境界を示している。
非特許文献2に示す方法では、スキャンポインタとフリーポインタとの間の走査より優先的に、部分使用ページ内走査ポインタとフリーポインタとの間の走査を行う。そしてデータのコピー先となる位置を示すフリーポインタが、部分使用ページ内走査ポインタと異なるページにまで移動した場合、部分使用ページ内走査ポインタをフリーポインタと同じページの先頭を示す位置を指示するように再設定する。部分使用ページ内走査ポインタがフリーポインタに追いついた場合、スキャンポインタが指示する位置から走査を行う。
非特許文献2に示す方法では、スキャンポインタは部分使用ページ内走査ポインタによる走査を既に行っているデータオブジェクトを再度走査する可能性を有するが、参照関係を有するデータオブジェクト同士は同じページとなる可能性が高くなる。即ち参照元のデータオブジェクトと参照先のデータオブジェクトとをできるだけ同一のページに置くことが可能となる一方で、夫々のページの内部では幅優先順のコピーが行われることとなる。
図18は従来のコピー方式のGC処理によるデータの配置を概念的に示す説明図である。図18では、上述の非特許文献2に示される様に関連するデータの位置が接近するようにグループ化して配置する方法を、データ間の参照関係が木構造をなす構成のデータオブジェクト群に適用する場合のデータオブジェクトの配置を示している。
チーニイ(Cheney),非再帰的リスト圧縮アルゴリズム(A NonrecursiveList Compacting Algorithm),「コミュニケーションズ・オブ・ジ・エイ・シー・エム(Communications of the ACM.)」,(米国),Vol.13,No.11,pp.677-678,1970 ムーン(Moon),大規模リスプシステムでのゴミ集め(Garbage Collection in a Large Lisp System,Proc.of Conference on Lisp and Functional Programming) ,「リスプと関数プログラミングに関する国際会議予稿集(Proc.ofConference on Lisp and Functional Programming)」,(米国),pp235-246,1984,Aug
しかしながら従来の非特許文献1に記載されているように幅優先順にデータオブジェクトを配置する方法では、参照関係にあるデータオブジェクト同士が離れた位置に配置されることが多く、GC処理自体及びGC完了後の計算において、データオブジェクトに対するメモリアクセスの局所性が劣化するという問題がある。これは応用プログラムでは、多くの場合、データオブジェクトへの参照を幅優先順に辿ることはないからである。
また従来の深さ優先順にデータオブジェクトを配置する方法では、幅優先順と比較してメモリアクセスの局所性は一部改善されるが、処理時に必要となるスタックは、最悪の場合、生きているデータオブジェクトの個数に比例するという問題がある。また例えば図15(a)に示すような関係でデータオブジェクトを配置した場合、図15(a)中、左方向に参照されるデータオブジェクトについての局所性は優れているが、右方向に参照されるデータオブジェクトについての局所性は劣っているという問題がある。
さらに従来の非特許文献2に記載された方法では、参照元のデータオブジェクトと参照先のデータオブジェクトとをできるだけ同一のページに置くことを目的としている一方で、夫々のページの内部については幅優先順での配置が行われる。従ってページ単位でメモリ及びディスク間のデータ転送や仮想アドレスから実アドレスへの変換を行う仮想記憶の面からは局所性に優れているが、キャッシュの面からは局所性が劣っているという問題がある。
本発明は斯かる事情に鑑みてなされたものであり、局所性に優れた配置、特に一つのサイズに限らず、ページ、キャッシュ等の様々なサイズに対して局所性に優れた配置を実現するデータ処理方法、該データ処理方法を適用したデータ処理装置、及び該データ処理装置を実現するためのコンピュータプログラムの提供を目的とする。
第1発明に係るデータ処理方法は、走査対象として順次配列されるデータオブジェクトを、優先順位が付けられた複数の階層レベル夫々について、列の先頭側から後方側へと走査し、走査中のデータオブジェクトが指している他のデータオブジェクトを選択的に次に配列して走査対象に追加するデータ処理装置を用いたデータ処理方法であって、第1の階層レベルの目標を所定の計算方法で設定後、第1の階層レベルについて走査し、走査中の第1のデータオブジェクトが所定の条件で第2のデータオブジェクトを指している場合、かつ、次に配列する位置が第1の階層レベルの目標に達していない場合、第2のデータオブジェクトを次に配列して走査対象に加え、配列後、第1の階層レベルの優先順位が最高でない場合、最高の優先順位がつけられた階層レベルについての走査へと処理を切り替え、第1の階層レベルについての走査の対象がなくなった場合、第1の階層レベルの優先順位が最低であるとき、処理を中断し、第1の階層レベルの優先順位が最低でないとき、一段優先順位の低い第2の階層レベルについての走査へと処理を切り替えることを特徴とする。
本発明では、データオブジェクトが、複数の階層レベル毎にグループ化された状態で配列されるので、局所性に優れた配置、特に様々なデータ転送の単位、アドレス変換の単位に対しても局所性に優れ、更にはキャッシュ場所の競合に関しても優れた配置を実現することが可能である。
第2発明に係るデータ処理方法は、第1発明において、前記第1の階層レベルの目標の所定の計算方法は、目標設定時の次に配列する位置から第1の階層レベルについて決められた一定距離後方の位置を求める計算方法、又は目標設定時の次に配列する位置から後方に第1の階層レベルについて決められた最初の区切り位置を求める計算方法であることを特徴とする。
本発明では、階層レベル毎に決められている一定距離後方の位置に目標を決定することにより、例えばキャッシュ場所の競合に関して優れた配置を実現することが可能であり、また最初の区切り位置に目標を決定することにより、例えば様々なデータ転送の単位、アドレス変換の単位の局所性に優れた配置を実現することが可能である。
第3発明に係るデータ処理方法は、第1発明又は第2発明において、一のレベルで走査したデータオブジェクトに対しては、他のレベルでの走査を省略することを特徴とする。
本発明では、多重の走査を回避することで、全体としての処理速度を向上させることが可能である。
第4発明に係るデータ処理方法は、第1発明乃至第3発明のいずれかにおいて、前記走査中の第1のデータオブジェクトが第2のデータオブジェクトを指しているときの所定の条件とは、第2のデータオブジェクトがまだ配列されていないという条件であることを特徴とする。
本発明では、データオブジェクトの再配列に利用して、局所性に優れた配置を実現する。
発明に係るデータ処理装置は、走査対象として順次配列されるデータオブジェクトを、優先順位が付けられた複数の階層レベル夫々について、列の先頭側から後方側へと走査し、走査中のデータオブジェクトが指している他のデータオブジェクトを選択的に次に配列して走査対象に追加するデータ処理装置であって、第1の階層レベルの目標を所定の計算方法で設定後、第1の階層レベルについて走査する手段と、走査中の第1のデータオブジェクトが所定の条件で第2のデータオブジェクトを指している場合、かつ、次に配列する位置が第1の階層レベルの目標に達していない場合、第2のデータオブジェクトを次に配列して走査対象に加える手段と、配列後、第1の階層レベルの優先順位が最高でない場合、最高の優先順位がつけられた階層レベルについての走査へと処理を切り替える手段と、第1の階層レベルについての走査の対象がなくなった場合、第1の階層レベルの優先順位が最低であるとき、処理を中断する手段と、第1の階層レベルの優先順位が最低でないとき、一段優先順位の低い第2の階層レベルについての走査へと処理を切り替える手段とを備えることを特徴とする。
本発明では、データオブジェクトが、複数の階層レベル毎にグループ化された状態で配列されるので、局所性に優れた配置、特に様々なデータ転送の単位、アドレス変換の単位に対しても局所性に優れ、更にはキャッシュ場所の競合に関しても優れた配置を実現することが可能である。
発明に係るコンピュータプログラムは、コンピュータに、走査対象として順次配列されるデータオブジェクトを、優先順位が付けられた複数の階層レベルの夫々について、列の先頭側から後方側へと走査させ、走査中のデータオブジェクトが指している他のデータオブジェクトを選択的に次に配列して走査対象に追加させるコンピュータプログラムであって、コンピュータに、第1の階層レベルの目標を所定の計算方法で設定後、第1の階層レベルについて走査させる手順と、コンピュータに、走査中の第1のデータオブジェクトが所定の条件で第2のデータオブジェクトを指している場合、かつ、次に配列する位置が第1の階層レベルの目標に達していない場合、第2のデータオブジェクトを次に配列して走査対象に加えさせる手順と、コンピュータに、配列後、第1の階層レベルの優先順位が最高でない場合、最高の優先順位がつけられた階層レベルについての走査へと処理を切り替えさせる手順と、第1の階層レベルについての走査の対象がなくなった場合、コンピュータに、第1の階層レベルの優先順位が最低であるとき、処理を中断させる手順と、コンピュータに、第1の階層レベルの優先順位が最低でないとき、一段優先順位の低い第2の階層レベルについての走査へと処理を切り替えさせる手順とを実行させることを特徴とする。
本発明では、コンピュータにて実行することにより、コンピュータがデータ処理装置として動作し、データオブジェクトが、複数の階層レベル毎にグループ化された状態で配列されるので、局所性に優れた配置、特に様々なデータ転送の単位、アドレス変換の単位に対しても局所性に優れ、更にはキャッシュ場所の競合に関しても優れた配置を実現することが可能である。
本発明に係るデータ処理方法、データ処理装置及びコンピュータプログラムでは、順次配列される走査対象に優先順位を付した複数の階層レベル夫々について走査し、走査中のデータオブジェクトが指している他のデータオブジェクトを選択的に次に配列して走査対象に追加する。このとき各階層レベルに対して目標を設定し、第1の階層レベルについて走査し、走査中の第1のデータオブジェクトが所定の条件で第2のデータオブジェクトを指しており、そのデータオブジェクトを次に配列する位置が第1の階層レベルの目標に達していない場合、第2のデータオブジェクトを次に配列して走査対象に加える。第1の階層レベルの優先順位が最高でない場合、最高の優先順位が付けられた階層レベルについての走査へと処理を切り替え、第1の階層レベルについての走査の対象がなくなった場合、第1の階層レベルの優先順位が最低であるとき、処理を中断し、第1の階層レベルの優先順位が最低でないとき、一段優先順位の低い第2の階層レベルについての走査へと処理を切り替える。
この構成により、参照元となる第1のデータオブジェクトと、参照先となる第2のデータオブジェクトとが同じブロック(転送単位)に配置される可能性が高まり、また、アクセス頻度の高い複数のデータオブジェクトが貯え場所が競合するアドレスに配置されない様になる可能性が高くなることから、参照を辿ることによりデータへのアクセスの際に、最近のデータブロック転送結果の貯え、或いはアドレス変換結果の蓄えが再利用される確率が高くなり、平均アクセス時間を短縮することが可能である等、優れた効果を奏する。
以下、本発明をその実施の形態を示す図面に基づいて詳述する。
図1は本発明のデータ処理装置の構成を示すブロック図である。図1中10は汎用コンピュータ等のコンピュータを用いた本発明のデータ処理装置であり、データ処理装置10は、装置全体を制御するCPU11、本発明のコンピュータプログラム20及びデータ等の各種情報を記録するCD−ROM等の記録媒体から、各種情報を読み取るCD−ROMドライブ等の補助記憶手段12、並びに補助記憶手段12により読み取った各種情報を記録するハードディスク13及びRAM14を備え、CPU11、補助記憶手段12、ハードディスク13及びRAM14は、バスライン15により夫々接続されている。さらにCPU11は、演算を行う実行部11a、論理アドレスを物理アドレスに変換した結果等の情報の記録に用いられるTLB(Translation Look−aside Buffer)11b、並びに一次キャッシュメモリ11cを備え、更にCPU11とバスライン15との間には2次キャッシュメモリ16が配設されている。
そして記録媒体から補助記憶手段12により読み取った本発明のコンピュータプログラム20等の各種情報を、ハードディスク13、RAM14、一次キャッシュメモリ11c、二次キャッシュメモリ16等の各種メモリ領域に記録して、CPU11の実行部11aにより実行することで、コンピュータは本発明のデータ処理装置10として動作する。なお本発明のコンピュータプログラム20は単独で実行されるのではなく、Java(登録商標)、Lisp、C#等のプログラミング言語を用いて作成された主プログラムの実行時に、主プログラムの実行に必要なメモリ管理を補助するプログラムとして実行される。また主プログラムの一部に本発明のコンピュータプログラム20が含まれている形態でもよい。
主プログラムの実行時には、各種データへのアクセス時に、最近のブロック転送結果、アドレス変換結果等の情報を実行部11aに近い一次キャッシュメモリ11c等の記録手段に貯え、再利用する記憶階層を用いる。最近のブロック転送結果等の情報は、キャッシュブロック、仮想記憶(VM:Virtual Memory)のページ、ファイル等の単位で貯えられる。最近のアドレス変換結果は、例えばTLB11b内に貯えられる。
次に本発明のデータ処理装置10の処理を説明する。本発明のデータ処理装置10によるデータ処理方法では、仮想メモリ上でデータオブジェクトの再配置を行うものであり、ここではコピー方式のGCを実行する場合において、仮想アドレス空間の仮想メモリに確保されたFromスペースのデータオブジェクトの中で、今後アクセスされる可能性のあるデータオブジェクトを仮想アドレス空間の仮想メモリに確保されたToスペースにコピーする形態に適用する場合を例示する。
先ず本発明のデータ処理方法によるデータオブジェクトの配置結果について説明する。図2は本発明のデータ処理方法による配置の対象となる各データオブジェクトの構成を概念的に示す説明図である。図2に示すように本発明の処理方法が適用されるデータオブジェクト群は、一方のデータオブジェクトが他方のデータオブジェクトを指す参照関係を持つことができる。図2では説明を容易にするため各データ間の参照関係により単純な2分木の木構造を構成する形態を例示している。そして木構造を構成するデータオブジェクトを含むデータオブジェクト群は、一の階層レベルに属する一のグループに他の階層レベルに属する複数のグループが含まれるよう入れ子状に設定された各階層レベルの夫々のグループによりグループ化される。図2に示す具体例では、直線にて囲まれたレベル0の階層レベルのグループにより各グループが区分されており、レベル0の階層レベルの複数のグループは、一点鎖線にて囲まれたレベル1の階層レベルの一のグループに含まれ、レベル1の階層レベルのグループによっても各データオブジェクトはグループ化されることが示されている。更にレベル1の階層レベルの複数のグループは、破線にて囲まれたレベル2の階層レベルの一のグループに含まれ、レベル2の階層レベルのグループによっても各データオブジェクトはグループ化されることが示されている。レベルN+1(Nは0以上の整数)の階層レベルのグループは、レベルNの先頭グループとその中の葉に相当するデータオブジェクトから指される複数のレベルNの階層レベルの後続グループから構成されるようにする。
図3は本発明のデータ処理方法によりメモリ領域に配置したデータオブジェクトを概念的に示すメモリマップである。図3では、レベル0の階層レベルのグループを直線にて示し、レベル1の階層レベルのグループを一点鎖線にて示し、そしてレベル2の階層レベルのグループを破線にて示している。図3に示すように本発明の処理方法にてメモリ領域に配置されたデータオブジェクトは、どの階層レベルのグループにおいても参照関係にあるデータオブジェクトの局所性が優れている。図3に示す具体例では、レベル1の階層レベルの同一のグループに含まれるレベル0の階層レベルの夫々のグループは、参照関係にあるデータオブジェクトが近い位置になるように配置されていることが示されている。更にレベル2の階層レベルの同一のグループに含まれるレベル1の階層レベルの夫々のグループは、先頭グループに続けて、複数の後続グループを並べる様に配置する。
図2及び図3を用いて説明した様に本発明のデータ処理方法により、再配置されたデータオブジェクトは、入れ子状の複数階層でグループ化され、レベルN+1(Nは自然数)の階層レベルの同一のグループに含まれるレベルNの階層レベルの夫々のグループは、参照関係にあるデータオブジェクトを含むグループ同士が近い位置になるように配置される。従って各グループを、1次キャッシュの転送単位に対応するメモリブロック、2次キャッシュの転送単位に対応するメモリブロック、及び仮想記憶のページ等の転送単位、変換単位にできるだけ一致させる。あるいは各グループを1次キャッシュの容量、2次キャッシュの容量以下のサイズになるようにすることで、転送結果や変換結果を再利用する確率が高まり、平均アクセス時間が短縮される。
次に本発明のデータ処理装置10の処理の具体例について説明する。図4は本発明のデータ処理装置10の初期化処理を示すフローチャートである。図4に示す初期化処理は、データ処理装置10が、CPU11の制御により本発明のコンピュータプログラム20を実行することにより行われる。データ処理装置10では、各階層レベルのグループにおいてデータオブジェクトを配置する位置の限界となる目標を先頭オブジェクトの位置から計算する計算式の受付又は設定読取を行い(S101)、グループ内を走査する際の走査ポインタをレベル1以上の各階層レベルについて準備し、走査の中断中として再配置先となるメモリ領域の配列の先頭に設定し(S102)、空き領域の先頭の位置を指示するフリーポインタを設定する(S103)。初期化処理とはデータオブジェクトの再配置を行う前に各階層レベルのグループの目標を先頭オブジェクトの位置から計算する計算式の受付又は設定読取を行い設定する処理であり、人為的な操作によりキーボード等の入力手段を用いて入力される計算式を受け付けるようにしても良く、本発明のコンピュータプログラム20の内部パラメータとして予め設定されている計算式を読み取る様にしても良い。また計算式を予めコンパイルしたり、展開したりしても良い。また設定する計算式としては、そのレベルで着目するブロック区分において、先頭オブジェクトを含むブロックの末尾を結果とする計算式、先頭オブジェクトの位置からそのレベルが着目するグループサイズに相当する一定の距離だけ後方を結果とする計算式、が用いられる。
図5は本発明のデータ処理方法におけるメモリ領域及び各階層レベルのグループを概念的に示すメモリマップである。図5は初期化処理後の状態であり、Mとして示した領域がメモリ領域Mを示し、bとして示した矢印がフリーポインタbを示している。そしてs1として示した矢印がレベル1の階層レベルに対して設定されたスキャンポインタs1を示し、s2、s3及びs4として示した矢印が夫々レベル2、レベル3及びレベル4の階層レベルに対して夫々設定された走査ポインタs2、走査ポインタs3及び走査ポインタs4を示している。
メモリ領域M内の破線で示した四角形が配置されるデータオブジェクト列Dの先頭データオブジェクトを示しており、データオブジェクト内の黒点が他のデータオブジェクトを指す参照を示している。なお破線にて示す位置にデータオブジェクトDが配置された後、フリーポインタbは現在の位置から移動する。L1として示した破線の半直線及び該半直線に直交する線分が、レベル1の階層レベルのグループに対してデータオブジェクトを配置する位置の限界として設定される目標を示している。図5に示す初期化処理後の状態では、目標は未設定の状態であるが、後述する様に走査の前に所定の計算方法により順次目標が設定される。本発明にて用いられる目標を設定するための計算方法では、そのレベルで着目するブロック区分において先頭のデータオブジェクトを含むブロックの末尾を結果とする計算式による計算結果、及び先頭のデータオブジェクトの位置からそのレベルが着目するグループサイズに相当する一定の距離だけ後方を結果とする計算式による計算結果が設定される目標となる。従って設定されるべき目標間の距離は必ずしも一定ではない。さらにL2、L3及びL4として示した破線の半直線及び半直線に直交する線分により、レベル2、レベル3及びレベル4の夫々の階層レベルのグループに設定されるべき目標を示している。
なお本発明の各階層に対して設定された夫々の走査ポインタs1、s2、s3、s4には、グループのサイズが小さい階層レベル程優先して走査が行われるように優先順位が設定される。即ちレベル1の階層レベルに対する走査ポインタs1が最も優先度が高く、レベル2の階層レベルの走査ポインタs2、レベル3の階層レベルの走査ポインタs3、そしてレベル4の階層レベルの走査ポインタs4の順で優先順位が低くなる。なお夫々の階層レベルに設定されている目標は、固定されたものではなく、配置されるデータオブジェクトが目標に達したとき、また走査の対象がなくなったとき、当該階層レベルの次の目標を設定する。
図6は本発明のデータ処理装置10のレベル1の階層レベルの走査ポインタs1による走査処理を示すフローチャートである。図6に示す走査処理は、データ処理装置10が、CPU11の制御により本発明のコンピュータプログラム20を実行することにより行われる。初期化処理の終了後、データ処理装置10は、走査する階層レベルに対し、データオブジェクトを配置する位置の限界として階層レベルに対応する目標を所定の計算方法を用いて計算し(S201)、計算した目標を階層レベルに対して設定する(S202)。所定の計算方法とは、目標設定時の次に配列する位置から当該階層レベルについて決められた一定距離後方の位置を求める計算方法、又は目標設定時の次に配列する位置から後方に当該階層レベルについて決められた最初の区切り位置までの範囲を求める計算方法である。言い換えれば、当該レベルの前回の目標からの論理的なアドレス上の距離がレベル毎に決められたグループサイズに基づく所定値である位置を計算する方法、又は先頭に配置されているデータオブジェクトの位置からの論理的なアドレス上の距離が、ブロックサイズに基づく所定値である位置を計算する方法であり、前回の目標からの距離が短い方の目標が設定される。なお最初の目標を計算する場合においては前回の目標とは先頭に配置されているデータオブジェクトの位置となる。グループサイズは、優先順位の高い方が低い方以下となる様に階層レベル毎に設定されるサイズであり、ブロックサイズは、転送単位に基づいて設定されるサイズである。
そして第1のメモリ領域に配列されているデータオブジェクトの走査及び該走査に基づくデータオブジェクトの配置が行われるのであるが、最も優先順位が高いレベル1の階層に対する走査ポインタs1を用いた走査から開始される。データ処理装置10では、走査ポインタs1が指す場所及びフリーポインタbが指す場所を比較し(S203)、異なる場所を指している場合(S203:NO)、走査ポインタs1が指す場所(ワード)のデータオブジェクト列Dに参照、所謂ポインタが格納されているか否かを判定する(S204)。
ステップS204において、データオブジェクト列Dに参照が含まれていると判定した場合(S204:YES)、データ処理装置10では、データオブジェクト列Dに含まれている参照が指す参照先が、第2のメモリ領域に記録されているデータオブジェクトであるか否かを判定し(S205)、参照が指す参照先が第2のメモリ領域に記録されているデータオブジェクトであると判定したとき(S205:YES)、第2のメモリ領域に記録されている参照先のデータオブジェクトが、既に第1のメモリ領域に配置されているか否かを判定する(S206)。
ステップS206において、第2のメモリ領域に記録されている参照先のデータオブジェクトが、未だ第1のメモリ領域に配置されていないと判定した場合(S206:NO)、データ処理装置10では、参照先のデータオブジェクトを配置すべき場所が目標に達しているか否かを判定する(S207)。即ちステップS203〜S205の処理にて走査ポインタs1が指すワード(場所)のデータオブジェクト列Dを走査し、走査したデータオブジェクト列Dにより指されている参照先のデータオブジェクトの配置先とすべき、フリーポインタbが指す位置が、ステップS202にて当該レベルに対して設定された目標に達しているか否かを判定する。またステップS207における判定は、既に再配置したデータオブジェクトの位置が目標に達したか否かの判定としても良い。
ステップS207において、参照先のデータオブジェクトを配置すべき位置が目標に達していないと判定した場合(S207:NO)、データ処理装置10では、走査ポインタs1が指すデータオブジェクト列Dにより指されている、第2のメモリ領域に記録されている参照先のデータオブジェクトを、フリーポインタbが指す位置、即ち第1のメモリ領域に配列されているデータオブジェクト列Dの後側に配置し(S208)、走査ポインタs1が指すデータオブジェクト列Dにより指される参照先を、新たに配置したデータオブジェクトを指すように置き換える(S209)。ステップS209にて参照先を置き換えるまでデータオブジェクト列Dに指されていた第2のメモリ領域に記録されているデータオブジェクトには、新たな配置先となる第1のメモリ領域を転送先として指す参照を格納する。
そしてデータ処理装置10では、ステップS208にて新たに配置したデータオブジェクトの後側の空き領域を指すようにフリーポインタbを移動し(S210)、レベル1の階層レベルのグループに対する走査ポインタs1を1ワード分後側へ移動し(S211)、ステップS203へ進み、以降の処理を実行する。即ちステップS208〜S211の処理を行うことにより、走査に基づいてデータオブジェクトを配置した後、当該レベルの階層レベルに対応する走査ポインタs1の参照が移動し、新たに指されたワードがステップS203以降の処理の対象となる。
ステップS204において、走査ポインタs1が指すワードのデータオブジェクト列Dに参照が含まれていないと判定した場合(S204:NO)、データオブジェクトの再配置は不要と判断し、ステップS211へ進み、以降の処理を実行する。
ステップS205において、データオブジェクト列Dに含まれている参照が指す参照先が、第2のメモリ領域に記録されているデータオブジェクトではないと判定した場合(S205:NO)、データオブジェクトの再配置は不要であると判断し、ステップS211へ進み、以降の処理を実行する。
ステップS206において、データオブジェクト列Dにより指される、第2のメモリ領域に記録されている参照先のデータオブジェクトが、既に第1のメモリ領域に配置されていると判定した場合(S206:YES)、データ処理装置10では、データオブジェクト列Dにより指される参照先を、第1のメモリ領域に既に配置されているのデータオブジェクトを指すように置き換え(S212)、ステップS211へ進み、以降の処理を実行する。
ステップS207において、参照先のデータオブジェクトを配置すべき位置が目標に達していると判定した場合(S207:YES)、データ処理装置10では、レベル1の階層レベルに対する走査ポインタs1による以降の走査を中断して(S213)、走査ポインタs1を、フリーポインタbの位置まで移動し(S214)、レベル1の階層レベルより一段優先順位の低いレベル2の階層レベルに対応する走査ポインタs2による走査処理に進む(S215)。ステップS214にて走査ポインタs1をフリーポインタbの位置まで移動することにより、移動前の走査ポインタs1とフリーポインタbとの間に配列されているデータオブジェクトに対しては、走査ポインタs1による走査を行わないことになるが、これらのデータオブジェクトに対しては、走査ポインタs1より優先度が低い走査ポインタs2、s3、s4等の走査ポインタにより走査を行う。
ステップS203において、走査ポインタs1が指す場所及びフリーポインタbが指す場所が一致すると判定した場合(S203:YES)、ステップS215へ進み、以降の処理を実行する。
図7は本発明のデータ処理装置10のレベルN(Nは自然数)の階層の走査ポインタsNによる走査処理を示すフローチャートである。図7に示す走査処理は、データ処理装置10が、CPU11の制御により本発明のコンピュータプログラム20を実行することにより行われる。レベルN(Nは2以上の自然数)の階層レベルの走査ポインタsNによる走査処理は、レベルN−1の階層レベルの走査ポインタsN−1による走査処理において、所定の条件を満足した場合に行われる。例えば図6を用いて示したレベル1の階層レベルの走査ポインタs1による走査処理のステップS207において、参照先のデータオブジェクトを配置すべき位置が目標に達していると判定した場合、又はステップS203において、走査ポインタs1が指す場所及びフリーポインタbが指す場所が同じであると判定した場合、レベル2の階層レベルの走査ポインタs2による走査処理が開始される。
データ処理装置10は、走査する階層レベルに対し、データオブジェクトを配置する位置の限界として階層レベルに対応する目標を所定の計算方法を用いて計算し(S301)、計算した目標を対応する階層レベルに対して設定する(S302)。所定の計算方法とは、目標設定時の次に配列する位置から当該階層レベルについて決められた一定距離後方の位置までの範囲を求める計算方法、又は目標設定時の次に配列する位置から後方に当該階層レベルについて決められた最初の区切り位置までの範囲を求める計算方法である。言い換えれば、当該レベルの前回の目標からの論理的なアドレス上の距離がレベル毎に決められたグループサイズに基づく所定値である位置を計算する方法、又は先頭に配置されているデータオブジェクトの位置からの論理的なアドレス上の距離が、ブロックサイズに基づく所定値である位置を計算する方法であり、前回の目標からの距離が短い方の目標が設定される。
データ処理装置10では、走査ポインタsNが指す場所及びフリーポインタbが指す場所を比較し(S303)、異なる場所を指している場合(S303:NO)、走査ポインタsNが指すデータオブジェクト列Dに参照、所謂ポインタが格納されているか否かを判定する(S304)。
ステップS304において、データオブジェクト列Dに参照が含まれていると判定した場合(S304:YES)、データ処理装置10では、データオブジェクト列Dに含まれている参照が指す参照先が、第2のメモリ領域に記録されているデータオブジェクトであるか否かを判定し(S305)、参照が指す参照先が第2のメモリ領域に記録されているデータオブジェクトであると判定したとき(S305:YES)、第2のメモリ領域に記録されている参照先のデータオブジェクトが、既に第1のメモリ領域に配置されているか否かを判定する(S306)。
ステップS306において、第2のメモリ領域に記録されている参照先のデータオブジェクトが、未だ第1のメモリ領域に配置されていないと判定した場合(S306:NO)、データ処理装置10では、参照先のデータオブジェクトを配置すべき位置がレベルNの階層レベルに対して設定された目標に達しているか否かを判定する(S307)。即ちステップS303〜S305の処理にて走査ポインタsNが指す場所のデータオブジェクト列Dを走査し、走査したデータオブジェクト列Dにより指されている参照先のデータオブジェクトの配置先とすべき、フリーポインタbが指す位置が、ステップS302にて当該レベルに対して設定された目標に達しているか否かを判定する。またステップS307における判定は、既に再配置したデータオブジェクトの位置が目標に達したか否かの判定としても良い。
ステップS307において、参照先のデータオブジェクトを配置すべき位置が目標に達していないと判定した場合(S307:NO)、データ処理装置10では、走査ポインタsNが指す場所のデータオブジェクト列Dにより指されている、第2のメモリ領域に記録されている参照先のデータオブジェクトを、フリーポインタbが指す位置、即ち第1のメモリ領域に配列されているデータオブジェクト列Dの後側に配置し(S308)、走査ポインタsNが指すデータオブジェクト列Dにより指される参照先を、新たに配置したデータオブジェクトを指すように置き換える(S309)。ステップS309にて参照先を置き換えるまでデータオブジェクト列Dに指されていた第2のメモリ領域に記録されているデータオブジェクトには、新たな配置先となる第1のメモリ領域を転送先として指す参照を格納する。
そしてデータ処理装置10では、ステップS308にて新たに配置したデータオブジェクトの後側の空き領域を指示するようにフリーポインタbを移動し(S310)、レベルNの階層レベルのブロックに対する走査ポインタsNを1ワード分後側へ移動し(S311)、最も優先度が高いレベル1の階層レベルに対応する走査ポインタs1による走査処理に進む(S312)。
ステップS304において、走査ポインタsNが指すデータオブジェクト列Dに参照が含まれていないと判定した場合(S304:NO)、データオブジェクトの再配置は不要と判断し、データ処理装置10では、レベルNの階層レベルのグループに対する走査ポインタsNを1ワード分後側へ移動し(S313)、ステップS303へ進み、以降の処理を実行する。
ステップS305において、データオブジェクト列Dに含まれている参照が指す参照先が、第2のメモリ領域に記録されているデータオブジェクトではないと判定した場合(S305:NO)、データオブジェクトの再配置は不要であると判断し、ステップS313へ進み、以降の処理を実行する。
ステップS306において、データオブジェクト列Dにより指される、第2のメモリ領域に記録されている参照先のデータオブジェクトが、既に第1のメモリ領域に配置されていると判定した場合(S306:YES)、データ処理装置10では、データオブジェクト列Dにより指される参照先を、第1のメモリ領域に既に配置されているデータオブジェクトを指すように置き換え(S314)、ステップS313へ進み、以降の処理を実行する。
ステップS307において、参照先のデータオブジェクトを配置すべき位置が目標に達していると判定した場合(S307:YES)、データオブジェクトの配置を行うと参照関係にあるデータオブジェクト同士がブロックを超えて配置されると判断し、データ処理装置10では、レベルNの階層レベルに対する走査ポインタsNによる以降の走査を中断して(S315)、走査ポインタsNを、フリーポインタbの位置まで移動し(S316)、レベルNの階層レベルよりブロックのサイズが一段階大きいレベルN+1の階層に対応する走査ポインタsN+1による走査処理に進む(S317)。
ステップS303において、走査ポインタsNが指す場所及びフリーポインタbが指す場所が一致していると判定した場合(S303:YES)、ステップS317へ進み、以降の処理を実行する。
レベルN+1の処理に進もうとして、レベルN+1が存在しなかった場合、階層的グループ化による再配置全体を終了する。なお最も優先度が低いレベルNの階層レベルの目標を第のメモリ領域の末尾に設定するようにしても良い。
図8は本発明のデータ処理方法におけるメモリ領域及び各階層のグループを概念的に示すメモリマップである。図8にて用いられている各種符号は図5と同様であるので、図5を参照するものとし、その説明を省略する。なお黒丸及び矢印は参照関係を示しており、黒丸が付されたデータが矢印により示されているデータを指示している。またL1の太線の部分は、走査ポインタs1による走査が完了した箇所を示している。図8は、図5の状態から走査を開始し、レベル1の階層レベルに対する走査ポインタs1による走査が行われている状態を示している。また図8は、走査ポインタs1の走査により、既に第1のメモリ領域Mに2ワードのデータオブジェクト列D4個分が配置されているが、参照先のデータオブジェクトを配置すべきフリーポインタbが指している位置が目標に達している状態を示している。このため図8に示す状態の後、走査ポインタs1による走査は中断(図6のステップS213)され、走査ポインタs1の移動(図6のステップS214)を行った後、レベル1の階層レベルより優先度が一段階低いレベル2の階層レベルに対応する走査ポインタs2による走査が開始(図6のステップS215)されることになる。
図9は本発明のデータ処理方法におけるメモリ領域及び各階層のグループを概念的に示すメモリマップである。図9にて用いられている各種符号は図5及び図8と同様であるので、図5及び図8を参照するものとし、その説明を省略する。なおL2の太線の部分は、走査ポインタs2による走査が完了した箇所を示している。ただし二重線で示した箇所は、走査ポインタs1により既に走査が完了しているため、走査をスキップしている。走査のスキップは、例えばレベル1で行った走査の記録をレベル2の走査に引き継ぐことにより実行される。図9は、図8の状態の後、レベル2の階層に対応する走査ポインタs2による走査を開始され、その走査により新たなデータオブジェクトが第1のメモリ領域Mに配置された状態を示している。図9に示す状態の後、フリーポインタbの位置の移動(図7のステップS310)、及び走査ポインタs2の移動(図7のステップS311、但しN=1)を行った上で、走査ポインタs1による走査が開始(図7のステップS312)されることになる。
図10は本発明のデータ処理方法におけるメモリ領域及び各階層のグループを概念的に示すメモリマップである。図10にて用いられている各種符号は図5、図8及び図9と同様であるので、図5、図8及び図9を参照するものとし、その説明を省略する。図10は、図9の状態の後、更に走査が進み、走査ポインタs2による走査が行われている状態を示している。また図10では、走査ポインタs2が指すデータオブジェクトを配置すべきフリーポインタが指している位置が目標に達している状態を示している。走査ポインタs2が指すデータオブジェクト列Dにより指されるデータオブジェクトの配置先とすべき位置が目標に達しているため、図10に示す状態の後、走査ポインタs2による走査は中断(図7のステップS315、但しN=1)され、走査ポインタs2の移動(図7のステップS316)を行った後、レベル2の階層レベルに対応する走査ポインタs2による走査が開始(図7のステップS317)されることになる。
図11は本発明のデータ処理方法におけるメモリ領域及び各階層のグループを概念的に示すメモリマップである。図11にて用いられている各種符号は図5、図8乃至図10と同様であるので、図5、図8乃至図10を参照するものとし、その説明を省略する。なおL3の太線の部分は、走査ポインタs3による走査が完了した箇所を示している。図11は、図10の状態の後、更に走査が進み、走査ポインタs3による走査が行われている状態を示している。また図11では、走査ポインタs3が指すデータオブジェクト列Dの位置と、フリーポインタbが指す位置とがレベル3の階層レベルの同じブロックに含まれていない状態を示している。走査ポインタs3が指すデータオブジェクト列Dにより指されるデータオブジェクトの配置先とすべき位置が、走査ポインタs3とレベル3の階層レベルの異なるブロックに含まれているため、図11に示す状態の後、走査ポインタs3による走査は中断(図7のステップS315、但しN=2)され、走査ポインタs3の移動(図7のステップS316)を行った後、レベル4の階層レベルに対応する走査ポインタs4による走査が開始(図7のステップS317)されることになる。
図12は本発明のデータ処理装置10の第2の記録領域のメモリ領域入替処理を示すフローチャートである。図12に示すメモリ領域入替処理は、データ処理装置10が、CPU11の制御により本発明のコンピュータプログラム20を実行することにより行われる。データ処理装置10では、図及び図を用いて説明した走査処理により、Toスペースとして用いられる第1のメモリ領域に配列されたデータを全て走査した後、Toスペースとして用いられている第1のメモリ領域とFromスペースとして用いられる第2のメモリ領域との役割を入れ替える(S401)。このようにしてコピー方式のGC処理が完了する。
次に本発明のデータ処理方法により再配置したデータオブジェクトに対する処理時間の実験結果について説明する。図13は様々な処理方法により再配置したデータオブジェクトに対する処理時間の結果を示すグラフである。図13において、横軸は、2分木探索木のデータのノードの数を示し、縦軸は探索時間を示している。図13はランダムに作成された2分木探索木を構成するデータを各処理方法により再配置し、再配置したデータに対する探索を行ったものである。図13中○は、本発明のデータ処理方法を用いて再配置を行ったデータに対する実験結果を示している。なお本発明のデータ処理方法の実行において、5段階の階層レベルのグループのサイズを設定している。さらに図13中●は再配置していない状態のデータに対する実験結果、△は例えば背景技術の非特許文献1として示した幅優先順で再配置した状態のデータに対する実験結果、並びに□及び×は例えば背景技術の非特許文献2として示したグループ化して再配置した状態に対する実験結果であり、□はページをブロックとしてグループ化しており、×はキャッシュブロックについてグループ化している。図13(a)は、UltraSPARC−IIe(登録商標)の500MHzのCPUを備える装置を用いており、グループのサイズとしては、2次キャッシュブロックサイズである64B、ページサイズである8KB、1次キャッシュ容量である16KB及び2次キャッシュ容量である256KBを設定している。図13(b)は、Pentium4(登録商標)の1.7GHzのCPUを備える装置を用いての実験結果であり、2次キャッシュブロックサイズである128B、ページサイズである4KB、一次キャッシュ容量である8KB及び2次キャッシュ容量である256KBを設定している。
図13(a)に示す様に、○で示した本発明のデータ処理方法を用いて再配置したデータに対する探索時間が最も短いという結果が得られている。ノード数が3200000個(約73.2MB)のデータに対する結果では、△で示した幅優先順で再配置した結果と比べて61%の処理速度の向上が見込めるという結果になった。また×で示したキャッシュ単位でグループ化する方法により再配置した結果と比べても18%の処理速度の向上が見込めるという結果となっており、複数階層でグループ化する本発明のデータ処理方法の優位性が示された。
さらに図13(b)に示す実験においても、○で示した本発明のデータ処理方法を用いて再配置したデータに対する探索時間が最も短いという結果が得られている。ノード数が6400000個(約146.5MB)のデータに対する結果では、△で示した幅優先順で再配置した結果と比べて110%の処理速度の向上が見込めるという結果になった。また×で示したキャッシュ単位でグループ化する方法により再配置した結果と比べても8.5%の処理速度の向上が見込めるという結果となった。
前記実施の形態では、GC処理を行う場合に本発明のデータ処理方法を適用する形態を示したが、本発明はこれにかぎらず、データを再配置する様々なデータ処理に適用することが可能である。
本発明のデータ処理装置の構成を示すブロック図である。 本発明のデータ処理方法による配置の対象となる各データオブジェクトの構成を概念的に示す説明図である。 本発明のデータ処理方法によりメモリ領域に配置したデータオブジェクトを概念的に示すメモリマップである。 本発明のデータ処理装置の初期化処理を示すフローチャートである。 本発明のデータ処理方法におけるメモリ領域及び各階層レベルのグループを概念的に示すメモリマップである。 本発明のデータ処理装置のレベル1の階層レベルの走査ポインタによる走査処理を示すフローチャートである。 本発明のデータ処理装置のレベルN(Nは自然数)の階層の走査ポインタによる走査処理を示すフローチャートである。 本発明のデータ処理方法におけるメモリ領域及び各階層のグループを概念的に示すメモリマップである。 本発明のデータ処理方法におけるメモリ領域及び各階層のグループを概念的に示すメモリマップである。 本発明のデータ処理方法におけるメモリ領域及び各階層のグループを概念的に示すメモリマップである。 本発明のデータ処理方法におけるメモリ領域及び各階層のグループを概念的に示すメモリマップである。 本発明のデータ処理装置の第2の記録領域のメモリ領域入替処理を示すフローチャートである。 様々な処理方法により再配置したデータオブジェクトに対する処理時間の結果を示すグラフである。 従来のコピー方式のGC処理を概念的に示すメモリマップである。 従来のコピー方式のGC処理によるデータオブジェクトの配置を概念的に示す説明図である。 従来のコピー方式のGC処理によるデータオブジェクトの配置を概念的に示す説明図である。 従来のコピー方式のGC処理を概念的に示すメモリマップである。 従来のコピー方式のGC処理によるデータの配置を概念的に示す説明図である。
符号の説明
10 データ処理装置
11 CPU
11a 実行部
11b TLB
11c 一次キャッシュメモリ
12 補助記憶手段
13 ハードディスク
14 RAM
15 バスライン
16 二次キャッシュメモリ
20 コンピュータプログラム
D データオブジェクト列
M 第1のメモリ領域
b フリーポインタ
L1 レベル1の階層レベルのグループ
L2 レベル2の階層レベルのグループ
L3 レベル3の階層レベルのグループ
L4 レベル4の階層レベルのグループ
s1 レベル1の階層レベルに対して設定された走査ポインタ
s2 レベル2の階層レベルに対して設定された走査ポインタ
s3 レベル3の階層レベルに対して設定された走査ポインタ
s4 レベル4の階層レベルに対して設定された走査ポインタ

Claims (6)

  1. 走査対象として順次配列されるデータオブジェクトを、優先順位が付けられた複数の階層レベル夫々について、列の先頭側から後方側へと走査し、走査中のデータオブジェクトが指している他のデータオブジェクトを選択的に次に配列して走査対象に追加するデータ処理装置を用いたデータ処理方法であって、
    第1の階層レベルの目標を所定の計算方法で設定後、第1の階層レベルについて走査し、
    走査中の第1のデータオブジェクトが所定の条件で第2のデータオブジェクトを指している場合、かつ、次に配列する位置が第1の階層レベルの目標に達していない場合、第2のデータオブジェクトを次に配列して走査対象に加え、
    配列後、第1の階層レベルの優先順位が最高でない場合、最高の優先順位がつけられた階層レベルについての走査へと処理を切り替え、
    第1の階層レベルについての走査の対象がなくなった場合
    1の階層レベルの優先順位が最低であるとき、処理を中断し、
    第1の階層レベルの優先順位が最低でないとき、一段優先順位の低い第2の階層レベルについての走査へと処理を切り替える
    ことを特徴とするデータ処理方法。
  2. 前記第1の階層レベルの目標の所定の計算方法は、目標設定時の次に配列する位置から第1の階層レベルについて決められた一定距離後方の位置を求める計算方法、又は目標設定時の次に配列する位置から後方に第1の階層レベルについて決められた最初の区切り位置を求める計算方法であることを特徴とする請求項1に記載のデータ処理方法。
  3. 一のレベルで走査したデータオブジェクトに対しては、他のレベルでの走査を省略することを特徴とする請求項1又は請求項2に記載のデータ処理方法。
  4. 前記走査中の第1のデータオブジェクトが第2のデータオブジェクトを指しているときの所定の条件とは、第2のデータオブジェクトがまだ配列されていないという条件であることを特徴とする請求項1乃至請求項3のいずれかに記載のデータ処理方法。
  5. 走査対象として順次配列されるデータオブジェクトを、優先順位が付けられた複数の階層レベル夫々について、列の先頭側から後方側へと走査し、走査中のデータオブジェクトが指している他のデータオブジェクトを選択的に次に配列して走査対象に追加するデータ処理装置であって、
    第1の階層レベルの目標を所定の計算方法で設定後、第1の階層レベルについて走査する手段と、
    走査中の第1のデータオブジェクトが所定の条件で第2のデータオブジェクトを指している場合、かつ、次に配列する位置が第1の階層レベルの目標に達していない場合、第2のデータオブジェクトを次に配列して走査対象に加える手段と、
    配列後、第1の階層レベルの優先順位が最高でない場合、最高の優先順位がつけられた階層レベルについての走査へと処理を切り替える手段と、
    第1の階層レベルについての走査の対象がなくなった場合
    1の階層レベルの優先順位が最低であるとき、処理を中断する手段と、
    第1の階層レベルの優先順位が最低でないとき、一段優先順位の低い第2の階層レベルについての走査へと処理を切り替える手段と
    を備えることを特徴とするデータ処理装置。
  6. コンピュータに、走査対象として順次配列されるデータオブジェクトを、優先順位が付けられた複数の階層レベルの夫々について、列の先頭側から後方側へと走査させ、走査中のデータオブジェクトが指している他のデータオブジェクトを選択的に次に配列して走査対象に追加させるコンピュータプログラムであって、
    コンピュータに、第1の階層レベルの目標を所定の計算方法で設定後、第1の階層レベルについて走査させる手順と、
    コンピュータに、走査中の第1のデータオブジェクトが所定の条件で第2のデータオブジェクトを指している場合、かつ、次に配列する位置が第1の階層レベルの目標に達していない場合、第2のデータオブジェクトを次に配列して走査対象に加えさせる手順と、
    コンピュータに、配列後、第1の階層レベルの優先順位が最高でない場合、最高の優先順位がつけられた階層レベルについての走査へと処理を切り替えさせる手順と、
    第1の階層レベルについての走査の対象がなくなった場合
    ンピュータに、第1の階層レベルの優先順位が最低であるとき、処理を中断させる手順と、
    コンピュータに、第1の階層レベルの優先順位が最低でないとき、一段優先順位の低い第2の階層レベルについての走査へと処理を切り替えさせる手順と
    を実行させることを特徴とするコンピュータプログラム。
JP2004267528A 2004-09-14 2004-09-14 データ処理方法、データ処理装置及びコンピュータプログラム Active JP4719859B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2004267528A JP4719859B2 (ja) 2004-09-14 2004-09-14 データ処理方法、データ処理装置及びコンピュータプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004267528A JP4719859B2 (ja) 2004-09-14 2004-09-14 データ処理方法、データ処理装置及びコンピュータプログラム

Publications (2)

Publication Number Publication Date
JP2006085300A JP2006085300A (ja) 2006-03-30
JP4719859B2 true JP4719859B2 (ja) 2011-07-06

Family

ID=36163779

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004267528A Active JP4719859B2 (ja) 2004-09-14 2004-09-14 データ処理方法、データ処理装置及びコンピュータプログラム

Country Status (1)

Country Link
JP (1) JP4719859B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0608406D0 (en) * 2006-04-28 2006-06-07 Ibm Creating references in a scoped memory system
JP5941996B2 (ja) * 2012-11-27 2016-06-29 株式会社日立製作所 ストレージ装置及び階層制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000322315A (ja) * 1999-04-23 2000-11-24 Internatl Business Mach Corp <Ibm> データを管理する方法及び装置
JP2003519834A (ja) * 2000-01-05 2003-06-24 サン・マイクロシステムズ・インコーポレイテッド メモリ管理によって参照の局所性を改善するための方法および装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2517133B2 (ja) * 1989-12-22 1996-07-24 富士通株式会社 ガ―ベジコレクション処理方式
JP2735684B2 (ja) * 1990-10-11 1998-04-02 株式会社ピーエフユー 記憶装置におけるセル管理方式

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000322315A (ja) * 1999-04-23 2000-11-24 Internatl Business Mach Corp <Ibm> データを管理する方法及び装置
JP2003519834A (ja) * 2000-01-05 2003-06-24 サン・マイクロシステムズ・インコーポレイテッド メモリ管理によって参照の局所性を改善するための方法および装置

Also Published As

Publication number Publication date
JP2006085300A (ja) 2006-03-30

Similar Documents

Publication Publication Date Title
JP5147280B2 (ja) 異機種マルチプロセッサ・システムにおけるガーベッジ・コレクションのためのシステムおよび方法
KR101466585B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
US20100312955A1 (en) Memory system and method of managing the same
KR19980033137A (ko) 이진 프로그램 변환장치, 이진 프로그램 변환방법 및 프로그램기록매체
JP6718119B2 (ja) コンパイルプログラム、コンパイル方法および情報処理装置
CN109284233B (zh) 一种存储系统的垃圾回收方法及相关装置
JP2015505623A (ja) ステージング・エリアを管理するためのコンピュータ実施プロセス、コンピュータ・プログラム製品、装置
CN101847096B (zh) 包含栈变量函数的优化方法
US7822940B2 (en) Apparatus and method for managing mapping information of nonvolatile memory
CN111625515A (zh) 一种聚合小文件的操作请求的处理方法及装置
CN114327917A (zh) 内存管理方法、计算设备及可读存储介质
JP2009205586A (ja) コンパイラおよびプログラム分割方法
JP4719859B2 (ja) データ処理方法、データ処理装置及びコンピュータプログラム
CN112783661B (zh) 一种适用于容器环境下的内存重删方法及装置
CN102467557B (zh) 重复数据删除的处理方法
KR101501717B1 (ko) 메모리 장치 및 메모리 장치의 관리 방법
JP3469383B2 (ja) データ先読み制御方法及び情報処理装置
US9146858B2 (en) Control device, storage device, and storage control method
CN107765992B (zh) 一种处理数据的方法和装置
CN115756838A (zh) 内存释放、内存恢复方法、装置、计算机设备及存储介质
US11429519B2 (en) System and method for facilitating reduction of latency and mitigation of write amplification in a multi-tenancy storage drive
JP3555523B2 (ja) メモリ管理装置及び管理方法並びに管理プログラムを記録した記録媒体
KR101022001B1 (ko) 플래시 메모리 시스템 및 플래시 메모리의 관리 방법
JP2020170477A (ja) 記憶装置、その制御方法、及びプログラム
US20220147265A1 (en) Metadata management for extent-based storage system

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070914

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20070914

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20070914

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101207

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110204

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110302

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140415

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4719859

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250