JPH1185468A - ソートバッファ - Google Patents

ソートバッファ

Info

Publication number
JPH1185468A
JPH1185468A JP9235597A JP23559797A JPH1185468A JP H1185468 A JPH1185468 A JP H1185468A JP 9235597 A JP9235597 A JP 9235597A JP 23559797 A JP23559797 A JP 23559797A JP H1185468 A JPH1185468 A JP H1185468A
Authority
JP
Japan
Prior art keywords
data
buffer
counter
sort
circuit
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.)
Withdrawn
Application number
JP9235597A
Other languages
English (en)
Inventor
Tetsuo Kanehara
哲夫 兼原
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.)
NEC Engineering Ltd
Original Assignee
NEC Engineering 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 NEC Engineering Ltd filed Critical NEC Engineering Ltd
Priority to JP9235597A priority Critical patent/JPH1185468A/ja
Publication of JPH1185468A publication Critical patent/JPH1185468A/ja
Withdrawn legal-status Critical Current

Links

Landscapes

  • Information Transfer Systems (AREA)

Abstract

(57)【要約】 【課題】 ハードウェア構成のソート処理において、ソ
ート中のバスの使用を可能とし、さらにソートデータ個
数の設定を不要とし、さらに回路規模の低減を可能にす
る。 【解決手段】 バッファ群2、バッファデータラッチ回
路7、コンペア回路9、ラッチデータセレクト回路8を
用い、バッファ制御回路1、カウンタA3、カウンタB
4の制御により、ソート処理をバッファ内で行い、バッ
ファ内のデータをソートする。そして、ソートが完了し
た後に、バッファデータ制御回路6およびバッファ10
を介してバッファ群2内のデータを出力し、その信号を
監視し、バッファ内のデータを連続して読み出す。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、データバッファを
もつ情報処理装置において、データの降順/昇順の並べ
替えを高速に行うソートバッファに関する。
【0002】
【従来の技術】従来のソートバッファには、例えば特開
平2−71327号公報(ソート処理装置)に記載のも
のがある。これは、ソフトウェアで行われてきたソート
処理をハードウェアで行い、ソフトウェアの処理の軽減
を図ったものである。図12は、公報に記載のソートバ
ッファの構成例を示す。
【0003】図12において、主記憶装置21は、命令
語およびオペランドを格納する。バッファ記憶制御装置
22は、要求元の指示に従って主記憶装置21から命令
語およびオペランドを読み出して要求元へ送出したり、
主記憶装置21の所定の場所へ演算結果を格納する。演
算制御装置23は、命令制御装置24の指示に従って所
定の演算を行う。命令制御装置24は、主記憶装置21
から命令語を読み出して解読し、演算制御装置23また
はソート処理装置25に演算の実行を指示する。ソート
処理装置25は、命令制御装置24からの指示によりソ
ートを行う。
【0004】このような構成において、ソート処理は以
下のように行われる。バッファ記憶制御装置22に主記
憶装置21から読み出した命令語を命令制御装置24で
解読し、ソート命令であればソート処理装置25に通知
する。ここで、ソートすべきデータの格納場所とソート
済みデータの格納場所は、いずれも主記憶装置21内の
メモリ上にとる。ソート処理の実行は命令制御装置24
の制御に基づいて行い、メモリ上に連続して配置されて
いるソートすべきデータを順次読み出す。また、命令制
御装置24は、ソートすべきデータの個数と昇順または
降順の指示をソート処理装置25に通知し、ソート処理
を実行する。
【0005】
【発明が解決しようとする課題】図12に示す従来のハ
ードウェア構成のソート処理では、メモリよりデータを
読み出し、ソートを行い、ソートが終了したデータより
順次メモリに書き込む処理を行っていた。このような処
理により、頻繁にメモリにデータが書き込まれるために
バスが頻繁に使用され、システム全体の性能を落とす要
因になっていた。
【0006】さらに、バスの状態を監視せずに、ソート
が終了したデータを順次出力しているので、データ保護
のためにデータソート中はバスの使用ができなかった
り、または接続されるバスが専用バスになっていた。
【0007】また、従来のハードウェア構成のソート処
理は、ソートするデータの個数を予め与えてやる必要が
あった。
【0008】本発明は、このような従来の問題点を解決
するものであり、ハードウェア構成のソート処理におい
て、ソート中のバスの使用を可能とし、さらにソートデ
ータ個数の設定を不要とし、さらに回路規模の低減を可
能にするソートバッファを提供することを目的とする。
【0009】
【課題を解決するための手段】本発明のソートバッファ
は、データを格納するバッファ群と、バッファ群のライ
ト/リード時のデータ数をカウントし、バッファ群のデ
ータソート時にソート制御に用いるカウント値を出力す
るカウンタAと、バッファ群のデータソート時にソート
制御に用いるカウント値を出力するカウンタBと、バッ
ファ群のデータソート時にバッファ群へのデータライト
数を記憶するカウンタAラッチ回路と、バッファ群のデ
ータをセレクトし、リードデータまたはデータソートの
ためのコンペアデータを出力するバッファデータ制御回
路と、バッファデータ制御回路を介してバッファ群から
出力されたデータのうち、カウンタBのカウント値に対
応するj番目のバッファのデータとj+1番目のバッフ
ァのデータをラッチするバッファデータラッチ回路と、
バッファデータラッチ回路にラッチれたデータを比較
し、外部から指定されたソート方向に応じたデータ入れ
替えの有無を判定し、カウンタBをカウントアップさせ
るコンペア回路と、コンペア回路の判定によりデータの
入れ替えが生じたときに、j番目およびj+1番目のバ
ッファのデータの順番を入れ替えて出力するラッチデー
タセレクト回路と、コンペア回路の判定によりデータの
入れ替えが生じたときに、ラッチデータセレクト回路か
ら順次出力されたj+1番目およびj番目のバッファの
データをj番目およびj+1番目のバッファに書き込む
データ入れ替えを制御し、さらに逐次カウントアップす
るカウンタBとカウンタAのカウント値が一致するまで
以上の制御を繰り返し、カウント値が一致したときにカ
ウンタAをカウントダウンしカウンタBをリセットして
以上の制御を繰り返し、カウンタAのカウント値が
‘0’になったときにソートを完了し、カウンタAのカ
ウント値をカウンタAラッチ回路に記憶された値までカ
ウントアップしながら、各カウント値に対応するバッフ
ァ群のデータをバッファデータ制御回路を介して読み出
す制御を行うバッファ制御回路と、バッファ制御回路の
制御により、バッファデータ制御回路から出力されたリ
ードデータの出力制御を行うバッファとを備える。
【0010】このように、本発明のソートバッファで
は、ソート処理をバッファ内で行い、バッファ内のデー
タをソートする。そして、ソートが完了した後にバッフ
ァ内のデータを出力し、その信号を監視し、バッファ内
のデータを連続して読み出す(メモリに書き込む)こと
を可能にする。これにより、従来頻繁に行っていたメモ
リへの書き込みを一括して行うことができる。
【0011】また、本発明のソートバッファでは、ソー
ト中はバッファ内でソートしてバスにアクセスしないの
で、ソート中のバスの使用を可能にすることができる。
そして、バッファのデータ読み出しが可能となったとき
に、バスの監視手段(例えばアービタなど)がバスの空
き状態を確認し、バッファからのデータ読み出しを可能
にする。すなわち、バスの占有時間を短くすることがで
きる。
【0012】また、本発明のソートバッファでは、バッ
ファに書き込むデータ数をカウントし、ソートスタート
信号をアクティブにしてソートスタートさせることによ
り、ソートデータ個数を設定しなくてもよい。さらに、
カウント値をソートスタート時にラッチし、カウンタに
ライトデータ数カウント、ソート制御、データリード数
カウント、バッファ制御の複数の役割をもたせることに
より、回路削減が可能となる。
【0013】また、従来技術として示した公報のソート
処理装置では、同じ深さの2組のバッファをソートすべ
きデータの読出し用バッファおよび退避用バッファとし
て交互に使用してソートを行っていた。それに対して、
本発明のソートバッファでは、1組のバッファを使用し
てソートを行う構成であり、バッファ数およびバッファ
を制御するカウンタ数を半減させることができる。
【0014】
【発明の実施の形態】本発明の実施例について以下に説
明する。
【0015】図1は、実施例の全体構成を示すブロック
図である。
【0016】図1において、バッファ制御回路1は、バ
ッファ群2の制御、カウンタA3の制御、ソート制御、
リード可能信号(READ POS)作成、およびバッ
ファ群2の状態を示す信号(BUF FULL/EMP
TY)を生成する。バッファ群2は、ソートデータを格
納する。カウンタA3は、バッファ群2のライトデータ
数のカウント、バッファリードデータ数のカウント、バ
ッファデータソート時にソートの制御、およびバッファ
群2の制御に用いるカウント値を出力する。カウンタB
4は、バッファ群2のデータソート時にバッファ群2の
制御に用いるカウント値を出力する。カウンタAラッチ
回路5は、バッファ群2のデータソート時にバッファ群
2へのデータライト数を記憶する。バッファデータ制御
回路6は、バッファ制御回路1の制御によりバッファ群
2のデータをセレクトし、リードデータおよびコンペア
データを出力する。バッファデータラッチ回路7は、コ
ンペアデータをラッチする。ラッチデータセレクト回路
8は、コンペア結果によるデータ入れ替え時にバッファ
にライトするデータを出力する。コンペア回路9は、デ
ータを比較し、その結果をバッファ制御回路1に通知
し、カウンタB4を制御する。バッファ10は、リード
データの出力制御を行う。
【0017】ここで、図1中の各信号について説明す
る。
【0018】「DATA BUS」は、バッファ制御回
路1にライトデータを入力し、バッファ10からリード
データを出力するデータバスである。
【0019】「DATA WRITE0」は、バッファ
制御回路1に入力されるデータライト信号である。通常
は‘1’であり、データライト時に‘0’から‘1’の
立ち上がりでDATA BUSの値をバッファ群2に書
き込む。ただし、BUF FULL1=‘1’のとき、
SORT EN1=‘1’のとき、READ POS1
=‘1’のときは無効である。
【0020】「DATA READ0」は、バッファ制
御回路1に入力されるデータリード信号である。通常は
‘1’であり、データリード時に‘0’にすることによ
り、DATA BUSにバッファ群2の値を出力する。
データは、DATA READ0の立ち上がり後1クロ
ック分確定している(ホールド確保)。ただし、REA
D POS1=‘1’のときは無効である。
【0021】「CNTAD」は、カウンタA3のカウン
ト値であり、バッファ制御回路1およびカウンタAラッ
チ回路5に入力される。
【0022】「CNTBD」は、カウンタB4のカウン
ト値であり、バッファ制御回路1に入力される。
【0023】「W DATA」は、バッファ制御回路1
からバッファ群2に出力されるライトデータ信号であ
る。SORT EN1=‘0’のときにDATA BU
Sの値を出力し、SORT EN1=‘1’のときにラ
ッチデータセレクト回路8から出力されたS LAT
DATAを出力する。
【0024】「W BUF」は、バッファ制御回路1か
らバッファ群2の各レジスタ個々に出力されるライト信
号である。SORT EN1=‘0’のときに、DAT
AWRITE0をCNTADの示すレジスタに対して出
力し、SORT EN1=‘1’のときに、コンペア回
路9から出力されるEX WRITE0をCNTBDの
示すレジスタに対して出力する。
【0025】「BUF DIR1」は、バッファ制御回
路1からバッファ10に出力されるイネーブル信号であ
る。‘1’でバッファ10をイネーブルする。READ
POS1=‘1’のときに、DATA READ0=
‘0’になったら‘1’を出力し、DATA READ
0=‘1’になった1クロック後に‘0’を出力する。
【0026】「DATA SEL」は、バッファ制御回
路1からバッファデータ制御回路6に出力され、バッフ
ァデータ制御回路6がバッファ群2の各レジスタの出力
をセレクトする信号である。SORT EN1=‘0’
のときにCNTADを出力し、SORT EN1=
‘1’のときにCNTBDを出力する。
【0027】「C LATCH0」は、バッファ制御回
路1からバッファデータラッチ回路7およびコンペア回
路9に出力されるスタート信号である。
【0028】「READ POS1」は、バッファ制御
回路1から出力されるリード可能信号である。‘1’の
ときにバッファ群2のデータリードが可能になり、
‘0’のときはデータリード不可である。
【0029】「BUF FULL1」は、バッファ制御
回路1から出力され、バッファ群2に空きがないことを
示す信号である。本実施形態では、4バイトライト時に
‘1’となる。
【0030】「BUF EMPTY1」は、バッファ制
御回路1から出力され、バッファ群2に有効データがな
いことを示す信号である。有効データがないときに
‘1’となる。
【0031】「CNTA UP0」は、バッファ制御回
路1からカウンタA3に出力される制御信号である。カ
ウントアップするときは‘0’、カウントダウンすると
きは‘1’を出力する。SORT EN1=‘0’のと
きは‘0’に固定であり、SORT EN1=‘1’の
ときはCNTA EN0の反転を出力する。
【0032】「CNTA EN0」は、バッファ制御回
路1からカウンタA3およびカウンタB4に出力される
制御信号である。カウンタA3は、この信号がイネーブ
ル‘0’のときのクロックの立ち上がりで、CNTA
UP0=‘0’のときにカウントアップし、CNTA
UP0=‘1’のときにカウントダウンする。カウンタ
B4は、この信号がイネーブル‘0’のときのクロック
の立ち上がりでリセットされる。
【0033】「CNT RST0」は、バッファ制御回
路1からカウンタA3およびカウンタB4に出力される
リセット信号である。この信号が‘0’のときのクロッ
クの立ち上がりでリセットされる。
【0034】「CNTA LAT0」は、バッファ制御
回路1からカウンタAラッチ回路5に出力されるカウン
タA3の値をラッチする信号である。この信号が‘0’
のときのクロックの立ち上がりで、カウンタAラッチ回
路5はCNTADをラッチする。
【0035】「CNTA LATD」は、カウンタAラ
ッチ回路5にラッチされている値をバッファ制御回路1
に出力する信号である。カウンタAラッチ回路5は、バ
ッファ群2のデータリード時にエンプティ検出のために
カウンタA3の値CNTADをラッチしている。
【0036】「BUF DATA」は、バッファ群2か
らバッファデータ制御回路6に出力される各レジスタの
データである。
【0037】「C LAT DATA」は、バッファ群
2から出力されたデータをDATASELに応じてセレ
クトした信号であり、バッファデータ制御回路6からバ
ッファデータラッチ回路7およびバッファ10に出力さ
れる。バッファデータラッチ回路7には、BUFxのデ
ータとBUFx+1のデータが出力される。
【0038】「LAT1 DATA」および「LAT2
DATA」は、バッファデータラッチ回路7内のレジ
スタのデータであり、C LATCH0によってラッチ
データセレクト回路8およびコンペア回路9に出力され
る。
【0039】「LATCH SEL0」は、コンペア回
路9からラッチデータセレクト回路8に出力されるセレ
クト信号である。バッファデータの入れ替え時に、ラッ
チデータセレクト回路8の出力を制御する。
【0040】「S LAT DATA」は、ラッチデー
タセレクト回路8に入力されたLAT1 DATAおよ
びLAT2 DATAのうち、LATCH SEL0に
よってセレクトされたデータであり、バッファ制御回路
1に出力される。バッファデータの入れ替え時に使用さ
れる。
【0041】「EX WRITE0」は、バッファデー
タ入れ替え時に、コンペア回路9からバッファ制御回路
1に2回出力されるライト信号である。
【0042】「COMP RDY0」は、コンペア回路
9でデータコンペアが終了したことを‘0’で知らせる
信号であり、バッファ制御回路1に出力される。
【0043】「CNTB EN0」は、コンペア回路9
から出力されるカウンタB4のイネーブル信号である。
‘0’のときのクロックの立ち上がりでカウンタB4は
カウントアップする。
【0044】「SORT START1」は、バッファ
制御回路1に対してソートスタートを指示する信号であ
る。‘0’から‘1’への立ち上がりでソートスタート
となる。ただし、バッファにデータが2バイト以上ライ
トされているときに有効となる。
【0045】「SORT UP0」は、バッファ制御回
路1に対してソート方向を設定する信号である。‘0’
のときに昇順、‘1’のときに降順を設定する。
【0046】以下は、図1に示されない内部信号であ
る。
【0047】「EX FLAG1」は、バッファ制御回
路1の内部信号である。データの入れ替えが発生したと
き(EX WRITE0=‘0’のとき)に、‘1’に
セットされる。
【0048】「SORT EN1」は、バッファ制御回
路1の内部信号である。ソート中に‘1’にセットさ
れ、ソート終了後に‘0’にリセットされる(後述する
図5のステートマシンにおけるソートステート501の
ときに‘1’になる)。
【0049】「COMPARE EN1」は、コンペア
回路9の内部信号である。コンペア中に‘1’にセット
される。
【0050】「EXCHANGE1」は、コンペア回路
9の内部信号である。コンペアにおいてデータの入れ替
えが必要なときに‘1’にセットされる。COMP R
DYO=‘0’のときのクロックの立ち上がりでリセッ
トされる。
【0051】本実施例では、図5に示すように、大まか
に4つのステートに分けることによって、制御を簡略し
ている。アイドルステート501からライトステート5
02へは、データライトすることによって遷移する。ラ
イトステート502からソートステート503へは、ソ
ートスタートがアクティブ(SORT START1=
‘1’)、かつデータライト数が2以上(CNTA L
ATD≠‘0’)で遷移する。ライトステート502か
らリードステート504へは、ソートスタートがアクテ
ィブ(SORT START1=‘1’)、かつデータ
ライト数が1バイトの時(CNTA LATD=
‘0’)に遷移する。ソートステート503からリード
ステート504へは、ソート終了(READ POS1
=‘1’)により遷移する。リードステート504から
アイドルステート501へは、BUFEMPTY1=
‘1’により遷移する。
【0052】以下、本実施例の動作について、図2〜4
のフローチャートおよび図6〜11のタイミングチャー
トを参照して説明する。なお、タイミングチャート内の
数字は、表1のマトリックス表に対応し、各タイミング
での各レジスタの値を示している。また、表中の‘X’
は、初期値または無効値である。
【0053】本実施例では、バッファ数は4バイト(4
バイトのデータライトでBUF FULL)、ライトデ
ータは、‘3’,‘2’,‘4’,‘1’の順で書き込
み、ソート方向は昇順(SORT UP0=‘0’)で
行うものとする。ここで、BUF0とは、バッファ群2
を構成するレジスタのうち、カウンタ(A/B共通)の
値‘0’に対応するレジスタである。一般化すると、B
UFxとは、カウント値xに対応する。本回路はすべ
て、クロックの立ち上がりに同期している。
【0054】まず、ソートデータの書き込み動作につい
て説明する。対応するフローチャートは図2の201〜
207、タイミングチャートは図6である。
【0055】バッファ制御回路1に1バイト目のデータ
‘3’が入力されると、カウンタA3の値CNTADが
‘0’のため、バッファ群2のBUF0にDATA W
RITE0の立ち上がりでデータ書き込み(201)を
行う。このとき、バッファ制御回路1からバッファ群2
に出力されるW DATAには、データバスの値が出力
されている。同時に、バッファ制御回路1は、カウンタ
A3をカウントアップさせるためのCNTA EN0を
1クロック生成し出力する。このときカウンタA3はカ
ウントアップなので、バッファ制御回路1はカウンタA
3に対してCNTA UP0として‘0’を出力する。
カウンタA3は、CNTA EN0=0時のクロックの
立ち上がりでカウントアップ(202)する。カウンタ
A3のカウントアップによって、バッファ制御回路1か
ら出力されるBUF EMPTY1は‘0’にリセット
(203)される。
【0056】バッファ制御回路2に2バイト目のデータ
‘2’が入力されると、1バイト目と同様にバッファに
書き込み(201)、カウンタA3をカウントアップ
(202)する。3バイト目のデータ‘4’、4バイト
目のデータ‘1’の書き込み(201)についても同様
である。ただし、4バイト目の書き込み時に、カウンタ
A3の値が‘3’から‘0’に変化(204)すると、
バッファ制御回路1は、‘1’にセットしたBUF F
ULL1を生成(206)する。BUF FULL1が
セットされると、バッファ制御回路1はDATA WR
ITE0を無効(207)にする。これにより、バッフ
ァ群2へのデータ書き込みを不可にし、データ上書きに
よるバッファ内のデータが破壊されるのを防ぐ。また、
BUF EMPTY時はデータがないので、SORT
START1をアクティブにしてもソートスタートとは
ならない。それは、図5のステートマシンで、BUF
EMPTY時はアイドルステート501にあるため、ス
テートが遷移しない。
【0057】次に、ソートスタートの動作について説明
する。対応するフローチャートは図2の208〜21
3、タイミングチャートは図7である。
【0058】ソート方向を設定(208)し、SORT
START1を‘0’から‘1’にすることにより
(209)、バッファ制御回路1内でSORT EN1
を‘1’にセットする。このセットにより、DATA
READ0およびDATA WRITE0は無効(21
0)となる。そして、バッファ制御回路1は、まずカウ
ンタA3をカウントダウンするために、CNTA EN
0を1クロック生成する。これは、データ書き込み後に
カウンタA3をカウントアップしているので、カウンタ
数がバッファ群に書き込みされているデータより1つ多
くなっているためである。また、カウントダウンなので
CNTA UP0は‘1’を出力する。この制御は単純
に、SORT EN1=‘1’時は、CNTA EN0
の反転を出力する(ソート時はカウンタAは、カウント
ダウンのみ使用)。そして、CNTA EN0=‘0’
時のクロックの立ち上がりで、カウンタA3はカウント
ダウン(211)する。
【0059】カウンタA3がカウントダウン後に、バッ
ファ制御回路1は、カウンタA3の値をラッチするため
のCNTA LAT0を1クロック分、カウンタAラッ
チ回路5に出力する。この信号でカウンタAラッチ回路
5は、カウンタA3の値CNTADをラッチ(212)
する。このとき、CNTADが‘0’の時(213のフ
ローでYes)、すなわちバッファ群2に書き込まれた
データが1バイトの時はソートする必要がないので、バ
ッファ制御回路1は、READ POS1を‘1’にセ
ット(図3、317)し、内部信号のSORT EN1
を‘0’にリセット(図3、318)し、バッファデー
タの読み出し可能およびソート完了を通知する。この制
御により、余計な処理をするのを防ぐ。詳しくは後述す
る。
【0060】ソート方向設定は、SORT UP0にて
行う(208)。この設定はSORT START1を
アクティブにする前ならいつでもよい。それは、コンペ
ア回路9内は、ソートがスタートしたときに、その時の
SORT UP0のレベルをラッチし、データのコンペ
アを行うためである。
【0061】次に、ソート処理の動作について説明す
る。対応するフローチャートは図3の301〜315、
タイミングチャートは図8である。
【0062】バッファ制御回路1は、C LATCH0
(コンペアスタート信号としても使用)を1クロック出
力し、ソート処理に入る。C LATCH0が出力され
ると、バッファデータラッチ回路7は、バッファデータ
制御回路6から出力されているデータをクロックの立ち
上がりでラッチする(301)。このとき、バッファ制
御回路1からバッファデータ制御回路6へ出力されるD
ATA SELは、SORT EN1=‘0’時にカウ
ンタA3のカウント値CNTADを出力し、SORT
EN1=‘1’時にカウンタB4のカウント値CNTB
Dを出力する。同時に、コンペア回路9では、内部信号
COMPARE EN1を‘1’にセットし、コンペア
イネーブルとする。
【0063】コンペア回路9では、バッファデータラッ
チ回路7にラッチされたLAT1DATA(=‘3’)
とLAT2 DATA(=‘2’)を比較(304)す
る。本実施例では昇順ソートであり、LAT1 DAT
Aの方が大きいため、次のクロックでデータ入れ替え信
号EXCHANGE1を‘1’にセットする。EXCH
ANGE1=‘1’になると、コンペア回路9は、デー
タの入れ替えが生じたと判断し、次のクロックでEX
WRITE0を1クロック分‘0’出力する。これを受
けてバッファ制御回路1では、カウンタB4のカウント
値CNTBDに対応したバッファ群2に対し、EX W
RITE0をW DATAに出力する(この場合、BU
F0に対しEX WRITE0を出力する)。この信号
の立ち上がりでW BUF値をBUF0に書き込む(3
05)。W BUFには、ラッチデータセレクト回路8
からのS LAT DATAが出力されている。すなわ
ち、SORT EN1=‘0’時はDATA BUSの
データが出力され、SORT EN1=‘1’時はS
LAT DATAが出力される。S LAT DATA
には、LAT SEL0=‘1’なので、LAT2 D
ATAが出力されている。これは、BUF1に書き込ま
れていたデータである。
【0064】同時に、EX WRITE0=‘0’の時
のクロックの立ち上がりで、S LAT DATAにL
AT1 DATAを出力するためにLAT SEL0は
‘0’となり、バッファ制御回路1の内部信号EX F
LAG1は‘1’にセット(307)される。すなわ
ち、データの入れ替えが発生したとき‘1’となる。さ
らに、カウンタB4をカウントアップするためのCNT
B EN0を1クロック分イネーブルにする。これは、
LAT1 DATA値をバッファに書き込むためと、次
のコンペアのための準備である。このときCNTB E
N0の出力される条件として、LAT SEL0=
‘1’が条件である。これは、次のEX WRITE0
=‘0’の条件で、CNTB EN0を出力させないた
めである。
【0065】カウンタB4は、CNTB EN0=
‘0’時のクロックの立ち上がりで、カウントアップ
(307)する。同時に、EX WRITE0の2回目
のライト信号‘0’を1クロック出力する。1回目のE
X WRITE0の出力時と同様に、バッファ制御回路
1では、カウンタB4のカウント値CNTBDに対応す
るBUF1に対し、EX WRITE0をW BUFに
出力し、W BUFの立ち上がりでW DATAを書き
込む(308)する。このときのW DATAには、L
AT1 DATAが出力されている。この段階で、BU
F0とBUF1とのデータの入れ替えが完了したことに
なる。
【0066】コンペア回路9では、2回目のEX WR
ITE0=‘0’時のクロックの立ち上がりで(1回
目、2回目の判断は、LATCH SEL0=‘1’時
のEXWRITE0=‘0’が1回目、LATCH S
EL0=‘0’時のEX WRITE0=‘0’が2回
目と判断している)、COMPARE EN1を‘0’
にクリア(コンペア完了)し、バッファ制御回路1へC
OMPARE RDY0信号を出力する。COMPAR
E RDY0=‘0’時のクロックの立ち上がりで、E
XCHANGE1を‘0’にクリアし、LATCH S
EL0を‘1’にセットする(コンペアの後処理)。
【0067】COMPARE RDY0を受けて、バッ
ファ制御回路1では、カウンタA3のカウント値CNT
AD(i)とカウンタB4のカウント値CNTBD
(j)を比較(310)する。この時点で、CNTAD
=‘3’、CNTBD=‘1’であるので、次のソート
データコンペアスタートのためのC LATCH0を出
力する。なお、両カウント値が等しい場合の動作は後述
する。
【0068】前回のコンペア処理と同様に、C LAT
CH0=‘0’時のクロックの立ち上がりで、バッファ
データラッチ回路7では、LAT1 DATAにBUF
1の値‘3’をラッチし、LAT2 DATAにBUF
2に値‘4’をラッチ(301)し、コンペア回路9で
は、COMPARE EN1を‘1’にセットする。コ
ンペア処理も前回と同様に行う。今回のコンペアデータ
は、LAT1 DATA=‘3’、LAT2 DATA
=‘4’であるため、昇順ではデータ入れ替えの必要は
ない(304)。よって、EXCHANGE1もセット
されない。EXCHANGE1がセットされないと、E
X WRITE0も発生しないため、前回のCNT E
N0の発生条件では、今回CNT EN0は発生しな
い。そこで、CMPARE EN1=‘1’後にEXC
HANGE1をクロックで2回サンプルし、2回とも
‘0’をサンプルした場合にデータ入れ替え必要なしと
判断し、CNTB EN0を1クロック出力する。カウ
ンタB4では、これを受けてクロックの立ち上がりで、
カウントアップ(309)する。同時にCOMPARE
EN1を‘0’にクリアし、COMPARE RDY
0を出力する。データ入れ替えが必要がないときは、無
駄な処理を省き、コンペア処理を終わらせることで、ソ
ート処理の高速化を図る。
【0069】COMPARE RDY0を受けて、バッ
ファ制御回路1では、前回と同様にCNTAD(=
‘3’)とCNTBD(=‘2’)を比較(310)
し、両者が等しくないため、C LATCH0を出力し
てコンペア処理に入る。今回のコンペアデータはLAT
1 DATA=‘4’、LAT2 DATA=‘1’の
ため、1回目のコンペア処理と同様にデータを入れ替え
る処理を行う。そして、コンペア処理が終わったことを
知らせるCOMPARE RDY0を出力する。
【0070】今回、COMPARE RDY0=‘0’
時、CNTAD(=‘3’)、CNTBD(=‘3’)
を比較(310)した結果、両者が等しいためC LA
TCH0を出力せず、カウンタA3をカウントダウンす
るためにCNTA EN0=‘0’、CNTA UP0
=‘1’を1クロック出力する。このときEX FLA
G1を監視し、この信号が‘1’の時はCNTA EN
0を出力してデータ入れ替えを行う。一方、‘0’の時
は、途中でソートが終了したときでありCNTRST0
を出力する(詳細は後述する)。CNTA EN=
‘0’を受けてカウンタA3では、クロックの立ち上が
りでカウントダウン(313)し、カウンタB4はリセ
ット(314)される。
【0071】同時に、EX FLAG1は、CNTA
EN0=‘0’時のクロックの立ち上がりで‘0’にリ
セット(312)する。そして、EX FLAG1が
‘1’から‘0’とサンプルされたときにCNTADを
サンプル(315)し、ソートを終了する。一方、
‘0’をサンプルしなかったときは、再びC LATC
H0を出力する。
【0072】この後の処理は、今までに説明したことと
同様にコンペア処理、データ入れ替え処理を行う。対応
するフローチャートは図3の317〜319、タイミン
グチャートは図9である。
【0073】EX FLAG1が‘1’から‘0’とサ
ンプルされ、そのときCNTAD=‘0’をサンプル
(315)したときにソート終了となる。CNTAD=
‘0’サンプルしたクロックの立ち上がりで、READ
POS1を‘1’にセット(317)し、ソートが終
了してリード可能となったことを知らせる。次のクロッ
クで、SORT EN1を‘0’にリセット(318)
する。実際にDATAREAD0が有効となるのは、R
EAD POS1=‘1’かつSORT EN1=
‘0’の時である(319)。
【0074】次に、ソートデータの読み出し処理につい
て説明する。対応するフローチャートは図4、タイミン
グチャートは図10である。
【0075】DATA READ0=‘0’(401)
となると、バッファ制御回路1は、BUF DIR1を
イネーブルする。これによりバッファ10がイネーブル
になると、DATA BUSにC LAT DATAが
出力される。
【0076】C LAT DATAへは、DATA S
ELによりセレクトされたバッファ群2の値が出力され
ている。このデータリードではBUF0の‘1’が出力
されている。また、DATA SELにはCNTADが
出力されている。そしてDATA READ=‘1’と
なると、カウンタA3をカウントアップするため、CN
TA EN0を1クロック分‘0’出力する。CNTA
EN0=‘0’の時のクロックの立ち上がりで、カウ
ンタA3がカウントアップ(404)し、BUF DI
R1が‘0’にクリアされ、バッファ10がディセーブ
ルとなる。なお、DATA READ0の立ち上がりか
ら、1クロック分遅らせているのはホールド確保のため
である。BUF DIR1が‘0’にクリアされると、
BUFFULL1も‘0’にクリア(403)される。
2バイト目、3バイト目も同様に処理される。
【0077】4バイト目のデータリード時、DATA
READ0の立ち上がり段階で、ソートはじめにラッチ
したCNTA LATDと、CNTADとを比較(40
2)する(DATA READ0の立ち上がりで随時比
較している)。そして、両者が等しい場合にCNTA
EN0は出力せず、カウンタA3およびカウンタB4を
リセットするためのCNT RST0を1クロック分出
力する。CNT RST0=‘0’時のクロックの立ち
上がりで、カウンタA3およびカウンタB4はリセット
(407)され、BUF EMPTY1を‘1’にセッ
ト(406)する。BUF EMPTY1が‘0’から
‘1’にサンプルされたクロックの立ち上がりで、RE
AD POS1を‘0’にクリア(406)する。この
信号が‘0’クリアされると、データリード不可(無
効)となる。また、READ POS1=‘0’によ
り、DATA WRITE0の信号も有効(408)と
なる。
【0078】以上が本実施例におけるデータ書き込み、
ソート、データ読み出しの一連の説明である。
【0079】また本実施例では、ソート時間をより高速
にするために、ソートが途中で終了した場合、ソート途
中でもソート処理を終了させ、READ POS1を
‘1’にセットし、データリード可能とするように工夫
されている。基本的な処理は前述の例と同じである。こ
こでは、前述の例と異なる点を中心に説明する。対応す
るフローチャートは図3、タイミングチャートは図11
である。
【0080】ソートデータとして、‘2’、‘1’、
‘4’、‘3’の順でライトされたとする。またソート
方向は昇順でソートするものとする。ソートスタートさ
れると、最初のコンペア処理を実行する。
【0081】LAT1 DATAに‘2’、LAT2
DATAに‘1’をラッチ(201)する。コンペア結
果(304)によりバッファ内のデータは入れ替えられ
る(305〜308)。このとき、データの入れ替えが
行われたので、EX FLAG1が‘1’にセット(3
06)される。次のコンペア処理で、‘2’と‘4’が
コンペア(304)され、データの入れ替えは行われな
い。次に‘4’と‘3’がコンペア(304)され、入
れ替え処理が実行される。ここで、CNTAD=CNT
BD(310)となったので、カウンタA3がカウント
ダウン(313)され、カウンタB4はリセット(31
4)される。EX FLAG1もリセット(312)さ
れる。CNTADが‘0’(315)でないので、コン
ペアスタートとなる。
【0082】まず、‘1’と‘2’がコンペア(30
4)され、データの入れ替えは行われない。次に
‘2’、‘3’がコンペア(304)され、これもデー
タの入れ替えは行われない。ここで通常なら、バッファ
制御回路1は、COMPARE RDY0を受けたと
き、CNTAD=CNTBD(310)なので、カウン
タA3をカウントダウンするためにCNTA EN0を
出力する。しかし、EX FLAG1が‘0’(31
1)(データの入れ替えが行われていない)なので、ソ
ートが終了したと判断し、カウンタA3およびカウンタ
B4をリセットする信号CNT RST0を出力する。
この信号を受けカウンタA3およびカウンタB4では、
クロックの立ち上がりでリセット(316)する。そし
て、つぎのクロックでリード可能にするREAD PO
S1をセット(317)し、その次のクロックでSOR
T EN1をリセット(318)する。
【0083】このように、本処理によってソートが途中
で完了した時点で、リード可能とし、無駄な処理を削る
ことで、より一層ソートを高速にする。
【0084】本実施例では、説明の簡略化のために、バ
ッファ群2のレジスタの数を4バイトで説明したが、レ
ジスタの数を増やすことによって、ソートデータ数を増
やすことができる。またデータ数は、BUF FULL
までライトしなくてもソート可能である。
【0085】
【発明の効果】以上説明したように、本発明では、1組
のバッファでソートを行うことにより、バッファを制御
するカウンタとともに回路数を削減できる。さらに、そ
のバッファ内でソートを行い、ソートが終了しデータリ
ードが可能となったことを知らせることによって、バッ
ファ内のデータを連続で読み出すことができる。しかも
バスの状態により、バスが空いている時を利用してデー
タを読み出すことができ、従来技術の欠点を克服するこ
とができる。
【0086】また、ライトデータ数をカウントし、ソー
トスタートさせる信号をイネーブルにし、ソートをスタ
ートさせる方式をとったことにより、ソートデータ数を
設定しなくてもよい。さらに、カウント値をソートスタ
ート時にラッチし、カウンタを、ライトデータ数カウン
ト、ソート制御、リード数カウントと複数の役割をさせ
ることによって、回路削減に役立っている。
【図面の簡単な説明】
【図1】実施例の全体構成を示すブロック図である。
【図2】実施例の動作を説明するフローチャート(1/
3)である。
【図3】実施例の動作を説明するフローチャート(2/
3)である。
【図4】実施例の動作を説明するフローチャート(3/
3)である。
【図5】実施例の動作概要を説明するステートマシンで
ある。
【図6】バッファデータライトの動作を説明するタイミ
ングチャートである。
【図7】ソートスタートの動作を説明するタイミングチ
ャートである。
【図8】ソート動作を説明するタイミングチャートであ
る。
【図9】ソートエンドの動作を説明するタイミングチャ
ートである。
【図10】バッファデータリードの動作を説明するタイ
ミングチャートである。
【図11】ソート動作を説明するタイミングチャートで
ある。
【図12】公報に記載のソートバッファの構成例を示す
ブロック図である。
【符号の説明】
1 バッファ制御回路 2 バッファ群 3 カウンタA 4 カウンタB 5 カウンタAラッチ回路 6 バッファデータ制御回路 7 バッファデータラッチ回路 8 ラッチデータセレクト回路 9 コンペア回路 10 バッファ

Claims (2)

    【特許請求の範囲】
  1. 【請求項1】 データを格納するバッファ群と、 前記バッファ群のライト/リード時のデータ数をカウン
    トし、前記バッファ群のデータソート時にソート制御に
    用いるカウント値を出力するカウンタAと、 前記バッファ群のデータソート時にソート制御に用いる
    カウント値を出力するカウンタBと、 前記バッファ群のデータソート時に前記バッファ群への
    データライト数を記憶するカウンタAラッチ回路と、 前記バッファ群のデータをセレクトし、リードデータま
    たはデータソートのためのコンペアデータを出力するバ
    ッファデータ制御回路と、 前記バッファデータ制御回路を介して前記バッファ群か
    ら出力されたデータのうち、前記カウンタBのカウント
    値に対応するj番目のバッファのデータとj+1番目の
    バッファのデータをラッチするバッファデータラッチ回
    路と、 前記バッファデータラッチ回路にラッチれたデータを比
    較し、外部から指定されたソート方向に応じたデータ入
    れ替えの有無を判定し、前記カウンタBをカウントアッ
    プさせるコンペア回路と、 前記コンペア回路の判定によりデータの入れ替えが生じ
    たときに、j番目およびj+1番目のバッファのデータ
    の順番を入れ替えて出力するラッチデータセレクト回路
    と、 前記コンペア回路の判定によりデータの入れ替えが生じ
    たときに、前記ラッチデータセレクト回路から順次出力
    されたj+1番目およびj番目のバッファのデータをj
    番目およびj+1番目のバッファに書き込むデータ入れ
    替えを制御し、さらに逐次カウントアップする前記カウ
    ンタBと前記カウンタAのカウント値が一致するまで以
    上の制御を繰り返し、カウント値が一致したときに前記
    カウンタAをカウントダウンし前記カウンタBをリセッ
    トして以上の制御を繰り返し、前記カウンタAのカウン
    ト値が‘0’になったときにソートを完了し、前記カウ
    ンタAのカウント値を前記カウンタAラッチ回路に記憶
    された値までカウントアップしながら、各カウント値に
    対応する前記バッファ群のデータを前記バッファデータ
    制御回路を介して読み出す制御を行うバッファ制御回路
    と、 前記バッファ制御回路の制御により、前記バッファデー
    タ制御回路から出力されたリードデータの出力制御を行
    うバッファとを備えたことを特徴とするソートバッフ
    ァ。
  2. 【請求項2】 バッファ制御回路は、カウンタAのカウ
    ント値が‘0’になる前にソート完了とし、データリー
    ドを可能にする構成であることを特徴とする請求項1に
    記載のソートバッファ。
