JP2001051827A - ソートプロセッサ及びソート処理回路 - Google Patents

ソートプロセッサ及びソート処理回路

Info

Publication number
JP2001051827A
JP2001051827A JP11220739A JP22073999A JP2001051827A JP 2001051827 A JP2001051827 A JP 2001051827A JP 11220739 A JP11220739 A JP 11220739A JP 22073999 A JP22073999 A JP 22073999A JP 2001051827 A JP2001051827 A JP 2001051827A
Authority
JP
Japan
Prior art keywords
data
sort
input
output
processor
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
JP11220739A
Other languages
English (en)
Inventor
Masahiko Koyanagi
雅彦 小柳
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.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co 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 Fuji Xerox Co Ltd filed Critical Fuji Xerox Co Ltd
Priority to JP11220739A priority Critical patent/JP2001051827A/ja
Publication of JP2001051827A publication Critical patent/JP2001051827A/ja
Pending legal-status Critical Current

Links

Abstract

(57)【要約】 【課題】 複雑な構造のデータや任意個数からなるデー
タ列も高速に並べかえることができ、かつ、ASICな
どの集積回路に適した、ソートプロセッサ及びそのソー
トプロセッサを複数用いたソート処理回路を提供する。 【解決手段】 比較部1は、前段のソートプロセッサの
記憶部内のデータ(入力ポート11)のキーフィールド
と新たなデータ(入力ポート12)のキーフィールドを
比較して、比較結果を出力する。比較部2は、記憶部4
に保存されているデータのキーフィールドと新たなデー
タのキーフィールドを比較して、比較結果を出力する。
選択部3は、比較部1,比較部2の比較結果に従い、前
段のソートプロセッサの記憶部内のデータ、新たなデー
タ、後段のソートプロセッサの記憶部内のデータ(入力
ポート13)、記憶部4に保存されているデータのいず
れかを選択し、記憶部4に保存させる。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データのソート処
理を実行するソートプロセッサおよびソート処理回路に
関するものである。
【0002】
【従来の技術】計算機システムの様々な応用分野、例え
ばデータベース処理やビジネスデータ処理、3次元コン
ピュータグラフィックス処理などでは、大量のデータを
並べかえるソート処理が必要とされる。ソート処理のソ
フトウェアアルゴリズムとしては、従来、クイックソー
ト法やマージソート法などと呼ばれる数多くのアルゴリ
ズムが考案され、実際に使用されている。しかしなが
ら、ソート処理をこのようにソフトウェアで実現した場
合、ソート処理の対象となるデータ量が多く、かつ高速
性が求められるような応用分野では、しばしば処理速度
が遅いことが問題となっている。このため、専用のハー
ドウェアを用いてソート処理を高速化しようとする試み
が発表されている。
【0003】例えば特開平9−292975号公報に
は、マージソート法をハードウェアで実現する一例が開
示されている。この特開平9−292975号公報に示
されたソート処理装置の構成および動作を以下に簡単に
説明する。ソート処理装置は、直列接続された複数個の
ソートプロセッサから構成される。第j段のソートプロ
セッサは、2の(j−1)乗個のソートされたデータを
複数組受け取り、2のj乗個のソートされたデータに並
べかえて、次段に出力するよう構成されている。例え
ば、ソート処理装置に“8,2,1,3,5,7,6,
4,…”の順にデータが入力されると、第1段目のソー
トプロセッサは入力されたデータを2つずつ取り出し
て、これを指定の順序(例えば降順)に並べかえて次段
のソートプロセッサへ送り出す。第2段目のソートプロ
セッサに入力されるデータは“(8,2),(3,
1),(7,5),(6,4),…”となる。第2段目
のソートプロセッサでは、これらの入力データを2組ず
つソートし直す。そして、ソートの結果として、
“(8,3,2,1),(7,6,5,4),…”とい
うデータを第3段目のソートプロセッサへ送り出す。以
下同様にして、データ列全体がソートされるまで繰り返
される。m個のソートプロセッサにより、2のm乗個の
データのソート処理が実行できる。また特開平9−29
2975号公報には、比較器の入力ポートの数を増やし
てデータの入力速度を速くする方法、およびメモリアク
セス回数を低減するための方法等も示されている。
【0004】このような構成において、それぞれのソー
トプロセッサには、未ソートで出力できないデータを蓄
えるためのメモリが接続される。このメモリは、段数が
多くなると飛躍的に必要とする容量が増大する。このた
め、各ソートプロセッサに専用に接続される大容量のメ
モリデバイスが必要となり、このような大容量のメモリ
デバイスは装置の外部に設ける必要がある。このような
大容量のメモリデバイスを必要とするソート処理装置全
体を、例えばASICなどの集積回路で実現することは
困難であった。
【0005】また、ソートプロセッサは、使用される段
毎にそれぞれ専用に設計する必要があり、扱うデータ数
が増えた場合にソートプロセッサを増やして対応するに
は多くの工数を必要としていた。さらに、後段のソート
プロセッサほど広大なメモリ空間を管理する必要があ
り、メモリアドレス管理のための回路が複雑化して動作
周波数が低下するという問題があった。
【0006】また別の方法として、特開平10−634
83号公報には、選択ソート法をハードウェアで実現す
る方法が開示されている。特開平10−63483号公
報に示されているデータ演算回路の構成と動作の概要を
以下に述べる。データ演算回路は、直列に接続される複
数個のサブモジュールから構成される。個々のサブモジ
ュールは、レジスタ、比較器、選択器から構成される。
データ演算回路にM個のデータが順次入力されると、そ
の中から上位m個のデータを選択し、かつそれらを降順
にソートする。
【0007】各サブモジュールは入力データとレジスタ
に保持しているデータを比較し、その比較結果と前段の
サブモジュールから入力される制御信号にしたがって、
レジスタの内容を入力データ、前段のデータ、あるいは
レジスタに保持されているデータのいずれかで更新す
る。
【0008】このように、特開平10−63483号公
報に示されているデータ演算回路は、ソート途中のデー
タを保存するメモリが不要であり、かつ回路規模が小さ
いという特徴を持つ。しかし、選択器でデータを選択す
るための制御信号が、前段及び後段のサブモジュールか
ら入力されるため、サブモジュール間の配線などによる
遅延量が大きく、高速化を図る際に障害となるという問
題がある。
【0009】また、上述のいずれの構成においても、複
数のデータフィールドを持つレコードデータのような複
雑な構造のデータを扱うことができないという問題があ
った。
【0010】
【発明が解決しようとする課題】本発明は、上述した事
情に鑑みてなされたもので、従来のようにソート処理途
中のデータを保持しておくための大容量のメモリ装置を
別個に設ける必要がなく、複雑な構造のデータや任意個
数からなるデータ列も高速に並べかえることができ、か
つ、ASICなどの集積回路に適した、ソートプロセッ
サ及びそのソートプロセッサを複数用いたソート処理回
路を提供することを目的とするものである。また、対応
可能なデータ数の上限を容易に変更することが可能で、
その場合でも全体の動作周波数が低下することがなく、
高速に並べ替えを行うことができるソート処理回路を提
供することも目的としている。
【0011】
【課題を解決するための手段】本発明のソートプロセッ
サは、外部から入力される第1の制御信号に基づいてデ
ータを保持する記憶手段と、外部から入力される第1の
データと外部から入力される第2のデータの大小関係を
比較して結果を出力する第1の比較手段と、外部から入
力される前記第2のデータと前記記憶手段に保持されて
いるデータの大小関係を比較して結果を出力する第2の
比較手段と、外部から入力される第2の制御信号と前記
第1および第2の比較手段から出力される比較結果に基
づいて外部から入力される第1、第2、第3のデータあ
るいは前記記憶手段に保持されているデータのいずれか
1つを選択して前記記憶手段へ出力する選択手段を備え
ていることを特徴とするものである。
【0012】本発明のソート処理回路は、このようなソ
ートプロセッサを複数、直列に接続する。このとき、各
ソートプロセッサの記憶手段に保持されているデータを
前段のソートプロセッサの第3のデータならびに次段の
ソートプロセッサの第1のデータとするように接続す
る。また、外部から順次入力されるデータが第2のデー
タとして与える。さらに、第1および第2の制御信号を
各ソートプロセッサに出力し、全体の入出力を制御する
制御部を設ける。これによって、各ソートプロセッサは
第2のデータとして与えられたデータをソートして順次
出力する。
【0013】このような構成においては、各ソートプロ
セッサ間での制御信号の授受が発生しないため、ソート
プロセッサ間の配線などによる遅延量が小さく、高速に
動作させることが可能である。また、このようにソート
プロセッサ間での制御信号の授受による遅延が問題にな
らないことから、例えば半導体デバイス上に配置する場
合でも回路設計に自由度が生まれ、容易に回路設計を行
うことができる。さらに、例えばFPGAのように回路
の再構成が可能な半導体デバイス上に実装する場合で
も、ソート処理の対象となるデータの個数の最大値に合
わせてソートプロセッサの数を変更可能に構成でき、そ
の場合でも動作速度を低下させることなく動作させるこ
とが可能である。
【0014】さらに、与えられたデータから比較の対象
となるフィールドを分離して第1、第2の比較手段に供
給する分離部を設けることができる。これによって、与
えられたデータが比較の対象とならないフィールドを有
するデータであってもソート処理を行うことが可能にな
る。
【0015】
【発明の実施の形態】図1は、本発明のソートプロセッ
サの実施の一形態を示すブロック構成図である。図中、
1,2は比較部、3は選択部、4は記憶部、5は分離
部、10はソートプロセッサ、11〜15は入力ポー
ト、16は出力ポートである。ここでは、各部の機能の
説明として、N個のソートプロセッサ10を備えたソー
ト処理装置において、N以下の任意個数のデータ列を昇
順にソートする場合の機能について説明する。なお、ソ
ート対象のデータは、それぞれ、ソートのキーとなるフ
ィールド(以降キーフィールドと呼ぶ)とそれ以外のフ
ィールドから構成されているものとする。
【0016】図1に示すソートプロセッサ10は、比較
部1と、比較部2と、選択部3と、記憶部4と、分離部
5から構成されている。また、ソートプロセッサ10
は、入力ポート11〜15および出力ポート16を備え
ている。
【0017】比較部1は、入力ポート11および入力ポ
ート12に入力されるデータのキーフィールドの大小関
係を比較し、比較結果を1ビットのデータとして選択部
3へ出力する。入力ポート11に入力されるデータのキ
ーフィールドをsmall、入力ポート12に入力され
るデータのキーフィールドをnewとすると、new<
smallのとき比較結果には真(あるいは1)を、n
ew≧smallのとき比較結果には偽(あるいは0)
を出力する。
【0018】比較部2は、入力ポート12に入力される
データのキーフィールドと記憶部4に保持されているデ
ータのキーフィールドの大小関係を比較し、比較結果を
1ビットのデータとして選択部3へ出力する。入力ポー
ト12に入力されるデータのキーフィールドをnew、
記憶部4に保持されているデータのキーフィールドをr
egとすると、new<regのとき比較結果には真
(あるいは1)を、new≧regのとき比較結果には
偽(あるいは0)を出力する。
【0019】選択部3は、比較部1および比較部2の比
較結果と入力ポート14に入力される制御信号outf
lagの値に応じて、入力ポート11〜13に入力され
るデータあるいは記憶部4に保持されているデータのい
ずれか1つを選択して記憶部4へ出力する。制御信号o
utflagがアクティブ(あるいは1)のときは、入
力ポート13に入力されるデータを選択して出力する。
制御信号outflagがアクティブでない(あるいは
0の)ときは、比較部1および比較部2の比較結果によ
って、出力されるデータが選択される。比較部1の比較
結果が真(あるいは1)のときは、入力ポート11に入
力されるデータを選択して出力する。比較部2の出力結
果が偽(あるいは0)のときは、記憶部4に保持されて
いるデータを選択して出力する。比較部1の比較結果が
偽(あるいは0)でかつ比較部2の出力結果が真(ある
いは1)のときは、入力ポート12に入力されるデータ
を選択して出力する。
【0020】記憶部4は、入力ポート15に入力される
制御信号loadにしたがって、選択部3から供給され
るデータを保持し、保持しているデータを出力ポート1
6および分離部5へ出力する。制御信号loadがアク
ティブ(あるいは1)のとき、記憶部4に保持されてい
るデータは選択部3から入力されるデータで上書き更新
される。制御信号loadがアクティブでない(あるい
は0の)ときは、例え選択部3の出力が変化していても
データの更新は行われない。なお、記憶部4には、キー
フィールドとキーフィールド以外のフィールドを含む1
レコードのデータが保持される。
【0021】分離部5は、入力ポート11〜13に入力
されたデータ及び記憶部4から出力されたデータをその
まま選択部3へ供給するとともに、入力ポート11及び
入力ポート12に入力されたデータのキーフィールドを
分離して比較部1に供給し、また入力ポート12に入力
されたデータ及び記憶部4から出力されたデータのキー
フィールドを分離して比較部2に供給する。キーフィー
ルドの分離は、例えば固定フォーマットであれば結線の
みによって実現することができる。また、入力されるデ
ータに応じてキーフィールドを指示可能に構成すること
もできる。
【0022】図2は、本発明のソート処理回路の実施の
一形態を示すブロック図である。図中、10(0)〜1
0(N−1)はソートプロセッサ、20はソート処理回
路、21は制御部、31,34,37は入力ポート、3
2,33,35,36は出力ポート、38,39は共通
配線である。なお、ソートプロセッサ10(0)〜10
(N−1)は例えば図1に示したソートプロセッサであ
る。ここでは、N個のソートプロセッサ10(0)〜1
0(N−1)を備え、N個以下の任意個数のデータ列を
昇順にソート可能なソート処理装置について示してい
る。
【0023】図2に示すソート処理回路20は、N個の
ソートプロセッサ10(0)〜10(N−1)と、制御
部21から構成されている。また、ソート処理回路20
は、入力ポート31、34、37と、出力ポート32、
33、35、36を備えている。入力ポート31は全て
のソートプロセッサ10(0)〜10(N−1)の入力
ポート12に接続されている。出力ポート32は第0段
のソートプロセッサ10(0)の出力ポート16に接続
されている。図2では、出力ポート32と第0段のソー
トプロセッサ10(0)の出力ポート16を接続する配
線をwl(0)と示している。入力ポート34、37お
よび出力ポート33、35、36は制御部21に接続さ
れている。また、各ソートプロセッサの入力ポート14
および15は、それぞれ共通配線38および39によっ
て制御部21へ接続されている。
【0024】第j段目のソートプロセッサ10(j)の
出力ポート16は、第(j−1)段目のソートプロセッ
サ10(j−1)の入力ポート13および第(j+1)
段目のソートプロセッサ10(j+1)の入力ポート1
1に接続される。この配線をwl(j)およびws(j
+1)として示している。ただし、第0段目のソートプ
ロセッサ10(0)の出力ポート16は、ソート処理回
路20の出力ポート32と第1段目のソートプロセッサ
10(1)の入力ポート11に接続される。また第(N
−1)段目のソートプロセッサ10(N−1)の出力ポ
ート16は、第(N−2)段目のソートプロセッサ10
(N−2)の入力ポート11にのみ接続される。また、
第0段目のソートプロセッサ10(0)の入力ポート1
1は接地(すなわち全ビットに0が入力)されている。
第(N−1)段目のソートプロセッサ10(N−1)の
入力ポート13は電源に接続(すなわち全ビットに1が
入力)されている。
【0025】制御部21は、ソート処理回路20全体の
入出力および動作を制御する。電源投入時などのハード
ウェアリセットあるいはソフトウェアリセット時、制御
部21はNサイクル以上の間、共通配線38,39を介
してすべてのソートプロセッサ10(0)〜10(N−
1)の入力ポート14,15に入力される制御信号ou
tflagおよび制御信号loadをアクティブに保
つ。これによって、すべてのソートプロセッサ10
(0)〜10(N−1)の記憶部4に全ビットが1のデ
ータをセットすることで初期化する。
【0026】また、出力ポート33(inputrd
y)をアクティブにし、出力ポート36(output
rdy)を非アクティブにする。この状態でソート対象
のデータ列が入力されるまで待つ。データ列の入力は入
力ポート34(push)がアクティブになることによ
って制御部21に通知される。これを検出すると制御部
21は出力ポート33(inputrdy)を非アクテ
ィブにする。
【0027】データ列が入力されている間、制御部21
は、入力されたデータの数を内部のカウンタを用いて数
えておく。カウンタの値は出力ポート35(num)に
出力される。またデータ列が入力されている間、制御部
21は共通配線39を介してすべてのソートプロセッサ
10(0)〜10(N−1)の入力ポート15に入力さ
れる制御信号loadをアクティブに保つ。
【0028】データ列入力の終了は、入力ポート34
(push)がアクティブでなくなったことで検出され
る。制御部21は出力ポート36(outputrd
y)をアクティブにし、ソート済みのデータを出力可能
なことを外部に知らせる。入力ポート37がアクティブ
になったことを検知すると、共通配線38を介してすべ
てのソートプロセッサ10(0)〜10(N−1)の入
力ポート14に入力される制御信号outflagをア
クティブにする。これによって、1サイクルに1データ
ずつ出力ポート32からソート結果が出力される。
【0029】以下、本発明のソート処理回路20の動作
の一例について、図2とともに図1を用いて、その概要
を説明する。電源投入時などのハードウェアリセットあ
るいはソフトウェアリセット時、制御部21はNサイク
ル以上の間、共通配線38,39を介してすべてのソー
トプロセッサ10(0)〜10(N−1)の入力ポート
14,15に入力される制御信号outflagおよび
制御信号loadをアクティブに保つ。上述のようにソ
ートプロセッサの入力ポート14に入力される制御信号
outflagがアクティブになると、選択部3は入力
ポート13に入力されるデータを選択して記憶部4に出
力する。また入力ポート15に入力される制御信号lo
adがアクティブであるため、選択部3から出力された
データが記憶部4に保存される。これによって、ソート
プロセッサ10(N−1)では、入力ポート13から入
力される、すべてのビットが1のデータを記憶部3が選
択して、記憶部4に保存する。例えば第j段目のソート
プロセッサ10(j)の選択部3は、入力ポート13か
ら入力されるソートプロセッサ10(j+1)からのデ
ータを選択し、内部の記憶部4に格納する。このような
動作が連鎖的に実行され、Nサイクルにより、ソートプ
ロセッサ10(N−1)の入力ポート13に入力されて
いるデータ、すなわち、全ビットが1のデータがすべて
のソートプロセッサ10(0)〜10(N−1)の記憶
部4にセットされ、初期化される。
【0030】このようなソートプロセッサ10(0)〜
10(N−1)の初期化後、制御部21は出力ポート3
3(inputrdy)をアクティブにし、出力ポート
36(outputrdy)を非アクティブにする。こ
の状態でソート対象のデータ列が入力されるまで待つ。
データ列の入力は、外部より入力ポート34(pus
h)をアクティブにすることによって制御部21に通知
される。制御部21は、これを検出すると、出力ポート
33(inputrdy)を非アクティブにする。
【0031】データ列は、入力ポート34(push)
がアクティブの間、入力ポート31(unsorte
d)から順次入力される。入力ポート31には、最大N
個のデータ列を発生する演算回路あるいはメモリ等か
ら、直接あるいはバス等を経由して一連のデータが1つ
ずつ入力される。制御部21は、入力されたデータの数
を内部のカウンタを用いて数えておく。カウンタの値は
出力ポート35(num)に出力される。
【0032】1つのデータが入力されると、それぞれの
ソートプロセッサ10(0)〜10(N−1)では、現
在、記憶部4に保持されているデータのキーフィールド
と、新しく入力されたデータのキーフィールドを比較部
2で比較する。また、新しく入力されたデータのキーフ
ィールドと、前段のソートプロセッサに保持されている
データのキーフィールドを比較部1で比較する。そし
て、比較部1及び比較部2による比較結果に従い、選択
部3は、前段のソートプロセッサに保持されているデー
タ、新しく入力されたデータ、あるいは記憶部4に保持
されているデータのいずれかを選択して記憶部4に出力
する。
【0033】すなわち、入力ポート31に入力されたデ
ータのキーフィールドが、前段のソートプロセッサの記
憶部4に保持されているデータのキーフィールドよりも
小さければ、前段のソートプロセッサに保持されている
データで自身の記憶部4を更新する。入力ポート31に
入力されたデータのキーフィールドが前段のソートプロ
セッサの記憶部4に保持されているデータのキーフィー
ルド以上であり、かつ、自身の記憶部4に保持されてい
るデータのキーフィールドよりも小さい場合には、入力
ポート31に入力されたデータで自身の記憶部4を更新
する。入力ポート31に入力されたデータのキーフィー
ルドが、自身の記憶部4に保持されているデータのキー
フィールドよりも大きければ、自身の記憶部4に保持さ
れているデータを再び保持する。簡単に言うと、入力ポ
ート31に入力されたデータのキーフィールド、前段の
ソートプロセッサの記憶部4に保持されているデータの
キーフィールド、自身の記憶部4に保持されているデー
タのキーフィールドの3つを大きさ順に並べた場合に、
真ん中に来るキーフィールドを有するデータを選択部3
で選択するのである。
【0034】データ列が入力されている間、制御部21
はすべてのソートプロセッサ10(0)〜10(N−
1)の入力ポート15に入力される制御信号loadを
アクティブに保つ。これにより、選択部3が出力したデ
ータは記憶部4に保持され、データの更新が行われる。
【0035】このようにして、データが入力されるごと
に、それぞれのソートプロセッサ10(0)〜10(N
−1)における比較及びデータの更新が行われる。最大
N個のデータ列の入力が終了すると、外部より制御信号
pushを非アクティブにする。制御部21は、入力ポ
ート34から入力される制御信号pushがアクティブ
でなくなったことを検出し、データ列の入力終了と判定
する。この時点で、データ列は第0段目のソートプロセ
ッサ10(0)から昇順にソートされて、1つのソート
プロセッサに1データずつ保持されている状態となる。
【0036】制御部21は、制御信号outputrd
yをアクティブにして出力ポート36から出力し、ソー
ト済みのデータが出力可能なことを、後段の演算回路等
の外部の装置に知らせる。これを受け、ソート済のデー
タを取り出す際には、入力ポート37に入力する制御信
号popをアクティブにする。制御部21は、入力ポー
ト37から入力される制御信号popがアクティブにセ
ットされたことを検出すると、ソートされたデータの出
力処理を開始する。
【0037】制御部21は、制御信号popがアクティ
ブである間、制御信号loadおよび制御信号outf
lagをともにアクティブに保つ。するとそれぞれのソ
ートプロセッサは、次段の記憶部4に保持されているデ
ータで自身の記憶部4を更新する処理を、それぞれ並列
に実行する。すなわち、入力ポート14から入力される
制御信号outflagがアクティブであるので、選択
部3は入力ポート13から入力される次段のソートプロ
セッサからのデータを選択して出力する。また、入力ポ
ート15から入力される制御信号loadがアクティブ
であるため、選択部3で選択した、次段のソートプロセ
ッサからのデータを記憶部4に保存する。これによっ
て、各ソートプロセッサの記憶部4に保存されているデ
ータは、順次、前段のソートプロセッサに送られる。こ
のようにして、各ソートプロセッサ10(0)〜10
(N−1)に格納されている昇順にソートされたデータ
が、次々と第0段のソートプロセッサ10(0)から出
力ポート32(sorted)を介して出力される。
【0038】また、このソートされたデータを出力する
際に、ソートプロセッサ10(N−1)の側からすべて
のビットが1のデータが順次前段のソートプロセッサに
送られてゆく。そのため、ソートされたデータを出力し
た後は、すべてのソートプロセッサの記憶部4にすべて
のビットが1のデータが保存され、初期化された状態と
なる。制御部21は、制御信号inputrdyをアク
ティブにして出力ポート33から外部に出力し、次のデ
ータ列が入力されるのを待つ。
【0039】次に、上述したようなソート処理回路の動
作を、具体例を用いて詳細に説明する。図3は、本発明
のソート処理回路の実施の一形態に対して、4個のデー
タが入力された場合の動作の具体例を示すタイミングチ
ャート、図4、図5は、同じく各サイクルにおけるソー
トプロセッサの記憶部に保持されるデータの変化を示す
模式図である。ここでは、4個のデータ(キーフィール
ドの値が10,2,7,5のデータ)からなるデータ列
がソート処理回路へ入力されて、ソートされ、出力され
る場合の動作を示している。なお図3において、斜線を
施した箇所は無効なデータを示している。また、サイク
ルc1の直前までに初期化が終了し、すべてのソートプ
ロセッサの記憶部4にすべてのビットが1のデータ(図
4、図5では“∞”で示している)が格納されているも
のとする。さらに図4、図5では、4個のデータをソー
トするために最低限必要となる4つのソートプロセッサ
のみを示しており、以下の説明でも4つのソートプロセ
ッサのみを用いるものとして説明する。しかし、5つ以
上のソートプロセッサを有していても同様の動作によっ
て4個のデータのソートを行うことができる。
【0040】まず、ソート処理回路がデータの入力可能
な状態であることを示すため、制御部21は制御信号i
nputrdyをアクティブにして出力ポート33から
出力する。外部では、この制御信号inputrdyが
アクティブになったことを検出して、ソート処理回路が
ソート処理可能であることを知る。データの入力を開始
する場合には、外部より制御信号pushをアクティブ
にする。
【0041】この例ではサイクルc1において、入力ポ
ート34から入力される制御信号pushがアクティブ
に変化して、データ列の入力が開始される。サイクルc
1からc4にかけて、制御信号pushがアクティブに
なるとともに入力端子31(unsorted)にデー
タ列が1つずつ入力される。この例では、サイクルc1
でキーフィールドの値が“10”のデータが、サイクル
c2でキーフィールドの値が“2”のデータが、サイク
ルc3でキーフィールドの値が“7”のデータが、サイ
クルc4でキーフィールドの値が“5”のデータが、そ
れぞれ入力される。
【0042】サイクルc2で制御部21は、入力ポート
34から入力される制御信号pushがアクティブにな
ったことを検出し、制御信号loadをアクティブにす
るとともに制御信号inputrdyを非アクティブに
し、共通配線38,39を介してそれぞれのソートプロ
セッサ10(0)〜10(3)の入力ポート14,15
に入力する。
【0043】各ソートプロセッサ10(0)〜10
(3)の入力ポート15に入力されている制御信号lo
adがアクティブに変化したことを検出して記憶部4の
更新を行う。このとき、ソートプロセッサ10(0)で
は、入力ポート11にはすべてのビットが0のデータが
入力されているので、この値の方が新たに入力されたデ
ータのキーフィールドの値(“10”)より小さく、比
較部1は偽の判定を行う。また、記憶部4にはすべての
ビットが1のデータが保存されているので、この値の方
が新たに入力されたデータのキーフィールドの値(“1
0”)より大きく、比較部2は真の判定を行う。この2
つの比較結果から、選択部3は入力ポート12から入力
された新たなデータを選択し、記憶部4はこれを保存す
る。また、ソートプロセッサ10(1)〜10(3)で
は、入力ポート11には前段のソートプロセッサからす
べてのビットが1のデータが入力されているので、この
値の方が新たに入力されたデータのキーフィールドの値
(“10”)より大きく、比較部1は真の判定を行う。
そのため選択部3は前段のソートプロセッサに保存され
ていたデータを選択して記憶部4に保存することにな
る。しかし、データそのものはすべてのビットが1のデ
ータであり、変化はない。
【0044】このように、サイクルc2で記憶部4が保
存するデータが変化するのは、第0段目のソートプロセ
ッサ10(0)のみである。ソートプロセッサ10
(0)の記憶部4には、入力ポート31(unsort
ed)に入力された新たなデータ(キーフィールドの値
が“10”のデータ)が新たにセットされる。このた
め、ソート処理回路の出力ポート32(sorted)
にもキーフィールドの値が“10”のデータが現れる
が、この段階ではまだ出力ポート36から出力される制
御信号outputrdyがアクティブになっていない
ために、この値を外部で利用することはできない。
【0045】サイクルc3では、入力ポート31(un
sorted)に入力された新たなデータ(キーフィー
ルドの値が“2”のデータ)についての各ソートプロセ
ッサ10(0)〜10(3)の処理が行われる。ソート
プロセッサ10(0)では、入力ポート11にはすべて
のビットが0のデータが入力されているので、この値は
新たに入力されたデータのキーフィールドの値
(“2”)より小さく、比較部1は偽の判定を行う。ま
た、記憶部4にはキーフィールドの値が“10”のデー
タが保存されているので、この値は新たに入力されたデ
ータのキーフィールドの値(“2”)より大きく、比較
部2は真の判定を行う。この2つの比較結果から、選択
部3は入力ポート12から入力された新たなデータを選
択し、記憶部4はこれを保存する。
【0046】また、ソートプロセッサ10(1)では、
入力ポート11にはソートプロセッサ10(0)の記憶
部4が保持していたキーフィールドの値が“10”のデ
ータが入力されており、この値は新たに入力されたデー
タのキーフィールドの値(“2”)より大きく、比較部
1は真の判定を行う。これにより選択部3は、入力ポー
ト11から入力された、ソートプロセッサ10(0)の
記憶部4に保存されていたデータを選択し、記憶部4は
これを保存する。
【0047】さらに、ソートプロセッサ10(2),1
0(3)では、入力ポート11には前段のソートプロセ
ッサからすべてのビットが1のデータが入力されている
ので、この値は新たに入力されたデータのキーフィール
ドの値(“2”)より大きく、比較部1は真の判定を行
う。そのため選択部3は前段のソートプロセッサに保存
されていたデータを選択して記憶部4に保存することに
なる。しかし、データそのものはすべてのビットが1の
データであり、変化はない。
【0048】このようにして、サイクルc3での各ソー
トプロセッサの処理の結果、ソートプロセッサ10
(0)の記憶部4には入力ポート31(unsorte
d)に入力された新たなデータ(キーフィールドの値が
“2”のデータ)がセットされ、ソートプロセッサ10
(1)の記憶部4には、ソートプロセッサ10(0)の
記憶部4に保持されていたデータ(キーフィールドの値
が“10”のデータ)がセットされる。出力ポート32
(sorted)にはキーフィールドの値が“2”のデ
ータが現れる。
【0049】サイクルc4では、入力ポート31(un
sorted)に入力された新たなデータ(キーフィー
ルドの値が“7”のデータ)についての各ソートプロセ
ッサ10(0)〜10(3)の処理が行われる。ソート
プロセッサ10(0)では、記憶部4にキーフィールド
の値が“2”のデータが保存されているので、この値は
新たに入力されたデータのキーフィールドの値
(“7”)より小さく、比較部2は偽の判定を行う。そ
のため、選択部3は記憶部4に保存されていたデータを
選択し、記憶部4はこれを保存する。すなわち、データ
は変更されない。
【0050】ソートプロセッサ10(1)では、入力ポ
ート11にはソートプロセッサ10(0)の記憶部4に
保存されていたデータ入力されており、そのキーフィー
ルドの値は“2”である。この値は新たに入力されたデ
ータのキーフィールドの値(“7”)より小さく、比較
部1は偽の判定を行う。また、ソートプロセッサ10
(1)の記憶部4にはキーフィールドの値が“10”の
データが保存されているので、この値は新たに入力され
たデータのキーフィールドの値(“7”)より大きく、
比較部2は真の判定を行う。この2つの比較結果から、
選択部3は入力ポート12から入力された新たなデータ
を選択し、記憶部4はこれを保存する。
【0051】ソートプロセッサ10(2)では、入力ポ
ート11にはソートプロセッサ10(1)の記憶部4が
保持していた、キーフィールドの値が“10”のデータ
が入力されている。この値は新たに入力されたデータの
キーフィールドの値(“7”)より大きく、比較部1は
真の判定を行う。これにより選択部3は、入力ポート1
1から入力された、ソートプロセッサ10(1)の記憶
部4に保存されていたデータを選択し、記憶部4はこれ
を保存する。
【0052】さらに、ソートプロセッサ10(3)で
は、入力ポート11にはソートプロセッサ10(2)か
らすべてのビットが1のデータが入力されているので、
この値は新たに入力されたデータのキーフィールドの値
(“7”)より大きく、比較部1は真の判定を行う。そ
のため選択部3は、ソートプロセッサ10(2)に保存
されていたデータを選択して記憶部4に保存することに
なる。しかし、データそのものはすべてのビットが1の
データであり、変化はない。
【0053】このようにして、サイクルc4での各ソー
トプロセッサの処理の結果、ソートプロセッサ10
(1)の記憶部4には入力ポート31(unsorte
d)に入力された新たなデータ(キーフィールドの値が
“7”のデータ)がセットされ、ソートプロセッサ10
(2)の記憶部4には、ソートプロセッサ10(1)の
記憶部4に保持されていたデータ(キーフィールドの値
が“10”のデータ)がセットされる。なお、ソートプ
ロセッサ10(0)の記憶部4のデータは変更されず、
出力ポート32(sorted)にはキーフィールドの
値が“2”のデータが現れる。
【0054】サイクルc5では、入力ポート31(un
sorted)に入力された新たなデータ(キーフィー
ルドの値が“5”のデータ)についての各ソートプロセ
ッサ10(0)〜10(3)の処理が行われる。ソート
プロセッサ10(0)では、記憶部4にキーフィールド
の値が“2”のデータが保存されているので、この値は
新たに入力されたデータのキーフィールドの値
(“5”)より小さく、比較部2は偽の判定を行う。そ
のため、選択部3は記憶部4に保存されていたデータを
選択し、記憶部4はこれを保存する。すなわち、データ
は変更されない。
【0055】ソートプロセッサ10(1)では、入力ポ
ート11にはソートプロセッサ10(0)の記憶部4に
保存されていたデータ入力されており、そのキーフィー
ルドの値は“2”である。この値は新たに入力されたデ
ータのキーフィールドの値(“5”)より小さく、比較
部1は偽の判定を行う。また、ソートプロセッサ10
(1)の記憶部4にはキーフィールドの値が“7”のデ
ータが保存されているので、この値は新たに入力された
データのキーフィールドの値(“5”)より大きく、比
較部2は真の判定を行う。この2つの比較結果から、選
択部3は入力ポート12から入力された新たなデータ
(キーフィールドの値が“5”のデータ)を選択し、記
憶部4はこれを保存する。
【0056】ソートプロセッサ10(2)では、入力ポ
ート11にはソートプロセッサ10(1)の記憶部4が
保持していた、キーフィールドの値が“7”のデータが
入力されている。この値は新たに入力されたデータのキ
ーフィールドの値(“5”)より大きく、比較部1は真
の判定を行う。これにより選択部3は、入力ポート11
から入力された、ソートプロセッサ10(1)の記憶部
4に保存されていたデータ(キーフィールドの値が
“7”のデータ)を選択し、記憶部4はこれを保存す
る。
【0057】さらに、ソートプロセッサ10(3)で
は、入力ポート11にはソートプロセッサ10(2)の
記憶部4が保持していた、キーフィールドの値が“1
0”のデータが入力されている。この値は新たに入力さ
れたデータのキーフィールドの値(“5”)より大き
く、比較部1は真の判定を行う。そのため選択部3は、
ソートプロセッサ10(2)に保存されていたデータ
(キーフィールドの値が“10”のデータ)を選択して
記憶部4に保存することになる。
【0058】このようにして、サイクルc5での各ソー
トプロセッサの処理の結果、ソートプロセッサ10
(1)の記憶部4には入力ポート31(unsorte
d)に入力された新たなデータ(キーフィールドの値が
“5”のデータ)がセットされる。また、ソートプロセ
ッサ10(2)の記憶部4には、ソートプロセッサ10
(1)の記憶部4に保持されていたデータ(キーフィー
ルドの値が“7”のデータ)がセットされ、ソートプロ
セッサ10(3)の記憶部4には、ソートプロセッサ1
0(2)の記憶部4に保持されていたデータ(キーフィ
ールドの値が“10”のデータ)がセットされる。な
お、ソートプロセッサ10(0)の記憶部4のデータは
変更されず、出力ポート32(sorted)にはキー
フィールドの値が“2”のデータが現れる。
【0059】以上のようにして、4つのデータが入力さ
れ、それぞれのデータについて各ソートプロセッサ10
(0)〜10(3)における処理を行った。これによっ
て、各ソートプロセッサ10(0)〜10(3)の記憶
部4には、順に、キーフィールドの値が“2”,
“5”,“7”,“10”のデータが保存される。これ
は、キーフィールドによって昇順にソートした結果であ
る。以降、この順でデータを出力する。
【0060】ソートすべきデータが終了すると、外部よ
り入力ポート34への信号を非アクティブにする。サイ
クルc6において、制御部21は、入力ポート34から
制御信号pushが非アクティブに変化したことを検出
すると、制御信号loadを非アクティブにするととも
に出力ポート36(outputrdy)をアクティブ
にする。制御信号pushは共通配線39を介して各ソ
ートプロセッサ10(0)〜10(3)の入力ポート1
5に通知され、各ソートプロセッサ10(0)〜10
(3)の記憶部4に対する更新は行われなくなり、ソー
トされたデータがそのまま保持された状態となる。ま
た、出力ポート36(outputrdy)をアクティ
ブにすることで、外部に対してソート結果を出力可能で
あることを通知する。この状態で、外部からの読み出し
要求を待つ。このとき出力ポート35(num)には、
現在ソート処理回路内に保持されているソート済みのデ
ータの個数(図3の例では4)が出力されている。
【0061】サイクルc7で外部の演算回路等から、入
力ポート37(pop)がアクティブにセットされる
と、サイクルc8においてこれを制御部21が検出し、
出力処理が開始される。制御部21は、入力ポート37
(pop)がアクティブである間、制御信号loadお
よび制御信号outflagをともにアクティブに保
つ。この制御信号は共通配線39,38を介して各ソー
トプロセッサ10(0)〜10(3)の入力ポート1
5,14に通知される。
【0062】するとソートプロセッサ10(0)〜
(3)は、次段のソートプロセッサの記憶部に保持され
ているデータで自身の記憶部を更新する処理をそれぞれ
並列に実行する。すなわち、ソートプロセッサ10
(0)はソートプロセッサ10(1)の記憶部4に保存
されていたデータ(キーフィールドの値が“5”のデー
タ)を選択して記憶部4に保存する。同様に、ソートプ
ロセッサ10(1)はソートプロセッサ10(2)の記
憶部4に保存されていたデータ(キーフィールドの値が
“7”のデータ)を選択して記憶部4に保存し、ソート
プロセッサ10(2)はソートプロセッサ10(3)の
記憶部4に保存されていたデータ(キーフィールドの値
が“10”のデータ)を選択して記憶部4に保存する。
また、ソートプロセッサ10(3)は、入力ポート13
に入力されている、すべてのビットが1のデータを選択
して記憶部4に保存する。このような各ソートプロセッ
サ10(0)〜(3)の処理によって、各データは前段
のソートプロセッサに移動し、出力ポート32(sor
ted)にはキーフィールドの値が“5”のデータが出
力される。
【0063】同様の動作がサイクルc9、c10におい
ても行われる。サイクルc9では、各ソートプロセッサ
10(0)〜(3)の記憶部4にそれぞれ保存されてい
たデータが前段のソートプロセッサの記憶部4に移動
し、出力ポート32(sorted)にはキーフィール
ドの値が“7”のデータが出力される。さらにサイクル
c10では、各ソートプロセッサ10(0)〜(3)の
記憶部4にそれぞれ保存されていたデータが前段のソー
トプロセッサの記憶部4に移動し、出力ポート32(s
orted)にはキーフィールドの値が“10”のデー
タが出力される。このようにして、ソートされた4つの
データが、サイクルc7〜c10において順に出力ポー
ト32(sorted)に出力されることになる。
【0064】次のサイクルc11でも、各ソートプロセ
ッサ10(0)〜(3)の記憶部4にそれぞれ保存され
ていたデータが前段のソートプロセッサの記憶部4に移
動し、すべてのソートプロセッサ10(0)〜(3)の
記憶部4には、再びすべてのビットが1のデータが保持
された状態となる。制御部21は、出力ポート33(i
nputrdy)をアクティブにして、次のソートすべ
きデータ列が入力されるのを待つ。
【0065】以上のようにして、入力されたデータのキ
ーフィールドの値によってソートを行い、ソートされた
データを出力するまでの一連の処理について、具体例を
用いて説明した。図4,図5ではソートするデータ数に
合わせて4つのソートプロセッサのみを示したが、ソー
トプロセッサの数は、データ数以上であればよい。デー
タ数より多い分のソートプロセッサの記憶部4には、図
4,図5の表記で“∞”が保存されたままとなるのみで
ある。また、データ数よりもソートプロセッサの数が少
ない場合には、複数のデータから、キーフィールドの値
が小さい方からソートプロセッサの数だけのデータが取
り出される。このような使い方もある。
【0066】なお、上述の説明では昇順にソートするソ
ート処理装置に関して説明を行ったが、以下のように変
更を施すことで降順にソートするソート処理装置を構成
することができる。図6は、本発明のソートプロセッサ
の別の実施の形態を示すブロック構成図である。図中の
符号は図1と同様である。図6に示した構成では、比較
部1には入力ポート12および13に入力されたデータ
のうちのキーフィールドの値が入力されるように構成し
ている。そして比較部1では、入力ポート12に入力さ
れるデータのキーフィールドをnew、入力ポート11
に入力されるデータのキーフィールドをlargeとす
ると、new>largeならば比較結果には真(ある
いは1)を、new≦largeならば比較結果には偽
(あるいは0)を出力する。
【0067】比較部2では、入力されるデータ(キーフ
ィールド)は同じである。比較結果は、入力ポート12
に入力されるデータのキーフィールドをnew、記憶部
4に保持されているデータのキーフィールドをregと
すると、new>regのとき比較結果には真(あるい
は1)を、new≦regのとき比較結果には偽(ある
いは0)を出力する。
【0068】選択部3では、入力ポート14から入力さ
れる制御信号outflagがアクティブ(あるいは
1)のときは、入力ポート11に入力されるデータを選
択して出力する。また、制御信号outflagがアク
ティブでない(あるいは0の)ときは、比較部1および
比較部2の比較結果に従う。比較部1の比較結果が真
(あるいは1)のときは、入力ポート13に入力される
データを選択して出力し、比較部2の出力結果が偽(あ
るいは0)のときは、記憶部4に保持されているデータ
を選択して出力し、比較部1の比較結果が偽(あるいは
0)でかつ比較部2の出力結果が真(あるいは1)のと
きは、入力ポート12に入力されるデータを選択して出
力する。
【0069】図7は、本発明のソート処理回路の別の実
施の形態を示すブロック図である。図中の符号は図2と
同様である。この例において、各ソートプロセッサ10
(0)〜(N−1)は図6に示す構成のものを用いる。
また、図2と異なるのは、ソートプロセッサ10(N−
1)の出力を出力ポート32(sorted)に接続
し、ソートプロセッサ10(0)の出力はソートプロセ
ッサ10(1)の入力ポート11にのみ接続している点
である。
【0070】このような変更により、入力される最大N
個のデータ列を降順にソートして出力するソート処理回
路が得られる。以下、具体例を用いて、降順にソートす
る場合について簡単に説明しておく。
【0071】図8、図9は、本発明のソート処理回路の
別の実施の形態における動作の具体例を示す模式図であ
る。図4,図5に示した例と同様に、4個のデータ(キ
ーフィールドの値が10,2,7,5のデータ)からな
るデータ列がソート処理回路へ入力されて、降順にソー
トされ、出力される場合の動作を示している。なお、動
作タイミングは図3に示した昇順の場合と同様であるの
でここでは省略する。また、動作の説明も昇順の場合と
ほぼ同様であるので、ここでは簡単に説明するのみにと
どめる。
【0072】降順にソートするソート処理回路では、初
期化の処理によって、ソートプロセッサ10(0)の入
力ポート11に入力されている、すべてのビットが0の
データ(図8,図9では“0”として示している)が順
に送られ、すべてのソートプロセッサ10(0)〜
(3)の記憶部4に保存される。サイクルc1ではこの
状態を示しており、データの入力を待つ。
【0073】サイクルc2で入力ポート31(unso
rted)に、キーフィールドの値が“10”のデータ
が入力されると、ソートプロセッサ10(3)では、入
力ポート13にすべてのビットが1のデータが入力され
ているので、この値の方が新たに入力されたデータのキ
ーフィールドの値(“10”)より大きく、比較部1は
偽の判定を行う。また、記憶部4にはすべてのビットが
0のデータが保存されており、この値の方が新たに入力
されたデータのキーフィールドの値(“10”)小さい
ので、比較部2は真の判定を行う。この2つの判定結果
により、選択部3は、入力ポート12から入力された新
たなデータを選択し、記憶部4はこれを保存する。ま
た、ソートプロセッサ10(1)〜10(3)では、入
力ポート13には後段のソートプロセッサからすべての
ビットが0のデータが入力されているので、この値の方
が新たに入力されたデータのキーフィールドの値(“1
0”)より小さく、比較部1は真の判定を行う。そのた
め選択部3は後段のソートプロセッサに保存されていた
データを選択して記憶部4に保存することになる。しか
し、データそのものはすべてのビットが1のデータであ
り、変化はない。このようにして、新たに入力されたデ
ータは、ソートプロセッサ10(3)の記憶部4に保存
される。
【0074】以下同様に、新たなデータが入力される度
に各ソートプロセッサ10(0)〜(3)の比較部1及
び比較部2が判定を行い、その結果に従って選択部3が
データを選択して記憶部4に保存する。このような処理
により、サイクルc3では、新たに入力された、キーフ
ィールドの値が“2”のデータがソートプロセッサ10
(2)の記憶部4に記憶される。またサイクルc4で
は、新たに入力された、キーフィールドの値が“7”の
データがソートプロセッサ10(2)の記憶部4に記憶
され、それまでソートプロセッサ10(2)の記憶部4
に記憶されていたデータがソートプロセッサ10(1)
の記憶部4に記憶される。さらにサイクルc5では、新
たに入力された、キーフィールドの値が“5”のデータ
がソートプロセッサ10(1)の記憶部4に記憶され、
それまでソートプロセッサ10(1)の記憶部4に記憶
されていたデータがソートプロセッサ10(0)の記憶
部4に記憶される。
【0075】以上のようにして、4つのデータが入力さ
れ、それぞれのデータについて各ソートプロセッサ10
(0)〜10(3)における処理を行った。これによっ
て、各ソートプロセッサ10(0)〜10(3)の記憶
部4には、順に、キーフィールドの値が“2”,
“5”,“7”,“10”のデータが保存される。これ
は、ソートプロセッサ10(3)を先頭として、キーフ
ィールドによって降順にソートした結果である。以降、
この順でデータを出力する。
【0076】データ出力時には、例えばソートプロセッ
サ10(j)のデータをソートプロセッサ10(j+
1)へ送る動作を、それぞれのソートプロセッサが行
う。これによって図9に示すようにデータが送られ、ソ
ートプロセッサ10(3)の出力ポート16に接続され
る出力ポート32(sorted)から、キーフィール
ドの値が“10”,“7”,“5”,“2”のデータが
順次出力される。
【0077】以上のようにして、入力されたデータのキ
ーフィールドの値によって降順のソートを行い、ソート
されたデータが出力される。図8,図9においても、ソ
ートするデータ数に合わせて4つのソートプロセッサの
みを示したが、ソートプロセッサの数は任意である。
【0078】なお、図2や図7に示したような本発明の
ソート処理回路は、各回路素子を組み合わせて構成する
ほか、ASIC(Application Speci
fic Integrated Circuit)やD
SP(Digital Signal Process
or)などの集積回路内に構成することができる。また
本発明は、例えばFPGA(Field Progra
mmable Gate Array)やCPLD(C
omplex Programmable Logic
Device)などの再構成可能な半導体デバイス上
に実装することができる。これにより、ソート対象のデ
ータ数の上限が変化した場合に、その変化に合わせて動
的に回路構成を変化させることで対応することが可能と
なる。
【0079】
【発明の効果】以上の説明から明らかなように、本発明
によれば、ソート処理に係わるデータの比較および選択
処理を各ソートプロセッサ内で完結するように構成して
いる。このため、ソート対象のデータ数の上限に合わせ
てソートプロセッサ数を変化させても、各ソートプロセ
ッサ間での信号遅延が発生しないため、ソートプロセッ
サの数によってソート処理回路全体の動作速度が影響を
受けることがない。そのため、ソート処理を極めて高速
に実行することができるという効果がある。
【0080】また、すべてのソートプロセッサは同一の
構成であるので、設計が容易であり、また外部に大容量
のメモリなどを備える必要がなく、ASIC等の集積回
路に容易に搭載することが可能である。
【0081】さらに、ソートするデータ以上のソートプ
ロセッサを有していれば、すべてのデータをソートする
ことができる。そのため、ソートプロセッサの個数以内
であればデータ数に依存せず、ソート処理を行うことが
可能である。
【0082】さらに、入力されるデータがソートの対象
となるキーフィールド以外のフィールドを有するデータ
であってもソート処理を行うことができ、複雑なデータ
構造のデータに対してもソート処理を行うことができ
る。
【図面の簡単な説明】
【図1】 本発明のソートプロセッサの実施の一形態を
示すブロック構成図である。
【図2】 本発明のソート処理回路の実施の一形態を示
すブロック図である。
【図3】 本発明のソート処理回路の実施の一形態に対
して、4個のデータが入力された場合の動作の具体例を
示すタイミングチャートである。
【図4】 本発明のソート処理回路の実施の一形態に対
して、4個のデータが入力された場合の各サイクルにお
けるソートプロセッサの記憶部に保持されるデータの変
化を示す模式図である。
【図5】 本発明のソート処理回路の実施の一形態に対
して、4個のデータが入力された場合の各サイクルにお
けるソートプロセッサの記憶部に保持されるデータの変
化を示す模式図(続き)である。
【図6】 本発明のソートプロセッサの別の実施の形態
を示すブロック構成図である。
【図7】 本発明のソート処理回路の別の実施の形態を
示すブロック図である。
【図8】 本発明のソート処理回路の別の実施の形態に
おける動作の具体例を示す模式図である。
【図9】 本発明のソート処理回路の別の実施の形態に
おける動作の具体例を示す模式図(続き)である。
【符号の説明】
1,2…比較部、3…選択部、4…記憶部、5…分離
部、10,10(0)〜10(N−1)…ソートプロセ
ッサ、11〜15…入力ポート、16…出力ポート、2
0…ソート処理回路、21…制御部、31,34,37
…入力ポート、32,33,35,36…出力ポート、
38,39…共通配線。

