JP2753260B2 - マージ方法 - Google Patents

マージ方法

Info

Publication number
JP2753260B2
JP2753260B2 JP63103906A JP10390688A JP2753260B2 JP 2753260 B2 JP2753260 B2 JP 2753260B2 JP 63103906 A JP63103906 A JP 63103906A JP 10390688 A JP10390688 A JP 10390688A JP 2753260 B2 JP2753260 B2 JP 2753260B2
Authority
JP
Japan
Prior art keywords
data
area
areas
merge
merging
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.)
Expired - Lifetime
Application number
JP63103906A
Other languages
English (en)
Other versions
JPS6453227A (en
Inventor
明治 坂田
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
Publication of JPS6453227A publication Critical patent/JPS6453227A/ja
Application granted granted Critical
Publication of JP2753260B2 publication Critical patent/JP2753260B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/80Architectures of general purpose stored program computers comprising an array of processing units with common control, e.g. single instruction multiple data processors
    • G06F15/8053Vector processors
    • 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/32Merging, i.e. combining data contained in ordered sequence on at least two record carriers to produce a single carrier or set of carriers having all the original data in the ordered sequence merging methods in general

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Complex Calculations (AREA)

Description

【発明の詳細な説明】 [発明の利用分野] 本発明はマージ方法に関し、特に多ウェイマージに好
適なマージ方法に関する。
[従来の技術] マージ処理とは、それぞれが同じ法則で並んでいるデ
ータからなる複数のデータ列を同じ法則で一列のデータ
列に並びかえることを定義する。マージ処理の例として
は、小さい順で並んだ複数の数字の列を小さい順に並ん
だ一列の数字列に並びかえる処理があげられる。この
他、アルファベット順に並んだ大字列をアルファベット
順に並んだ一列の文字列に並びかえるマージ処理もあ
る。マージ処理の例としては多量の商品について1日の
営業の最後に商品番号順に売上げ数をリストする処理が
ある。
従来知られたベクトル的マージ処理装置としては2−
ウェイマージを例にとれば、主記憶装置上にそれぞれが
1つの入力データ列の全てを格納する2つの領域と、マ
ージした結果を格納する、2つの入力データ列分を格納
できる大きさの1つの領域とからなる作業領域を設け、
2つの入力データ列のマージを行う装置が知られてい
る。
上述の従来技術と類似な技術が特開昭60−134973に開
示されている。又、ソフトウエアで多ウェイマージを行
う技術についてはKnuth著、“Sorting and Seanching"V
ol.3,pp.251−253で“replacement Selection"法を用い
1要素ずつ出力することが開示されている。
[発明が解決しようとする課題] 従来のベクトル的にマージ処理を行う装置では2つの
入力データ列の2倍の作業領域が必要であるし、又、そ
れ故、大量のデータをマージするには不向きである。
本発明の目的は、入力データがベクトル型で与えられ
た場合に、多量のデータのマージを小さい作業領域上
で、かつ、データ入力及びマージ結果の入出力を並列
に、かつ、長いベクトル長のままベクトル処理を行なう
マージ方法の提供にある。なお、ベクトル型データとは
同じタイプのデータが複数個集まって構成されたデータ
のことである。
[課題を解決するための手段] 上述の目的を達成するため本発明の一画面に依れば、
2ウェイマージをベクトル的に行なう手段によって、所
定データ個数単位以下のマージを実行し、得られた結果
を出力すること、及び入力データ領域上に所定個数の空
が生じた場合に入力を行なうことにより達成される。
[作用] 予め定められた作業領域上の入力用領域と出力用領域
(gl)と(3−ウェイマージ以上の場合は中間領域も)
を用い、2−ウェイマージした結果が格納される親領域
に入るデータ数に基づきベクトル要素数としてマージを
実行し、得られた結果を出力する。これによって作業領
域の大きさはデータ数に依存せず、小さい作業領域で多
量のデータのマージが行なえる。
[実施例] 以下、本発明の実施例を図に従って詳細に説明する。
第1図は本発明によるマージ装置の一実施例のシステ
ム構成図である。図中10は命令語レジスタ、11は解読回
路、12はスカラ演算ユニット、13はベクトル演算ユニッ
ト、14は主記憶、15はI/O制御回路、16はディスク、17
はマージ演算器、18はカウンタ回路、19はアドレス回
路、20は入力レジスタ、21は入力レジスタ、22は比較
器、23はセレクタ、24は出力レジスタである。
本実施例ではマージの対象となる多量のデータはディ
スク16上にあるとする。このデータがI/O制御回路15に
よって主記憶14へ格納される。次にスカラ演算ユニット
12と、ベクトル演算ユニット13によってマージされ、結
果がディスク16へ格納される。
第1図のマージ装置は後で説明する。本発明によるマ
ージ方法(pl)を実施することができる。
第2図は第1図のマージ演算器17の動きを示した図で
あり、第2図の左半分に示した状態は右半分に示したカ
ウンタの時刻10に対応する。又、OP1,OP2,OP3はそれぞ
れ主記憶装置14上の作業領域である。OP1,OP2上にカッ
コでくくって示した数字(1)−(4)は説明のために
記したが時刻10においては実際はOP3に出力されてい
て、OP1,OP2上には存在していない。
OP1,OP2は共に既に大きさの順にソートされた数字か
らなる入力データであり、OP3は出力データである。時
刻1で、OP1には10個、OP2には8個のデータ、OP3には
0個のデータがある。時刻2では、マージベクトル演算
器17中の比較回路22でOP1,OP2のデータの大小が比較さ
れてOP1のデータが1個OP3へ移動する。即ち、OP1に格
納された1とOP2に格納された2との大小を比較すると
1の方が小さい。従って1がOP1からOP3に移される。こ
のとき、OP1のカウンタ18は1減じられ、OP2のカウンタ
はそのまま、OP3は1増加する。従って、時刻2ではOP1
には9個、OP2には8個、OP3には1個のデータがある。
以下同様に動作する。即ち、時刻nから時刻n+1へ移
る時、OP1とOP2のデータが比較され、OP1のデータがOP2
のデータ以下なら、OP1のカウンタが1減じられ、OP2は
そのまま、OP3は1増加、OP1のデータがOP2のデータよ
り大なら、OP1のカウンタはそのまま、OP2のカウンタは
1減じられ、OP3のカウンタは1増加する。なお、第2
図では説明のため出力領域OP3は16個のデータを格納す
る大きさであり、入力領域OP1,OP2はそれぞれ10個,8個
の入力データを格納できる大きさであるが、実際の大き
さは以下で説明された如く出力格納領域は入力領域より
小さいことに注意されたい。
第3図は本発明のマージ方法の第1の実施例のアルゴ
リズムを示した図である。第4図は第1の実施例で用い
られるディスク(pl)及び主記憶内の作業領域(pl)間
の関係を示した図である。第4図を用いて第3図の説明
をする。まず、第4図の主記憶14は第1図の主記憶14で
あり、ディスク16−1〜16−3は第1図のディスク16で
ある。主記憶14内のAは出力用領域(即ち、マージ結果
格納領域)でありB,Cは入力用領域である。ここで、領
域B,Cはいずれも領域Aの2倍の大きさである。なお、
領域B,Cは領域Aの2倍より大きくても良い。
第3図はステップ1は、第4図でそれぞれ16−1,16−
2から領域B,Cへデータが入力され、データのカウンタ1
8と前記両データのスタートアドレスとが設定されるこ
とを意味する。ステップ2は全データのマージが終了す
るまでステップ3以下の処理を繰り返すことを意味す
る。ステップ3は、第4図の出力領域A内に入るデータ
数を2ウェイマージのベクトル要素数として設定するこ
とを示す。云いかえればベクトル演算ユニット17はベク
トル要素数に等しい個数のデータに対して2−ウェイマ
ージを行う。ステップ4は、B内のデータとC内のデー
タのマージを実行し、結果を領域Aに格納し、カウンタ
18とアドレスを更新することを示す。ステップ5は領域
A内のデータを、ディスク16−3へ出力することを示
す。ステップ6は領域B又はC上に領域Aの大きさ分の
空領域が在りかどうかの判定であり、有る場合にはステ
ップ7のデータ入力、カウンタ更新、アドレス更新を行
ない、無い場合には何もしない。
なお、ステップ6,7によってステップ4のマージ実行
時には、常にB,C上に、Aに入る個数以上のデータが存
在する事になり、4のマージ処理が中断することはな
い。従って、長いベクトル長でのマージが可能となる。
以上、A,B,Cの領域は固定であり、データ数に依存し
ない。つまり、少ない作業領域上で多量のデータのマー
ジ処理が一定のベクトル長さで実行出来、又、入力と出
力は互いに依存しないため並列に又は互に独立して行な
える。
第5図は本発明のマージ方法の第2の実施例のアルゴ
リズムであり、第6図は第2の実施例で用いられるディ
スク16−1〜16−4及び主記憶14上の作業領域A−E間
の関係図である。第5,6図を用いて第2の実施例を説明
する。第6図の14は第1図の主記憶14であり、ディスク
16−1to16−4は第1図のディスク16である。主記憶14
内のAは出力用領域であり、Bは中間領域であり、C,D,
Eは入力用領域である。このillustとatodcaseの場合、
BはAと同じ大きさであり、C,D,EはいずれもBの2倍
の大きさである。しかし領域BはAより大きくて良い
し、又、C,D,EはAの2倍より大きくても良い。
第5図のステップ30は、第6図の領域C,D,Eにそれぞ
れ16−1,16−2,16−3からデータを入力し、各領域用の
カウンタ18とデータの各領域内のアドレスをアドレス回
路19に設定することを示す。ステップ31は全データのマ
ージが終了するまでステップ32以下の処理を繰り返す事
を示す。ステップ32は、領域A内に入るデータ数をベク
トル演算ユニット13のベクトル要素数として設定する事
を示す。ステップ33は中間領域Bと入力領域Eとからマ
ージが可能かどうかの判定であり、領域E内には後述の
理由により領域Aに入る分のデータ数以上のデータが存
在するため、Bのデータ数が前記ベクトル要素数以上で
あればマージが可能である。マージが可能な場合は、ス
テップ34のマージ実行、カウンタ更新、アドレス更新を
行なう。マージ不可能の場合は、ステップ35の処理を行
なう。ステップ35は領域B内の空領域に入るデータ数を
ベクトル演算器17のベクトル要素数として設定すること
を示す。ステップ36は領域C,D間のマージを実行し、カ
ウンタ更新、アドレス更新を行なうことを示す。ステッ
プ37は領域BとEのマージを実行し、カウンタ更新、ア
ドレス更新を行なうことを示す。ステップ38は領域A内
のデータをディスク16−4へ出力することを示す。ステ
ップ39は領域C,D,E内にAの大きさ分の空領域が有るか
どうかの判定であり、有る場合にはステップ40のデータ
入力、カウンタ更新、アドレス更新を行ない、無い場合
は何も行なわない。ステップ39,40の処理によって、常
に、領域C,D,Eには領域Aに入るデータ数以上のデータ
が存在する。
以上、A,B,C,D,Eの領域は固定であり、データ数に依
存しない。つまり、少ない作業領域上で多量のデータの
マージ処理が実行出来、又、入力と出力は互いに依存し
ないため並列して、かつ、独立に行なえる。
第7図,第8図は本発明のマージ方法の第3の実施例
のアルゴリズムであり、第9図はデータ領域間の関係図
であり、第10図は領域間の関係を示すテーブルであり、
第11図は第7,8図のアルゴリズムによる処理を表わす図
であり、第12−1,12−2図は処理例である。
まず、第9図,第10図によってデータ領域間の関係を
説明する。第9図においては14は第1図14の主記憶であ
り、16−1〜16−5は第1図16のディスクである。主記
憶14内のAは出力領域であり、B,CはAと同じ大きさの
中間領域であり、D,E,F,GはAの2倍の大きさを持つ入
力領域である。なお、B,CはAより大きくても良く、
又、D,E,F,GはA又はBの2倍より大きくても良い。領
域A,B,C,D,E,F,Gを以下ノードと呼び、特にAをルー
ト、D,E,F,Gをリーフと呼ぶ。また、Aの子をB,Cとし、
B,Cの親をAとし、Bの子をD,Eとし、D,Eの親をBと
し、Cの子をF,Gとし、F,Gの親をCとする。第10図のテ
ーブルにおいて、第1列はノードを指し、第2列は親を
指し第3列,第4列は子を指す。ここで*は任意の文字
でよい(即ち、どんな文字でも良い)。第5列はカウン
タのカウント値であり、各ノード上のデータ数である。
第6列はデータの先頭アドレスである。第7列はリーフ
フラグであり、リーフである場合は“1"、リーフでない
場合は“0"である。これは入力の際にリーフを検出する
のに使用される。
次に、第9,10,11図を用いて第7,8図の説明をする。第
11図は第9図の主記憶14内のデータ領域上の処理の流れ
を示した図である。
第7図のステップ50は第9図の領域D,E,F,Gへデータ
を入力し、第10図のカウンタとデータの先頭アドレスを
設定することを示す。ステップ51は全データをマージす
るまでステップ52以下の処理を繰り返すことを示す。ス
テップ52はポインタを領域Aに持ってくる、即ち、ルー
トを現ノードとして指定することを示す。ステップ53は
現ノード即ち、ルートである第9図の領域Aに入るデー
タ数をベクトル演算ユニット13での2−ウェイマージの
ベクトル要素数として設定することを示す。これは第11
図の処理である。ステップ54は第9図の領域Aに出力
結果を得るまでマージ処理を繰り返す事、つまり第8図
のステップ55で示される処理を行なう事を示す。第8図
のステップ60は第11図のマージ要求が満たされるかど
うかの判定のために子ノード(pl)の最大値比較を行な
う。即ち、2つの子ノードの各々に格納されたデータの
うちの最大のデータどうしの大きさを比較する。これは
第11図の処理の前半である。第8図のステップ61は第
11図の処理での後半の出力判定であり、最大値が大き
くない方のデータ数が2ウェイマージのベクトル要素数
以上か又は、子ノードがいずれもリーフか又は、最大値
の大きくない方がリーフで、かつ、最大値の小さくない
方の領域にデータがつまっている場合の3つのうちのい
ずれかの場合は、ステップ62の処理を行ない、それ以外
の場合はステップ66の処理を行なう。ステップ62はマー
ジを実行し、第10図のテーブルのカウンタとデータの先
頭アドレスを更新することを示す。これは例えば第11図
のの処理である。ステップ63は現ノードがルートかど
うか(即ち、ポインタがルートを指しているか否か)の
判定であり、ルートの場合は何もせず、ルートでない場
合は親を現ノードとする。即ち、ポインタを親ノードに
移す。これは第11図での処理を行なった後、現ノード
を第9図のBからAに移すことを意味している。ステッ
プ65は子及びそれ以下のレベルにデータがない場合、そ
のノードをリーフとし、第10図のテーブルのフラグを更
新することを意味する。例えば第9図で、D,E内にデー
タが無くなった場合に領域Bをリーフとすることであ
る。このとき後で述べる理由により、例えば領域Dのデ
ータがなくなった場合は16−1のディスク内のデータも
全て尽きる。第8図でステップ66はリーフでない方の
子、又は最大値の大きくない方の子を現ノードとするこ
とを示す。例えば第11図での処理を行なった後に、第
9図のAからBに現ノードを移すことを示す。第8図の
ステップ67は、親の空領域と、該親の親(祖父)領域ベ
クトル要素数の個数のデータを祖父に出力するのに不足
している個数のうち、大きくない方の個数をベクトル要
素数に設定することを示す。即ち、親の空領域が前記不
足個数より大きいとき不足個数を前記親のベクトル要素
数として設定することを意味する。例えば第11図のの
処理である。以上、第8図の処理を繰り返すと、第11図
の処理の様になり第9図のAの出力が得られる。第7図
ステップ56は第9図の領域Aに得られた結果をディスク
16−5へ出力することを示す。ステップ57はリーフであ
る領域D,E,F,G上にAの大きさ分の空領域が生じたかど
うかの判定であり、生じた場合は、ステップ58の入力、
第10図のカウンタ、データの先頭アドレスの更新を行な
う。空領域がない場合は何もしない。ステップ57,58に
よってディスク上にデータがある限りリーフ上には常に
データが存在し、もしもリーフ上にデータがなくなった
なら、ディスク上にもデータが存在しない。
なお、上述の説明は入力データ列が小さい順に並んで
いる場合について行ったが、大きい順に並んでいる場合
はステップ60,61,66における“最大値比較",“最大値が
大きくない方のデータ数",“最大値の大きくない方の
子”はそれぞれ“最大値比較",“最大値が小さくない方
のデータ数",“最小値の小さくない方の子”に読みかえ
れば良い。後述の第4の実施例においても同様な読み替
えを行なえば良い。
第12−1図,第12−2図によって実際のデータの流れ
を説明する。
第12−1図のIは、Aに0個、Bに1個、Cに3個、
Dに6個、Eに6個、Fに5個、Gに7個のデータが存
在する図である。カレントポインタはAを指していると
する。Iでの処理は、Bの最大値“6"とCの最大値“8"
を比較し、最大値の小さい方、即ちBを選ぶ。
IIでは、IのDとEは子ノードを持たないので、マー
ジ可能でありIIはD,E間でマージを実行した結果を示し
ている。一方、Bの最大値“13"はCの最大値“8"より
大きく、Cの要素数とCの最大値より小さいBの要素数
は1でありこれらの要素数の和は領域Aより大きいの
で、領域B,C間のマージは可能となる。
IIIは領域B,C間のマージを実行した結果である。ここ
でリーフをサーチする領域Eに領域A分以上の空領域が
ある。
第12−2図IVは、第12−1図IIIの領域A内のデータ
をディスクに出力し、領域Eにデータをディスクから入
力した図である。領域BとCの最大値を比較すると、B
の最大値は“13"であるが、Cに要素がないのでCの最
大値は“−∞”として比較し、Cを小側とする。領域F
とGは子ノードを持たないので、F,G間のマージは可能
である。
Vは領域F,G間でマージを実行した結果である。Bの
最大値“13"とCの最大値“15"を比較すると、Bの最大
値の方が小さいので、B,C間のマージは不可能である。
即ち、領域Bの要素数は3であり、一般的にはBの最大
値より小さい値がCにあるか否かわからない。従って、
マージ不可能である。従ってB側に要素を追加する必要
があるが、D,Eは子ノードを持たないのでマージは可で
ある。
VIは領域D,E間でマージを実行した結果である。これ
によって領域B,Cには共に領域Aの要素数以上のデータ
が格納され、領域B,Cの間のマージは実行可能となる。
VIIは領域B,C間のマージを実行して出力結果を領域A
に得た図である。
以上、本実施例によれば、平均ベクトル長はマージ命
令の使用回数でトータルなデータの移動量を割った値で
決まり、作業領域に空が生ずるたびにマージ命令を実行
するのではなく、空領域があってもマージ処理不可能な
場合は処理を実行せず、従って、必要な時のみ使用する
ため使用回路が少なく、長いベクトル長のまま扱え、し
かも、主記憶上に、あらかじめデータ数と無関係なウェ
イ数と入出力の単位量とによって定められた領域のみを
使用するため、小さい領域上でマージ処理が行なえる。
第13図は本発明のマージ方法の第4の実施例のアルゴ
リズムであり、第14図はデータ領域間の関連を示す図で
あり、第15図は領域間の関係を記述するテーブルであ
り、第16−1,16−2,16−3図は入出力のデータの流れを
示す図である。
まず、第14図,第15図によってデータ領域間の関係を
説明する。第14図において14は第1図14の主記憶であ
り、16−1〜16−5は第1図16のディスクである。主記
憶14内のAは出力領域であり、9はAに入るデータ数と
同じ数のタグ付キーデータの入る領域であり、b,cはa
と同じ大きさの領域であり、d,e,f,gはそれぞれaの3
倍の大きさの領域であり、D,E,F,Gはそれぞれd,e,f,g内
に入るタグ付キーデータの個数と同じ個数の入力データ
が入る領域である。領域b,cは一般にそれぞれの以上の
大きさであり、領域d,e,f,gは一般に領域b,cのうちの最
大のものの(lo2N)+1倍の大きさであれば良い。d,e,
f,gにはそれぞれD,E,F,G内の入力データからキーを切り
出しそれにタグを付けたタグ付キーデータが入り、bは
d,eのマージ結果、cはf,gのマージ結果、aはb,cのマ
ージ結果が入る。キーデータとは、例えばある商品につ
き商品番号,商品名,価格,在庫,数量,その他からな
る1組のデータを考えたとき、商品番号に相当するもの
でこれは通常商品名を代表するコードより短かいコード
で代表される。a内のタグ付キーデータを元の入力デー
タに置換した結果がAに入る。領域a,b,c,d,e,f,gを以
下ノードと呼び、特にaをルート、d,e,f,gをリーフと
呼ぶ。また、aの子をb,cとし、b,cの親をaとし、bの
子をd,eとし、d,eの親をbとし、cの子をf,gとし、f,g
の親をcとする。第15図のテーブルにおいて、第1列は
ノードを指し、第2列は親を指し、第3列,第4列は子
を指し、第5列はノード上のデータ数を表わすカウンタ
であり、第6列はノード上のタグ付キーデータの先頭ア
ドレスであり、第7列は入力データ領域の先頭アドレス
であり、第8列のフラグ1はリーフかどうかの判定フラ
グであり、リーフなら“1",リーフでなければ“0"であ
る。第9列のフラグ2は、“0",“1",“2"の3つの値を
取るフラグであり、これはデータの入力位置も指定する
のに使われる。例えば、第14図において、Dの右側(即
ち、先頭)から数えて4個の要素に入っているデータに
対しフラグ“0"を与え、同じく次の4個に対し“1"を、
そして最後の4個に対して“2"を付す。ここで*は任意
の文字でよい。
次に、第14,15図を用いて第13図の説明をする。第13
図のステップ10は第14図のD,E,F,Gへデータを入力し、
d,e,f,gにタグ付キーを作成し、第15図のカウンタと、
タグ付キーデータの先頭を設定することを示す。ステッ
プ71は全データをマージするまでステップ72以下の処理
を繰り返すことを示す。ステップ72はポインタを領域a
に持って来る、即ち、ルートを現ノードとして指定する
ことを示す。ステップ73は第14図のaに入るタグ付キー
データの個数をベクトル要素数として設定することを示
す。ステップ74は出力結果がa上に得られるまでマージ
処理55を繰り返すことを示す。ステップ55のマージ処理
は第8図の処理であり、本発明の第3の実施例における
マージ処理をタグ付キーデータ上では用いている。ステ
ップ75はaに得られた結果に従って入力データを並び換
えそれをA上に置くことを示す。ステップ76はA上のデ
ータディスク16−5上へ出力することを示す。ステップ
77は第14図の領域d,e,f,g上に2X(aの大きさ)分の連
続空領域が有るかどうかの判定であり、有る場合にはス
テップ78は第14図のD,E,F,Gへデータの入力を行なう処
理であるが、ここで、一般に、D内のデータ数とd内の
タグ付キーデータの数の数は異なるので入力制御は以下
の様に行なう。d内に2X(aの大きさ)分の連続空領域
がある場合、D内にはaの大きさ分の連続空領域がある
のでこの領域上へデータを入力する。このときの連続空
領域の装置は、1回目の入力のときはデータ領域の空頭
から、2回目の入力はデータ領域の先頭にaの大きさ分
ずれた位置から、3回目はデータ領域の先頭から2X(a
の大きさ)分ずれた位置からである。4回目の入力位置
は1回目の入力位置へもどり、以後繰り返される。この
位置を第15図のテーブルのフラグ2によって示す。1回
目の入力の時は“0"、2回目は“1"、3回目は“2"によ
って示す。以上のもとに、ステップ78は、データの入力
とそれによるフラグ2の更新、入力データからのタグ付
キーデータの作成、カウンタの設定、タグ付キーデータ
の先頭アドレスの設定を示す。
第16−1図,第16−2図,第16−3図は入出力データ
の動きと、タグ付キーデータの動きと、それ等の関係を
示した図である。
第16−1図,第16−2図で、A1,A2,A3,A4は領域A上
のデータアドレスであり、他のP1,……等も同様であ
る。第16−1図は領域A上に出力結果を得た図であり、
第16−2図は領域A上のデータを出力し、領域D上にデ
ータを入力した図である。データの入力は、それぞれ領
域d,e,f,gに“8個”分以上空領域が生じた場合に行な
う。
第16−3図は、第16−1図から第16−2図に移る際の
タグ付キーデータの動きを示した図である。第16−3図
Iは、第3の実施例のアルゴリズムに従って領域aにマ
ージ結果を得た図である。領域a内のタグ付キーデータ
を入力データに置換した結果が第16−1図である。第16
−3図IIは、第16−2図の入力データからタグ付キーデ
ータを生成し、それを領域dへ入力した図である。ここ
で、第16−1図,第16−2図,第16−3図から、一般
に、領域D,E,F,G内のデータと、領域d,e,f,g内のデータ
の数は異なる。それは、中間結果が領域b,cに存在する
ためである。本発明では領域d,e,f,gの空領域を要素数
のカウンタによって判定するが、領域D,E,F,Gの空領域
はチェックせずに入力を行なえる。従って入力データの
カウンタは不要であり、領域D,E,F,Gの空領域もチェッ
クせず、その分高速に入力が行なえる。また、マージ処
理は第3の実施例と同じアルゴリズムを使用しているた
め、そこでの効果と同様の効果、即ち、長いベクトル長
のまま小さい作業領域上でマージ処理が行なえる等が得
られる。
第17図は、本発明のマージ方法の第1から第4の実施
例における入出力と、スカラ命令とベクトル命令である
2ウェイマージのタイムチャートである。スカラ命令と
は第1図のスカラ演算ユニットによって処理される命令
であり、第3図ではステップ1−3,5−7が該当する。
ベクトル命令とは第1図のベクトル演算ユニット17で処
理される命令であり、第3図ではステップ4の処理に相
当する。
処理は、最初入力データ領域へデータを入力するため
入力処理が行なわれる。次はベクトル要素数の設定や、
マージ可能性の判定のためスカラ命令による処理が行な
われ、しかる後にマージ命令によりマージされる。この
スカラ命令とマージ命令が繰り返され、処理領域にデー
タが得られると、出力処理が開始し、また必要に応じて
入力処理が行なわれる。これ等の処理は、入出力とスカ
ラ命令、又は、入出力とマージ命令が重なって行なわれ
る。
[発明の効果] 本発明によれば、作業領域の大きさはデータ量に依存
せず、また、平均ベクトル長はデータ全体の転送量をベ
クトル命令の使用回数で割った値で決まるが、ベクトル
命令の使用回数を必要最小限に抑えられるため小さい作
業領域上で長いベクトル長のまま処理が行なえる。ま
た、入力と出力は互いに依存しないため、入出を並列に
処理出来る。
【図面の簡単な説明】
第1図は本発明によるマージ装置の一実施例の構成図、
第2図は第1図のマージ用置に用いられたマージ演算器
の動作図、第3図は本発明によるマージ方法の第1の実
施例のアルゴリズム、第4図は第3図の実施例における
作業領域を示す図、第5図は本発明によるマージ方法の
第2の実施例のアルゴリズムを示す図、第6図は第5図
の実施例における作業領域を示す図、第7図は本発明の
マージ方法の第3の実施例のアルゴリズム、第8図は第
7図の一ステップを単に詳細に示したマージ処理アルゴ
リズムを示す図、第9図は第7図の実施例における作業
領域を示す図、第10図は第7図の実施例における作業領
域間の関連を記述するテーブル、第11図は第7図の実施
例の処理を示すのに有用な図、第12図は第7図の実施例
のマージ処理例、第13図は本発明によるマージ方法の第
4の実施例のアルゴリズムを示す図、第14図は第13図の
実施例における作業領域を示す図、第15図は第13図の実
施例における作業領域図の関係を記述するテーブル、第
16−1図,第16−2図,第16−3図は第13図の実施例の
データフロー、第17図は本発明の実施例におけるタイム
チャートである。

Claims (7)

    (57)【特許請求の範囲】
  1. 【請求項1】N列の入力データ列をマージする方法であ
    って、 N列の入力データ列のうちマージを行なうべき入力デー
    タ列を入力データ領域にロードする第1のステップと、 2−ウェイマージをベクトル的に行うユニットのベクト
    ル要素数を前記マージ結果を格納する出力領域の大きさ
    に基づき設定する第2のステップと、 前記2−ウェイマージを実行する第3のステップと、 前記第2,第3のステップを繰返す第4のステップと、 第4のステップを実行し得られた結果を出力する第5の
    ステップと、 前記入力データ領域上のデータ列に対して前記第3のス
    テップを実行している途中で当該入力データ領域上に前
    記2−ウェイマージを中断なく実行でき且つ前記出力領
    域の大きさに対応するように予め定められた所定個数の
    連続空領域が生じたとき、該空領域に、関連する入力デ
    ータ列の1部をロードする第6のステップと、 を有するマージ方法。
  2. 【請求項2】第1の記憶装置上にある2つのデータ列を
    ベクトル的に2−ウェイマージユニットによりマージし
    て第2の記憶装置上に出力するマージ方法であって、 前記2つのデータ列の各々の1部を2つの入力データ領
    域にロードする第1のステップと、 該入力データ領域の2分の1以下の大きさを有しマージ
    結果を格納する出力領域に格納可能な要素数を前記2−
    ウェイマージユニットの要素数として設定して、前記2
    −ウェイマージを実行する第2のステップと、 前記出力領域に得られた結果を前記第2の記憶装置に出
    力する第3のステップと、 前記入力データ領域上のデータ列に対して前記第2のス
    テップを実行している途中で当該入力データ領域の少く
    とも一方に前記2−ウェイマージを中断なく実行でき且
    つ前記出力領域の大きさに対応するように予め定められ
    た所定個数の連続空領域が生じたとき、該空領域に、関
    連する入力データ列の1部をロードする第4のステップ
    と、 を有し、前記第2,第3のステップと第4のステップとを
    独立に繰り返すことにより2つのデータ列をマージする
    マージ方法。
  3. 【請求項3】第1の記憶装置にある3つのデータ列をベ
    クトル的2−ウェイマージユニットを用いてマージして
    第2の記憶装置上に出力するマージ方法であって、 前記3つのデータ列の各々の一部を3つの入力データ領
    域にそれぞれロードする第1のステップと、 3−ウェイマージの結果を格納する出力領域内に格納可
    能なデータの個数を前記2−ウェイマージユニットの第
    1の要素数として設定して、前記出力領域と同じ大きさ
    を有し、前記3−ウェイマージの結果を得る過程で生ず
    る中間結果を格納するため前記入力データ領域の2分の
    1以下で前記出力領域と等しい大きさを有する中間領域
    内のデータ個数と前記第1の要素数との比較を行う第2
    のステップと、 前記第2のステップでの比較の結果、前記データ個数が
    前記第1の要素数以上のときは、前記中間領域内のデー
    タ列と前記入力データ領域のうちの第1の入力データ領
    域内のデータ列との間で2−ウェイマージを実行し、 前記出力領域に得られた結果を前記第2の記憶装置上に
    出力する第3のステップと、 前記第2のステップでの比較の結果、前記データ数が前
    記第1の要素数より小であるときは、前記中間領域内の
    空領域に入るデータ個数を前記マージユニットの第2の
    要素数として設定し、前記入力データ領域のうち第2と
    第3の入力データ領域内のデータ列の間で前記第2要素
    数の分のマージを実行し、得られた結果を前記中間領域
    に格納し、該中間領域と前記第1の入力データ領域との
    間で前記第1要素数の分のマージを実行し、得られた結
    果を前記第2の記憶装置上に出力する第4のステップ
    と、 前記第1,第2,第3の入力データ領域上のデータ列に対し
    て前記第4のステップを実行している途中で該入力デー
    タ領域の少くとも1方に前記2−ウェイマージを中断な
    く実行でき且つ前記出力領域の大きさに対応するように
    予め定められた所定個数の連続空領域が生じたとき、該
    空領域に、関連したデータ列のデータを取り込む第5の
    ステップと、 を有し、前記第2−第4のステップと前記第5のステッ
    プとを独立に繰返すことにより3つのデータ列をマージ
    するマージ方法。
  4. 【請求項4】第1の記憶装置上に格納されたN列のデー
    タ列をベクトル的2−ウェイマージユニットによりマー
    ジして第2の記憶装置上に出力するマージ方法であっ
    て、 前記Nデータ列の各々の一部をデータ領域にロードする
    第1のステップと、 N−ウェイマージの結果を格納する出力領域内に格納可
    能なデータ個数を前記2−ウェイマージユニットの第1
    の要素数として設定し、かつ、前記N−ウェイマージを
    実行する過程で発生する中間結果を格納するN−2個の
    中間領域のうちの前記出力領域に結合された2つの中間
    領域のそれぞれに格納されたデータのうちの最大値また
    は最小値のうち、所定の基準に基づき選ばれた1つの値
    を格納した側の中間領域に格納されたデータの個数と、
    前記第1要素数と、に基づき前記2つの中間領域でのマ
    ージの可能性を判定する第2のステップであって、前記
    中間領域の各々は少くとも前記出力領域と等しい大きさ
    であり、前記データ領域の各々は少くとも前記中間領域
    の最大のものの2倍の大きさである第2のステップと、 前記第2ステップにおいてマージ可能と判定されたとき
    は前記マージユニットを動作させ前記2つの中間領域間
    のマージを実行し、得られた結果を前記出力領域に置く
    第3のステップと、 前記判定ステップにおいてマージ不可と判定されたとき
    は、前記小さい側の最大値を含むデータを格納した中間
    領域の空領域の大きさを前記マージユニットの第2の要
    素数として設定し、前記小側最大値格納領域に結合した
    2つの中間領域がそれぞれ格納しているデータのうちの
    最大値または最小値のうち前記所定の基準に基づき選ん
    だ1つの値を格納した側の中間領域に格納されたデータ
    の個数と、前記第2要素数とに基づき前記2つの中間領
    域間での2−ウェイマージの可能性を判定する第4のス
    テップと、 前記第4のステップをマージ可能の判定が得られるまで
    繰返し実行し、マージ可能の判定が得られたとき、前記
    マージユニットを動作させマージを実行し、得られた結
    果が格納された中間領域に結合した新領域の空領域の大
    きさを前記マージユニットの第3の要素数として設定
    し、前記中間領域と前記親ユニットに結合し前記中間領
    域とマージされるべきもう一つの中間領域と、それぞれ
    に格納されたデータのうちの最大値または最小値のうち
    前記所定の基準に基づき選んだ1つの値を格納した側の
    中間領域に格納されたデータの個数と前記第3の要素数
    と、に基づき前記2つの中間領域間のマージの可能性を
    判定する第5のステップと、 前記第5のステップにつづき、前記第4のステップにも
    どることにより前記第3,第4ステップを繰返し、前記出
    力領域に得られた結果を前記第2の記憶装置に出力する
    第6のステップと、 前記N個のデータ領域の少くとも1つに前記中間領域の
    うちの最大のものの大きさに相当する空領域が生じたと
    き、該空領域に関連したデータ列からデータをロードす
    る第7のステップと、 を有するマージ方法。
  5. 【請求項5】特許請求の範囲第4項において、前記所定
    の基準は前記最大値のうちの小さい方、又は、等しい場
    合は、任意の一方、を選ぶことである、マージ方法。
  6. 【請求項6】特許請求の範囲第4項において、前記所定
    の基準は前記最小値のうちの大きい方を選ぶことであ
    る、マージ方法。
  7. 【請求項7】特許請求の範囲第4項において、前記第2,
    第4,第5のステップにおける前記マージ可能性の判定は
    前記格納データ個数がそれぞれ前記第1,第2,第3要素数
    以上のときはマージ可能であり、より小のときはマージ
    不可能であると判定するマージ方法。
JP63103906A 1987-05-13 1988-04-28 マージ方法 Expired - Lifetime JP2753260B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP62-114600 1987-05-13
JP11460087 1987-05-13

Publications (2)

Publication Number Publication Date
JPS6453227A JPS6453227A (en) 1989-03-01
JP2753260B2 true JP2753260B2 (ja) 1998-05-18

Family

ID=14641914

Family Applications (1)

Application Number Title Priority Date Filing Date
JP63103906A Expired - Lifetime JP2753260B2 (ja) 1987-05-13 1988-04-28 マージ方法

Country Status (2)

Country Link
US (1) US5086408A (ja)
JP (1) JP2753260B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5721884A (en) * 1988-11-17 1998-02-24 Canon Kabushiki Kaisha Apparatus for combining and separating color component data in an image processing system
JPH0776906B2 (ja) * 1989-06-30 1995-08-16 ディジタル イクイプメント コーポレーション 分類加速装置のための速度及びメモリー制御
US5448746A (en) * 1990-05-04 1995-09-05 International Business Machines Corporation System for comounding instructions in a byte stream prior to fetching and identifying the instructions for execution
US5197135A (en) * 1990-06-26 1993-03-23 International Business Machines Corporation Memory management for scalable compound instruction set machines with in-memory compounding
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
US5845113A (en) * 1992-10-27 1998-12-01 International Business Machines Corporation Method for external sorting in shared-nothing parallel architectures
US6260044B1 (en) 1998-02-04 2001-07-10 Nugenesis Technologies Corporation Information storage and retrieval system for storing and retrieving the visual form of information from an application in a database
US7082436B1 (en) 2000-01-05 2006-07-25 Nugenesis Technologies Corporation Storing and retrieving the visual form of data
US20030020765A1 (en) * 2001-05-14 2003-01-30 Clifton L. Kussmaul Method and system for transforming limited source graphical data
US7420573B1 (en) * 2001-11-09 2008-09-02 The Mathworks, Inc. System and method for merging electronic diagrams
US8209305B2 (en) * 2006-04-19 2012-06-26 Microsoft Corporation Incremental update scheme for hyperlink database
US7536532B2 (en) * 2006-09-27 2009-05-19 International Business Machines Corporation Merge operations of data arrays based on SIMD instructions
US9355061B2 (en) 2014-01-28 2016-05-31 Arm Limited Data processing apparatus and method for performing scan operations
CN107330106B (zh) * 2017-07-07 2020-11-20 苏州浪潮智能科技有限公司 一种基于fpga的数据过滤方法及装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3540000A (en) * 1967-11-02 1970-11-10 Ibm Criss-cross sorting method and means
US4209845A (en) * 1977-01-25 1980-06-24 International Business Machines Corporation File qualifying and sorting system
US4382277A (en) * 1979-05-14 1983-05-03 System Development Corp. Method and means utilizing multiple processing means for determining degree of match between two data arrays
NL8201057A (nl) * 1982-03-15 1983-10-03 Philips Nv Inrichting voor het serieel fuseren van twee geordende lijsten tot een enkele geordende lijst.
JPH077385B2 (ja) * 1983-12-23 1995-01-30 株式会社日立製作所 データ処理装置
JPS61275935A (ja) * 1985-05-31 1986-12-06 Toshiba Corp マ−ジシステム

Also Published As

Publication number Publication date
JPS6453227A (en) 1989-03-01
US5086408A (en) 1992-02-04

Similar Documents

Publication Publication Date Title
JP2753260B2 (ja) マージ方法
EP0149213B1 (en) Vector processor
EP0823085A2 (en) Method and apparatus for improved branch prediction accuracy in a superscaler microprocessor
JP3630057B2 (ja) 検索用データ構造構築方法、その装置、及び機械可読プログラム記録媒体
JP2969153B2 (ja) レコード検索方法
JPH0319986B2 (ja)
EP0167959A2 (en) Computer vector register processing
JPH02103630A (ja) データ処理装置
NL8102650A (nl) Logische rekeneenheid bedoeld voor het behandelen van bits.
US6182071B1 (en) Sorting and summing record data including generated sum record with sort level key
US4947358A (en) Normalizer for determining the positions of bits that are set in a mask
JPH0782429B2 (ja) 複数ファイルのマージ方法
JP2800485B2 (ja) 物流倉庫の出庫管理装置および方法
JPS6143338A (ja) 連想技術を使用して稀薄なデータベースをサーチする方法
JP2580601B2 (ja) 帳票デ−タ処理方式
JP3070093B2 (ja) レコード処理装置
JP2520941B2 (ja) デ―タベ―ス・テ―ブルを検索する方法
JP3264114B2 (ja) ソート装置
JPH11306183A (ja) データベース検索システム
JPH058450B2 (ja)
JPH0934899A (ja) 検索経路出力方法及び装置
YAMADA et al. Datapath scheduling for behavioral description with conditional branches
JPH08328879A (ja) タスク管理方式
JP3824091B2 (ja) リレーショナルデータベースシステム
JPS63118958A (ja) 索引フアイル記憶装置