JP4408078B2 - Sort processing apparatus, sort processing method and program - Google Patents
Sort processing apparatus, sort processing method and program Download PDFInfo
- Publication number
- JP4408078B2 JP4408078B2 JP2004350983A JP2004350983A JP4408078B2 JP 4408078 B2 JP4408078 B2 JP 4408078B2 JP 2004350983 A JP2004350983 A JP 2004350983A JP 2004350983 A JP2004350983 A JP 2004350983A JP 4408078 B2 JP4408078 B2 JP 4408078B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- cache
- size
- data
- sort
- 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
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Description
本発明は、主記憶装置上にある大容量のソート対象データをソートするソート処理技術に関する。 The present invention relates to a sort processing technique for sorting large-capacity sort target data on a main storage device.
従来のソート処理方式では、主記憶上に2つの領域を設け、ソート対象データ(レコード)をソートキー部分とその他の部分とに分割し、2つの領域に別々に格納してソートキーの部分だけをソートし、ソートされたソートキーと対応するソートキー以外の部分を結合して出力することにより、広範囲にメモリアクセスが入らないようにしてキャッシュヒット率の向上を行っていた(特許文献1)。
上述した従来のソート処理方式では、ソートキーのサイズが大きいときは、広範囲にメモリアクセスが入るため、キャッシュミスを頻発するという問題点があった。例えばソートキーのサイズが大きくレコードのサイズに近い値のときは、レコードを分割しても広範囲にわたりメモリアクセスが入ることになる。
この発明は上記のような問題点を解決することを目的の一つとしており、ソート処理の高速化を図るとともに、キャッシュヒット率を向上することを目的とする。
In the conventional sort processing method described above, when the size of the sort key is large, memory access is made in a wide range, so that cache misses frequently occur. For example, when the size of the sort key is large and the value is close to the size of the record, memory access can be performed over a wide range even if the record is divided.
An object of the present invention is to solve the above-described problems, and it is an object of the present invention to increase the speed of the sorting process and to improve the cache hit rate.
本実施の形態に係るソート処理装置は、
キャッシュメモリを用いて、ソート対象データのソートを行うソート処理装置であって、
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割部と、
前記キャッシュメモリを用いて、前記ブロック分割部により分割されたブロック毎にブロック内のソートを行うブロック内ソート処理部と、
前記キャッシュメモリを用いて、前記ブロック内ソート処理部によるソート後の各ブロックをマージして、ソート対象データのソートを行うブロック間マージ処理部とを有することを特徴とする。
The sort processing device according to the present embodiment is
A sort processing device that sorts data to be sorted using a cache memory,
A block division unit that calculates a block size based on the cache size of the cache memory, and divides the data to be sorted into a plurality of blocks based on the calculated block size;
Using the cache memory, an intra-block sort processing unit that performs intra-block sorting for each block divided by the block dividing unit;
It has an inter-block merge processing unit that uses the cache memory to merge blocks after sorting by the intra-block sort processing unit and sort the data to be sorted.
本発明によれば、キャッシュサイズに適合させたブロックサイズに分割することで、キャッシュメモリを有効に活用して高速なソート処理を実現することができ、また、キャッシュヒット率を向上させることができる。 According to the present invention, by dividing into block sizes adapted to the cache size, high-speed sort processing can be realized by effectively using the cache memory, and the cache hit rate can be improved. .
実施の形態1.
図1は本発明の一実施形態の構成を示す図である。図1において、ソート処理装置100は、主記憶装置1上のソート対象データ2のソート処理を実行し、ソート後のソート結果データ3を主記憶装置1に出力する。なお、図1に示していないが、ソート処理装置100は、キャッシュメモリ(1次キャッシュ、2次キャッシュ)を有するCPU(Central Processing Unit)を用いてソート処理を実行する。ソート処理装置100には、ブロック内ソート処理部4と、ブロック間マージ処理部5と、ブロック情報保持部6と、ブロック分割部10と、CPU ID検出部101と、CPU情報保持部102が含まれる。
FIG. 1 is a diagram showing the configuration of an embodiment of the present invention. In FIG. 1, the
ソート処理装置100はハードウェアで構成されていてもよいし、ソート処理装置100の要素の全てあるいは一部をCPU上で動作可能なプログラムにより構成してもよい。或いは、ROMに記憶されたファームウェアで実現されていてもよい。或いは、ソフトウェアとハードウェアの組合せ、ソフトウェアとハードウェアとファームウェアとの組み合わせ等で実現されてもよい。
The
CPU ID検出部は、ソート処理に使用する(計算機に搭載されている)CPUのID(識別情報)を検出する。CPU ID検出部101は、識別情報検出部の例である。
CPU情報保持部102は、CPUが有する1次キャッシュサイズ、2次キャッシュサイズの情報(キャッシュサイズ情報)を保持する。図2は、CPU情報保持部が保持するキャッシュサイズ情報の例を示す。例えばCPU ID検出部により検出されたCPU IDが“A02”であったとすると、1次キャッシュサイズが16KB、2次キャッシュサイズが1MBという情報が抽出される。CPU情報保持部102はキャッシュサイズ情報保持部の例である。
The CPU ID detection unit detects the ID (identification information) of the CPU (mounted on the computer) used for the sort process. The CPU
The CPU
ブロック分割部10は、CPU ID検出部101により検出されたCPU IDとCPU情報保持部102から得られるキャッシュサイズ情報によりソート対象データ2をブロック分割する際のブロックサイズを決定し、ソート対象データ2を複数のブロックに分割する。ブロックサイズの算出手順の詳細は、後述する。また、ブロック分割部10は分割したブロックのアドレス情報をブロック情報保持部6に格納する。
The
ブロック内ソート処理部4はブロック情報保持部に格納されている全てのブロックにおいてソート対象データのブロック内ソートを実行する。
ブロック間マージ処理部5はソートされた各ブロックのマージを実行し、その結果をソート結果データ3として主記憶装置上に出力する。
The intra-block sort processing unit 4 performs intra-block sorting of the data to be sorted in all blocks stored in the block information holding unit.
The inter-block
次に、図3〜図6を参照して、ソート処理装置100の動作について説明する。
まず、ステップS301において、CPU ID検出部101がマイクロ命令によりCPUのIDを検出する。例えばintel(登録商標)社製マイクロプロセッサのXeon(登録商標)プロセッサでは”cpuid”という命令でCPUのIDをCPUから直接読み出すことができる。
Next, the operation of the
First, in step S301, the CPU
次に、ステップS302において、ブロック分割部10がCPU ID検出部101で得たCPUのIDに基づきCPU情報保持部102から該当するCPUのキャッシュメモリの情報を取得し、取得したキャッシュメモリの情報に基づきキャッシュメモリのキャッシュサイズを判定する。
Next, in step S302, the
次に、ステップS303において、ブロック分割部10がソート対象データ2の分割のためのブロックサイズを算出する(ブロック分割ステップ)。
ブロックサイズの算出の基準は、各ブロックの最小値で構成する部分データ列のサイズがCPUの1次キャッシュにヒットするとともに、1ブロックのサイズがCPUの2次キャッシュにヒットする大きさとする。図6に示すように、ソート対象データ2を各ブロックに分割した後、各ブロックの最小値を抽出し、各ブロックの最小値で構成する部分データ列を生成する。この各ブロックの最小値で構成する部分データ列が1次キャッシュサイズに収まる範囲であって、1ブロックのサイズが2次キャッシュサイズに収まるようにブロックサイズを算出する。
Next, in step S303, the
The standard for calculating the block size is such that the size of the partial data string formed by the minimum value of each block hits the CPU primary cache and the size of one block hits the CPU secondary cache. As shown in FIG. 6, after the
CPUの1次キャッシュサイズ:C1、CPUの2次キャッシュサイズ:C2、ソート対象データの1件当たりのレコード長:RL、ソート対象データの全件のデータサイズ(1件当たりのレコード長×件数):AR、(ソート対象データ分割の際の)ブロック数:BN、(ソート対象データ分割の際の)ブロックサイズ:BSとし、BN=C1/RL、BS=AR/BNと設定する。
ここで、BS<C2を満たすことでCPUの2次キャッシュ内でのブロック内ソートを行うことができる。
CPU primary cache size: C1, CPU secondary cache size: C2, sort target data per record length: RL, data size of all sort target data (record length per record x number of records) : AR, number of blocks (when sorting target data is divided): BN, block size (when sorting target data is divided): BS, BN = C1 / RL, BS = AR / BN.
Here, by satisfying BS <C2, sorting within the block in the secondary cache of the CPU can be performed.
次に、ステップS304において、S303で算出したブロックサイズによりソート対象データ2を複数のブロックに分割する(ブロック分割ステップ)。
例えばCPU ID検出部101により検出されたCPU IDが“A02”であったとすると、図2に示すCPU情報保持部から1次キャッシュサイズが16KB、2次キャッシュサイズが1MBであることがわかる。次に図4においてレコード長が100B、1,000,000件のレコードがあったとするとソート対象データは100,000,000Bである。これを1ブロックのサイズを1,000,000B−100B(1レコード分)で分割する(401)。100B(1レコード分)減らして計算するのは、ソート実行時のデータ交換用レコードを追加するためである。1,000,000B−100Bにてソート対象データを分割すると、9,999件のレコードによるブロックが100個と、100件のレコードによるブロックが1個に分割される。各ブロックにデータ交換用の1レコード分を追加すると、サイズ1,000,000Bのブロック(9,999件のレコード(9,999件×100B=999,900B)+データ交換用1レコード(100B))100個と、サイズ10,100Bの(100件のレコード(100件×100B=10,000B)+データ交換用1レコード(100B))1個が得られる。この場合、101件のレコードによる最小値のデータ列が生成されるが、最小値のデータ列のサイズは101件となり約10KBで1次キャッシュサイズが16KBとするとソート実行時のデータ交換用の1レコード分を含めても1次キャッシュメモリにおさまるサイズである。
Next, in step S304, the
For example, if the CPU ID detected by the CPU
また、ステップS304にてブロック分割部10がブロック分割を行う際に、ブロック情報保持部6に各ブロックのアドレス情報を通知し、ブロック情報保持部6は各ブロックのアドレス情報を保持する。このため、ブロック内ソート処理部4はブロック情報保持部6により各ブロックのアドレス情報を得ることができる。ブロック内ソート処理部4は、ステップS305において、ブロック分割部10により分割された全てのブロックについて2次キャッシュを用いてブロック内ソートを実行する(ブロック内ソート処理ステップ)。例えばクイックソートを用いればデータの参照、データの交換ともキャッシュメモリ上で高速に実行することができる。
Further, when the
全てのブロックについてブロック内ソートが完了すると、次にステップS306において、ブロック間マージ処理部5が各ブロックのマージを行う(ブロック間マージ処理ステップ)。ブロック間のマージ処理を図5のフローチャートに従って説明する。先ず、ブロック内ソートされたN個のブロックの最小値によるデータ列を生成する(S3061)。次に生成したデータ列をソートする(S3062)。このときソートされた各データはブロック情報保持部6によりどのブロックのデータであるかを判別することができる。ソートされたデータ列の最小値をソート結果データの最小値として主記憶上に出力する(S3063)。出力されたデータが属していたブロックに次の最小値のデータがあるか否かを判断し(S3064)、次の最小値のデータがあれば、これを最小値のデータ列に挿入するとともに(S3065)、最小値のデータ列をソートする処理(S3062)から繰り返して実行する。図6のケースでは、ブロック2に属していた“8”が最小値データ列内の最小値として出力されたため、ブロック2の次の最小値である“22”が最小値データ列に挿入される。
When the intra-block sorting is completed for all the blocks, the inter-block
このように最小値を出力したデータのブロックから次の最小値を最小値データ列に挿入していくことによりソート対象データ全体でのソートを行う。
ブロックが空になるとそのブロックはマージの対象からはずされ、残りのブロックだけでマージ処理を行っていく。出力した最小値のブロックが空の場合、出力した最小値の次に小さいデータを出力する。そして出力したデータの属するブロックから最小値のデータ列へ次に小さいデータを挿入する。
In this way, the next minimum value is inserted into the minimum value data string from the block of data that has output the minimum value, thereby sorting the entire data to be sorted.
When a block becomes empty, the block is removed from the merge target, and the merge process is performed only with the remaining blocks. When the output minimum value block is empty, the next smallest data is output after the output minimum value. Then, the next smallest data is inserted from the block to which the output data belongs to the minimum value data string.
出力したデータの属するブロックから次に小さい値の最小値のデータ列への挿入、そのデータ列の最小値の主記憶装置への出力、を繰り返して行き、全てのブロックが空になった時点でソート対象データのソートが完了する(S3066)。
以上の処理を経て、主記憶装置1には、ソート結果データ3が得られることになる。
When the block to which the output data belongs is inserted into the next smallest minimum value data string and the minimum value of the data string is output to the main memory, when all the blocks are empty Sorting of the data to be sorted is completed (S3066).
Through the above processing, sort result data 3 is obtained in the
なお、以上の処理では、各ブロック内の最小値を抽出して最小値データ列を生成し、最小値データ列内の最小値を順に主記憶装置上に出力していったが、各ブロック内の最大値を抽出して最大値データ列を生成し、最大値データ列内の最大値を順に主記憶装置上に出力するようにしてもよい。 In the above processing, the minimum value in each block is extracted to generate a minimum value data string, and the minimum value in the minimum value data string is sequentially output to the main storage device. The maximum value may be extracted to generate a maximum value data string, and the maximum value in the maximum value data string may be output to the main storage device in order.
このように、本実施の形態に係るソート処理装置は、主記憶装置上にある大容量のソート対象データをソートするために、CPUのIDを検出するCPU ID検出部、CPUのIDとCPUのキャッシュメモリの情報を保持するCPU情報保持部、CPU情報保持部により得たCPUのキャッシュメモリの情報によりソート対象データを複数のブロックに分割するブロック分割部、分割したブロックの情報を保持するブロック情報保持部、分割されたブロック毎にソート対象データをソートするブロック内ソート部、ソートされた各ブロックについてマージを実行してソート対象データ全体のソート結果を得るブロック間マージ処理部を備え、ブロック分割部10が、ソート処理に用いるCPUの1次キャッシュ及び2次キャッシュのキャッシュサイズの情報をCPU情報保持部102から取得し、1次キャッシュ及び2次キャッシュのキャッシュサイズに基づきソート対象データ2を分割する際のブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割し、ブロック内ソート処理部4が、CPUの2次キャッシュを用いて、ブロック分割部10により分割されたブロック毎にブロック内のソートを行い、ブロック間マージ処理部5が、1次キャッシュを用いて、ブロック内ソート処理部4によるソート後の各ブロックをマージして、ソート対象データのソートを行い、ソート後のソート結果データ3を主記憶装置1に出力することを特徴とする。
As described above, the sort processing apparatus according to the present embodiment sorts the large-capacity sort target data on the main storage device, the CPU ID detection unit for detecting the CPU ID, the CPU ID and the CPU ID CPU information holding unit for holding cache memory information, block dividing unit for dividing sort target data into a plurality of blocks based on CPU cache memory information obtained by the CPU information holding unit, and block information for holding divided block information The block division includes a holding unit, an intra-block sort unit that sorts the sort target data for each divided block, and an inter-block merge processing unit that performs a merge on each sorted block and obtains a sort result of the entire sort target data. The
そして、本実施の形態に係るソート処理装置は、ソート対象データの分割のためのブロックサイズを2次キャッシュサイズ以内にすることで、2次キャッシュメモリ上でブロック内ソートを高速に実行することができる。また、ソート対象データの分割のためのブロックサイズを最小値データ列のデータサイズが1次キャッシュサイズ以内となるサイズとすることで、ブロック内ソート後の最小値データ列のソートを1次キャッシュメモリ上で高速に実行することができる。これにより、主記憶上の大規模なデータを高速にソートすることができ、また、キャッシュヒット率を向上させることができる。 The sort processing device according to the present embodiment can execute the intra-block sort at high speed on the secondary cache memory by setting the block size for dividing the data to be sorted within the secondary cache size. it can. Further, by setting the block size for dividing the data to be sorted to a size in which the data size of the minimum value data string is within the primary cache size, the sorting of the minimum value data string after the intra-block sort is performed in the primary cache memory. It can be executed at high speed. Thereby, large-scale data on the main memory can be sorted at a high speed, and the cache hit rate can be improved.
実施の形態2.
以上の実施の形態1では、CPU IDを直接読み出していたが、次にこれを外部から入力する場合の実施形態を示す。
In the first embodiment described above, the CPU ID is directly read out. Next, an embodiment in which this is input from the outside will be described.
図7は、本実施の形態の構成を示す図であり、実施の形態1のCPU ID検出部101及びCPU情報保持部102の代わりに、CPU情報読み込み部103を挿入した構成である。ソート処理装置100の他の構成要素、ブロック内ソート処理部4、ブロック間マージ処理部5、ブロック情報保持部6、ブロック分割部10は実施の形態1とである。
FIG. 7 is a diagram showing a configuration of the present embodiment, in which a CPU
CPU情報読み込み部103は、ユーザからCPUのキャッシュサイズ情報を入力する。CPU情報読み込み部103は、キャッシュサイズ情報入力部の例である。
なお、本実施の形態においても、ソート処理装置100はハードウェアで構成されていてもよいし、ソート処理装置100の要素の全てあるいは一部をCPU上で動作可能なプログラムにより構成してもよい。或いは、ROMに記憶されたファームウェアで実現されていてもよい。或いは、ソフトウェアとハードウェアの組合せ、ソフトウェアとハードウェアとファームウェアとの組み合わせ等で実現されてもよい。
The CPU
Also in this embodiment, the
次に、図8に従って本実施の形態に係るソート処理装置100の動作を説明する。
ステップS801において、CPU情報読み込み部103が、ユーザからCPUのキャッシュサイズ情報を入力する。入力するキャッシュサイズ情報には、CPUの1次キャッシュメモリのサイズと2次キャッシュメモリのサイズが示されている。次に、ステップS802において、ブロック分割部10が、CPU情報読み込み部103が読み込んだキャッシュサイズ情報によりソート対象データ2を分割する際のブロックサイズを算出する。ブロックサイズの算出方法は実施の形態1で示したものと同様である。また、以降、実施の形態1と同様にして、ソート対象データを分割し(S803)、分割後のブロック内のソートを実行し(S804)、ブロック内ソート後の各ブロックのマージを行う(S805)。
Next, the operation of the
In step S801, the CPU
このように、本実施の形態に係るソート処理装置は、主記憶装置上にある大容量のソート対象データをソートするために、CPUのキャッシュメモリの情報を読み込むCPU情報読み込み部、CPU情報読み込み部により得たCPUのキャッシュメモリ情報によってソート対象データを複数のブロックに分割するブロック分割部、分割したブロックの情報を保持するブロック情報保持部、分割されたブロック毎にソート対象データをソートするブロック内ソート部、ソートされた各ブロックについてマージを実行してソート対象データ全体のソート結果を得るブロック間マージ処理部を備えることを特徴とする。 As described above, the sort processing device according to the present embodiment has a CPU information reading unit and a CPU information reading unit that read information in the cache memory of the CPU in order to sort a large amount of data to be sorted on the main storage device. A block division unit that divides the data to be sorted into a plurality of blocks based on the CPU cache memory information obtained by the above, a block information holding unit that holds information on the divided blocks, and a block that sorts the data to be sorted for each divided block The sorting unit includes an inter-block merge processing unit that performs merging on each sorted block and obtains a sorting result of the entire sort target data.
実施の形態1では、読み出したCPU IDのキャッシュメモリの情報がCPU情報保持部にない場合はブロック分割するための情報を得られなかったが、本実施の形態ではユーザがCPUのキャッシュメモリの情報を入力し、CPU情報読み込み部が読み込むことで、ブロック分割のサイズを決定することができる。 In the first embodiment, when the CPU information holding unit does not have the read CPU ID cache memory information, the information for dividing the block cannot be obtained. However, in this embodiment, the user does not have the CPU cache memory information. , And the CPU information reading unit reads the block division size.
実施の形態3.
以上の実施の形態1及び実施の形態2では、CPUのキャッシュメモリの使用状況にかかわらず、キャッシュメモリのメモリ容量を100%使用可能との前提に基づいてブロックサイズを算出したが、本実施の形態では、キャッシュメモリの使用状況を勘案してブロックサイズを算出する場合について説明する。
Embodiment 3 FIG.
In the first and second embodiments described above, the block size is calculated based on the assumption that the memory capacity of the cache memory can be used 100% regardless of the use state of the cache memory of the CPU. In the embodiment, a case where the block size is calculated in consideration of the usage state of the cache memory will be described.
図9は、本実施の形態の構成を示す図であり、実施の形態1に示すソート処理装置にキャッシュ使用率情報保持部104を追加した構成である。
キャッシュ使用率情報保持部104は、CPUごとに1次キャッシュ及び2次キャッシュの使用率の統計的情報を保持している。キャッシュ使用率情報保持部104は、例えば、時間帯ごとの1次キャッシュ及び2次キャッシュの平均使用率を示す情報を保持している。
FIG. 9 is a diagram showing a configuration of the present embodiment, which is a configuration in which a cache usage rate information holding unit 104 is added to the sort processing apparatus shown in the first embodiment.
The cache usage rate information holding unit 104 holds statistical information on the usage rates of the primary cache and the secondary cache for each CPU. For example, the cache usage rate information holding unit 104 holds information indicating the average usage rate of the primary cache and the secondary cache for each time period.
また、本実施の形態のブロック分割部10は、CPU情報保持部102のCPUのキャッシュサイズ情報とキャッシュ使用率情報保持部104のキャッシュ使用率の情報とを用いて、ソート対象データ分割の際のブロックサイズを算出する。例えば、図2の“A02”のCPUがCPU ID検出部101により検出された場合を想定する。このとき、キャッシュ使用率情報保持部104のキャッシュ使用率情報に、CPU “AO2”の使用率として、例えば1次キャッシュ:50%、2次キャッシュ:50%と示されていれば、ブロック分割部10は、それぞれのキャッシュサイズの50%である1次キャッシュ:8KB、2次キャッシュ:0.5MBをブロックサイズ算出のための基準値として用い、最小値データ列のサイズが1次キャッシュ:8KBの範囲内に収まるとともに、一つのブロックが2次キャッシュ:0.5MB以内となるようにブロックサイズを算出する。
In addition, the
なお、ブロックサイズ算出の際に、キャッシュ使用率情報保持部104のキャッシュ使用率情報を参照する点以外は、実施の形態1と同様である。
また、図9では、図1の構成にキャッシュ使用率情報保持部104を追加した構成としているが、図7の構成にキャッシュ使用率情報保持部104を追加した構成としてもよい。この場合は、ブロック分割部10は、CPU情報読み込み部103が読み込んだCPUのキャッシュサイズ情報とキャッシュ使用率情報保持部104のキャッシュ使用率情報とを用いて、ソート対象データ分割の際のブロックサイズを算出する。
The block size calculation is the same as that of the first embodiment except that the cache usage rate information in the cache usage rate information holding unit 104 is referred to.
In FIG. 9, the cache usage rate information holding unit 104 is added to the configuration of FIG. 1, but the cache usage rate information holding unit 104 may be added to the configuration of FIG. 7. In this case, the
なお、本実施の形態においても、ソート処理装置100はハードウェアで構成されていてもよいし、ソート処理装置100の要素の全てあるいは一部をCPU上で動作可能なプログラムにより構成してもよい。或いは、ROMに記憶されたファームウェアで実現されていてもよい。或いは、ソフトウェアとハードウェアの組合せ、ソフトウェアとハードウェアとファームウェアとの組み合わせ等で実現されてもよい。
Also in this embodiment, the
本実施の形態よれば、キャッシュメモリの使用状況を勘案してブロックサイズを算出することができる。 According to the present embodiment, the block size can be calculated in consideration of the usage state of the cache memory.
1 主記憶装置、2 ソート対象データ、3 ソート結果データ、4 ブロック内ソート処理部、5 ブロック間マージ処理部、6 ブロック情報保持部、10 ブロック分割部、100 ソート処理装置、101 CPU ID検出部、102 CPU情報保持部、103 CPU情報読み込み部、104 キャッシュ使用率情報保持部。 1 main storage device, 2 sort target data, 3 sort result data, 4 intra-block sort processing unit, 5 inter-block merge processing unit, 6 block information holding unit, 10 block dividing unit, 100 sort processing unit, 101 CPU ID detection unit , 102 CPU information holding unit, 103 CPU information reading unit, 104 Cache usage rate information holding unit.
Claims (6)
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割部と、
前記キャッシュメモリを用いて、前記ブロック分割部により分割されたブロック毎にブロック内のソートを行うブロック内ソート処理部と、
前記キャッシュメモリを用いて、前記ブロック内ソート処理部によるソートが行われた後の各ブロックから、各ブロックにおける最大値のデータ又は最小値のデータを抽出し、抽出した各ブロックの最大値のデータ又は最小値のデータによるデータ列を生成し、生成したデータ列の中の最大値のデータ又は最小値のデータから順に各データを抽出して、前記ブロック内ソート処理部によるソート後の各ブロックをマージするブロック間マージ処理部とを有し、
前記ブロック分割部は、
ソート対象データの分割のためのブロックサイズを、前記2次キャッシュのキャッシュサイズ以内のサイズであって、前記ブロック間マージ処理部が生成するデータ列のデータサイズが前記1次キャッシュのキャッシュサイズ以内となるサイズとすることを特徴とするソート処理装置。 A sort processing device that sorts data to be sorted using a cache memory having a primary cache and a secondary cache ,
A block division unit that calculates a block size based on the cache size of the cache memory, and divides the data to be sorted into a plurality of blocks based on the calculated block size;
Using the cache memory, an intra-block sort processing unit that performs intra-block sorting for each block divided by the block dividing unit;
Using the cache memory, the maximum value data or the minimum value data in each block is extracted from each block after being sorted by the intra-block sort processing unit, and the extracted maximum value data of each block Alternatively, a data string based on the minimum value data is generated, each data is extracted in order from the maximum value data or the minimum value data in the generated data string, and each block after sorting by the intra-block sort processing unit is extracted. possess the interblock merge processing unit for merging,
The block dividing unit
The block size for dividing the data to be sorted is a size within the cache size of the secondary cache, and the data size of the data string generated by the inter-block merge processing unit is within the cache size of the primary cache. Sort processing apparatus characterized by having a size of
前記2次キャッシュを用いて、前記ブロック分割部により分割されたブロック毎にブロック内のソートを行い、Using the secondary cache, sorting within the block for each block divided by the block dividing unit,
前記ブロック間ソート処理部は、The inter-block sort processing unit
前記1次キャッシュを用いて、前記ブロック内ソート処理部によるソート後の各ブロックをマージすることを特徴とする請求項1に記載のソート処理装置。The sort processing apparatus according to claim 1, wherein each block after sorting by the intra-block sort processing unit is merged using the primary cache.
ソート対象データのソートに用いるキャッシュメモリのCPU(Central Processing Unit)の識別情報を検出する識別情報検出部と、
複数種のCPUについて、それぞれのキャッシュメモリのキャッシュサイズを示すキャッシュサイズ情報を保持するキャッシュサイズ情報保持部とを有し、
前記ブロック分割部は、
前記識別情報検出部により検出されたCPUの識別情報と前記キャッシュサイズ情報保持部のキャッシュサイズ情報とに基づき、ソート対象データのソートに用いるキャッシュメモリのキャッシュサイズを判定し、判定したキャッシュサイズに基づきブロックサイズを算定することを特徴とする請求項1に記載のソート処理装置。 The sort processing device further includes:
An identification information detection unit for detecting identification information of a CPU (Central Processing Unit) of the cache memory used for sorting the data to be sorted;
A cache size information holding unit for holding cache size information indicating the cache size of each cache memory for a plurality of types of CPUs;
The block dividing unit
Based on the CPU identification information detected by the identification information detection unit and the cache size information of the cache size information holding unit, the cache size of the cache memory used for sorting the sort target data is determined, and based on the determined cache size 2. The sort processing apparatus according to claim 1, wherein a block size is calculated.
ソート対象データのソートに用いるキャッシュメモリのキャッシュサイズを示すキャッシュサイズ情報を入力するキャッシュサイズ情報入力部を有し、
前記ブロック分割部は、
前記キャッシュサイズ情報入力部により入力されたキャッシュサイズ情報に基づき、ソート対象データのソートに用いるキャッシュメモリのキャッシュサイズを判定し、判定したキャッシュサイズに基づきブロックサイズを算定することを特徴とする請求項1に記載のソート処理装置。 The sort processing device further includes:
A cache size information input unit for inputting cache size information indicating the cache size of the cache memory used for sorting the data to be sorted;
The block dividing unit
The cache size of the cache memory used for sorting the sort target data is determined based on the cache size information input by the cache size information input unit, and the block size is calculated based on the determined cache size. The sort processing apparatus according to 1.
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割ステップと、
前記キャッシュメモリを用いて、前記ブロック分割ステップにより分割されたブロック毎にブロック内のソートを行うブロック内ソート処理ステップと、
前記キャッシュメモリを用いて、前記ブロック内ソート処理ステップによるソートが行われた後の各ブロックから、各ブロックにおける最大値のデータ又は最小値のデータを抽出し、抽出した各ブロックの最大値のデータ又は最小値のデータによるデータ列を生成し、生成したデータ列の中の最大値のデータ又は最小値のデータから順に各データを抽出して、前記ブロック内ソート処理ステップによるソート後の各ブロックをマージするブロック間マージ処理ステップとを有し、
前記ブロック分割ステップでは、
ソート対象データの分割のためのブロックサイズとして、前記2次キャッシュのキャッシュサイズ以内のサイズであって、前記ブロック間マージ処理ステップにより生成されるデータ列のデータサイズが前記1次キャッシュのキャッシュサイズ以内となるサイズが算出されることを特徴とする特徴とするソート処理方法。 A sort processing method for sorting data to be sorted using a cache memory having a primary cache and a secondary cache ,
A block dividing step of calculating a block size based on the cache size of the cache memory and dividing the sort target data into a plurality of blocks based on the calculated block size;
An intra-block sorting process step that sorts the blocks for each block divided by the block dividing step using the cache memory;
Using the cache memory, the maximum value data or the minimum value data in each block is extracted from each block after the sorting by the intra-block sorting process step, and the extracted maximum value data of each block Alternatively, a data string based on the minimum value data is generated, each data is extracted in order from the maximum value data or the minimum value data in the generated data string, and each block after sorting by the intra-block sort processing step is extracted. have a merge process steps between blocks to be merged,
In the block dividing step ,
The block size for dividing the data to be sorted is within the cache size of the secondary cache, and the data size of the data string generated by the inter-block merge processing step is within the cache size of the primary cache A sort processing method characterized in that a size is calculated .
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割処理と、
前記キャッシュメモリを用いて、前記ブロック分割処理により分割されたブロック毎にブロック内のソートを行うブロック内ソート処理と、
前記キャッシュメモリを用いて、前記ブロック内ソート処理によるソートが行われた後の各ブロックから、各ブロックにおける最大値のデータ又は最小値のデータを抽出し、抽出した各ブロックの最大値のデータ又は最小値のデータによるデータ列を生成し、生成したデータ列の中の最大値のデータ又は最小値のデータから順に各データを抽出して、前記ブロック内ソート処理によるソート後の各ブロックをマージするブロック間マージ処理とをコンピュータに実行させ、
前記ブロック分割処理において、
前記コンピュータに、
ソート対象データの分割のためのブロックサイズとして、前記2次キャッシュのキャッシュサイズ以内のサイズであって、前記ブロック間マージ処理により生成されるデータ列のデータサイズが前記1次キャッシュのキャッシュサイズ以内となるサイズを算出させることを特徴とするプログラム。 A program for sorting data to be sorted using a cache memory having a primary cache and a secondary cache ,
A block division process for calculating a block size based on the cache size of the cache memory and dividing the sort target data into a plurality of blocks based on the calculated block size;
Using the cache memory, an intra-block sort process that performs an intra-block sort for each block divided by the block division process;
Using the cache memory, the maximum value data or the minimum value data in each block is extracted from each block after being sorted by the intra-block sort process, and the maximum value data of each extracted block or A data string based on the minimum value data is generated, each data is extracted in order from the maximum value data or the minimum value data in the generated data string, and each block after sorting by the intra-block sort processing is merged. Let the computer execute the merge process between blocks ,
In the block division process,
In the computer,
The block size for dividing the data to be sorted is a size within the cache size of the secondary cache, and the data size of the data string generated by the inter-block merge process is within the cache size of the primary cache. The program characterized by calculating the size which becomes .
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004350983A JP4408078B2 (en) | 2004-12-03 | 2004-12-03 | Sort processing apparatus, sort processing method and program |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004350983A JP4408078B2 (en) | 2004-12-03 | 2004-12-03 | Sort processing apparatus, sort processing method and program |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006163565A JP2006163565A (en) | 2006-06-22 |
JP4408078B2 true JP4408078B2 (en) | 2010-02-03 |
Family
ID=36665543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004350983A Active JP4408078B2 (en) | 2004-12-03 | 2004-12-03 | Sort processing apparatus, sort processing method and program |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4408078B2 (en) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4502223B2 (en) | 2007-12-05 | 2010-07-14 | 株式会社エスグランツ | Bit string merge sort apparatus, method, and program |
JP2009199439A (en) * | 2008-02-22 | 2009-09-03 | Nec Corp | Merge sort processing method, merge sort processing device, and merge sort processing program |
JP5099525B2 (en) * | 2009-03-27 | 2012-12-19 | アイシン・エィ・ダブリュ株式会社 | Navigation device and program |
US11200056B2 (en) | 2018-02-08 | 2021-12-14 | Nec Corporation | Parallel union control device, parallel union control method, and storage medium |
CN114282255B (en) * | 2022-03-04 | 2022-05-31 | 支付宝(杭州)信息技术有限公司 | Sorting sequence merging method and system based on secret sharing |
-
2004
- 2004-12-03 JP JP2004350983A patent/JP4408078B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP2006163565A (en) | 2006-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190266193A1 (en) | Data processing method for bloom filter, and bloom filter | |
CN104517057B (en) | Software hybrid metric method based on trust computing | |
TWI335512B (en) | Technique for using memory attributes | |
CN105159604A (en) | Disk data read-write method and system | |
JPH09218731A (en) | Power estimator for micro processor | |
KR20100069240A (en) | Apparatus and method for cache control | |
JP4408078B2 (en) | Sort processing apparatus, sort processing method and program | |
US7761662B2 (en) | Cache memory device and microprocessor | |
CN112328298A (en) | Code library cutting method and device for mobile terminal | |
JP2007527582A (en) | Optimizing database access for record linking by tiling the space of record pairs | |
CN105095104A (en) | Method and device for data caching processing | |
JP7528217B2 (en) | GPU Packet Aggregation System | |
US20140244939A1 (en) | Texture cache memory system of non-blocking for texture mapping pipeline and operation method of texture cache memory | |
WO2016122318A1 (en) | A computer implemented method for generating a variant call file | |
US7861104B2 (en) | Methods and apparatus for collapsing interrupts | |
CN108170837A (en) | Method of Data Discretization, device, computer equipment and storage medium | |
US8549507B2 (en) | Loop coalescing method and loop coalescing device | |
JP2009169171A (en) | Point compression device for elliptic curve, point deployment device for elliptic curve, method therefor, and program | |
GB2558955A (en) | An apparatus and method for generating and processing a trace stream indicative of execution of predicated vector memory access instructions by processing | |
CN114091384A (en) | Data processing circuit, artificial intelligence chip, data processing method and device | |
JP2006048422A (en) | Loading apparatus, loading method, loading program, and computer readable recording medium for recording loading program | |
JP4769755B2 (en) | Profiling support program, profiling support method, and computer | |
JP2011150736A (en) | Profiling program, profiling method and computer | |
CN115454983B (en) | Massive Hbase data deduplication method based on bloom filter | |
CN113299345B (en) | Virus gene classification method and device and electronic equipment |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20070625 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090721 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090728 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090828 |
|
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: 20091104 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20091105 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4408078 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121120 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121120 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20131120 Year of fee payment: 4 |
|
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 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |