JPH0728624A - ソート装置及びソート方法 - Google Patents

ソート装置及びソート方法

Info

Publication number
JPH0728624A
JPH0728624A JP5173167A JP17316793A JPH0728624A JP H0728624 A JPH0728624 A JP H0728624A JP 5173167 A JP5173167 A JP 5173167A JP 17316793 A JP17316793 A JP 17316793A JP H0728624 A JPH0728624 A JP H0728624A
Authority
JP
Japan
Prior art keywords
memory
sorting
sort
local
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.)
Pending
Application number
JP5173167A
Other languages
English (en)
Inventor
Yasunori Kasahara
康則 笠原
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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric Corp
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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Priority to JP5173167A priority Critical patent/JPH0728624A/ja
Priority to US08/255,375 priority patent/US5535384A/en
Priority to GB9412003A priority patent/GB2280523B/en
Priority to CN94108249A priority patent/CN1069423C/zh
Publication of JPH0728624A publication Critical patent/JPH0728624A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/22Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【目的】 所定のメモリ規模でもその2倍のデータ入力
に対しソートが可能なソート装置またはソート方法を得
る。 【構成】 順次増加するローカルメモリと対応するソー
ティング用のローカルプロセッサを縦続接続する縦続接
続手段と、ソートすべき2N件の入力に対して、順次増
加する各ローカルメモリのメモリ領域数の総和をN以上
としたメモリと、各ローカルメモリが1巡目のソーティ
ング時には対応ローカルプロセッサの制御を受け、2巡
目のソーティング時には各ローカルメモリが異なるアド
レスを持つ単一メモリとして単一プロセッサの制御を受
けるよう、アドレス及びデータラインの切換手段を備え
た。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、大量のデータを高速
にソート処理するソート処理装置と、ソートプロセッサ
を使用した高速ソート方法に関するものである。
【0002】
【従来の技術】本願発明の先行技術としては、特開昭6
3−86043号があり、図16は同論文中に示された
従来のハードウェアソータの構成図の一例で、図17は
図16を簡略化して図示したものである。図において、
1は入力段のローカルプロセッサ、2は次段のプロセッ
サ、以下3ないし6は3段目、n−2段目、n−1段
目、n段目のローカルプロセッサである。11は入力段
のローカルメモリ、12は次段のローカルメモリ、以下
13ないし16は3段目、n−2段目、n−1段目、n
段のローカルメモリである。20はこれから構成される
ハードウェアソータで、30は外部記憶装置としてのデ
ィスク装置、31はディスク制御装置、32は両者を結
ぶデータ転送路である。33は他のデータ転送路、34
はシステムからソータ装置20等へデータを送るデータ
入力転送路、35はソート装置20からのデータ出力転
送路、40はメモリバスである。41はシステム制御装
置、42はチャネルインターフェース、43はホストと
の間のデータ転送路である。また、101は主メモリ
等、十分大きな容量のメモリと汎用プロセッサとからな
るソートデータ駆動装置である。
【0003】次に動作について説明する。今、N(=2
n でnは整数)個のレコードのソートを行なうものとす
る。2ウェイマージを行なう、つまり2入力をマージす
るプロセッサをn(=log2 N)台用意し、1次元状に
結合する。第i番のプロセッサは2i-1 レコード分のメ
モリを持つ。即ち、M1 11は1レコード分、M2 12
は2レコード分、M3 13は22 =4レコード分、・・
・Mn 16は2n-1 のメモリを持つ。N個のレコードは
シリアルに第1番目のプロセッサP1 1に入力され、第
i番目のプロセッサは第i−1番目のプロセッサから送
られてくる2i-1 件のレコードからなるソートされたス
トリングを2本マージして2i レコードからなる一本の
ストリングを生成し、第i+1番目のプロセッサへ送出
する。このように第16図のハードウェアソータはパイ
プラインマージソートを順に実行していく。
【0004】さらにマクロな動作について説明する。は
じめにディスク装置30内のデータはディスク制御装置
31によりデータ転送路32から読み出され、データ転
送路33を通してハードウェアソータ20に入力され
る。また、30から読み出されたデータは31、41、
42を経た後、再び42、41、31を通って20へ入
力される場合も同様である。ハードウェアソータ20内
では各ソートプロセッサP1 1〜Pn 6と各プロセッサ
のローカルメモリ装置11〜16を用いて順にパイプラ
インマージソートが行なわれ、ソート結果がデータ転送
路35を通してメモリバス40に出力され、そのデータ
はシステム制御装置41が読み込み処理をしたり、ある
いはチャネルインターフェース42を介してデータ転送
路43を通してホスト計算機に送られる。ここで、シス
テム制御装置41、ディスク装置30、ディスク制御装
置33を含めてソートデータ駆動装置101として全体
を簡略に図示したものが図17である。
【0005】次にソートエレメント内部の動作について
説明する。各ソートプロセッサ1〜6は前段のプロセッ
サから送られてくるストリングのマージ操作を繰り返
し、1段経る毎にその長さを2倍に伸ばしてゆく。この
操作は基本的には次の2つのフェーズからなる。 第0フェーズ:前段から送られてくる最初のストリング
のレコードをメモリに格納する段階である。最初のスト
リング全体を前段から受け取ると、内部状態は次の第1
フェーズに遷移する。 第1フェーズ:この段階では、ソートプロセッサはメモ
リ内の最初のストリングと新たに入力されるストリング
をマージし、マージされたストリングを次段へ出力す
る。 こうして入力側の段から順々にソートして次段に出力す
ることを繰り返し、一巡のソートで最終段の出力が所定
のソート出力となる。図18はこれを動作概念図で示し
たものである。
【0006】次に上記の2つの段階を経由したソートプ
ロセッサの動作を以下に述べる。フェーズ1、2のマー
ジ操作中はソートプロセッサは1つのレコードを受け取
り、2つのストリングから2レコードを比較し、そして
大きい方かまたは小さい方のレコードを次段のソートプ
ロセッサに対して出力する。こうして、ソートプロセッ
サは1レコードを受け取り1レコードを送り出し、互い
にパイプライン・セグメントを形成する。従って、操作
に必要なメモリ容量は操作中は一定であり、2本のスト
リングの先頭レコードを取り出すシーケンスはランダム
でありメモリ中で一定のソートシーケンスを保つために
は、出力したレコードの格納領域に新たに入力されるレ
コードを格納する様々なメカニズムが必要である。
【0007】さらにタイミングについて説明する。レコ
ードは任意の長さのデータ部と2ワード長のポインター
部からなる。上述したしたように、パイプラインはレコ
ード、ワード、バイト、そしてビット単位で形成され得
るが、ここではパイプラインの1セグメントは1ワード
・プロセッシングで説明する。第1フェーズと第2フェ
ーズでは、ソートエレメントはメモリから2つのストリ
ングの先頭ワードを読み出しこれらを比較すると、同時
に前段から送られてくるワードをメモリへストアする。
こうして、1ワード処理するためにメモリには3回のア
クセスが必要である。1ワード処理は3クロックからな
り、それらはストリング0のリードサイクル、ストリン
グ1のリードサイクル、そして入力ストリングに対する
ライトサイクルである。この様子を図19に示す。ライ
トサイクルにおいてソートエレメントは大きい(または
小さい)方のレコードを次段へ出力する。このようにし
てワードレベルのパイプラインが構成される。
【0008】
【発明が解決しようとする課題】従来のハードウェアソ
ータのメモリ装置は以上のように一般に前段の2倍の容
量のメモリ装置を持ったソートプロセッサを線型に繋い
で構成されており、ソートプロセッサの段数nと最終段
のメモリ容量2n によりソート可能なレコード件数は規
定される。但し、本ソータは、同一のファイル内では固
定長レコードソートを行なうものの、そのレコード長に
は最終段メモリ容量による最大値以外に制限がなく、任
意のレコード長に対して高速で効率的なソート処理が理
論上は可能である。しかし、電子計算機のシステム構成
上、或は、実装上の制限から適当な段数で打ち切り、そ
れで賄えない大容量(レコード数×レコード長)データ
に対してはソフトウェア的に処理しなければならないと
いう課題があった。
【0009】この発明では上記のような課題を解消する
ためになされたもので、新たに大容量のメモリ装置やソ
ートプロセッサを付加せず、従来の大きさの内蔵型ソー
ト処理装置の規模でも、比較的大容量のソートができる
ソート装置又は方法を得ることを目的としている。
【0010】
【課題を解決するための手段】この発明に係わるソート
装置は、順次増加するローカルメモリと対応するソーテ
ィング用のローカルプロセッサを縦続接続する縦続接続
手段と、ソートすべき入力数2N(Nは任意の整数)に
対する上記順次増加する各ローカルメモリのメモリ領域
数の総和をN以上としたメモリと、各ローカルメモリが
1巡目のソーティング時には対応ローカルプロセッサの
制御を受け、2巡目のソーティング時には各ローカルメ
モリが異なるアドレスを持つ単一メモリとして単一プロ
セッサの制御を受けるよう、アドレス及びデータライン
の切換手段を備えた。また請求項2の発明のソート装置
は、請求項1の発明と同様構成で、最終ローカルメモリ
の容量をN/2としたとき、少なくとも他の1つのロー
カルメモリの容量もN/2としたメモリ構成とし、2巡
目の切換手段も、最終段とこの他の1つのローカルメモ
リとを対象とした。更に、請求項3の発明のソート装置
は、請求項1の構成のソート装置を複数台縦続接続可能
な第2の縦続接続手段と、1巡目のソート時にはそれぞ
れのローカルプロセッサの制御を受け、n(nは2以上
の整数)巡目のソート時には、ソート時には各ローカル
メモリが異なるアドレスを持つ単一メモリとして単一プ
ロセッサの制御を受けるよう、アドレス及びデータライ
ンの切換手段を備えた。
【0011】請求項4のソート方法は、順次増加するロ
ーカルメモリと対応するソーティング用のローカルプロ
セッサと、各ローカルプロセッサを縦続接続する縦続接
続手段と、ソートすべき入力数2N(Nは整数)に対し
これら順次増加する各ローカルメモリのメモリ領域数の
総和をN以上としたメモリと、各ローカルメモリが単一
メモリとしても制御を受けられるアドレス、データライ
ンの切換手段を備え、第1のN件の入力の1巡目のソー
ティング時には各ローカルプロセッサと対応ローカルメ
モリとでソートをするステップと、第2のN件の入力の
ソートも同様に行うステップと、ソートされた後のいず
れかのN件の入力データを各ローカルメモリに記憶させ
るステップと、2巡目のソーティング時には各ローカル
メモリを単一メモリとして制御して、ソートされた他の
N件の入力データとソートして2N件のソート出力を得
るステップを備えた。
【0012】また請求項5の発明のソート方法は、順次
増加するローカルメモリと対応するソーティング用のロ
ーカルプロセッサと、各ローカルプロセッサを縦続接続
する縦続接続手段と、ソートすべきN+m以上(N、m
はそれぞれ整数)の入力数に対しこれら順次増加する各
ローカルメモリのメモリ領域数の総和をN以上としたメ
モリを備え、1巡目のソーティング時にはN件の入力
を、各ローカルプロセッサと対応ローカルメモリとでソ
ートをするステップと、残存入力データmを各ローカル
メモリに記憶させるステップと、2巡目のソーティング
時にはソート後のN件のデータを入力とし、上記mデー
タとソートしてN+m件のソート出力を得るステップを
備えた。請求項6の発明のソート装置または方法は、請
求項1ないし請求項5のいずれかの発明で、更に、最初
のソートを実施中に、ソートの終わった入力側から次の
ソートのために残存データを順次各ローカルメモリに記
憶させるようにした。請求項7の発明のソート装置また
は方法は、請求項1ないし請求項5のいずれかの発明
で、更に、第2のソートとは別のバスによりデータを入
力段側から順次各段のローカルメモリに記憶させ、後段
が記憶中に第1のソートデータバスからのデータとロー
カルメモリに記憶させた入力側の段から順次ソートを開
始させるようにした。
【0013】
【作用】この発明によるソート装置は、2N件の入力デ
ータに対し、各1巡目でN1 とN2 件のソートデータが
生成され、2巡目で2N件のソートデータが生成出力さ
れる。請求項3のソート装置は、例えば4N件の入力デ
ータに対し、各ソート装置が2巡目で各2N件のソート
データを出力し、縦続接続した3巡目で4N件のソート
データが生成出力される。縦続接続する装置の台数を増
せば、最終の生成出力データの件数が更に全メモリ容量
の2倍に大きくなる。請求項5のソート方法は、ソート
処理手段がm段でN件までの処理ができるとき、2巡目
でN+m件のソートデータが生成出力される。請求項6
のソート装置または方法は、2巡目以降のソートのため
のメモリへのデータストアが早い時点で開始される。請
求項7のソート装置または方法は、2巡目以降のソート
処理が早い時点で開始される。
【0014】
【実施例】
実施例1.以下、この発明の一実施例を図について説明
する。図1において101は機能的には図3の41のシ
ステム制御装置と31のディスク制御装置を含んだソー
トデータ駆動装置で、33のソートデータ入力パスを通
り1に入力される。1ソートプロセッサP1 、2は1に
続くソートプロセッサP2 、3は2に続くソートプロセ
ッサP3 、・・・5は6のソートプロセッサPn の前段
のソートプロセッサPn-1 で、それぞれローカルメモリ
1 11、M2 12、M3 13、・・・、M15n-1
n 16を備え、アドレス、データバスをドライバ/レ
シーバ9を介してローカルメモリバス111で繋がれて
いる。また、ソートプロセッサPn とは全段のローカル
メモリがアドレス、データバスを上のドライバ/レシー
バ10を介して一度にアクセス出来る。マージソートさ
れたデータストリームは35のソート出力データパスを
通り101のソートデータ駆動装置、或は、さらに図4
に示されたチャネルインターフェイス42を通ってホス
ト計算機43へ戻される。
【0015】本発明の新規部分はドライバ・レシーバ1
10と、少なくともある量のメモリ8を追加し、かつ全
体のアドレスが重複しないようにしたローカルメモリ
と、ソートプロセッサ6である。図2〜図4にデータバ
スの構成ブロック図でn=19とした時の例を示す。特
に図3に示すように、9、10の双方向バス切換を3ス
テート制御のドライバー/レシーバでインプリメントす
るか、或は図4で示すようにLSI化を考慮した21の
セレクタ構造とすることで対応できる。即ち、各段のソ
ートプロセサ・コア部からのデータと19段からの出力
データを選択出力するか、メモリから各段のメモリから
読み込まれるデータと前段のメモリからのデータを選択
するためのセレクタである。尚、20は3ステート出力
の入出力バッファである。破線で囲まれた部分がLSI
に相当する。ここで660はソートプロセッサ間の同期
をとる基本共通クロック信号、650は隣接ソートプロ
セッサ間データ転送バスである。即ち、6で出力するデ
ータをメモリM19以下のメモリに書込むパスとM19以下
のメモリから読み出すデータを6に入力することができ
る。
【0016】双方向バス切換を行うアドレスバスの一般
形を図に、また図にはアドレスバスの構成ブロック図で
n=19とした時の例を示す。アドレス信号は各段のソ
ートプロセッサ出力のアドレスとPn 出力のアドレスを
切り分けるバス・ドライバ9と10で分離される。即
ち、各段でソート処理実行時には9がイネーブルとなり
10の出力はディセーブルである。逆に全段メモリ共通
使用時は10がイネーブルで9がアドレスバスをディセ
ーブルとする。
【0017】従って全段のメモリ共通化使用時と各段個
別アクセス時のメモリのアクセス制御は対象メモリブロ
ックがSRAMアレイの時はチップセレクト信号で行わ
れる。また、DRAMアレイの時は例えば、ニブル・ア
クセス・モード、ページ・アクセス・モード及び通常の
リード/ライトモード時では、カラム・アドレス・スト
ローブ信号等の制御信号を図7で示す91のアドレスデ
コード回路をとおして生成し、さらにセレクタ回路90
で対象を切り分けることで制御できる。
【0018】図2ないし図7の切換バスと切換手段を用
いた図1の構成のソート装置の動作を説明する。図8と
図9は1巡目と2巡目の各ローカルメモリとソートプロ
セッサのアクセスの様子を説明した図である。さて、初
段プロセッサ1に入力されたデータのレコード個数N’
が2n 件以下の時は、従来通り各段のソートプロセッサ
i とローカルメモリMi で並列マージ処理され、1巡
目で最終段プロセッサ6から出力される。しかし入力件
数N’が2n+1 以上で2n+1 未満の時は、まず2n と、
残りのレコードのマージされたレコードを2本生成す
る。この時の各ローカルメモリと各ソートプロセッサの
動作は図9に示す関係となる。これは従来と同様であ
る。この2n 個とN’−2n 個のマージソートされた2
本のストリングがソート出力バス35を通りソートデー
タ駆動装置101に戻される。
【0019】次いでどちらか一方のマージソートされた
ストリングが結果的に各ローカルメモリに記憶されるこ
とになる。例えばストリームの先頭にプロセッサ1ない
し5をスキップさせるフラグを付し、2巡目の1回目の
データとして入力データ転送路33に送る。このストリ
ームはプロセッサ1ないし5をスキップして最終段プロ
セッサ6に達すると、メモリのアドレス空間が全ローカ
ルメモリが1つのメモリになるよう繋がり、バス12
1、122、123等を通って各ローカルメモリ8、1
1ないし16にアドレスとデータが授受される。また図
2ないし図7で述べたように、ドライバ/レシーバのコ
ンテンションが発生しないような制御を行って、ソート
プロセッサ6が容量2n の単一メモリを持ってソート処
理を行えるようになる。図9に2巡目の各メモリと、最
終段プロセッサ6の接続の関係を示す。次いで、ソート
データ駆動装置101に残存する他方のストリングを入
力データ転送路33から入力し、ソートプロセッサ6に
ソート処理をさせる。こうして2巡目の2回目には、ソ
ート出力バス35よりN’個のレコード長を持つ1本の
完全にマージソートされたストリームが得られる。
【0020】実施例2.上記実施例では、2巡目のロー
カルメモリとして全メモリを利用する例を示した。しか
し必ずしも全メモリを使用する必要はない。一般に上記
ソート処理ではソート処理をする最終段のメモリに最も
大きな容量がいる。従って少なくとも他にそれと同様な
容量のローカルメモリがあればそれでもよい。この場合
には全体のローカルメモリ容量は大きくなるが、2巡目
のバスの切換手段の規模が小さく、メモリアドレスの管
理が簡単になる利点がある。
【0021】実施例3.この発明の他の実施例を図につ
いて説明する。図10において、101のソートデータ
駆動装置、1ないし6のプロセッサ、11ないし16の
メモリは実施例1と同様である。プロセッサ1の入力
は、入力ストリーム制御信号51により制御される入力
データストリーム選択部50を通して、ソートデータ駆
動装置からの入力か、前段の同様ソート装置出力からを
選択できる。つまり、単独使用か、複数個のソート装置
の縦続接続かを選択できる。また、各ローカルメモリ
は、ドライバ・レシーバ9を介して、アドレス、データ
バスでローカルメモリバス111と繋がっている。また
ソートプロセッサPn は、ドライバ・レシーバ10を介
して全段のローカルメモリをアクセスできる。マージソ
ートされたデータストリームは、出力データストリーム
選択信号54により、その出力を出力データ選択部53
で、単独ソート時の出力か、後段への出力データストリ
ームバス52に切換られる。この出力データ選択部53
を更に出力データストリームバス52に縦続接続してい
くことで、ソート可能な件数を大きくできる。後段にデ
ータ出力しない場合は、出力データストリームはソート
データ駆動装置101、または従来例で説明したチャネ
ルインターフェース42を経由してホスト計算機43へ
戻される。
【0022】次に図10の構成のソート装置を縦続接続
した時の動作を説明する。入力のデータのレコード個数
N’が2n+1 以上で2n+2 件以下である時を説明する。
まず2n のデータがそれぞれ前のソート装置と後のソー
ト装置で単独でマージソートされてソートデータ駆動装
置101に送られる。残りのレコードも必要に応じてマ
ージされ、2n+1 と残りのN’−2n+1 のマージされた
レコードを合計2本生成する。なお、このソートのやり
方は、種々の組み合わせがある。さて、その後縦続接続
をする。そして2巡目の初めに、どちらか一方のマージ
ソートされたストリングを前段のプロセッサ1に送り、
そのまま後段の最終段プロセッサ6に伝えられ、これら
のデータが結果的に各ローカルメモリに記憶されること
になる。
【0023】このとき、メモリのアドレス空間が全ロー
カルメモリが1つのメモリになるよう繋がり、バス12
1、122、123等を通って各ローカルメモリ8、1
1ないし16にアドレスとデータが授受される。また図
2ないし図7で述べたように、ドライバ/レシーバのコ
ンテンションが発生しないような制御を行うことも実施
例1と同様である。こうするとソートプロセッサ6が容
量2n+1 の単一メモリを持ってソート処理を行えるよう
になる。即ち、図9に示す各メモリと、最終段プロセッ
サ6の接続の関係が前後の2つのソート装置に及ぶこと
となる。最後に、ソートデータ駆動装置101に残存す
る他方のストリングを、前段のソート装置の入力データ
転送路33から入力し、後段のソートプロセッサ6にソ
ート処理をさせる。こうして2巡目の2回目には、後段
のソート出力バス35よりN’、つまり最大2n+2 個の
レコード長を持つ1本の完全にマージソートされたスト
リームが得られる。
【0024】実施例4.2巡目のメモリへのソートされ
たデータの転送路として専用路を用いた、または切換て
記憶させる例を説明する。図11において、112は最
終段プロセッサPn 6のローカルメモリをアクセスする
バス120と外部を接続するインターフェース、114
はソートデータ駆動装置101からこのアクセス用バス
120に接続する直接転送用バスである。この動作は、
1巡目でマージソートされたレコードの内の1つが、2
巡目にデータ駆動装置101より転送路114を経由し
てローカルメモリM1 、M2 、…、Mn に記憶される。
以後の2巡目のマージソート動作は上記各実施例と同じ
である。
【0025】実施例5.従来の、各ローカルメモリと各
ソートプロセッサが処理したものを後段のプロセッサに
順次渡していく構成のハードウェア・ソート装置に本発
明を適用した例を説明する。但し各ソートプロセッサは
自メモリにはストアせずにマージ後のデータを後段に送
る制御をさせる。図12はその動作をステップ別に説明
する図である。まず、ステップS1−1で、未だソート
されていない入力データ2n 件をソートし、N1 レコー
ドとして他の大きなメモリに転送する。次いで、ステッ
プS1−2で、未だソートされていない残りの入力デー
タN−2n 件をソートし、N2 レコードとして他の大き
なメモリに転送する。ステップS2−1で、図128
(b)に示すように、ローカルメモリに1加えたメモリ
を単一ローカルプロセッサにつなぎ、ソート処理をさせ
る。このステップS2−1では、ソート処理といって
も、実際にはレコードの昇順(または降順)にメモリに
ストアされるだけである。ステップS2−2では、残存
するソート後のレコード、例えばN−2n がソート処理
される。ステップS2−2の最終段出力からは、所定の
n+1 件までのソートレコードが得られる。
【0026】実施例6.同様にハードウェア・ソート装
置を2台使用したものに、本発明を適用した例を説明す
る。図13は、その動作をステップ別に説明する図であ
る。図13(a)のステップS11−1では、前段のソ
ート装置でソートし、後段のソート装置は、最終段のプ
ロセッサが後段の全メモリを使用して、2n+1 件までの
データをソートしてN1 レコードとして、他の大きなメ
モリに出力する。ステップS11−2でも同様に、残り
の2n+1 件までのデータをソートしてN2 として他の大
きなメモリに出力する。図13(b)に示すステップS
12−1では、N1 またはN2 レコードをストアする。
ステップS12−2では、残存ソート済レコードを加
え、マージソートさせて最終プロセッサから所望の2
n+2 件までの出力を得る。
【0027】実施例7.ソート装置の全メモリの和がN
であるとしたとき、Nを超え、2N以下のN+m件のデ
ータをソートする他の方法を説明する。図14はそのソ
ート方法のステップを説明した図である。図14(a)
に示すステップS1では、1巡目で2n 件のデータをソ
ート出力する。図14(b)に示すステップS2では、
残りのm件のデータを各ローカルメモリに1件づつスト
アする。ここストアにはデータにフラグを付けて各プロ
セッサに各ローカルメモリにストアさせる方法でもよい
し、別のバスを使用してストアさせる方法でもよい。図
14(c)に示すステップS3では、ソート後の2n
のレコードを入力段のプロセッサから入力し、各プロセ
ッサは各ローカルメモリ中のデータとマージしてレコー
ド長を伸ばして次段に渡していく。
【0028】図15は、具体的な数字での昇順のソート
例を説明する図である。図15(a)で、ソートプロセ
ッサP1 は、入力レコードに対しメモリ中のデータ
「5」をソートして次段に出力する。図15(b)で
は、ソートプロセッサP2 は、入レコードに対しメモリ
中のデータ「2」をソートして次段に出力する。なお図
14の方法で、ソートプロセッサ、従ってローカルメモ
リの段数をnとし、ソートすべき件数が2n +n件以上
ある場合に、この方法を繰り返し、2巡目以降k順目に
は、その最終段ソートプロセッサの出力から2n +k×
n件のソートレコードを得ることができる。
【0029】実施例8.上記実施例では1巡目の部分ソ
ートが終わってから2巡目のストアを開始する例を示し
た。しかし2巡目に各段のプロセッサが各ローカルメモ
リにそれぞれストアしていく装置または方法では、スト
アをもっと早い時期に開始できる。すなわちそのローカ
ルプロセッサがソート処理を終え、次段のローカルプロ
セッサにレコードを渡した時点で、次のレコードをスト
アできる。こうすることで全体のソート処理時間を短縮
できる。
【0030】実施例9.上記実施例では2巡目のストア
が終わってから2巡目のマージソートを開始する例を示
した。しかし2巡目に別バスを用いてローカルメモリに
ストアしていく装置または方法では、マージソートをも
っと早い時期に開始できる。すなわち対応ローカルメモ
リがストアを終えた時点で、ソート駆動装置は本来のバ
スを用いて次のレコードをマージソート用に順次入力段
のローカルプロセッサに送ることができる。こうするこ
とで全体のソート処理時間を短縮できる。
【0031】実施例10.上記実施例では、ローカルメ
モリは、全段がn段(偶数)で、最終段の容量を2n-1
とした入力段から最終段へ順次増加する3角形のメモリ
としたが、途中で折り返し、全段をn/2、各段の容量
が2n-1 +1である矩形のメモリとしてもよい。同様
に、例えば2つのソート装置を縦続接続する装置または
方法で、メモリを3角形を2つ逆に重ねた形、つまりn
段で、各段の容量が2n-1 +1である矩形のメモリとし
てもよい。
【0032】
【発明の効果】以上のようにこの発明によれば、上記構
成または方法としたので、相対的に大きな容量のデータ
を、比較的小さな構成のソート装置でもソートできる効
果がある。
【図面の簡単な説明】
【図1】この発明のソート装置の簡略化した構成を示す
構成ブロック図である。
【図2】この発明のローカルメモリのバス切換を示すバ
ス構成図である。
【図3】この発明のローカルメモリのバス切換を示すバ
ス構成図である。
【図4】この発明のローカルメモリの他のバス切換を示
すバス構成図である。
【図5】この発明のローカルメモリの他のバス切換を示
すバス構成図である。
【図6】この発明のローカルメモリの他のバス切換を示
すバス構成図である。
【図7】この発明のローカルメモリの他のバス切換を示
すバス構成図である。
【図8】図1のソート装置の1巡目のバスアクセスの様
子を説明した図である。
【図9】図1のソート装置の2巡目のバスアクセスの様
子を説明した図である。
【図10】実施例3のソート装置の1つを簡略化して示
す構成ブロック図である。
【図11】実施例4のソート装置の1つを簡略化して示
す構成ブロック図である。
【図12】実施例5のソート方法を説明するソート方法
説明図である。
【図13】実施例6のソート方法を説明するソート方法
説明図である。
【図14】実施例7のソート方法を説明するソート方法
説明図である。
【図15】具体的な数値による各段のソートの説明図で
ある。
【図16】従来のハードウェア・ソータの構成図であ
る。
【図17】図16の構成を簡略化して示した構成ブロッ
ク図である。
【図18】図16の構成のハードウェア・ソータの動作
を説明する説明図である。
【図19】各段のソートプロセッサのリード・ライトの
サイクル動作を説明するタイミング図である。
【符号の説明】
1,2,3,5,6 ローカル・プロセッサ 11,12,13,15,16 ローカルメモリ 9,10 バス切換ドライバ/レシーバ 50 入力データストリーム選択部 51 ソート装置出力データストリームバス 53 出力データストリーム選択部 60 単一化ローカルメモリ 70 ローカルメモリのストア専用バス 121,122,123,124 単一化ローカルメモ
リバス S1 1巡目第1ソート・ステップ S2 2巡目第1ストア・ステップ S3 2巡目マージソート・ステップ S1−1 1巡目第1ソート・ステップ S1−2 1巡目第2ソート・ステップ S2−1 2巡目ストア・ステップ S2−2 2巡目マージソート・ステップ S11−1 1巡目第1ソート・ステップ S11−2 1巡目第2ソート・ステップ S12−1 2巡目ストア・ステップ S12−2 2巡目マージソート・ステップ
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成6年1月10日
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正内容】
【書類名】 明細書
【発明の名称】 ソート装置及びソート方法
【特許請求の範囲】
【発明の詳細な説明】
【0001】
【産業上の利用分野】この発明は、大量のデータを高速
にソート処理するソート処理装置と、ローカルプロセッ
サを使用した高速ソート方法に関するものである。
【0002】
【従来の技術】本願発明の先行技術としては、特開昭6
3−86043号があり、図16は同論文中に示された
従来のハードウェアソータの構成図の一例で、図17は
図16を簡略化して図示したものである。図において、
1は入力段のローカルプロセッサ、2は次段のプロセッ
サ、以下3ないし6は3段目、n−2段目、n−1段
目、n段目のローカルプロセッサである。11は入力段
のローカルメモリ、12は次段のローカルメモリ、以下
13ないし16は3段目、n−2段目、n−1段目、n
段のローカルメモリである。22はこれから構成される
ハードウェアソータで、30は外部記憶装置としてのデ
ィスク装置、31はディスク制御装置、32は両者を結
ぶデータ転送路である。33は他のデータ入力バス、3
4はシステムからソータ装置22等へ、またはディスク
制御装置からシステムへデータを送るデータ入力バス、
35はソート装置22からのソート出力データバス、4
0はメモリバスである。41はシステム制御装置、42
はチャネルインターフェース、43はホストとの間のデ
ータ転送路である。また、101は主メモリ等、十分大
きな容量のメモリと汎用プロセッサとからなるソートデ
ータ駆動装置である。
【0003】次に動作について説明する。今、N(=2
n でnは整数)個のレコードのソートを行なうものとす
る。2ウェイマージを行なう、つまり2入力をマージす
るプロセッサをn(=log2 N)台用意し、1次元状に
結合する。第i番のプロセッサは2i-1 レコード分のメ
モリを持つ。即ち、M1 11は1レコード分、M2 12
は2レコード分、M3 13は22 =4レコード分、・・
・Mn 16は2n-1 のメモリを持つ。N個のレコードは
シリアルに第1番目のプロセッサP1 1に入力され、第
i番目のプロセッサは第i−1番目のプロセッサから送
られてくる2i- 1 件のレコードからなるソートされたス
トリングを2本マージして2i レコードからなる一本の
ストリングを生成し、第i+1番目のプロセッサへ送出
する。このように第16図のハードウェアソータはパイ
プラインマージソートを順に実行していく。
【0004】さらにマクロな動作について説明する。は
じめにディスク装置30内のデータはディスク制御装置
31によりデータ転送路32から読み出され、データ転
送路33を通してハードウェアソータ20に入力され
る。また、30から読み出されたデータは31、41、
42を経た後、再び42、41、31を通って20へ入
力される場合も同様である。ハードウェアソータ20内
では各ソートプロセッサP1 1〜Pn 6と各プロセッサ
のローカルメモリ装置11〜16を用いて順にパイプラ
インマージソートが行なわれ、ソート結果がデータ転送
路35を通してメモリバス40に出力され、そのデータ
はシステム制御装置41が読み込み処理をしたり、ある
いはチャネルインターフェース42を介してデータ転送
路43を通してホスト計算機に送られる。ここで、シス
テム制御装置41、ディスク装置30、ディスク制御装
置31を含めてソートデータ駆動装置101として全体
を簡略に図示したものが図17である。
【0005】次にソートエレメント内部の動作について
説明する。各ソートプロセッサ1〜6は前段のプロセッ
サ又は入力バスから送られてくるストリングのマージ操
作を繰り返し、1段経る毎にその長さを2倍に伸ばして
ゆく。この操作は基本的には次の2つのフェーズからな
る。 第0フェーズ:前段から送られてくる最初のストリング
のレコードをメモリに格納する段階である。最初のスト
リング全体を前段から受け取ると、内部状態は次の第1
フェーズに遷移する。 第1フェーズ:この段階では、ソートプロセッサはメモ
リ内の最初のストリングと新たに入力されるストリング
をマージし、マージされたストリングを次段へ出力す
る。 こうして入力側の段から順々にソートして次段に出力す
ることを繰り返し、一巡のソートで最終段の出力が所定
のソート出力となる。図18はこれを動作概念図で示し
たものである。
【0006】次に上記の2つの段階を経由したソートプ
ロセッサの動作を以下に述べる。フェーズ0、1のマー
ジ操作中はソートプロセッサは1つのレコードを受け取
り、2つのストリングから2レコードを比較し、そして
大きい方かまたは小さい方のレコードを次段のソートプ
ロセッサに対して出力する。こうして、ソートプロセッ
サは1レコードを受け取り1レコードを送り出し、結果
的に新しいストリングを形成する。従って、操作に必要
なメモリ容量は操作中は一定であり、2本のストリング
の先頭レコードを取り出すシーケンスはランダムであり
メモリ中で一定のソートシーケンスを保つためには、出
力したレコードの格納領域に新たに入力されるレコード
を格納する様々なメカニズムが必要である。
【0007】さらにタイミングについて説明する。レコ
ードは任意の長さのデータ部と2ワード長のポインター
部からなる。上述したしたように、ストリングはレコー
ド、ワード、バイト、そしてビット単位で形成され得る
が、ここではストリングの1セグメントは1ワード・プ
ロセッシングで説明する。第1フェーズと第2フェーズ
では、ソートエレメントはメモリから2つのストリング
の先頭ワードを読み出しこれらを比較すると、同時に前
段から送られてくるワードをメモリへストアする。こう
して、1ワード処理するためにメモリには3回のアクセ
スが必要である。1ワード処理は3クロックからなり、
それらはストリング0のリードサイクル、ストリング1
のリードサイクル、そして入力ストリングに対するライ
トサイクルである。この様子を図19に示す。ライトサ
イクルにおいてソートエレメントは大きい(または小さ
い)方のレコードを次段へ出力する。このようにしてワ
ードレベルのパイプラインが構成される。
【0008】
【発明が解決しようとする課題】従来のハードウェアソ
ータのメモリ装置は以上のように一般に前段の2倍の容
量のメモリ装置を持ったソートプロセッサを線型に繋い
で構成されており、ソートプロセッサの段数nと最終段
のメモリ容量2n によりソート可能なレコード件数は規
定される。但し、本ソータは、同一のファイル内では固
定長レコードソートを行なうものの、そのレコード長に
は最終段メモリ容量による最大値以外に制限がなく、任
意のレコード長に対して高速で効率的なソート処理が理
論上は可能である。しかし、電子計算機のシステム構成
上、或は、実装上の制限から適当な段数で打ち切り、そ
れで賄えない大容量(レコード数×レコード長)データ
に対してはソフトウェア的に処理しなければならないと
いう課題があった。
【0009】この発明では上記のような課題を解消する
ためになされたもので、新たに大容量のメモリ装置やソ
ートプロセッサを付加せず、従来の大きさの内蔵型ソー
ト処理装置の規模でも、比較的大容量のソートができる
ソート装置又は方法を得ることを目的としている。
【0010】
【課題を解決するための手段】この発明に係わるソート
装置は、順次増加するローカルメモリと対応するソーテ
ィング用のローカルプロセッサを縦続接続する縦続接続
手段と、ソートすべき入力数2N(Nは任意の整数)に
対する上記順次増加する各ローカルメモリのメモリ領域
数の総和をN以上としたメモリと、各ローカルメモリが
1巡目のソーティング時には対応ローカルプロセッサの
制御を受け、2巡目のソーティング時には各ローカルメ
モリが異なるアドレスを持つ単一メモリとして単一プロ
セッサの制御を受けるよう、アドレス及びデータライン
の切換手段を備えた。また請求項2の発明のソート装置
は、請求項1の発明と同様構成で、最終ローカルメモリ
の容量をN/2としたとき、少なくとも他の1つのロー
カルメモリの容量もN/2としたメモリ構成とし、2巡
目の切換手段も、最終段とこの他の1つのローカルメモ
リとを対象とした。更に、請求項3の発明のソート装置
は、請求項1の構成のソート装置を複数台縦続接続可能
な第2の縦続接続手段と、1巡目のソート時にはそれぞ
れのローカルプロセッサの制御を受け、n(nは2以上
の整数)巡目のソート時には、ソート時には各ローカル
メモリが異なるアドレスを持つ単一メモリとして単一プ
ロセッサの制御を受けるよう、アドレス及びデータライ
ンの切換手段を備えた。
【0011】請求項4のソート方法は、順次増加するロ
ーカルメモリと対応するソーティング用のローカルプロ
セッサと、各ローカルプロセッサを縦続接続する縦続接
続手段と、ソートすべき入力数2N(Nは整数)に対し
これら順次増加する各ローカルメモリのメモリ領域数の
総和をN以上としたメモリと、各ローカルメモリが単一
メモリとしても制御を受けられるアドレス、データライ
ンの切換手段を備え、第1のN件の入力の1巡目のソー
ティング時には各ローカルプロセッサと対応ローカルメ
モリとでソートをするステップと、第2のN件の入力の
ソートも同様に行うステップと、ソートされた後のいず
れかのN件の入力データを各ローカルメモリに記憶させ
るステップと、2巡目のソーティング時には各ローカル
メモリを単一メモリとして制御して、ソートされた他の
N件の入力データとソートして2N件のソート出力を得
るステップを備えた。
【0012】また請求項5の発明のソート方法は、順次
増加するローカルメモリと対応するソーティング用のロ
ーカルプロセッサと、各ローカルプロセッサを縦続接続
する縦続接続手段と、ソートすべきN+m以上(N、m
はそれぞれ整数)の入力数に対しこれら順次増加する各
ローカルメモリのメモリ領域数の総和をN以上としたメ
モリを備え、1巡目のソーティング時にはN件の入力
を、各ローカルプロセッサと対応ローカルメモリとでソ
ートをするステップと、残存入力データmを各ローカル
メモリに記憶させるステップと、2巡目のソーティング
時にはソート後のN件のデータを入力とし、上記mデー
タとソートしてN+m件のソート出力を得るステップを
備えた。請求項6の発明のソート装置または方法は、請
求項1ないし請求項5のいずれかの発明で、更に、最初
のソートを実施中に、ソートの終わった入力側から次の
ソートのために残存データを順次各ローカルメモリに記
憶させるようにした。請求項7の発明のソート装置また
は方法は、請求項1ないし請求項5のいずれかの発明
で、更に、第2のソートとは別のバスによりデータを入
力段側から順次各段のローカルメモリに記憶させ、後段
が記憶中に第1のソートデータバスからのデータとロー
カルメモリに記憶させた入力側の段から順次ソートを開
始させるようにした。
【0013】
【作用】この発明によるソート装置は、2N(=Σ
i )件の入力データに対し、各1巡目でN1 とN2 件
のソートデータが生成され、2巡目で2N件のソートデ
ータが生成出力される。請求項3のソート装置は、例え
ば4N件の入力データに対し、各ソート装置が2巡目で
各2N件のソートデータを出力し、縦続接続した3巡目
で4N件のソートデータが生成出力される。縦続接続す
る装置の台数を増せば、最終の生成出力データの件数が
更に全メモリ容量の2倍に大きくなる。請求項5のソー
ト方法は、ソート処理手段がm段でN件までの処理がで
きるとき、2巡目でN+m件のソートデータが生成出力
される。請求項6のソート装置または方法は、2巡目以
降のソートのためのメモリへのデータストアが早い時点
で開始される。請求項7のソート装置または方法は、2
巡目以降のソート処理が早い時点で開始される。
【0014】
【実施例】 実施例1.以下、この発明の一実施例を図について説明
する。図1において101は機能的には図16の41の
システム制御装置と31のディスク制御装置を含んだソ
ートデータ駆動装置で、33のソートデータ入力パスを
通り1に入力される。1はソートプロセッサP1 、2は
1に続くソートプロセッサP2 、3は2に続くソートプ
ロセッサP3 、・・・5は6のソートプロセッサPn
前段のソートプロセッサPn-1 で、それぞれローカルメ
モリM1 11、M2 12、M3 13、・・・、Mn-1
5、Mn 16を備え、アドレス、データバスをドライバ
/レシーバ9を介してローカルメモリバス111で繋が
れている。また、ソートプロセッサPn とは全段のロー
カルメモリがアドレス、データバスを上のドライバ/レ
シーバ10を介して一度にアクセス出来る。マージソー
トされたデータストリームは35のソート出力データパ
スを通り101のソートデータ駆動装置、或は、さらに
図16に示されたチャネルインターフェイス42を通っ
てホスト計算機へのデータ転送路43へ戻される。
【0015】本発明の新規部分はドライバ・レシーバ1
10と、少なくともある量のメモリ8を追加し、かつ全
体のアドレスが重複しないようにしたローカルメモリ
と、ソートプロセッサ6である。図2〜図4にデータバ
スの構成ブロック図でn=19とした時の例を示す。特
に図3に示すように、9、10の双方向バス切換を3ス
テート制御のドライバー/レシーバでインプリメントす
るか、或は図4で示すようにLSI化を考慮した21の
セレクタ構造とすることで対応できる。即ち、各段のソ
ートプロセサ・コア部からのデータと19段からの出力
データを選択出力するか、各段のメモリから読み込まれ
るデータと前段のメモリからのデータを選択するための
セレクタである。尚、20は3ステート出力の入出力バ
ッファである。破線で囲まれた部分がLSIに相当す
る。ここで660はソートプロセッサ間の同期をとる基
本共通クロック信号、650は隣接ソートプロセッサ間
データ転送バスである。即ち、6で出力するデータをメ
モリM19以下のメモリに書込むパスとM19以下のメモリ
から読み出すデータを6に入力することができる。
【0016】双方向バス切換を行うアドレスバスの一般
形を図に、また図にはアドレスバスの構成ブロック図で
n=19とした時の例を示す。アドレス信号は各段のソ
ートプロセッサ出力のアドレスとPn 出力のアドレスを
切り分けるバス・ドライバ9と10で分離される。即
ち、各段でソート処理実行時には9がイネーブルとなり
10の出力はディセーブルである。逆に全段メモリ共通
使用時は10がイネーブルで9がアドレスバスをディセ
ーブルとする。
【0017】従って全段のメモリ共通化使用時と各段個
別アクセス時のメモリのアクセス制御は対象メモリブロ
ックがSRAMアレイの時はチップセレクト信号で行わ
れる。また、DRAMアレイの時は例えば、ニブル・ア
クセス・モード、ページ・アクセス・モード及び通常の
リード/ライトモード時では、カラム・アドレス・スト
ローブ信号等の制御信号を図7で示す91のアドレスデ
コード回路をとおして生成し、さらにセレクタ回路90
で対象を切り分けることで制御できる。
【0018】図2ないし図7の切換バスと切換手段を用
いた図1の構成のソート装置の動作を説明する。図8と
図9は1巡目と2巡目の各ローカルメモリとソートプロ
セッサのアクセスの様子を説明した図である。さて、初
段プロセッサ1に入力されたデータのレコード個数N’
が2n 件以下の時は、従来通り各段のソートプロセッサ
i とローカルメモリMi で並列マージ処理され、1巡
目で最終段プロセッサ6から出力される。しかし入力件
数N’が2n 以上で2n+1 未満の時は、まず2n と、残
りのレコードのマージされたレコードを2本生成する。
この時の各ローカルメモリと各ソートプロセッサの動作
は図9に示す関係となる。これは従来と同様である。こ
の2n 個とN’−2n 個のレコードから成るマージソー
トされた2本のストリングがソート出力バス35を通り
ソートデータ駆動装置101に戻される。
【0019】次いでどちらか一方のマージソートされた
ストリングが結果的に各ローカルメモリに記憶されるこ
とになる。例えばストリームの先頭にプロセッサ1ない
し5をスキップさせるフラグを付し、2巡目の1回目の
データとして入力データ転送路33に送る。このストリ
ームはプロセッサ1ないし5をスキップして最終段プロ
セッサ6に達すると、メモリのアドレス空間が全ローカ
ルメモリが1つのメモリになるよう繋がり、バス12
1、122、123、124等を通って各ローカルメモ
リ8、11ないし16にアドレスとデータが授受され
る。また図2ないし図7で述べたように、ドライバ/レ
シーバのコンテンションが発生しないような制御を行っ
て、ソートプロセッサ6が容量2n の単一メモリを持っ
てソート処理を行えるようになる。図9に2巡目の各メ
モリと、最終段プロセッサ6の接続の関係を示す。次い
で、ソートデータ駆動装置101に残存する他方のスト
リングを入力データ転送路33から入力し、ソートプロ
セッサ6にソート処理をさせる。こうして2巡目の2回
目には、ソート出力バス35よりN’個のレコード長を
持つ1本の完全にマージソートされたストリームが得ら
れる。
【0020】実施例2.上記実施例では、2巡目のロー
カルメモリとして全メモリを利用する例を示した。しか
し必ずしも全メモリを使用する必要はない。一般に上記
ソート処理ではソート処理をする最終段のメモリに最も
大きな容量がいる。従って少なくとも他にそれと同様な
容量のローカルメモリがあればそれでもよい。この場合
には全体のローカルメモリ容量は大きくなるが、2巡目
のバスの切換手段の規模が小さく、メモリアドレスの管
理が簡単になる利点がある。
【0021】実施例3.この発明の他の実施例を図につ
いて説明する。図10において、101のソートデータ
駆動装置、1ないし6のプロセッサ、11ないし16の
メモリは実施例1と同様である。プロセッサ1の入力
は、入力データストリーム制御信号51により制御され
る入力データストリーム選択部50を通して、ソートデ
ータ駆動装置からの入力か、前段と同様のソート装置の
出力かを選択できる。つまり、単独使用か、複数個のソ
ート装置の縦続接続かを選択できる。また、各ローカル
メモリは、ドライバ・レシーバ9を介して、アドレス、
データバスでローカルメモリバス111と繋がってい
る。またソートプロセッサPn は、ドライバ・レシーバ
10を介して全段のローカルメモリをアクセスできる。
マージソートされたデータストリームは、出力データス
トリーム選択信号54により、その出力を出力データス
トリーム選択部53で、単独ソート時の出力か、後段へ
の出力データストリームバス52に切換られる。この出
力データストリーム選択部53を更に出力データストリ
ームバス52に縦続接続していくことで、ソート可能な
件数を大きくできる。後段にデータ出力しない場合は、
出力データストリームはソートデータ駆動装置101、
または従来例で説明したチャネルインターフェース42
を経由してホスト計算機へ戻される。
【0022】次に図10の構成のソート装置を縦続接続
した時の動作を説明する。入力のデータのレコード個数
N’が2n+1 以上で2n+2 件以下である時を説明する。
まず2n のデータがそれぞれ前のソート装置と後のソー
ト装置で単独でマージソートされてソートデータ駆動装
置101に送られる。残りのレコードも必要に応じてマ
ージされ、2n+1 と残りのN’−2n+1 のマージされた
レコードを合計2本生成する。なお、このソートのやり
方は、種々の組み合わせがある。さて、その後縦続接続
をする。そして縦続接続後にまず、どちらか一方のマー
ジソートされたストリングを前段のプロセッサ1に送
り、そのまま後段の最終段プロセッサ6に伝えられ、こ
れらのデータが結果的に各ローカルメモリに記憶される
ことになる。
【0023】このとき、メモリのアドレス空間が全ロー
カルメモリが1つのメモリになるよう後段のバス116
と前段のバス14が繋がり、バス121、122、12
3等を通って各ローカルメモリ8、11ないし16にア
ドレスとデータが授受される。また図2ないし図7で述
べたように、ドライバ/レシーバのコンテンションが発
生しないような制御を行うことも実施例1と同様であ
る。こうするとソートプロセッサ6が容量2n+1 の単一
メモリを持ってソート処理を行えるようになる。即ち、
図9に示す各メモリと、最終段プロセッサ6の接続の関
係が前後の2つのソート装置に及ぶこととなる。最後
に、ソートデータ駆動装置101に残存する他方のスト
リングを、前段のソート装置の入力データ転送路33か
ら入力し、後段のソートプロセッサ6にソート処理をさ
せる。こうして2巡目の2回目には、後段のソート出力
バス35よりN’、つまり最大2n+2 個のレコード長を
持つ1本の完全にマージソートされたストリームが得ら
れる。
【0024】実施例4.2巡目のメモリへのソートされ
たデータの転送路として専用路を用いた、または切換て
記憶させる例を説明する。図11において、113は最
終段プロセッサPn 6のローカルメモリをアクセスする
バス120と外部を接続するインターフェース、70は
ソートデータ駆動装置101からこのアクセス用バス1
20に接続する直接転送用バスである。この動作は、1
巡目でマージソートされたレコードの内の1つが、2巡
目の前半にデータ駆動装置101より転送路70を経由
してローカルメモリM1 、M2、…、Mn に記憶され
る。以後の2巡目の後半でマージソート動作は上記各実
施例と同じである。
【0025】実施例5.従来の、各ローカルメモリと各
ソートプロセッサが処理したものを後段のプロセッサに
順次渡していく構成のハードウェア・ソート装置に本発
明を適用した例を説明する。但し各ソートプロセッサは
自メモリにはストアせずにマージ後のデータを後段に送
る制御をさせる。図12はその動作をステップ別に説明
する図である。まず、ステップS1−1で、未だソート
されていない入力データ2n 件をソートし、N1 レコー
ドとして他の大きなメモリに転送する。次いで、ステッ
プS1−2で、未だソートされていない残りの入力デー
タN−2n 件をソートし、N2 レコードとして他の大き
なメモリに転送する。ステップS2−1で、図12
(b)に示すように、ローカルメモリに1加えたメモリ
を単一ローカルプロセッサにつなぎ、ソート処理をさせ
る。このステップS2−1では、ソート処理といって
も、実際にはレコードの昇順(または降順)にメモリに
ストアされるだけである。ステップS2−2では、残存
するソート後のレコード、例えばN−2n がソート処理
される。ステップS2−2の最終段出力からは、所定の
n+1 件までのソートレコードが得られる。
【0026】実施例6.同様にハードウェア・ソート装
置を2台使用したものに、本発明を適用した例を説明す
る。図13は、その動作をステップ別に説明する図であ
る。図13(a)のステップS11−1では、前段のソ
ート装置でソートし、後段のソート装置は、最終段のプ
ロセッサが後段の全メモリを使用して、2n+1 件までの
データをソートしてN1 レコードとして、他の大きなメ
モリに出力する。ステップS11−2でも同様に、残り
の2n+1 件までのデータをソートしてN2 として他の大
きなメモリに出力する。図13(b)に示すステップS
12−1では、N1 またはN2 レコードをストアする。
ステップS12−2では、残存ソート済レコードを加
え、マージソートさせて最終プロセッサから所望の2
n+2 件までの出力を得る。
【0027】実施例7.ソート装置の全メモリの和がN
であるとしたとき、Nを超え、2N以下のN+m件のデ
ータをソートする他の方法を説明する。図14はそのソ
ート方法のステップを説明した図である。図14(a)
に示すステップS1では、1巡目で2n 件のデータをソ
ート出力する。図14(b)に示すステップS2では、
残りのm件のデータを各ローカルメモリに1件づつスト
アする。ここストアにはデータにフラグを付けて各プロ
セッサに各ローカルメモリにストアさせる方法でもよい
し、別のバスを使用してストアさせる方法でもよい。図
14(c)に示すステップS3では、ソート後の2n
のレコードを入力段のプロセッサから入力し、各プロセ
ッサは各ローカルメモリ中のデータとマージしてレコー
ド長を伸ばして次段に渡していく。
【0028】図15は、具体的な数字での昇順のソート
例を説明する図である。図15(a)で、ソートプロセ
ッサP1 は、入力レコードに対しメモリ中のデータ
「5」をソートして次段に出力する。図15(b)で
は、ソートプロセッサP2 は、入レコードに対しメモリ
中のデータ「2」をソートして次段に出力する。なお図
14の方法で、ソートプロセッサ、従ってローカルメモ
リの段数をnとし、ソートすべき件数が2n +n件以上
ある場合に、この方法を繰り返し、2巡目以降k順目に
は、その最終段ソートプロセッサの出力から2n +k×
n件のソートレコードを得ることができる。
【0029】実施例8.上記実施例では1巡目の部分ソ
ートが終わってから2巡目のストアを開始する例を示し
た。しかし2巡目に各段のプロセッサが各ローカルメモ
リにそれぞれストアしていく装置または方法では、スト
アをもっと早い時期に開始できる。すなわちそのローカ
ルプロセッサがソート処理を終え、次段のローカルプロ
セッサにレコードを渡した時点で、各ローカルプロセッ
サの送出するソート終了信号400をソートデータ駆動
装置101が察知して、次のレコードをストアできる。
こうすることで全体のソート処理時間を短縮できる。
【0030】実施例9.上記実施例では2巡目のストア
が終わってから2巡目のマージソートを開始する例を示
した。しかし2巡目に別バスを用いてローカルメモリに
ストアしていく装置または方法では、マージソートをも
っと早い時期に開始できる。すなわち対応ローカルメモ
リがストアを終えた時点で、ソート駆動装置は本来のバ
スを用いて次のレコードをマージソート用に順次入力段
のローカルプロセッサに送ることができる。こうするこ
とで全体のソート処理時間を短縮できる。
【0031】実施例10.上記実施例では、ローカルメ
モリは、全段がn段(偶数)で、最終段の容量を2n-1
とした入力段から最終段へ順次増加する3角形のメモリ
としたが、途中で折り返し、全段をn/2、各段の容量
が2n-1 +1である矩形のメモリとしてもよい。同様
に、例えば2つのソート装置を縦続接続する装置または
方法で、メモリを3角形を2つ逆に重ねた形、つまりn
段で、各段の容量が2n-1 +1である矩形のメモリとし
てもよい。
【0032】
【発明の効果】以上のようにこの発明によれば、上記構
成または方法としたので、相対的に大きな容量のデータ
を、比較的小さな構成のソート装置でもソートできる効
果がある。
【図面の簡単な説明】
【図1】この発明のソート装置の簡略化した構成を示す
構成ブロック図である。
【図2】この発明のローカルメモリのバス切換を示すバ
ス構成図である。
【図3】この発明のローカルメモリのバス切換を示すバ
ス構成図である。
【図4】この発明のローカルメモリの他のバス切換を示
すバス構成図である。
【図5】この発明のローカルメモリの他のバス切換を示
すバス構成図である。
【図6】この発明のローカルメモリの他のバス切換を示
すバス構成図である。
【図7】この発明のローカルメモリの他のバス切換を示
すバス構成図である。
【図8】図1のソート装置の1巡目のバスアクセスの様
子を説明した図である。
【図9】図1のソート装置の2巡目のバスアクセスの様
子を説明した図である。
【図10】実施例3のソート装置の1つを簡略化して示
す構成ブロック図である。
【図11】実施例4のソート装置の1つを簡略化して示
す構成ブロック図である。
【図12】実施例5のソート方法を説明するソート方法
説明図である。
【図13】実施例6のソート方法を説明するソート方法
説明図である。
【図14】実施例7のソート方法を説明するソート方法
説明図である。
【図15】具体的な数値による各段のソートの説明図で
ある。
【図16】従来のハードウェア・ソータの構成図であ
る。
【図17】図16の構成を簡略化して示した構成ブロッ
ク図である。
【図18】図16の構成のハードウェア・ソータの動作
を説明する説明図である。
【図19】各段のソートプロセッサのリード・ライトの
サイクル動作を説明するタイミング図である。
【符号の説明】 1,2,3,5,6 ローカル・プロセッサ 11,12,13,15,16 ローカルメモリ 9,10 バス切換ドライバ/レシーバ 50 入力データストリーム選択部 52 ソート装置出力データストリームバス 53 出力データストリーム選択部 60 単一化ローカルメモリ 70 ローカルメモリのストア専用バス 121,122,123,124 単一化ローカルメモ
リバス S1 1巡目第1ソート・ステップ S2 2巡目第1ストア・ステップ S3 2巡目マージソート・ステップ S1−1 1巡目第1ソート・ステップ S1−2 1巡目第2ソート・ステップ S2−1 2巡目ストア・ステップ S2−2 2巡目マージソート・ステップ S11−1 1巡目第1ソート・ステップ S11−2 1巡目第2ソート・ステップ S12−1 2巡目ストア・ステップ S12−2 2巡目マージソート・ステップ
【手続補正2】
【補正対象書類名】図面
【補正対象項目名】図1
【補正方法】変更
【補正内容】
【図1】
【手続補正3】
【補正対象書類名】図面
【補正対象項目名】図2
【補正方法】変更
【補正内容】
【図2】
【手続補正4】
【補正対象書類名】図面
【補正対象項目名】図3
【補正方法】変更
【補正内容】
【図3】
【手続補正5】
【補正対象書類名】図面
【補正対象項目名】図4
【補正方法】変更
【補正内容】
【図4】
【手続補正6】
【補正対象書類名】図面
【補正対象項目名】図6
【補正方法】変更
【補正内容】
【図6】
【手続補正7】
【補正対象書類名】図面
【補正対象項目名】図10
【補正方法】変更
【補正内容】
【図10】
【手続補正8】
【補正対象書類名】図面
【補正対象項目名】図11
【補正方法】変更
【補正内容】
【図11】
【手続補正9】
【補正対象書類名】図面
【補正対象項目名】図16
【補正方法】変更
【補正内容】
【図16】
【手続補正10】
【補正対象書類名】図面
【補正対象項目名】図17
【補正方法】変更
【補正内容】
【図17】
【手続補正11】
【補正対象書類名】図面
【補正対象項目名】図19
【補正方法】変更
【補正内容】
【図19】

