(57)【要約】【課題】ソートキー長に適したソートキー比較コードを動的に生成するソートキー比較コード生成装置及び方法、並びにソートキー長分のループのための比較処理が不要なソート処理装置を提供する。【解決手段】ソートキー比較コード生成装置２０は、ソート処理に使用するソートキー比較コードを生成する装置であって、２以上の所定の整数Ｎから１までの各バイト用のコードデータ２３〜２５を記憶するソートキー比較コードデータ格納領域２２と、ソート対象データのソートキー長をＮで除した商と同数のＮバイト用のコードデータ２５と、ソート対象データのソートキー長をＮで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成するソートキー比較コード生成部２１とを有する。【選択図】図１
2010198070.tif 000002
【特許請求の範囲】
【請求項１】
ソート処理に使用するソートキー比較コードを生成するソートキー比較コード生成装置であって、
２以上の所定の整数Ｎから１までの各バイト用のコードデータを記憶する手段と、
ソート対象データのソートキー長を前記Ｎで除した商と同数の前記Ｎバイト用のコードデータと、前記ソート対象データのソートキー長を前記Ｎで除した場合の余りと同数のバイト用のコードデータとを用いて前記ソートキー比較コードを生成する手段とを有することを特徴とするソートキー比較コード生成装置。
【請求項２】
前記Ｎバイト用のコードデータのデータ量は、前記ソート処理を実行するソート処理装置の演算処理装置が１回の処理で扱う最大のデータ量であることを特徴とする請求項１記載のソートキー比較コード生成装置。
【請求項３】
生成した前記ソートキー比較コードを、前記ソート処理を実行するソート処理装置に出力することを特徴とする請求項１又は２記載のソートキー比較コード生成装置。
【請求項４】
ソートキーを用いたソートキー比較処理を含むソート処理を実行するソート処理装置であって、
２以上の所定の整数Ｎから１までの各バイト用のコードデータを記憶する手段と、
ソート対象データのソートキー長を前記Ｎで除した商と同数の前記Ｎバイト用のコードデータと、前記ソート対象データのソートキー長を前記Ｎで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成する手段と、
前記ソートキー比較コードと前記ソート対象データとを、前記Ｎバイト用のコードデータ及び、前記余りと同数のバイト用のコードデータごとに比較してソートキー比較処理を行う比較処理手段とを有することを特徴とするソート処理装置。
【請求項５】
前記Ｎバイト用のコードデータのデータ量は、前記比較処理手段が１回の処理で扱う最大のデータ量であることを特徴とする請求項４記載のソートキー処理装置。
【請求項６】
ソート処理に使用するソートキー比較コードを生成するソートキー比較コード生成方法であって、
記憶手段に記憶された２以上の所定の整数Ｎから１までの各バイト用のコードデータのうち、ソート対象データのソートキー長を前記Ｎで除した商と同数の前記Ｎバイト用のコードデータと、前記ソート対象データのソートキー長を前記Ｎで除した場合の余りと同数のバイト用のコードデータとを用いて前記ソートキー比較コードを生成することを特徴とするソートキー比較コード生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソート処理に用いるソートキー比較コードを生成するソートキー比較コード生成装置、ソート処理装置及びソートキー比較コード生成方法に関する。
【背景技術】
【０００２】
ｎ件のデータをソートする場合、ソート処理中においてソートキーの比較処理が行われる回数は、最小のソートアルゴリズムでもｎｌｏｇｎ回のため、ｎの値が大きいほど比較処理の回数は指数的に増加する。
【０００３】
これは、データの件数が多いほどソート処理全体の中でソートキーの比較処理の合計時間が占める割合が多くなることを意味する。
【０００４】
このような特徴があるため、ソート処理の実行時間中にソートキーの比較処理合計時間が処理時間の大部分を占めるケースも多い。
【０００５】
ソート処理の高速化のためには、この処理時間の大部分を占める「ソートキーの比較処理」をいかに高速化するかが鍵となる。
【０００６】
ソートキーの比較処理を高速化する手法としては、主として次の三つが挙げられる。
（１）ソートキーの比較回数を減らすアルゴリズムを利用することで、ソートキーの比較処理の呼び出し回数を減らし、ソート処理時間を短縮する。
（２）マルチＣＰＵ環境において、ソート対象のデータを複数のブロックに分け、各ブロックのソートを並列に実行することで、ソート処理実行時間を短縮する。
（３）ソートキーの比較処理そのものを高速化することにより、ソート処理時間を短縮する。
【０００７】
これらのうち、上記（３）の手法としては、１回に比較するデータのサイズを増やしたり、ソートキー長分のマシン語コードを予め用意するなどがあったため、対応するソートキー長のマシン語コードが予め用意されていないとソートキーの比較処理を行えないという問題があった。
【０００８】
この問題への対処としては、ソート処理実行時にソートキー比較コードを動的に生成することが考えられる。
【０００９】
特許文献１には、プログラムの実行時に、最適化されていないオブジェクト・コードをリアルタイムに最適化する方法が開示されている。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平１０−２４０５４３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
しかし、特許文献１に開示される発明は、システム上で実行される任意の処理を周期的にトレースして最適化するものであり、言うなればフィードバック処理である。従って、常に最適化されたオブジェクト・コードが実行されるとは限らない。ソートキー比較処理の場合は、ソート対象に適したソートキー比較コードを用いなければソート処理を正しく行えないため、特許文献１に開示される発明は、ソートキーを自動生成するのに適用可能な構成ではない。
【００１２】
本発明は係る問題に鑑みてなされたものであり、ソートキー長に適したソートキー比較コードを動的に生成するソートキー比較コード生成装置及び方法、並びにソートキー長分のループのための比較処理が不要なソート処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本発明は、第１の態様として、ソート処理に使用するソートキー比較コードを生成するソートキー比較コード生成装置であって、２以上の所定の整数Ｎから１までの各バイト用のコードデータを記憶する手段と、ソート対象データのソートキー長をＮで除した商と同数のＮバイト用のコードデータと、ソート対象データのソートキー長をＮで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成する手段とを有することを特徴とするソートキー比較コード生成装置を提供するものである。
【００１４】
また、上記目的を達成するため、本発明は、第２の態様として、ソートキーを用いたソートキー比較処理を含むソート処理を実行するソート処理装置であって、２以上の所定の整数Ｎから１までの各バイト用のコードデータを記憶する手段と、ソート対象データのソートキー長をＮで除した商と同数のＮバイト用のコードデータと、ソート対象データのソートキー長をＮで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成する手段と、ソートキー比較コードとソート対象データとを、Ｎバイト用のコードデータ及び、余りと同数のバイト用のコードデータごとに比較してソートキー比較処理を行う比較処理手段とを有することを特徴とするソート処理装置を提供するものである。
【００１５】
また、上記目的を達成するため、本発明は、第３の態様として、ソート処理に使用するソートキー比較コードを生成するソートキー比較コード生成方法であって、記憶手段に記憶された２以上の所定の整数Ｎから１までの各バイト用のコードデータのうち、ソート対象データのソートキー長をＮで除した商と同数のＮバイト用のコードデータと、ソート対象データのソートキー長をＮで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成することを特徴とするソートキー比較コード生成方法を提供するものである。
【発明の効果】
【００１６】
本発明によれば、ソートキー長に適したソートキー比較コードを動的に生成するソートキー比較コード生成装置及び方法、並びにソートキー長分のループのための比較処理が不要なソート処理装置を提供できる。
【図面の簡単な説明】
【００１７】
【図１】本発明の好適な実施の形態に係るソートキー比較コード生成装置の構成を示す図である。
【図２】本発明の好適な実施の形態に係るソート処理装置の構成を示す図である。
【図３】本発明の好適な実施の形態に係るソート処理装置の構成を示す図である。
【図４】本発明の好適な実施の形態に係るソート処理装置のソートキー比較コード生成時の処理の流れを示す図である。
【図５】ソートキー比較コードの一例を示す図である。
【図６】本発明の好適な実施の形態に係るソート処理装置のソートキー比較処理の流れを示す図である。
【図７】本発明に関連するソート処理装置のソートキー比較処理の流れを示す図である。
【発明を実施するための形態】
【００１８】
図１に示すように、本発明の好適な実施の形態に係るソートキー比較コード生成装置２０は、ソート処理に使用するソートキー比較コードを生成する装置であって、２以上の所定の整数Ｎから１までの各バイト用のコードデータ２３〜２５を記憶するソートキー比較コードデータ格納領域２２と、ソート対象データのソートキー長をＮで除した商と同数のＮバイト用のコードデータ２５と、ソート対象データのソートキー長をＮで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成するソートキー比較コード生成部２１とを有する。
ソートキー比較コード生成装置２０は、ソートキー長にあわせて動的にソートキー比較コードを生成できるため、ソートキー長分のマシン語コードを予め用意しておく必要がなく、ソートキー比較処理の内容もシンプルである。さらに、ソートキー長を指定するのみで最適なソートキー比較コードを生成可能であり、いわばフィードフォーワード処理であるため、ソート処理にエラーが生じることはない。
【００１９】
また、図２に示すように、本発明の好適な実施の形態に係るソート処理装置３０は、ソートキーを用いたソートキー比較処理を行うソートキー比較処理部３７を含むソート処理部３６を有する装置であって、２以上の所定の整数Ｎから１までの各バイト用のコードデータ３３〜３５を記憶するソートキー比較コードデータ格納領域３２と、ソート対象データのソートキー長をＮで除した商と同数のＮバイト用のコードデータ３５と、ソート対象データのソートキー長をＮで除した場合の余りと同数のバイト用のコードデータとを用いてソートキー比較コードを生成するソートキー比較コード生成部３１とを有し、ソートキー比較処理部３７は、ソートキー比較コードとソート対象データとを、Ｎバイト用のコードデータ３５及び、余りと同数のバイト用のコードデータごとに比較してソートキー比較処理を行う。
ソート処理装置３０は、ソートキー長分のループのための比較処理が不要であり、ソートキー比較処理時の比較処理回数が減少するため、ソートキー比較処理を高速に実行でき、ソート処理全体としても高速化できる。
【００２０】
以下、本発明の好適な実施の形態についてより詳細に説明する。
【００２１】
図３に、本実施形態に係るソート処理装置の構成を示す。このソート処理装置は、ソート処理前処理部１、ソート処理部３及びソートキー比較コードデータ格納領域６を有する。
ソート処理前処理部１は、ソートキー比較コード生成部２を備えており、ソート処理の前処理としてソートキー比較コードを生成する。ソート処理部３は、ソート処理前処理部１が生成したソートキー比較コードを用いて実際のソート処理を行うソートキー比較処理部４と、ソートキー比較コード生成部２が動的に生成したソートキー比較コードを格納するソートキー比較コード生成領域１２とを備えている。ソートキー比較コードデータ格納領域６は、ソート処理前処理部１がソートキー比較コードを生成するために用いるコードデータが格納されている。
なお、ソートキー比較コード生成部２は、図１におけるソートキー比較コード生成部２１や、図２におけるソートキー比較コード生成部３１に相当する。また、ソートキー比較コードデータ格納領域６は、図１におけるソートキー比較コードデータ格納領域２２や図２におけるソートキー比較コードデータ格納領域３２に相当する。また、ソート処理部３は、図２におけるソート処理部３６に相当する。
【００２２】
ソートキー比較コードデータ格納領域６には、初期処理用コードデータ７、１〜Ｎバイトまでの各比較コードデータ８〜１０、終了処理用コードデータ１１が格納されている。なお、ここでの前処理、終了処理は、実際の比較処理を行う前後に必要となる処理全般を指し、特定の内容の処理を指す訳ではない。また、初期処理や終了処理の内容は本発明の主旨とは関係しないので、具体的な処理内容についての説明は割愛する。
【００２３】
比較コードデータの最大バイト数は、２以上ならば任意であるが、ソート処理部３が１回に扱う最大のバイト数と同じとすることが好ましい。具体例を挙げると、ソート処理部３が３２ビットのＣＰＵを用いて構成される場合、１回に扱える最大のデータは５バイトであるから、１〜５バイトの比較コードデータをソートキー比較コードデータ格納領域６に格納しておくことが好ましい。
【００２４】
本実施形態に係るソート処理装置の動作について説明する。
ソート処理の前処理として、ソート処理前処理部１による処理を行う。ソート処理前処理部１内で、ソートキー比較コード生成部２を呼び出す。ソートキー比較コード生成部２は、ソートキー比較コードデータ格納領域６からコードデータを読み出し、ソートキー比較コードを生成する。
【００２５】
図４に、ソートキー比較コードの生成フローを示す。
まず、残ソートキー長にソートキー長をセットし、初期処理用コードデータ７をコードデータ生成領域１２にコピーする（ステップＳ１）。
次に、残ソートキー長がＮバイト用コードデータ１０の比較長（ソートキー比較コードデータ格納領域６に格納されているコードデータのうち比較長が最大もの）以下か否かを確認する。換言すると、残ソートキー長がＮバイト以下であるか否かを確認する（ステップＳ２）。残ソートキー長がＮバイト以下ではない場合（ステップＳ２／Ｎｏ）、Ｎバイト用コードデータ１０をコードデータ生成領域１２にコピーし、残ソートキー長からＮバイト分減算する（ステップＳ３）。そして、ステップＳ２へ進み、ステップＳ２がＹｅｓとなるまで上記の処理を繰り返す。残ソートキー長がＮバイト以下であるならば（ステップＳ２／Ｙｅｓ）、残ソートキー長と同じ比較長のコードデータをコードデータ生成領域１２にコピーする（ステップＳ４）。ステップＳ２〜Ｓ４の処理は、残ソートキー長をＮで除した場合の商と同数のＮバイト用コードデータとその余りと同数のバイト用のコードデータとをコピーする処理に相当する。
最後に、終了処理用コードデータ１１をコードデータ生成領域１２にコピーする（ステップＳ５）。
上記の手順で生成したソートキー比較コードは、ソートキー比較コード生成領域１２に格納される。ソートキー比較コード生成領域１２にコピーされた各コードデータには、ジャンプ先のアドレスなどの可変情報がセットされて実行可能とされる。
【００２６】
図３に、ソートキー長が１７バイトである場合に生成されるソートキー比較コードの一例を示す。ここでは、ソートキー比較コードデータ格納領域６には、初期処理用データ、１〜４バイトの比較コードデータ、終了処理データが格納されているとしている。ソートキー長の“１７”という値を比較コードデータの最大長である“４”という値で除すると１の余りが生じる。よって、ソートキー比較コードには、４バイトの比較コードデータ四つと、１バイトの比較コードデータ一つとが含まれている。
【００２７】
ソート処理の前処理が完了したら（ソートキー比較コードを生成し終えたら）、ソート処理部３によってソート処理を実行する。ソート処理部３は、入力データ１３を読み込み、ソートキー比較コード生成領域１２に格納したソートキー比較コードを用いたデータのソートをソートキー比較処理部４において実行する。ソート結果は出力データ１４として出力する。
【００２８】
図６に、本実施形態に係るソート処理装置のソートキー比較処理の流れを示す。ここで、ソートキーがソートキー比較コードと一致する場合及び一致しない場合の各処理は公知の処理内容であり、本発明の主旨とは関連しないため、詳細な説明は割愛する。図に示すように、ソートキー比較コードに含まれる各比較コードデータごとに同値であるか否かの判定を行うため、比較処理の回数は、ソートキー長よりも少なくなる。具体的には、図５の例のようにソートキー長が１７であり、４バイトまでの比較用のコードデータが用意されているのであれば、比較処理は５回となる。
これに対し、図７に示す一般的なソートキー比較処理では、比較位置をインクリメントしてソートキー終了位置に達したか否かの判断するという処理を繰り返すため、ループのための比較処理（図７破線枠内）がソートキー長と同数必要となり、全体としてはソートキー長の２倍の比較処理が行われることとなる。
【００２９】
このように、本実施形態に係るソート処理装置では、ソートキー長分のループのための比較処理が不要であり、ソートキー比較処理時の比較処理回数が減少するため、ソートキー比較処理を高速に実行でき、ソート処理全体としても高速化できる。
また、ソートキー長にあわせて動的にソートキー比較コードを生成するため、ソートキー長分のマシン語コードを予め用意しておく必要がなく、ソートキー比較処理の内容もシンプルである。
さらに、ソートキー長を指定するのみで最適なソートキー比較コードを生成可能であり、いわばフィードフォーワード処理であるため、ソート処理にエラーが生じることはない。
【００３０】
なお、上記実施形態は本発明の好適な実施の一例であり、本発明はこれに限定されることなく様々な変形が可能である。
【符号の説明】
【００３１】
１    ソート処理前処理部
２、２１、３１    ソートキー比較コード生成部
３、３６    ソート処理部
４、３７    ソートキー比較処理部
６    ソートキー比較コードデータ格納領域
７    初期処理用コードデータ
８、２３、３３    １バイト用比較コードデータ
９、２４、３４    ２バイト用比較コードデータ
１０、２５、３５    Ｎバイト用比較コードデータ
１１    終了処理用コードデータ
１２    ソートキー比較コード生成領域
１３    入力データ
１４    出力データ
２０    ソートキー比較コード生成装置
３０    ソート処理装置
【図１】
2010198070.tif 000003
【図２】
2010198070.tif 000004
【図３】
2010198070.tif 000005
【図４】
2010198070.tif 000006
【図５】
2010198070.tif 000007
【図６】
2010198070.tif 000008
【図７】
2010198070.tif 000009