JPWO2005104456A1 - 固定長データの検索装置および検索管理方法 - Google Patents
固定長データの検索装置および検索管理方法 Download PDFInfo
- Publication number
- JPWO2005104456A1 JPWO2005104456A1 JP2006512434A JP2006512434A JPWO2005104456A1 JP WO2005104456 A1 JPWO2005104456 A1 JP WO2005104456A1 JP 2006512434 A JP2006512434 A JP 2006512434A JP 2006512434 A JP2006512434 A JP 2006512434A JP WO2005104456 A1 JPWO2005104456 A1 JP WO2005104456A1
- Authority
- JP
- Japan
- Prior art keywords
- length data
- fixed
- data
- search
- pointer
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/30—Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
- G06F16/33—Querying
- G06F16/3331—Query processing
- G06F16/334—Query execution
-
- 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/99933—Query processing, i.e. searching
-
- 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/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
Description
高速にデータベースを検索する従来技術がMAC(Media Access Control)アドレステーブルの検索に関して用いられている。それは、MACアドレステーブルを高速に検索する従来技術としてハッシュ関数を適用する方法、CAM(Content Addressable Memory)を使用する方法、およびその他の方法、例えば、二分岐検索アルゴリズムを適用する方法等である。MACアドレステーブルが数十万個以上のMACアドレスにより構築された場合には、以下のような問題点を有する。
データベースから希望する固定長データを検索する場合において、希望する固定長データがデータベース内の固定長データと完全に合致する検索法が知られている。実際には、その他の検索ルールによる検索も多く実現・使用されている。例えばネットワーク間中継装置に使用されるルートテーブルの中から希望するIP(Internet Protocol)アドレスを検索する場合、LPM(Longest Prefix Match)法に基づく検索が必要である。IPアドレスはネットワークアドレス(Prefixまたはプレフィックスとも呼ばれる)とホストアドレスにより構成される。プレフィックスは可変長であり、集約(アグリゲート)される。集約とはプレフィックスの上位ビットが共通で同じ宛先を持つ複数のプレフィックスを1つのプレフィックスとして代表させることである。代表するプレフィックスは共通の上位ビットで表される。この結果、集約されたIPアドレスを含むルートテーブルを検索すると、複数のIPアドレスが合致することが起きる。LPM法は合致した複数のIPアドレスの中で最も長いプリフィックスを検索結果とする検索方法である。LPM法に基づく高速検索を実現する従来技術はTCAM(Ternary Content Addressable Memory)である。高速検索は実現可能であるが前述のCAMと同じ問題を持つ。すなわちTCAMはその回路構造からして大規模(大容量)なTCAMが製造しにくく、大量の固定長データを保持することができない。
マスク機能付検索ルールも一般的である。このルールは、例えば、データベースから希望する固定長データを検索する場合、希望する固定長データがデータベース内の固定長データの一部(全部の場合もある)と合致すればそれを検索結果とする検索ルールである。この場合、マスクは固定長データと同じデータ長を持ち、固定長データを構成するビット単位でマスク可能な機能を有しており、本ルールにおいて多数の検索方法が実現されている。本ルールを、ネットワーク内中継装置およびネットワーク間中継装置を例として説明する。本例の装置においては、入力されたパケットをどの送出ポートに出力するかルートテーブの検索により決定する。ここで、送出するか否かの判断はフィルタリング機能により行われる。このフィルタリング機能はマスク機能付検索の代表例である。例えば、入力パケットにおいて、送信元IPアドレス(32ビット)、宛先IPアドレス(32ビット)、プロトコル(8ビット)、送信元ポート(16ビット)そして宛先ポート(16ビット)の五つのデータから構成される104ビットの固定長データによって構築されるフローテーブルがフィルタリング機能に用いられる。この場合には、104ビットの中で一部のビットを比較対照から除く(マスクする)ことが可能で、マスクされないビット全てが合致する固定長データが検索結果となる。マスク機能付検索の従来技術はハッシュ法やCAMを使用することが一般的である。ハッシュ法やCAMにおいても以下の問題点が存在する。
すなわち、従来技術の検索方式における大きな問題はデータベースの構築およびその管理である。種々の検索法を選択したり実現したりする場合には、データベースの構築および管理法をあわせて評価しなければ、目標とする検索方式は実現できない。
従来技術が持つデータベースの構築・管理の問題点を、例として二分岐検索によるクイックサーチとTCAMを利用した検索法を用いて説明する。二分岐検索法においては、まず、データベースの構成員であるm個の固定長データが大小順に並べ替えられたデータベースを準備する。検索は、データベースの中点、[m/2]([m/2]はmが奇数の場合、四捨五入し整数を得ることを意味する)に位置する固定長データと検索希望固定長データとを比較することから開始する。比較した結果、検索希望固定長データが大きい場合、[m/2]とmの中点、[([m/2]+m)/2]、に位置する固定長データと検索希望固定長データとを比較する。最初の比較で検索希望固定長データが小さい場合、[m/2]と1の中点、[([m/2]+1)/2]、に位置する固定長データと検索希望固定長データとを比較する。検索希望固定長データと比較した固定長データが合致すれば比較した固定長データが検索結果として検索は終了する。以上の比較動作を中点計算が可能な限り行う。ただし中点計算が1と2で行われる場合、1を選択し、比較を行う。mが262、144(2の18乗)の場合、最大18+1回のデータベースからの読み出しが必要である。以上の検索動作は簡単であり、検索法は実現可能である。しかし、データベースを構築したり管理したりすることは簡単ではない。特にmが前記の例の様に大きくなり、通信用制御装置で一般的な大規模データベースを構築する場合、多くの時間と大きな計算能力を必要とする。加えて、データベースが時間と共に変更を強いられるような、モバイル製品が増加する最近の環境の下においては、データベースにおいて固定長データの削除・追加が頻繁に起こる。固定長データの従来技術における削除・追加においては、そのたびに上記並べ替えを行う必要が生じる。このようにデータベースの構築・管理は大きな負荷となり、検索能力に大きな障害となっているのが現状である。
従来技術において、高速でIPアドレスを検索する方法としてTCAMが多く利用されている。しかし、TCAMはCAMと同じ問題を持つ。そのメモリ容量がDRAM(Dynamic Random Access Memory)程大きくなく、そのため多数のIPアドレスを持つデータベースを構築すると、多数のTCAMが必要となりパワー供給およびパッケージの制約から大きなデータベースは構築できない。それに加えて、TCAMを用いる場合には、データベースの構築・管理上の問題が生じる。前記LPMルールにより、希望固定長データに合致する多数の固定長データが存在することは説明した。それらの中から、最長のプレフィックスを持つ固定長データを選択するため、合致する多数の固定長データにおけるプリフィックスの長さ順にデータを並べる必要がある。すなわち、IPアドレスの上位ビットが共通となるIPアドレスの集合をグループ化し、それらをグループ内で長さ順に並べる作業がデータベース構築の作業として必要である。この場合、変更時の検索能力への影響を最小にするため、グループ間にいくつかの空きロケーションを準備することが、追加動作に対し最小の時間でその追加作業が完了することを目的として行われている。このように、TCAMを用いる場合において、その検索能力を減少させずにデータベースを構築・管理することには大きな問題が含まれている。また、グループ間にいくつかの空きロケーションを準備することにより、TCAMの使用効率は減少し、TCAMの容量不足にさらに拍車がかかる悪循環を招来する。
通信制御装置において、データベースを検索後、宛先ポート等のユーザーデータをその検索結果から読み出したり、合致した固定長データの統計データ等を修正したりする機能をもつことは一般的である。従来技術としての高速検索法はユーザーデータおよび統計データ等は外部メモリ素子に格納されているため、検索開始から宛先ポートを得るまでの時間が大きい。
本発明は、前記した問題点を解消するためになされたものであって、その主たる目的は、データベースに大量に格納される検索に必要なデータ、ユーザーデータ、統計データ等、種々のデータを含む固定長データを(1)高速に検索し、(2)検索結果に応じ修正を行い、(3)データベースの構築の際に空きロケーションの不必要な高いメモリ使用効率を実現し、(4)データベースへの追加・削除動作で、検索能力が減少しないデータベース管理ができるようにすることであり、そのための装置または方法またはコンピュータ用記録媒体を提供することである。
データベース内の固定長データから希望の固定長データを検索することはデータベース内の固定長データを一つ一つ希望の固定長データと比較することである。そして、合致する固定長データが得られたとき、または最後の固定長データを比較したときに検索は終了する。この方法はデータベースが大きくなればなるほど、検索時間が大きくなり実現性がなくなる。
このため、高速検索方法の一つはいかに希望の固定長データと比較するデータベース内の固定長データの数を少なくするかという命題と同じである。本発明が提案する検索方法はデータベース内の固定長データの数を細分化し、希望の固定長データと比較する固定長データの数を最小にする手段を備える。主たる手段は、ハッシュ値、ハッシュ値の一部、固定長データ、および固定長データの一部を使用し、データベースを構成する固定長データを細分化する。なお、従来の手段はハッシュ値の一部、または固定長データの一部を使用して、テーブルを構築すること、または二分岐検索法を応用したL(LはQ*K以上の整数。QとKは後述)分岐検索法を適用することにより、目的とする細分化を実現する。
また、本発明においては、高速に検索を行うために、一度に比較する固定長データの数を増やす目的で、Q個のメモリアレイと該メモリアレイから読み出されるビット数(R)を最大にするメモリとを提案する。又、本発明においては、それらのビットに対応する比較器を持つことにより、RがK個の固定長データ長に相当する場合においては、一度にQ*K個の固定長データの比較が行うことができる。この結果、固定長データの数がQ*K個以下の場合、一度のメモリ読み出しにより検索結果が得られる。メンバー数がQ*K個以上、2*Q*K以下の場合、メモリ読み出し回数を2回にすることも可能になる。同様に、本発明においては、メモリ読み出し回数を可変とすることにより、データベース内の固定長データ数の細分化による、固定長データ数の不均衡の問題も解決可能である。本手法において、262、144個のランダムな数値(メンバー)を65、536個のグループに細分化した場合、4〜5メンバーのグループ数が一番多く、15〜16メンバーを持つグループも存在する。それ以上のメンバーを持つグループはなくなる。これはランダムな数値を細分化した一例であるが、Q*Kが4である場合を仮定すれば、最大4回のメモリ読み出しで、目的の検索が終了する。以上が、本発明が提案する基本的な検索法である。しかし、メモリアレイの数Qは上限があり、メモリアレイから読み出されるビット数にも制限が存在する。これらの制限下で、メモリの読み出し回数を削減するためには、データベースの細分化をより強化することである。そこで、本発明は、固定長データ数の不均衡の問題を解決する方法を提案し、大きな不均衡にも対応可能な検索方法を提案する。
データベース内の固定長データ数の細分化は一般的な手法、すなわち、ハッシュ関数と、それが適用できない場合、そのデータそのものを適用する。後者の例はIPアドレスの細分化である。細分化のための全インデックスを計算する。ハッシュ関数を適用した場合、全インデックスはハッシュ値であり、IPアドレスの場合、全インデックスはIPアドレスである。この処理には、全インデックス、または全インデックスの一部をインデックスとするポインタテーブルが用いられる。これにより、検索されるデータベースはポインタテーブルのエントリー数のグループに細分化される。細分化されたグループは固定長データテーブルに格納される。固定長データテーブルの1つのエントリーはQ*K個のメンバーを格納可能である。このとき、Q*K個のメンバーを格納するエントリーを家と、その家が1つのメンバーを格納する場所を室と定義する。ポインタテーブルにより細分化されたグループ数が家の室数より小さい場合、ポインタテーブルの読み出しと、固定長データテーブルの一回の読み出しで検索が終了する。ポインタテーブルと固定長データテーブルを別々のメモリに格納し、それぞれが独立に読み出されれば、並列動作により、検索時間は二回のメモリ読み出し時間がかかるが、検索回数は一回のメモリ読み出しで行われる検索数に等しい。
問題はポインタテーブルにより細分化されたグループ数が家の室数より大きい場合である。この場合のグループの細分化で、本発明は二つの方法を提案する。一つはSPT(2次ポインタテーブル)とローカルテーブルである。SPTはポインタテーブルが格納されているメモリに格納され、ローカルテーブルは固定長データテーブルに格納される。SPTとローカルテーブルを別なメモリに格納することも可能である。両テーブルは小さなエントリー数であり4〜16エントリーを持ち、ポインタテーブルのエントリーに属するQ*K個のメンバーを細分化する。ポインタテーブルと固定長データテーブルとの読み出しにより検索されるメンバー数を1とすると、(1)ポインタテーブルと、SPTと、固定長データテーブルの読み出しにより検索されるメンバー数の最大数は4〜16となり、(2)ポインタテーブルと、ローカルテーブルの読み出しにより検索されるメンバー数の最大数は4〜16となり、(3)ポインタテーブルと、SPTと、ローカルテーブルの読み出しにより検索されるメンバー数の最大数は16〜256となる。しかし、これらの手法は二つの問題が存在する。一つはIPアドレスの検索の場合に生じる。IPアドレスのマスクにより、SPTまたはローカルテーブルのインデックスの部分とマスク長が重なり合った場合、そのマスクを持つIPアドレスの処理を考えなくてはならない。この点の詳細は発明を実施するための最良の形態で説明する。他の一つは、最悪の場合、SPTとローカルテーブルは細分化の解にならない場合があることである。すなわち、全てのメンバーがSPTまたはローカルテーブルの一つのエントリーに分布した場合である。このケースは大変まれなことで、考えなくても良いかもしれない。しかし、完全な解を追求するために、本発明においては数値比較(NVC)法を用いることを提案する。NVC法は基本的に二分岐検索と同じ原理であるL分岐検索を行う。一回のNVC法で一度に検索できるメンバー数はニ分岐検索のL倍であり、二回のNVC法の場合には二分岐検索のL*L倍となる。数値比較法の詳細な説明は、発明を実施するための最良の形態で行う。以上の方法により、本発明によれば、2、3回のメモリ読み出し回数で目的とする固定長データを検索することができる高速検索法を提案する。
本発明においては検索法を一般化するために、検索するいろいろな検索ルールを伴う検索装置を提案する。それらは(1)グローバルマスクを使用する検索ルール、(2)ローカルマスクを使用する検索ルール、(3)LPM(Longest Prefix Mask)を使用して検索するルールである。検索はマスクされないビットだけが比較され、(1)と(2)の場合には一致したデータが検索結果となり、(3)の場合には多数の一致したデータの内、一番長いマスク長を持つデータが検索結果となる。
本発明の提案する検索装置においては、一秒間に検索される回数を最大化するために検索動作がメモリ読み出しの時期によっては、かならずしも入力順には検索されず、処理可能な順に検索される。本発明においては、検索動作に必要な各処理の同期を取る目的で、検索番号を検索装置に導入し、非同期処理の検索を実現する。そして、検索番号を本発明の検索装置に入力させることにより、検索命令と検索結果の同期を取ることを可能にする。同時に、過入力(オーバーフロー)による、本装置のオーバーランを防止するメリットも存在する。すなわち、検索番号Nで検索命令を入力すると、検索番号Nの検索結果が得られなければ、検索番号Nで新しい検索命令を入力することが出来ない。Nの最大値を定めておけば、過入力による問題は防止できる。
本発明は、従来技術が持つ検索対象が格納されるテーブルの構築または管理の問題点を解決する。従来の技術と関連して説明した、テーブルの構築・管理の問題点は(1)検索対象が格納されるテーブルにおける可能格納数の70〜80%しか利用出来ない、(2)テーブルの構築・管理に多大な作業が必要である。本発明は家と、室と、テーブルの構造とを管理することにより、(1)を解決し、ホスト制御装置が行う(2)を低減する。本発明は、基本的に家は全て満室に保つ方法で管理を行う。発明を実施するための最良の形態で説明している管理は家を大団体と小団体により、または同じサイズを持つ二つの団体で満室にする。一つも団体が存在しない家を空家テーブルで、そして小団体が不在の、または同じサイズを持つ二つの団体の一つが不在の場合、それらの家を空室テーブル、および室管理テーブルで管理する。そのため、満室の家は管理しない。本発明の検索法はいろいろなテーブル形態を持ち、検索手順の構造を持つ。このため、テーブル検索手順の変更に伴う、構造変更が短期間に、簡単に行える手法を提案する。
図2は、本発明のある実施の形態における固定長データ検索装置10の動作を示すフローチャートである。
図3は、本発明のある実施の形態における固定長データ検索装置10を構成する入力固定長データ処理手段100の機能を示すブロック図である。
図4は、本発明のある実施の形態における固定長データ検索装置10を構成するポインタテーブルメモリ500の構成と、固定長データ検索装置10を構成する固定長データテーブルメモリ560の構成と、固定長データ検索装置10を構成するデータテーブルメモリ540の構成を示すブロック図である。
図5は、本発明のある実施の形態におけるポインタテーブルメモリ500に格納されるポインタテーブルのインデックスと、ポインタテーブルメモリ500の読み出し機能ブロックと、固定長データテーブルメモリ560に格納される固定長データテーブルのインデックスと、固定長データテーブルメモリ560の読み出し機能ブロックと、データテーブルメモリ540に格納されるデータテーブルへの読み出しおよび書き込みのインデックスと、データテーブルメモリ540の読み出し機能ブロックとを示す説明図である。
図6は、本発明のある実施の形態におけるポインタテーブルのエントリーデータの形式およびその内容と、固定長データテーブルのエントリー制御データの形式およびその内容を示す図である。
図7は、本発明のある実施の形態における固定長データ検索装置10を構成するポインタ処理手段200の機能を示すブロック図である。
図8は、本発明のある実施の形態における固定長データテーブルのエントリーデータの形式およびその内容と、固定長データテーブルのエントリーデータにおける要素の種類およびその内容を示す図である。
図9は、本発明のある実施の形態における固定長データテーブルが持つNVC形式の動作説明を行う図である。
図10は、本発明のある実施の形態における本発明のある実施の形態における固定長データ検索装置10を構成する比較手段400の機能を示すブロック図である。
図11は、本発明のある実施の形態における比較手段400が行う比較方法とそれに対応するマスクを示す機能ブロックと、比較手段400が行う大小比較方法を示す機能ブロック図である。
図12は、本発明のある実施の形態における比較手段400が出力する出力データの種類とその内容を示す図である。
図13は、本発明のある実施の形態における固定長データ検索装置10を構成する修正手段300の機能ブロックと、修正手段300が出力する出力データと、データテーブルのエントリーデータの内容を示す説明図である。
図14は、本発明のある実施の形態における固定長データ検索装置10を構成する出力手段800の機能ブロックと、出力手段800が出力する出力データとを示す説明図である。
図15は、本発明のある実施の形態における空家テーブルメモリ700に格納される空家テーブルとその内容、および、空家テーブルのエントリーの関係を示す図である。
図16は、本発明のある実施の形態における空室テーブルメモリ720に格納される空室テーブルとその内容、および、空室テーブルのエントリーの関係を示す図である。
図17は、本発明のある実施の形態における室の管理法を示す図である。
図18は、本発明のある実施の形態における空室管理テーブルメモリ740に格納される空室管理テーブルとその内容を示す図である。
図19は、本発明のある実施の形態における固定長データ検索および管理装置に係るテーブルの関係を示す図である。
図20は、本発明のある実施の形態における管理テーブルを示す図である。
図21は、本発明のある実施の形態における構造管理テーブルメモリ760に格納される構造管理テーブルとその内容、および、固定長データテーブルの構造の変移を示す図である。
図22は、本発明のある実施の形態における検索手順の実施例を示す図である。
図23は、本発明のある実施の形態における固定長データ検索および管理装置に係るテーブル管理制御手段の実施例と、本発明のある実施の形態における固定長データ検索および管理装置に係るテーブル管理制御手段、および、コントローラまたはシークエンサーのブロック図である。
図24は、本発明のある実施の形態におけるテーブル管理制御手段への命令と、入力命令・実行機能の動作および自動削除命令機能の動作を示すフローチャートである。
図25は、本発明のある実施の形態における付加命令の実行および削除命令の実行を示すフローチャートである。
図26は、本発明のある実施の形態における統計データ引出命令の実行および自動削除名引出命令の実行を示すフローチャートである。
図27は、本発明のある実施の形態における自動削除命令の実行のフローチャートと、固定長データテーブルの要素制御データの内容を示す説明図である。
図28は、本発明のある実施の形態における単純付加機能および構造変更付加機能を示すフローチャートである。
図29は、本発明のある実施の形態における単純削除機能および構造変更削除機能を示すフローチャートである。
図30は、本発明のある実施の形態における管理出力機能のブロックと、管理出力データを示す説明図である。
図31は、本発明のある実施の形態における本発明のコンピュータプログラムおよび記録媒体を適用可能なコンピュータシステムの構成例を示すブロック図である。
[全体の構成]
本発明における固定長データの検索および管理に係る実施例を示す機能ブロック図を図1に示す。理解しやすいように、検索に必要な機能を図1〜14により最初に説明し、その基本機能となる各種テーブルを構築し、保守する管理機能を次に説明する。
図1は、本発明における固定長データ検索および管理装置に係る実施例を示すブロック図である。図1に示す固定長データ検索および管理装置50は、固定長データ検索装置10を一部に有している。図1に示された固定長データ検索装置10は、入力された入力固定長データ9と検索番号8および統計データ11に対して、指定された処理を行って出力する入力固定長データ処理手段100と、前記入力固定長データ処理手段100の出力またはポインタ処理手段200の出力によりインデックスされるポインタテーブルを格納するポインタテーブルメモリ500と、後記固定長データテーブルメモリ560の出力または前記ポインタテーブルメモリ500の出力を前記入力固定長データ処理手段100の出力の一部とともに演算を行い、その結果を出力する前記ポインタ処理手段200と、前記ポインタ処理手段200の出力をインデックスとした固定長データテーブルを格納する固定長データテーブルメモリ560と、前記固定長データテーブルメモリ560が出力する多数の固定長データと前記入力固定長データ9を指定されたルールで比較する比較手段400と、前記比較手段400の一致結果の出力により、前記ポインタ処理手段200の出力をインデックスの一部とした、ユーザーデータと統計データを保持するデータテーブルを格納するデータテーブルメモリ540と、前記データテーブルメモリ540の出力の一部を出力する、又その一部のデータに演算を行い、前記データテーブルメモリの同じ場所に書き込む修正手段300と、前記比較手段400の出力と前記修正手段300の出力を同期させて出力する出力手段800とを備える。なお、前記ポインタテーブルメモリ500と固定長データテーブルメモリ560とデータテーブルメモリ540とを単一のメモリで構成するようにしてもよい。
図2は、図1に記載した固定長データ検索装置10の処理フロー図である。概略を説明すると、まず検索したい入力固定長データ9が入力される(S202)。そして入力固定長データ処理手段100によりポインタテーブルのインデックスを計算する(S204)。さらにポインタテーブルを読み出す(S206)。その後、ポインタテーブルの出力をポインタ処理手段200により処理する(S208)。それがポインタテーブルを指示すれば(S210)、ポインタテーブルの読み出し(S206)を再び行う。ポインタ処理手段200の出力が固定長データテーブルの読み出しを指示すれば、それを実行する(S212)。一回の固定長データテーブルの読み出しで比較動作(S214)が終了すれば(S216)、検索結果を作成し、一致していれば(S218〜S222)、修正手段300によりデータテーブルの読み出しと書き込み(S224)が行われる。そして出力手段により検索結果が出力される(S226)。比較結果が不一致(S218)の場合、不一致結果を作成し(S228)、出力手段により検索結果が出力される(S226)。前記比較動作が終了しなければ(S216〜S230)、再び、ポインタ処理でテーブルのアドレス計算が行われ、テーブルの選択(S232)が行われる。ローカルテーブルが選択された場合、固定長データテーブルの読み出し(S212)を実行する。テーブルの選択(S232)でSPTが選択された場合、ポインタテーブルからの読み出し(S206)を実行する。本発明におけるデータベースの細分化の特徴は複数のポインタテーブルの読み出し、複数の固定長データテーブルの読み出し、そしてポインタテーブルと固定長データテーブルの組み合わせによる複数の読み出し、により実現される。以下に固定長データ検索装置10の動作について図1、図2と共に詳細に説明する。
固定長データ検索装置10に入力される検索番号8は主に前記ポインタ処理手段200と比較手段400と修正手段300と各メモリの動作並列化および比較手段400と、修正手段300と、出力手段800の出力の名前として使用されるため、そして入力される統計データ11は修正手段300で使われるため、検索手法の本質ではないので図2に記述してはいない。
[入力固定長データ処理手段]
入力固定長データ9と検索番号8と統計データ11は入力固定長データ処理手段100に入力される。入力固定長データ処理手段100はポインタテーブル500に格納されたポインタテーブルのインデックスを演算し出力する。ポインタテーブルの役目はデータベース内の固定長データをグループに分割し、そのグループ内の固定長データの数(メンバー数)を均一化し可能な限り少なくすることである。このため、演算方法は次のつを用意する。
(1)ハッシュ法により計算されたハッシュ値
(2)ハッシュ法により計算されたハッシュ値の一部
(3)入力固定長データ
(4)入力固定長データの一部
演算方法、ハッシュ値または入力固定長データから一部を取り出す方法は指定可能とする。入力固定長データ処理手段100の実施例を図3に示す。
入力固定長データ処理手段100に入力された入力固定長データ9はレジスターDに、検索番号8および統計データ11はレジスターCにそれぞれ一時的に貯蔵され、後述するその他の出力データが入力固定長データ処理手段100から出力される際に、同期して出力される。このため、レジスターCの出力を同期検索番号192および同期統計データ194と呼び、レジスターDの出力を同期入力固定長データ193と呼ぶ。固定長データ検索装置10の説明では混乱を避ける意味で同期した番号やデータに対しても、同じ名称を使う、ただしその番号はその都度異なるものとする。各信号はポインタ処理手段200、比較手段400、および修正手段300への入力となる。そして、入力固定長データ処理手段100への追加の入力には図3に示すように管理データ699がある。管理データ699は管理固定長データと管理検索番号と管理統計データから構成され、入力固定長データ9と検索番号8と統計データ11と同様に扱われる。管理データ699は固定長データ検索装置10の各種テーブルの管理の行う場合に入力される。管理データ699の詳細は固定長データ検索および管理装置50の説明で行う。
入力固定長データ9は入力抽出機能110に入力される。入力抽出機能110は、入力固定長データ9の入力抽出開始値171により指定されるビット位置のビットから、入力抽出終了値172により指定されるビット位置のビットまでを抽出し出力する。入力抽出開始値171が入力固定長データ9の最初のビット位置を示し、入力抽出終了値172が最後のビット位置を示す場合、出力される値は入力固定長データ9そのものである。なお、入力抽出開始値171または入力抽出終了値172はビット単位で指定されることを仮定して説明したが、バイト単位で指定することも可能である。入力抽出機能110の手順は入力固定長データ処理制御機能160により制御される。
入力抽出機能110の出力は後述する3:1選択器140と加算器120に入力される。抽出したデータが入力抽出機能110の出力バス幅を超える場合、入力抽出機能110は複数の出力バス転送サイクルにより抽出したデータを出力する。この場合、各バスサイクルで出力された出力値は加算器120により積算される。一例として、入力抽出機能110の出力バス幅が32ビット、加算器120が32ビット加算器を備え、抽出したデータが64ビットである場合、抽出したデータは2回の出力バス転送サイクルにより出力される。入力前に、レジスターA180は初期値(ゼロ)に設定されている。抽出したデータの最初の出力値は加算器120でレジスターA180が保持する値(この場合は初期値ゼロである)と加算され、その結果がレジスターA180に保持される。抽出したデータの2回目の出力値は同様に加算器120でレジスターA180が保持する値(この場合は最初の出力値である)と加算され、その結果がレジスターA180に保持される。抽出したデータの処理が終了したので、入力固定長データ処理制御機能160はレジスターA180のデータをレジスターB181に転送する。レジスターA180およびレジスターB181のデータ保持信号の発生は入力固定長データ処理制御機能160により生成および制御される。
レジスターB181の出力は後述する3:1選択器140とハッシュ演算器130に入力する。ハッシュ演算器130は入力されたレジスターB181の出力値からハッシュ関数値173を参照し、ハッシュ値を出力する。ハッシュ演算器130の出力値は3:1選択器140に入力される。ハッシュ関数はいろいろな方法が提案されている。例えば、ハッシュ関数として、入力されたレジスターB181の出力値をハッシュ関数値で除算し商と余りを得る、そして余りをハッシュ値とする方法である。本実施例においては、ハッシュ関数値を変更可能値と定めているが、ハッシュ関数値を固定にし、レジスターB181の出力値をシフト動作等により変化させる方法も可能である。
入力抽出機能110の出力、レジスターB181の出力、およびハッシュ演算器130の出力は3:1選択器140に入力される。3:1選択器140は選択値174を参照し、入力された3出力のうち一つを全インデックス190として出力する。全インデックス190は出力抽出機能150に入力される。
出力抽出機能150は全インデックス190の出力抽出開始値175により指定されるビット位置のビットから、出力抽出終了値176により指定されるビット位置のビットまでを抽出し、抽出したビットはポインタテーブルインデックス191として出力される。出力抽出開始値175が全インデックス190の最初のビット位置を、出力抽出終了値176が最後のビット位置を示す場合、出力される値は全インデックス190そのものである。出力抽出開始値175または出力抽出終了値176はビット単位で指定されることを仮定して説明したが、バイト単位で指定することも可能である。入力抽出機能110の手順は入力固定長データ処理制御機能160により制御される。
図3において、入力抽出開始値171、および入力抽出終了値172、ハッシュ関数値173、選択値174、出力抽出開始値175、および出力抽出終了値176は変更可能なレジスターに保持される。
入力固定長データ処理手段100はその回路を入力抽出機能110、加算器120とレジスターA180、ハッシュ演算器130、3:1選択器、および出力抽出機能150に分割し、おのおのをステージと呼ぶと、各ステージで異なる検索番号8を持つ検索動作が可能である。このように入力固定長データ処理手段100は検索処理能力を増大させるパイプライン処理を行う。
一般的に、入力固定長データ9の全てまたはその一部は、IPアドレスを検索するために使用され、その他の検索のためにはハッシュ値全てまたはその一部が使用される。
[ポインタテーブル]
図4に、ポインタテーブルメモリ500の構成例を示す。なお、図4には、ポインタテーブルメモリ500、固定長テーブルメモリ560、データテーブル540の構成が似ている場合の例をまとめて記載したものである。図4の下段には、これらの各メモリとして使用する場合の制御信号、アドレス、データ組合わせが記載されている。
ポインタテーブルメモリ500はメモリアレイ501から構成されるメモリ部分と書き込みおよび読み出し回路509から構成される。入力固定長データ処理手段100の出力の内、ポインタテーブルインデックス191(図3)はポインタテーブルメモリ500のメモリのアドレスに使われ、同期検索番号192はポインタテーブルメモリ500の読み出し回路を同期させるために使われる。ポインタテーブルインデックス191は図5に示すようにメモリアレイ501のアドレスと、メモリバンク502それ自体のアドレスと、メモリバンク502内のアドレス(ディスプレースメント)とから構成され、ポインタテーブルメモリ500のメモリアドレスとなる。
書き込み機能は、書き込みおよび読み出し回路509に入力される書き込みアドレス・制御信号503と書き込みデータ504により与えられる書き込み命令を実行することにより実現される。ポインタテーブルメモリ500におけること書き込み機能は、主に固定長データ検索および管理装置で使用される機能であるため、詳細な説明は、固定長データ検索および管理装置の説明において行う。
書き込みおよび読み出し回路509における読み出し機能は、2箇所からの読み出し命令を受付けて動作することができる。読み出し命令の一つは入力固定長データ処理手段100からの読み出し命令505であり、他はポインタ処理手段200からの読み出し命令506である。両命令とも読み出すメモリのアドレスおよび制御信号を含み、命令に固有な同期検索番号192を伴っている。このように構成する理由は、読み出し命令は、必ずしも順番には実行されず、実行可能な命令から実行されるからである。読み出し命令が実行された後、読み出されたデータが図4の読み出しデータ507として、入力された同期検索番号192を伴って出力される。これにより、読み出しデータ507がどの読み出し命令によるものであるか判断することができる。
ポインタテーブルメモリ500のメモリ部分はQ(Qは1以上の整数)個のメモリアレイ501から成り、各メモリアレイはP(Pは1以上の整数)個のメモリバンク502から構成される。各メモリアレイ501は独立して動作し、全ての、あるいは一部の複数のメモリアレイ501を同時に動作させることができる。メモリアレイ501において、各メモリバンク502は独立したタイミング発生回路を持つため独立に動作する。しかし各バンクを接続するアドレスとデータバスと制御信号が共通であるため、一時に動作開始可能なメモリバンク502は一つだけである。メモリ動作命令間隔に比べて、各メモリバンク502の動作時間が長いため、メモリアレイ501内の複数のメモリバンク502が動作できる。ポインタテーブルメモリ500はP*Q個のメモリバンクから構成される。P*Q個のメモリアレイ501から構成しない理由はアドレス・データバスおよび制御信号が膨大な量になるからである。
ポインタテーブルメモリ500は、一つの同じメモリアレイ501にはメモリ動作命令間隔で読み出し命令を与えることができる。メモリ動作命令間隔(t秒)は、全てのメモリバンク502が動作可能な場合、読み出しアドレス・制御信号を運ぶバスと読み出しデータを運ぶバスの転送能力に依存する。1秒あたり最大Q/t回のメモリ動作命令すなわちポインタテーブルの読み出しが実行可能である。しかしながら、複数の読み出し命令が同じメモリバンク502に対し与えられる場合、メモリの動作時間間隔でしかその命令を実行することができない。その場合、ポインタテーブルメモリ500が並列動作可能であるというメリットが失われる。この状況が起きた場合、解決法はメモリの動作時間を短縮するほか手段は無いが、この状況が短い時間内で起きる場合において、メモリの並列動作を改善する手法を以下に説明する。
図5にはポインタテーブルメモリ500の読み出し機能510が示されている。メモリアレイ501の読み出し機能510はn個のレジスター511とポインタテーブルメモリ制御手段512から構成される。n個のレジスターはR1、R2、R3、Rnと名付けられており、読み出し命令を格納する。読み出し命令は読み出すメモリバンク502のアドレスを含むメモリアドレスと制御信号を含む。各レジスターはR2の読み出し命令をR1へ、R3の読み出し命令をR2へと移動させるための独立したシフト動作を行える配線で結ばれている。各シフト動作は、ポインタテーブルメモリ制御手段512により発せられる実行命令により制御される。例えば、3つの読み出し命令が実行待ちの状態のとき、ポインタテーブルメモリ制御手段512は、3つの命令をR1、R2、およびR3に格納するように管理する。ここで、命令を受けた時間はR1の命令が最初で、R3の命令が最後である。ポインタテーブルメモリ制御手段512は担当するメモリアレイ501内の各メモリバンク502の動作状況を管理する。
読み出し命令520は入力固定長データ処理手段100からの読み出し命令505とポインタ処理手段200からの読み出し命令506とをまとめた信号である。読み出し命令520が読み出し機能510に入力されると、ポインタテーブルメモリ制御手段512は最後に格納されたレジスターの次のレジスターを選択して命令を格納する。例えば、レジスターR1、R2、およびR3が満室の場合、レジスターR4が選択され、命令はレジスターR4に格納される。メモリアレイ501へのアクセス開始時間前に、ポインタテーブルメモリ制御手段512は、次に実行可能なメモリバンクに対する命令を、レジスターR1、R2、R3、およびR4に格納されている命令の中から選択する。ここで、実行可能な命令が複数ある場合には、古い命令から順に実行される。例えば、レジスターR2とR4内の命令が実行可能である場合、レジスターR2の命令が実行される。R2の命令がメモリバンク502に転送された後、レジスターR3の命令はR2にシフトされ、レジスターR4の命令はR3にシフトされる。レジスターの数nはメモリアレイ501内のメモリバンク502の数、メモリ動作命令間隔、メモリの動作時間を考慮して決定される。このように、与えられた読み出し命令520を実行可能な命から順次実行することにより、単位時間当たりのメモリ読み出し回数を増大させることができる。
ポインタテーブルメモリ500の出力は読み出された読み出しデータ507(図4)とその読み出し命令520に付属した同期検索番号192(図3)である。読み出しデータ507はポインタテーブルのエントリーデータである。
図6に、ポインタテーブルメモリ500に格納されるポインタテーブルのエントリーデータの内容を示す。図6に示したように、エントリーデータは大きく分類して3つの要素に分けられる。それらは(1)次工程、(2)次工程で必要なデータ、(3)メモリ制御データである。メモリ制御データは、次に読み出されるメモリアレイを含む固定長データテーブルを格納する固定長データテーブルメモリ560を構成するメモリアレイ561を制御するデータである。固定長データテーブルメモリ560については、固定長データが格納されているメモリアレイだけ、メモリ制御データにより読み出される。
ポインタテーブルのエントリーデータは次の6つの次工程を備える。
(1)ポインタテーブルのこのエントリーに固定長データは無い。検索終了となる。
(2)ポインタテーブルのこのエントリーに一つの固定長データが存在する。検索終了となる。
(3)ポインタテーブルの再読み出しを行う。
(4)ローカルテーブル(LT)の読み出しを行い、比較を実行する。
(5)固定長データテーブルの読み出しを行い、NVC(数値比較)を実行する。
(6)固定長データテーブルの読み出しを行い、比較を実行する。
これら次工程を詳しく説明する。
次工程が上記(1)である場合、すなわち、ポインタテーブルのこのエントリーに固定長データが無い場合、ポインタ処理手段200、固定長データテーブルメモリ560、比較手段400を経て出力手段800から検索結果が出力される。当然であるが固定長データテーブルメモリ560に入力されたポインタ処理手段200からのこの場合の命令によって読み出し動作は行われず、当該命令はそのまま比較手段400に出力される。もし、同期検索番号192に相当する検索結果が比較手段400に貯蔵されていなければ、不一致を示す検索結果が同期検索番号192と共に出力される。
次工程が上記(2)である場合、すなわち、ポインタテーブルの当該エントリーに一つの固定長データが存在する場合、このエントリーデータは固定長データのアドレスを持っている。この場合、ポインタ処理手段200、固定長データテーブルメモリ560、比較手段400を経て修正手段300でユーザーデータを得る。そして統計データが変更された後、一致検索結果とユーザーデータが同期検索番号192と共に出力手段から出力される。このケースはIPアドレスの検索に使われる工程であるため、後の比較処理は必要が無い。固定長データテーブルメモリ560におけるこの場合の動作は次工程(1)と同じである。
次工程が上記(3)である場合、すなわち、ポインタテーブルの再読み出しを行う場合は、ポインタテーブルのこのエントリーに多数の固定長データが存在することから、よりいっそうの細分化が必要である場合である。そのための手段として、ポインタテーブルによる細分化が図られる。最初のポインタテーブルと区別するため、このポインタテーブルをセカンダリーポインタテーブル(SPT)または2次ポインタテーブルと呼ぶ。このエントリーは、SPTのインデックスを生成させる目的で、ポインタテーブルメモリ500のベースアドレス、ポインタテーブルのサイズ、全インデックスの開始ビット位置、および全インデックスの終了ビット位置を備えている。SPTのインデックスはポインタテーブルメモリ500のベースアドレスと全インデックスの開始ビット位置から終了ビット位置に存在するビットとを連結して得られる。全インデックスの開始ビット位置から終了ビット位置に存在するビットは、ポインタテーブルインデックスとは異なる部分である。SPTのインデックスが得られた後、再びポインタテーブルが読み出される。その後の工程は、読み出されたポインタテーブルのエントリーに従う。
次工程が上記(4)である場合、すなわち、ローカルテーブル(LT)の読み出しを行い、比較を実行する場合、固定長データテーブル内に構築されたLTの読み出しを行い、得られた多数の固定長データの比較を行う。この次工程は、ポインタテーブルのこのエントリーに多数の固定長データが存在することから、よりいっそうの細分化を図る必要がある場合である。LTはそのための手段の一つである。LTは、固定長データテーブル内の複数のエントリーがテーブルとして活用されたものである。LTのインデックスは固定長データテーブルのインデックスの上位部分と、全インデックスの開始ビット位置から終了ビット位置に存在するビットとを連結して得られる。LTのインデックスが得られた後は(6)の工程の固定長データテーブルのインデックスが得られた後と同じである。
次工程が上記(5)である場合、すなわち、固定長データテーブルの読み出しを行い、NVCを実行する場合は、ポインタテーブルのこのエントリーに超多数の固定長データが存在することから、真剣によりいっそうのグループ化が必要となる場合である。このエントリーデータは、固定長データテーブルのインデックスを備え、そのインデックスに基づいて固定長データテーブルの読み出しを行い、読み出されたデータに基づいてNVCを実行する。この次工程が使われることはまれなことである。NVCにおいては数値比較を行うことによりデータベースを細分化する。NVC動作の詳細な説明は、固定データテーブルメモリの説明において行う。この次工程の次は(5)もしくは(6)である。(5)が選ばれる場合、このエントリーは巨大な数の固定長データを持つことが予想される。
次工程が上記(6)である場合、すなわち、固定長データテーブルの読み出しを行い、比較を実行する場合、このエントリーデータは、固定長データテーブルのインデックスと固定長データテーブルのメモリ制御データとを備え、そのインデックスに基づいて固定長データテーブルの読み出しを行い、読み出されたデータに基づいて比較を実行する。固定長データテーブルの読み出しの際、固定長データテーブルのメモリ制御データにより、このエントリーに属する固定長データが格納されているメモリアレイ501だけが読み出される。これにより、メモリ読み出し回数が増大され、メモリ読み出しに必要な電力が節約される。一般に、固定長データ検索装置10による検索の大部分は、この次工程により完了される。このエントリーデータから、固定長データテーブルのインデックスを得た後、固定長データテーブルが読み出される。得られた複数の固定長データテーブルのエントリーが比較手段に送られ、同期入力固定長データ193と比較されることにより、比較結果が得られる。
[ポインタ処理手段]
ポインタテーブルメモリ500の出力であるエントリーデータ(読み出しデータ507)はポインタ処理手段200に入力される(図1)。ポインタ処理手段200の目的は入力された情報から次工程である固定長データテーブルメモリのインデックスを出力することである。ポインタ処理手段200の実施例を図7に示す。ポインタ処理手段200の入力は、ポインタテーブルの前記エントリーデータと、入力固定長データ処理手段100の出力と、固定長データテーブルのエントリー制御データとである。ポインタテーブルの前記エントリーデータと固定長データテーブルのエントリー制御データとは同じ形式を持つので、以降の説明では単にエントリーデータという。
図7で、ポインタ処理手段200は、入力固定長データ処理手段100から出力された同期検索番号192と全インデックス190を受け取り、同期検索番号192をデコードして、その番号xに相当するレジスターSxに全インデックス190を格納する。
図7で、ポインタ処理手段200は、ポインタテーブルメモリ500の読み出しデータ507に含まれている同期検索番号514と比較手段400の同期検索番号451とを受け取り、同様にポインタテーブルメモリ500の読み出しデータ507に含まれているエントリーデータ516と比較手段400のエントリーデータ452とを受け取る。二つの同期検索番号514および451は、AND−OR231に入力される。ポインタ処理制御機能240の管理の下で、AND−OR231は同期検索番号251を生成する。同様に、エントリーデータ516およびエントリー制御データ452は、AND−OR221に入力される。さらにポインタ処理制御機能240の管理の下で、AND−OR221はエントリーデータを生成する。
同期検索番号は、エントリーデータを処理して、固定長データテーブルのインデックスを発生させるために、同期検索番号に相当する全インデックスを得る事に使われ、そして同期検索番号251として固定長データテーブルメモリ560に出力される。同期検索番号に相当する全インデックスは、n:1選択器213により準備され、レジスターEに格納される。
エントリーデータはAND−OR221により出力された後、レジスターFに格納される。その後、エントリーデータはそれ自体が有する次工程ビットによりデコードされ、目的のテーブルインデックス252とメモリ制御データ253を発生させる。次に、次工程とテーブルインデックス252およびメモリ制御データ253の関係を説明する。
(1)ポインタテーブルのこのエントリーに固定長データが無い場合、メモリ制御データ253は一致データ無しのデータとなり、そしてメモリ読み出し無しのデータとなる。両データは6:1選択器233に入力される固定制御データ234により生成される。固定制御データ234は、ポインタ処理制御手段240が生成する制御データの一つである。テーブルインデックス252は意味の無いデータとなる。テーブルインデックス252とメモリ制御データ253は固定長データテーブルメモリ560(図1)に送られる。
(2)ポインタテーブルのこのエントリーに一つの固定長データが存在する場合、メモリ制御データ253は一致データ有りのデータとなり、そしてメモリ読み出し無しのデータとなる。両データは6:1選択器233に入力され固定制御データにより発生される。テーブルインデックス252はエントリーデータから抽出された固定長データのアドレスとなる。テーブルインデックス252とメモリ制御データ253は固定長データテーブルメモリ560に送られる。
(3)ポインタテーブルの再読み出しを行う場合、メモリ制御データ253はポインタテーブルの読み出しのデータとなる。そのデータは6:1選択器233に入力される固定制御データ234により生成される。テーブルインデックス252としてはレジスターG216の出力が選択される。エントリーデータから抽出されたポインタテーブルベースアドレスと、SPTのサイズと、開始ビット位置と、終了ビット位置とが抽出機能215に入力され、全インデックスの開始ビット位置から終了ビット位置までのビットがレジスターG216に格納される。その結果、ポインタテーブルインデックスが形成される。テーブルインデックス252とメモリ制御データ253はポインタテーブルメモリ500に送られる。
(4)ローカルテーブル(LT)の読み出しを行い、比較を実行する場合、メモリ制御データ253は、固定長データテーブルの読み出しのデータとなる。そのデータは6:1選択器233に入力する固定制御データ234により生成される。テーブルインデックス252としてはレジスターG216の出力が選択される。エントリーデータから抽出された固定長データテーブルのインデックスの上位ビットと、LTのサイズと、開始ビット位置と、終了ビット位置とが抽出機能215に入力され、全インデックスの開始ビット位置から終了ビット位置までのビットがレジスターG216に格納される。その結果、固定長データテーブルインデックスが形成される。テーブルインデックス252とメモリ制御データ253は固定長データテーブルメモリ560に送られる。
(5)固定長データテーブルの読み出しを行い、NVCを実行する場合、メモリ制御データ253は固定長データテーブルを読み出したデータおよびNVC動作のデータとなる。そのデータは6:1選択器233に入力する固定制御データ234により生成される。テーブルインデックス252はエントリーデータから抽出された固定長データテーブルのインデックスとなる。テーブルインデックス252とメモリ制御データ253は固定長データテーブルメモリ560に送られる。
(6)固定長データテーブルの読み出しを行い、比較を実行する場合、メモリ制御データ253は固定長データテーブルを読み出したデータとエントリーデータから抽出された固定長データテーブルメモリの制御データとなる。固定長データテーブルの読み出しデータは、6:1選択器233に入力する固定制御データ234により発生される。テーブルインデックス252はエントリーデータから抽出された固定長データテーブルのインデックスを出力する。テーブルインデックス252とメモリ制御データ253は固定長データテーブルメモリ560に送られる。
ポインタ処理手段200のレジスターP217には、ポインタ処理手段200によって出力される、管理データを扱う検索番号を有しているテーブルインデックス252が格納される。レジスターP217においては、管理データを扱う検索番号を有しているテーブルインデックス252が複数回生成された場合、その生成のたびに格納動作が行われる。結果的に、レジスターP217は最後に生成されたテーブルインデックス252を保持する。
ポインタ処理手段200において、レジスターE214、レジスターF232、レジスターG216の前後において回路構成を複数のステージに区別すると、各ステージで異なる検索番号8を用いて検索動作が可能である。このようにポインタ処理手段200は検索処理能力を増大させるパイプライン処理を行う。ポインタ処理手段200のポインタ処理制御機能240は、抽出機能215、レジスターG216の格納信号発生、そしてパイプライン処理の管理を行う。
[固定長データテーブルメモリ]
図4に、固定長データテーブルメモリ560(図1)の構成例を示す。固定長データテーブルメモリ560は、メモリアレイ561から構成されるメモリ部分と書き込みおよび読み出し回路569とから構成される。ポインタ処理手段200の出力、固定長データテーブルインデックス252は、固定長データテーブルメモリ560のメモリのアドレス指定に使われ、同期検索番号251は固定長データテーブルメモリ560の読み出し回路の同期に使われる。固定長データテーブルインデックス252は、図5に示すようにメモリバンク562それ自体のアドレスと、メモリバンク562内のアドレス(ディスプレースメント)とから構成され、固定長データテーブルメモリ560のメモリアドレスとなる。この場合、メモリアレイ561のアドレスは出力されず、ポインタ処理手段200の出力であるメモリ制御データ(図示しない)により、固定長データテーブルメモリ560は独立して制御される。このため、固定長データテーブルメモリ560の全てのメモリアレイ561を読み出すことが可能となる。
固定長データテーブルメモリ560の書き込み機能は、書き込みおよび読み出し回路569に入力される書き込みアドレス・制御信号563と、書き込みデータ564により与えられる書き込み命令とにより実現される。この書き込み機能は、主に固定長データ検索および管理装置で使用される機能であるため、詳細な説明は固定長データ検索および管理装置の説明において行う。
固定長データテーブルメモリ560の読み出し機能はポインタ処理手段200からの読み出し命令565により実行される。読み出し命令565は、読み出すメモリのアドレスおよび制御信号を含み、そして命令に固有な同期検索番号251を伴う。その理由は読み出し命令が必ずしも順番には実行されず、実行可能な命令から実行されるからである。読み出し命令の実行後、読み出されたデータが図4の読み出しデータ567から、入力された同期検索番号251を伴って出力される。これにより、読み出しデータ567がどの読み出し命令によるものか判断できる。
固定長データテーブルメモリ560のメモリ部分はN(Nは1以上の整数)個のメモリアレイ561から成り、各メモリアレイはM(Mは1以上の整数)個のメモリバンク562から成る。各メモリアレイ561は独立して動作し、全ての、あるいは一部の複数のメモリアレイ561を同時に動作させることができる。メモリアレイ561において、各メモリバンク562は独立したタイミング発生回路を持つため独立に動作する。しかし各バンクを接続するアドレスとデータバスと制御信号が共通であるため、一時に動作開始可能なメモリバンク562は一つだけである。メモリ動作命令間隔に比べて、各メモリバンク562の動作時間が長いため、メモリアレイ561内の複数のメモリバンク562が動作できる。固定長データテーブルメモリ560はM*N個のメモリバンクから構成されるが、M*N個のメモリアレイ561から構成しない理由はアドレス・データバスおよび制御信号が膨大な量になるからである。
固定長データテーブルメモリ560は一つのメモリアレイ561にはメモリ動作命令間隔(t秒)で読み出し命令を与えることができる。メモリ動作命令間隔は、全てのメモリバンク562が動作可能な場合、読み出しアドレス・制御信号を運ぶバスと読み出しデータを運ぶバスの転送能力に依存する。1秒あたり最小1/t、最大N/t回のメモリ動作命令すなわち固定長データテーブルの読み出しが実行可能である。しかしながら、複数の読み出し命令が同じメモリバンク562に対し与えられる場合、メモリの動作時間間隔でしかその命令を実行することができない。その場合、固定長データテーブルメモリ560が並列動作可能であるというメリットが失われる。この状況が起きた場合、解決法は動作時間を短縮するほか手段は無いが、この状況が短い時間内で起きる場合、メモリの並列動作を改善する手法を以下に説明する。
図5に、固定長データテーブルメモリ560の読み出し機能570を示す。メモリアレイ561の読み出し機能570はn個のレジスター571と固定長データテーブルメモリ制御手段572から構成される。n個のレジスターはR1、R2、R3、Rnと名付けられており、読み出し命令を格納する。読み出し命令は読み出すメモリバンク562のアドレスを含むメモリアドレスと制御信号を含む。各レジスターはR2の読み出し命令をR1へ、R3の読み出し命令をR2へと移動させるための、独立したシフト動作を行える配線で結ばれている。各シフト動作は、固定長データテーブルメモリ制御手段572により発せられる実行命令により制御される。例えば、3つの読み出し命令が実行待ちの状態のとき、ポインタテーブルメモリ制御手段512は、3つの命令をR1、R2、およびR3に格納するように管理する。ここで、命令を受けた時間はR1の命令が最初で、R3の命令が最後である。固定長データテーブルメモリ制御手段572は担当するメモリアレイ561内の各メモリバンク562の動作状況を管理する。
読み出し命令565が読み出し機能570に入力されると、固定長データテーブルメモリ制御手段572は最後に格納されたレジスターの次のレジスターを選択して、命令を格納する。例えば、R1、R2、およびR3が満室の場合、R4が選択され、命令はそれに格納される。メモリアレイ561へのアクセス開始時間前に、固定長データテーブルメモリ制御手段572は、次に実行可能なメモリバンクに対する命令をレジスターR1、R2、R3、およびR4に格納されている命令の中から選択する。ここで、実行可能な命令が複数ある場合には、古い命令から順に実行される。例えば、レジスターR2とR4内の命令が実行可能である場合、レジスターR2に格納された命令が実行される。レジスターR2の命令がメモリバンク562に転送された後、レジスターR3の命令はR2にシフトされ、レジスターR4の命令はR3にシフトされる。レジスターの数nはメモリアレイ561内のメモリバンク562の数、メモリ動作命令間隔、メモリの動作時間を考慮して決定される。このように、与えられた読み出し命令565を実行可能な命令から、実行することにより、単位時間当たりのメモリ読み出し回数を増大させることができる。
固定長データテーブルメモリ560の出力は読み出された読み出しデータ577とその読み出し命令565に付属した同期検索番号251である。読み出しデータ567は固定長データテーブルのエントリーデータである。
図5に示されているように、固定長データテーブルのインデックスはメモリバンク562それ自体のアドレスとメモリバンク562の中のアドレス(ディスプレースメント)により構成される。そしてメモリアレイはメモリ制御データ253により制御される。この理由は一度に比較される固定長データの数をできるだけ多くするためであり、不必要なメモリアレイの読み出しを防ぐためである。固定長データテーブルの一つのインデックスで読み出される固定長データの構成を図8に示す。メモリアレイ561から読み出されるエントリーデータは、エントリー制御データと、複数の、単数の、または一部の固定値データとから構成される。メモリアレイ561に含まれる固定値データの数は、固定値データの長さに依存する。例として、図8は固定長データテーブルの一つのインデックスに最大数の固定長データが存在する場合を示す。このケースでは、メモリアレイ1を除く各メモリアレイの持つエントリー制御データは無視されるため、図示していない。
図8に、固定長データテーブルの要素の構成を示す。固定長データテーブルの要素としては2つの形式が存在し、前次工程がその形式を決定する。一つは前次工程が比較動作を指示した場合の形式(1)であり、他はNVC動作を指示した場合の形式(2)である。形式(1)は固定長データ、マスク、および固定長データ名から構成される。形式(1)の場合、マスクについては検索ルールによって存在しない場合(グローバルマスクである場合)もある。この場合には、比較対照データは固定長データであり、マスクはその比較動作で使用される。この場合において、比較動作の結果、固定長データ名が一致した場合、比較対照データは一致した固定長データの名前として出力されるデータである。形式(2)は抽出インデックスと固定長データテーブルインデックスとから構成される。形式(2)を理解するために、以下、NVC動作を説明する。
図9により、NVC動作を説明する。NVC動作をより理解しやすいように、NVC動作のエントリーデータの作成手順を図9により説明する。例として、ポインタテーブルのあるエントリーがm個の固定長データを保持していると仮定する。固定長データは、詳しくは、固定長データ、対応する全インデックス、マスク、および固定長データ名である。図9の作業1で示されるように、まず、全インデックスから指定された部分を抽出し、それを抽出インデックスと呼ぶこととすると、m個の固定長データに対する抽出インデックスを得る。次に、作業2で、m個の抽出インデックスを大小順に他のデータと共に並べる。さらに、作業3で、大小順に並べられた他のデータを伴ったm個の抽出インデックスを、所定の数以内に大きさ順に分割し、所定の数のグループを作る。この所定の数は、固定長データテーブルの一つのエントリーデータに格納できる数である。この所定の数以内であればエントリーデータ内に格納できるので、そのグループの所定の数は任意に選択できる。そして、作業4で、各グループの固定長データとその他のデータをエントリーデータに格納する。これが比較動作のためのエントリーデータとなる。各エントリーデータはそれぞれインデックスを持つ。加えて、作業5で、NVC動作のエントリーデータを作成する。なお、以上の説明においてはNVC動作によりエントリーデータを作成する方法を示したが、本発明でNVC形式のテーブル構造を作成する方法は異なる。
図9の説明により、NVC動作のエントリーデータが理解できる。すなわち、NVC動作は次のように行われる。例えば、ポインタテーブルのエントリーデータの次工程がNVC動作を指示した場合、そのエントリーデータが指定する固定長データテーブルインデックスに従って固定長データテーブルメモリを読み出し、NVC動作のエントリーデータを得る、その後、入力固定長データ9の全インデックス190から、そのNVC動作のエントリーデータの次工程が指定した部分を抽出する。抽出された抽出インデックスはNVC動作のエントリーデータにおける各固定長データテーブルの要素の抽出インデックスとその値が大小比較される。図9の作業5で得られたNVC動作のエントリーデータは、左側の抽出インデックスが最小で、右に向かって大きな抽出インデックスとなるように並べられている。この例に従えば、値の大小比較の結果は、抽出インデックスとの大小比較結果を左側から記述すると、大、大、大、大、小、小のような並びが得られる。この場合、大から小に遷移する直前の「大」が有する固定長データテーブルインデックスが、次の固定長データテーブルの読み出しインデックスとなる。大小比較の結果が全て大となれば、一番右側の抽出インデックスが持つ固定長データテーブルインデックスが次の固定長データテーブルの読み出しインデックスとなる。
もし、NVC動作のエントリーデータと比較動作のエントリーデータで格納できないほどに著しく多い固定長データがポインタテーブルのあるエントリーに属している場合には、NVC動作のエントリーデータを増やし、NVC動作のエントリーデータ、NVC動作のエントリーデータ、そして比較動作のエントリーデータという構成で、非常に大きな数の固定長データが検索可能である。なお、NVC動作自体が非常にまれな事態であるため、NVC動作のエントリーデータが二つ続くケースはありえないと考えられるが機能としては用意されている。
図6に、固定長データテーブルメモリ560に格納される固定長データテーブルのエントリー制御データの内容を示す。エントリー制御データはポインタテーブルのエントリーデータと同様な構成である。図6に示されたようにエントリー制御データは大きく分類して3つの要素に分けられる。それらは(1)次工程、(2)次工程で必要なデータ、(3)メモリ制御データである。メモリ制御データは、固定長データテーブルを格納する固定長データテーブルメモリ560を構成するメモリアレイ561であって、次に読み出されるメモリアレイ561を制御するデータである。固定長データテーブルメモリ560においては、固定長データが格納されているメモリアレイだけが、メモリ制御データにより読み出される。次に読み出されるメモリがポインタテーブルメモリ500である場合、メモリ制御データは無視される。
エントリー制御データは次の5つの次工程を備える。
(1)固定長データテーブルのこのエントリーに固定長データは無い。検索終了となる。
(2)ポインタテーブルの再読み出しを行う。
(3)ローカルテーブル(LT)の読み出しを行い、比較を実行する。
(4)固定長データテーブルの読み出しを行い、NVCを実行する。
(5)固定長データテーブルの読み出しを行い、比較を実行する。
これら次工程を詳しく説明する。
次工程が上記(1)である場合、すなわち、固定長データテーブルのこのエントリーに固定長データは無い場合、比較手段を経て出力手段800から検索結果が出力される。もし比較手段400に、同期検索番号192に相当する検索結果が貯蔵されていなければ、不一致の検索結果が同期検索番号192と共に出力される。
次工程が上記(2)である場合、すなわち、ポインタテーブルの再読み出しを行う場合、固定長データテーブルの当該エントリーに多数の固定長データが存在するため、よりいっそうの細分化が必要であることを意味する。その手段として、ポインタテーブルによる細分化が図られる。SPTのインデックスを発生する目的で、このエントリーは、ポインタテーブルメモリ500のベースアドレス、ポインタテーブルのサイズ、全インデックスの開始ビット位置、および全インデックスの終了ビット位置を備える。SPTのインデックスはポインタテーブルメモリ500のベースアドレスと全インデックスの開始ビット位置から終了ビット位置に存在するビットを連結して得られる。全インデックスの開始ビット位置から終了ビット位置に存在するビットは、ポインタテーブルインデックスとは異なる部分である。SPTのインデックスが得られた後、比較手段を経て再びポインタテーブルの読み出しを行う。その後の工程は、読み出されたポインタテーブルのエントリーに従う。
次工程が上記(3)である場合、すなわち、ローカルテーブル(LT)の読み出しを行い、比較を実行する場合、固定長データテーブル内に構築されたLTの読み出しを行い、得られた多数の固定長データの比較を行う。これは、ポインタテーブルのこのエントリーに多数の固定長データが存在するため、よりいっそうの細分化を図る必要があることを意味し、LTはその手段の一つである。LTは、固定長データテーブル内の複数のエントリーをテーブルとして活用する。LTのインデックスは固定長データテーブルのインデックスの上位部分と全インデックスの開始ビット位置から終了ビット位置に存在するビットを連結して得られる。LTのインデックスが得られた後は(5)の工程の固定長データテーブルのインデックスが得られた後と同じである。
次工程が上記(4)である場合、すなわち、固定長データテーブルの読み出しを行い、NVCを実行する場合、ポインタテーブルのこのエントリーに超多数の固定長データが存在するため、真剣によりいっそうのグループ化が必要であることを意味する。このエントリーデータは固定長データテーブルのインデックスを備え、そのインデックスで固定長データテーブルの読み出しを行い、読み出されたデータでNVCを実行する。この次工程が使われることはまれなことである。この次工程の次は(4)または(5)である。(4)が選ばれる場合、このエントリーは巨大な数の固定長データを持つことが予想される。前次工程がNVCの実行を指示している場合、図6に示されたようにエントリー制御データは全インデックスから抽出するデータを含む。
次工程が上記(5)である場合、すなわち、固定長データテーブルの読み出しを行い、比較を実行する場合、このエントリーデータは、固定長データテーブルのインデックスと固定長データテーブルのメモリ制御データを備え、そのインデックスの作用により固定長データテーブルの読み出しを行い、読み出されたデータを用いて比較を実行する。固定長データテーブルの読み出しの際、固定長データテーブルのメモリ制御データは、このエントリーに属する固定長データが格納されているメモリアレイ561だけを読み出す。これにより、メモリ読み出し回数を増大し、メモリ読み出しに必要な電力の節約になる。一般に、固定長データ検索装置10で検索される大部分はこの次工程により検索終了する。このエントリーデータから、固定長データテーブルのインデックスを得た後、固定長データテーブルが読み出される。得られた複数の固定長データテーブルのエントリーは比較手段400に送られ、同期入力固定長データ193と比較され、比較結果が得られる。前次工程がNVCの実行を指示している場合、図6に示されたようにエントリー制御データは全インデックスから抽出するデータを含む。
[比較手段]
固定長データテーブルメモリ560の出力であるエントリーデータは比較手段400に入力される。比較手段400の目的は、入力されたエントリーデータと前もって保存された同期入力固定値データ193とを比較し(比較動作)、比較により得られた結果を保持すること、入力されたエントリーデータと全インデックスから抽出した抽出インデックスを大小比較すること、および、入力されたエントリー制御データの次工程に従い、次の工程を決定することである。
比較手段400の実施例を図10に示す。比較手段400への入力は固定長データテーブルメモリ560の出力である固定長データテーブルのエントリーデータと入力固定長データ処理手段の出力とである。図10に示したように、比較手段400は、入力固定長データ処理手段100から出力された同期検索番号192と全インデックス190を受け取り、デコーダー411により同期検索番号192をデコードして、その番号xに相当するレジスターTx、412に同期入力固定値データ193と全インデックス190を格納する。同期入力固定値データ193は、固定値データテーブルメモリ560から出力された固定値データテーブルのエントリーデータと比較を行うために使われ、全インデックス190は、ポインタテーブルインデックスまたは固定値データテーブルインデックスの発生のために使われる。
固定長データテーブルメモリ560から入力される同期検索番号とエントリーデータはレジスターHに保持される。比較手段400の機能は、レジスターH、421のメモリ制御データ以外のエントリーデータの処理、すなわち前次工程の処理とレジスターHのエントリーデータの持つ次工程の処理とである。このため、前次工程の示す処理を最初に説明し、その後、エントリーデータが含む次工程によって実行される、比較手段400の処理を説明する。各説明における動作手順は比較制御機能440により管理される。比較制御機能440は入力される次工程により比較手段400の他の回路の制御信号を発生する。
前次工程において固定長データテーブルメモリ560から比較手段400への入力が生じるのは次の5つのケースである。
(1)ポインタテーブルのこのエントリーに固定長データは無い。検索終了となる。
(2)ポインタテーブルのこのエントリーに一つの固定長データが存在する。検索終了となる。
(3)ローカルテーブル(LT)の読み出しを行い、比較を実行する。
(4)固定長データテーブルの読み出しを行い、NVCを実行する。
(5)固定長データテーブルの読み出しを行い、比較を実行する。
以下、各ケースについて比較手段400の処理を説明する。
次工程が上記(1)である場合、すなわち、このエントリーに固定長データが無い場合においては、比較制御機能440は検索の終了を認識する。この際、レジスターHに保持されている同期検索番号xに相当するレジスターUxの内容、すなわち、検索結果453と固定長データ名452がn:1選択器424を通して、同期検索番号451を伴って、出力手段800に出力される。それと同時に、検索結果が一致結果を示す場合には、同期検索番号451と同期検索番号xに相当するレジスターUxに保持されるデータテーブルインデックス455が修正手段300に送られる。
次工程が上記(2)である場合、すなわち、このエントリーに一つの固定長データが存在する場合、比較制御機能440は検索の終了および一致結果を認識し、比較器431に対し、レジスターHに保持されている固定長データテーブルのインデックスのアドレスをn:1選択器432に出力し、一致結果を出力させる。n:1選択器432は固定長データ名と固定長データテーブルインデックスを、比較器431は検索結果と固定長データテーブルのインデックスのアドレスを出力し、その出力は同期検索番号xに相当するレジスターUxに書き込まれる。書き込み動作後、n:1選択器424を通して出力手段800と修正手段300に出力される。固定長データテーブルインデックスと固定長データテーブルのインデックスのアドレスを連結することによりデータテーブルインデックス455が得られる。出力手段800に出力されるデータは検索結果453、同期検索番号451と固定長データ名である。そして修正手段300に出力されるデータは同期検索番号451とデータテーブルインデックス455である。
次工程が上記(3)である場合、すなわち、ローカルテーブル(LT)の読み出しを行い、比較を実行する、および(5)固定長データテーブルの読み出しを行い、比較を実行する場合、レジスターHに保持されているエントリーデータについての比較手段400が行う処理は同じである。レジスターHに保持されている同期検索番号により、n:1選択器413はレジスターTxを選択し、その内容、すなわち同期入力固定長データと全インデックスを出力する。次工程が(3)または(5)であるため、2:1選択器は、同期入力固定長データをレジスターTxの出力から選択する。そして、その出力は抽出機能415に入力される。この際、同様に次工程(3)または(5)であるため、抽出機能415は機能せず、入力された同期入力固定長データはそのまま出力されずに、比較器431に入力される。一方、レジスターHに保持されている固定長データテーブルの各要素は比較器431に入力され、比較動作が行われる。
比較器431は図11に示す3種類の論理比較を行う。検索ルールがLPM(Longest Prefix Match)法の場合、固定長データテーブルの要素はマスク値を持つ。マスクは固定長データのビット長を有するビット列に展開される。展開方法は、マスクが持つ値(図11ではm)に1を加えた和だけ左側のビット位置から1を並べ、それ以降は固定長データのビット長のところまで0を並べる。固定長データと同じ長さを有する展開されたビット列が論理比較動作のマスクとして動作する。この場合、固定長データの左側から(m+1)ビットだけ論理比較が行われる。論理比較は固定長データテーブルの要素と同期入力固定長データの左側の(m+1)ビットが一致すれば、一致していると判断し、それ以外の場合には不一致であると判断する。検索ルールがローカルマスクルール法により行われる場合、固定長データテーブルの要素はマスクそれ自体を有しており、そのマスクを使い、固定長データテーブルの要素と同期入力固定長データの論理比較を行う。論理比較はLPM法のマスク展開後の処理と同じである。ただし、マスクは任意のビット位置に1が存在するものであるため、1となっているビット位置においてのみ論理比較を実行する。検索ルールがグローバルマスクルール法により行われる場合、固定長データテーブルの要素はマスクを持たない。そのかわり、マスクは指定可能なレジスターに保存されている。そのマスクを使い、固定長データテーブルの要素と同期入力固定長データの論理比較が行われる。論理比較はローカルマスクルール法と全く同じである。
論理比較の結果、一致する固定長データテーブルの要素が存在すれば、一致要素のアドレスを発生させ、レジスターH421に保持されている同期検索番号xでアドレス指定されるレジスターUx423に検索結果、固定長データ名、固定長データテーブルインデックス、および一致要素のアドレスを保存する。固定長データテーブルインデックスと一致要素のアドレスを連結すればデータテーブルのインデックスが得られる。
次工程が上記(4)である場合、すなわち、固定長データテーブルの読み出しを行い、NVCを実行する場合、図11に示す大小比較を行い、検索を続ける。レジスターHに保持されている同期検索番号xにより、n:1選択器413はレジスターT1〜Tn412の中から、レジスターTxを選択し、その内容、同期入力固定長データと全インデックスを出力する。それらから、2:1選択器は、次工程(4)であるため、全インデックスを選択する。そして、その出力は抽出機能415に入力され、同様に次工程(4)であるため、抽出機能415はレジスターH421に保持されているNVCの長さ、開始ビット位置、および終了ビット位置により制御され、それらから抽出インデックスを抽出し、比較器431に入力される。一方、レジスターH421に保持されている固定長データテーブルの各要素は比較器431に入力され、大小比較動作が行われる。NVCの長さ、開始ビット位置、および終了ビット位置は、前次工程がNVC動作を指示した場合、レジスターHのエントリーデータの持つ次工程に保存されている。
比較器431は、図11に示すように、抽出機能415からの抽出インデックス(A)と固定長データテーブルの各要素の抽出インデックス(B)を大小比較する。比較器431はこの結果、A>B、A=B、そしてA<Bを発生する。
結果として、比較器431は比較回路と大小比較回路を備える。これらの回路はいろいろなビット長を持つ固定長データを扱えるように、回路のビット長を変更可能な構成を持つ。1ビット単位で再配置可能な回路が無駄である場合には、バイト、またはワード単位で規定される再配置可能な回路を備える。
比較手段400においては、記述された前次工程の処理と同時に、レジスターHのエントリーデータの持つ次工程の処理が行われる。固定長データテーブルのエントリー制御データは図6に示されている下記次工程の処理を行う。
(1)固定長データテーブルの当該エントリーに固定長データは無い。検索終了となる。
(2)ポインタテーブルの再読み出しを行う。
(3)ローカルテーブル(LT)の読み出しを行い、比較を実行する。
(4)固定長データテーブルの読み出しを行い、NVCを実行する。
(5)固定長データテーブルの読み出しを行い、比較を実行する。
又、前次工程がNVC動作か否かでこれら次工程の処理は異なる、このため、最初は前次工程がNVC動作ではない場合を詳しく説明する。そしてその後、前次工程がNVC動作の場合について説明する。
次工程が(1)である場合、すなわち、固定長データテーブルのこのエントリーに固定長データは無い場合、比較制御機能440は検索の終了を認識し、レジスターHに保持されている同期検索番号xに相当するレジスターUxの内容(すなわち、検索結果453と固定長データ名452)がn:1選択器424を通して、同期検索番号451を伴って、出力手段800へと出力される。同時に、検索結果が一致結果を示す場合、同期検索番号451と同期検索番号xに相当するレジスターUxに保持されるデータテーブルインデックス455とが修正手段300に送られる。
その他(2)〜(5)の次工程においてはエントリー制御データがレジスターI433に入力され、2:1選択器434を通して出力される。出力されるエントリー制御データ454はポインタ処理手段200に出力される。
前次工程がNVC動作の場合、エントリー制御データの次工程としては次の3つが使用できる。
(1)固定長データテーブルのこのエントリーに固定長データが無い。
(2)固定長データテーブルの読み出しを行い、NVCを実行する。
(3)固定長データテーブルの読み出しを行い、比較を実行する。
このうち、次工程(1)は前次工程がNVC動作ではない場合の次工程(1)と全く同じ処理を行う。
次工程が上記(2)と(3)である場合において、出力されるエントリー制御データは、前次工程がNVC動作ではない場合と異なる。前次工程がNVC動作を指定しているため、レジスターHに保持されているエントリーデータの固定長データテーブルの各要素と大小比較が行われている。この際の比較は大小比較であるため、条件に合う要素が存在する。その要素の持つ固定長データテーブルのインデックスはn:1選択器432を通して、レジスターI433に保存される。そして固定長データテーブルのインデックスは次工程と共に、2:1選択器434を通して出力される。出力されるエントリー制御データ454はポインタ処理手段200に出力される。
比較手段400が出力するデータのまとめを図12に示す。比較手段400は検索動作が終了したと判断した場合、修正手段300と出力手段800(図1)に図12に示すデータを出力する。すなわち修正手段300に同期検索番号を伴い、データテーブルのインデックスを出力する。これを使い修正手段300はユーザーデータと統計データをアクセスする。出力手段800に検索結果と同期検索番号を伴い、比較結果が一致した場合だけ固定長データ名を加えて出力する。又、比較手段400は検索動作が続くと判断した場合、ポインタ処理手段200に図12に示すデータを出力する。すなわち、同期検索番号を伴い、前次工程がNVCの場合、NVC動作で得た固定長データテーブルインデックスが、その他の場合、エントリー制御データが出力される。
比較手段400(図10)はその回路をレジスターH421とレジスターI433の前後に区分して、おのおのをステージと呼ぶと、各ステージで異なる同期検索番号を持つ検索動作が可能である。このように比較手段400は検索処理能力を増大させるパイプライン処理を行う。比較手段400の比較制御機能440は抽出機能415、比較器431、レジスターUxの格納信号発生、そしてパイプライン処理の管理を行う。
ポインタ処理手段200に出力されたエントリー制御データの処理は前記ポインタ処理手段200で説明された方法により行われる。
[修正手段]
修正手段300に入力された同期検索番号451とデータテーブルインデックス455はデータテーブルに格納されているユーザーデータの読み出しと、統計データの変更を行う。図13に修正手段300の実施例を示す。
図13において、修正手段300は、入力固定長データ処理手段100から出力された同期検索番号192と同期統計データ194を受け取り、同期検索番号192をデコーダー311によりデコードして、その番号xに相当するレジスターTxに同期統計データ194を格納する。同期統計データ194はデータテーブルメモリ540から出力されたデータテーブルのエントリーデータの一つである統計データに加算される。加算結果は統計データが格納されていたのと同じエントリーに書き込まれる。データテーブルのエントリーデータにおける他のデータ、ユーザーデータは統計データと共に読み込まれ、出力手段800に同期検索番号と共に出力される。
図13において、比較手段400からデータテーブルインデックス455と同期検索番号451が入力されレジスターK316に格納される。レジスターKの出力である読み込み同期検索番号336と読み込みデータテーブルインデックス335とはデータテーブルメモリ540に読み出し動作を行うために出力される。又、データテーブルインデックス335は統計データの変更後の書き込みを行うためにレジスターM322に格納される。
データテーブルメモリ540の読み出し動作終了後、データテーブルメモリ540の読み出しデータ556、すなわち、同期検索番号とエントリーデータが入力され、同期検索番号はレジスターM322に、エントリーデータはレジスターJ315に各々格納される。同期検索番号はn:1選択器の選択信号として使われ、同期検索番号xに相当するレジスターVx312に格納されている統計データを選択する。選択された統計データはレジスターL313に格納され、加算器321に入力される。一方、レジスターJ315に格納されているエントリーデータの統計データは、加算器321の他方の入力に送られる。エントリーデータのユーザーデータはレジスターM322に格納される。
加算器321は加算結果を出力し、加算結果はレジスターM322に格納される。そして、レジスターM322の格納されている読み込みデータテーブルインデックス335、同期検索番号、および加算器の結果を、それぞれ書き込みデータテーブルインデックス334、書き込みおよび出力同期検索番号333、書き込み累積統計データ331の名前でデータテーブルメモリ540に出力して、書き込み動作をする。この際、管理データを処理する検索番号を受け取った場合には、加算器321は加算結果をレジスターO323に格納することもできる。管理データを扱う検索番号はデコーダー324で認識され、レジスターO323の格納信号となる。レジスターO323の出力は固定長データ検索および管理装置50により読み出される。その詳細は後述する、固定長データ検索および管理装置50に関連して説明する。
レジスターM322に格納されているユーザーデータは、出力ユーザーデータ332として、書き込みおよび出力同期検索番号333と共に出力手段800に出力される。図13に、出力手段800への出力データを示す。
修正手段300はその回路をレジスターK316、レジスターJ315、レジスターL313とレジスターM322の前後に区分し、おのおのをステージと呼ぶと、各ステージで異なる同期検索番号を持つ検索動作が可能である。このように修正手段300は検索処理能力を増大させるパイプライン処理を行う。又、修正手段300の修正制御機能340は加算器321の制御とレジスターK316、レジスターJ315、レジスターL313とレジスターM322の格納信号発生、そしてパイプライン処理の管理を行う。特に、レジスターM322は格納する各種データに合わせた格納信号を発生させる必要がある。
[データテーブルメモリ]
図4に、データテーブルメモリ540の構成例を示す。データテーブルメモリ540はメモリアレイ541から構成されるメモリ部分と書き込みおよび読み出し回路550から構成される。修正手段300の出力である書き込みデータテーブルインデックス334、および読み出しデータテーブルインデックス335は、データテーブルメモリ540のメモリのアドレス指定に使われ、読み出し同期検索番号336はデータテーブルメモリ540の読み出し回路の同期に使われる。書き込みデータテーブルインデックス334、および読み出しデータテーブルインデックス335は、図5に示されるように、メモリアレイ551のアドレス、メモリバンク542のアドレス、およびメモリバンク542内のアドレス(ディスプレースメント)から構成され、データテーブルメモリ540のメモリアドレスとなる。
書き込み機能は、2箇所からの書き込み命令を受け付け、実行可能である。一つは修正手段300からの書き込み命令であり、他はデータテーブルメモリ540の管理機能からの書き込み命令である。修正手段300からの書き込み命令は、書き込みおよび読み出し回路550に入力される書き込みアドレス・制御信号A551と書き込みデータ552とにより実行する。データテーブルメモリ540の管理機能からの書き込み命令は、書き込みおよび読み出し回路550に入力される書き込みアドレス・制御信号B553と書き込みデータ554とにより実行する。管理機能からの書き込み機能は、主に固定長データ検索および管理装置で使用される機能であるため、詳細説明は固定長データ検索および管理装置の説明で行う。
読み出し機能は修正手段300からの読み出し命令であり、読み出し命令はアドレス・制御信号555と命令に固有な読み出し同期検索番号336を伴う。これは、読み出し命令が順番には実行されず、実行可能な命令から実行されるためである。読み出し命令の実行後、読み出されたデータが図4の読み出しデータ556から、入力された読み出し同期検索番号336を伴って出力される。これにより、読み出しデータ556がどの読み出し命令によるものか判断できる。
データテーブルメモリ540のメモリ部分はU(Uは1以上の整数)個のメモリアレイ541から成り、各メモリアレイはV(Vは1以上の整数)個のメモリバンク542から構成される。各メモリアレイ541は独立して動作し、複数のメモリアレイ541の全てあるいはその一部だけを同時に動作させることができる。メモリアレイ541において、各メモリバンク542は独立したタイミング発生回路を持つため独立に動作する。しかし各バンクを接続するアドレスとデータバスと制御信号が共通であるため、一時に動作開始可能なメモリバンク542は一つだけである。メモリ動作命令間隔に比べて、各メモリバンク542の動作時間が長いため、メモリアレイ541内の複数のメモリバンク542が動作できる。データテーブルメモリ540はU*V個のメモリバンクから構成されるが、U*V個のメモリアレイ541から構成しない理由はアドレス・データバスおよび制御信号が膨大な量になるからである。
データテーブルメモリ540は同じメモリアレイ541にメモリ動作命令間隔で読み出し命令を与えることができる。メモリ動作命令間隔(t秒)は、全てのメモリバンク542が動作可能な場合、読み出しアドレス・制御信号を運ぶバスと読み出しデータを運ぶバスの転送能力に依存する。毎秒最大Q/t回のメモリ動作命令すなわちデータテーブルの読み出しが実行可能である。しかしながら、複数の読み出し命令が同じメモリバンク542に対し与えられる場合、メモリの動作時間間隔でしかその命令を実行することができない。その場合、ポインタテーブルメモリ540の並列動作可能なメリットが失われる。この状況となった場合、解決法は動作時間を短縮するほか手段は無いが、この状況が短い時間内で起きる場合、メモリの並列動作を改善する手段を説明する。図5に、データテーブルメモリ540の読み出し機能549を示す。
メモリアレイ541の読み出し機能549はn個のレジスター543とデータテーブルメモリ制御手段544から構成される。n個のレジスターはR1、R2、R3、Rnと名付けられ、読み出し命令を格納する。読み出し命令は読み出すメモリバンク542のアドレスを含むメモリアドレスと制御信号を含む。各レジスターはR2の読み出し命令をR1へ、R3の読み出し命令をR2へ移動する、独立したシフト動作を行える配線で結ばれ、各シフト動作はデータテーブルメモリ制御手段544が実行命令を出す。例えば、3つの読み出し命令が実行待ちの状態のとき、データテーブルメモリ制御手段544は、3つの命令をR1、R2、およびR3に格納するように管理する。この場合、命令を受けた時間はR1の命令が最初で、R3の命令が最後である。データテーブルメモリ制御手段544は担当するメモリアレイ541内の各メモリバンク542の動作状況を管理する。
読み出し命令557が読み出し機能549に入力されると、データテーブルメモリ制御手段544は最後に格納されたレジスターの次のものを選択し、命令を格納する。例えば、R1、R2、およびR3が満室の場合、R4が選択され、命令はそれに格納される。メモリアレイ541の開始時間前に、データテーブルメモリ制御手段544は次に実行可能なメモリバンクに対する命令をR1、R2、R3、およびR4に格納されている命令の中から選択する。例えば、R2とR4内の命令が実行可能である場合、古い命令を実行する。この場合、R2の命令が実行され。R2の命令がメモリバンク542に転送された後、R3の命令はR2に移動され、R4の命令はR3にシフトされる。レジスターの数nはメモリアレイ541内のメモリバンク542の数、メモリ動作命令間隔、メモリの動作時間を考慮して決定される。このように、与えられた読み出し命令557を実行可能な命令から、実行することにより、単位時間当たりのメモリ読み出し回数が増大する。
データテーブルメモリの読み出し機能を説明したが、データテーブルメモリは読み出しと同様に、読み出されたデータに修正を行い、同じ場所に書き込まれる。この為、上記説明で読み出し命令と書き込み命令を同時に制御しても良い。
データテーブルメモリ540の出力は読み出された読み出しデータ556とその読み出し命令557に付属した読み出し同期検索番号336である。読み出しデータ556はデータテーブルのエントリーデータである。
データテーブルメモリ540に格納されるデータタテーブルのエントリーデータの内容を図13に示す。図13に示されるように、エントリーデータは2つの要素に分けられる。それらは累積統計データとユーザーデータである。これらデータの処理は修正手段300で説明した。
[出力手段]
出力手段800は検索結果を出力する。出力手段800の実施例を図14に示す。出力手段800は比較手段400から同期検索番号451、検索結果453と固定長データ名452が入力される。入力された、それらのデータは同期検索番号451のデコーダー811によって同期検索番号451(xとする)に相当するレジスターSx812に格納される。
同様に出力手段800には修正手段300から出力同期検索番号333と出力ユーザーデータ332が入力される。入力されたそれらのデータは、出力同期検索番号333のデコーダー815によって出力同期検索番号333(yとする)に相当するレジスターSy812に格納される。
出力手段800は、比較手段400から入力された検索結果453が不一致である場合、同期検索番号451、検索結果453および固定長データ名452が比較手段400から入力されて、レジスターSx812に格納され、AND−OR選択器813から出力されて、レジスターNに格納され、そして検索結果出力820として出力される。図14に、出力手段800の出力として検索結果出力820を示す。このとき、レジスターSx812の名前、すなわち同期検索番号もAND−OR選択器813から出力、そしてレジスターNに格納され、検索結果出力820として出力される。
比較手段400から入力された検索結果453が一致の場合、同期検索番号451と、検索結果453および固定長データ名452が比較手段400から入力され、レジスターSxに格納される。そして修正手段からの出力ユーザーデータ332を待つ。修正手段300から出力同期検索番号333と出力ユーザーデータ332が入力され、レジスターSx812に格納された後、レジスターSxの全ての内容(同期検索番号を含む)がAND−OR選択器813から出力され、レジスターN814に格納され、検索結果出力820として出力される。図14に、出力手段800の出力として検索結果出力820を示す。
出力手段800が行う出力判断は出力制御機能840により行われる。同期検索番号が管理データを扱う場合、出力制御機能840はそれに相当するレジスターSx812の内容を検索結果出力820に出力しないで、レジスターSx812の内容を管理検索結果出力821に直接出力する。
レジスターSx812に格納する回路とレジスターN814の回路おのおのをステージと呼ぶと、各ステージで異なる同期検索番号を持つ検索動作が可能である。このように出力手段800は検索処理能力を増大させるパイプライン処理を行う。又、出力手段800の出力制御機能800は出力判断、レジスターN814の格納信号発生、そしてパイプライン処理の管理を行う。
上記メモリのほかに、固定長データ検索装置10に含まれる、ポインタテーブルメモリ500と、固定長データテーブルメモリ560と、データテーブルメモリ540は検索動作のための読み出し・書き込み動作中であっても、テーブル管理制御手段600により割り込まれ、読み出し、そして書き込みが可能な構成を持つ。この場合、テーブル管理制御手段600のそれらのメモリに対する読み込みと書き込み動作は、検索動作の問題または妨害にはならない。
図15に、空家テーブルメモリ700に格納される空家テーブル701と、そのエントリーデータとを示す。空家テーブル701のエントリーデータは、家制御ビット703と次の空家のインデックス704から構成される。空家テーブル701のエントリー数は最大で固定長データテーブルが持つ家の数である。空家テーブル701は空家を管理するだけの役割であるため、この他にもいろいろな実施例が考えられる。
[空家テーブルメモリ]
図15に、空家テーブル701の実施例の一つと、その使用法をあわせて示す。空家の管理においては登録された空家は順次使用されるため、空家テーブル701と空家開始レジスター702により行われる。空家開始レジスター702は空家ありビットと最初の空家のインデックスを保持する。図15に、6個の空家、A、B、C、D、E、Fの管理を示す。空家テーブル701は一方向のリンク構造を持ち、空家テーブル701のエントリーAは終了ビットがオフの家制御ビット703と次の空家のインデックス704にBの値とを持つ。同様に、エントリー、B、C、D、Eは終了ビットがオフの家制御ビット703と次の空家のインデックス704、C、D、E、Fをそれぞれ持つ。エントリーFは終了ビットがオンの家制御ビット703だけを保持する。そして、空家開始レジスター702は最初の空家のインデックスAを持つ。空家への要求がある場合、空家開始レジスター702が保持する空家ありビットがオンであることを確認できれば、家のインデックスAは使用可能である。空家ありビットがオフであれば空家はないと確認できる。そして、空家のインデックスAで空家テーブル701を読み出し、家制御ビットの終了ビットがオフのとき、読み出されたインデックスAにある次の空家のインデックス704、Bを空家開始レジスター702に保持する。この動作は、空家開始レジスター702が空家インデックスFを格納するまで行われる。その後、空家を求める要求に対し、空家開始レジスター702の保持する空家ありビットがオンであるため、空家のインデックス704、Fは空家として使用される。その後、空家のインデックス704、Fを読み出し、家制御ビットの終了ビットがオンであることに対応させて、空家開始レジスター702の空家ありビットをオフに変更する。その後は空家の要求に対し空家無しの状態が続く。空家を登録する場合、登録する空家のインデックスを空家開始レジスター702の持つインデックスに書き込み、同時に書き込まれたインデックスの終了ビットをオフにする。このとき、空家開始レジスター702の空家ありビットがオフである場合、空家ありビットをオンに変更する。以上の方法によって、空家の入手および登録が可能となる。
[空室テーブルメモリ]
図16に、空室テーブルメモリ720に格納される空室テーブル721とそのエントリーデータを示す。登録された空室を持つ家は必要なときに使用されるため、空室テーブル721のエンドリーデータは、室制御データ723と、前の空家のインデックス725と、次の空家のインデックス726とから構成される。空室テーブル721のエントリー数は最大で固定長データテーブルが持つ家の数である。空家テーブル701は空室を持つ家を管理するだけの役割であるため、いろいろな実施例が考えられる。
図16に、空室テーブル721の実施例の一つであり、使用法をあわせて示す。空室のある家の管理は空室テーブル721とx空室開始レジスター722により行われる。xは空室数を表す整数であり、図16に、1室空いている家を管理する1空室開始レジスターと、同様に2室、3室、そして4室空いている家を管理する2空室開始レジスター、3空室開始レジスター、そして4空室開始レジスターを示す。各x空室開始レジスター722は前記空家開始レジスター702と同じ役割を行う。図16において示される、2空室開始レジスターを伴う空室管理動作を説明する。
2空室開始レジスター722は、空室ありビットと最初の2空室のある家のインデックスとを保持する。図16に、5個の2空室を持つ家、A、B、C、D、Eの管理を示す。空室テーブル721は双方向のリンク構造を持ち、空室テーブル721のエントリーAは終了ビットがオフの室制御ビット723と、次の家のインデックス726、B、を持つ。この場合、2空室を有している前の家のインデックス725は最初のエントリーであるため必要が無い。同様に、エントリー、B、C、Dは終了ビットがオフの室制御ビット723と、前の家のインデックス725、A、B、Cと、次の家のインデックス726、C、D、そしてE、をそれぞれ持つ。エントリーEは終了ビットがオンにされている室制御ビット723と前の家のインデックス725、Dだけを保持する。そして、2空室開始レジスター722は最初の2空室を持つ家のインデックスAを持つ。2空室を持つ家の要求がある場合、2空室開始レジスター722が保持する空室ありビットのオンが確認できれば、2空室開始レジスター722の家のインデックスAは使用可能である。空室ありビットがオフであれば空室を有する家はないと確認できる。そして、家のインデックスAで空室テーブル721を読み出し、室制御ビットの終了ビットがオフのとき、読み出されたインデックスAの次の家のインデックス724、B、を2空室開始レジスター722に保持する。この動作が、2空室開始レジスター722が家インデックスEを格納するまで行われる。その後、2空室の要求に対し、2空室開始レジスター722の保持する空室あリビットがオンであるため、次の家のインデックス726、E、は2空室を持つ家として使用される。その後、次の家のインデックス726、E、を読み出し、室制御ビットの終了ビットがオンであるため、2空室開始レジスター722の空室ありビットをオフに変更する。その後は2空室を持つ家の要求に対し2空室を持つ家は無い状態が続く。
2空室をもつ家を登録する場合、登録する2空室を持つ家のインデックスを2空室開始レジスター722の持つインデックスにおける前の家のインデックス725に書き込み、同時に書き込まれたインデックスの終了ビットをオフにする。又、登録する2空室を持つ家のインデックスにおける前の家のインデックス725に2空室開始レジスター722の持つインデックスを書き込む、そして、2空室開始レジスター722に登録する2空室を持つ家のインデックスを書き込む。このとき、2空室開始レジスター722の2空室ありビットがオフである場合、2空室ありビットをオンに変更する。
2空室をもつ家の1室に書き込み要求が発生した場合、空室テーブル721のその家を2空室開始レジスター722が作成するリンクから登録を削除する必要がある。この場合、例えば、その家を示すインデックスがCであるとすると、インデックスCを読み出し、前の家のインデックス725、Bと次の家のインデックス726、Dを得る。インデックスBにおける次の家のインデックス726にインデックスDを書き込み、さらに、インデックスDにおける前の家のインデックス725にインデックスBを書き込む。この結果、インデックスCは2空室開始レジスター722が作成するリンクから削除され、リンクはインデックスA、B、D、そしてEとなる。以上の方法によって、2空室を持つ家の入手、登録および登録削除が可能となる。
図17に室の管理法を示す。説明を簡単にするために、2つのメモリアレイに、家が構成され、家は8個の室を持つと仮定するが、本発明がこれに限られるものではない。検索動作で論理比較される固定長データの集まり、すなわち室の集まりを以後団体と呼ぶ。室の管理法の基本は全ての家を満室状態にすることである。満室状態とは図17に示すように、一つの団体または複数の団体により家に存在する全ての室が使用されることである。満室にするために、団体の数を増やすことは、管理の複雑性、および必要なメモリおよびレジスターの増大等につながり、その効果は少ない場合があるために、一つの家に存在する可能な団体の数を例えば2とする。家に2つの団体が存在するとき、他の団体より多くの室を所有する団体を大団体、その他を小団体と呼ぶ。家に団体を保存するときは大団体を基本に考える。すなわち、大団体を保存した家は空室の数で管理される。管理は前記空室テーブルとx空室開始レジスターにより行われる。xは1〜4の整数である。大団体と同居する以上に小団体が多く存在した場合、図17の最下段に示されるように、家を2分割し、分割した家に2つの小団体を格納する。この場合、1室、2室そして3室を所有する団体が入居する。これらの団体を管理するためには、x’空室開始レジスターが管理に使用される。この理由は、x’空室開始レジスターにより管理される家の数については、固定長データテーブルの有効利用を考えて最小にする努力が必要であるためである。このため、x空室が必要となった場合には、最初にx’空室開始レジスターに登録されている家を利用する。それらの家が無くなったら、x空室開始レジスターに登録されている家を利用する。
図18に、室管理テーブルメモリ740に格納されている室管理テーブル741とそのエントリーデータを示す。室管理テーブル741のエントリー数は固定長データテーブルの家の数と同じであり、各家に室管理テーブル741の各エントリーが対応する。室管理テーブル741のエントリーの一般形式は、図18に示されているように、室管理データ742とn個の団体データ745から構築される。説明はnが2の場合について行う。室管理データ742は家の形式744と家が持つデータの形式743を持つ。データの形式743は1ビットで、家が格納しているデータ、NVCか論理比較データかを選択する。家は(1)一つの団体または、(2)大団体と小団体または、(3)二つの団体、により構成されるので、家の形式744は2ビットで表現されており、上記3つの形式のうち一つを選択的に有する。一つの団体が家に格納されたとき、団体1データがその団体を示し、団体2データは無視される。大団体と小団体が選択されたとき、団体1データは大団体を記述し、団体2データは小団体を記述する。二つの団体が選択されたとき、団体1データと団体2データはそれぞれの団体を記述する。団体データ745は団体が格納されている家を呼び出す上位テーブルのインデックスまたはアドレスを表すテーブルタイプ746と上位アドレス748および団体の占める室数747を持つ。テーブルタイプ746がポインタテーブルのとき、上位アドレス748はポインタテーブルのインデックスを表わし、テーブルタイプ746が固定長データテーブルのとき、上位アドレス748は固定長データテーブルのインデックスを表わす。テーブルタイプ746が空室テーブルのとき、上位アドレス748は空室テーブルのインデックス、すなわち家のインデックスを表す。大団体が一つの室を必要になった場合には、小団体を他の家に移動し、空き室となった室を大団体に使用させることが必要となる。この場合、小団体の各パラメータを入手・修正するために室管理テーブルのデータが利用される。
図19に、前記固定長データテーブルの家と、ポインタテーブルのインデックスと、室管理テーブル741のエントリーデータと、空室テーブル721との関連を示す。家が満室の場合、固定長データテーブルのインデックスSは大団体を指定するポインタテーブルのインデックスAのエントリーに含まれ、又小団体を指定するポインタテーブルのインデックスBのエントリーにも含まれる。この関係は室管理テーブル741のインデックスSのエントリーデータに記述される。空室がある場合、空き室のある家Rは大団体を指定するポインタテーブルのインデックスAのエントリーに含まれ、その空室はその数で表されるx空室テーブルにより管理される。この場合、室管理テーブル741のインデックスRのエントリーデータは大団体を記述するポインタテーブルのインデックスAと空室を記述するx空室テーブルのインデックスRを持つ。図19でx空室テーブルは空室テーブルでx空室開始レジスターによりリンクされたテーブルを意味する。
図20に、空家テーブル701と空室テーブル721と室管理テーブル741を一つのテーブルにまとめた家管理テーブル751の例を示す。家管理テーブル751のエントリーデータは、家・室制御データと、次の空家のインデックスまたは前の空室のある家のインデックスと、次の空室のある家のインデックスと、n個の団体データとから構成される。家・室制御データは、終了ビットと、データ形式と、家の形式とを有する。家・室制御データと次の空家のインデックスまたは前の空室のある家のインデックスで空家テーブルの機能が実現でき、家・室制御データと、次の空家のインデックスまたは前の空室のある家のインデックスと、次の空室のある家のインデックスで空室テーブルが実現され、家・室制御データとn個の団体データにより室管理テーブルの機能が実現できる。このとき、空家開始レジスターとn空室開始レジスターは3つの機能を実装するために必要である。
[構造管理テーブルメモリ]
図21に、構造管理テーブルメモリ760に格納されている構造管理テーブル761とそのエントリーデータとを示す。構造管理テーブル761のエントリー数はポインタテーブルのエントリー数と同じである。エントリーデータは、構造制御ビットと、ポインタテーブルのエントリーが持つ固定データ長データ数と、リンクアドレスとにより構成される。本発明においては、検索方法として、検索対象の固定長データの集団を一時に比較可能な数に分解し、比較することはすでに述べた。しかし、固定長データの集団の分布においては、一時に比較可能な数の分布にはなっていないのが一般的である。このため、本発明は二次ポインタテーブル、ローカルテーブル、NVC比較法のテーブル等の手法を導入し、固定長データの集団の分散化を図る。本発明の実際の実装においてはこれらの方法を組み合わせる。図21の詳細説明を行う前に、テーブルの構造から見た検索手順を図22で説明し、その構造の変移を図21を用いて説明する。その後、構造変移に必要なデータに関して図21の構造管理テーブルを参考に説明する。
図22に検索手順の例を示す。その他の検索手順も作成可能ではあるが、説明のため、手順1から手順5を検索手段の説明に使う。手順1はポインタテーブルを読み出し、固定値データテーブルのインデックスを得て、固定値データテーブルを読み出し、比較を行う。この手順はポインタテーブルのエントリーの持つ比較データ数が一つの家に格納できる固定長データの数以下の場合に実現する。説明では家が持つ室数(固定長データの数)を8と仮定しているため、ポインタテーブルのエントリーの持つ固定長データの数が8以下の場合である。本発明の固定長データ検索装置10は、大多数の固定長データを手順1により検索することができる。手順2は手順1に固定長データテーブルの読み出しと比較動作を加えたものである。この手順はポインタテーブルのエントリーの持つ比較データ数が16以下の場合に使われる。手順1と手順2の間に構造の変化は存在しない。
手順3は、手順1の次に、第2ポインタテーブル(SPT)の読み出しを行い、入手した固定長データテーブルのインデックスで固定長データテーブルの読み出し、および比較動作を行う。最初の固定長データテーブルの読み出し・比較動作の後にSPTと固定長データテーブルの読み出しを行う理由は、検索をLPMルールで行う場合、SPTのインデックスを発生するために使われる全インデックス190の一部のビットのビット位置と固定長データの要素であるマスクの関係で、SPT前に比較が必要な固定長データが存在するためである。手順3が扱う固定長データの数は最低17個で、最高(8*n+8)個である。nはSPTのサイズである。SPTが3ビットでインデックスされると考えると最高72個の固定長データが手順3で処理できる。
手順4は、手順3における最後の固定長データテーブルの読み出し・比較動作が、ローカルテーブルの読み出し・比較動作に置き換わられたものである。手順4は手順3におけるSPTの一つのエントリーがローカルテーブルを要求した場合である。他のSPTのエントリーが手順3で動作しても、一つのローカルテーブルが存在すれば手順4である。このため、手順4が扱う固定長データの数は最低17個で、最高(8*n*m+8)個である。mはローカルテーブルのサイズである。ローカルテーブルが3ビットでインデックスされると考えると最高520個の固定長データが手順4で処理できる。
手順5は手順4までの手段と大きく異なり、NVC構造のテーブルを作成し、大小比較で検索を行う。このため、手順5が扱う固定長データの数は最高(8*p*p)個である。ここで、pは一つの家が格納できるNVCタイプのデータ数である。図22における手順5で二つの構造を示しているが、実際のケースとしては二つの構造の組み合わせである。一般的にNVCタイプのデータ数を固定長データの数の2倍と考えると最高2048個の固定長データが手順5により処理できる。一般的に、家が格納する室の数は、ポインタテーブルが固定長データの集団を理想的に分散した場合の数、すなわちポインタテーブルのエントリーが持つ平均固定長データ数の2倍の数に設定する。ポインタテーブルのエントリーが持つ平均固定長データ数が4であることを考えると、手順3と手順4の扱う固定長データ数は非常に大きいと考えられ、手順3と手順4が必要な場合はまれなときと推測される。手順5は手順3と手順4以上の場合であり、必要か否かの議論が存在する。しかし、手順5を用いることにより、実装される固定長データの分布が非常に大きく偏っていた場合でも、検索動作が可能となることがわかる。
図21に、各手順に必要なテーブルの構造の変移を示す。変移Aは条件774が成立したとき、変移Bは条件775が成立したとき、変移Cは条件775が成立したとき、変移Dは条件779が成立したとき、変移Eは条件778が成立したとき、変移Fは条件777が成立したときに実行される。図21では、手順1と手順2のテーブルの構造は同一とみなす。図21において長方形770内の手順1/手順2は手順1または2により検索されるテーブル構造を意味する。他の長方形も同様である。
ポインタテーブルのエントリーの持つ固定長データ数(簡単のため、PTの固定長データ数と呼ぶ)が16以内の場合、そのエントリーは手順1または手順2で検索が行われる。PTの固定長データ数が16個であるエントリーに、固定長データの付加命令が実行されたとき、すなわち、ポインタテーブルのエントリーが持つ固定長データ数が16を超えるとき(条件774)、変移Aが実行されて、手順3で検索するテーブル構造に変移する。
手順3で検索されるエントリーのテーブル構造は最初ポインタテーブル、次に固定長データテーブル、次にSPT、最後に固定長データテーブルである。最後の固定長データテーブルの家が満室で固定長データの付加命令が実行されたとき、すなわち、SPTのエントリーが持つ固定長データ数が8を超えるとき(条件775)、手順4で検索するテーブル構造に変移する。
手順4で検索されるエントリーのテーブル構造は最初ポインタテーブル、次に固定長データテーブル、次にSPT、最後にローカルテーブルである。最後のローカルテーブルのエントリーにおける家が満室で固定長データの付加命令が実行されたとき、すなわち、LTのエントリーが持つ固定長データ数が8を超えるとき(条件776)、手順5で検索するテーブル構造に変移する。手順5は手順1から手順4までのテーブル構造とは全く異なるテーブル構造を持つ。このため、構造を管理する方法は手順1から手順4までのテーブル構造を管理した手法と同じ物を使う。しかし、手順5で検索されるエントリーのテーブル構造は最初ポインタテーブル、次にNVC構造の固定長データテーブル、次にNVC構造の固定長データテーブル、最後に固定長データテーブルである。
手順5で検索されるエントリーにいくつかの固定長データの削除命令が実行されたとき、その結果ローカルテーブルの全てのエントリーが8以下の固定長データを持てば、すなわち、LTのエントリーが持つ固定長データ数が8以下になるとき(条件779)、手順5で検索されるテーブル構造は手順4で検索されるテーブル構造に変移する。同様に、手順4で検索されるエントリーにいくつかの固定長データの削除命令が実行されたとき、その結果SPTの全てのエントリーが8以下の固定長データを持てば、すなわち、SPTのエントリーが持つ固定長データ数が8以下になるとき(条件778)、手順4で検索されるテーブル構造は手順3で検索されるテーブル構造に変移する。最後に、手順3で検索されるエントリーにいくつかの固定長データの削除命令が実行されたとき、その結果PTの全てのエントリーが16以下の固定長データを持てば、すなわち、ポインタテーブルのエントリーが持つ固定長データ数が16以下になるとき(条件777)、手順3で検索されるテーブル構造は手順1/手順2で検索されるテーブル構造に変移する。上記条件、777、778、779でそれぞれ16以下、8以下、8以下の尺度が規定されているが、実際の値は指定可能とする。
図21に示されている構造管理テーブルは、各手順で検索されるテーブル構造の変移(図21)を行うデータを管理する。構造管理テーブル761はポインタテーブルと同じエントリー数を持ち、各エントリーはポインタテーブルのエントリーに対応する。構造管理テーブル761のエントリーは構造制御データ762と、ポインタテーブルのエントリーが持つ固定長データ数763と、リンクアドレス764とから構成される。構造制御データ762は手順番号765と、SPTのサイズ766と、ローカルテーブルのサイズ767とで構成される。手順番号765が手順1または手順2である場合、SPTのサイズ766と、ローカルテーブルのサイズ767と、リンクアドレスは無視される。ポインタテーブルの大部分のエントリーはこれらの手順に入る。
手順番号765が手順3である場合、SPTのサイズ766とリンクアドレスは使われ、ローカルテーブルのサイズ767は無視される。この場合、リンクアドレス764はSPTの各エントリーが持つ固定長データ数のテーブル768の位置を示す。SPTのサイズ766はSPTのエントリー数nである。
手順番号765が手順4または手順5である場合、SPTのサイズ766と、ローカルテーブルのサイズ767と、リンクアドレスは使われる。この場合、リンクアドレス764はSPTとローカルテーブルの各エントリーが持つ固定長データ数のテーブル769の位置を示す。SPTのサイズ766はSPTのエントリー数nであり、ローカルテーブルのサイズ767はローカルテーブルのエントリー数nである。このように、構造管理テーブル761を活用することにより、検索手順に対応するテーブル構造の変移を行うことができる。ここで注意すべきことは、手順5はNVC構造のテーブルを使って検索を行うが、構造管理テーブルによる、テーブル構造管理はSPTとローカルテーブルの形式で管理することである。この方法により、構造管理に一貫性が生まれ、構造管理が効率的に、簡単に行うことが出来る。
[テーブル管理手段]
テーブル管理手段600のある実施例を図23に示す。テーブル管理手段600はCPU601と、入出力バス、CPUバス、メモリバス、メモリ信号を供える制御回路602と、CPU601のプログラムとデータを格納するメモリ603とで構成される。図23において説明するテーブル管理の方法は複雑なため、図23で示されるCPU601によって実行される。入力バスは命令の入力に使われ、メモリバスは制御回路602と各テーブルメモリ間、または制御回路602と入力固定長データ処理手段100の間で、または制御回路602と出力手段800の間でのデータ転送に使われる。本実施例はテーブルの管理を行うプログラムが命令の同時実行を行い、複雑な構成となる場合がある。
テーブル管理手段600の他の実施例を図23に示す。本実施例は実施例1でCPU601が実現する機能を細分化し、細分化された機能を図23に示されたコントローラまたはシークエンサーにより実現するものである。図23においてテーブル管理制御手段600はホスト制御装置からの命令を受けて、その解析、実行を行う入力命令・実行機能670と、入力命令・実行機能670の付加命令実行時に、テーブルの構造の変移を必要としない付加を補助する単純付加機能630と、テーブルの構造の変移を必要とする付加を補助する構造変更付加機能640と、入力命令・実行機能670の削除命令実行時に、テーブルの構造の変移を必要としない削除を補助する単純削除機能650と、テーブルの構造の変移を必要とする削除を補助する構造変更付加機能660と、自動削除命令を発生させ、入力命令実行機能670に送る自動削除命令機能620と、入力命令実行機能670が一時的にデータを格納する一時記憶機能610とから構成される。
図23に示される一時記憶機能610を除く各機能は図23に示されるコントローラまたはシークエンサーにより実現される。図23において、コントローラまたはシークエンサーは初期化信号により初期化される、又インストラクション実行回路607の実行結果により変更されるインストラクションカウンター604と、インストラクションカウンター604でインデックスされ読み出されるインストラクションを格納するインストラクションメモリ605と、読み出されたインストラクションをデコードするインストラクションデコード606と、デコードされた信号により制御され指定された機能を実行する実行回路607と、実行回路607に必要なデータを一時的に格納するレジスター608と、実行回路607とレジスター608とその他の回路間のデータ転送を行う内部バス609とにより構成される。コントローラまたはシークエンサーは実行する機能が細分化されているため、そしてその機能にあった実行回路を実装することにより、インストラクションメモリ605のサイズは最小にでき、またコントローラまたはシークエンサーは単純化が可能である。以下、コントローラまたはシークエンサーを使用した各機能を説明する。
図24に入力命令・実行機能670(図23)が受付けるホスト制御装置からの4つの命令を示す。図24に示されているように、付加命令は固定長データと、マスクと、固定長データ名と、ユーザーデータと、状態ビットを伴って入力される。この場合、検索ルールにより、マスクが送られない場合がある。送られた固定長データ、マスク、および固定長データ名が固定長データテーブルに、ユーザーデータと初期化された統計データがユーザーデータテーブルに格納される。状態ビットは要素制御データの作成に使用される。状態ビットがこの要素を常駐させることを示す場合、要素制御データは常駐状態にセットされる、それ以外は使用状態にセットされる。削除命令は固定長データを伴い入力される。送られた固定長データとそれに関連するデータが固定長データテーブルおよびユーザーデータテーブルから削除される。統計データ引出命令は固定長データを伴い入力される。入力された固定長データに関する統計データがホスト制御装置に送られる。最後に自動削除名引出命令は引出自動削除名数を伴って入力される。自動削除機能により削除された引出自動削除名数の固定長データの固定長データ名がホスト制御装置に送られる。自動削除機能により削除された固定長データが引出自動削除名数以下である場合、削除された固定長データ数の削除固定長データ名が送られる。
図24に、入力命令・実行機能670の実施例を示す。入力命令・実行機能670は二つのコントローラまたはシークエンサーを持ち、一つはホスト制御装置からの入力命令を処理し、他は自動削除命令機能620からの入力命令を処理する。二つのコントローラまたはシークエンサーを備える理由は、ホスト制御装置からの入力命令と自動削除命令機能620からの入力命令とを独立に処理できるからである。このために、相互の処理が影響しあわない仕組みが必要になる。この点について、自動削除命令の実行で説明する。ホスト制御装置からの入力命令を入力命令・実行機能670が受け取り、命令のデコード後、担当コントローラまたはシークエンサーを動作させ、入力命令に対応した実行、付加命令の実行671、または削除命令の実行672、または統計データ引出命令の実行673、または自動削除名引出命令の実行674を行う。そして、実行結果をホスト制御装置に送付して、入力命令に対応した実行は終了するため、いずれかの実行を担当しているコントローラまたはシークエンサーが動作中には、ホスト制御装置からの別の入力命令が送られてくることは無い。ホスト制御装置からの入力命令待ち、または入力命令を実行中、自動削除命令機能620からの入力命令を入力命令・実行機能670が受け取り、実行可能である。担当コントローラまたはシークエンサーが自動削除命令を実行中においては、他の自動削除命令が入力命令・実行機能670に入力されることは無い。理由は自動削除命令機能620が動作可能な状態をチェックしているからである。
図24に自動削除命令機能620の実施例を示す。図24から明らかであるが、自動削除命令機能620は単なるタイマー回路である。自動削除命令機能620は自動削徐命令発行時間レジスター621を持ち、自動削徐命令発行時間レジスター621のエネーブルビットが1のとき、自動削徐命令発行時間レジスター621の定める時間間隔で自動削除命令を発行する。図24の動作可能判断は自動削除命令機能620が発行した自動削除命令がすでに終了していることと、自動削徐命令発行時間レジスター621のエネーブルビットが1であることを確認して行われる。このように自動削除命令機能620はコントローラまたはシークエンサーにより実現される必要は無い。
図25に、ホスト制御装置からの付加命令を実行するコントローラまたはシークエンサーの動作例を示す。入力命令・実行機能670が付加命令を受付けて、まず、構造管理テーブル761を読み出し、手順番号を確認し、その手順の最後に読み出すテーブルの固定長データの数を構造管理テーブル761から得る(S6710)。そして、その数が図21で示される構造変移に必要な条件であるか否かを確認する(S6711)。構造変移の条件であれば入力命令・実行機能670は構造変更付加機能640を起動し、その終了まで停止する(S6712)。構造変移の条件でなければ入力命令・実行機能670は単純付加機能630を起動し、その終了まで停止する。(S6713)構造変更付加機能640、または単純付加機能630の実行終了の結果、入力命令・実行機能670は実行結果を得て再スタートする。得られた実行結果を解析し(S6714)、実行結果が問題なく実行されたことを報告していれば、実行済み結果データを作成し、管理出力機能に送る。(S6715)。この場合、さらに、最後に構造管理テーブルの対応する要素数に1加える(S6716)。得られた実行結果が実行できなかった場合、不実行結果データを作成し(S6717)、管理出力機能に送る。そして、入力命令・実行機能670はホスト制御装置からの次の命令を待つ。得られた実行結果が実行できないケースは(1)固定長データテーブルに固定長データを付加するロケーションが無い(2)固定長データテーブルに付加する固定長データがすでに存在する、等が考えられる。(2)のケースでは付加する固定長データに伴うマスク、固定長データ名、およびユーザーデータは現存するデータと置き換えることができる選択能力をレジスターにより実現できる。
図25に、ホスト制御装置からの削除命令を実行するコントローラまたはシークエンサーの動作例を示す。入力命令・実行機能670が削除命令を受付けると、まず、構造管理テーブル761を読み出し、手順番号を確認し、その手順の最後に読み出すテーブルの固定長データの数を構造管理テーブル761から得る(S6720)。その数が図21で示される構造変移に必要な条件であるか否かを確認する(S6721)。構造変移の条件であれば入力命令・実行機能670は構造変更削除機能660を起動し、その終了まで停止する(S6722)。構造変移の条件でなければ入力命令・実行機能670は単純削除機能650を起動し、その終了まで停止する(S6723)。構造変更削除機能660、または単純削除機能650の実行終了の結果、入力命令・実行機能670は実行結果を得て再スタートする。得られた実行結果を解析し、実行結果が問題なく実行されたことを報告していれば(S6724)、実行済み結果データを作成し、管理出力機能に送る(S6725)。最後に構造管理テーブルの対応する要素数から1を減ずる(S6726)。得られた実行結果が実行できなかった場合、不実行結果データを作成し、管理出力機能に送る(S6727)。そして、入力命令・実行機能670はホスト制御装置からの次の命令を待つ。得られた実行結果が実行できないケースは(1)固定長データテーブルに構造変更を行うロケーションが無い(2)固定長データテーブルに削除する固定長データが無い、等が考えられる。(1)の場合、構造変更を行わず、命令内の固定長データ削除し、構造管理テーブルの対応する要素数から1を減らした後で、報告する手法も存在する。
図26に、ホスト制御装置からの統計データ引出命令を実行するコントローラまたはシークエンサーの動作例を示す。入力命令・実行機能670が統計データ引出命令を受付けて、まず、統計データ引出命令内の固定長データを検索する(S6730)。入力命令・実行機能670は統計データ引出命令内の固定長データを入力固定値データ処理手段100の管理データ699から入力する。入力検索番号はテーブル管理制御手段600に割り当てられた検索番号である、又入力統計データはゼロが入力される。テーブル管理制御手段600に割り当てられた検索番号を伴う検索動作は出力制御機能840により、レジスターS812にデータが格納された時点で終了する。その時、検索結果はテーブル管理制御手段600に割り当てられた検索番号のレジスターS812に格納され、管理検索結果出力821を通して、入力命令・実行機能670に読み込まれる。統計データ引出命令内の固定長データに関する統計データは、修正手段300のレジスターOに格納され、統計データ337を通して、入力命令・実行機能670に読み込まれる。(S6732)読み込まれた統計データは出力手段800内の管理出力機能に出力する。(S6733)読み込まれた検索結果により実行結果が作成される。検索結果が一致の場合、固定長データ名を伴い統計データと実行結果が出力手段800の管理出力機能に出力される。(S6734)検索結果が一致しなかった場合、不一致の実行結果だけが出力手段800に管理出力機能に出力される(S6735)。
図26に、ホスト制御装置からの自動削除名引出命令を実行するコントローラまたはシークエンサーの動作例を示す。入力命令・実行機能670が自動削除名引出命令を受付けて、まず、図26に示すように引き出し自動削除数レジスターを初期化する。自動削除命令の実行の結果、削除された固定長データの固定長データ名がテーブル管理手段600の一時記憶機能610に格納される。自動削除名引出命令は格納されている固定長データ名を指定された数だけ読み出し、管理出力機能に出力することである。このため、図26に示すように、一時記憶機能610に格納されている自動削除された固定長データ名があるか確認する(S6741)。あれば、一時記憶機能610に格納されている固定長データ名を一つ入手し(S6742)管理出力機能に出力する。(S6743)そして引き出し自動削除数レジスターを1増加させる(S6744)。増加後、引き出し自動削除数レジスターが自動削除名引出命令内の引き出し数と同じか確認する(S6745)。引き出し自動削除数レジスターが引き出し数より少ない場合、再び、一時記憶機能610に格納されている自動削除された固定長データ名があるか確認する。この動作を引き出し自動削除数レジスターと引き出し数が同じになるまで続ける。引き出し自動削除数レジスターが引き出し数に達したとき、引き出し数を伴い、実行結果データが管理出力機能に出力される(S6746)。引き出し自動削除数レジスターが引き出し数に達する前に、一時記憶機能610に格納されている自動削除された固定長データ名がなくなった場合、引き出し自動削除数レジスターの引き出し数を伴い、実行結果データが管理出力機能に出力される(S6746)。
図27に、自動削除命令機能からの自動削除命令を実行するコントローラまたはシークエンサーの動作例を示す。入力命令・実行機能670が自動削除命令を受付けて、まず、図27に示すように固定長データアドレスレジスターを初期化する(S6750)。自動削除命令は、図8に示される固定長データテーブルの要素制御データを参照して行われる。
図27に、要素制御データの詳細を示す。要素制御データは要素状態と位置変更から構成される。要素状態は4つの状態の一つを保持する。4つの状態は(1)空室状態、(2)常駐状態、(3)削除状態、そして(4)使用状態、である。固定長データが初期化された時、要素状態は空室状態にセットされる。空室状態にある固定長データテーブルの要素に常駐の状態ビットを持つ固定長データが付加された時、その要素の要素制御データは常駐状態に変移する。この状態にある固定長データは自動削除命令による削除対象には含まれない。すなわち、この状態にある固定長データはホスト制御装置からの削除命令を実行する以外、削除はされない。空室状態にある固定長データテーブルの要素に常駐で無い状態ビットを持つ固定長データが付加された時、その要素の要素制御データは削除状態に変移する。そして、位置変更がセットされる。削除状態にある固定長データは自動削除命令による削除対象に含まれる。すなわち、この状態にある固定長データはホスト制御装置からの削除命令と自動削除命令の実行で削除される。(位置変更がセットされた削除状態は自動削除命令の対象から除かれる。位置変更は後述する。)削除状態にある固定長データテーブルの要素が検索動作で検索目的の固定長データと一致すると、削除状態にある固定長データテーブルの要素状態は使用状態に変移する。自動削除命令の目的はある時間間隔で使われない固定長データを削除することである。自動削除命令は周期的に発行される。その時間の間に、使われない、すなわち削除状態にある固定長データは削除される。使用状態にある固定長データテーブルの要素状態は自動削除命令の実行により削除状態に変移する。そして次の自動削除命令により、使われたか否かを調べられ、使われていなければ削除される。
図27において位置変更はホスト制御装置からの付加命令または削除命令、または自動削除命令機能からの自動削除命令を実行したとき、固定長データテーブル内を移動する固定長データの位置変更をセットし、実行中の自動削除命令の対象から除く。そして、自動削除命令が実行されたとき、位置変更がセットされている固定長データは削除されず、次の自動削除命令の実行対象とするため、位置変更をリセットされる。
図27において、固定長データアドレスレジスターをインデックスとして固定長データテーブルの家を読み出す(S6751)。読み出された家の中において固定長データの要素制御データをチェックする(S6752)。その要素状態が空室状態または常駐状態の場合、次の固定長データをチェックする。要素状態が削除状態にあり、位置変更がセットされていない場合(アクセスが無い場合)、その固定長データは削除される(S6753)。削除は削除命令と同じ動作を行い、固定長データを削除する。そして削除した固定長データの固定長データ名をテーブル管理制御手段600の一時記憶機能に保存する(S6754)。要素状態が削除状態にあり、位置変更がセットされている場合(アクセスがある場合)、その固定長データは削除されず、そして位置変更をリセットする。この作業を読み込まれた家の全固定長データに対して行う。読み込まれた家の全ての固定長データがチェックされると(S6755)、固定長データアドレスレジスターを1増加する(S6756)。そして固定長データアドレスレジスターをインデックスとして固定長データテーブルの家を読み出す作業を行う。このような作業を、固定長データテーブルの全ての家に対して行うと(S6757)自動削除命令の実行を終了する。
図28に、入力命令・実行機能670の要請で構造変更の必要の無い付加機能(単純付加機能630)を実行するコントローラまたはシークエンサーの動作例の一部を示す。単純付加機能630の全てのケースを図28に記述することは複雑となるため、詳細な機能は説明により行う。入力命令・実行機能670から単純付加命令の実行を受付けると、まず、付加命令内の固定長データを検索する(S6300)。単純付加機能630は入力固定値データ処理手段100の管理データ699から付加命令内の固定長データを入力する。入力検索番号はテーブル管理制御手段600に割り当てられた検索番号であり、又入力統計データにはゼロが入力される。テーブル管理制御手段600に割り当てられた検索番号を伴う検索動作は出力制御機能840により、レジスターS812にデータが格納された時点で終了する。又、図7のポインタ処理手段200において、テーブル管理制御手段600に割り当てられた検索番号のインデックスを発生させるとき、そのインデックスはレジスターP217に保存される。検索過程の中でレジスターP217はポインタ処理手段200がテーブルインデックス252を発生するたびに改定される。このため、検索終了時、レジスターP217は固定長データテーブルを読み込んだ最後のインデックスが保持されている。それに加え、付加命令内の固定長データに関する検索結果、固定長データ名、およびユーザーデータは、テーブル管理制御手段600に割り当てられた検索番号のレジスターS812に格納され、単純付加機能630に読み込まれる。今後の説明には省略するが、付加される固定長データは大小順に並べられるものとする、そして付加される固定長データ以外の固定長データ名とマスクと状態ビットから作成される要素制御データは固定長データテーブルに、ユーザーデータと初期化された統計データはデータテーブルに、固定長データが格納される時点で同時に格納される。
図28には記述されていないが、一致しない検索結果が得られたとき、単純付加機能630の実行は続けられる。一致した結果が得られた時、二つの選択肢が考えられる。一つは単純付加機能630の実行を中止して、その結果をホスト制御装置に報告する。他は単純付加機能630の実行を続行し、付加すべき固定長データに関連した各種データを付加命令内のデータと置き換え、改正を行う。これらの選択肢はレジスターにより行われる。
ポインタ処理手段200のレジスターP217が保持するインデックスで、室管理テーブル741を参照し(S6301)、家が満室(8室が単一団体で占められている)か否かを確認する。満室でない場合、二つの団体により家が構成されている。このとき、家の占有の状況と固定長データが付加される団体とを用いて場合分けをすると、次のケースが考えられる。(1)家には大団体と小団体が同居しており、大団体に付加される、(2)家には大団体と小団体が同居しており、小団体に付加される、(3)家には大団体と小団体が同居できるが、大団体だけが存在し、そこに付加される、(4)家にはサイズの等しい二団体が同居しており、その一つの団体に付加される、(5)家にはサイズの等しい二団体が同居できるが、一つだけが存在し、その団体に付加される、(6)付加する団体が無い。図28に上記(1)と(2)のケースを示したが、以下、(1)〜(6)のケースについて説明を行う。
(1)家(P)には大団体と小団体が同居しており、大団体に付加される場合、小団体を移動し、付加する固定長データとその関連するデータを空いた室に格納する。作業の順番は最初に空室テーブル721から小団体の持つ室数の空き室を持つ家(Q)のインデックスを得る。家(Q)に小団体を移す(S6304)。そして家(Q)の室管理テーブル741に小団体に関連するパラメータを写し、室管理テーブル741が持つ上位アドレスを使い上位テーブルのエントリー制御データに家(Q)のインデックスを書き込む。次に大団体の家(P)に付加命令内の固定長データとその関連データを格納する。付加することによりその家が満室になった場合、その家の室管理テーブル741と構造管理テーブル761のパラメータを変更する。その家が満室で無い場合、それらの変更に加えて、家(P)を(小団体の室数−1)の空室テーブル721に登録する(S6305)。
(2)家(P)には大団体と小団体が同居しており、小団体に付加される場合、小団体の室数より一つ大きな空室をもつ家(Q)を空室テーブル721から入手し、小団体を家(Q)に移動し、そして付加する固定長データとその関連するデータを家(Q)に格納する(S6306)。そして家(Q)の室管理テーブル741に小団体に関連するパラメータを写し、室管理テーブル741が持つ上位アドレスを使い上位テーブルのエントリー制御データと構造管理テーブル761を変更する。次に大団体の家(P)を小団体の室数の空室テーブル721に登録し、家(P)の室管理テーブルの上位アドレスに空室テーブル721に登録したアドレスを書き込み、それらに対応するパラメータを変更する(S6307)。
(3)家には大団体と小団体が同居できるが、大団体だけが存在し、そこに付加される場合、大団体の家に付加命令内の固定長データとその関連データを格納する。空き室であった小団体の室数の空室テーブル721からこの家を削除する。付加することによりその家が満室になった場合、その家の室管理テーブル741と構造管理テーブル761のパラメータを変更する。その家が満室で無い場合、それらの変更に加えて、家を(空き室であった小団体の室数−1)の空室テーブル721に登録する。
(4)家(P)にはサイズの等しい二団体(AとBと呼ぶ)が同居しており、その一つの団体Aに付加される場合、団体の室数が1、2、または3のとき、団体Aの室数より一つ大きな空室をもつ家(Q)を空室テーブル721から入手し、団体Aを移動し、そして付加する固定長データとその関連するデータをその家に格納する。そして家(Q)の室管理テーブル741の団体Aに関連するパラメータを写し、室管理テーブル741が持つ上位アドレスを使い、上位テーブルのエントリー制御データに家(Q)のインデックスを書き込み、構造管理テーブル761を変更する。次に家(P)を団体Bの室数の空室テーブル721に登録し、そして団体Bの家(P)の室管理テーブル741の団体Aのパラメータを登録された空室テーブル721のアドレスに変更する。団体の室数が4のとき、空き家(R)を空家テーブル701から入手し、団体Aを移動し、そして付加する固定長データとその関連するデータをその家に格納する。そして新しい家(R)の室管理テーブル741に団体Aに関連するパラメータを写し、室管理テーブル741が持つ上位アドレスを使い、上位テーブルのエントリー制御データと構造管理テーブル761を変更する。次に家(P)を団体Bの室数の空室テーブル721に登録し、そして団体Bの家(P)の室管理テーブル741の団体Bのパラメータを登録された空室テーブル721のアドレスに変更する。
(5)家にはサイズの等しい二団体(AとBと呼ぶ)が同居できるが、一つ(団体A)だけが存在し、その団体に付加される場合、団体Aの家に付加命令内の固定長データとその関連データを格納する。空き室であった団体(B)の室数の空室テーブル721からこの家を削除する。家を(空き室であった団体Bの室数+1)の空室テーブル721に登録する。その家における室管理テーブル741の空き室の上位アドレスに登録した空室テーブル721のアドレスを書き込み、構造管理テーブル761のパラメータを変更する。
(6)付加する団体が無い場合、1空室テーブル721から、1室の空室を持つ家を入手する。付加する固定長データをその家に付加し、ポインタテーブルにその家を登録し、その家の室管理テーブル741の空き室にポインタテーブルのインデックスを登録する。最後に構造管理テーブル761のパラメータを変更する。
図28において、家が満室(8室が単一団体で占められている)の場合、二つのケースにより処理される。一つはNVC形式の場合と他はそれ以外である(S6308)。NVC形式の場合、再配列を行い(S6309)、付加命令内の固定長データとその関連データを格納する。そして、再配置の結果、付加しなければならない家に対して、上記(1)から(5)の中で、一つの付加動作を行う(S6310)。NVC形式ではない場合、一つの空室を持つ家(Q)を空室テーブル721から入手し、家(P)の8個の固定長データとの大小比較により、9個の固定長データを家(P)と家(Q)に格納する(S6311)。家(P)のエントリー制御データを家(Q)にリンクするように変更し(S6312)、家(Q)のエントリー制御データを修正し、家(Q)の室管理テーブル741に家(P)のインデックスを書き込み、最後に構造管理テーブル761を変更する。
図28に、入力命令・実行機能670の要請で構造変更の必要のある付加機能(構造変更付加機能640)を実行するコントローラまたはシークエンサーの動作例の一部を示す。単純付加機能630の説明と同様に、構造変更付加機能640の全てのケースを図28に記述することは複雑となるため、詳細な機能は説明により行う。入力命令・実行機能670から構造変更付加命令の実行を受付けると、まず、付加命令内の固定長データを検索する(S6400)。構造変更付加機能640は、入力固定値データ処理手段100の管理データ699から付加命令内の固定長データを入力する。入力検索番号は、テーブル管理制御手段600に割り当てられた検索番号であり、又入力統計データとしてはゼロが入力される。テーブル管理制御手段600に割り当てられた検索番号を伴う検索動作は、出力制御機能840により、レジスターS812にデータが格納された時点で終了する。又、図7のポインタ処理手段200において、テーブル管理制御手段600に割り当てられた検索番号のインデックスを発生させるとき、そのインデックスはレジスターP217に保存される。検索過程の中でレジスターP217はポインタ処理手段200がテーブルインデックス252を発生するたびに改定される。このため、検索終了時、レジスターP217には固定長データテーブルを読み込んだ最後のインデックスが保持されている。それに加え、付加命令内の固定長データに関する検索結果、固定長データ名、およびユーザーデータは、テーブル管理制御手段600に割り当てられた検索番号のレジスターS812に格納され、構造変更付加機能640に読み込まれる。
図28には記述されていないが、一致しない検索結果が得られたときに構造変更付加機能640の実行は続けられる。一致した結果が得られた時、二つの選択肢が考えられる。一つは構造変更付加機能640の実行を中止して、その結果をホスト制御装置に報告する。他は構造変更付加機能640の実行を続行し、付加すべき固定長データに関連した各種データを付加命令内のデータと置き換え、改正を行う。これらの選択肢はレジスターにより行われる。
ポインタ処理手段200のレジスターP217が保持するインデックスで、室管理テーブル741を参照し、家の形式が一つの団体で占められていることを確認する(S6401)。そして、上位アドレスを得る。次に構造管理テーブル761を参照し、手順番号と構造変更理由を確認する(S6402、S6403)。手順2の場合、SPTを構築する。手順3の場合、ローカルテーブルを構築する。手順4の場合、NVC形式のテーブル構造に変更する。
構造管理テーブル761の手順番号が2のとき、固定長データテーブルの二つの家(PとQ)に格納されている16個の固定長データと付加される固定長データをSPTの構築により再配置する(S6405)。その作業の最初は、17個の固定長データの区分けである。SPTのサイズを8と仮定して説明しているため、9つに区分け(区分0から区分8)する。区分けに使われるデータは、全インデックスからポインタテーブルのインデックスに使われているビットからの3ビットである。例えば、ポインタテーブルのインデックスが全インデックス、(例えば32ビット)の31ビットから16ビットであるならば、SPTのインデックスはビット15、ビット14、およびビット13である。それらを(ビット15、ビット14、ビット13)で表す。この場合、区分0は(000)、区分1は(001)、同様に区分7は(111)で表す。区分8は17個の固定長データのうち、そのマスクの長さが17ビット(32ビットー15ビット)か18ビット(32ビットー14ビット)を持つ固定長データを扱う。区分け後、区分8に属する固定長データの数の空き室を持つ家(R)を空室テーブル721から入手し、区分8に属する固定長データをその家(R)に移す(S6406)。このときの動作は単純付加機能630で説明したとおりである。その家(R)のインデックスをポインタテーブルのエントリーデータに書き込む。
8エントリーを持つテーブル、SPT、をポインタテーブルメモリ500に構築し、初期化する。SPTのインデックス(000)のメモリアドレス、すなわちベースアドレスとSPTのパラメータを家(R)のエントリー制御データに書き込む。
区分0に属する固定長データの数の空き室を持つ家(S)を空室テーブル721から入手し、区分0に属する固定長データをその家(S)に移す。このときの動作は単純付加機能630で説明したとおりである。その家(S)のインデックスと次工程101とメモリ制御データをSPTのエントリーデータに書き込む。固定長データの数の空き室が4以下であれば、それを格納するメモリアレイだけを活性化するデータをメモリ制御データに書き込む。最後にその家(S)のエントリー制御データの次工程000を書き込む。この作業を区分1から区分7まで行う。構造管理テーブルの変更を行う。そして家Pと家Qを空家テーブル701に登録し、SPTへの構造変更は終了する(S6411)。
構造管理テーブル761の手順番号が3のとき(S6403)、固定長データテーブルの一つの家(P)に格納されている8個の固定長データと付加される固定長データをローカルテーブルの構築により再配置する(S6407)。これら9個の固定長データはSPTの一つのエントリーに格納できないためである。その作業の最初は、9個の固定長データの区分けである。ローカルテーブルのサイズを8と仮定して説明しているため、8つに区分け(区分0から区分7)する。区分けに使われるデータは、全インデックスからポインタテーブルとSPTのインデックスに使われているビットからの3ビットである。例えば、ポインタテーブルのインデックスが全インデックス、(例えば32ビット)の31ビットから16ビットであるならば、SPTのインデックスはビット15、ビット14、およびビット13である。このため、ローカルテーブルのインデックスはビット12、ビット11、およびビット10である。それらを(ビット12、ビット11、ビット10)で表す。この場合、区分0は(000)、区分1は(001)、同様に区分7は(111)で表す。
8エントリーを持つローカルテーブルを固定長データテーブルメモリ560に構築し、初期化する。ローカルテーブルのインデックス(000)のメモリアドレス、すなわちベースアドレスとローカルテーブルのパラメータを家(P)の室管理テーブル741の上位アドレスが示すSPTのエントリーのエントリー制御データに書き込む。固定長データテーブルの一部の家はローカルテーブルに予約されている。
区分0に属する固定長データをベースアドレスでインデックスされる固定長データテーブルの家に移す(S6408)。このときの動作は単純付加機能630で説明したとおりである。その家の室管理テーブル741のLTビットをセットすることによりその団体は、付加命令および削減命令によりその家から移動することは無い。最後にその家のエントリー制御データの次工程000を書き込む。この作業を区分1から区分7まで行う。構造管理テーブルの変更を行う。そして家Pを空家テーブル701に登録し、ローカルテーブルへの構造変更は終了する(S6411)。
構造管理テーブル761の手順番号が4のとき、付加する固定長データが所属するポインタテーブルのエントリーに属する全ての固定長データと付加する固定長データとが構造変更の対象になる(S6409)。全ての家が持つ固定長データは、その家の団体の中で大小順に並んでいる。このため、付加する固定長データが所属するポインタテーブルのエントリーに属するSPTとローカルテーブルの固定長データは大小順に並んでいると考えられる。例えば、ローカルテーブルを含まないSPTのインデックス0を(000)と、ローカルテーブル(そのインデックス0)を含むSPTのインデックス1を(001、000)と表わせば、固定長データの大小順は大きいほうから(111)、(110)、(101)、(100)、(011)、(010)、(001,111)、(001,110)、(001,101)、(001,100)、(001,011)、(001,010)、(001,001)、(001,000)、(000)となる。この順序にポインタテーブルの次に読み込まれる固定長データテーブルの家(P)の固定長データが割り込む。
大小順に並べられた固定長データの大小比較の方法を説明する。上記例を使えば、ポインタテーブルのインデックスが全インデックス、(例えば32ビット)の31ビットから16ビットであるならば、SPTのインデックスはビット15、ビット14、およびビット13である。ローカルテーブルのインデックスはビット12、ビット11、およびビット11である。これらはあくまで各テーブルに分類するために使われ方法であり、大小比較を全インデックスのビット15からビット0に対して行っても、今までの説明に問題は起こらない。また、マスク付の大小比較であるため、マスクされるビットは比較しても意味が無い。すなわち、マスクが23であれば、全インデックスのビット31からビット8までが比較され、ビット7からビット0までは意味の無い。このため、マスクされるビットは0として扱う。NVC形式の固定長データテーブルの要素は、抽出されたインデックス(全インデックスのビット15からビット0)と、このインデックスとの大小比較の結果、参照される固定長データテーブルインデックスから構成される(図8参照)。又、手順5は固定長データテーブルでNVC形式の家をふたつまで持つことができる。一つの家に固定長データは8個まで格納できるが、NVC形式のデータは一つの家に16個まで格納できるので、二つの家に最高256個のNVC形式のデータを格納できる。NVC形式への構造変更はこの性質を利用する。
上記例でSPTと一つのローカルテーブルが存在すると仮定すれば、インデックス数は15である。このため、付加する固定長データと付加される家の8個の固定長データを二つに分解し、全部で16個の家を持つ。これからは図9で記述された作業3、作業4、そして作業5を行う(S6411)。空家テーブル701から家(P)を入手する。各家の最小値を持つ固定長データのビット15からビット0を抽出し、大きい順に家(P)に格納する。それらの固定値データに相当する家のインデックスを各抽出インデックスの固定長データテーブルインデックスとして格納する。家(P)のインデックスをポインタテーブルのエントリーデータに保存し、次工程はNVC形式をセットする。構造管理テーブルを修正する。ローカルテーブルを構成する家の室管理テーブル741のLTビットは変更しない。以上により構造変更は完了する。
上記、付加する固定長データと付加される家(R)の8個の固定長データを二つに分解する方法を説明する。付加する固定長データが付加される8個の固定長データの大きい順のm番目と仮定する。mは0から8の値である。0は付加する固定長データが最大であり、8は付加する固定長データが最小である。mが1、2、3の時、m+1の空き室を持つ家(S)を空室テーブル721から入手し、大きい順からm個の固定長データと付加する固定長データを移動する。家(R)をm個の空室テーブルに登録しそのアドレスを家(R)の室管理テーブルに書き込む。全てにおいて家の室管理テーブルの上位アドレスにポインタテーブルのインデックスを書き込む。mが1、2、3以外の時、mの空き室を持つ家(S)を空室テーブル721から入手し、小さい順から(8−m)個の固定長データを移動する。家(R)に付加する固定長データを保存し、(7−m)個の空室テーブルに登録しそのアドレスを家(R)の室管理テーブルに書き込む。全てにおいて家の室管理テーブルの上位アドレスにポインタテーブルのインデックスを書き込む。
NVC形式のテーブルの構築変更は一つのローカルテーブルを例に説明したが、ローカルテーブルが複数存在しても、説明した手法は使える。SPTの全てのエントリーがローカルテーブルをもった場合、64個の家が存在する。しかし、NVC形式の家は説明では一つであったが、二つまでもてるため、256個の家が処理できる。すなわち、手順4から手順5の構造変更の手法の上記説明は、手順4が、いかなるテーブル構造を持っていても手順5のNVC形式のテーブル構造に変更可能である。
図29に、入力命令・実行機能670の要請で構造変更の必要の無い削除機能(単純削除機能650)を実行するコントローラまたはシークエンサーの動作例の一部を示す。単純削除機能650の全てのケースを図29に記述することは複雑となるため、詳細な機能は説明により行う。入力命令・実行機能670から単純削除命令の実行を受付けると、まず、削除命令内の固定長データを検索する(S6500)。単純削除機能650は削除命令内の固定長データを入力固定値データ処理手段100の管理データ699から入力する。入力検索番号はテーブル管理制御手段600に割り当てられた検索番号である、又入力統計データはゼロが入力される。テーブル管理制御手段600に割り当てられた検索番号を伴う検索動作は出力制御機能840により、レジスターS812にデータが格納された時点で終了する。又、図7のポインタ処理手段200において、テーブル管理制御手段600に割り当てられた検索番号のインデックスを発生させるとき、そのインデックスはレジスターP217に保存される。検索過程の中でレジスターP217はポインタ処理手段200がテーブルインデックス252を発生するたびに改定される。このため、検索終了時、レジスターP217は固定長データテーブルを読み込んだ最後のインデックスが保持されている。それに加え、削除命令内の固定長データに関する検索結果、固定長データ名、およびユーザーデータは、テーブル管理制御手段600に割り当てられた検索番号のレジスターS812に格納され、単純削除機能650に読み込まれる。
図29には記述されていないが、一致した検索結果が得られたとき、単純削除機能650の実行は続けられる。一致しない結果が得られた時、単純削除機能650の実行を中止して、その結果をホスト制御装置に報告する。これからは、検索結果が一致した場合を説明する。
ポインタ処理手段200のレジスターP217が保持するインデックスで、室管理テーブル741を参照し(S6501)、家が満室(8室が単一団体で占められている)か否かを確認する。満室でない場合、二つの団体により家が構成されている。このとき、家の占有の状況と固定長データが付加される団体とを用いて場合分けをすると、次のケースが考えられる。(1)家には大団体と小団体が同居しており、大団体から削除される、(2)家には大団体と小団体が同居しており、小団体から削除される、(3)家には大団体と小団体が同居できるが、大団体だけが存在し、そこから削除される、(4)家にはサイズの等しい二団体が同居しており、その一つの団体から削除される、(5)家にはサイズの等しい二団体が同居できるが、一つだけが存在し、その団体から削除される。図29に(1)と(2)と満室の場合を示す。以下、(1)から(5)の説明を行う。
(1)家(P)には大団体と小団体が同居しており、大団体から削除される場合、小団体を移動し(S6503)、大団体から削除した後、家(P)を(小団体の室数+1)の空室テーブル721に登録する(S6504)。作業の順番は最初に空室テーブル721から小団体の持つ室数の空き室を持つ家(Q)のインデックスを得る。家(Q)に小団体を移す。そして家(Q)の室管理テーブル741に小団体に関連するパラメータを写し、室管理テーブル741が持つ上位アドレスを使い上位テーブルのエントリー制御データに家(Q)のインデックスを書き込む。次に大団体の家(P)から削除命令内の固定長データを削除し、家(P)の室管理テーブル741と構造管理テーブル761のパラメータを変更する。家(P)を(小団体の室数+1)の空室テーブル721に登録する(S6505)。
(2)家(P)には大団体と小団体が同居しており、小団体から削除される場合、小団体の室数より一つ小さな空室をもつ家(Q)を空室テーブル721から入手し、小団体から削除命令内の固定長データを削除し、小団体を家(Q)に移動する(S6506)。そして家(Q)の室管理テーブル741に小団体に関連するパラメータを写し、室管理テーブル741が持つ上位アドレスを使い上位テーブルのエントリー制御データと構造管理テーブル761を変更する。次に大団体の家(P)を削除前の小団体の室数の空室テーブル721に登録し(S6507)、家(P)の室管理テーブルの上位アドレスに空室テーブル721に登録したアドレスを書き込み、それらに対応するパラメータを変更する(S6505)。
(3)家には大団体と小団体が同居できるが、大団体だけが存在し、そこから削除される場合、大団体の家から削除命令内の固定長データとその関連するデータを削除する。空き室であった小団体の室数の空室テーブル721からこの家を削除する。その家の室管理テーブル741と構造管理テーブル761のパラメータを変更する、そして家を(空き室であった小団体の室数+1)の空室テーブル721に登録する。
(4)家(P)にはサイズの等しい二団体(AとBと呼ぶ)が同居しており、その一つの団体Aから削除される場合、団体の室数が2、3、または4のとき、団体Aの室数より一つ小さな空室をもつ家(Q)を空室テーブル721から入手する。団体Aから削除命令内の固定長データとその関連するデータを削除後、団体Aを家(Q)に移動する。そして家(Q)の室管理テーブル741の団体Aに関連するパラメータを写し、室管理テーブル741が持つ上位アドレスを使い、上位テーブルのエントリー制御データに家(Q)のインデックスを書き込み、構造管理テーブル761を変更する。次に家(P)を団体Bの室数の空室テーブル721に登録し、そして団体Bの家(P)の室管理テーブル741の団体Aのパラメータを登録された空室テーブル721のアドレスに変更する。団体の室数が1の場合、団体Aから削除命令内の固定長データとその関連するデータを削除する。そしてこの家(P)の団体Aの上位アドレスで示されるテーブルの次工程およびそれに関するパラメータを変更する。次に家(P)を1の室数の空室テーブル721に登録し、そして団体Bの家(P)の室管理テーブル741の団体Aのパラメータを登録された空室テーブル721のアドレスに変更する。
(5)家にはサイズの等しい二団体(AとBと呼ぶ)が同居できるが、一つ(団体A)だけが存在し、その団体から削除される場合、団体Aの家から削除命令内の固定長データとその関連データを削除する。団体の室数が2、3、または4のとき、空き室であった団体(B)の室数の空室テーブル721からこの家を削除する。家を(空き室であった団体Bの室数−1)の空室テーブル721に登録する。その家の室管理テーブル741の空き室の上位アドレスに登録した空室テーブル721のアドレスを書き込み、構造管理テーブル761のパラメータを変更する。団体の室数が1のとき、その家を空家テーブル701に登録する。そしてこの家の団体Aの上位アドレスで示されるテーブルの次工程およびそれに関するパラメータを変更する。
図29において、家が満室(8室が単一団体で占められている)の場合、その家から削除命令内の固定長データとその関連データを削除する。そして、その家を1の室数を持つ空室テーブル721に登録する(S6508)。最後に構造管理テーブル761のパラメータを変更する(S6509)。
図29に、入力命令・実行機能670の要請で構造変更の必要のある削除機能(構造変更削除機能660)を実行するコントローラまたはシークエンサーの動作例の一部を示す。単純削除機能650の説明と同様に、構造変更削除機能660の全てのケースを図29に記述することは複雑となるため、詳細な機能は説明により行う。入力命令・実行機能670から構造変更付加命令の実行を受付けると、まず、付加命令内の固定長データを検索する(S6600)。構造変更削除機能660は、付加命令内の固定長データを入力固定値データ処理手段100の管理データ699から入力する(S6600)。入力検索番号はテーブル管理制御手段600に割り当てられた検索番号である、又入力統計データとしては、ゼロが入力される。テーブル管理制御手段600に割り当てられた検索番号を伴う検索動作は出力制御機能840により、レジスターS812にデータが格納された時点で終了する。又、図7のポインタ処理手段200において、テーブル管理制御手段600に割り当てられた検索番号のインデックスを発生させるとき、そのインデックスはレジスターP217に保存される。検索過程の中でレジスターP217はポインタ処理手段200がテーブルインデックス252を発生するたびに改定される。このため、検索終了時、レジスターP217は固定長データテーブルを読み込んだ最後のインデックスが保持されている。それに加え、付加命令内の固定長データに関する検索結果、固定長データ名、およびユーザーデータは、テーブル管理制御手段600に割り当てられた検索番号のレジスターS812に格納され、構造変更削除機能660に読み込まれる。
図29には記述されていないが、一致した検索結果が得られたとき、構造変更削除機能660の実行が続けられる。一致しない結果が得られた時、構造変更削除機能660の実行を中止して、その結果をホスト制御装置に報告する。これからは、検索結果が一致した場合を説明する。
ポインタ処理手段200のレジスターP217が保持するインデックスで、室管理テーブル741を参照し(S6601)、上位アドレスを得る。次に構造管理テーブル761を参照し、手順番号と構造変更理由を確認する。手順3の場合、SPTを分解する。手順4の場合、ローカルテーブルを分解する。手順5の場合、NVC形式のテーブル構造を分解する。
構造管理テーブル761の手順番号が3のとき、SPTが管理する家とポインタテーブルが管理する家に格納されている固定長データとそれに関連するデータを二つの家に移動し(S6604、S6605)、ポインタテーブルが管理する形式を構築する。SPTのサイズを8と仮定して説明しているため、9つの家に区分け(区分0から区分8)されている。区分けに使われるデータは、全インデックスからポインタテーブルのインデックスに使われているビットからの3ビットである。例えば、ポインタテーブルのインデックスが全インデックス、(例えば32ビット)の31ビットから16ビットであるならば、SPTのインデックスはビット15、ビット14、およびビット13である。それらを(ビット15、ビット14、ビット13)で表す。この場合、区分0は(000)、区分1は(001)、同様に区分7は(111)で表す。区分8は17個の固定長データのうち、そのマスクの長さが17ビット(32ビットー15ビット)か18ビット(32ビット−14ビット)を持つ固定長データを扱う。区分0から区分7はSPTにより管理され、区分8はポインタテーブルにより管理される家である。又、各家に格納されている固定長データは大小順に並べられている。
区分0から区分8の家にある固定長データを二つの家に移動する方法を述べる。最初に二つの家(PとQ)を空家テーブル701から入手する。そして区分7と8の家の最大値を持つ固定長データを大小比較する。その結果大きいほうを家Pの最大値の位置する場所に移動・格納する。大小比較は全インデックスのビット15からビット0で行われる。次に、比較結果の小さいほうと、大きいほうの次の固定長データを大小比較する。この作業を区分8の家が持つ固定長データが移動・格納されるまで行う。その後、残った区分に属する固定長データを順次、家Pと家Qに移動・格納する。この場合、削除命令内の固定長データは大小比較、そして移動・格納の対象から除かれる。
区分0から区分8に属する家を空家テーブル701に登録する。この場合、区分によっては最初から固定長データを持たない家が存在する。この場合、その家に対し移動・格納は行われず、空家テーブル701への登録も行われない。最後に、家Pと家Qのパラメータをおのおののエントリー制御データに書き込み、家Pのアドレスをポインタテーブルの対応するエントリーに書き込み、そのエントリーに対応する構造管理テーブル761を変更する。以上により、SPTからの構造変更は終了する(S6606)。
構造管理テーブル761の手順番号が4のとき、ポインタ処理手段200のレジスターP217が保持するインデックスから得られた、上位アドレス、すなわちSPTのエントリーアドレスが管理するローカルテーブルを分解し、ローカルテーブルが管理していた固定長データの内、削除命令内の固定長データを除き、一つの家に移動・格納する(S6607、S6608)。これらの固定長データはSPTの一つのエントリーに格納できないためにローカルテーブルを構築していたが、削除命令で一つの家に格納可能になった。ローカルテーブルのインデックスは、全インデックスからポインタテーブルとSPTのインデックスに使われているビットからの3ビットである。例えば、ポインタテーブルのインデックスが全インデックス、(例えば32ビット)の31ビットから16ビットであるならば、SPTのインデックスはビット15、ビット14、およびビット13である。このため、ローカルテーブルのインデックスはビット12、ビット11、およびビット10である。それらを(ビット12、ビット11、ビット10)で表す。この場合、区分0は(000)、区分1は(001)、同様に区分7は(111)で表す。
その作業の最初は、一つの家Pを空家テーブル701から入手する。ローカルテーブルのサイズを8と仮定して説明しているため、8つに区分け(区分0から区分7)されている家に格納されている固定長データを区分7の家から、順次、移動・格納する。区分7の家の固定長データの処理が終了した後で、区分6の家の固定長データの処理を行う。このような処理を区分0の家の固定長データに対して行う。この場合、削除命令内の固定長データは移動・格納の対象から除かれる。
区分0から区分7に属する家を空家テーブル701に登録する。この場合、区分によっては最初から固定長データを持たない家が存在する。この場合、その家に対し移動・格納は行われず、空家テーブル701への登録も行われない。最後に、家Pのパラメータを自身のエントリー制御データに書き込み、家PのアドレスをSPTの対応するエントリーに書き込み、そのエントリーに対応する構造管理テーブル761を変更する。以上により、ローカルテーブルからの構造変更は終了する。
構造管理テーブル761の手順番号が5のとき、手順5のNVC形式のテーブル構造はSPTとローカルテーブルの組み合わせのテーブル構造に変換される。このとき大事なポイントを指摘する。削除命令内の固定長データが属するポインタテーブルのエントリーはその次工程でNVC動作による検索を指示し、そのエントリーにつながるテーブル構造はNVC形式である。しかし、そのエントリーに対応する構造管理テーブル761はSPTとローカルテーブルの組み合わせで、NVC形式で動作する固定長データを管理していることである。このため、NVC形式の対応する構造管理テーブル761が構造変更動作の大きく関与する。構造変更動作を説明する前に、NVC形式の構造管理テーブル761の構造を説明する。
例えば構造変更付加命令の説明のように、ローカルテーブルを含まないSPTのインデックス0を(000)と、ローカルテーブル(そのインデックス0)を含むSPTのインデックス1を(001、000)と表す。構造管理テーブル761のNVC形式に対応するエントリーデータは左から順番に、構造制御データ、ポインタテーブルのエントリーが持つ固定長データ数、次の家が持つ固定長データ数、そしてSPTとローカルテーブルの各エントリーが格納する固定長データ数である。SPTとローカルテーブルの各エントリーが格納する固定長データ数は、エントリー順に並べられており、大きいほうから(111)、(110)、(101)、(100)、(011)、(010)、(001,111)、(001,110)、(001,101)、(001,100)、(001,011)、(001,010)、(001,001)、(001,000)、(000)となる。上記順番はNVC形式が構造管理テーブルによりSPTと一つのローカルテーブルの形で管理されている例を示す。もし複数のローカルテーブルにより管理されていれば、(7*ローカルテーブル数)だけ固定長データ数を格納するエントリー数が増加する。又、構造変更削除命令を発生させる判断は、構造管理テーブルのエントリーの、次の家が持つ固定長データ数、そしてSPTとローカルテーブルの各エントリーが格納する固定長データ数がある指定された数以下になった時、行われる。
大小順に並べられた固定長データの大小比較の方法を説明する。上記例を使えば、ポインタテーブルのインデックスが全インデックス、(例えば32ビット)の31ビットから16ビットであるならば、SPTのインデックスはビット15、ビット14、およびビット13である。ローカルテーブルのインデックスはビット12、ビット11、およびビット11である。これらはあくまで各テーブルに分類するために使われ方法であり、大小比較を全インデックスのビット15からビット0に対して行っても、今までの説明に問題は起こらない。また、マスク付の大小比較であるため、マスクされるビットは比較しても意味が無い。すなわち、マスクが23であれば、全インデックスのビット31からビット8までが比較され、ビット7からビット0までは意味の無い。このため、マスクされるビットは0として扱う。NVC形式の固定長データテーブルの要素は抽出されたインデックス(全インデックスのビット15からビット0)と、このインデックスとの大小比較の結果、参照される固定長データテーブルインデックスから構成される。(図8参照)
以上の説明で、構造変更削除命令の手順5の構造変更動作を説明する。構造変更削除命令の構造変更動作は構造変更付加命令の構造変更動作の逆である。最初に構造管理テーブル761を参照し(S6609)、SPTとローカルテーブルを構築し(S6610とS6611)、空家テーブル701から家(P)を入手する。ポインタテーブルのエントリーの次工程にB‘101’をセットし、固定長データテーブルのインデックスに家(P)のインデックスをセットする。家(P)のエントリー制御データの次工程にB‘010’をセットし、ポインタテーブルメモリのアドレスにSPTのエントリー0のアドレスをセットし、その他のパラメータをセットする(S6610)。そしてローカルテーブルを持つSPTのエントリーのエントリー制御データの次工程にB‘011’をセットし、固定長データテーブルのインデックスにローカルテーブルのエントリー0のインデックスをセットし、その他のパラメータをセットする(S6611)。これで構造変更動作の準備が終了する。
ポインタテーブルのエントリーに保持されていた、NVC形式の家のインデックスでNVC形式のテーブル構造を解析・構造変更を行う。基本的に構造管理テーブル761が持つSPTとローカルテーブルの構造で家が構成されているので、上記構造管理テーブル761のエントリーの例を使って説明する。上記例では、SPTとローカルテーブルの各エントリーが格納する固定長データ数は、エントリー順に並べられており、大きいほうから(111)、(110)、(101)、(100)、(011)、(010)、(001,111)、(001,110)、(001,101)、(001,100)、(001,011)、(001,010)、(001,001)、(001,000)、(000)となる。すなわち、15個の数に対応する家が存在する、これが基本的な考え方である。もちろん、固定長データ数が0の場合、家は存在せず、あるエントリーは固定長データ数が指定した数以下でも、いくつかの家に分割されて格納されている場合もある。NVC形式の家のインデックスで最高位の要素が上記(111)に相当すれば、その要素に含まれる固定長データテーブルインデックスをSPTのエントリー(111)に格納し、その次工程はB‘101’をセットする。この場合、マスクがビット15からビット11の間に位置する固定長データはその家から家(P)に移動する。又、構造変更命令にある固定長データは当然その家から削除される。その家の固定長データ数に変化があるとき、単純削除機能の説明で行われた各種テーブルの修正が行われる。
上記例でSPTのエントリーが(001)の場合、ローカルテーブルに属する家の処理となる。NVC形式の家のインデックスでその要素が上記(001、111)に相当すれば、その要素に含まれる固定長データテーブルインデックスをローカルテーブルのエントリー(111)に格納し、その次工程はB‘101’をセットする(S6612)。SPTと同様に、この場合、マスクがビット15からビット11の間に位置する固定長データはその家から家(P)に移動する。又、構造変更命令にある固定長データは当然その家から削除される。その家の固定長データ数に変化があるとき、単純削除機能の説明で行われた各種テーブルの修正が行われる。
例えば、NVC形式の家のインデックスでその複数の要素が上記(001、100)に相当すれば、その中で最高値を持つ家にそれから続く家の固定長データを移動・格納する。(001、100)に相当する全ての要素の家の固定長データを移動・格納後、空き室になった家は空き室数の空室テーブルに登録され、空室テーブルのアドレスはその家の空室管理テーブルのパラメータに格納される。そして、全ての固定長データを格納した家のインデックスはローカルテーブルのエントリー(100)に格納され、その次工程はB‘101’をセットする(S6612)。SPTと同様に、この場合、マスクがビット15からビット11の間に位置する固定長データはその家から家(P)に移動する。又、構造変更命令にある固定長データは当然その家から削除される。その家に移動・格納される固定長データは、単純削除機能により行われる。以上により構造変更は完了する。
図30にテーブル管理制御手段600により実行された命令(図24に示された命令)の実行結果を出力する管理出力機能の実施例である。入力命令・実行機能670から送られた実行結果をレジスターXに格納し、それに付属するデータをFIFOレジスターに格納する。FIFOレジスターは多数のデータが送られてきたとき、その順序を守り、ライトポインタでFIFOレジスター内に保持する。全てのデータが送られてきた時、出力制御機能840はレジスターXに格納されている実行結果を最初に出力し、次にデータが存在すれば、FIFOレジスターに保持されているデータをリードポインタにしたがって出力する。
図30に管理出力データの内容を示す。付加命令の実行の結果としては、実行結果データだけが送られる。実行結果データの内容は、(1)問題なく実行完了、(2)付加する固定長データは存在するため、付加しないこと、または(2)付加する固定長データは存在するが実行完了したこと、(3)付加するメモリの不足のため、付加できなかったこと等を示すデータである。削除命令の実行の結果としては、実行結果データだけが送られる。この場合の実行結果データの内容は(1)問題なく実行完了したこと、(2)削除する固定長データは存在しないこと等を示すデータである。統計データ引出命令の実行の結果、実行結果データと、統計データと、固定長データ名が出力される。この場合、実行結果データは実行完了データが出力される。自動削除名引出命令の実行の結果、実行結果データと、命令で指定された数の、または存在する全ての、自動的に削除された固定長データ名が出力される。この場合、実行結果データは実行完了データが出力される。
図16に本発明のコンピュータプログラムおよび記録媒体の適用可能なハードウェアの構成例を示すブロック図を示す。図31において、コンピュータシステム90は、システムバス94に接続されたCPU(Central Processing Unit)91と、記憶装置92と、入出力装置93とを含む。CPU91は、少なくとも演算装置と制御装置とを備え、記憶装置92は例えば内蔵主記憶メモリ、ハードディスクドライブ、フロッピーディスクドライブなどで構成される。コンピュータシステム90に本発明のコンピュータプログラムがインストールされると、前記コンピュータプログラムは前記ハードディスクドライブ内に格納され、必要に応じて前記主記憶メモリにロードされる。記憶装置55の前記主記憶メモリにより、またはCPU91が備えるキャッシュメモリにより、本発明におけるポインタ・テーブル・メモリ、固定長データテーブルメモリ、データテーブルメモリ、および空家テーブルメモリ、空室テーブルメモリ、空室管理テーブルメモリ、構造管理テーブルメモリ等が構成される。入出力装置93は、複数の入出力ポートを備えて外部とのデータ通信を行うことが出来る。記憶装置92内の例えばハードディスクドライブやフロッピーディスクドライブなどにより、本発明のコンピュータプログラムが記録された記録媒体からプログラムが読み出される。
以上、詳細に説明したように、本発明を適用した実施の形態によれば、多数の固定長データが格納された固定長データテーブルの検索処理がいろいろな検索ルールで、2から3メモリーサイクル程度の速度で実行することができる。又、パイプライン構成が可能なため、一秒間あたりの検索処理数は膨大な数になる。検索処理に加えて、ユーザーデータ、統計データの管理を行うため、検索後のデータ処理を削減でき、検索処理の高速化、および検索処理数の増大が図れる。それらに加えて、固定長データの付加、削除、および自動削除を行うため、ホスト制御装置が行っていた重い処理を削減できる。又、本発明固定長データ検索装置と固定長データ検索および管理装置および管理方法と検索方法は、実施例で説明したように、ネットワーク通信で多用されるIPアドレスの検索や各種フィルターに適用可能である。又、本発明は、本発明の固定長データ検索および管理装置または管理・検索方法を適用した情報処理装置として、コンピュータを機能させるためのコンピュータプログラムに適用することが可能である。さらに本発明は、前記コンピュータプログラムを記録したコンピュータ読取可能な記録媒体に適用することも可能である。
以上のように、いくつかの例示的な実施形態が本発明に関して詳細に説明された。当業者には、本発明の新規な開示および効果から実質的に離れることなくこれら実施形態を様々に改良することが可能であることが分るであろう。したがって、そのような改良も全て本発明の範囲に含められるべきことが意図されている。
本発明における固定長データの検索および管理に係る実施例を示す機能ブロック図を図1に示す。理解しやすいように、検索に必要な機能を図1〜14により最初に説明し、その基本機能となる各種テーブルを構築し、保守する管理機能を次に説明する。
入力固定長データ9と検索番号8と統計データ11は入力固定長データ処理手段100に入力される。入力固定長データ処理手段100はポインタテーブル500に格納されたポインタテーブルのインデックスを演算し出力する。ポインタテーブルの役目はデータベース内の固定長データをグループに分割し、そのグループ内の固定長データの数(メンバー数)を均一化し可能な限り少なくすることである。このため、演算方法は次の4つを用意する。
(1)ハッシュ法により計算されたハッシュ値
(2)ハッシュ法により計算されたハッシュ値の一部
(3)入力固定長データ
(4)入力固定長データの一部
演算方法、ハッシュ値または入力固定長データから一部を取り出す方法は指定可能とする。入力固定長データ処理手段100の実施例を図3に示す。
図4に、ポインタテーブルメモリ500の構成例を示す。なお、図4には、ポインタテーブルメモリ500、固定長テーブルメモリ560、データテーブル540の構成が似ている場合の例をまとめて記載したものである。図4の下段には、これらの各メモリとして使用する場合の制御信号、アドレス、データ組合わせが記載されている。
(1)ポインタテーブルのこのエントリーに固定長データは無い。検索終了となる。
(2)ポインタテーブルのこのエントリーに一つの固定長データが存在する。検索終了となる。
(3)ポインタテーブルの再読み出しを行う。
(4)ローカルテーブル(LT)の読み出しを行い、比較を実行する。
(5)固定長データテーブルの読み出しを行い、NVC(数値比較)を実行する。
(6)固定長データテーブルの読み出しを行い、比較を実行する。
これら次工程を詳しく説明する。
ポインタテーブルメモリ500の出力であるエントリーデータ(読み出しデータ507)はポインタ処理手段200に入力される(図1)。ポインタ処理手段200の目的は入力された情報から次工程である固定長データテーブルメモリのインデックスを出力することである。ポインタ処理手段200の実施例を図7に示す。ポインタ処理手段200の入力は、ポインタテーブルの前記エントリーデータと、入力固定長データ処理手段100の出力と、固定長データテーブルのエントリー制御データとである。ポインタテーブルの前記エントリーデータと固定長データテーブルのエントリー制御データとは同じ形式を持つので、以降の説明では単にエントリーデータという。
図4に、固定長データテーブルメモリ560(図1)の構成例を示す。固定長データテーブルメモリ560は、メモリアレイ561から構成されるメモリ部分と書き込みおよび読み出し回路569とから構成される。ポインタ処理手段200の出力、固定長データテーブルインデックス252は、固定長データテーブルメモリ560のメモリのアドレス指定に使われ、同期検索番号251は固定長データテーブルメモリ560の読み出し回路の同期に使われる。固定長データテーブルインデックス252は、図5に示すようにメモリバンク562それ自体のアドレスと、メモリバンク562内のアドレス(ディスプレースメント)とから構成され、固定長データテーブルメモリ560のメモリアドレスとなる。この場合、メモリアレイ561のアドレスは出力されず、ポインタ処理手段200の出力であるメモリ制御データ(図示しない)により、固定長データテーブルメモリ560は独立して制御される。このため、固定長データテーブルメモリ560の全てのメモリアレイ561を読み出すことが可能となる。
(1)固定長データテーブルのこのエントリーに固定長データは無い。
検索終了となる。
(2)ポインタテーブルの再読み出しを行う。
(3)ローカルテーブル(LT)の読み出しを行い、比較を実行する。
(4)固定長データテーブルの読み出しを行い、NVCを実行する。
(5)固定長データテーブルの読み出しを行い、比較を実行する。
これら次工程を詳しく説明する。
固定長データテーブルメモリ560の出力であるエントリーデータは比較手段400に入力される。比較手段400の目的は、入力されたエントリーデータと前もって保存された同期入力固定値データ193とを比較し(比較動作)、比較により得られた結果を保持すること、入力されたエントリーデータと全インデックスから抽出した抽出インデックスを大小比較すること、および、入力されたエントリー制御データの次工程に従い、次の工程を決定することである。
(1)ポインタテーブルのこのエントリーに固定長データは無い。検索終了となる。
(2)ポインタテーブルのこのエントリーに一つの固定長データが存在する。検索終了となる。
(3)ローカルテーブル(LT)の読み出しを行い、比較を実行する。
(4)固定長データテーブルの読み出しを行い、NVCを実行する。
(5)固定長データテーブルの読み出しを行い、比較を実行する。
以下、各ケースについて比較手段400の処理を説明する。
(1)固定長データテーブルの当該エントリーに固定長データは無い。検索終了となる。
(2)ポインタテーブルの再読み出しを行う。
(3)ローカルテーブル(LT)の読み出しを行い、比較を実行する。
(4)固定長データテーブルの読み出しを行い、NVCを実行する。
(5)固定長データテーブルの読み出しを行い、比較を実行する。
又、前次工程がNVC動作か否かでこれら次工程の処理は異なる、このため、最初は前次工程がNVC動作ではない場合を詳しく説明する。そしてその後、前次工程がNVC動作の場合について説明する。
(1)固定長データテーブルのこのエントリーに固定長データが無い。
(2)固定長データテーブルの読み出しを行い、NVCを実行する。
(3)固定長データテーブルの読み出しを行い、比較を実行する。
このうち、次工程(1)は前次工程がNVC動作ではない場合の次工程(1)と全く同じ処理を行う。
修正手段300に入力された同期検索番号451とデータテーブルインデックス455はデータテーブルに格納されているユーザーデータの読み出しと、統計データの変更を行う。図13に修正手段300の実施例を示す。
図4に、データテーブルメモリ540の構成例を示す。データテーブルメモリ540はメモリアレイ541から構成されるメモリ部分と書き込みおよび読み出し回路550から構成される。修正手段300の出力である書き込みデータテーブルインデックス334、および読み出しデータテーブルインデックス335は、データテーブルメモリ540のメモリのアドレス指定に使われ、読み出し同期検索番号336はデータテーブルメモリ540の読み出し回路の同期に使われる。書き込みデータテーブルインデックス334、および読み出しデータテーブルインデックス335は、図5に示されるように、メモリアレイ551のアドレス、メモリバンク542のアドレス、およびメモリバンク542内のアドレス(ディスプレースメント)から構成され、データテーブルメモリ540のメモリアドレスとなる。
出力手段800は検索結果を出力する。出力手段800の実施例を図14に示す。出力手段800は比較手段400から同期検索番号451、検索結果453と固定長データ名452が入力される。入力された、それらのデータは同期検索番号451のデコーダー811によって同期検索番号451(xとする)に相当するレジスターSx812に格納される。
図1は本発明固定長データ検索および管理装置50に係る実施例を示すブロック図である。図1に示す固定長データ検索および管理装置50は、前記固定長データ検索装置10(図1)に加え、入力されたテーブル管理命令1を解釈および実行するテーブル管理制御手段600と、固定長データテーブルメモリ560において、一つのメモリアドレスまたは複数のメモリバンク562の異なるメモリアドレスを用いて読み出される単位を家と定義した場合、使用されていない家を管理する空家テーブルを格納する空家テーブルメモリ700と、前記家において、固定長データと検索に必要な固定長データに対応するデータそして検索に必要なデータを保持する単位を室と定義した場合、使用されていない室を持つ家を管理する空室テーブルを格納する空室テーブルメモリと、室の使用状態を管理する室管理テーブルを格納する室管理メモリ740と、検索方法により構築されたテーブルの構造を管理する構造管理テーブルを格納する構造管理テーブルメモリ760とを備える。なお、前記空室テーブルメモリ700と空家テーブルメモリ720と室管理テーブルメモリ740と構造管理テーブルメモリ760を単一のメモリで構成するようにしてもよい。
図15に、空家テーブル701の実施例の一つと、その使用法をあわせて示す。空家の管理においては登録された空家は順次使用されるため、空家テーブル701と空家開始レジスター702により行われる。空家開始レジスター702は空家ありビットと最初の空家のインデックスを保持する。図15に、6個の空家、A、B、C、D、E、Fの管理を示す。空家テーブル701は一方向のリンク構造を持ち、空家テーブル701のエントリーAは終了ビットがオフの家制御ビット703と次の空家のインデックス704にBの値とを持つ。同様に、エントリー、B、C、D、Eは終了ビットがオフの家制御ビット703と次の空家のインデックス704、C、D、E、Fをそれぞれ持つ。エントリーFは終了ビットがオンの家制御ビット703だけを保持する。そして、空家開始レジスター702は最初の空家のインデックスAを持つ。空家への要求がある場合、空家開始レジスター702が保持する空家ありビットがオンであることを確認できれば、家のインデックスAは使用可能である。空家ありビットがオフであれば空家はないと確認できる。そして、空家のインデックスAで空家テーブル701を読み出し、家制御ビットの終了ビットがオフのとき、読み出されたインデックスAにある次の空家のインデックス704、Bを空家開始レジスター702に保持する。この動作は、空家開始レジスター702が空家インデックスFを格納するまで行われる。その後、空家を求める要求に対し、空家開始レジスター702の保持する空家ありビットがオンであるため、空家のインデックス704、Fは空家として使用される。その後、空家のインデックス704、Fを読み出し、家制御ビットの終了ビットがオンであることに対応させて、空家開始レジスター702の空家ありビットをオフに変更する。その後は空家の要求に対し空家無しの状態が続く。空家を登録する場合、登録する空家のインデックスを空家開始レジスター702の持つインデックスに書き込み、同時に書き込まれたインデックスの終了ビットをオフにする。このとき、空家開始レジスター702の空家ありビットがオフである場合、空家ありビットをオンに変更する。以上の方法によって、空家の入手および登録が可能となる。
図16に、空室テーブルメモリ720に格納される空室テーブル721とそのエントリーデータを示す。登録された空室を持つ家は必要なときに使用されるため、空室テーブル721のエントリーデータは、室制御データ723と、前の空家のインデックス725と、次の空家のインデックス726とから構成される。空室テーブル721のエントリー数は最大で固定長データテーブルが持つ家の数である。空家テーブル701は空室を持つ家を管理するだけの役割であるため、いろいろな実施例が考えられる。
図21に、構造管理テーブルメモリ760に格納されている構造管理テーブル761とそのエントリーデータとを示す。構造管理テーブル761のエントリー数はポインタテーブルのエントリー数と同じである。エントリーデータは、構造制御ビットと、ポインタテーブルのエントリーが持つ固定データ長データ数と、リンクアドレスとにより構成される。本発明においては、検索方法として、検索対象の固定長データの集団を一時に比較可能な数に分解し、比較することはすでに述べた。しかし、固定長データの集団の分布においては、一時に比較可能な数の分布にはなっていないのが一般的である。このため、本発明は二次ポインタテーブル、ローカルテーブル、NVC比較法のテーブル等の手法を導入し、固定長データの集団の分散化を図る。本発明の実際の実装においてはこれらの方法を組み合わせる。図21の詳細説明を行う前に、テーブルの構造から見た検索手順を図22で説明し、その構造の変移を図21を用いて説明する。その後、構造変移に必要なデータに関して図21の構造管理テーブルを参考に説明する。
テーブル管理手段600のある実施例を図23に示す。テーブル管理手段600はCPU601と、入出力バス、CPUバス、メモリバス、メモリ信号を供える制御回路602と、CPU601のプログラムとデータを格納するメモリ603とで構成される。図23において説明するテーブル管理の方法は複雑なため、図23で示されるCPU601によって実行される。入力バスは命令の入力に使われ、メモリバスは制御回路602と各テーブルメモリ間、または制御回路602と入力固定長データ処理手段100の間で、または制御回路602と出力手段800の間でのデータ転送に使われる。本実施例はテーブルの管理を行うプログラムが命令の同時実行を行い、複雑な構成となる場合がある。
Claims (64)
- 入力された検索されるべき固定長データに対して、指定された処理を行って出力する入力固定長データ処理手段と、
前記入力固定長データ処理手段またはポインタ処理手段からの出力値をインデックスとして保持するポインタテーブルを格納するポインタテーブルメモリと、
前記ポインタテーブルメモリから出力されるポインタ値と前記入力固定長データ処理手段の出力と固定長データテーブルメモリの出力値とを用いて指定された処理を行う前記ポインタ処理手段と、
検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、前記ポインタ処理手段の出力によりアドレス指定される多数の固定長データとを保持する前記固定長データテーブルを格納する固定長データテーブルメモリと、
前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索すべき固定長データとを指定された方法によって比較し、該比較による比較結果を出力する比較手段と、
前記固定長データテーブルに格納されている固定長データに対応する種々のデータを保持するデータテーブルを格納するデータテーブルメモリと、
前記データテーブルに格納されており、前記比較結果において合致した固定長データに対応するデータを読み出して修正する修正手段と、
前記比較手段および前記修正手段から出力された検索結果と固定長データ名と他のデータとを出力する出力手段と
を備える固定長データ検索装置。 - 前記入力固定長データ処理手段は、前記入力された検索すべき固定長データの検索処理を行うために、入力に付けられた名称または検索番号を検索処理スロットとして出力する手段を備え、
前記入力固定長データ処理手段から出力された検索番号が、前記固定長データ検索装置の各メモリおよび各手段において、多数の検索処理を並列に処理するために使用されることを特徴とする請求項1に記載の固定長データ検索装置。 - 前記入力された検索すべき固定長データを処理する入力固定長データ処理手段は、
入力された固定長データの全てまたは一部を用い、指定されたハッシュ関数によりハッシュ値を計算し、該ハッシュ値を出力する手段、または、入力された固定長データの全てまたは一部を出力する手段の少なくともいずれかの手段をさらに備えることを特徴とする請求項1に記載の固定長データ検索装置。 - 前記ポインタテーブルは、
前記ポインタテーブルからの入力を用いる手段におけるアドレス発生手段に必要なデータ、
前記ポインタテーブルからの入力を用いる手段における処理手順を示す複数のビット、
前記固定長データテーブルを格納する固定長データテーブルメモリを構成する複数メモリアレイのうち、関連するメモリアレイだけを読み出す手順を示す複数のビット、
前記比較手段において入力固定長データとの比較を行うことなく検索が可能である前記固定長データテーブルにおける固定長データについて、アドレスを示す複数のビット
のデータまたはビットのうち少なくともいずれかを備えることを特徴とする請求項1に記載の固定長データ検索装置。 - 前記ポインタ処理手段は、
前記ポインタテーブルの出力または固定長データテーブルの出力の少なくともいずれかの出力に基づいて、前記固定長データテーブルのアドレス、
前記固定長データテーブルと前記データテーブルを含むデータベースに作成された数値比較テーブルのアドレス、
2次ポインタテーブルのアドレス、
前記データベースに作成されたローカルテーブルのアドレス
の少なくともいずれかのアドレスを発生する手段を備えることを特徴とする請求項1に記載の固定長データ検索装置。 - 前記固定長データテーブルは、前記ポインタ処理手段が出力する一つのメモリアドレスに対する複数の要素とエントリー制御データとを読み出す手段を備え、前記複数の要素は、固定長データとその固定長デーダに対応するデータであることを特徴とする請求項1に記載の固定長データ検索装置。
- 前記要素は、固定長データと、固定長データに固有な名称すなわち固定長データ名と、要素制御データとを備えることを特徴とする請求項6に記載の固定長データ検索装置。
- 前記要素は、プレフィックスマスク手段に使用するプレフィックスマスク、または、ローカルマスク手段に使用するローカルマスクのいずれかのマスクを更に備え、
前記プレフィックスマスク手段は、前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索すべき固定長データとを比較器によりビット比較し、該比較器の出力を固定長データの固有のその最上位ビットからのビット長だけ使用して比較結果を得る前記比較手段における手段であり、前記ローカルマスク手段は、前記固定長データテーブルに格納されている複数の固定長データと、前記入力された検索すべき固定長データとを比較器によりビット比較し、該比較器の出力を固定長データ固有のマスクデータによりマスクして比較結果を得る手段である、請求項7に記載の固定長データ検索装置。 - 前記要素制御データは、前記固定長データテーブルの要素を自動的に削除する手段を制御する複数のビットを備えることを特徴とする請求項7に記載の固定長データ検索装置。
- 前記エントリー制御データは、前記固定長データテーブルを読み出した出力への処理内容を示す複数のビットを備えることを特徴とする請求項6に記載の固定長データ検索装置。
- 前記固定長データテーブルは、
前記固定長データテーブルを読み出すアドレス、
前記2次ポインタテーブルを読み出すアドレス、
その内部のローカルテーブルを読み出すアドレス、
その内部の数値比較テーブルを読み出すアドレス
の少なくともいずれかのアドレスをエントリー制御データとして備えることを特徴とする請求項1に記載の固定長データ検索装置。 - 前記固定長データテーブルは、その内部にローカルテーブルと数値比較テーブルを構築可能な構成を備えることを特徴とする請求項1に記載の固定長データ検索装置。
- 前記ポインタテーブルメモリ、前記固定長データテーブルメモリ、および前記データテーブルメモリは、それぞれQ、N、およびU(Q、N、およびUは1以上の整数)個のメモリアレイを有し、各メモリアレイは、それぞれP、M、およびV(P、M、およびVは1以上の整数)個のメモリバンクを有し、
前記ポインタテーブルメモリ、前記固定長データテーブルメモリ、前記データテーブルメモリの少なくともいずれかのメモリにおける各メモリアレイおよび各メモリバンクは独立に動作可能で並列動作を行い、各メモリバンクは、一度に複数のビットを読み出しまたは書き込み可能な手段、または、メモリアレイ内のメモリバンクの並列動作を効率よく動作させるための読み出し手段の少なくともいずれかの手段を備えることを特徴とする請求項1に記載の固定長データ検索装置。 - 前記データテーブルは、固定長データテーブルに格納されている固定長データに対応する検索動作に関係のない静的データと検索動作結果で修正される動的データとを保持する手段を備えることを特徴とする請求項1に記載の固定長データ検索装置。
- 前記修正手段は、前記比較手段が出力する結果により前記データテーブルから読み出す手段と、読み出したデータを修正して前記データテーブルに書き込む手段とを備えることを特徴とする請求項1に記載の固定長データ検索装置。
- 前記比較手段は、
指定された方法によって、前記固定長データテーブルに格納されている複数の固定長データを、前記入力された検索すべき固定長データと同時に比較し、比較結果を出力するためにN*R(*は掛け算を示す演算記号)個のマスク可能なビット比較器と大小比較器と、
N*R個のマスク可能なビット比較器と大小比較器は、前記固定長データまたはその一部と比較するため、可変ビット長で再配置可能な手段と
を備え、Nはメモリアレイの数を表わす1以上の整数であり、Rは前記メモリアレイ中のメモリバンクにおいて一度に読み出しまたは書き込み可能なビット数である、請求項1に記載の固定長データ検索装置。 - 前記比較手段は、
前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索すべき固定長データとを比較器によりビット比較し、該比較器の出力をビットごとにマスクし比較結果を得るグローバルマスク手段、
該比較器の出力を固定長データ固有のマスクデータによりマスクして比較結果を得るローカルマスク手段、
該比較器の出力を固定長データの固有のその最上位ビットからのビット長だけ使用して比較結果を得るプリフィックスマスク手段
の少なくともいずれかの手段を備えることを特徴とする請求項1に記載の固定長データ検索装置。 - 前記比較手段は、前記入力に付けられた名称または検索番号を伴って比較結果を出力する手段を備えることを特徴とする請求項1に記載の固定長データ検索装置。
- 前記出力手段は、
前記比較手段から受け取った比較結果と修正手段から受け取ったユーザーデータとを同期させて出力する手段、
前記入力された検索すべき固定長データの過入力すなわちオーバーフローを防ぐため、その入力に付けられた名称または検索番号を固定長データ検索装置の 命令スロットとして出力する手段
の少なくともいずれかの手段を備えることを特徴とする請求項1に記載の固定長データ検索装置。 - 入力のそれぞれに付けられた名称または検索番号を伴って入力された検索すべき固定長データに対して、指定された処理を行って出力する入力固定長データ処理ステップと、
前記入力固定長データ処理ステップの出力値をインデックスとしてポインタテーブルからポインタ値を読み出すステップと、
前記ポインタテーブルメモリから出力された前記ポインタ値と入力固定長データ処理ステップの出力値とを用いて、指定された処理を行うポインタ処理ステップと、
検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、前記ポインタ処理ステップの出力によりアドレス指定される多数の固定長データとを保持する固定長データテーブルを読み出すステップと、
指定された方法によって、前記固定長データテーブルに格納されている複数の固定長データを、前記入力された検索すべき固定長データと同時に比較し、比較結果を出力する比較ステップと、
固定長データテーブルに格納されており、固定長データに対応する種々のデータを保持するデータテーブルを、前記比較結果に基づいて読み出すステップと、
比較結果により読み出されたデータを修正する修正ステップと、
前記比較ステップおよび修正ステップから出力された検索結果と固定長データ名と他のデータとを出力する出力ステップと
を有する固定長データ検索方法。 - 入力のそれぞれに付けられた名称または検索番号を伴って入力された検索すべき固定長データに対して、指定された処理を行って出力する入力固定長データ処理ステップと、
前記入力固定長データ処理ステップの出力値をインデックスとして、ポインタテーブルから第1のポインタ値を読み出すステップと、
前記第1のポインタ値と入力固定長データ処理ステップの出力とを用いて、指定された処理を行うポインタ処理ステップと、
前記第1のポインタを用いるポインタ処理ステップの出力値をインデックスとして前記ポインタテーブルから第2のポインタ値を読み出すステップと、
前記第2のポインタ値と入力された固定長データとを用い、指定された処理を行うポインタ処理ステップと、
検索に必要な固定長データに対応するデータまたは検索に必要なデータの少なくともいずれかのデータと、前記第2のポインタを用いる前記ポインタ処理ステップの出力によりアドレス指定される多数の固定長データとを保持する固定長データテーブルを読み出すステップと、
前記固定長データテーブルに格納されている複数の固定長データと、前記入力された検索すべき固定長データとを指定された方法によって比較し、該比較による比較結果を出力する比較ステップと、
前記固定長データテーブルに格納されている固定長データに対応する種々のデータを保持するデータテーブルを、前記比較結果に基づいて読み出すステップと、
比較結果に基づいて読み出されたデータを修正する修正ステップと、
前記比較ステップと修正ステップから出力された、検索結果と固定長データ名と他のデータを出力する出力ステップと
を有する固定長データ検索方法。 - 入力のそれぞれに付けられた名称または検索番号を伴って入力された検索すべき固定長データに対して、指定された処理を行って出力する入力固定長データ処理ステップと、
前記入力固定長データ処理ポインタテーブルインデックスとしてポインタテーブルからポインタ値を読み出すステップと、
前記ポインタテーブルメモリから出力された前記ポインタ値と入力固定長データ処理ステップの出力値とを用いて、指定された処理を行うポインタ処理ステップと、
検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、前記ポインタ処理ステップの出力によりアドレス指定される多数の固定長データとを保持する固定長データテーブルを読み出すステップと、
前記固定長データテーブルからの出力を用い、指定された処理を行うポインタ処理ステップと、
前記固定長データテーブルを読み出すステップと、
指定された方法によって、前記固定長データテーブルに格納されている複数の固定長データを前記入力された検索すべき固定長データと同時に比較し、比較結果を出力する比較ステップと、
固定長データテーブルに格納されており、固定長データに対応する種々のデータを保持するデータテーブルを、前記比較結果に基づいて読み出すステップと、
比較結果により読み出されたデータを修正する修正ステップと、
前記比較ステップおよび修正ステップから出力された検索結果と固定長データ名と他のデータとを出力する出力ステップと
を有する固定長データ検索方法。 - 入力のそれぞれに付けられた名称または検索番号を伴って入力された検索すべき固定長データに対して、指定された処理を行って出力する入力固定長データ処理ステップと、
前記入力固定長データ処理ステップの出力値をインデックスとして、ポインタテーブルから第1のポインタ値を読み出すステップと、
前記第1のポインタ値と入力固定長データ処理ステップの出力とを用いて、指定された処理を行うポインタ処理ステップと、
前記第1のポインタ値を用いるポインタ処理ステップの出力値をインデックスとして前記ポインタテーブルから第2のポインタ値を読み出すステップと、
前記第2のポインタ値と入力された固定長データとを用いて、指定された処理を行うポインタ処理ステップと、
検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、前記第2のポインタを用いる前記ポインタ処理ステップの出力によりアドレス指定される多数の固定長データとを保持する固定長データテーブルを読み出すステップと、
前記固定長データテーブルからの出力を用い、指定された処理を行うポインタ処理ステップと、
前記固定長データテーブルを読み出すステップと、
指定された方法によって、前記固定長データテーブルに格納されている複数の固定長データを前記入力された検索すべき固定長データと同時に比較し、比較結果を出力する比較ステップと、
固定長データテーブルに格納されており、固定長データに対応する種々のデータを保持するデータテーブルを、前記比較結果に基づいて読み出すステップと、
比較結果により読み出されたデータを修正する修正ステップと、
前記比較ステップおよび修正ステップから出力された検索結果と固定長データ名と他のデータを出力する出力ステップと
を有する固定長データ検索方法。 - 前記入力固定長データ処理ステップは前記入力された検索すべき固定長データの検索処理を行うために、入力に付けられた名称または検索番号を検索処理スロットとして出力するステップと、
前記入力固定長データ処理ステップから出力された検索番号が前記固定長データ検索方法における各メモリの読み出しステップおよび書き込みステップの各ステップに使われ、多数の検索処理が並列に処理するステップと
を有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。 - 前記入力固定長データ処理ステップは、
入力された固定長データの全てまたは一部を用い、指定されたハッシュ関数によりハッシュ値を計算するステップと、
ハッシュ値を出力するステップ、または、入力された固定長データの全てまたは一部を出力するステップのいずれかのステップと
を有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。 - 次ステップのアドレス発生に必要な前記ポインタテーブルのデータを参照するステップ、
次ステップを規定する前記ポインタテーブルの複数ビットを参照するステップ、
前記ポインタテーブルにおける前記固定長データテーブルを格納する前記固定長データテーブルメモリを構成する複数メモリアレイのうち、関連するメモリアレイだけを読み出す方法を示す複数のビットを参照するステップ、
前記ポインタテーブルにおける前記固定長データテーブルの出力を入力固定長データと比較ステップを経ないで検索可能な固定長データのアドレスを示す複数のビットを参照するステップ
の少なくともいずれかのステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。 - 前記ポインタ処理ステップは、
前記ポインタテーブルの出力、または、固定長データテーブルの出力の少なくともいずれかの出力に基づいて、前記固定長データテーブルのアドレスを発生させるステップ、
前記少なくともいずれかのステップに基づいて、前記データベースに作成された数値比較テーブルのアドレスを発生させるステップ、
前記少なくともいずれかのステップに基づいて、前記2次ポインタテーブルのアドレスを発生させるステップ、
前記少なくともいずれかのステップに基づいて、前記データベースに作成されたローカルテーブルのアドレスを発生するステップ
の少なくともいずれかのステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。 - 前記固定長データテーブルにおける前記ポインタ処理ステップが出力する一つのメモリアドレスによって複数の要素とエントリー制御データとを参照するステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。
- 前記要素は、固定長データと固定長データ名と要素制御データとを備えることを特徴とする請求項28に記載の固定長データ検索方法。
- 前記要素は、プレフィックスマスク機能に使用するプレフィックスマスク、または、ローカルマスク機能に使用するローカルマスクの少なくともいずれかのマスクを更に備え、
前記プレフィックスマスク機能は、前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索すべき固定長データとをビット比較し、比較器の結果を固定長データの固有のその最上位ビットからのビット長だけ使用して比較結果を得る前記比較手段における機能であり、前記ローカルマスク機能は、前記固定長データテーブルに格納されている複数の固定長データと、前記入力された検索すべき固定長データとをビット比較し、比較器の結果を固定長データ固有のマスクデータによりマスクして比較結果を得る機能である、請求項29に記載の固定長データ検索方法。 - 前記固定長データテーブルの要素を自動的に削除する機能を制御する前記要素制御データにおける複数のビットを参照するステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。
- 前記固定長データテーブルを読み出し後の次ステップにおける処理内容を示す前記エントリー制御データにおける複数のビットを参照するステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。
- 前記固定長データテーブルにおける前記固定長データテーブル読み出すアドレス、
前記2次ポインタテーブル読み出すアドレス、
その内部のローカルテーブル読み出すアドレス、
その内部の数値比較テーブルを読み出すアドレス
の少なくともいずれかのアドレスをエントリー制御データとして参照するステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。 - 前記固定長データテーブルにおけるその内部にローカルテーブルと数値比較テーブルを構築するステップと参照するステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。
- 前記ポインタテーブルメモリ、前記固定長データテーブルメモリ、および前記データテーブルメモリは、それぞれQ、N、およびU(Q、N、およびUは1以上の整数)個のメモリアレイを有し、
各メモリアレイは、それぞれP、M、およびV(P、M、およびVは1以上の整数)個のメモリバンクを有し、
前記ポインタテーブルメモリ、前記固定長データテーブルメモリ、前記データテーブルメモリの少なくともいずれかのメモリにおける各メモリアレイまたは各メモリバンクは独立に動作可能で並列動作を行い、
各メモリバンクは、一度に複数のビットを読み出しまたは書き込む動作と、メモリアレイ内のメモリバンクの並列動作を効率よく動作させるための読み出し動作とを実行することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。 - 前記データテーブルにおける固定長データテーブルに格納されている固定長データに対応する検索動作に関係のない静的データと検索動作結果で修正される動的データとを参照するステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。
- 前記修正ステップは、前記比較ステップが出力する結果により前記データテーブルからの出力を修正するステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。
- 前記比較ステップは、指定された方法によって、前記固定長データテーブルに格納されている複数の固定長データを、前記入力された検索すべき固定長データと同時に比較するステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。
- 前記比較ステップに備えられたN*R個のマスク可能なビット比較器と大小比較器は前記固定長データまたはその一部とを比較するため、可変ビット長で再配置可能とする方法を有し、
Nはメモリアレイの数を表わす1以上の整数であり、Rは前記メモリアレイ中のメモリバンクにおいて一度に読み出しまたは書き込み可能なビット数である、請求項20〜請求項23のいずれかに記載の固定長データ検索方法。 - 前記比較ステップは、
前記固定長データテーブルに格納されている複数の固定長データと、前記入力された検索すべき固定長データをビット比較し、比較器の結果をテーブルが持つマスクによりビットごとにマスクし比較結果を得るステップ、
固定長データ固有のマスクデータによりビットごとにマスクし比較結果を得るステップ、
固定長データの固有のその最上位ビットからのビット長だけ使用し比較結果を得るステップ
の少なくともいずれかのステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。 - 前記比較ステップは、前記入力に付けられた名称を伴って比較結果を送り返すステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。
- 前記出力ステップは、前記比較ステップによって得られた比較結果と、修正ステップによって得られたユーザーデータとを同期させて出力するステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。
- 前記入力固定長データ処理ステップは、前記入力された検索すべき固定長データのオーバーフローを防ぐため、その入力に付けられた名称を命令スロットとして処理するステップを有することを特徴とする請求項20〜請求項23のいずれかに記載の固定長データ検索方法。
- 請求項1記載に固定長データ検索装置と、
入力されたテーブル変更命令を実行するテーブル管理制御手段と、
前記テーブル管理制御手段がテーブル変更命令を実行するとき、参照される空家テーブルを格納する空家テーブルメモリと、
前記テーブル管理制御手段がテーブル変更命令を実行するとき、参照される空室テーブルを格納する空室テーブルメモリと、
前記テーブル管理制御手段がテーブル変更命令を実行するとき、参照される室管理テーブルを格納する室管理テーブルメモリと、
前記テーブル管理制御手段がテーブル変更命令を実行するとき、参照される構造管理テーブルを格納する構造管理テーブルメモリと、
前記テーブル管理制御手段がテーブル変更命令を実行後、実行結果を出力する管理出力手段と
を備える固定長データ検索および管理装置。 - 前記テーブル管理制御手段は、
前記テーブル変更命令の一つである前記固定長データと前記固定長データに関するデータとを前記データベースに加える手段、
前記固定長データに関するデータを前記データベースに加える前記テーブル変更命令が前記室の不足のために実行不可能の場合、ポインタテーブルと固定長データテーブルからなる検索テーブルの構造の変更であって検索方法の変更を伴う変更を行う手段、
前記テーブル変更命令の一つである前記固定長データと前記固定長データとに関するデータを前記データベースから削除する手段、
前記固定長データと前記固定長データに関するデータとを前記データベースから削除する前記テーブル変更命令が実行された後、より効率的な検索方法が実現できる場合に、検索テーブル(ポインタテーブルと固定長データテーブル)の構造の変更であって検索方法の変更を伴う変更を行う手段、
の少なくともいずれかの手段を備えることを特徴とする請求項44に記載の固定長データ検索および管理装置。 - 前記テーブル管理制御手段は、前記テーブル変更命令が実行された後、命令実行結果を送り返す手段を備えることを特徴とする請求項44に記載の固定長データ検索および管理装置。
- 前記テーブル管理制御手段は、
前記テーブル変更命令を用いずに、前記固定長データと前記固定長データに関するデータとを前記データベースから削除する手段、
前記テーブル変更命令を用いずに、前記固定長データと前記固定長データに関するデータとを前記データベースから削除した後、より効率的な検索方法が実現できる場合に、ポインタテーブルと固定長データテーブルからなる検索テーブルの構造の変更であって検索方法の変更を伴う変更を行う手段
の少なくともいずれかの手段を備えることを特徴とする請求項44に記載の固定長データ検索および管理装置。 - 前記テーブル管理制御手段は、前記テーブル変更命令を用いずに、前記固定長データと前記固定長データに関するデータとを前記データベースから削除した後、削除された前記固定長データと前記固定長データに関するデータを送り返す手段を備えることを特徴とする請求項44に記載の固定長データ検索および管理装置。
- 前記空家テーブルは、前記固定長データテーブルにおける一つのアドレスで読み出されるまたは書き込まれる単位を家と定義すると、使用されていない家すなわち空家を管理する手段を備えることを特徴とする請求項44に記載の固定長データ検索および管理装置。
- 前記空室テーブルは、前記家における前記固定長データと、検索に必要な固定長データに対応するデータまたは検索に必要なデータの少なくともいずれかのデータとを保持する単位を室と定義すると、使用されていない室すなわち空室を管理する手段を備えることを特徴とする請求項44に記載の固定長データ検索および管理装置。
- 前記家におけるそれに属する各室は、前記ポインタテーブルの異なる出力でアドレス指定可能であり、前記ポインタテーブルの一つの出力に関連する1以上の前記固定長データと検索に必要な固定長データとに対応するデータ、または、検索に必要なデータを団体と定義すると、前記室管理テーブルが前記家に格納される前記団体を管理する手段を備えることを特徴とする請求項44に記載の固定長データ検索および管理装置。
- 前記室管理テーブルは、前記家に格納されるべき前記団体が不在で、前記空室テーブルに登録されているとき、前記団体を管理する手段を備えており、
前記家に格納される前記団体を分類して管理する複数のビットを備えることを特徴とする請求項44に記載の固定長データ検索および管理装置。 - 前記構造管理テーブルは、
前記検索テーブルの検索手順の構造を管理する手段、
前記検索テーブルの検索手順の構造を変更する場合、変更を局所的に行う手段、
の少なくともいずれかの手段を備えることを特徴とする請求項44に記載の固定長データ検索および管理装置。 - コンピュータを、請求項1〜請求項19、請求項44〜請求項53のいずれかに記載の装置として機能させることを特徴とするプログラム。
- 請求項54に記載のプログラムを記録したコンピュータ読取可能な記録媒体。
- 請求項20〜請求項23のいずれかに記載の固定長データ検索方法の各ステップと、
入力されたテーブル変更命令を実行するテーブル管理制御ステップと、
前記テーブル管理制御ステップがテーブル変更命令を実行するとき、前記空家テーブルを参照または変更するステップと、
前記テーブル管理制御ステップがテーブル変更命令を実行するとき、前記空室テーブルを参照または変更するステップと、
前記テーブル管理制御ステップがテーブル変更命令を実行するとき、前記室管理テーブルを参照または変更するステップと、
前記テーブル管理制御ステップがテーブル変更命令を実行するとき、前記構造管理テーブルを参照または変更するステップと
を有する固定長データ検索および管理方法。 - 前記テーブル管理制御ステップは、
前記テーブル変更命令の一つである前記固定長データと前記固定長データに関するデータとを前記データベースに加えるステップ、
前記固定長データと前記固定長データに関するデータとを前記データベースに加える前記テーブル変更命令が前記室の不足のために実行不可能である場合に、検索方法の変更を伴って検索テーブル構造を変更するステップ、
前記テーブル変更命令の一つである前記固定長データと前記固定長データに関するデータとを前記データベースから削除するステップ、
前記固定長データと前記固定長データに関するデータとを前記データベースから削除する前記テーブル変更命令が実行された後、より効率的な検索方法が実現できる場合に、検索方法の変更を伴って検索テーブル構造を変更するステップ
の少なくともいずれかのステップを有することを特徴とする請求項56に記載の固定長データ検索および管理方法。 - 前記テーブル管理制御ステップは、前記テーブル変更命令が実行された後、命令実行結果を送り返すステップを有することを特徴とする請求項56に記載の固定長データ検索および管理方法。
- 前記テーブル管理制御ステップは、
前記テーブル変更命令を用いずに、前記固定長データと前記固定長データに関するデータとを前記データベースから削除するステップと、
前記固定長データと前記固定長データに関するデータとを前記データベースから削除した後、より効率的な検索方法が実現できる場合に、検索方法の変更を伴って検索テーブル構造を変更するステップと
を有することを特徴とする請求項56に記載の固定長データ検索および管理方法。 - 前記テーブル管理制御ステップは、前記テーブル変更命令を用いずに、前記固定長データと前記固定長データに関するデータとを前記データベースから削除した後、削除された前記固定長データと前記固定長データに関するデータを送り返すステップを有することを特徴とする請求項56に記載の固定長データ検索および管理方法。
- 前記空家テーブルの前記固定長データテーブルにおける空家を管理するステップを有することを特徴とする請求項56に記載の固定長データ検索および管理方法。
- 前記空室テーブルの前記家における空室を管理するステップを有することを特徴とする請求項56に記載の固定長データ検索および管理方法。
- 前記室管理テーブルにおける前記家に格納される前記団体を管理するステップ、
前記家に格納されるべき前記団体が不在で前記空室テーブルに登録されているとき、前記団体を管理するステップ、
前記家に格納される前記団体の分類・管理を複数のビットで行うステップ
の少なくともいずれかのステップを有することを特徴とする請求項56に記載の固定長データ検索および管理方法。 - 前記構造管理テーブルにおける前記検索テーブルの検索手順の構造を管理するステップと、
前記構造管理テーブルにおける前記検索テーブルの検索手順の構造を変更する場合に、変更を局所的に行うステップと
を備えることを特徴とする請求項56に記載の固定長データ検索および管理方法。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2004/004641 WO2005104456A1 (ja) | 2004-03-31 | 2004-03-31 | 固定長データの検索装置および検索管理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2005104456A1 true JPWO2005104456A1 (ja) | 2008-03-13 |
JP4435156B2 JP4435156B2 (ja) | 2010-03-17 |
Family
ID=35197345
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2006512434A Expired - Fee Related JP4435156B2 (ja) | 2004-03-31 | 2004-03-31 | 固定長データの検索装置および検索管理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7565343B2 (ja) |
JP (1) | JP4435156B2 (ja) |
CN (1) | CN1954560B (ja) |
WO (1) | WO2005104456A1 (ja) |
Families Citing this family (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7304996B1 (en) | 2004-03-30 | 2007-12-04 | Extreme Networks, Inc. | System and method for assembling a data packet |
US7822032B1 (en) * | 2004-03-30 | 2010-10-26 | Extreme Networks, Inc. | Data structures for supporting packet data modification operations |
CN1954560B (zh) | 2004-03-31 | 2011-06-15 | Ipt株式会社 | 固定长数据的检索装置及检索管理方法 |
US7132963B2 (en) * | 2004-09-13 | 2006-11-07 | Ati Technologies Inc. | Methods and apparatus for processing variable length coded data |
US7594098B2 (en) * | 2005-07-01 | 2009-09-22 | Stmicroelectronics, Sa | Processes and devices for compression and decompression of executable code by a microprocessor with RISC architecture and related system |
KR20080036946A (ko) * | 2005-08-29 | 2008-04-29 | 소니 가부시끼 가이샤 | 기록 장치, 기록 방법, 재생 장치, 재생 방법, 프로그램 및기록 매체 |
US7756828B2 (en) * | 2006-02-28 | 2010-07-13 | Microsoft Corporation | Configuration management database state model |
US7852851B2 (en) * | 2006-11-10 | 2010-12-14 | Broadcom Corporation | Method and system for hash table based routing via a prefix transformation |
CN101149738B (zh) * | 2007-06-06 | 2011-09-21 | 中兴通讯股份有限公司 | 一种利用定长字段优化迭代查询的方法 |
JP5048072B2 (ja) * | 2007-09-07 | 2012-10-17 | ハミングヘッズ株式会社 | 情報検索システム、情報検索方法及びプログラム |
JP4995125B2 (ja) * | 2008-03-12 | 2012-08-08 | 株式会社アイピーティ | 固定長データの検索方法 |
US8139583B1 (en) | 2008-09-30 | 2012-03-20 | Extreme Networks, Inc. | Command selection in a packet forwarding device |
US8312066B2 (en) * | 2010-11-30 | 2012-11-13 | Telefonaktiebolaget L M Ericsson (Publ) | Hash collision resolution with key compression in a MAC forwarding data structure |
JP5652363B2 (ja) * | 2011-03-28 | 2015-01-14 | ソニー株式会社 | 暗号処理装置、および暗号処理方法、並びにプログラム |
US9015494B2 (en) | 2011-07-11 | 2015-04-21 | Salesforce.Com, Inc. | Methods and apparatus for digital steganography |
EP2759104B1 (en) * | 2011-09-21 | 2017-06-21 | Nec Corporation | Communication apparatus, communication system, communication control method, and program |
CN102902801B (zh) * | 2012-10-12 | 2015-06-24 | 深圳友讯达科技股份有限公司 | 一种电能表地址检索方法、相关设备及系统 |
US9853889B2 (en) | 2013-05-20 | 2017-12-26 | Brocade Communications Systems, Inc. | Broadcast and multicast traffic reduction in stacking systems |
US9313102B2 (en) | 2013-05-20 | 2016-04-12 | Brocade Communications Systems, Inc. | Configuration validation in a mixed node topology |
US10284499B2 (en) | 2013-08-22 | 2019-05-07 | Arris Enterprises Llc | Dedicated control path architecture for systems of devices |
US9185049B2 (en) | 2013-10-31 | 2015-11-10 | Brocade Communications Systems, Inc. | Techniques for simplifying stacking trunk creation and management |
EP3063670A2 (en) | 2013-10-31 | 2016-09-07 | Isis Innovation Limited | Parallel materialisation of a set of logical rules on a logical database |
US9577932B2 (en) * | 2014-02-12 | 2017-02-21 | Brocade Communications Systems, Inc. | Techniques for managing ternary content-addressable memory (TCAM) resources in heterogeneous systems |
US9692695B2 (en) | 2014-03-27 | 2017-06-27 | Brocade Communications Systems, Inc. | Techniques for aggregating hardware routing resources in a multi-packet processor networking system |
US9692652B2 (en) | 2014-04-03 | 2017-06-27 | Brocade Communications Systems, Inc. | Framework for reliably communicating port information in a system of devices |
US10091059B2 (en) | 2014-12-16 | 2018-10-02 | Arris Enterprises Llc | Handling connections between network devices that support multiple port communication modes |
CN105142154A (zh) * | 2015-09-15 | 2015-12-09 | 合肥工业大学 | 基于干扰管理的井下机车无线通信方法 |
CN106199122B (zh) * | 2016-06-30 | 2019-01-18 | 广东雅达电子股份有限公司 | 一种电量数据组合方法 |
US11270339B1 (en) * | 2018-08-21 | 2022-03-08 | Amdocs Development Limited | System, method, and computer program for using full and partial dynamic customer criteria sets for targeting promotions |
US11163761B2 (en) | 2020-03-20 | 2021-11-02 | International Business Machines Corporation | Vector embedding models for relational tables with null or equivalent values |
CN111599389B (zh) * | 2020-05-13 | 2022-09-06 | 芯颖科技有限公司 | 数据存取方法、数据存取电路、芯片和电子设备 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
USRE26429E (en) * | 1964-12-08 | 1968-08-06 | Information retrieval system and method | |
US4558302A (en) * | 1983-06-20 | 1985-12-10 | Sperry Corporation | High speed data compression and decompression apparatus and method |
JP3294326B2 (ja) * | 1992-07-09 | 2002-06-24 | 株式会社日立製作所 | データ処理方法および装置 |
JPH0974419A (ja) * | 1995-09-06 | 1997-03-18 | Fujitsu Ltd | 複数データユニットを用いてメッセージを伝送する通信システムにおける同時発生メッセージ制御方式 |
US6058392A (en) * | 1996-11-18 | 2000-05-02 | Wesley C. Sampson Revocable Trust | Method for the organizational indexing, storage, and retrieval of data according to data pattern signatures |
JP3250544B2 (ja) | 1999-04-16 | 2002-01-28 | 日本電気株式会社 | 転送先検索方法、転送先検索装置、検索テーブル記録媒体及び検索プログラム記録媒体 |
EP1175756B1 (en) | 1999-05-12 | 2005-12-07 | International Business Machines Corporation | Longest matching prefix lookup |
US6678678B2 (en) * | 2000-03-09 | 2004-01-13 | Braodcom Corporation | Method and apparatus for high speed table search |
CN1305166A (zh) * | 2000-12-15 | 2001-07-25 | 新华书店总店 | 信息检索系统及信息检索方法 |
US7178100B2 (en) * | 2000-12-15 | 2007-02-13 | Call Charles G | Methods and apparatus for storing and manipulating variable length and fixed length data elements as a sequence of fixed length integers |
JP2002305539A (ja) | 2001-04-03 | 2002-10-18 | Nippon Telegr & Teleph Corp <Ntt> | 連想メモリおよび経路表検索方法 |
JP2002334114A (ja) * | 2001-05-10 | 2002-11-22 | Allied Tereshisu Kk | テーブル管理方法及び装置 |
US7054855B2 (en) * | 2001-07-03 | 2006-05-30 | International Business Machines Corporation | Method and system for performing a pattern match search for text strings |
JP3639553B2 (ja) | 2001-10-23 | 2005-04-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | ルーティング処理装置およびルーティング方法 |
US6892176B2 (en) * | 2001-12-18 | 2005-05-10 | Matsushita Electric Industrial Co., Ltd. | Hash function based transcription database |
JP2003256265A (ja) | 2002-02-18 | 2003-09-10 | Internatl Business Mach Corp <Ibm> | 検索メモリ、メモリ検索用コントローラ、メモリ検索方法 |
US7085271B2 (en) * | 2002-03-14 | 2006-08-01 | Hewlett-Packard Development Company, L.P. | Method and system for performing flow based hash transformation to generate hash pointers for a network device |
JP3784054B2 (ja) | 2002-06-10 | 2006-06-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | Macアドレスを並べ替えさせる方法および記録媒体 |
JP4014155B2 (ja) | 2003-01-27 | 2007-11-28 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 情報処理装置及び方法、プログラム、データ構造、並びにコンピュータ読取り可能な記録媒体 |
JP3823089B2 (ja) | 2003-01-27 | 2006-09-20 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 固定長データ検索装置、及び固定長データ検索方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体 |
JP3813136B2 (ja) | 2003-04-25 | 2006-08-23 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造 |
CN1954560B (zh) | 2004-03-31 | 2011-06-15 | Ipt株式会社 | 固定长数据的检索装置及检索管理方法 |
-
2004
- 2004-03-31 CN CN200480042951XA patent/CN1954560B/zh not_active Expired - Fee Related
- 2004-03-31 WO PCT/JP2004/004641 patent/WO2005104456A1/ja active Application Filing
- 2004-03-31 JP JP2006512434A patent/JP4435156B2/ja not_active Expired - Fee Related
- 2004-03-31 US US10/599,589 patent/US7565343B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP4435156B2 (ja) | 2010-03-17 |
US20070194957A1 (en) | 2007-08-23 |
CN1954560A (zh) | 2007-04-25 |
WO2005104456A1 (ja) | 2005-11-03 |
CN1954560B (zh) | 2011-06-15 |
US7565343B2 (en) | 2009-07-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4435156B2 (ja) | 固定長データの検索装置および検索管理方法 | |
US8255398B2 (en) | Compression of sorted value indexes using common prefixes | |
JP4995125B2 (ja) | 固定長データの検索方法 | |
US9871727B2 (en) | Routing lookup method and device and method for constructing B-tree structure | |
US7805427B1 (en) | Integrated search engine devices that support multi-way search trees having multi-column nodes | |
JP2002501256A (ja) | データベース装置 | |
US8086641B1 (en) | Integrated search engine devices that utilize SPM-linked bit maps to reduce handle memory duplication and methods of operating same | |
WO2018205151A1 (zh) | 数据更新方法和存储装置 | |
CN103890856A (zh) | 支持内存储数据结构的可移位存储器 | |
JP2000324172A (ja) | アドレスに関するプレフィクスの格納方法 | |
US20100161668A1 (en) | Method and system for index serialization | |
CN115114294A (zh) | 数据库存储模式的自适应方法、装置、计算机设备 | |
Felner et al. | Compressing pattern databases | |
CN102984071B (zh) | 分段地址路由的路由表组织方法及查找路由的方法 | |
JP2008065716A (ja) | データ管理装置、データ管理方法及びデータ管理プログラム | |
KR100921683B1 (ko) | 키-값 데이터 모델을 위한 메모리 페이지 내 데이터저장방법 | |
JP2001331353A (ja) | データベースへのデータ入力システム及びそのプログラムを記憶した記録媒体 | |
CN112416933B (zh) | 一种基于片内片外内存的高性能散列表实现方法 | |
US20040047357A1 (en) | Method for accessing a memory unit in which sequences of notes are stored, corresponding memory unit and corresponding program | |
JPH0225946A (ja) | ファイル管理装置 | |
CN112269784B (zh) | 一种基于硬件实现的哈希表装置以及插入、查询和删除方法 | |
JP2615046B2 (ja) | レコード追加処理方法 | |
CN116401416A (zh) | 支持无锁化并发访问的持久可变基数树访问系统 | |
CN117349477A (zh) | 一种基于持久化内存的图数据异构分层存储结构及其方法 | |
CN118069685A (zh) | Hudi数据湖索引的创建方法、使用方法及相关产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090717 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090909 |
|
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: 20091208 |
|
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: 20091222 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4435156 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130108 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20160108 Year of fee payment: 6 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |