JPH05143287A - ハードウエアソート処理装置 - Google Patents

ハードウエアソート処理装置

Info

Publication number
JPH05143287A
JPH05143287A JP3303063A JP30306391A JPH05143287A JP H05143287 A JPH05143287 A JP H05143287A JP 3303063 A JP3303063 A JP 3303063A JP 30306391 A JP30306391 A JP 30306391A JP H05143287 A JPH05143287 A JP H05143287A
Authority
JP
Japan
Prior art keywords
data
address
processor
storage means
output
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
JP3303063A
Other languages
English (en)
Inventor
Masaharu Yabushita
正治 薮下
Hiroyuki Kitajima
弘行 北嶋
Masamichi Kato
正道 加藤
Kousuke Sakota
行介 迫田
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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP3303063A priority Critical patent/JPH05143287A/ja
Publication of JPH05143287A publication Critical patent/JPH05143287A/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
    • G06F7/24Sorting, i.e. extracting data from one or more carriers, rearranging the data in numerical or other ordered sequence, and rerecording the sorted data on the original carrier or on a different carrier or set of carriers sorting methods in general
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2207/00Indexing scheme relating to methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F2207/22Indexing scheme relating to groups G06F7/22 - G06F7/36
    • G06F2207/222Binary data tree

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)
  • Multi Processors (AREA)

Abstract