Claims (7)

    【特許請求の範囲】
  1. 【請求項1】 順次増加するローカルメモリと対応する
    ソーティング用のローカルプロセッサを縦続接続する縦
    続接続手段と、 ソートすべき入力数2N(Nは任意の整数)に対する上
    記順次増加する各ローカルメモリのメモリ領域数の総和
    をN以上としたメモリと、 上記各ローカルメモリは、1巡目のソーティング時には
    対応ローカルプロセッサの制御を受け、2巡目のソーテ
    ィング時には各ローカルメモリが異なるアドレスを持つ
    単一メモリとして単一プロセッサの制御を受けるよう、
    アドレス及びデータラインの切換手段を備えたソート装
    置。
  2. 【請求項2】 順次増加するローカルメモリの最終ロー
    カルメモリの容量をN/2としたとき、少なくとも他の
    1つのローカルメモリの容量もN/2としたメモリと、 少なくとも上記他の1つのメモリと最終ローカルメモリ
    は、1巡目のソーティング時には対応ローカルプロセッ
    サの制御を受け、2巡目のソーティング時には上記両方
    のローカルメモリが異なるアドレスを持つ単一メモリと
    して単一プロセッサの制御を受けるよう、アドレス及び
    データラインの切換手段を備えたことを特徴とする請求
    項1記載のソート装置。
  3. 【請求項3】 順次増加するローカルメモリと対応する
    ソーティング用のローカルプロセッサを縦続接続する第
    1の縦続接続手段と、 ソートすべき入力数4N(Nは任意の整数)以上に対す
    る上記順次増加する各ローカルメモリのメモリ領域数の
    総和をN以上としたメモリと、 上記ローカルプロセッサ群と上記第1の縦続接続手段と
    上記メモリとで構成される第1のソート装置を複数装置
    接続する第2の縦続接続手段と、 上記各ローカルメモリは、1巡目のソーティング時には
    対応ローカルプロセッサの制御を受け、以後の複数巡目
    のソーティング時には各ローカルメモリが異なるアドレ
    スを持つ単一メモリとして単一プロセッサの制御を受け
    るよう、アドレス及びデータラインの切換手段を備えた
    ソート装置。
  4. 【請求項4】 順次増加するローカルメモリと対応する
    ソーティング用のローカルプロセッサと、上記各ローカ
    ルプロセッサを縦続接続する縦続接続手段と、ソートす
    べき入力数2N(Nは整数)に対し上記順次増加する各
    ローカルメモリのメモリ領域数の総和をN以上としたメ
    モリと、各ローカルメモリが単一メモリとしても制御を
    受けられるアドレス、データラインの切換手段を備え、 第1のN件の入力の1巡目のソーティング時には各ロー
    カルプロセッサと対応ローカルメモリとでソートをする
    ステップと、 第2のN件の入力のソートも同様に行うステップと、 ソートされた後のいずれかのN件の入力データを各ロー
    カルメモリに記憶させるステップと、 2巡目のソーティング時には各ローカルメモリを単一メ
    モリとして制御して、ソートされた他のN件の入力デー
    タとソートして2N件のソート出力を得るステップを備
    えたソート方法。
  5. 【請求項5】 順次増加するローカルメモリと対応する
    ソーティング用のローカルプロセッサと、上記各ローカ
    ルプロセッサを縦続接続する縦続接続手段と、ソートす
    べきN+m以上(N、mはそれぞれ整数)の入力数に対
    し上記順次増加する各ローカルメモリのメモリ領域数の
    総和をN以上としたメモリを備え、 1巡目のソーティング時にはN件の入力を、各ローカル
    プロセッサと対応ローカルメモリとでソートをするステ
    ップと、 残存入力データmを各ローカルメモリに記憶させるステ
    ップと、 2巡目のソーティング時にはソート後のN件のデータを
    入力とし、上記mデータとソートしてN+m件のソート
    出力を得るステップを備えたソート方法。
  6. 【請求項6】 最初のソートを実施中に、ソートの終わ
    った入力側から次のソートのために残存データを順次各
    ローカルメモリに記憶させることを特徴とする請求項1
    ないし請求項5のいずれかに記載のソート装置またはソ
    ート方法。
  7. 【請求項7】 第2のソートとは別のバスによりデータ
    を入力段側から順次各段のローカルメモリに記憶させ、
    後段が記憶中に第1のソートデータバスからのデータと
    上記ローカルメモリに記憶させた入力側の段から順次ソ
    ートを開始することを特徴とする請求項1ないし請求項
    5のいずれかに記載のソート装置またはソート方法。