JP9235597A 1997-09-01 1997-09-01 ソートバッファ Withdrawn JPH1185468A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP9235597A JPH1185468A (ja) 1997-09-01 1997-09-01 ソートバッファ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP9235597A JPH1185468A (ja) 1997-09-01 1997-09-01 ソートバッファ

Publications (1)

Publication Number Publication Date
JPH1185468A true JPH1185468A (ja) 1999-03-30

Family

ID=16988370

Family Applications (1)

Application Number Title Priority Date Filing Date
JP9235597A Withdrawn JPH1185468A (ja) 1997-09-01 1997-09-01 ソートバッファ

Country Status (1)

Country Link
JP (1) JPH1185468A (ja)

Similar Documents

Publication Publication Date Title
US8316174B2 (en) Microcontroller based flash memory digital controller system
US6088740A (en) Command queuing system for a hardware accelerated command interpreter engine
JP2001229031A (ja) 割込強制レジスタを含む柔軟な割込コントローラ
JPH1091572A (ja) データ転送方法及びその方法を用いたデータ転送装置
JPS58151631A (ja) Dmaバス負荷可変装置
US7302518B2 (en) Method and system for managing a suspend request in a flash memory
EP1145240A1 (en) Data write control system and method therefor
JPH1185468A (ja) ソートバッファ
JPH0675745A (ja) 直列化差分フラッグ回路
WO2024146076A1 (zh) 乱序处理器中队列的队列项选择方法及装置
JPH06103225A (ja) チェーン式dma方式及びそのためのdmaコントローラ
JPH08235073A (ja) マイクロコンピュータ
JP2908273B2 (ja) ベクトル処理装置
JPH0540698A (ja) 主記憶ページ管理方式
WO1993019419A1 (en) Solid state disk emulator apparatus and method
JPS5919375B2 (ja) デ−タバッフア制御方式
JPH07146814A (ja) メモリ装置
JP2004021896A (ja) キャッシュフィル制御方法及びcpu
JP3568384B2 (ja) メモリアクセス回路
JPH1063569A (ja) 主メモリデータ書込み装置
JPH0561761A (ja) 主記憶制御方式
JPH02136951A (ja) Dma転送方式
JP2009301116A (ja) 割り込み装置及びこれを備えた割り込みシステム
JPH1078967A (ja) データ処理装置並びにソート演算装置及びソート演算方法
JP2000358076A (ja) 連続照合サンプリング回路及びプログラムを記憶した記憶媒体

Legal Events

Date Code Title Description
A300 Withdrawal of application because of no request for examination

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20041102