Claims (8)

    【特許請求の範囲】
  1. 【請求項1】 外部から入力される第1の制御信号に基
    づいてデータを保持する記憶手段と、外部から入力され
    る第1のデータと外部から入力される第2のデータの大
    小関係を比較して結果を出力する第1の比較手段と、外
    部から入力される前記第2のデータと前記記憶手段に保
    持されているデータの大小関係を比較して結果を出力す
    る第2の比較手段と、外部から入力される第2の制御信
    号と前記第1および第2の比較手段から出力される比較
    結果に基づいて外部から入力される第1、第2、第3の
    データあるいは前記記憶手段に保持されているデータの
    いずれか1つを選択して前記記憶手段へ出力する選択手
    段を備えていることを特徴とするソートプロセッサ。
  2. 【請求項2】 前記第1の比較手段は、前記第1のデー
    タが前記第2のデータよりも大きい場合には比較結果を
    真とし、前記第1のデータが前記第2のデータ以下の場
    合には比較結果を偽とするものであり、前記第2の比較
    手段は、前記記憶手段に保持されているデータが前記第
    2のデータよりも大きい場合には比較結果を真とし、前
    記記憶手段に保持されているデータが前記第2のデータ
    以下の場合には比較結果を偽とするものであり、前記選
    択手段は、前記第2の制御信号がアクティブであれば前
    記第3のデータを選択し、前記第2の制御信号がアクテ
    ィブでなければ前記第1及び第2の比較手段の比較結果
    に従い、前記第1の比較手段の比較結果が真ならば前記
    第1のデータを選択し、前記第2の比較手段の比較結果
    が偽ならば前記記憶手段に保持されているデータを選択
    し、いずれの条件も満たされない場合には前記第2のデ
    ータを選択して出力するものであることを特徴とする請
    求項1に記載のソートプロセッサ。
  3. 【請求項3】 前記第1の比較手段は、前記第1のデー
    タが前記第2のデータよりも小さい場合には比較結果を
    真とし、前記第1のデータが前記第2のデータ以上の場
    合には比較結果を偽とするものであり、前記第2の比較
    手段は、前記記憶手段に保持されているデータが前記第
    2のデータよりも小さい場合には比較結果を真とし、前
    記記憶手段に保持されているデータが前記第2のデータ
    以上の場合には比較結果を偽とするものであり、前記選
    択手段は、前記第2の制御信号がアクティブであれば前
    記第3のデータを選択し、前記第2の制御信号がアクテ
    ィブでなければ前記第1及び第2の比較手段の比較結果
    に従い、前記第1の比較手段の比較結果が真ならば前記
    第1のデータを選択し、前記第2の比較手段の比較結果
    が偽ならば前記記憶手段に保持されているデータを選択
    し、いずれの条件も満たされない場合には前記第2のデ
    ータを選択して出力するものであることを特徴とする請
    求項1に記載のソートプロセッサ。
  4. 【請求項4】 前記第1、第2、第3のデータおよび前
    記記憶手段に保持されているデータは、比較の対象とな
    る第1のデータフィールドとそれ以外の第2のデータフ
    ィールドから構成されており、さらに、前記第1のデー
    タ中の第1のデータフィールドを分離して前記第1の比
    較手段に供給し前記第2のデータ中の第1のデータフィ
    ールドを分離して前記第1及び第2の比較手段に供給し
    前記記憶手段に保持されているデータ中の第1のデータ
    フィールドを分離して前記第2の比較手段に供給する分
    離部を有することを特徴とする請求項1ないし請求項3
    のいずれか1項に記載のソートプロセッサ。
  5. 【請求項5】 請求項1ないし請求項4のいずれか1項
    に記載の複数のソートプロセッサと、前記第1および第
    2の制御信号を前記ソートプロセッサに出力し全体の入
    出力を制御する制御部を備え、それぞれの前記ソートプ
    ロセッサは、該ソートプロセッサの前記記憶手段に保持
    されているデータを前段のソートプロセッサの前記第3
    のデータならびに次段のソートプロセッサの前記第1の
    データとするように直列に接続されており、外部から順
    次入力されるデータが前記第2のデータとして与えら
    れ、該データをソートして順次出力することを特徴とす
    るソート処理回路。
  6. 【請求項6】 前記制御部は、外部から入力される前記
    第2のデータの個数を数えるカウンタを備えており、前
    記ソートプロセッサの個数を超えない任意の数のデータ
    を1処理単位としてソート処理が実行されるように制御
    することを特徴とする請求項5に記載のソート処理回
    路。
  7. 【請求項7】 前記制御部は、前記第2のデータが外部
    から入力されている間は前記第1の制御信号をアクティ
    ブにするとともに第2の制御信号を非アクティブにして
    出力し、前記ソートされたデータの出力時には第1およ
    び第2の制御信号をともにアクティブにして出力し、入
    出力が行われていない時は第1および第2の制御信号を
    ともに非アクティブにして出力することを特徴とする請
    求項5または請求項6に記載のソート処理回路。
  8. 【請求項8】 前記制御部及び複数の前記ソートプロセ
    ッサは、回路の再構成が可能な半導体デバイス上に実装
    されており、ソート処理の対象となるデータの個数の最
    大値に合わせて前記ソートプロセッサの数を変更可能に
    構成されていることを特徴とする請求項5ないし請求項
    7のいずれか1項に記載のソート処理回路。