JP5173167A 1993-07-13 1993-07-13 ソート装置及びソート方法 Pending JPH0728624A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP5173167A JPH0728624A (ja) 1993-07-13 1993-07-13 ソート装置及びソート方法
US08/255,375 US5535384A (en) 1993-07-13 1994-06-08 Method and apparatus for controlling a hardware merge sorter to sort a plurality of records greater than 2n
GB9412003A GB2280523B (en) 1993-07-13 1994-06-15 Sorting system and method
CN94108249A CN1069423C (zh) 1993-07-13 1994-07-13 排序系统和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5173167A JPH0728624A (ja) 1993-07-13 1993-07-13 ソート装置及びソート方法

Publications (1)

Publication Number Publication Date
JPH0728624A true JPH0728624A (ja) 1995-01-31

Family

ID=15955348

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5173167A Pending JPH0728624A (ja) 1993-07-13 1993-07-13 ソート装置及びソート方法

Country Status (4)

Country Link
US (1) US5535384A (ja)
JP (1) JPH0728624A (ja)
CN (1) CN1069423C (ja)
GB (1) GB2280523B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014211682A (ja) * 2013-04-17 2014-11-13 日本電信電話株式会社 情報処理装置および情報処理方法
TWI730335B (zh) * 2019-05-15 2021-06-11 瑞昱半導體股份有限公司 排序裝置

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3352786B2 (ja) * 1993-11-01 2002-12-03 三菱電機株式会社 プロセッサ回路
US5727200A (en) * 1994-03-07 1998-03-10 Nippon Steel Corporation Parallel merge sorting apparatus with an accelerated section
JP3518034B2 (ja) * 1995-03-30 2004-04-12 三菱電機株式会社 ソート方法並びにソート処理装置並びにデータ処理装置
US5898856A (en) * 1995-09-15 1999-04-27 Intel Corporation Method and apparatus for automatically detecting a selected cache type
US5799210A (en) * 1996-04-18 1998-08-25 Oracle Corporation Method for allocating either private or shared buffer memory for storing data from sort operations in accordance with an assigned value or threshold value
DE19625869C2 (de) * 1996-06-27 2001-01-04 Fraunhofer Ges Forschung Verfahren zum parallelen Zusammenfassen von N Datensätzen
US6271693B1 (en) * 1997-12-12 2001-08-07 United Microelectronics Corp. Multi-function switched-current magnitude sorter
US6377258B1 (en) * 1998-04-20 2002-04-23 Broadcom Corporation Method and system for providing a hardware sort in a graphics system
US6556993B2 (en) * 2000-05-30 2003-04-29 Broadcom Corporation Method and system for providing a hardware sort in a graphics system
US6182071B1 (en) 1998-05-20 2001-01-30 Mitsubishi Denki Kabushiki Kaisha Sorting and summing record data including generated sum record with sort level key
US6711558B1 (en) * 2000-04-07 2004-03-23 Washington University Associative database scanning and information retrieval
JP2005078596A (ja) * 2003-09-03 2005-03-24 Hitachi Ltd データ転送装置の制御方法、データ転送装置、チャネル制御装置、及び記憶デバイス制御装置
EP1859378A2 (en) 2005-03-03 2007-11-28 Washington University Method and apparatus for performing biosequence similarity searching
US7797326B2 (en) * 2006-04-18 2010-09-14 International Business Machines Corporation Method of obtaining data samples from a data stream and of estimating the sortedness of the data stream based on the samples
US7921046B2 (en) 2006-06-19 2011-04-05 Exegy Incorporated High speed processing of financial information using FPGA devices
US8326819B2 (en) 2006-11-13 2012-12-04 Exegy Incorporated Method and system for high performance data metatagging and data indexing using coprocessors
US7660793B2 (en) 2006-11-13 2010-02-09 Exegy Incorporated Method and system for high performance integration, processing and searching of structured and unstructured data using coprocessors
WO2009082852A1 (fr) * 2007-12-28 2009-07-09 Zte Corporation Dispositif de tri de données pour traiter des données de communication
EP2370946A4 (en) 2008-12-15 2012-05-30 Exegy Inc METHOD AND DEVICE FOR HIGH-SPEED PROCESSING OF FINANCIAL MARKET DEFINITIONS
US8190943B2 (en) * 2009-03-13 2012-05-29 Massachusetts Institute Of Technology Systolic merge sorter
TWI511038B (zh) 2013-06-19 2015-12-01 Univ Nat Chiao Tung 可重組之排序裝置與排序方法
US11048475B2 (en) 2017-11-30 2021-06-29 International Business Machines Corporation Multi-cycle key compares for keys and records of variable length
US11354094B2 (en) 2017-11-30 2022-06-07 International Business Machines Corporation Hierarchical sort/merge structure using a request pipe
US10896022B2 (en) 2017-11-30 2021-01-19 International Business Machines Corporation Sorting using pipelined compare units
US10936283B2 (en) * 2017-11-30 2021-03-02 International Business Machines Corporation Buffer size optimization in a hierarchical structure
US20240036818A1 (en) * 2022-07-27 2024-02-01 Untether Ai Corporation Computational memory for sorting multiple data streams in parallel

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4090249A (en) * 1976-11-26 1978-05-16 International Business Machines Corporation Apparatus for sorting records in overlap relation with record loading and extraction
US4110837A (en) * 1976-12-30 1978-08-29 International Business Machines Corporation Apparatus for the sorting of records overlapped with loading and unloading of records into a storage apparatus
JPH0625964B2 (ja) * 1985-04-19 1994-04-06 日本電信電話株式会社 デ−タ整列方法
JPS6386043A (ja) * 1986-09-30 1988-04-16 Mitsubishi Electric Corp ソ−ト機構を有するメモリ装置
US5146590A (en) * 1989-01-13 1992-09-08 International Business Machines Corporation Method for sorting using approximate key distribution in a distributed system
US5179699A (en) * 1989-01-13 1993-01-12 International Business Machines Corporation Partitioning of sorted lists for multiprocessors sort and merge
US5307485A (en) * 1991-05-31 1994-04-26 International Business Machines Corporation Method and apparatus for merging sorted lists in a multiprocessor shared memory system

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014211682A (ja) * 2013-04-17 2014-11-13 日本電信電話株式会社 情報処理装置および情報処理方法
TWI730335B (zh) * 2019-05-15 2021-06-11 瑞昱半導體股份有限公司 排序裝置

