JP2006163565A - ソート処理装置及びソート処理方法及びプログラム - Google Patents
ソート処理装置及びソート処理方法及びプログラム Download PDFInfo
- Publication number
- JP2006163565A JP2006163565A JP2004350983A JP2004350983A JP2006163565A JP 2006163565 A JP2006163565 A JP 2006163565A JP 2004350983 A JP2004350983 A JP 2004350983A JP 2004350983 A JP2004350983 A JP 2004350983A JP 2006163565 A JP2006163565 A JP 2006163565A
- Authority
- JP
- Japan
- Prior art keywords
- block
- cache
- sort
- size
- data
- 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.)
- Granted
Links
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
【解決手段】 ブロック分割部10が、ソート処理に用いるCPUの1次キャッシュ及び2次キャッシュのキャッシュサイズの情報をCPU情報保持部102から取得し、1次キャッシュ及び2次キャッシュのキャッシュサイズに基づきソート対象データ2を分割する際のブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割し、ブロック内ソート処理部4が、CPUの2次キャッシュを用いて、ブロック分割部10により分割されたブロック毎にブロック内のソートを行い、ブロック間マージ処理部5が、1次キャッシュを用いて、ブロック内ソート処理部4によるソート後の各ブロックをマージして、ソート対象データのソートを行い、ソート後のソート結果データ3を主記憶装置1に出力する。
【選択図】 図1
Description
この発明は上記のような問題点を解決することを目的の一つとしており、ソート処理の高速化を図るとともに、キャッシュヒット率を向上することを目的とする。
キャッシュメモリを用いて、ソート対象データのソートを行うソート処理装置であって、
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割部と、
前記キャッシュメモリを用いて、前記ブロック分割部により分割されたブロック毎にブロック内のソートを行うブロック内ソート処理部と、
前記キャッシュメモリを用いて、前記ブロック内ソート処理部によるソート後の各ブロックをマージして、ソート対象データのソートを行うブロック間マージ処理部とを有することを特徴とする。
図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が含まれる。
CPU情報保持部102は、CPUが有する1次キャッシュサイズ、2次キャッシュサイズの情報(キャッシュサイズ情報)を保持する。図2は、CPU情報保持部が保持するキャッシュサイズ情報の例を示す。例えばCPU ID検出部により検出されたCPU IDが“A02”であったとすると、1次キャッシュサイズが16KB、2次キャッシュサイズが1MBという情報が抽出される。CPU情報保持部102はキャッシュサイズ情報保持部の例である。
ブロック間マージ処理部5はソートされた各ブロックのマージを実行し、その結果をソート結果データ3として主記憶装置上に出力する。
まず、ステップS301において、CPU ID検出部101がマイクロ命令によりCPUのIDを検出する。例えばintel(登録商標)社製マイクロプロセッサのXeon(登録商標)プロセッサでは”cpuid”という命令でCPUのIDをCPUから直接読み出すことができる。
ブロックサイズの算出の基準は、各ブロックの最小値で構成する部分データ列のサイズがCPUの1次キャッシュにヒットするとともに、1ブロックのサイズがCPUの2次キャッシュにヒットする大きさとする。図6に示すように、ソート対象データ2を各ブロックに分割した後、各ブロックの最小値を抽出し、各ブロックの最小値で構成する部分データ列を生成する。この各ブロックの最小値で構成する部分データ列が1次キャッシュサイズに収まる範囲であって、1ブロックのサイズが2次キャッシュサイズに収まるようにブロックサイズを算出する。
ここで、BS<C2を満たすことでCPUの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次キャッシュメモリにおさまるサイズである。
ブロックが空になるとそのブロックはマージの対象からはずされ、残りのブロックだけでマージ処理を行っていく。出力した最小値のブロックが空の場合、出力した最小値の次に小さいデータを出力する。そして出力したデータの属するブロックから最小値のデータ列へ次に小さいデータを挿入する。
以上の処理を経て、主記憶装置1には、ソート結果データ3が得られることになる。
以上の実施の形態1では、CPU IDを直接読み出していたが、次にこれを外部から入力する場合の実施形態を示す。
なお、本実施の形態においても、ソート処理装置100はハードウェアで構成されていてもよいし、ソート処理装置100の要素の全てあるいは一部をCPU上で動作可能なプログラムにより構成してもよい。或いは、ROMに記憶されたファームウェアで実現されていてもよい。或いは、ソフトウェアとハードウェアの組合せ、ソフトウェアとハードウェアとファームウェアとの組み合わせ等で実現されてもよい。
ステップS801において、CPU情報読み込み部103が、ユーザからCPUのキャッシュサイズ情報を入力する。入力するキャッシュサイズ情報には、CPUの1次キャッシュメモリのサイズと2次キャッシュメモリのサイズが示されている。次に、ステップS802において、ブロック分割部10が、CPU情報読み込み部103が読み込んだキャッシュサイズ情報によりソート対象データ2を分割する際のブロックサイズを算出する。ブロックサイズの算出方法は実施の形態1で示したものと同様である。また、以降、実施の形態1と同様にして、ソート対象データを分割し(S803)、分割後のブロック内のソートを実行し(S804)、ブロック内ソート後の各ブロックのマージを行う(S805)。
以上の実施の形態1及び実施の形態2では、CPUのキャッシュメモリの使用状況にかかわらず、キャッシュメモリのメモリ容量を100%使用可能との前提に基づいてブロックサイズを算出したが、本実施の形態では、キャッシュメモリの使用状況を勘案してブロックサイズを算出する場合について説明する。
キャッシュ使用率情報保持部104は、CPUごとに1次キャッシュ及び2次キャッシュの使用率の統計的情報を保持している。キャッシュ使用率情報保持部104は、例えば、時間帯ごとの1次キャッシュ及び2次キャッシュの平均使用率を示す情報を保持している。
また、図9では、図1の構成にキャッシュ使用率情報保持部104を追加した構成としているが、図7の構成にキャッシュ使用率情報保持部104を追加した構成としてもよい。この場合は、ブロック分割部10は、CPU情報読み込み部103が読み込んだCPUのキャッシュサイズ情報とキャッシュ使用率情報保持部104のキャッシュ使用率情報とを用いて、ソート対象データ分割の際のブロックサイズを算出する。
Claims (7)
- キャッシュメモリを用いて、ソート対象データのソートを行うソート処理装置であって、
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割部と、
前記キャッシュメモリを用いて、前記ブロック分割部により分割されたブロック毎にブロック内のソートを行うブロック内ソート処理部と、
前記キャッシュメモリを用いて、前記ブロック内ソート処理部によるソート後の各ブロックをマージして、ソート対象データのソートを行うブロック間マージ処理部とを有することを特徴とするソート処理装置。 - 前記ブロック間マージ処理部は、
前記ブロック内ソート処理部によるソートが行われた後の各ブロックから、各ブロックにおける最大値のデータ又は最小値のデータを抽出し、抽出した各ブロックの最大値のデータ又は最小値のデータによるデータ列を生成し、生成したデータ列の中の最大値のデータ又は最小値のデータから順に各データを抽出して、前記ブロック内ソート処理部によるソート後の各ブロックをマージすることを特徴とする請求項1に記載のソート処理装置。 - 前記ソート処理装置は、
1次キャッシュと2次キャッシュを有するキャッシュメモリを用い、
前記ブロック分割部は、
ソート対象データの分割のためのブロックサイズを、前記2次キャッシュのキャッシュサイズ以内のサイズであって、前記ブロック間マージ処理部が生成するデータ列のデータサイズが前記1次キャッシュのキャッシュサイズ以内となるサイズとすることを特徴とする請求項2に記載のソート処理装置。 - 前記ソート処理装置は、更に、
ソート対象データのソートに用いるキャッシュメモリのCPU(Central Processing Unit)の識別情報を検出する識別情報検出部と、
複数種のCPUについて、それぞれのキャッシュメモリのキャッシュサイズを示すキャッシュサイズ情報を保持するキャッシュサイズ情報保持部とを有し、
前記ブロック分割部は、
前記識別情報検出部により検出されたCPUの識別情報と前記キャッシュサイズ情報保持部のキャッシュサイズ情報とに基づき、ソート対象データのソートに用いるキャッシュメモリのキャッシュサイズを判定し、判定したキャッシュサイズに基づきブロックサイズを算定することを特徴とする請求項1に記載のソート処理装置。 - 前記ソート処理装置は、更に、
ソート対象データのソートに用いるキャッシュメモリのキャッシュサイズを示すキャッシュサイズ情報を入力するキャッシュサイズ情報入力部を有し、
前記ブロック分割部は、
前記キャッシュサイズ情報入力部により入力されたキャッシュサイズ情報に基づき、ソート対象データのソートに用いるキャッシュメモリのキャッシュサイズを判定し、判定したキャッシュサイズに基づきブロックサイズを算定することを特徴とする請求項1に記載のソート処理装置。 - キャッシュメモリを用いて、ソート対象データのソートを行うソート処理方法であって、
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割ステップと、
前記キャッシュメモリを用いて、前記ブロック分割ステップにより分割されたブロック毎にブロック内のソートを行うブロック内ソート処理ステップと、
前記キャッシュメモリを用いて、前記ブロック内ソート処理ステップによるソート後の各ブロックをマージして、ソート対象データのソートを行うブロック間マージ処理ステップとを有することを特徴とするソート処理方法。 - キャッシュメモリを用いて、ソート対象データのソートを行うプログラムであって、
前記キャッシュメモリのキャッシュサイズに基づきブロックサイズを算定し、算定したブロックサイズに基づいてソート対象データを複数のブロックに分割するブロック分割処理と、
前記キャッシュメモリを用いて、前記ブロック分割処理により分割されたブロック毎にブロック内のソートを行うブロック内ソート処理と、
前記キャッシュメモリを用いて、前記ブロック内ソート処理によるソート後の各ブロックをマージして、ソート対象データのソートを行うブロック間マージ処理とをコンピュータに実行させることを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004350983A JP4408078B2 (ja) | 2004-12-03 | 2004-12-03 | ソート処理装置及びソート処理方法及びプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004350983A JP4408078B2 (ja) | 2004-12-03 | 2004-12-03 | ソート処理装置及びソート処理方法及びプログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006163565A true JP2006163565A (ja) | 2006-06-22 |
JP4408078B2 JP4408078B2 (ja) | 2010-02-03 |
Family
ID=36665543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004350983A Active JP4408078B2 (ja) | 2004-12-03 | 2004-12-03 | ソート処理装置及びソート処理方法及びプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4408078B2 (ja) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009072233A1 (ja) | 2007-12-05 | 2009-06-11 | S.Grants Co., Ltd. | ビット列のマージソート装置、方法及びプログラム |
JP2009199439A (ja) * | 2008-02-22 | 2009-09-03 | Nec Corp | マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム |
JP2010230522A (ja) * | 2009-03-27 | 2010-10-14 | Aisin Aw Co Ltd | ナビゲーション装置及びプログラム |
US11200056B2 (en) | 2018-02-08 | 2021-12-14 | Nec Corporation | Parallel union control device, parallel union control method, and storage medium |
CN114282255A (zh) * | 2022-03-04 | 2022-04-05 | 支付宝(杭州)信息技术有限公司 | 一种基于秘密分享的排序序列合并方法和系统 |
-
2004
- 2004-12-03 JP JP2004350983A patent/JP4408078B2/ja active Active
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009072233A1 (ja) | 2007-12-05 | 2009-06-11 | S.Grants Co., Ltd. | ビット列のマージソート装置、方法及びプログラム |
JP2009140161A (ja) * | 2007-12-05 | 2009-06-25 | S Grants Co Ltd | ビット列のマージソート方法及びプログラム |
JP4502223B2 (ja) * | 2007-12-05 | 2010-07-14 | 株式会社エスグランツ | ビット列のマージソート装置、方法及びプログラム |
US8332410B2 (en) | 2007-12-05 | 2012-12-11 | KOUSOKUYA, Inc. | Bit string merge sort device, method, and program |
JP2009199439A (ja) * | 2008-02-22 | 2009-09-03 | Nec Corp | マージソート処理方法、マージソート処理装置、及びマージソート処理プログラム |
JP2010230522A (ja) * | 2009-03-27 | 2010-10-14 | Aisin Aw Co Ltd | ナビゲーション装置及びプログラム |
US11200056B2 (en) | 2018-02-08 | 2021-12-14 | Nec Corporation | Parallel union control device, parallel union control method, and storage medium |
CN114282255A (zh) * | 2022-03-04 | 2022-04-05 | 支付宝(杭州)信息技术有限公司 | 一种基于秘密分享的排序序列合并方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
JP4408078B2 (ja) | 2010-02-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6804668B2 (ja) | ブロックデータ検証方法および装置 | |
CN104517057B (zh) | 基于可信计算的软件混合度量方法 | |
TWI486810B (zh) | 在狀態機晶格中之計數器操作 | |
TWI335512B (en) | Technique for using memory attributes | |
JP2005032018A (ja) | 遺伝的アルゴリズムを用いたマイクロプロセッサ | |
KR20100069240A (ko) | 캐시 컨트롤을 위한 장치 및 방법 | |
CN112328298A (zh) | 移动端的代码库裁剪方法及装置 | |
JP4408078B2 (ja) | ソート処理装置及びソート処理方法及びプログラム | |
US20140047221A1 (en) | Fusing flag-producing and flag-consuming instructions in instruction processing circuits, and related processor systems, methods, and computer-readable media | |
JP2007527582A (ja) | レコードのペアの空間のタイリングによるレコードのリンクのためのデータベース・アクセスの最適化 | |
JP2023505783A (ja) | Gpuパケット集約システム | |
Perrot et al. | An optimized GPU‐based 2D convolution implementation | |
US8549507B2 (en) | Loop coalescing method and loop coalescing device | |
JP2004264886A5 (ja) | ||
US20150134939A1 (en) | Information processing system, information processing method and memory system | |
JP2011141664A (ja) | 文書比較装置、文書比較方法、及びプログラム | |
JP4769755B2 (ja) | プロファイリング支援プログラム、プロファイリング支援方法、およびコンピュータ | |
CN115454983B (zh) | 一种基于布隆过滤器的海量Hbase数据去重方法 | |
US20180239907A1 (en) | Checking method, checking system and checking device for processor security | |
JP2011150736A (ja) | プロファイリングプログラム、プロファイリング方法、およびコンピュータ | |
CN112765027B (zh) | 一种检测应用程序执行过程中冗余零的方法 | |
TWI587149B (zh) | 管理存取控制清單的裝置、執行裝置以及方法 | |
JP5262898B2 (ja) | 画像処理装置、画像処理方法及び画像処理プログラム | |
CN101251811B (zh) | 基于存储器调页行为关联非相关进程内线程的方法和装置 | |
JP2006172003A (ja) | プログラム実行監視装置、プログラム実行監視方法及びプログラム作成方法 |
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 |