(57)【要約】 【目的】n個のプロセッサを一次元に接続し(2**
n)次のソートを実現するハードウェアソート処理装置
を提供する。 【構成】大容量ファイルを少ないI/O回数でソートす
るためのn段からなる多段ソータで、n個のプロセッサ
エレメント(PE)をもち、k番目のPEは2**(k−
1)個の比較済みデータ対からなるソートデータを前段
PEとの共有メモリに格納し、各段のPEは、データ対
のアドレスを次段PEに出力して、あらかじめ定めた整
列順(昇順または降順)の早い方のデータを選択して上
段から、順次、リードすることによって、2**n次の
ソートを実現する。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、logN個のソートプロ
セッサを一次元に接続し、N個のデータを指定された順
番に並べかえるハードウェアソータに係り、特に、ソー
トに使用するメモリ容量以上の大容量のデータをソート
するのに好適なハードウェアソート処理装置に関する。
【0002】
【従来の技術】従来のN次ソータ(N個のデータを昇順
または、降順に並べ換えて整列する装置)に関して、
「大容量ファイルを整列するシストリック・ソータ」
(電子通信学会論文誌J67−D,1984年3月)に
記載されているように、一バイトの転送路を持つプロセ
ッサをlogN個(Nは2のn乗で表される数と考える)
一次元に並べ、入力をボトムアップかつパイプライン的
に与えることにより整列されたN個のファイルを一つの
ファイルに整列するN次整列併合(N−Way sort merg
e)が実現できる。上記ソータでは、各プロセッサが一
バイトのソート処理を行うとき、下記のように動作す
る。ここで、説明の都合のため、次の四つの用語を定義
しておく。
【0003】(1)勝者データ・・・二つのデータを比
較し、整列したい順(昇順または降順)に並べ換えると
き、比較した結果、整列の順番の早い方を勝者データと
呼ぶ。 (2)敗者データ・・・二つのデータを比較し、整列し
たい順(昇順または降順)に並べ換えるとき、比較した
結果、整列の順番の遅い方を敗者データと呼ぶ。 (3)ノード・アドレス・・・二進木構造の各分岐点を
一個のノードと定義すると、i番目のレベルには、2*
*(i−1)(以後、**をべき乗(この場合2の(i
−1)乗と表わす)個のノードが存在する。これに左か
ら右に2**(i−1)から((2**i)−1)のア
ドレスをつけ、これをノード・アドレスと呼ぶ。ノード
・アドレスAiの左または右の分枝につながる下のレベ
ルのノード・アドレスは、それぞれ2Aiまたは(2Ai
+1)で表すことができる。各ノードに勝者データと敗
者データを対とする一対のデータを配置する。従って、
i番目のレベルには2**(i−1)対のデータが配置
される。 (4)ヒストリ・・・勝者データが右の分枝からきた
か、左の分枝からきたかを示す情報をヒストリとして表
す。ヒストリが1のとき右の分枝、0のとき左の分枝か
ら来たことを示す。
【0004】上記文献「大容量ファイルを整列するシス
トリックソータ」においては、二進木の各レベルに一個
のプロセッサを割り付けこれをN個一次元に接続する。
N個のプロセッサのうちi番目のプロセッサをPEi
すると、PEiは次の三つの基本サイクルで動作する。
【0005】サイクル0:前回の比較結果をRAMi
格納する。PEi-1からノードアドレスAiを受け取り、
ヒストリに基づいてAi番地の勝者データと敗者データ
の対の勝者データをPEi-1に送り出す。PEi+1にソー
トアドレスAi+1=(2Ai+ヒストリ)を送り出し、デ
ータを要求する。敗者データをRAMiからプロセッサ
PSCiに出力する。
【0006】サイクル1:敗者データをPSCiのレジ
スタに読み込む。次段プロセッサの勝者データを読出す
ための同期のためのサイクル。
【0007】サイクル2:PEi+1から送られてきたデ
ータを敗者データと比較し、新しい勝者データと敗者デ
ータの対をノードアドレスAiに格納するためRAMi
転送する。
【0008】ここで、PEiが、サイクル Ciのとき、
PEi-1とPEi+1は、各々サイクルCi+1(モード
3)、サイクル Ci−1(モード3)である(Xをkで
割った剰余をX モード kで表す) 。すなわちPEi+1
がサイクル 0で送り出したデータは、PEiのサイクル
2で受け取られる。
【0009】サイクル0からサイクル2までの動作を図
9により説明する。図9は、従来方式におけるプロセッ
サとメモリの動作説明図である。図9に示すように、プ
ロセッサとメモリ間ではデータ転送の同期のため一サイ
クル遅れでリードおよびライトが行われている。また、
各基本サイクルは、メモリのリードとライトが同時にで
きないので、二メモリサイクルを要している。さらに、
基本サイクルではライトメモリサイクルが先に実行さ
れ、その後、リードメモリサイクルが実行されている。
このため、例えば、サイクル0のリードメモリサイクル
でメモリRAMiから読まれたデータ対のうち敗者デー
タはサイクル1でプロセッサPSCiにリードされてい
る。
【0010】このように、従来のソータでは、各基本サ
イクルにデータのライトとリードの二メモリサイクルが
存在し、合計で六メモリバスサイクルを要する。これ
は、一バイトのソートが二つの比較データを取り出すの
に二回、比較結果を書き込むのに一回の合計三回のメモ
リバスサイクルが必要であるのに比べると、明らかに性
能低下の要因となっている。
【0011】図8は、従来方式によるソータをn台のプ
ロセッサで実現するときの構成図である。このソータで
は、図8に示すように、データ長をLバイトとすると、
ソート専用のプロセッサPSCiと制御回路付きメモリ
RAMiからなるプロセッサエレメントn個を一次元に
配列して、順次パイプライン処理する。上からi段目の
メモリRAMiは、2**i個のデータを持ち、データ
長をLバイトとすると(2**i)×Lバイトの容量を
持つ。データ長Lバイトのときの従来方式のPSCi
RAMiの動作を図10に示す。図10に示すようにデ
ータ長Lバイトのデータをこのソータでソートするには
先の三つの基本サイクルのうちのサイクル2をL回繰り
返すことになり、一プロセッサエレメントにおける一デ
ータの処理サイクルは、(L+2)基本サイクル、すな
わち、2(L+2)メモリサイクルである。
【0012】
【発明が解決しようとする課題】上記従来のソート方式
は、二つの1バイトのレコードを比較し、指定された順
で出力するソートの基本サイクル数を最小にする点にお
いて、考慮がされていない。すなわち、基本的なソート
およびマージにかかるサイクル数が6メモリバスサイク
ルを要している。これは、二つのデータを比較するとき
の最小のメモリバスサイクルすなわち、比較する二つの
データを読み出して、比較器に入力する二回のデータ読
み出しサイクルと、比較したデータを指定された順にメ
モリに書き込むサイクルとを合わせて、最低限必要な合
計三回のメモリバスサイクルの二倍ものメモリバスサイ
クルであり、ソート処理の性能を低くしている点で問題
があった。メモリバスサイクル数が多くなっている原因
は、データ比較をプロセッサで行うためプロセッサにデ
ータを取り込むとき、および比較結果をプロセッサから
メモリに出力するときに、プロセッサとメモリ間で一サ
イクルの転送遅れがあることが主要因と思われる。
【0013】本発明の目的は、このソートに必要なメモ
リバスサイクルを少なくし、高速なハードウェアソート
処理装置を提供することにある。
【0014】
【課題を解決するための手段】上記目的を達成するため
に、本発明はn個のプロセッサエレメントPEk(1≦
k≦n)を一次元に接続したソート処理装置の各プロセ
ッサエレメントPEkにおいて、第一の比較データおよ
び第二の比較データからなる一対の比較済みデータを2
**(k−1)対格納する第一の記憶手段を設け、上記
二つのデータを比較するデータ比較手段を設け、第一の
比較データおよび第二の比較データの比較結果を示すヒ
ストリと呼ぶ一ビットのフラグを設け、ヒストリフラグ
を上記一対の比較済みデータに対応してそれぞれ一個づ
つ格納する第二の記憶手段を設け、また、前段プロセッ
サから入力したアドレスに基づいて、次段プロセッサの
二つの比較データのうちの一方を読み出すために、上記
アドレスを一ビット上位に配置し、第二の記憶手段から
読み出したヒストリフラグを最下位ビットとするアドレ
スを生成して、次段プロセッサエレメントに出力するア
ドレス発生手段を設け、2**n個のデータをn個の上
記プロセッサエレメントを一次元に接続したハードウエ
アソート処理装置の入力端から入力することによって他
方の出力端に一個のソーティング結果データを取り出す
ことを特徴とする。
【0015】本発明では、メモリからリードしたデータ
を直接比較器に取り込むことにより、同期のための遅れ
を最少にしたものである。
【0016】
【作用】本発明によるハードウェアソート処理装置で
は、前段プロセッサエレメントから出力されるアドレス
に基づき第一の比較データと第二の比較データからなる
一対の比較済みデータが第一の記憶手段から読み出され
る。第一の比較データは、あらかじめ指定された整列順
(昇順または、降順)の早い方のデータ、第二の比較デ
ータは、あらかじめ指定された整列順(昇順または、降
順)の遅い方のデータである。第一および第二の比較デ
ータの読み出しと同時に、アドレスに基づき第二の記憶
手段から読み出される第一および第二の比較データの比
較結果を示す一ビットのヒストリフラグと、アドレスと
に基づいて、次段プロセッサエレメントから第三の比較
データを読み出すアドレスを生成するアドレス生成手段
を設けた。この構成により、次の三つのメモリバスサイ
クルで1ワードのデータのソートができることを説明す
る。
【0017】第一のメモリバスサイクル:前段プロセッ
サエレメントからのデータ読み出し要求に基づいて、第
一および第二の比較データの読み出しと、次段プロセッ
サエレメントへの第三の比較データ読み出しのためのア
ドレス出力とを第一のメモリバスサイクルの中で同時に
実行する。第一の比較データを前段プロセッサに転送す
る。
【0018】第二のメモリバスサイクル:第二のメモリ
バスサイクルにおいて、アドレス生成手段により、次段
プロセッサエレメントへのデータ読み出しアドレスを出
力することによって、次段プロセッサエレメントの第一
の記憶手段から第三の比較データがこのサイクルで読み
出される。第三の比較データは次段プロセッサから読み
だされた第一及び第二の比較データ中のあらかじめ指定
された整列順(昇順または、降順)の早い方のデータで
ある次段プロセッサの第一の比較データである。第一お
よび第二の比較データのうち前段プロセッサエレメント
へ転送しなかった方のあらかじめ指定された整列順(昇
順または、降順)の遅い方である第二の比較データと第
三の比較データとを比較するため、比較手段へ二つの比
較データが直接入力される。
【0019】第三のメモリバスサイクル:比較データ
は、直ちに、次の第三のメモリバスサイクルで比較さ
れ、一対の比較済みデータとして、前段プロセッサエレ
メントから出力されたアドレスに基づいて第一の記憶手
段に格納される。このとき、例えば、入力時のアドレス
にしたがって、第一の記憶手段に格納され、同時に比較
手段の比較結果を示すヒストリフラグが、第二の記憶手
段に格納される。
【0020】以上のように、第一のメモリリードサイク
ル、第二のメモリリードサイクル、第三のデータ書き込
みサイクルの三つのメモリバスサイクルで基本データ長
(一ワード)のデータのソート処理が完了する。
【0021】本発明においては、基本データ長のデータ
をプロセッサ間にパイプラインで順次転送しながらデー
タを整列する。一バイトのデータ長に限れば、三メモリ
サイクルでソートすることができるが、データ長が複数
になる場合は、パイプラインのデータ同期のために一シ
ステムサイクルの中にデータをリードするメモリサイク
ルとソート結果を格納するライトメモリサイクルの二つ
のメモリサイクルが必要である。そこで本発明では、三
つのメモリサイクルを二つのシステムサイクルに割り付
け、四メモリサイクルで基本データ長のソート処理が実
行できる。すなわち、第一のリードメモリサイクルを第
一のシステムサイクルで実行し、第二のリードメモリサ
イクルと第三のライトメモリサイクルを第二のシステム
サイクルで実行することによって、四メモリバスサイク
ルで上記の基本データ長のソート処理が実行できる。
【0022】ソータとして使用しないとき、または、ソ
ート途中のデータをアクセスしたいときは、ホスト側か
らモード設定できるモードレジスタを各プロセッサエレ
メントに設けたことによって、各プロセッサエレメント
が三つのメモリバスサイクルを繰り返すソートモード
と、ホストからソート結果を出力する出力バッファ、あ
るいは、データ入力バッファとして、第一の記憶手段お
よび第二の記憶手段をアクセスできるメモリモードとを
切り替える。
【0023】
【実施例】以下、本発明の実施例を説明する。図1は、
本発明による実施例の全体構成図である。1は、n個の
プロセッサエレメントからなるハードウエアソータ部、
2は、データ処理に必要なデータを格納する主記憶装
置、3は、システム全体を制御するホストプロセッサ、
4は、データファイルを格納したディスク装置、5は、
ディスク装置4とハードウエアソータ1とを制御するデ
ィスク/ソータ制御装置、6は、ハードウエアソータ1
とシステムバス7との間のデータ転送制御を行うDMA
制御装置である。8は、システムバス7とDMA制御装
置6との間の転送路である。9は、DMA制御装置6か
らハードウエアソータ部1へのアドレス転送路、10
は、ハードウエアソータ部1からDMA制御装置へのデ
ータ転送路、11は、ハードウエアソータ部からディス
ク/ソータ制御装置へのアドレス転送路、12は、ディ
スク/ソータ制御装置からハードウエアソータ部へのデ
ータ転送路、13は、ディスク装置4とディスク/ソー
タ制御装置との間の転送路、14は、ディスク/ソータ
制御装置5とシステムバス7との間の転送路である。1
5−1〜15−nは、各プロセッサエレメントPE1〜
PEnとシステムバスとの間の転送路である。16は、
主記憶装置2とシステムバス7との間の転送路である。
ハードウエアソータ部1のなかのn個のプロセッサエレ
メントPEkは、それぞれ、プロセッサエレメント内を
制御する内部プロセッサ101,ソート結果を格納する
第一の記憶手段102、ソートデータの比較結果を格納
する第二の記憶手段103、ソートデータを比較する比
較装置104、次段プロセッサエレメントへ出力するア
ドレスを生成するアドレス発生装置105、各プロセッ
サエレメントの動作モードを格納するモードレジスタ1
06、内部プロセッサ101と前段プロセッサエレメン
トのバスを調整して切り替えるバススイッチ107、プ
ロセッサエレメント内の内部バス108を持つ。
【0024】109は、内部プロセッサ101とバスス
イッチ107との間の転送路、110は、バススイッチ
107からアドレス発生装置105へのアドレス転送路
である。ハードウエアソータ部1とDMA制御装置6と
の間のアドレス転送路9は、一段目のプロセッサエレメ
ントPE1のバススイッチ107へのアドレス転送路1
11に接続されている。ハードウエアソータ部1とDM
A制御装置6との間のデータ転送路10は、一段目のプ
ロセッサエレメントPE1のバススイッチ107へのデ
ータ転送路112に接続されている。113は、アドレ
ス発生装置の出力アドレス転送路で、次段のプロセッサ
エレメントのアドレス転送路111に接続されるが、最
下段のプロセッサエレメントPEnでは、ハードウエア
ソータ部1とディスク/ソータ制御装置5との間のアド
レス転送路11に接続される。同様に、114は、比較
手段104へのデータ転送路で、次段のプロセッサエレ
メントとのデータ転送路112に接続されるが、最下段
のプロセッサエレメントPEnでは、ハードウエアソー
タ部1とディスク/ソータ制御装置5との間のデータ転
送路12に接続される。
【0025】プロセッサエレメント内の内部バス108
には、バススイッチ107、比較済みデータ対を格納す
る第一の記憶手段102、比較結果を示すヒストリフラ
グを格納する第二の記憶手段103、二つのソートデー
タを比較する比較手段104、次段プロセッサエレメン
トへのアドレスを出力するアドレス発生装置105、お
よび、モードレジスタ106が接続されている。
【0026】15−1〜15−nは、各プロセッサエレ
メントPE1〜PEnとシステムバス7との間の転送路
である。第一の記憶手段102は、各段のプロセッサエ
レメントに対応して容量が異なり、k段目のプロセッサ
エレメントの第一の記憶手段の容量は、2**k個のデ
ータを格納できる。第二の記憶手段103も、プロセッ
サエレメントの配置段kに応じて容量が異なり、2**
k個のフラグを格納できる。
【0027】次に、図1により、動作を説明する。プロ
セッサエレメントPE1〜PEnは、二つのモードを持
っていて、第一のモードは、上下の隣接プロセッサエレ
メントとアドレス転送路およびデータ転送路を介して、
交信するプロセッサモードである。第二のモードは、n
個のプロセッサエレメントが一次元に接続され、全体と
してn段のパイプラインソータとして動作するソータモ
ードである。第一のモードにおいては、HOSTプロセ
ッサ3からバススイッチ107を介して内部の第一およ
び第二の記憶手段をアクセスすることができる。つま
り、HOSTからみれば、n個のPEをまとめて2**
(n+1)個のデータを格納できるメモリとして見え
る。第一のモードおよび第二のモードの設定は、バス制
御部2にモードレジスタを設けて、モードをHOSTか
ら書きかえることにより容易に実現できる。第一のモー
ドにおいて、初期設定等の処理を行い、第二のモードで
ソート処理を行う。
【0028】第二のモードにおけるソータは、n個のプ
ロセッサエレメントPE1からPEnを一次元に接続し
て2**n個のデータを一本の整列されたデータ列に整
列する2**n次のソータである。
【0029】以下、本発明による2**n次のソータの
動作原理を図12により説明する。図12は、二進木構
造のトーナメント法によるソートアルゴリズムの説明図
である。図12のトーナメントの下に示す八つのデータ
列A〜Hは、各々整列された三つのデータからなるサブ
ソート列である。二進木の各交点をノードと定義する。
整列の順は昇順とする。各ノードで二つのデータが比較
されたとき小さい方のデータを勝者データ、大きい方の
データを敗者データと定義する。図12は、比較が進ん
で最小のデータが出力端に現れた状態を示す。最初、最
下位のレベルでAとB、CとD、EとF、GとHのデー
タがそれぞれ比較され、最下位のレベルのノードの勝者
データ(303、306、302、301)は、一つ上の
レベルに進み、二個づつ比較され、その勝者データ(3
03、301)が、さらに、上に進んで比較され301
が最小のデータとして出力端に現れている。図12の状
態では、図12の太線で示した経路のデータ(301、
302、304、309、320)が、各々一つ上のレ
ベルに進む。データの入力がボトムアップであることを
除けば、ヒープソート(田中氏の考案したソートアルゴ
リズムで、木構造の最上端からソートしながらデータを
入力し、出力時は、逆に最上端から指定した順にソート
されたデータを取り出すことによって木構造に展開した
だけのデータを取り出す)の出力モードと同じ原理とな
り、プロセッサの一次元配列でソータを実現できる。
【0030】図13は、二進木構造の勝者−敗者データ
対表現によるソートアルゴリズムの説明図である。図1
2を図13で表すことができ。これを勝者−敗者データ
対表現と名付ける。ここで、勝者データ、敗者データ、
ノードアドレス、ヒストリという用語に関する定義は、
従来技術で定義したものと同じと考える。二進木の各交
点をノードと定義し、図13に示すように各交点にか
らまでのノード・アドレスをつける。各ノードで二つ
のデータが比較されたとき小さい方のデータが勝者デー
タ、大きい方のデータが敗者データとなる。勝者−敗者
データ対表現は、二つのデータの比較結果を表してい
る。勝者データが左右のどちらの枝からきたかを示す出
身ノードの方向をヒストリとして表す。ヒストリが1の
ときは、勝者データが右の枝からきたことを示し、ヒス
トリが0のときは、勝者データが左の枝からきたことを
示す。従って、上からk番目のレベルには、2**(k
−1)個の勝者−敗者データ対が存在する。この勝者−
敗者データ対に左から右、上から下に1から昇順にノー
ド・アドレスをつけるとノード・アドレスAkの左
(右)の枝につながる下のレベルのノード・アドレス
は、2Ak(2Ak+1)で表すことができ、勝者データ
がきた枝につながる下のレベルのノード・アドレスは、
2Ak+ヒストリで表される。プロセッサエレメントP
kは、受けたノード・アドレスAkを1ビット上にシフ
トし、プロセッサエレメントPEkの内部メモリのAk
地のヒストリを最下位ビットに加えて下のレベルに出力
するだけで良い。
【0031】図13においては、一番目のレベルには、
ノード・アドレスA1=1のノードのデータ対が一つだ
けあり、勝者データが302、敗者データが303であ
る。ノード・アドレスA1=1のノードのヒストリは1
であり、勝者データ302がノード・アドレスA1=1
のノードの下にある二つのノードのうちの左のノードす
なわちノード・アドレスA2=3のノードから勝ち上が
ってきたデータであることを示す。図13においては、
太線で示した経路のデータ対の中の勝者データ(30
2、304、309、320)が次の段階で一つ上のレ
ベルに進み、各レベルに残った敗者データと比較され
る。図13に示すように、一段目のレベルにプロセッサ
エレメントPE1を、二段目のレベルにプロセッサエレ
メントPE2を、三段目のレベルにプロセッサエレメン
トPE3を割り付ける。各プロセッサエレメントは、太
線で示した経路の勝者データを取り出すために次のよう
に動作する。
【0032】まずプロセッサエレメントPE1は、ソー
トデータを取り出すHOSTプロセッサからノード・ア
ドレスA1=1を受信する。PE1は、受信したノード
アドレスA1番地のデータ対(302、303)とヒス
トリを読み出し、ヒストリが1であることに基づいて勝
者データ302を選択し、HOSTプロセッサへ出力す
るとともに、次段プロセッサPE2にノード・アドレス
2を A2 = 2A1 + ヒストリ=2×1 +1 =3 となるように生成して、出力する。
【0033】次のステップでPE2は、A2(=3)番
地のデータ対(304、305)とヒストリを読み出
し、PE1が前のステップで動作したのと同様にヒスト
リが0であることに基づいて勝者データ304を選択し
PE1に転送する。転送と同時に次段プロセッサエレメ
ントPE3にアドレスA3を A3 = 2A2 + ヒストリ=2×3 +0 =6 となるように、生成してPE3に出力する。PE3は、
PE1,PE2と同様にしてA3(=6)番地のデータ
対を読み出し勝者データをPE2に転送するとともにノ
ード・アドレスA4(=2A3 + ヒストリ=2×6 +
0 =12)を出力し、入力バッファからA4番地に相当
する次のデータ(320)を入力する。図13に示すよ
うに勝者−敗者データ対表現の各レベルを一つのプロセ
ッサに対応させると、プロセッサエレメントPEkの一
次元配列でソータが実現できる。
【0034】本発明によるソータでは、二進木構造状に
一対のデータを配置したとき、k番目のレベルには、2
**(k−1)個のデータ対が存在し、これに左から右
に2**(k−1)から((2**k)−1)のアドレ
スをつける。アドレスAkの左または右の分枝につなが
る下のレベルのアドレスは、それぞれ2Akまたは(2
k+1)で表すことができる。二進木構造において、
二進木の各レベルに一個のプロセッサエレメントを割り
付け、これをn個一次元に接続する。
【0035】データは、ディスク装置4に格納されてお
り、ハードウエアソータ部1から転送路11を介してデ
ィスク/ソータ制御装置5に出力されるアドレスに基づ
いて、ディスク/ソータ制御装置5、転送路12を介し
てハードウエアソータ部1に入力される。ハードウエア
ソータ部1に転送されたデータは、n個のプロセッサエ
レメントで整列され、2**n個のソートデータ列とな
ってDMA制御装置6から転送路9を介して出力される
アドレスに基づき転送路10を介して、DMA制御装置
6に出力され、転送路8、システムバス7、転送路16
を介して主記憶装置2に転送される。
【0036】主記憶装置2に転送されたソートデータ列
は、HOSTプロセッサ3によって処理され、DMA制
御装置6により転送路16、システムバス7、転走路1
4を介してディスク/ソータ制御装置5に転送され、デ
ィスク装置4にソートデータ列として格納される。一回
のソートで整列できないような大容量のファイルをソー
トする場合、ディスク装置4に複数のソートデータ列を
2**n本作成し、上記ソートを繰り返すことにより2
**n個のデータを格納するメモリバッファ以上の大容
量ファイルをソートできる。
【0037】次にハードウエアソータ部1の内部動作に
ついて説明する。ハードウエアソータ部1は、n個のプ
ロセッサエレメントPE1〜PEnから構成される。P
E1はDMA制御装置6からアドレス転送路9を介して
出力されるアドレスに基づき、順次、ソートデータ列を
データ転送路10を介してDMA制御装置6に転送さ
れ、さらに、転送路8、システムバス7、転送路16を
介して主記憶装置2に格納される。DMA制御装置6か
ら出力されたアドレスA1はバススイッチ7を介して内
部バス108に転送され、第一の記憶手段から、第一、
第二の比較データで構成される比較済みデータ対と、第
二の記憶手段から第一、第二の比較データの比較結果を
示すヒストリフラグを読み出し、バススイッチ107と
比較装置104に第一、第二の比較データを、アドレス
発生装置105と比較装置104およびバススイッチ1
07にヒストリフラグを内部バス108を介して転送す
る。バススイッチ107は第一、第二の比較データから
ヒストリフラグによって選択した指定された整列順の早
い方の比較データである第一の選択データをデータ転送
路10を介してDMA制御装置6に転送する。アドレス
発生装置105は、バススイッチ107から入力したア
ドレスA1とアドレスA1によって第二の記憶手段から読
み出されたヒストリフラグとから次段プロセッサエレメ
ントに出力するアドレスA2を生成して次段プロセッサ
PE2に出力する。比較装置104は、アドレスA1
よって第一の記憶手段から読み出された第一、第二の比
較データを第二の記憶手段から読みだされたヒストリフ
ラグに基づき、指定された整列順の遅い方の比較データ
である第二の選択データを選択し、アドレス発生装置1
05から出力されたアドレスA2に基づき次段プロセッ
サエレメントPE2から読み出されて入力される第三の
比較データを読み込み、第二の選択データと第三の比較
データを比較して、比較結果により指定された整列順の
早い方の比較データを示す新ヒストリを作成するととも
に、第三の比較データを入力する時の出力アドレスA2
が奇数である方を第一の比較データ、偶数である方を第
二の比較データとする比較済みデータ対を作成してデー
タバス108に出力する。
【0038】比較済みデータ対を第一の記憶手段に新ヒ
ストリを第二の記憶手段にA1番地のデータとして書き
込む。バススイッチ107は、モードレジスタ106の
内容に応じて内部バス108と109へのアドレスおよ
びデータの入出力先を切り換える。例えば、モードレジ
スタの内容をMODEとすると下記のようにバスを切り
換える。
【0039】MODE=0の場合:内部プロセッサ10
1、システムバス15、およびDMA制御装置または前
段プロセッサエレメントの三つのバスマスタからのアク
セスを受け付け、内部のメモリバス108、109に、
接続する切り換え装置として動作する。この場合は、デ
ータのソートは、実行しない。
【0040】MODE=1の場合:DMA制御装置また
は、前段プロセッサエレメントからのアクセスのみを受
け付け、第一の記憶手段から読み出した比較済みデータ
対からヒストリフラグによって指定された整列順の早い
方の比較データを第一の選択データとしてのDMA制御
装置または、前段プロセッサエレメントに出力する。 MODE=2の場合:MODE1と同様にDMA制御装
置または、前段プロセッサエレメントからのアドレスを
入力するが、内部メモリには、アクセスせず、アドレス
を次段プロセッサエレメントにそのまま通過させる。内
部メモリは、システムバス7、転送路15を介してアク
セスされ、ソート用のバッファとして利用される。
【0041】MODE=1のとき、各プロセッサエレメ
ントPEkは、第0サイクルと第1サイクルの二つのサ
イクルを持つ。k段目のプロセッサエレメントPEk
おいて、この二つの動作サイクルをまとめたのが図2の
プロセッサエレメントPEkの動作説明図である。まず、
サイクル0において、前段PEk-1からアドレスAkを入
力し、このAkに基づいて第一の記憶手段102および
第2の記憶手段103をリードする。第一の記憶手段1
02には、第一および第二の比較データを一つの対とす
る、2**(k−1)個の比較済みデータ対が格納され
ている。第一の比較データと第二の比較データは、次段
プロセッサから読みだされたときのアドレスに基づきア
ドレス順に格納されており、第一の比較データは奇数ア
ドレス、第二の比較データは偶数アドレスのデータに対
応する。さらに、比較データに関して、第一の比較デー
タと第二の比較データの比較結果を示す一ビットのフラ
グ(以下ヒストリフラグと呼ぶ)が第二の記憶手段に格
納されており、第一の記憶手段をリードすると同時に、
第二の記憶手段も読み出される。第一の記憶手段102
から読み出された比較済みデータは、ヒストリフラグに
基づき第一の選択データと第二の選択データとして選択
される。
【0042】第一の選択データは、比較済みデータ対の
うち、指定された整列順の早い方の比較データであり、
第二の選択データは、指定された整列順の遅い方の比較
データである。第一の選択データは、第三の比較データ
として、前段プロセッサエレメントPEk-1に転送され
る。他方、第二の選択データとヒストリフラグは、旧比
較データおよび旧ヒストリフラグとして、それぞれラッ
チされる。さらに、前段プロセッサエレメントPEk-1
から入力したアドレスAkと旧ヒストリフラグに基づい
て、次段プロセッサエレメントPEk+1へのNextア
ドレスAk+1を出力する。Ak+1は、アドレスAkを上位
ビット側に1ビットシフトし、旧ヒストリフラグを最下
位ビットとして指定される。 従って、 Ak+1 = 2×Ak + 旧ヒストリ で表される。
【0043】なお、第一の比較データおよび第二の比較
データには、それぞれタグビットが一ビットあり、これ
らを、それぞれタグ1、タグ2とする。タグ1、および
タグ2は、異なるデータ列の整列の優先度を調整するた
めに使用される。
【0044】次に、サイクル1におけるプロセッサエレ
メントPEkの動作について述べる。まず、サイクル0
で出力しておいたアドレスAk+1に基づき、 次段のプロ
セッサエレメントPEk+1から読み出された第3の比較
データとタグをリードする。つづいて、リードした第三
の比較データと、サイクル0でラッチしておいた旧比較
データとを比較し、両者の比較結果を新しいヒストリ
(新ヒストリ)として生成する。
【0045】新ヒストリに基づいて、比較データを整列
し、第一の記憶手段102に格納し、新ヒストリを第二
の記憶手段103に格納する。動作をn個のプロセッサ
エレメントPE1からPEnにプロセッサ間の動作が一
サイクル遅れとなるように2**n回実行させ、順次パ
イプライン処理させることによって、2**n個のデー
タを一本の比較済みソート列に並べ換える2**n次の
ソートが実行できる。次に、図1のデータ比較装置10
4について、図3により説明する。図3は比較装置10
4の構成を示すブロック図である。図3において、40
1は内部データバス108から読み出された比較済みデ
ータをヒストリに基づき、指定された整列順の遅い方の
比較データをデータセレクタ408により第二の選択デ
ータとして選択しラッチする第一のラッチ、402は内
部データバス108から読み出されたヒストリを旧ヒス
トリとしてラッチする第二のラッチである。403は第
二の選択データと次段プロセッサエレメントから読み出
された第三の比較データとをアドレス順に並べ換える第
一のデータSWAP装置、404、405は403でS
WAPされたデータをアドレス順に格納する第一のバッ
ファ、および第二のバッファである。406は、40
4、405の出力データを比較する比較器、407は比
較器の比較結果を格納する第三のラッチである。
【0046】409はデータセレクタ408と内部デー
タバス108との間の転送路、410はデータセレクタ
408と第一のラッチ401との間の転送路、411は
第一のラッチ401とデータSWAP装置403との間
の転送路、414は第二のラッチ402の出力でデータ
SWAP装置403に入力されるSWAP制御信号、4
12は、次段プロセッサエレメントとデータSWAP装
置403との間の転送路である。415、416はそれ
ぞれデータSWAP装置403と第一のデータバッファ
404および第二のデータバッファ405との間の転送
路、419、420は、第一のデータバッファ404と
第二のデータバッファ405から比較器406および内
部データバス108へのデータ転送路、417は比較器
406の出力を第三のラッチ407へ入力する比較結果
出力信号線である。418は第三のラッチの出力信号で
内部データバス108へ接続される。
【0047】図2は、本発明によるソートプロセッサの
動作説明図である。プロセッサエレメントPEkは、図
2に示すようにサイクル0とサイクル1の二つのサイク
ルを繰り返すことによって全体としてデータを整列す
る。図2に示すように、サイクル0でデータを読み込
み、サイクル1でデータが比較される。サイクル0で第
一の記憶手段102から読み出された比較済みデータ対
は、内部データバス108から転送路409を介してデ
ータセレクタ408に入力され第二のラッチ402の出
力である旧ヒストリに基づき指定された整列順の遅い方
のデータである第二の選択データを選択して転送路41
0を介して第一のラッチ401に出力する。上記第二の
選択データは旧比較データとして第一のラッチ401に
ラッチされ、401の出力は転送路411を介してデー
タSWAP装置403に入力される。データSWAP装
置403のもう一方のデータは、次段プロセッサエレメ
ントPEk+1からのデータ転送路412を介して次段プ
ロセッサエレメントPEk+1の第一の選択データを第三
の比較データとして入力する。
【0048】データSWAP装置403では、サイクル
0で第二の記憶手段から読み出したヒストリフラグを第
二のラッチ402に旧ヒストリとして格納し、第二のラ
ッチの出力である旧ヒストリをデータ並べ換え制御信号
線414としてデータSWAP装置403に入力し41
4に基づいてデータのSWAP方向を決定する。例え
ば、第三の比較データとして入力するときに出力したア
ドレスAk+1が、奇数のときは論理“0”、偶数のとき
は論理“1”が、旧ヒストリフラグとして第一のラッチ
に格納されており、旧ヒストリフラグが論理“1”のと
きは、前段プロセッサエレメントPEk-1に転送した第
一の選択データの入力時のアクセスアドレスAk+1は、
偶数アドレスであったことを示しており、第二の選択デ
ータである旧比較データは、アクセスアドレスAk+1
奇数アドレスであったことを示す。従って、旧比較デー
タのラッチ401の出力はデータSWAP装置403を
介して、奇数アドレス用の第一のバッファ404に入力
され、同様にして次段プロセッサエレメントPEk+1
らの第三の比較データはデータSWAP装置403を介
して、偶数アドレス用の第二のバッファ405に入力さ
れる。次に、第二のラッチ402にラッチされた旧ヒス
トリフラグが、論理“0”のときは、前段プロセッサエ
レメントPEk-1に転送した第一の選択データの入力時
のアクセスアドレスAk+1が奇数アドレスであったこと
を示しており、第一および第二のバッファ404、40
5に入力されるデータは、旧ヒストリフラグが1のとき
と逆にSWAPされる。すなわち、データSWAP装置
403を介して旧比較データのラッチ401の出力は奇
数アドレス用の第一のバッファ404に入力され、次段
プロセッサエレメントPEk+1からの第三の比較データ
は偶数アドレス用の第二のバッファ405に入力され
る。
【0049】次に、比較器406で第一と第二のバッフ
ァの内容が大小比較され、比較結果が、第三のラッチ4
07に新ヒストリフラグとしてラッチされる。新ヒスト
リフラグの値は、例えば、奇数アドレス用である第一の
バッファ404の比較データが指定された順(降順また
は昇順)の早い方に相当するとき論理“0”、偶数アド
レス用である第二のバッファ405の比較データが指定
された順の早い方に相当するとき論理“1”が設定され
る。第一のバッファ404と第二のバッファ405の比
較済みデータは、そのまま第一の記憶手段102へ格納
され、新ヒストリフラグも第二の記憶手段103に同時
に格納される。データ長が二バイト以上のときは、比較
結果が最後のデータ比較まで定まらない場合があるので
最後のデータが比較されて、結果が判明したときに新ヒ
ストリフラグが格納される。従って、新ヒストリフラグ
が確定したかどうかをデータ比較のときに記憶しておく
ため、第三のラッチを二ビットとし、上位一ビットが1
のとき確定、0のとき未確定とする。
【0050】第三のラッチの初期値をバイナリデータで
(00)とし、指定順に相当するデータが第一のバッフ
ァの内容であるとき(10)、第二のバッファの内容で
あるとき(11)とする。最後のデータ比較まで同じに
なったときは、原則として新ヒストリラッチ407の値
を(10)として奇数アドレス側のデータを指定する
が、整列するデータ列を格納した複数の入力ファイルか
らのデータリードの割合を平均させたいときは、入力フ
ァイルのリード回数を比較したり、あるいは、前回リー
ド時と逆のアドレス側を指定するなど、適宜、指定順デ
ータを振り分けることで対応できる。とにかく、第三の
ラッチ407の内容である新ヒストリフラグの上位ビッ
トが1のときは、比較結果が確定したことを示す。比較
結果が確定したときは、その後のデータの比較を中止し
て、第一、第二のバッファ404、405からデータバ
ス108を介して第一の記憶手段102にデータを転送
するだけで良い。第三のラッチの出力は、下位の一ビッ
トをヒストリとして、最後のデータ転送と同じタイミン
グで第二の記憶手段103に格納する。
【0051】図4は、図1のアドレス発生装置105の
ブロック図である。ソータモードでは、前段プロセッサ
エレメントPEk-1からのアドレスAkがサイクル1であ
らかじめ出力される。プロセッサエレメントPEkはア
ドレスAkをサイクル0の前縁で入力する。アドレスAk
は、バススイッチ107に入力され、プロセッサエレメ
ントPEkの内部アドレスバス110上にに出力され
る。ここで、簡単のために、各サイクルは、サイクルの
前半をデータリード期間、後半をデータライト期間とす
る二つの期間になるようにマイクロプロセッサ101で
制御されるとする。サイクル0のデータリード期間で、
マイクロプロセッサ101からリードストローブ(RD
STB)が出力されるとともにアドレスAkがバススイ
ッチ107を介して、内部アドレスバスに出力されアド
レス発生装置105に入力され、内部アドレスバス10
8とアドレスラッチ501との間のアドレス転送路50
4を介してアドレスラッチ501の上位ビット側に一ビ
ットシフトして入力される。サイクル0のデータリード
期間で内部アドレスバス110にアドレスAkが出力さ
れると、第一の記憶手段から比較済みデータ対が内部デ
ータバス108に読み出される。データバスは、八ビッ
ト単位でデータを比較すると仮定すると、比較済みデー
タ対が十六ビット、各データのタグ一ビット、比較結果
を示すヒストリフラグが一ビットの計十九ビットで構成
される。比較済みデータ対は、メモリアドレスでは、区
別せず、ヒストリフラグで判別する。従って、内部デー
タバス108は、次段プロセッサからの入力時に出力し
た比較データのアクセスアドレスの奇数/偶数に対応し
て奇数アドレスデータ、偶数アドレスデータをリード/
ライトする。タグも同様である。
【0052】データバスにリードされたデータのヒスト
リは、旧ヒストリデータラッチ502に記憶され、サイ
クル0のライトメモリサイクルにおいて、出力アドレス
ラッチ501の最下位ビットに出力され、入力アドレス
kとともに、次段プロセッサエレメントPEk+1へのア
ドレスAk+1(=2Ak+ヒストリ)として、出力され
る。ソートデータが一バイトのときは、前段プロセッサ
エレメントPEk-1からのアドレスAkによって、第一の
記憶手段102をアクセスできるが、ソートデータ長
が、二バイト以上のときは、オフセットアドレスカウン
タ503によって、オフセットアドレスを内部アドレス
バス110に出力する。オフセットアドレスは、サイク
ル1におけるライトメモリサイクルでの共有メモリライ
トの直後にインクリメントされて、更新され、データ長
Lに達するとオフセットアドレスカウンタは、0にクリ
アされる。具体的には、データ長Lに対して、log2
Lの小数点以下を切り上げた整数の数だけ入力アドレス
kを上位ビット側にシフトして、オフセットアドレス
とともにメモリアドレスとして出力すればよい。
【0053】図5に、データ長が一バイトのときのk段
目のプロセッサエレメントPEkの各信号のタイミング
チャートを示す。システムサイクルは、サイクル0とサ
イクル1があり、各サイクルは、リードメモリサイクル
とライトメモリサイクルの二つのメモリサイクルからな
る。サイクル0のリードメモリサイクルでは、前段プロ
セッサエレメントPEk-1から出力されたアドレスAk
一つ前のサイクルで出力されているので、プロセッサエ
レメントPEkは、サイクル0のリードメモリサイクル
の前縁でアドレスを新しいアドレスAkとして取り込
む。マイクロプロセッサ101は、リードストローブR
DSTBを出力して、プロセッサエレメントPEkの第
一の記憶手段からアドレスAkに相当する比較済みデー
タ対DATA1をリードする。
【0054】比較済みデータ対DATA1は、同時に第
二の記憶手段から読みだされたヒストリフラグとともに
バススイッチに入力され、ヒストリフラグに基づき指定
された整列順の早い方の比較データが選択され、第一の
選択データとして前段プロセッサエレメントPEk-1
出力される。同様にして、比較済みデータ対DATA1
とヒストリフラグが比較装置104に入力され、あらか
じめ指定した整列順の遅い方の比較データがヒストリフ
ラグに基づいて第二の選択データとして比較装置104
内のラッチに格納される。
【0055】次にサイクル0のライトサイクルにおい
て、ヒストリとアドレスAkから(2Ak+ヒストリ)を
次段のアドレスAk+1としてプロセッサエレメントPEk
の出力アドレスラッチ501に記憶し、次段プロセッサ
エレメントPEk+1に出力する(図5の矢印550、5
51の動作)。サイクル1のリードサイクルにおいて、
プロセッサエレメントPEkの出力アドレスラッチ50
1から次段プロセッサエレメントPEk+1に出力された
アドレスAk+1(=2Ak+ヒストリ)により、次段プロ
セッサエレメントPEk+1のサイクル0のリードサイク
ルでリードされた比較済みデータ対DATA2のうち指
定順の早い方に相当する第一の選択データがプロセッサ
エレメントPEkのもう一つの比較データである第三の
比較データとして入力され、すでに、プロセッサエレメ
ントPEkのサイクル0でラッチされているDATA1
の第二の選択データとが比較装置104において比較さ
れる。これに続いて、サイクル1のライトサイクルにお
いて、比較結果として、新しい比較済みデータ対が第一
の記憶手段のAk番地に(図5の矢印553の動作)、
ヒストリフラグが第二の記憶手段に格納される(図5の
矢印552の動作)。
【0056】次に、整列するデータ長が三バイトのとき
のプロセッサエレメント間のデータ移動の様子を図6に
より説明する。本ソータでは、各PE間の転送データバ
ス巾を一バイトと仮定しているので、Lバイトのとき
は、(L+1)システムサイクルで一つのソートデータ
を転送できる。もし、システムサイクルを少なくしたい
ときは、実装上のピン数、メモリバス巾などの拡張が許
される範囲でデータバス巾を拡張すればよく、例えば、
PE間のデータ転送巾をLバイトに拡張すると、各段の
メモリバスの巾は、二Lバイト+三ビット(ヒストリ一
ビット、タグ二ビット)となり二システムサイクルのソ
ータが実現できる。
【0057】図6は、プロセッサエレメントPE間デー
タバスの巾を一バイトとしたとき、データ長三バイトの
データを整列する場合の各PE間のデータの流れを示
す。箱の中の数字は、各プロセッサエレメントPEのシ
ステムサイクルを示す。各プロセッサエレメントから読
み出される一対のデータのうち指定された整列順の早い
方のデータを第一の選択データ、指定された整列順の遅
い方のデータを第二の選択データとする。三バイトの第
一の選択データをW1、W2、W3で表し、タグをTA
G−Wで表している。第二の選択データは、次段プロセ
ッサエレメントから第一の選択データをリードするより
一システムサイクル早く読み出されて、比較装置104
内にラッチされている。すなわち、前段への第一の選択
データ転送と同時に、比較装置内の入力ラッチにラッチ
している。縦軸は、一システムサイクルを刻みとする時
刻を示し横軸は、前段からのプロセッサエレメントPE
の並びを示す。PE1を最上段として、PE2,PE
3,・・・PEnの順に一次元に接続される。
【0058】PE1は、時刻Tでは、システムサイクル
3であり、PE2から最後のデータW3を入力し、整列
を完了するところである(601)。時刻T+1では、
ソータ全体をコントロールするソートコントローラから
一サイクル前に出力されたアドレスA1を入力し、整列
データの一バイト目をソートコントローラに転送する
(602)。時刻T+2では、PE1自身が出力したア
ドレスA2(607)に基づき、PE2からPE1へ第
一バイト目が転送される(603)。同様にして、時刻
T+3では、第二バイト目が転送される(604)。以
下、この動作を順次繰り返すことにより、各段のPEの
データが、整列されてPE1から出力される。すなわ
ち、データ長L=3Byteのデータ一個を転送するの
に、(L+1)=四システムサイクルかかることにな
る。
【0059】データ長Lバイトのときのi段目のプロセ
ッサエレメントPEiの動作をシステムサイクル毎に記
述すると下記のようになる。これをまとめて、図11に
示す。図11は、データ長Lバイトのときの本発明によ
るプロセッサPEiおよび内部メモリの動作説明図であ
る。
【0060】システムサイクル0:[リード] PEi-1
からアドレスAiを入力し、第一の記憶手段から比較済
みデータ対の一ワード目と、第二の記憶手段からヒスト
リ(Ai)を読み出し、第一の選択データ(Ai)をPEi-1
に転送し、第二の選択データおよびヒストリ(Ai)を比
較装置内にラッチする。
【0061】[ライト] PEi+1にアドレスAi+1=2Ai
+ヒストリ(Ai)を出力する。
【0062】(この場合は、このタイミングでアドレス
を出力するだけでライト動作ではない。) システムサイクル1:[リード] PEi+1に出力したア
ドレスAi+1から第一の選択データ(Ai+1)の一バイト
目を読み出し、TAG−Lおよび第二の選択データの一
バイト目と比較し、入力時のアドレス対応にデータを比
較装置内のバッファにラッチする。比較結果が確定すな
わち、第一の選択データが確定したならば、新ヒストリ
ラッチの上位一ビットを1とし、下位一ビットに確定し
た第一の選択データのアドレスの奇数/偶数に対応した
値を設定する。第一の選択データ(Ai)の第二バイト目
をPEi-1に転送する。第二の選択データ(Ai)の二バイ
ト目を比較部の入力レジスタにラッチする。
【0063】[ライト] リードサイクルでのアドレスAi
のデータ比較結果に従い、第一バイト目の比較済みデー
タ対(Ai)を共有メモリのAi番地に格納する。ライト直
後にオフセットアドレスカウンタをポストディクレメン
トして更新する。
【0064】システムサイクルk(2≦k≦L−1):
[リード]PEi+1から第一の選択データ(Ai+1)のk
バイト目を読み出し、第二の選択データのkバイト目と
比較し、アドレスの奇数/偶数対応にデータを比較装置
のバッファにラッチする。比較結果が確定すなわち、第
一の選択データが確定したならば、新ヒストリラッチの
上位一ビットを1とし、下位一ビットに確定した第一の
選択データのアドレスの奇数/偶数に対応した値を設定
する第一の選択データ(Ai)の第(k+1)バイト目を
PEi-1に転送する。第二の選択データ(Ai)の(k+1)
バイト目を比較装置の入力レジスタにラッチする。
【0065】[ライト] リードサイクルでのノードアド
レスAiのデータ比較結果に従い、第kバイト目の比較
済みデータ対(Ai)を第一の記憶手段のAi番地に格納す
る。ライト直後にオフセットアドレスカウンタをポスト
ディクレメントして更新する。 システムサイクルL:[リード]PEi+1から第一の選
択データ(Ai+1)のLバイト目を読み出し、第二の選択
データのLバイト目と比較し、出身ノード対応にデータ
を比較装置のバッファにラッチする。新ヒストリが確定
するので新ヒストリをラッチする。
【0066】[ライト] リードサイクルでのノードアド
レスAiのデータ比較結果に従い、第Lバイト目の比較
済みデータ対(Ai)と新ヒストリを第一の記憶手段およ
び、第二の記憶手段のAi番地に格納する。ライト直後
にオフセットアドレスカウンタを初期値0にクリアす
る。
【0067】図2の動作説明図および図5の動作タイミ
ングでは、システムサイクルの中にリードメモリサイク
ルとライトメモリサイクルを含んでいるため、四メモリ
サイクルとなっているが、システムサイクル0のライト
サイクルでは、メモリバスを使用していないので、ライ
トメモリサイクルを省略すると、三メモリサイクルでソ
ートが実現できる。図7は、三メモリサイクルで一バイ
トのデータ長のデータ列を整列する時のプロセッサエレ
メントの動作説明図である。図7に示すように、サイク
ル0、1、2の順に第一のリードサイクル、第二のリー
ドサイクル、最後にライトサイクルを実行するようにな
っている。第一のリードサイクルでは、k段目のプロセ
ッサエレメントPEkは、アドレス入力Akを入力し、ア
ドレスAkに相当する比較済みデータ対をリードし、比
較済みデータ対と同時に読みだしたヒストリに基づき、
あらかじめ定められた整列順の早い方のデータである第
一の選択データを前段プロセッサエレメントPEk-1
出力するとともに、あらかじめ定められた整列順の遅い
方のデータである第二の選択データをラッチし、ヒスト
リとアドレスAkに基づき次段アドレスAk+1(=2*A
k+ヒストリ)を出力する。次のサイクル1は、第二の
リードサイクルであり、第一のリードサイクルで出力し
た次段アドレスAk+1に基づいて次段の比較済みデータ
対から第一の選択データをリードし、先に読み出してお
いた第二の選択データとを比較し、比較結果を新ヒスト
リとする。
【0068】次のサイクル2は、ライトサイクルでサイ
クル1で比較した結果に基づき、第一の選択データおよ
び第二の選択データを入力したアドレス順に並べて一つ
のデータ対を構成し第一の記憶装置に格納し、ヒストリ
を第二の記憶装置のAk番地に格納する。次段プロセッ
サPEk+1も同様に三つのメモリサイクルを実行するが
k段目のプロセッサエレメントPEkより一メモリサイ
クル遅れて動作する。以上のように、三つのメモリサイ
クルでも、動作可能である。三つのメモリサイクルで動
作させる場合、リードおよびライトがサイクルによって
異なるのでタイミング制御を実行するバススイッチの部
分にあるリードおよびライトのタイミング発生装置でリ
ードおよびライトのタイミング制御信号を発生させる。
従って、このタイミング発生装置が異なる以外は、図1
の構成で三メモリバスサイクルでデータ長1バイトのデ
ータ列をソートできる。
【0069】最後に、本発明は、ディスクソートに関す
るものであるため、シーク時間が長い場合は、入力バッ
ファへのデータ入力が一時的に遅れる場合が生じる。こ
れを解決するためには、大容量のメモリを準備すればよ
いが、N次整列併合の場合には、Nが大きいとメモリの
総容量が膨大になるので、メモリを増すことはせず、ソ
ータを一時止めることによって、比較的小さなバッファ
でソートを可能とする。ソータを一時停止するには、ソ
ートコントローラまたは、HOSTプロセッサから出力
段プロセッサエレメント、すなわち、PE1を停止させ
ればよい。従って、プロセッサエレメントのモードレジ
スタに停止、起動用の制御ビットを設け、ここに、ソー
トコントローラまたは、HOSTプロセッサが書き込む
ことによって、制御する。モードレジスタへの書き込み
は、プロセッサモードと同様のバススイッチを利用すれ
ば一サイクルで実行できる。ただし、ソートプロセッサ
数が多い場合は、数回に分けて書き込むのでこれに相当
するだけのサイクル数でソートするデータの数以下にな
ったら、ソータを停止すればよい。
【0070】
【発明の効果】本発明による並列ソータでは、各PE
は、前段PEからのメモリアクセスと次段PEへのアド
レス出力を同時に実行して、パイプライン化を実現して
おり、高速な並列ソータが提供できる。
【0071】さらに、メモリバスサイクルは、データ長
1バイトのソートについては、従来六メモリバスサイク
ルであったものを四メモリバスサイクルで実現できる。
なお、同期のために、リードメモリバスサイクルとライ
トメモリバスサイクルの二メモリバスサイクルを組合せ
て一システムサイクルとしている。また、Lバイト長の
データに対しても、L+2システムサイクルで処理して
いたものが、L+1システムサイクルで可能となり、性
能が向上する。ソートモードとプロセッサモードの切り
替えによりソートメモリを入力バッファメモリとして使
用でき、少ないバッファメモリで大容量ファイルのソー
トが実行できる効果がある。本発明によるソートプロセ
ッサをn個一次元配列に接続することにより、2**n
次の整列併合をパイプラインで処理することが可能とな
り、ソートバッファメモリの容量を越えるような大容量
データの外部ソートに特に効果がある。
【図面の簡単な説明】
【図1】本発明によるソートプロセッサエレメントのブ
ロック図。
【図2】本発明によるソートプロセッサのバス制御装置
の説明図。
【図3】本発明によるソートプロセッサの比較部のブロ
ック図。
【図4】本発明によるソートプロセッサの動作説明図。
【図5】本発明によるソートプロセッサの動作タイミン
グチャート。
【図6】本発明によるソートプロセッサ間のデータの流
れの説明図。
【図7】本発明によるソートプロセッサの各サイクルの
処理内容の説明図。
【図8】従来方式によるソータをn台のプロセッサで実
現するときの説明図。
【図9】従来方式におけるプロセッサPSCiとメモリ
RAMiの動作説明図。
【図10】データ長Lのときの従来方式におけるプロセ
ッサとメモリの動作説明図。
【図11】データ長Lのときの本発明におけるプロセッ
サと内部メモリの動作説明図。
【図12】2進木構造のトーナメント法によるソートア
ルゴリズムの説明図。
【図13】2進木構造の勝者ー敗者データ対表現による
ソートアルゴリズムの説明図。
【符号の説明】
1:ハードウエアソータ部、2:主記憶装置、3:HO
STプロセッサ、4:ディスク装置、5:ディスク/ソ
ータ制御装置、6:DMA制御装置、7:システムバ
ス、8〜16,109:6、7間の転送路、101:内
部プロセッサ、102,103:記憶手段、104:比
較装置、105:アドレス発生装置、106:モードレ
ジスタ、107:バススイッチ、108:内部データバ
ス、110:アドレスバス。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 迫田 行介 神奈川県川崎市麻生区王禅寺1099番地 株 式会社日立製作所システム開発研究所内

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】パラグラフ先頭の半角スペース2ケを全角
    スペース1ケに全文訂正n個のプロセッサエレメントP
    k(1≦k≦n)を一次元アレイに接続して、隣りの
    前記プロセッサエレメントに、順次、データを転送しな
    がらデータを整列(ソート)する多段のハードウェアソ
    ータにおいて、各段の前記プロセッサエレメントにデー
    タを処理するプロセッサと、あらかじめ定めた整列順序
    (昇順または降順)に整列する順序を決定したk段目の
    データ対を2の(k−1)乗個分格納する第一の記憶手
    段と、前記第一の記憶手段の一対のデータの整列の順序
    を決定した結果を示す一ビットのフラグをそれぞれのデ
    ータ対に対応して格納した第二の記憶手段と、前記第二
    の記憶手段から読み出したフラグと前段プロセッサエレ
    メントから出力されるアドレスAkに基づき次段プロセ
    ッサエレメントPEk+1に出力するアドレスAk+1を生成
    し出力するアドレス発生手段と、前段プロセッサエレメ
    ントから出力されるアドレスAkにより読み出した一対
    のデータのうちあらかじめ指定された整列順の遅い方に
    該当する第二のデータと前記アドレス発生手段により次
    段に出力したアドレスAk+1に基づいて次段プロセッサ
    エレメントPEk+1から読み出した第三のデータを比較
    するデータ比較手段とを設け、前段プロセッサエレメン
    トから出力されるアドレスAkに基づき前記第一の記憶
    手段から読み出した一対のデータのうちあらかじめ指定
    された整列順の早い方に該当する第一のデータを選択し
    前段プロセッサエレメントPEk-1に転送すること、前
    記アドレス発生手段から次段プロセッサエレメントPE
    k+1に出力したアドレスAk+1に対して次段プロセッサエ
    レメントPEk+1から転送される第三のデータを入力す
    ることを特徴とするハードウェアソート処理装置。
  2. 【請求項2】請求項1において、k段目(1≦k≦n)
    の前記プロセッサエレメントPEkの受けるアドレスAk
    に対して、前記プロセッサエレメントから入力したアド
    レスAkに基づき読み出した前記一対のデータのうちあ
    らかじめ指定された整列順の早い方に該当する前記第一
    のデータを選択するために、前記第二の記憶手段から読
    み出した一ビットのフラグを格納する第六の記憶手段を
    設け、プロセッサエレメントPEkから出力するアドレ
    スAk+1が、前記第六の記憶手段の出力(ヒストリ)と
    アドレスAkに関連し、 Ak+1 = 2Ak + ヒストリ となるように次段プロセッサエレメントPEk+1へのア
    ドレスAk+1を生成して、出力するアドレス発生手段を
    設けたハードウェアソート処理装置。
  3. 【請求項3】請求項1において、前段プロセッサエレメ
    ントから出力されたアドレスAkにより読み出した前記
    一対のデータのうちあらかじめ指定された整列順の遅い
    方に該当する前記第二のデータと、アドレス発生手段に
    より次段に出力したアドレスAk+1に基づいて次段のプ
    ロセッサから読み出した前記第三のデータとを入力し、
    前記第二、第三の二つの入力データを次段プロセッサエ
    レメントから入力するためにアクセスしたアドレスの奇
    数/偶数に対応して並べ換えるデータSWAP手段を設
    けたこと、その出力を記憶する第四の記憶手段を設け、
    前記第四の記憶手段から出力される二つのデータを比較
    する比較器を設け、その比較結果により前段プロセッサ
    エレメントに転送すべきデータを指定するフラグとして
    格納する第五の記憶手段を設け、前段プロセッサエレメ
    ントから入力した第四の記憶手段の出力を前記第一の記
    憶手段に記憶し、前記第五の記憶手段の出力を前記第二
    の記憶手段に記憶すること、前記第二の記憶手段を読み
    出したときの出力により、データSWAP手段のデータ
    SWAPの方向を指定し、前記第一の記憶手段に格納さ
    れた二つのデータからあらかじめ指定された整列順の早
    い方に該当する第一のデータを選択するハードウェアソ
    ート処理装置。
  4. 【請求項4】請求項1において、前段プロセッサからの
    データのリード要求による第一のサイクル、次段プロセ
    ッサへのデータリードにより、前記第三のデータを読み
    出す第二のサイクル、第一のサイクルでリードしたデー
    タ中の前記第二のデータと前記第二のサイクルでリード
    した前記第三のデータを比較し、比較した結果によりあ
    らかじめ定めた整列順序の早い方に該当する方のデータ
    を指定するフラグを前記第二の記憶手段に、前記第二の
    データおよび前記第三のデータを一対のデータとして前
    記第一の記憶手段に格納する前記第三のサイクルを一次
    元アレイに接続された全PEが順次繰り返すことによっ
    て、データを整列するハードウェアソート処理装置。
  5. 【請求項5】請求項1において、データをソートするソ
    ートモードとホストプロセッサまたは自プロセッサから
    共有記憶手段をアクセスするプロセッサモードを切り替
    えるモード切り替え手段を設け、前記ホストプロセッサ
    または前記自プロセッサと共有記憶手段間に共有記憶手
    段にアクセスする複数のプロセッサからのアクセスを切
    り替えるバス切り替え手段を設けたハードウェアソート
    処理装置。
JP3303063A 1991-11-19 1991-11-19 ハードウエアソート処理装置 Pending JPH05143287A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP3303063A JPH05143287A (ja) 1991-11-19 1991-11-19 ハードウエアソート処理装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP3303063A JPH05143287A (ja) 1991-11-19 1991-11-19 ハードウエアソート処理装置

Publications (1)

Publication Number Publication Date
JPH05143287A true JPH05143287A (ja) 1993-06-11

Family

ID=17916461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP3303063A Pending JPH05143287A (ja) 1991-11-19 1991-11-19 ハードウエアソート処理装置

Country Status (1)

Country Link
JP (1) JPH05143287A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001086467A1 (fr) * 2000-05-12 2001-11-15 Fujitsu Limited Controleur de donnees et controleur atm
WO2010013320A1 (ja) * 2008-07-30 2010-02-04 株式会社ターボデータラボラトリー 表形式データを操作する方法、分散メモリ型マルチプロセッサ、及び、プログラム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001086467A1 (fr) * 2000-05-12 2001-11-15 Fujitsu Limited Controleur de donnees et controleur atm
US6895473B2 (en) 2000-05-12 2005-05-17 Fujitsu Limited Data control device and an ATM control device
WO2010013320A1 (ja) * 2008-07-30 2010-02-04 株式会社ターボデータラボラトリー 表形式データを操作する方法、分散メモリ型マルチプロセッサ、及び、プログラム

Similar Documents

Publication Publication Date Title
US6763426B1 (en) Cascadable content addressable memory (CAM) device and architecture
US5535384A (en) Method and apparatus for controlling a hardware merge sorter to sort a plurality of records greater than 2n
US6738891B2 (en) Array type processor with state transition controller identifying switch configuration and processing element instruction address
EP0424618A2 (en) Input/output system
US6760821B2 (en) Memory engine for the inspection and manipulation of data
US20100235674A1 (en) Systolic Merge Sorter
JPH0668736B2 (ja) 2個のシステムクロックサイクルを利用する書込み動作をもったキャッシュメモリユニットを供与する装置及び方法
US5185886A (en) Multiple record group rebound sorter
US6678789B2 (en) Memory device
US5903780A (en) Data sorting device having multi-input comparator comparing data input from latch register and key value storage devices
US5511189A (en) Data sorting apparatus capable of detecting completion of data sorting early and sorting method therefor
JPH05143287A (ja) ハードウエアソート処理装置
US7474586B1 (en) Random access memory (RAM) method of operation and device for search engine systems
JPH11282852A (ja) データ検索装置
JP2001195353A (ja) Dma転送システム
EP0166577A2 (en) Information sorting and storage apparatus and method
US6510480B1 (en) Data transfer circuit and data processing method using data transfer circuit for handling interruption processing
JP3528198B2 (ja) 計算機システム
JPS59148943A (ja) メモリ回路
JP4158264B2 (ja) ソート・マージ処理装置およびソート・マージ回路
US20040165608A1 (en) Method and apparatus for performing repeated content addressable memory searches
CN100517272C (zh) 可提升暂存管理效益的控制器及其暂存管理方法
JPH07111683B2 (ja) タスク切換機能付プロセッサ
JP3283886B2 (ja) ソート処理装置
JPH04149653A (ja) 二重化メモリの読出し比較システム