Also Published As

Publication number Publication date
GB2280523A (en) 1995-02-01
GB2280523B (en) 1998-01-07
CN1069423C (zh) 2001-08-08
CN1105134A (zh) 1995-07-12
GB9412003D0 (en) 1994-08-03
US5535384A (en) 1996-07-09

Similar Documents

Publication Publication Date Title
JPH0728624A (ja) ソート装置及びソート方法
US6700809B1 (en) Entry relocation in a content addressable memory device
US4031520A (en) Multistage sorter having pushdown stacks with concurrent access to interstage buffer memories for arranging an input list into numerical order
US4095283A (en) First in-first out memory array containing special bits for replacement addressing
EP0568374B1 (en) Parallelized magnitude comparator for comparing a binary number to a fixed value
US20050180240A1 (en) Method and system for fast memory access
JP3425811B2 (ja) 半導体メモリ
JPH09198862A (ja) 半導体メモリ
JPH07302187A (ja) データソーティング方法及びソーティング装置
US5887137A (en) Data processing apparatus having a sorting unit to provide sorted data to a processor
JP3238939B2 (ja) ソート処理装置
JPH05298893A (ja) 連想記憶装置
JPH05298069A (ja) ソート処理装置
JPH09128241A (ja) ファジーロジックプロセッサの言語入力値の所属関数値に対する配列方法および装置
JPH1021053A (ja) データ処理装置
JPH07141290A (ja) バッファ回路
JPH0315772B2 (ja)
JPH03196257A (ja) ベクトル処理装置
JPH01121927A (ja) データ処理装置
JPH05298070A (ja) ソート処理装置
JPH05128001A (ja) 情報処理装置
JPH06223560A (ja) 半導体記憶装置
JPS62276636A (ja) メモリ制御回路
JPH01150931A (ja) データ並べ替え回路
JPH05257878A (ja) バッファ装置