JP11220739A 1999-08-04 1999-08-04 ソートプロセッサ及びソート処理回路 Pending JP2001051827A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP11220739A JP2001051827A (ja) 1999-08-04 1999-08-04 ソートプロセッサ及びソート処理回路

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP11220739A JP2001051827A (ja) 1999-08-04 1999-08-04 ソートプロセッサ及びソート処理回路

Publications (1)

Publication Number Publication Date
JP2001051827A true JP2001051827A (ja) 2001-02-23

Family

ID=16755778

Family Applications (1)

Application Number Title Priority Date Filing Date
JP11220739A Pending JP2001051827A (ja) 1999-08-04 1999-08-04 ソートプロセッサ及びソート処理回路

Country Status (1)

Country Link
JP (1) JP2001051827A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707216B2 (en) * 2002-10-08 2010-04-27 Stmicroelectronics, Inc. Data sorting apparatus with querying mechanism and method of operation

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707216B2 (en) * 2002-10-08 2010-04-27 Stmicroelectronics, Inc. Data sorting apparatus with querying mechanism and method of operation

Similar Documents

Publication Publication Date Title
US7487302B2 (en) Service layer architecture for memory access system and method
US6067615A (en) Reconfigurable processor for executing successive function sequences in a processor operation
JPH0728624A (ja) ソート装置及びソート方法
JP2006099719A (ja) 処理装置
WO2021232422A1 (zh) 神经网络的运算装置及其控制方法
JP2001051827A (ja) ソートプロセッサ及びソート処理回路
US5604842A (en) Fuzzy reasoning processor and method, and rule setting apparatus and method
US6487550B1 (en) Method and apparatus for finding a first element
JP3898992B2 (ja) 信号処理用並列処理論理回路
JP3347592B2 (ja) マージソート処理装置
JPH0581040A (ja) コンピユータシステム
JP3982077B2 (ja) マルチプロセッサシステム
US6687803B1 (en) Processor architecture and a method of processing
JP4158264B2 (ja) ソート・マージ処理装置およびソート・マージ回路
JP3447180B2 (ja) データ演算回路
JPS59148943A (ja) メモリ回路
JPH09128241A (ja) ファジーロジックプロセッサの言語入力値の所属関数値に対する配列方法および装置
JPH04184535A (ja) 並列演算装置
JP3234629B2 (ja) データ駆動型プロセッサ
JP2555171B2 (ja) ビット判定方法
JPH07191955A (ja) データ駆動型情報処理装置
JP2878160B2 (ja) 競合調停装置
EP0803824B1 (en) Data processing system and method therefor
JP2735255B2 (ja) ハツシング処理方法
JPS58146935A (ja) ソ−ト処理装置