(57)【要約】【課題】  主記憶上にある大容量のソート対象データに対するソート処理の高速化を図るとともに、キャッシュヒット率を向上する。【解決手段】  ブロック分割部１０が、ソート処理に用いるＣＰＵの１次キャッシュ及び２次キャッシュのキャッシュサイズの情報をＣＰＵ情報保持部１０２から取得し、１次キャッシュ及び２次キャッシュのキャッシュサイズに基づきソート対象データ２を分割する際のブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割し、ブロック内ソート処理部４が、ＣＰＵの２次キャッシュを用いて、ブロック分割部１０により分割されたブロック毎にブロック内のソートを行い、ブロック間マージ処理部５が、１次キャッシュを用いて、ブロック内ソート処理部４によるソート後の各ブロックをマージして、ソート対象データのソートを行い、ソート後のソート結果データ３を主記憶装置１に出力する。【選択図】        図１
2006163565.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリを用いて、ソート対象データのソートを行うソート処理装置であって、
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割部と、
前記キャッシュメモリを用いて、前記ブロック分割部により分割されたブロック毎にブロック内のソートを行うブロック内ソート処理部と、
前記キャッシュメモリを用いて、前記ブロック内ソート処理部によるソート後の各ブロックをマージして、ソート対象データのソートを行うブロック間マージ処理部とを有することを特徴とするソート処理装置。
【請求項２】
前記ブロック間マージ処理部は、
前記ブロック内ソート処理部によるソートが行われた後の各ブロックから、各ブロックにおける最大値のデータ又は最小値のデータを抽出し、抽出した各ブロックの最大値のデータ又は最小値のデータによるデータ列を生成し、生成したデータ列の中の最大値のデータ又は最小値のデータから順に各データを抽出して、前記ブロック内ソート処理部によるソート後の各ブロックをマージすることを特徴とする請求項１に記載のソート処理装置。
【請求項３】
前記ソート処理装置は、
１次キャッシュと２次キャッシュを有するキャッシュメモリを用い、
前記ブロック分割部は、
ソート対象データの分割のためのブロックサイズを、前記２次キャッシュのキャッシュサイズ以内のサイズであって、前記ブロック間マージ処理部が生成するデータ列のデータサイズが前記１次キャッシュのキャッシュサイズ以内となるサイズとすることを特徴とする請求項２に記載のソート処理装置。
【請求項４】
前記ソート処理装置は、更に、
ソート対象データのソートに用いるキャッシュメモリのＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の識別情報を検出する識別情報検出部と、
複数種のＣＰＵについて、それぞれのキャッシュメモリのキャッシュサイズを示すキャッシュサイズ情報を保持するキャッシュサイズ情報保持部とを有し、
前記ブロック分割部は、
前記識別情報検出部により検出されたＣＰＵの識別情報と前記キャッシュサイズ情報保持部のキャッシュサイズ情報とに基づき、ソート対象データのソートに用いるキャッシュメモリのキャッシュサイズを判定し、判定したキャッシュサイズに基づきブロックサイズを算定することを特徴とする請求項１に記載のソート処理装置。
【請求項５】
前記ソート処理装置は、更に、
ソート対象データのソートに用いるキャッシュメモリのキャッシュサイズを示すキャッシュサイズ情報を入力するキャッシュサイズ情報入力部を有し、
前記ブロック分割部は、
前記キャッシュサイズ情報入力部により入力されたキャッシュサイズ情報に基づき、ソート対象データのソートに用いるキャッシュメモリのキャッシュサイズを判定し、判定したキャッシュサイズに基づきブロックサイズを算定することを特徴とする請求項１に記載のソート処理装置。
【請求項６】
キャッシュメモリを用いて、ソート対象データのソートを行うソート処理方法であって、
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割ステップと、
前記キャッシュメモリを用いて、前記ブロック分割ステップにより分割されたブロック毎にブロック内のソートを行うブロック内ソート処理ステップと、
前記キャッシュメモリを用いて、前記ブロック内ソート処理ステップによるソート後の各ブロックをマージして、ソート対象データのソートを行うブロック間マージ処理ステップとを有することを特徴とするソート処理方法。
【請求項７】
キャッシュメモリを用いて、ソート対象データのソートを行うプログラムであって、
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割処理と、
前記キャッシュメモリを用いて、前記ブロック分割処理により分割されたブロック毎にブロック内のソートを行うブロック内ソート処理と、
前記キャッシュメモリを用いて、前記ブロック内ソート処理によるソート後の各ブロックをマージして、ソート対象データのソートを行うブロック間マージ処理とをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、主記憶装置上にある大容量のソート対象データをソートするソート処理技術に関する。
【背景技術】
【０００２】
従来のソート処理方式では、主記憶上に２つの領域を設け、ソート対象データ（レコード）をソートキー部分とその他の部分とに分割し、２つの領域に別々に格納してソートキーの部分だけをソートし、ソートされたソートキーと対応するソートキー以外の部分を結合して出力することにより、広範囲にメモリアクセスが入らないようにしてキャッシュヒット率の向上を行っていた（特許文献１）。
【特許文献１】特開２０００−１０７６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上述した従来のソート処理方式では、ソートキーのサイズが大きいときは、広範囲にメモリアクセスが入るため、キャッシュミスを頻発するという問題点があった。例えばソートキーのサイズが大きくレコードのサイズに近い値のときは、レコードを分割しても広範囲にわたりメモリアクセスが入ることになる。
この発明は上記のような問題点を解決することを目的の一つとしており、ソート処理の高速化を図るとともに、キャッシュヒット率を向上することを目的とする。
【課題を解決するための手段】
【０００４】
本実施の形態に係るソート処理装置は、
キャッシュメモリを用いて、ソート対象データのソートを行うソート処理装置であって、
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割部と、
前記キャッシュメモリを用いて、前記ブロック分割部により分割されたブロック毎にブロック内のソートを行うブロック内ソート処理部と、
前記キャッシュメモリを用いて、前記ブロック内ソート処理部によるソート後の各ブロックをマージして、ソート対象データのソートを行うブロック間マージ処理部とを有することを特徴とする。
【発明の効果】
【０００５】
本発明によれば、キャッシュサイズに適合させたブロックサイズに分割することで、キャッシュメモリを有効に活用して高速なソート処理を実現することができ、また、キャッシュヒット率を向上させることができる。
【発明を実施するための最良の形態】
【０００６】
実施の形態１．
図１は本発明の一実施形態の構成を示す図である。図１において、ソート処理装置１００は、主記憶装置１上のソート対象データ２のソート処理を実行し、ソート後のソート結果データ３を主記憶装置１に出力する。なお、図１に示していないが、ソート処理装置１００は、キャッシュメモリ（１次キャッシュ、２次キャッシュ）を有するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を用いてソート処理を実行する。ソート処理装置１００には、ブロック内ソート処理部４と、ブロック間マージ処理部５と、ブロック情報保持部６と、ブロック分割部１０と、ＣＰＵ  ＩＤ検出部１０１と、ＣＰＵ情報保持部１０２が含まれる。
【０００７】
ソート処理装置１００はハードウェアで構成されていてもよいし、ソート処理装置１００の要素の全てあるいは一部をＣＰＵ上で動作可能なプログラムにより構成してもよい。或いは、ＲＯＭに記憶されたファームウェアで実現されていてもよい。或いは、ソフトウェアとハードウェアの組合せ、ソフトウェアとハードウェアとファームウェアとの組み合わせ等で実現されてもよい。
【０００８】
ＣＰＵ  ＩＤ検出部は、ソート処理に使用する（計算機に搭載されている）ＣＰＵのＩＤ（識別情報）を検出する。ＣＰＵ  ＩＤ検出部１０１は、識別情報検出部の例である。
ＣＰＵ情報保持部１０２は、ＣＰＵが有する１次キャッシュサイズ、２次キャッシュサイズの情報（キャッシュサイズ情報）を保持する。図２は、ＣＰＵ情報保持部が保持するキャッシュサイズ情報の例を示す。例えばＣＰＵ  ＩＤ検出部により検出されたＣＰＵ  ＩＤが“Ａ０２”であったとすると、１次キャッシュサイズが１６ＫＢ、２次キャッシュサイズが１ＭＢという情報が抽出される。ＣＰＵ情報保持部１０２はキャッシュサイズ情報保持部の例である。
【０００９】
ブロック分割部１０は、ＣＰＵ  ＩＤ検出部１０１により検出されたＣＰＵ  ＩＤとＣＰＵ情報保持部１０２から得られるキャッシュサイズ情報によりソート対象データ２をブロック分割する際のブロックサイズを決定し、ソート対象データ２を複数のブロックに分割する。ブロックサイズの算出手順の詳細は、後述する。また、ブロック分割部１０は分割したブロックのアドレス情報をブロック情報保持部６に格納する。
【００１０】
ブロック内ソート処理部４はブロック情報保持部に格納されている全てのブロックにおいてソート対象データのブロック内ソートを実行する。
ブロック間マージ処理部５はソートされた各ブロックのマージを実行し、その結果をソート結果データ３として主記憶装置上に出力する。
【００１１】
次に、図３〜図６を参照して、ソート処理装置１００の動作について説明する。
まず、ステップＳ３０１において、ＣＰＵ  ＩＤ検出部１０１がマイクロ命令によりＣＰＵのＩＤを検出する。例えばｉｎｔｅｌ（登録商標）社製マイクロプロセッサのＸｅｏｎ（登録商標）プロセッサでは”ｃｐｕｉｄ”という命令でＣＰＵのＩＤをＣＰＵから直接読み出すことができる。
【００１２】
次に、ステップＳ３０２において、ブロック分割部１０がＣＰＵ  ＩＤ検出部１０１で得たＣＰＵのＩＤに基づきＣＰＵ情報保持部１０２から該当するＣＰＵのキャッシュメモリの情報を取得し、取得したキャッシュメモリの情報に基づきキャッシュメモリのキャッシュサイズを判定する。
【００１３】
次に、ステップＳ３０３において、ブロック分割部１０がソート対象データ２の分割のためのブロックサイズを算出する（ブロック分割ステップ）。
ブロックサイズの算出の基準は、各ブロックの最小値で構成する部分データ列のサイズがＣＰＵの１次キャッシュにヒットするとともに、１ブロックのサイズがＣＰＵの２次キャッシュにヒットする大きさとする。図６に示すように、ソート対象データ２を各ブロックに分割した後、各ブロックの最小値を抽出し、各ブロックの最小値で構成する部分データ列を生成する。この各ブロックの最小値で構成する部分データ列が１次キャッシュサイズに収まる範囲であって、１ブロックのサイズが２次キャッシュサイズに収まるようにブロックサイズを算出する。
【００１４】
ＣＰＵの１次キャッシュサイズ：Ｃ１、ＣＰＵの２次キャッシュサイズ：Ｃ２、ソート対象データの１件当たりのレコード長：ＲＬ、ソート対象データの全件のデータサイズ（１件当たりのレコード長×件数）：ＡＲ、（ソート対象データ分割の際の）ブロック数：ＢＮ、（ソート対象データ分割の際の）ブロックサイズ：ＢＳとし、ＢＮ＝Ｃ１／ＲＬ、ＢＳ＝ＡＲ／ＢＮと設定する。
ここで、ＢＳ＜Ｃ２を満たすことでＣＰＵの２次キャッシュ内でのブロック内ソートを行うことができる。
【００１５】
次に、ステップＳ３０４において、Ｓ３０３で算出したブロックサイズによりソート対象データ２を複数のブロックに分割する（ブロック分割ステップ）。
例えばＣＰＵ  ＩＤ検出部１０１により検出されたＣＰＵ  ＩＤが“Ａ０２”であったとすると、図２に示すＣＰＵ情報保持部から１次キャッシュサイズが１６ＫＢ、２次キャッシュサイズが１ＭＢであることがわかる。次に図４においてレコード長が１００Ｂ、１，０００，０００件のレコードがあったとするとソート対象データは１００，０００，０００Ｂである。これを１ブロックのサイズを１，０００，０００Ｂ−１００Ｂ（１レコード分）で分割する（４０１）。１００Ｂ（１レコード分）減らして計算するのは、ソート実行時のデータ交換用レコードを追加するためである。１，０００，０００Ｂ−１００Ｂにてソート対象データを分割すると、９，９９９件のレコードによるブロックが１００個と、１００件のレコードによるブロックが１個に分割される。各ブロックにデータ交換用の１レコード分を追加すると、サイズ１，０００，０００Ｂのブロック（９，９９９件のレコード（９，９９９件×１００Ｂ＝９９９，９００Ｂ）＋データ交換用１レコード（１００Ｂ））１００個と、サイズ１０，１００Ｂの（１００件のレコード（１００件×１００Ｂ＝１０，０００Ｂ）＋データ交換用１レコード（１００Ｂ））１個が得られる。この場合、１０１件のレコードによる最小値のデータ列が生成されるが、最小値のデータ列のサイズは１０１件となり約１０ＫＢで１次キャッシュサイズが１６ＫＢとするとソート実行時のデータ交換用の１レコード分を含めても１次キャッシュメモリにおさまるサイズである。
【００１６】
また、ステップＳ３０４にてブロック分割部１０がブロック分割を行う際に、ブロック情報保持部６に各ブロックのアドレス情報を通知し、ブロック情報保持部６は各ブロックのアドレス情報を保持する。このため、ブロック内ソート処理部４はブロック情報保持部６により各ブロックのアドレス情報を得ることができる。ブロック内ソート処理部４は、ステップＳ３０５において、ブロック分割部１０により分割された全てのブロックについて２次キャッシュを用いてブロック内ソートを実行する（ブロック内ソート処理ステップ）。例えばクイックソートを用いればデータの参照、データの交換ともキャッシュメモリ上で高速に実行することができる。
【００１７】
全てのブロックについてブロック内ソートが完了すると、次にステップＳ３０６において、ブロック間マージ処理部５が各ブロックのマージを行う（ブロック間マージ処理ステップ）。ブロック間のマージ処理を図５のフローチャートに従って説明する。先ず、ブロック内ソートされたＮ個のブロックの最小値によるデータ列を生成する（Ｓ３０６１）。次に生成したデータ列をソートする（Ｓ３０６２）。このときソートされた各データはブロック情報保持部６によりどのブロックのデータであるかを判別することができる。ソートされたデータ列の最小値をソート結果データの最小値として主記憶上に出力する（Ｓ３０６３）。出力されたデータが属していたブロックに次の最小値のデータがあるか否かを判断し（Ｓ３０６４）、次の最小値のデータがあれば、これを最小値のデータ列に挿入するとともに（Ｓ３０６５）、最小値のデータ列をソートする処理（Ｓ３０６２）から繰り返して実行する。図６のケースでは、ブロック２に属していた“８”が最小値データ列内の最小値として出力されたため、ブロック２の次の最小値である“２２”が最小値データ列に挿入される。
【００１８】
このように最小値を出力したデータのブロックから次の最小値を最小値データ列に挿入していくことによりソート対象データ全体でのソートを行う。
ブロックが空になるとそのブロックはマージの対象からはずされ、残りのブロックだけでマージ処理を行っていく。出力した最小値のブロックが空の場合、出力した最小値の次に小さいデータを出力する。そして出力したデータの属するブロックから最小値のデータ列へ次に小さいデータを挿入する。
【００１９】
出力したデータの属するブロックから次に小さい値の最小値のデータ列への挿入、そのデータ列の最小値の主記憶装置への出力、を繰り返して行き、全てのブロックが空になった時点でソート対象データのソートが完了する（Ｓ３０６６）。
以上の処理を経て、主記憶装置１には、ソート結果データ３が得られることになる。
【００２０】
なお、以上の処理では、各ブロック内の最小値を抽出して最小値データ列を生成し、最小値データ列内の最小値を順に主記憶装置上に出力していったが、各ブロック内の最大値を抽出して最大値データ列を生成し、最大値データ列内の最大値を順に主記憶装置上に出力するようにしてもよい。
【００２１】
このように、本実施の形態に係るソート処理装置は、主記憶装置上にある大容量のソート対象データをソートするために、ＣＰＵのＩＤを検出するＣＰＵ  ＩＤ検出部、ＣＰＵのＩＤとＣＰＵのキャッシュメモリの情報を保持するＣＰＵ情報保持部、ＣＰＵ情報保持部により得たＣＰＵのキャッシュメモリの情報によりソート対象データを複数のブロックに分割するブロック分割部、分割したブロックの情報を保持するブロック情報保持部、分割されたブロック毎にソート対象データをソートするブロック内ソート部、ソートされた各ブロックについてマージを実行してソート対象データ全体のソート結果を得るブロック間マージ処理部を備え、ブロック分割部１０が、ソート処理に用いるＣＰＵの１次キャッシュ及び２次キャッシュのキャッシュサイズの情報をＣＰＵ情報保持部１０２から取得し、１次キャッシュ及び２次キャッシュのキャッシュサイズに基づきソート対象データ２を分割する際のブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割し、ブロック内ソート処理部４が、ＣＰＵの２次キャッシュを用いて、ブロック分割部１０により分割されたブロック毎にブロック内のソートを行い、ブロック間マージ処理部５が、１次キャッシュを用いて、ブロック内ソート処理部４によるソート後の各ブロックをマージして、ソート対象データのソートを行い、ソート後のソート結果データ３を主記憶装置１に出力することを特徴とする。
【００２２】
そして、本実施の形態に係るソート処理装置は、ソート対象データの分割のためのブロックサイズを２次キャッシュサイズ以内にすることで、２次キャッシュメモリ上でブロック内ソートを高速に実行することができる。また、ソート対象データの分割のためのブロックサイズを最小値データ列のデータサイズが１次キャッシュサイズ以内となるサイズとすることで、ブロック内ソート後の最小値データ列のソートを１次キャッシュメモリ上で高速に実行することができる。これにより、主記憶上の大規模なデータを高速にソートすることができ、また、キャッシュヒット率を向上させることができる。
【００２３】
実施の形態２．
以上の実施の形態１では、ＣＰＵ  ＩＤを直接読み出していたが、次にこれを外部から入力する場合の実施形態を示す。
【００２４】
図７は、本実施の形態の構成を示す図であり、実施の形態１のＣＰＵ  ＩＤ検出部１０１及びＣＰＵ情報保持部１０２の代わりに、ＣＰＵ情報読み込み部１０３を挿入した構成である。ソート処理装置１００の他の構成要素、ブロック内ソート処理部４、ブロック間マージ処理部５、ブロック情報保持部６、ブロック分割部１０は実施の形態１とである。
【００２５】
ＣＰＵ情報読み込み部１０３は、ユーザからＣＰＵのキャッシュサイズ情報を入力する。ＣＰＵ情報読み込み部１０３は、キャッシュサイズ情報入力部の例である。
なお、本実施の形態においても、ソート処理装置１００はハードウェアで構成されていてもよいし、ソート処理装置１００の要素の全てあるいは一部をＣＰＵ上で動作可能なプログラムにより構成してもよい。或いは、ＲＯＭに記憶されたファームウェアで実現されていてもよい。或いは、ソフトウェアとハードウェアの組合せ、ソフトウェアとハードウェアとファームウェアとの組み合わせ等で実現されてもよい。
【００２６】
次に、図８に従って本実施の形態に係るソート処理装置１００の動作を説明する。
ステップＳ８０１において、ＣＰＵ情報読み込み部１０３が、ユーザからＣＰＵのキャッシュサイズ情報を入力する。入力するキャッシュサイズ情報には、ＣＰＵの１次キャッシュメモリのサイズと２次キャッシュメモリのサイズが示されている。次に、ステップＳ８０２において、ブロック分割部１０が、ＣＰＵ情報読み込み部１０３が読み込んだキャッシュサイズ情報によりソート対象データ２を分割する際のブロックサイズを算出する。ブロックサイズの算出方法は実施の形態１で示したものと同様である。また、以降、実施の形態１と同様にして、ソート対象データを分割し（Ｓ８０３）、分割後のブロック内のソートを実行し（Ｓ８０４）、ブロック内ソート後の各ブロックのマージを行う（Ｓ８０５）。
【００２７】
このように、本実施の形態に係るソート処理装置は、主記憶装置上にある大容量のソート対象データをソートするために、ＣＰＵのキャッシュメモリの情報を読み込むＣＰＵ情報読み込み部、ＣＰＵ情報読み込み部により得たＣＰＵのキャッシュメモリ情報によってソート対象データを複数のブロックに分割するブロック分割部、分割したブロックの情報を保持するブロック情報保持部、分割されたブロック毎にソート対象データをソートするブロック内ソート部、ソートされた各ブロックについてマージを実行してソート対象データ全体のソート結果を得るブロック間マージ処理部を備えることを特徴とする。
【００２８】
実施の形態１では、読み出したＣＰＵ  ＩＤのキャッシュメモリの情報がＣＰＵ情報保持部にない場合はブロック分割するための情報を得られなかったが、本実施の形態ではユーザがＣＰＵのキャッシュメモリの情報を入力し、ＣＰＵ情報読み込み部が読み込むことで、ブロック分割のサイズを決定することができる。
【００２９】
実施の形態３．
以上の実施の形態１及び実施の形態２では、ＣＰＵのキャッシュメモリの使用状況にかかわらず、キャッシュメモリのメモリ容量を１００％使用可能との前提に基づいてブロックサイズを算出したが、本実施の形態では、キャッシュメモリの使用状況を勘案してブロックサイズを算出する場合について説明する。
【００３０】
図９は、本実施の形態の構成を示す図であり、実施の形態１に示すソート処理装置にキャッシュ使用率情報保持部１０４を追加した構成である。
キャッシュ使用率情報保持部１０４は、ＣＰＵごとに１次キャッシュ及び２次キャッシュの使用率の統計的情報を保持している。キャッシュ使用率情報保持部１０４は、例えば、時間帯ごとの１次キャッシュ及び２次キャッシュの平均使用率を示す情報を保持している。
【００３１】
また、本実施の形態のブロック分割部１０は、ＣＰＵ情報保持部１０２のＣＰＵのキャッシュサイズ情報とキャッシュ使用率情報保持部１０４のキャッシュ使用率の情報とを用いて、ソート対象データ分割の際のブロックサイズを算出する。例えば、図２の“Ａ０２”のＣＰＵがＣＰＵ  ＩＤ検出部１０１により検出された場合を想定する。このとき、キャッシュ使用率情報保持部１０４のキャッシュ使用率情報に、ＣＰＵ  “ＡＯ２”の使用率として、例えば１次キャッシュ：５０％、２次キャッシュ：５０％と示されていれば、ブロック分割部１０は、それぞれのキャッシュサイズの５０％である１次キャッシュ：８ＫＢ、２次キャッシュ：０．５ＭＢをブロックサイズ算出のための基準値として用い、最小値データ列のサイズが１次キャッシュ：８ＫＢの範囲内に収まるとともに、一つのブロックが２次キャッシュ：０．５ＭＢ以内となるようにブロックサイズを算出する。
【００３２】
なお、ブロックサイズ算出の際に、キャッシュ使用率情報保持部１０４のキャッシュ使用率情報を参照する点以外は、実施の形態１と同様である。
また、図９では、図１の構成にキャッシュ使用率情報保持部１０４を追加した構成としているが、図７の構成にキャッシュ使用率情報保持部１０４を追加した構成としてもよい。この場合は、ブロック分割部１０は、ＣＰＵ情報読み込み部１０３が読み込んだＣＰＵのキャッシュサイズ情報とキャッシュ使用率情報保持部１０４のキャッシュ使用率情報とを用いて、ソート対象データ分割の際のブロックサイズを算出する。
【００３３】
なお、本実施の形態においても、ソート処理装置１００はハードウェアで構成されていてもよいし、ソート処理装置１００の要素の全てあるいは一部をＣＰＵ上で動作可能なプログラムにより構成してもよい。或いは、ＲＯＭに記憶されたファームウェアで実現されていてもよい。或いは、ソフトウェアとハードウェアの組合せ、ソフトウェアとハードウェアとファームウェアとの組み合わせ等で実現されてもよい。
【００３４】
本実施の形態よれば、キャッシュメモリの使用状況を勘案してブロックサイズを算出することができる。
【図面の簡単な説明】
【００３５】
【図１】実施の形態１の構成を示したブロック図である。
【図２】ＣＰＵ情報保持部が保持するキャッシュサイズ情報の例を示す図である。
【図３】実施の形態１に係るソート処理装置の動作例を示すフローチャート図である。
【図４】ソート対象データを分割しブロック内ソートをし、マージを行う処理を示した模式図である。
【図５】ブロック内ソートが完了した後のマージ処理例を示したフローチャート図である。
【図６】ソート対象データを分割しブロック内ソートをした後のマージの方法を示した模式図である。
【図７】実施の形態２の構成を示したブロック図である。
【図８】実施の形態２に係るソート処理装置の動作例を示すフローチャート図である。
【図９】実施の形態３の構成を示したブロック図である。
【符号の説明】
【００３６】
１  主記憶装置、２  ソート対象データ、３  ソート結果データ、４  ブロック内ソート処理部、５  ブロック間マージ処理部、６  ブロック情報保持部、１０  ブロック分割部、１００  ソート処理装置、１０１  ＣＰＵ  ＩＤ検出部、１０２  ＣＰＵ情報保持部、１０３  ＣＰＵ情報読み込み部、１０４  キャッシュ使用率情報保持部。
【図１】
2006163565.tif 000003
【図２】
2006163565.tif 000004
【図３】
2006163565.tif 000005
【図４】
2006163565.tif 000006
【図５】
2006163565.tif 000007
【図６】
2006163565.tif 000008
【図７】
2006163565.tif 000009
【図８】
2006163565.tif 000010
【図９】
2006163565.tif 000011