JP4807686B2 - メモリ装置内のデータ値の記憶アドレスを決定するための方法並びにアクセス装置 - Google Patents
メモリ装置内のデータ値の記憶アドレスを決定するための方法並びにアクセス装置 Download PDFInfo
- Publication number
- JP4807686B2 JP4807686B2 JP2000536013A JP2000536013A JP4807686B2 JP 4807686 B2 JP4807686 B2 JP 4807686B2 JP 2000536013 A JP2000536013 A JP 2000536013A JP 2000536013 A JP2000536013 A JP 2000536013A JP 4807686 B2 JP4807686 B2 JP 4807686B2
- Authority
- JP
- Japan
- Prior art keywords
- data value
- address
- current
- subtree
- column
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99931—Database or file accessing
- Y10S707/99932—Access augmentation or optimizing
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Description
(技術分野)
本発明はメモリ装置内に予め定められたデータ値の記憶アドレスを決定するための方法に係り、ここで前記データ値は予め定められた記憶アドレスに、複数のノード(node)、ブランチ(branch)、サブツリー(subtree)およびリーフ(leaf)のバイナリ・ツリー・データ構造に基づいて記憶されている。特に、メモリ装置は2つの部分、すなわち列アドレス部と行アドレス部で構成されたアドレスでアドレス指定され、ここでメモリ装置へのエントリーは2次元行列配列の中に記憶されている。
【0002】
(背景技術)
非常に多数のエントリーを含むメモリ内の特定データ値の高速検索を実行する必要がしばしば存在する。例えば、人間の個人識別番号がメモリ装置内に記憶されており、個人の年齢、職業または自動車登録に関するある種の情報に関連付けられている状況を想定する。この識別番号は多数の桁で構成されているはずである、すなわちメモリ内には多数の値が記憶されているはずである。別の例は、電話番号が記憶されており、各々の電話番号がその電話番号が属する家の住所を示す特定の情報に関連付けられているCD−ROMがある。
【0003】
その中に個別エントリーの特定位置が記憶されている、すなわちその中に記憶アドレスが記憶されている第2メモリ装置を使用しなければならないことを回避するために、複数のデータ値が含まれているメモリ装置が特定データ値に関して検索され、そのデータ値が発見されるとその関連する情報が読み出される。もちろん、そのデータ値(個人識別情報または電話番号)はメモリ装置内にランダムに記憶されている場合もあり、この場合そのデータ値の場所を探るために全メモリが列および行方向に検索されなければならなくなるはずである、何故ならばいくら何でも対象としているデータ値が何処に配置されているかが分からなければどの情報も利用できないからである。
【0004】
メモリ装置の大きさによって不確かな時間が掛かる、1つ1つのエントリーをメモリ装置を通して検索することを避けるために、そのデータ値(そこに関連する情報では無い)はメモリ装置内に予め定められた規則に従って記憶されており、この規則は後で検索手順の間にそのデータ値を再配置する際に使用できる。
【0005】
図5は2次元メモリの1例を示しており、ここでデータ・エントリーは行アドレス部Aと列アドレス部B、すなわちアドレス S=<A(x),B(x)> を有するアドレスでアドレス指定される。Xはバイナリ・ツリー内のノードと見なされ、ここに特定の行アドレスおよび列アドレスが挿入される。図5に示されるように、個別のデータ値Dメモリ装置内にランダムに記憶されていて、通常の手順は記憶されたデータ値を表すためにバイナリ・ツリーデータ構造を使用することである。
【0006】
図6に示されるように、バイナリ・ツリーデータ構造の中で各ノード(そこにデータ値が入力されまた読み出される交点X)が2つの別のノードに接続されている。バイナリ・ツリー(またはそこにマッピングされたエントリーを有するメモリ装置)を通る検索は以下の通りである。データ値D1がノードX(行アドレスA(x)および列アドレスB(X)に配置されている)から読み出され、このデータD1はその記憶アドレスが決定されるべきデータ値Dと比較される。D<D1の場合、ツリーの左側ブランチLが採られ、D1<Dの場合、右側ブランチRが採られる。データ構造(またはメモリ装置内のデータ値)は、論理的に、ノードX2がデータ値D2<D1そしてデータ値D3>D1を持つように構成されている。しかしながら、個別のデータ値D1,D2,D3は本来的にメモり装置内にランダムに記憶されているので、A(X1),B(X1)でD1を読み出した後、バイナリ・ツリー検索を行うためにD2またはD3の位置またはメモリ・アドレスに関する情報が提供される必要がある。
【0007】
従って従来からの1つの解決方法は、各々のデータ値D1,D2,D3が2つのポインタに関連づけられている(記憶されている)、すなわち読み出されたデータ値よりも大きい(R)または小さい(L)データ値の位置を示すアドレスを含む更に2つの別のメモリ位置に関連づけられている。論理的にはバイナリ・ツリー構造が使用されているが、ここで各々の更に次のサブレベルは記憶されているデータ値がそれぞれ、メモリ装置内の先のサブレベル(サブツリー)の中のものよりより大きいかまたはより小さいはずであり、それ自身図5に示されるように基本的にデータ値はメモリ装置内にランダムに記憶されているが、アドレスポインタを使用する論理マッピングはただ1つのみ存在する。
【0008】
異なるアドレス・ポインタを具備したデータ・エントリーを使用すると、そこからデータ値が読み出され検索されるべきデータ値と比較される第1番目のノードである予め定義されたルート・ノードRNが必要となる。この様な検索アルゴリズムが「データ構造並びにアルゴリズム(Data Strutures and Algorithm)」、アホ ホップクロフト、ウルマン(Aho Hopcroft Ullamnn)著;ISDN0-201-00023-7、ページ155ffに記述されている。明らかに欠点が存在し、非常に多種類のデータ値を記憶するためのメモリ空間が必要であり、各々のそして全てのデータ値に対して更に2つのポインタ・エントリがブランチL,Rを示すために必要となる。
D1:バイカス オー(Vikes O)その他著:「高速シーケンシャル・アクセスによるダイナミック・メモリ内検索(Searching in a dynamic memory with fast sequential access)」、Communications of the Association for Computing machinery,第25巻、第7号、1982年7月1日、ページ479−484、XP000719506,は高速シーケンシャル・アクセスによるダイナミック・メモリ内の検索処理手順を記述している。いわゆるアホ・ウルマン(Aho-Ullman)メモリの様な、多数のメモリ位置で構成されている特殊型式メモリは 、シャッフルおよびマイナス・ワンと呼ばれる2つのメモリ変換と一緒に使用される。シャッフル変換は記憶位置のデータを、アドレスのバイナリ表現を1ビット左に循環シフトさせる演算子で変形される記憶位置に移動させる。マイナス・ワン変換は記憶位置内のデータを1の補数にmビット整数を加算することで表される演算子で、別の記憶位置に移動される。検索アルゴリズムは、第1アルゴリズム1:アホ・ウルマン・ランダムアクセスアルゴリズムと第2アルゴリズム:アホ・ウルマン・メモリ内のバイナリ検索用アルゴリズムで構成されている。アルゴリズム2の中で、再びシャッフルおよびマイナス・ワン変換が、新たな位置(記憶位置)を旧記憶位置の変換に基づいて決定するために使用される。従って、行および列アドレスを区別して考慮する事はなく、データの新たな位置アドレスは常に旧論理アドレスをシャッフルする事に基づいて常に決定される。
【0009】
図5にはメモリ装置内の論理バイナリ・ツリーの潜在的な表現のみが存在するが、別の解決策ではバイナリ・ツリーデータ構造をメモリ装置内の固定アドレス、すなわち行列配列の要素にマッピングが使用されている。この場合、分岐アドレスがバイナリ・ツリーノードのメモリ装置内の予め定められた位置にマッピングすることを通して事前に知られており、従ってここではポインタは必要ではなく、メモリ空間も占有しない。ポインタが評価される必要が無いので、検索時間はより早くなるはずである、これは「データ構造並びにアルゴリズム」、アホ ホップクロフト、ウルマン著;ISDN0-201-00023-7、ページ271 ffに開示されている通りである。その様な個別ノードX1,X2,X3のメモリ装置内の特定位置への明示的マッピングを使用して、1つのサブツリー(!)内のそれぞれの「子供」ノードX2,X3のアドレスが計算できる。実際、左および右ブランチを列アドレスAで表現すると、左ブランチは次のように計算される
【0010】
A(L(X))=2A(X)+0一方右ブランチRは次のように計算される
【0011】
A(R(X))=2A(X)+1
【0012】
しかしながらその様なマッピング手段を使用すると、ツリーを最初にトラバースし始めた直後、アドレスの最上位部分がトラバースの全ての後続のステップの中で変化する。従って、ダイナミック随意アクセスメモリ装置の中に記憶されなければならない大きなツリーに対して、それらが大きいために検索時間は未だかなり長くなる。実際の応用に対してより高速な方法が必要とされ、特にアドレスの最上位部分の変化を出来るだけ回避することが必要とされる。
【0013】
(発明の要約)
先に説明したように、従来型の方法は記憶集中ポインタ技法を使用するかまたはサブツリー内の左ブランチまたは右ブランチに接続されている次ノードのアドレスを決定するために列アドレスAの計算を使用するかのいずれかである。これは時間が掛かり、アドレス(行アドレスB)の最上位部分がバイナリ・ツリーをトラバースする後段のステップ毎に変化する事を必要とする。
【0014】
従って、本発明の目的はメモリ装置内の予め定められたデータ値の記憶アドレスを決定するための方法並びにアクセス装置を提供することであり、これはバイナリ・ツリー検索中に記憶場所を決定するためにポインタの使用を必要とせず、記憶アドレスの1部がポインタを使用する代わりに計算される先に説明した方法よりも記憶アドレスをより早く決定できるものである。
【0015】
この目的は添付の独立形の方法の請求項に記載の方法で解決される。更に、この目的は添付の独立形のアクセス装置の請求項記載のアクセス装置で解決される。
【0016】
本質的に、本発明によればアドレスの最上位部分における頻繁な変化を行う必要が無く、アドレスの列部のみならずアドレスの行部も比較結果と現在のアドレスに基づいて決定されるアルゴリズムが提供されている。本発明において、マッピングの列アドレス部は従来技術に記述されているマッピングに対応し、一方マッピングの行部および2つの部分からのアドレスの重要な組み合わせは、メモリ内のデータ値の場所が見つかるまでの検索時間を減少させることを可能とする。
【0017】
本発明によれば、サブツリーのリーフに検索中に到達すると、別のサブツリーの新たなルート・ノードが決定される。このサブツリーの中にデータ値が未だ見つからない場合、検索手順は先のサブツリー内の次のリーフに行き、別のサブツリーの新たなノードを決定する。従って先のサブツリーの複数のリーフが、新たなサブツリーを決定するために順番に使用される。検索は常にツリーの天辺から底部へのトラバースを意味するから、検索は結果としてサブツリーの中へのトラバースとなる。ステップの最少数が結果としてサブツリーの変化となる。マッピングの結果として、サブツリー内部のトラバース中に列アドレスのみを変化させる。それ故、結果として行アドレスを変化させるステップの数が最小化される、すなわち行アドレス内の変化は最少に保たれる。従って、検索に掛かる時間は著しく削減される。
【0018】
本発明の更に別の好適な実施例および改善点は添付の特許請求項から得られるであろう。これ以降、本発明をその実施例を添付図を参照して説明する。
【0019】
図の中で同一または類似の参照番号は同一または類似の部品を指示する。
【0020】
(発明の原理)
本発明の方法ならびにアクセス装置はバイナリ・ツリー内のノードをメモリ装置、好適にダイナミックランダム・アクセス・メモリ(DRAM)のアドレスにマッピングすることに基づいている。DRAMは通常、非常に密度の高い記憶装置を提供するが、これらはランダムに分散されているアクセスに関して比較的遅い。本発明に基づく特定のアドレス指定モードを使用すれば、更に短いアクセス時間が実現出来る。これに対して、ある種の制約が連続的なアクセスの順序のアドレスに適合しなければならない。本発明に基づくマッピングはツリーの検索が常に結果として、それらの制約に適合するアクセス順序となることを保証する。到達可能な性能(時間の減少)は約10倍まで増加する。
【0021】
DRAMのアドレス・ビットは、先に説明されたように一般的に、行アドレスBと列アドレスA(図5参照)と呼ばれる2つの部分に分割される。通常、行および列アドレスの大きさは等しい。DRAMの内部的実行形態のため、連続したアクセスを行アドレスが出来るだけ変化しないように保ちながら列アドレスのみを変化させるようにして実施できる場合、アクセス時間は著しく短くなる。それ故、本発明に基づくマッピングを行うための新奇な方法並びにアクセス装置は、行アドレスを出来るだけ変化させずに保つという基準に整合するツリー検索アルゴリズムを可能とする。
【0022】
(本発明に基づくノード・マッピング)
図1aは本発明に基づくバイナリ・ツリーの複数のサブツリーへの分割を示している。完全なツリーは複数のサブツリー1,2,3,4,5を含む。図1aの中で、各々のサブツリーはルート・ノードを有し、それは「k=1」で示されている。同様に、サブツリーの各々のリーフ・ノードは「k=K」で示されている。Kはサブツリーの「深さ」、すなわち複数の別のノードが存在し、それらは各々のサブツリー内で点線のみで描画されている。従って実際のところ、図1aに描画されている各々のサブツリーはKレベルを含み、これは全てのサブツリー当たり2Kに相当する。
【0023】
一度ルート・ノードがその列−および行アドレス経由でアクセスされると、検索がレベルKの番号を有するサブツリーの中でそれぞれ実行される。各々のサブツリーは(最低)リーフ・ノードを有し、これは次のサブツリーのそれぞれのルート・ノードに接続されている。注意されたいのは図1aの中で、サブツリーのルート・ノードまたはリーフ・ノードのいずれかのノードのみが完全に描かれている。例えば、サブツリー1のリーフ・ノードLNはサブツリー3のルート・ノードX1に直接接続されている。ルート・ノードX1とそのリーフ・ノードX2,X3の間には多数の中間ノードが存在する。ルート・ノードはk=1に配置されており、リーフ・ノードはk=Kに配置されている。サブツリー5のリーフ・ノードLNはまた同時に全バイナリ・ツリーのリーフ・ノードを構成している。従って、全ツリーのルートとリーフと、サブツリーのルートとリーフの間の区別をすることが重要である。各サブツリーの中で、変数kはサブツリーの各トラバース毎に1からKへステップ的に変化し、検索されている値が見つかるか全ツリーのリーフ・ノードに到達するまで繰り返される。
【0024】
1つのサブツリー内のリーフの数は、実際のメモリ・ハードウェアに依存する。本発明によれば、メモリ位置へのマッピングは1つの行が2K−1個のエントリー、すなわち列を含むように実施される。以下に示されるように、各サブツリー内での本発明に基づく検索は1つの個別行内での検索に相当する。行に沿った(例えばサブツリー1に沿った)メモリ位置は、ルート・ノード、サブツリー・ノードおよび特定のサブツリーのリーフ・ノードLNに対応する。各読み取りデータ値D1,D2,D3は場所を探されるデータ値Dと比較され、サブツリー内で左または右ブランチの何れを採るべきかの判断が行われる。
【0025】
データの構造は下記の通りである:サブツリー内のノードのレベルk(k=1,2,...,K)が深くなればなるほど、データ値はより高くなる。これはデータを昇順に列に沿って並べることと等価である。すなわち、特定のデータ値Dが何処に配置されているかが分からなくても、D1<D2<D3等々は知られていなければならない。これは、エントリーがツリーの左から右へ値が昇順となるように並べられた完全にバランスしているバイナリ・ツリーのノードに格納されていることを意味している(従って、またサブツリーの中では図1a,1b内の値D1,D2,D3で示されるようにである)。
【0026】
もちろん個別のデータ値をバイナリ・ツリーの中で左から右に昇順に記憶すること(メモリ内の列方向に昇順に)は各々のツリー内で使用される検索アルゴリズムに影響を持つ。先に説明されたように、主たる目的は出来る限り行の変化を少なくすることである、すなわちアドレスS=<A,B>の最上位部の変化が出来る限り頻繁には生じないようにすることであり、それは列方向の検索のみが非常に高速だからである。データ値を列方向に昇順に記憶することは、結果として列方向の最終エントリーが各サブツリーのリーフ・ノードLNを構成しなければならないこととなる。いくつのリーフ・ノードLN(図1b内のリーフ・ノード記憶位置LN)が指定されるかは、サブツリー内のレベルの数に依存する、すなわち列方向のメモリの大きさに依存する。例えば、レベルK=3を有するサブツリーは4つのリーフ・ノードLNを列方向で4カ所の右端に含む(図3a,3bの例を参照)。
【0027】
(第1実施例(検索方策))
先に概要を示したように、本発明はバイナリ・ツリーを2次元メモリ空間の中に、各々の行がサブツリーに対応するようにマッピングし、特定の検索方策が各行またはサブツリー内で使用できるようにすることを提供している。この検索は各サブツリー内で、読み取り値と検索されているデータ値との間で一致するかリーフ・ノードLNが見つかると中断する。従って検索を各サブツリー内で実行する際、検索アルゴリズムはどのレベルに居るかをたえず追跡しなければならないが、それは行アドレスの変化はリーフ・ノードに達した時にのみ実行されるからである。本発明の中で、検索アドレスが各サブツリー内で計算出来ることが分かるだけではなく、次サブツリーの特定の新たなルート・ノードアドレスが比較結果とリーフ・ノードの現在アドレスからのみ計算出来ることも分かる。すなわち、本発明に基づけば、次のデータ値が読み出されるべきノードの記憶アドレスを指定する新たな完全なアドレスS=<A,B>は、現在読み出されるメモリ位置の現在アドレスから、比較結果に基づいて計算される。これはサブツリー内の次ノードのアドレスに適用し、また検索が継続されるべき次サブツリーの次ルート・ノードの記憶アドレスを探すためにも有効である。
【0028】
図2は本発明に基づく検索方法の実施例に基づく流れ図を示す。このアルゴリズムに関して、完全なバイナリ・ツリーが図1bに基づくサブツリーに分割され、ルートサブツリーの下のレベルの左端のサブツリーは切り離される。
【0029】
説明されたように、サブツリー内のレベルの数は実際のDRAMハードウェアの列アドレス内のビット数に等しい。従って、ステップS1で検索方法を開始した後、第1サブツリー1のレベルがk=1にセットされる、すなわちこの検索はサブツリー1のルート・ノードRNから開始される(図1a参照)。次に、ステップS3で、検索されるべきデータ値I、サブツリーK毎のレベル数、同様にルート・ノードRNの位置またはルート・アドレスA(0),B(0)が入力されなければならない。従って第1サブツリー1のルート・ノードRNが検索アルゴリズムの導入点である。
【0030】
ステップS4で、現在アドレス<A(0),B(0)>のデータ値Dがサブツリー1のルート・ノードRNから読みとられる。ステップS5で読みとられたデータ値Dが場所を求めているデータ値Iと比較される。ステップS5でD=Iの一致が確立されると、見つけられたデータ値Dに関連する情報がステップS7で読みとられ、その後ステップS11で検索は終了する。
【0031】
ステップS5で読み取りデータ値Dが検索されるべきデータ値Iより大きい場合、ステップS6はリーフ・ノードLNに到達したか否かの判断が行われる。これはレベルKの与えられた番号と実行番号kを比較して決定される。ステップS6で、k<Kが確立されるとステップS9,S14が実行される。ステップS9の中で以下の式を用いて、サブツリー1内の左側ブランチ(I<D)に沿ったノードの新たなアドレスが計算される:
【0032】
B(L(X))=B(X)
A(L(X))=2*A(X)+0 (1)
【0033】
ここで、B(L(X))およびA(L(X))はサブツリー1内の次サブ・ノードの新たな行アドレスおよび列アドレスを表す。従って、深さレベルkの実行番号はステップS14で増加更新される。
【0034】
同様に、ステップS5でI<Dと判定されると、ルート・ノードRNから右ブランチが採られ、ステップS8でサブツリーの最深部に未だ達していないと判断される場合、すなわちk<Kの場合、ステップS12,S16がステップS9,S14と同様に実行され、ここで式(2)は以下のようにサブツリー1内の次エントリーまたはサブ・ノードの記憶アドレスを定義する:
【0035】
B(R(X))=B(X)
A(R(X))=2*A(X)+1 (2)
【0036】
ステップS5,ステップS6,S8およびステップS9,S12から分かるように、サブツリー内で列アドレス部Aのみが修正される、すなわち左ブランチに対しては2倍され、または右ブランチに対しては2倍されて列を右側に更に1つ移動される。重要なことは行アドレス部BはステップS5での判断に関係なく同じに留まっていることである。もちろん、式(1),(2)で与えられる定義は列方向に沿ったデータ値が昇順であることの直接の結果である。読み取りデータ値が大きい場合、列アドレスの2倍にジャンプされ、読み取りデータ値が検索されるIよりも小さい場合、これは現在の列アドレスを2倍して1が加算される。
【0037】
もちろん、ステップS9,S12はk<K(K=最大深さまたは1つのサブツリー内のレベル数;Kは予め定められている)に対してのみ実施されるので、新たなデー値DはステップS4で、ステップS9,S14内で決定される新たなアドレスA,Bで読みとられる。参照番号Rはそれぞれ個別のステップS4,S5,S6,S9,S14およびS4,S5,S8,S12,S16を通るこの再帰的実行を示す。再帰的処理の間、サブツリーの中で、データ値が見つかると(I=D)アルゴリズムはステップS11で終了する。
【0038】
しかしながら、k回繰り返した後、ステップS6,またはS8は割り当てられたサブツリーの最深部に達したか否かを決定する、すなわちk=K、これはリーフ・ノード記憶位置LNに達したことを意味する。データ値が列方向に昇順であること、すなわち各行内でデータ値が列方向に増加すること、ここでは常に次行内の列位置1のデータ値は、次のより小さい行内の最も高い列位置2Kのデータ値よりも大きい、を使用することによりリーフ・ノードLNは図1b内のメモリ装置のアドレス空間の中で、列アドレスAの最も右端の最終メモリ位置に対応しなければならないことが明らかである。
【0039】
サブツリー1内のリーフ・ノードLNに達すると、下記の式(3),(4)がステップS10,S13で採用され、それぞれ以降のサブツリーのルート・ノードの新たな行アドレスおよび列アドレスを計算する:
【0040】
B(L(X)) = 2K*B(X) + 2*A(X) + 0 − 2K
A(L(X)) = 1 (3)
【0041】
B(R(X)) = 2K*B(X) + 2*A(X) + 1 − 2K
A(R(X)) = 1 (4)
【0042】
式(3)、(4)から、リーフ・ノードが発生する場合、列アドレスAは−ステップS5での決定とは無関係に−第1列、すなわちA(L(X))=A(R(X))=1にセットされることが分かる。しかしながらステップS5での決定に依存して、新たな行アドレスBは選択される。
【0043】
リーフ・ノードLNからの矢印が式(3)、(4)に基づく計算を示している図1bから、実際に次サブツリーの次のルート・ノードが列A=1に配置されているが、誰もが予想するように次の隣接したサブツリー2の上に配置されては居ないことを注意することは興味深い。これに対し、式(3)、(4)は一種の列/行マッピングを実行し、ここで検索されるべき次サブツリーの次ルート・ノードの新たなアドレスは、式(4)に対しては置換されたリーフ・ノードアドレスが対応し、式(3)に対しては置換されたアドレス−1が対応している。
【0044】
検索されるべき次サブツリーの次ルート・ノードをステップS13で決定すると、kはステップS17の中でk=1にリセットされるが、これは明らかに次サブツリー内での検索はレベル1、すなわちルート・ノードアドレスで開始されるからである。次に再びステップS4で、次データ値Dが読み出され、ステップS5,S6,S9,S14またはステップS5,S8,S12,S16がそれぞれDとIの一致が見つかるかまたは新たなサブツリーのリーフ・ノードが再び見つかるまで実行される。
【0045】
もちろん、図1b内のサブツリー4またはサブツリー5の中でさえもデータ値が発見されず、その結果リーフ・ノードLNに達する場合もあるであろう。例えば、サブツリー5の中でリーフ・ノードLNに達する場合、もしも行と列の数が等しいと、式(3)も式(4)もどちらもアドレス空間に含まれるアドレスに結果として達することは出来ない。行の番号が列の番号より大きい場合は、もちろん新たなサブツリーの更に新たな計算を実行することが可能である。しかしながら、例えばサブツリー4の中でリーフ・ノードに達した場合は、更に次のサブツリー・ルート・ノードを決定することが出来ないという問題は残る。第1に、これはサブツリー4を通してバイナリ・サーチの中でデータ値が見つからなかったことを示し、そして第2に検索されるべきデータ値IがLNの記憶アドレス以下の行および列アドレス内に記憶されている全てのデータ値Dよりも明らかに大きいかまたは小さくなければならない。この場合、アルゴリズムはそこからサブツリー4のルート・ノードが計算されたサブツリー1内のリーフ・ノードLNの記憶アドレスに追尾して戻る(図1bに点線で示されている)。次にサブツリー1内の右の次リーフ・ノードLNが新たなサブツリー・ルート・ノードを計算するための基礎として使用される。すなわち、列アドレスAは1列だけA+1に増やされ、一方Bはそのまま一定に保たれる。もちろん、これは新たなルート・ノード、例えばサブツリー5の計算に導く。
【0046】
注意されたいのは、リーフ・ノードLNに戻った後(点線で示すようにリーフ・ノードLNの再計算を通して)左側のリーフ・ノード(1つ存在して居る場合)に行く必要は実際に無いと言うことであり、それはサブツリー1内のリーフ・ノードへ戻ると言うことは自動的に、全ての読み出しデータ値Dが検索されるべきデータ値Iよりも小さかったことを意味するからである。従って、列方向で(サブツリーの水平方向)、全てのリーフ・ノードは新たなサブツリーのルート・ノードを決定するために昇順とされている。例えばサブツリー5の最終リーフ・ノードLNに達する場合、データ値Iは指定されたアドレス空間の範囲でメモり装置内には含まれていない。
【0047】
注意されたいのは、好適にステップS5の中である種の許容範囲が許されていて、例えばDとIとの一致は或る程度の許容値内で成立するようにしているということであり、すなわち|D−I|<△Dの場合一致が見られるということであり、此処で△Dは予め指定された許容範囲を示している。
【0048】
(K=3の例)
図3a,3bは特定の例に関する図1a,1b,2内の一般的アルゴリズムを図示し、此処では列アドレスAおよび行アドレスBに対してバイナリ表記が使用されている。K=3は8列および8行が原理的にメモりアドレス空間内に具備されていることを意味する。式(1)、(2)はバイナリ・ツリーの頂上の一番最初のルート・ノードRNがアドレスA(0),B(0)=(000,000)を持つ場合変化を与えないので、列アドレスA=000は使用されない。従って、図2のステップS4が最初に実行される時に対照される第1ノードは、常に図3a内の一番上左端のメモリ位置、すなわち第1サブツリーの一番上の第1ルート・ノードに対して、B(0)=0|A(0)=1である。
【0049】
行および列のアドレス番号に対してバイナリ表現を使用すると、図3bはアドレス000,001を具備した最初の2行の中に配置されているサブツリー1およびサブツリー2を示す。左側ブランチLに対して2を掛け算することは、単に列アドレス部Aを左にシフトすることを意味する。その列アドレス部A内の結果右側ブランチRは左にシフトされて「1」が加えられる。従って、個別アドレスおよびk=2での中間ノード、およびk=3でのリーフ・ノードは特定のデータ値Dが配置されている特定の行及び列に対応する。図3bはデータ値D=3,5,6,7...をそれぞれの中間ノードおよびリーフ・ノード部に示している。明らかに図2のアルゴリズムは、4つのノード、0,100または0,101または0,110または0,111のいずれか1つに達すると常に、次サブツリーの新たなルート・ノードアドレスを計算する。新たなルート・ノードを計算するために許されていないブランチが唯1つ存在し、それはアドレス0,100の場合に読み出しデータ値D=7が検索されるべきデータ値Iよりも大きい状況である。この場合実際にアドレス0,100から左ブランチが採られる、すなわち式(3)が採用されなければならない。しかしながら、この場合左側ブランチに対する式(3)は、B(L(X))=2K(000)+2(100)-2K=0000+1000-1000=0000を算出する。従って、第1左ブランチは図1aで「切断」、または000,100と000,001の間の点線は採用されるべきではなく、それは検索がルート・ノードアドレスから再び開始されることになるからである。
【0050】
しかしながら、右側ブランチを採る場合、B(R(X))=001、これはアドレス0,100を具備した一番左側のリーフ・ノードLNが結果として001,001の次リーフ・ノードルートアドレスとなることを意味している。図3bに示されているように、これは実際の所第2行に配置されているサブツリー2のルート・ノードに対応する。図3aから分かるように、サブツリー1の各々のリーフ・ノードは特定行アドレスにおける位置A=1に配置されている新たなサブツリーの新たなルート・ノードに「マッピング」または「変換」することが出来る。行の数が少なくとも列の大きさと同じ大きさの場合、サブツリー1の各リーフ・ノードLNが第1列内の新たなルート・ノードアドレスの中に「写像」または「置き換え」出来ることが保証される。
【0051】
これもまた図3a,3bから分かるように、列方向に昇順にデータ値が並んでいる場合、式(1)−(4)で記述されている検索アルゴリズムは行アドレス変化の最少番号が採用されることを保証し、一方検索されるべきデータ値Iとの一致(許容範囲内で)を見つけるために、全メモリ行列が検索される。
【0052】
好適に列アドレス部Aと行アドレス部Bのバイナリ表現を使用することにより検索が容易になるが、それは2を乗算することが単にアドレスをシフトレジスタ内で左にシフトすることを意味するからである。
【0053】
実際、図3aまた一般式(3),(4)から容易に分かるように、新たな行アドレスB(Aからの左側ブランチに対するもの)はリーフ・ノードの列アドレス部Aの反転、すなわちB(L(X))=010=101の否定を意味する。同様にリーフ・ノードの右側ブランチに対して、新たなルート・ノードの新たなアドレス部はリーフ・ノード列アドレスの反転+1、すなわちB(R(X))=101の否定+1=011となる。これはもちろん暗黙の内にバイナリ・ツリーの頂上の第1ルート・ノードRNがB(0)=0,A(0)=1に割り当てられていることを仮定している。
【0054】
これ以降、図1−3で説明されたこの様な検索方法を用いた本発明の基づくアクセス装置の実施例をハードウェアで実現することを、図4を参照して説明する。
【0055】
(第2の実施例(ハードウェアでの実現))
図4でDRAMはメモリ装置と読み出しデータ値Dと、検索されるべき前記データ値Iとを比較して前記読み出しデータ値Dが検索されるべき前記データ値Iよりも大きいかまたは小さいかを決定するための比較装置MCを含むアクセス装置とを示す。DとEとの間の一致が比較装置で見つかると、一致信号Mが出力される。比較結果Cは値Dが値Iよりも大きいかまたは小さいかを示している。読み出し装置R(詳細は図示せず)は予め定められた現行検索アドレスA,Bのデータ値を読み出し、これらのアドレスはツリーをトラバースする間、中間行および列アドレスを保持している2つのレジスタRA,RBから入力される。
【0056】
アクセス装置は更に、判定装置SEQ,SMB,SMAを含み、これらは比較結果Cおよび前記現行の検索アドレスA,Bに基づき、データ値を次に検索すべき全検索アドレスを決定するためのレジスタRB,RAを含む。
【0057】
決定装置は前記第1および第2レジスタと、検索されるべき次列および行アドレスA’,B’を比較結果C、現行のアドレスA,Bに基づいて計算するための、第1および第2計算回路SMB,SMAおよび状態機械SEQから出力される制御信号Sを含む。
【0058】
状態機械SEQはバイナリ・ツリーデータ構造を検索する間の検索状態を決定し(実際これはKを監視し、従って暗黙の内に図2内のステップS6,S8を実行する)、比較結果に基づいて制御信号Sを決定する。本質的に、状態機械SEQは計数器と状態決定装置STDMを含み、内部STATEtに基づき制御信号Sを生成する。本質的に、状態機械の内部状態は現行レベル番号kに対応し、これは新たな比較結果C(D<Iであるか否かを示す)が比較装置MCから出力される毎に更新される。すなわち、サブツリーのルート・ノードに対して状態は0であり、非リーフ・ノード(ルート・ノードを除く)に対しては1からK−1,そしてリーフ・ノードに対してはKである。同様に制御信号Sはルート・ノードに対しては0、非リーフ・ノード(サブノード)に対しては1そしてリーフ・ノードに対しては2である。状態0でルート・ノードから開始すると、状態機械SEQはツリーを頂上から下にトラバースする際に、サブツリーの区分けに従って進むはずである。信号Sはマッピングに基づいてSMBおよびSMA内のアドレス計算の型式を選択する。
【0059】
特に、アクセス装置の個別の項目は以下の機能を実行する。第1計算回路SMBは下記の機能(関数表現で与えられている)を実行し、此処でKはサブツリー内のレベル番号である。
【0060】
S=0 の場合 B’=0
S=1 の場合 B’=B
S=2 の場合 B’=2K*B+2*A+C−2K (6)
【0061】
ここでC(D>Iの時0,D<Iの時1)は比較結果を表し、BおよびB’は現行および次の行アドレスを表し、Sは制御信号を表し、Kはサブツリー内のレベルの前記予め定められた番号を表し、そしてAは現行の列アドレスを表す。
【0062】
第2計算回路SMAは下記の機能(関数表現で与えられている)を実行する:
【0063】
S=0 の場合 A’=1
S=1 の場合 A’=2*A+C
S=2 の場合 A’=1 (7)
【0064】
ここでCは比較結果を表し、AおよびA’は現行および次の列アドレスを表し、そしてSは制御信号を表す。
【0065】
状態機械SEQは以下の式(8)および(9)に基づき制御信号を計算する。
【0066】
STATEt=0 の場合 S=0
STATEt=k の場合 S=1
0<STATEt<K の場合 S=2 (8)
【0067】
ここで前記状態機械(SEQ)の状態決定装置(STDM)は、下記の式(9)に基づき状態機械(SEQ)は内部状態STATEk(すなわち図2の値k)を計算する:
【0068】
t=0 の場合 STATEt=0
STATEt=0 の場合 STATEt+1=2
STATEt=K の場合 STATEt+1=1
0<STATEt<K の場合 STATEt+1=STATEt+1 (9)
【0069】
ここでSTATEtおよびSTATEt+1は、時刻tおよびt+1における状態を表し、tは比較結果から計数された比較数を表し、ここで0<t<KおよびSTATEt=0は、第1比較がバイナリ・ツリーデータ構造のルート・ノードRNに対応するメモリ位置で実行された際の状態を表す。
【0070】
既に図1b,3aの点線から明らかなように、また図4のアクセス装置はそれぞれ、そこからルート・ノードサブツリーアドレスが計算されたリーフ・ノードアドレスを記憶する。次サブツリー検索の結果一致しなかった場合、すなわち次サブツリーのリーフ・ノードに到達した場合(そして新たなサブツリー・ノードの再計算の結果行アドレスBがメモリDRAMの行アドレス空間を超えた場合)、前回サブツリーの次に高いまたは低いリーフ・ノードアドレスが新たなサブツリールート・ノードを計算するための基礎として採用される。従って、図4に示されるアクセス装置はまた、全メモリの全検索を実行できる。
【0071】
図4において、リーフ・ノード監視装置LN−MONは、そこから次サブツリーが計算されたリーフ・ノードの最終アドレスを記憶している。すなわち、S=2の場合(サブツリーの全検索が行われたことを示す)新たなルート・ノードが現行の列アドレスAと行アドレスBから式(3),(4)に基づいて計算される。サブツリーを通して次回の繰り返しの後、再びリーフ・ノードLNが見つかり、このリーフ・ノードアドレスからの新たなルート・ノードで新たに行われた計算の結果、メモリのメモリ・アドレス空間内に含まれていない行アドレスが得られると、リーフ・ノード監視装置LN−MONは前回サブツリーから最終リーフ・ノードアドレスを入力し、列アドレス部Aに値1を加算したり、またはそこから値1を引き算する。「左」(−1)リーフ・ノードアドレスに基づいて計算されたルート・ノードアドレスが結果としてデータ項目を見つけられない場合、次のステップで旧リーフ・ノード(+1)の右のリーフ・ノードが次ルート・ノードアドレスを計算するための基礎として採用される。それぞれ前回サブツリーのリーフ・ノードアドレスに基づくルート・ノードアドレスを有する全てのサブツリーが結果としてメモり内に配置されているデータ値に到達しない場合、最終的にデータ値Iはメモリ内に現在存在していないと結論付けられる。
【0072】
説明されたように、これらの環境下で、現在考慮しているリーフ・ノードの左側および右側の次リーフ・ノードのみが次ルート・ノードアドレスを計算するための基礎として採られれば十分であると思われる。例えば、図3aにおいて、前回サブツリー・ノードアドレス000,110に基づく2つのルート・ノード100,001が共に、それらに関連するサブツリーを通して検索した結果一致に至らなかった場合、左下リーフ・ノード000,101と次に高いリーフ・ノード000,111のみが次サブツリーの新たなルート・ノードアドレスを計算するための基礎として採られれば十分と思われる。リーフ・ノードアドレス000,100に戻る理由は無く、それはサブツリー1内でリーフ・ノード000,101に達するといつも、位置を探す対象のデータ値Iがリーフ・ノードアドレス000,100に配置されているデータ値D=7よりも大きいことが確立されているからである。従って、3つのリーフ・ノードを順に使用することにより、データ値Iに対して全メモリ配列の検索が終了する。
【0073】
(産業上の利用性)
先に概要を示したように、本発明に基づく方法並びにアクセス装置は、サブツリー内の変化が引き起こされる前に最少ステップ数のみを使用する。次の通りマッピングから、サブツリー内部でのトラバース中に列アドレスのみが変化する。ダイナミック随意アクセスメモリが使用されなければならない場合、データの量が多いので、本発明はバイナリ・ツリーデータ構造に基づいて記憶されているデータ値に対して高速サーチ・エンジンを提供できる。節約される時間はかなりなものとなる。従って、本発明は大規模メモリ内でデータ値の場所を探すための時間が重要であるような全ての技術領域で使用できる。唯一の制限は、データ値が列方向に昇順に記憶されることである。
【0074】
注意されたいのは、上記の説明の中で行を列と入れ替えることが可能であり、それはメモリの構造に依存してどちらの記憶方向がそれぞれ行および列として表されるかが決まるからである。
【0075】
先に説明されたように、本発明に基づけばメモリを通しての高速検索が、ポインタを使用することなく実現可能であり、此処で行部および列部で構成される全記憶アドレスがそれぞれ前回比較結果および前回格納アドレスから決定できる。
【図面の簡単な説明】
【図1a】 図1aは本発明に基づくサブツリーを使用したバイナリ・ツリー構造を示す。
【図1b】 図1bは各々の行が図1aのサブツリー上にマッピングされているメモリ装置を示す。
【図2】 図2は本発明に基づく検索方法を図示する流れ図である。
【図3a】 図3aは新たなサブツリーの新たなルート・アドレスが、第1行に位置しているリーフ・ノードのアドレスからどの様にして決定されるかの例を示す。
【図3b】 図3bは図3aに示されているメモリ装置の第1および第2行内の2つのバイナリ・ツリー検索の例を示す。
【図4】 図4は、本発明に基づきDRAMメモリ内に記憶されているデータ値にアクセスするためのアクセス装置の1つの実施例を示す。
【図5】 図5は、従来技術に基づき特定のアドレス位置に、データ値がランダムに記憶されているメモリ装置を示す。
【図6】 図6は従来技術に基づきバイナリ・ツリー検索を実行するための従来型論理的バイナリ・ツリー構造を示す。
Claims (20)
- 複数のデータ値(D)が列アドレスA(X)と行アドレスB(X)に対応したメモリ位置Xに記憶されるようにしたメモリ装置(DRAM)内の所定のデータ値(D)の記憶アドレス(A(X),B(X))を決定するための方法であって、
前記メモリ位置Xはバイナリ・ツリーデータ構造のノードに対応し、当該バイナリ・ツリーデータ構造は、バイナリ・ツリー・ルートノード(RN)からなる最高位のツリーレベルから、複数のバイナリ・ツリー・リーフノード(LN)からなる最低位のツリーレベルに至る、データ値をともなった複数のノードからなり、ツリーレベルの各上位のノードとその次に低いツリーレベルにある2つの下位のノードは、当該下位の2つのノードのうちの1つのノードが前記上位のノードのデータ値に対して小さいデータ値を有し、当該下位の2つのノードのうちの他の1つのノードが前記上位のノードのデータ値に対して大きいデータ値を有しており、さらに、
前記バイナリ・ツリーデータ構造は、1又は2以上のツリーレベル(k=1、k=2、k=3)からなる所定のサブツリー深さKを有する複数のサブツリーとして論理的に構成され、各サブツリーは、ルートノードと、前記所定のサブツリー深さKに対応した中間ノードと、その次の下位のサブツリーのルートノードを構成する複数のリーフノードとを有し、
ある1つのサブツリーのルートノードと当該サブツリーの中間ノードと当該サブツリーのリーフノードのデータ値が前記メモリ装置(DRAM)の1つの行に対応し、それぞれのサブツリーのルートノードのデータ値は第1の列位置となるように、前記メモリ装置(DRAM)にデータ値(D)が記憶されて、前記メモリ装置(DRAM)の1つの行が1つのサブツリーの2 K −1個のデータ値を含み、
a) 予め定められた現行の検索アドレス(A(X),B(X))のデータ値(D)を前記メモリ装置から読み出すステップと、
b) 読み出されたデータ値(D)が検索されるべきデータ値(I)より大きいかまたは小さいかを決定するために、前記読み出されたデータ値(D)を検索されるべき前記データ値(I)とを比較するステップと、
c1)前記ステップb)で実施された比較の回数が前記所定のサブツリー深さKに等しくない場合、データ値が検索されるべき次検索アドレス(A’,B’)の次列アドレスA(L(X)),A(R(X))を比較結果(C)と前記現行の列アドレスA(X)に基づいて計算する一方、次行アドレスB(L(X)),B(R(X))を現行の行アドレスB(X)のまま設定するステップと、
c2)前記ステップb)で実施された比較の回数が前記所定のサブツリー深さKに等しい場合、データ値に対して検索されるべき次検索アドレス(A’,B’)の次行アドレスB(L(X)),B(R(X))を比較結果(C)、前記現行の列アドレスA(X)、前記現行の行アドレスB(X)および前記レベルKの数に基づいて計算する一方、次列アドレスA(L(X)),A(R(X))を1に設定するステップとを含み、
d) 前記読み出しデータ値(D)が検索されるべき前記データ値(I)と予め定められた許容範囲(△D)内で一致するまで、ステップa)−c)が再帰的に実行される、前記方法。 - 請求項1記載の方法であって、
データ値(D)は値の昇順に前記列方向に向かって記憶されている、前記方法。 - 請求項1又は2記載の方法であって、
前記データ値(D)が最少データ値と最大データ値との範囲内にあり、ここで前記範囲の中央値に相当する中央データ値が予め定められたルート・アドレス(A(0),B(0);「ルート」)に記憶されており、ここでステップa)が最初に実施される際に前記ルート・アドレスが前記現行のアドレスとして使用されることを特徴とする、前記方法。 - 請求項1又は2記載の方法であって、
ステップb)の前記比較結果(C)が読み出しデータ値が検索されるべき前記データ値よりも小さいと示した際に(「左分岐」)、ステップc1)における前記次アドレスが下記の式(1)で計算され
B(L(X))=B(X)
A(L(X))=2*A(X)+0 (1)
ここでXは現行のアドレス(A(X),B(X))で定義される現行メモリ位置を表し、A(X)およびB(X)は現行メモリ位置Xの列アドレスおよび行アドレスを表し、L(X)は現行メモリ位置Xに記憶されているデータ値よりも小さいデータ値が記憶されている次メモリ位置を表し、A(L(X))およびB(L(X))は次メモリ位置L(X)の列アドレスおよび行アドレスを表すことを特徴とする、前記方法。 - 請求項1又は2記載の方法であって、
ステップb)の前記比較結果が読み出しデータ値が検索されるべき前記データ値よりも大きいと示した際に(「右分岐」)、ステップc1)における前記次アドレスが下記の式(2)で計算され
B(R(X))=B(X)
A(R(X))=2*A(X)+1 (2)
ここでXは現行のアドレス(A(X),B(X))で定義される現行メモリ位置を表し、A(X)およびB(X)は現行メモリ位置Xの列アドレスおよび行アドレスを表し、R(X)は現行メモリ位置Xに記憶されているデータ値よりも大きいデータ値が記憶されている次メモリ位置を表し、A(R(X))およびB(R(X))は次メモリ位置R(X)の列アドレスおよび行アドレスを表すことを特徴とする、前記方法。 - 請求項1又は2記載の方法であって、
ステップb)の前記比較結果(C)が読み出しデータ値が検索されるべき前記データ値よりも小さいと示した際に(「左リーフ」)、ステップc2)における前記次アドレスが下記の式(3)で計算され
B(L(X))=2K*B(X)+2*A(X)+0−2K
A(L(X))=1 (3)
ここでXは現行のアドレス(A(X),B(X))で定義される現行メモリ位置を表し、A(X)およびB(X)は現行メモリ位置Xの列アドレスおよび行アドレスを表し、L(X)は現行メモリ位置Xに記憶されているデータ値よりも小さいデータ値が記憶されている次メモリ位置を表し、A(L(X))およびB(L(X))は次メモリ位置L(X)の列アドレスおよび行アドレスを表し、2Kがメモリ装置内の列の数であることを特徴とする、前記方法。 - 請求項1又は2記載の方法であって、
ステップb)の前記比較結果(C)が読み出しデータ値が検索されるべき前記データ値よりも大きいと示した際に(「右リーフ」)、ステップc2)における前記次アドレスが下記の式(4)で計算され
B(R(X))=2K*B(X)+2*A(X)+1−2K
A(R(X))=1 (4)
ここでXは現行のアドレス(A(X),B(X))で定義される現行メモリ位置を表し、A(X)およびB(X)は現行メモリ位置Xの列アドレスおよび行アドレスを表し、R(X)は現行メモリ位置Xに記憶されているデータ値よりも大きいデータ値が記憶されている次メモリ位置を表し、A(R(X))およびB(R(X))は次メモリ位置R(X)の列アドレスおよび行アドレスを表し、2Kがメモリ装置内の列の数であることを特徴とする、前記方法。 - 請求項4または6の1つに記載の方法であって、
前記次アドレスに記憶されている前記データ値が現行のアドレスに記憶されているデータ値の半分であることを特徴とする、前記方法。 - 請求項5または7の1つに記載の方法であって、
前記次アドレスに記憶されている前記データ値が現行のアドレスに記憶されているデータ値の1.5倍であることを特徴とする、前記方法。 - 請求項1又は2記載の方法であって、
前記ステップd)の後、前記一致したデータ値に関連して記憶されている情報が、前記現行のアドレスを有するメモリ位置から読み出されることを特徴とする、前記方法。 - 請求項1又は2記載の方法であって、
前記メモリ装置がDRAMまたはキャッシュ・メモリの1つであることを特徴とする、前記方法。 - 複数のデータ値(D)が列アドレスA(X)と行アドレスB(X)に対応したメモリ位置Xに記憶されるようにしたメモリ装置(DRAM)内の所定のデータ値(D)の記憶アドレス(A(X),B(X))を決定するためのメモリ装置用のアクセス装置であって、
前記メモリ位置Xはバイナリ・ツリーデータ構造のノードに対応し、当該バイナリ・ツリーデータ構造は、バイナリ・ツリー・ルートノード(RN)からなる最高位のツリーレベルから、複数のバイナリ・ツリー・リーフノード(LN)からなる最低位のツリーレベルに至る、データ値をともなった複数のノードからなり、ツリーレベルの各上位のノードとその次に低いツリーレベルにある2つの下位のノードは、当該下位の2つのノードのうちの1つのノードが前記上位のノードのデータ値に対して小さいデータ値を有し、当該下位の2つのノードのうちの他の1つのノードが前記上位のノードのデータ値に対して大きいデータ値を有しており、さらに、
前記バイナリ・ツリーデータ構造は、1又は2以上のツリーレベル(k=1、k=2、k=3)からなる所定のサブツリー深さKを有する複数のサブツリーとして論理的に構成され、各サブツリーは、ルートノードと、前記所定のサブツリー深さKに対応した中間ノードと、その次の下位のサブツリーのルートノードを構成する複数のリーフノードとを有し、
ある1つのサブツリーのルートノードと当該サブツリーの中間ノードと当該サブツリーのリーフノードのデータ値が前記メモリ装置(DRAM)の1つの行に対応し、それぞれのサブツリーのルートノードのデータ値は第1の列位置となるように、前記メモリ装置(DRAM)にデータ値(D)が記憶されて、前記メモリ装置(DRAM)の1つの行が1つのサブツリーの2 K −1個のデータ値を含み、
a) 前記メモリ装置の予め定められた現行の検索アドレス(A(X),B(X))のデータ値(D)を読み出すための読み出し装置(R)と;
b) 読み出されたデータ値(D)が検索されるべきデータ値(I)より大きいかまたは小さいかを決定するために、前記読み出されたデータ値(D)を検索されるべき前記データ値(I)とを比較するための比較装置(MC)と、
c) 比較結果(C)と前記現行の検索アドレス(A(X),B(X))に基づいて、データ値を検索する完全な次検索アドレス(A,B)を決定するための決定装置(SEQ,SMB,SMA,RB,RA)とを含み、前記決定装置は、
c1)前記比較装置(MC)で実施された比較の回数であって、計数器(CNT)で計数された回数が前記所定のサブツリー深さKに等しくない場合、データ値に対して検索されるべき次検索アドレス(A’,B’)の次列アドレスA(L(X)),A(R(X))を比較結果(C)と前記現行の列アドレスA(X)に基づいて計算する一方、次行アドレスB(L(X)),B(R(X))を現行の行アドレスB(X)のまま設定するよう計算するように適合された第1計算装置(S9;S12;SMA)と、
c2)前記比較装置(MC)で実施された比較の回数であって、計数器(CNT)で計数された回数が前記所定のサブツリー深さKに等しい場合、データ値に対して検索されるべき次検索アドレス(A’,B’)の次行アドレスB(L(X)),B(R(X))を比較結果(C)、前記現行の列アドレスA(X)、前記現行の行アドレスB(X)および前記レベルKの数に基づいて計算する一方、次列アドレスA(L(X)),A(R(X))を1に設定するよう計算するように適合された第2計算装置(S9;S12;SMB)とを含み、
d) 前記読み出し装置、前記比較装置および前記決定装置が、前記読み出し、前記比較および前記決定を、前記読み出しデータ値(D)が検索されるべき前記データ値(I)と予め定められた許容範囲内で一致するまで再帰的に実行する、前記アクセス装置。 - 請求項12記載のアクセス装置であって、
データ値(D)は値の昇順に前記列方向に記憶されている、前記アクセス装置。 - 請求項12又は13記載のアクセス装置であって、
前記決定装置は、
− 前記次列および行アドレス(A’,B’)を保持するための第1および第2レジスタ(RB;RA)と、
− 検索されるべき次列および行アドレス(A’,B’)を前記比較結果(C)、前記現行のアドレス(A,B)および制御信号(S)に基づいて計算するための前記第1および第2計算回路(SMB,SMA)と、
− バイナリ・ツリーデータ構造を通して検索中に検索状態(STATEt)を決定し、また前記比較結果(C)に基づいて前記制御信号(S)を決定するための、前記比較装置(MC)で実施された比較(C)の回数を計数する前記計数器(CNT)を含む状態機械(SEQ)とを含むことを特徴とする、前記アクセス装置。 - 請求項14記載のアクセス装置であって、
前記比較結果(C)が前記比較装置(MC)によって、以下の式(5)に基づいて計算され、
I<D の場合 C=0
I>D の場合 C=1 (5)
ここでCは比較結果を表し、Iは検索されるべきデータ値を表しそしてDは読み出しデータ値を表すことを特徴とする、前記アクセス装置。 - 請求項15記載のアクセス装置であって、
前記第2計算回路(SMB)が次行アドレス(B’)を下記の式(6)に基づいて計算し、
S=0 の時 B’=0
S=1 の時 B’=B
S=2 の時 B’=2K*B+2*A+C−2K (6)
ここでCは比較結果を表し、BおよびB’は現行および次の行アドレスを表し、Sは制御信号を表し、Kは前記所定のサブツリー深さ(K)を表わし、そしてAは現行の列アドレスを表すことを特徴とする、前記アクセス装置。 - 請求項15記載のアクセス装置であって、
前記第1計算回路(SMA)が次列アドレス(A’)を下記の式(7)に基づいて計算し、
S=0 の時 A’=1
S=1 の時 A’=2*A+C
S=2 の時 A’=1 (7)
ここでCは比較結果を表し、AおよびA’は現行および次の列アドレスを表し、Sは制御信号を表すことを特徴とする、前記アクセス装置。 - 請求項14記載のアクセス装置であって、
前記状態機械(SEQ)は制御信号(S)を以下の式(8)に基づき計算し:
STATEt=0 の場合 S=0
0<STATEt<K の場合 S=1
STATEt=K の場合 S=2
ここで前記状態機械(SEQ)の状態決定装置(STDM)は、状態機械(SEQ)の内部状態STATEkを下記の式(9)に基づき計算し、
t=0 の場合 STATEt=0
STATEt=0 の場合 STATEt+1=2
STATEt=K の場合 STATEt+1=1
0<STATEt<K の場合 STATEt+1= STATEt+1 (9)
ここでSTATEtおよびSTATEt+1は、時刻tおよびt+1における状態を表し、tは計数器(CNT)で計数された比較回数を表し、ここで0<t<KおよびSTATEt=0は、第1回目の比較が前記バイナリ・ツリーデータ構造のルート・ノードに対応するメモリ位置で実行された際の状態を表すことを特徴とする、前記アクセス装置。 - 請求項12又は13記載のアクセス装置であって、
前記読み出し装置(R)が前記一致したデータ値に関連して、前記メモリ装置(DRAM)内に記憶されている情報を読み出すことを特徴とする、前記アクセス装置。 - 請求項12又は13記載のアクセス装置であって、
前記メモリ装置がDRAMまたはキャッシュ・メモリの1つであることを特徴とする、前記アクセス装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE19810843A DE19810843B4 (de) | 1998-03-12 | 1998-03-12 | Verfahren und Zugriffseinrichtung zum Bestimmen der Speicheradresse eines Datenwerts in einer Speichereinrichtung |
DE19810843.5 | 1998-03-12 | ||
PCT/EP1999/001588 WO1999046696A1 (en) | 1998-03-12 | 1999-03-11 | Method and access means for determining the storage address of a data value in a memory device |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002507026A JP2002507026A (ja) | 2002-03-05 |
JP4807686B2 true JP4807686B2 (ja) | 2011-11-02 |
Family
ID=7860713
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000536013A Expired - Lifetime JP4807686B2 (ja) | 1998-03-12 | 1999-03-11 | メモリ装置内のデータ値の記憶アドレスを決定するための方法並びにアクセス装置 |
Country Status (10)
Country | Link |
---|---|
US (1) | US6415279B1 (ja) |
EP (1) | EP1062597B1 (ja) |
JP (1) | JP4807686B2 (ja) |
KR (1) | KR20010041803A (ja) |
CN (1) | CN1292903A (ja) |
AU (1) | AU2729299A (ja) |
BR (1) | BR9908733A (ja) |
CA (1) | CA2323098C (ja) |
DE (1) | DE19810843B4 (ja) |
WO (1) | WO1999046696A1 (ja) |
Families Citing this family (27)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6444072B1 (en) * | 1999-08-11 | 2002-09-03 | Southpac Trust International | Process for producing holographic material |
US7305400B2 (en) | 2000-03-09 | 2007-12-04 | The Web Access, Inc. | Method and apparatus for performing a research task by interchangeably utilizing a multitude of search methodologies |
US6567815B1 (en) * | 2000-08-01 | 2003-05-20 | International Business Machines Corporation | Technique of clustering and compaction of binary trees |
GB0100331D0 (en) * | 2001-01-06 | 2001-02-14 | Secr Defence | Method of querying a structure of compressed data |
US6757780B2 (en) * | 2002-01-09 | 2004-06-29 | Hywire Ltd. | Multiple module content addressable memories |
KR100484375B1 (ko) * | 2002-02-05 | 2005-04-20 | 이영섭 | 데이터마이닝의 분류 의사 결정 나무에서 극단값을 가지는 관심 노드 분류를 통한 자료의 통계적 분류 방법 |
US6941314B2 (en) * | 2002-04-15 | 2005-09-06 | Lsi Logic Corporation | User selectable editing protocol for fast flexible search engine |
US6901476B2 (en) * | 2002-05-06 | 2005-05-31 | Hywire Ltd. | Variable key type search engine and method therefor |
US8335779B2 (en) | 2002-08-16 | 2012-12-18 | Gamroe Applications, Llc | Method and apparatus for gathering, categorizing and parameterizing data |
US7017005B2 (en) * | 2002-08-28 | 2006-03-21 | Hywire Ltd. | Implementation of a content addressable memory using a RAM-cell structure |
EP1629657A2 (en) * | 2003-06-03 | 2006-03-01 | Sentec Limited | System and method for wireless mesh networking |
US7627616B2 (en) * | 2004-08-30 | 2009-12-01 | Hywire Ltb. | Database storage and maintenance using row index ordering |
US9171100B2 (en) * | 2004-09-22 | 2015-10-27 | Primo M. Pettovello | MTree an XPath multi-axis structure threaded index |
CN100587673C (zh) * | 2004-10-01 | 2010-02-03 | 特博数据实验室公司 | 排列的生成方法以及排列生成装置 |
JP4507991B2 (ja) * | 2005-06-09 | 2010-07-21 | ソニー株式会社 | 情報処理装置、情報処理方法、およびプログラム |
US20070174309A1 (en) * | 2006-01-18 | 2007-07-26 | Pettovello Primo M | Mtreeini: intermediate nodes and indexes |
US20100017700A1 (en) * | 2008-06-13 | 2010-01-21 | Skribel, Inc. | Methods and Systems for Handling Annotations and Using Calculation of Addresses in Tree-Based Structures |
US8631028B1 (en) | 2009-10-29 | 2014-01-14 | Primo M. Pettovello | XPath query processing improvements |
EP2515245A1 (en) * | 2009-11-30 | 2012-10-24 | S. Grants Co., Ltd. | Bit stream retrieval device, retrieval method, and program |
JP5220057B2 (ja) * | 2010-05-27 | 2013-06-26 | 株式会社高速屋 | ビット列検索装置、検索方法及びプログラム |
JP5220047B2 (ja) * | 2009-11-30 | 2013-06-26 | 株式会社高速屋 | ビット列検索装置、検索方法及びプログラム |
US9280575B2 (en) * | 2012-07-20 | 2016-03-08 | Sap Se | Indexing hierarchical data |
CN103984636B (zh) * | 2013-02-08 | 2017-09-29 | 上海芯豪微电子有限公司 | 存储结构及信息存储、读取、寻址方法 |
KR101666307B1 (ko) | 2015-05-14 | 2016-10-13 | 영남대학교 산학협력단 | 메모리 장치 기반의 힙 정렬 방법 및 장치 |
CN108391427B (zh) | 2016-02-05 | 2021-07-02 | 惠普发展公司,有限责任合伙企业 | 打印头 |
US10977106B2 (en) * | 2018-02-09 | 2021-04-13 | Microsoft Technology Licensing, Llc | Tree-based anomaly detection |
CN113570176B (zh) * | 2020-04-28 | 2024-03-26 | 顺丰科技有限公司 | 货物装箱方案输出方法、装置、计算机设备和存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4751684A (en) * | 1985-06-19 | 1988-06-14 | International Computers Limited | Search apparatus |
US5418947A (en) * | 1992-12-23 | 1995-05-23 | At&T Corp. | Locating information in an unsorted database utilizing a B-tree |
Family Cites Families (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3611435A (en) | 1969-03-24 | 1971-10-05 | Itt | Satellite communication system |
US5204967A (en) | 1984-05-29 | 1993-04-20 | Armstrong Philip N | Sorting system using cascaded modules with levels of memory cells among which levels data are displaced along ordered path indicated by pointers |
US5155837A (en) | 1989-03-02 | 1992-10-13 | Bell Communications Research, Inc. | Methods and apparatus for software retrofitting |
US5495610A (en) | 1989-11-30 | 1996-02-27 | Seer Technologies, Inc. | Software distribution system to build and distribute a software release |
US5442783A (en) | 1990-01-22 | 1995-08-15 | Motorola, Inc. | Method and apparatus for transferring data base information |
US5481721A (en) | 1991-07-17 | 1996-01-02 | Next Computer, Inc. | Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects |
US5410703A (en) | 1992-07-01 | 1995-04-25 | Telefonaktiebolaget L M Ericsson | System for changing software during computer operation |
US5734791A (en) * | 1992-12-31 | 1998-03-31 | Apple Computer, Inc. | Rapid tree-based method for vector quantization |
US5459606A (en) | 1993-05-10 | 1995-10-17 | At&T Ipm Corp. | In-service upgrade for a telecommunication system |
DE4316500C2 (de) | 1993-05-17 | 1995-03-16 | Siemens Ag | Verfahren zum Wechseln einer Anlagensoftware |
CN1139489A (zh) | 1993-11-02 | 1997-01-01 | 帕拉科姆有限公司 | 加速计算机数据库事务处理的装置 |
JP3177117B2 (ja) | 1994-05-11 | 2001-06-18 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 複数のノード内の制御コードを更新する方法および装置 |
DE4429969A1 (de) | 1994-08-24 | 1996-02-29 | Sel Alcatel Ag | Verfahren für einen Programmpaketeaustausch in einem Mehrrechnersystem und Rechner dafür |
US5487166A (en) * | 1994-09-19 | 1996-01-23 | Amdahl Corporation | Computer with two-dimensional merge tournament sort using offset-value coding |
DE4438697A1 (de) | 1994-10-29 | 1996-05-02 | Sel Alcatel Ag | Ladeverfahren für ein Mehrrechnersystem sowie Ladesteuereinrichtung und Programm-Modul dafür und Mehrrechnersystem und Vermittlungssystem damit |
DE19533961A1 (de) | 1995-09-13 | 1997-03-20 | Siemens Ag | Verfahren zum Laden von Software in Kommunikationssystemen mit nichtredundanten, dezentralen Einrichtungen |
US5991541A (en) | 1996-08-12 | 1999-11-23 | Adc Telecommunications, Inc. | Dynamically modifiable call processing methods and apparatus |
-
1998
- 1998-03-12 DE DE19810843A patent/DE19810843B4/de not_active Expired - Fee Related
-
1999
- 1999-03-11 CA CA002323098A patent/CA2323098C/en not_active Expired - Lifetime
- 1999-03-11 JP JP2000536013A patent/JP4807686B2/ja not_active Expired - Lifetime
- 1999-03-11 US US09/265,952 patent/US6415279B1/en not_active Expired - Lifetime
- 1999-03-11 KR KR1020007010078A patent/KR20010041803A/ko not_active Application Discontinuation
- 1999-03-11 AU AU27292/99A patent/AU2729299A/en not_active Abandoned
- 1999-03-11 CN CN998039187A patent/CN1292903A/zh active Pending
- 1999-03-11 BR BR9908733-2A patent/BR9908733A/pt not_active IP Right Cessation
- 1999-03-11 EP EP99907624A patent/EP1062597B1/en not_active Expired - Lifetime
- 1999-03-11 WO PCT/EP1999/001588 patent/WO1999046696A1/en not_active Application Discontinuation
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4751684A (en) * | 1985-06-19 | 1988-06-14 | International Computers Limited | Search apparatus |
US5418947A (en) * | 1992-12-23 | 1995-05-23 | At&T Corp. | Locating information in an unsorted database utilizing a B-tree |
Also Published As
Publication number | Publication date |
---|---|
AU2729299A (en) | 1999-09-27 |
CN1292903A (zh) | 2001-04-25 |
DE19810843B4 (de) | 2004-11-25 |
WO1999046696A1 (en) | 1999-09-16 |
CA2323098C (en) | 2005-12-27 |
EP1062597A1 (en) | 2000-12-27 |
CA2323098A1 (en) | 1999-09-16 |
KR20010041803A (ko) | 2001-05-25 |
US6415279B1 (en) | 2002-07-02 |
DE19810843A1 (de) | 1999-09-30 |
EP1062597B1 (en) | 2002-06-05 |
BR9908733A (pt) | 2000-11-21 |
JP2002507026A (ja) | 2002-03-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4807686B2 (ja) | メモリ装置内のデータ値の記憶アドレスを決定するための方法並びにアクセス装置 | |
US5848416A (en) | Method and apparatus for storing and retrieving data and a memory arrangement | |
US6353873B1 (en) | Apparatus and method to determine a longest prefix match in a content addressable memory | |
CN101510839B (zh) | 最长匹配地址查询的方法和装置 | |
US4606002A (en) | B-tree structured data base using sparse array bit maps to store inverted lists | |
KR101467589B1 (ko) | 데이터 구조를 가지는 하나 이상의 장치 판독가능 매체, 및장치 실행가능 명령어를 구비한 하나 이상의 장치 판독가능 매체 | |
EA006640B1 (ru) | Способ навигации в базе данных | |
US20050149472A1 (en) | Reorganization-free mapping of objects in databases using a mapping chain | |
Kim et al. | Efficient implementation of rank and select functions for succinct representation | |
CN115718819A (zh) | 一种索引构建方法、数据读取方法及索引构建装置 | |
EP1107126A2 (en) | A fast, efficient, adaptive, hybrid tree | |
WO1999046676A2 (en) | Data conversion hardware support | |
ElGindy et al. | Efficient algorithms for the capacitated 1-median problem | |
NO331821B1 (no) | Organisering av data i en database | |
JPS6143338A (ja) | 連想技術を使用して稀薄なデータベースをサーチする方法 | |
Table | LESSON 18: FUNDAMENTAL COMPUTING ALGORITHMS | |
Ohashi | Cache oblivious data structures | |
Andersen | A study of I/O efficient maps and sets | |
Hartson et al. | Implementation of B-Trees Using Dynamic Address Computation | |
WO2000031729A2 (en) | A digital memory structure and device, and methods for the management thereof | |
Vriens-Boshouwers | AND TREES, IN HARDWARE | |
Shaffer | Organizing Data | |
Demaine | Lecture 22—April 29 | |
Morgan | Reduced Assignment Sorting | |
Parhami | More Shared-memory Algorithms |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060227 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090424 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090723 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090730 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090819 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090826 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20090918 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20090930 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20091026 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20100331 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100402 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100401 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20100629 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20100706 |
|
A072 | Dismissal of procedure [no reply to invitation to correct request for examination] |
Free format text: JAPANESE INTERMEDIATE CODE: A073 Effective date: 20100903 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101001 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110715 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110809 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140826 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
EXPY | Cancellation because of completion of term |