(57)【特許請求の範囲】
【請求項１】
入力された検索されるべき固定長データに対して、指定された処理を行って出力する入力固定長データ処理手段と、
前記入力固定長データ処理手段またはポインタ処理手段からの出力値をインデックスとして保持するポインタテーブルを格納するポインタテーブルメモリと、
前記ポインタテーブルメモリから出力されるポインタ値と前記入力固定長データ処理手段の出力と固定長データテーブルメモリの出力値とを用いて指定された処理を行う前記ポインタ処理手段と、
検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、前記ポインタ処理手段の出力によりアドレス指定される多数の固定長データとを保持する前記固定長データテーブルを格納している固定長データテーブルメモリであって、前記固定長データテーブルは、前記ポインタ処理手段が出力する一つのメモリアドレスに対する複数の要素とエントリー制御データとを読み出す手段を備え、前記複数の要素は、固定長データとその固定長データに対応するデータであり、前記一つのメモリアドレスは前記ポインタ処理手段からの出力に含まれている、固定長データテーブルメモリと、
前記固定長データテーブルに格納されていて前記一つのメモリアドレスを参照することによって読み出される複数の固定長データと、前記入力された検索すべき固定長データとを指定された方法によって比較し、該比較による比較結果を出力する比較手段と、
前記固定長データテーブルに格納されている固定長データに対応する種々のデータを保持するデータテーブルを格納するデータテーブルメモリと、
前記データテーブルに格納されており、前記比較結果において合致した固定長データに対応するデータを読み出して修正する修正手段と、
前記比較手段および前記修正手段から出力された検索結果と固定長データ名と他のデータとを出力する出力手段と
を備える固定長データ検索装置。
【請求項２】
前記入力固定長データ処理手段は、前記入力された検索すべき固定長データの検索処理を行うために、入力に付けられた名称または検索番号を検索処理スロットとして出力する手段を備え、
前記入力固定長データ処理手段から出力された検索番号が、前記固定長データ検索装置の各メモリおよび各手段において、多数の検索処理を並列に処理するために使用されることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項３】
前記入力された検索すべき固定長データを処理する入力固定長データ処理手段は、
入力された固定長データの全てまたは一部を用い、指定されたハッシュ関数によりハッシュ値を計算し、該ハッシュ値を出力する手段、または、入力された固定長データの全てまたは一部を出力する手段の少なくともいずれかの手段を備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項４】
前記ポインタテーブルは、
前記ポインタテーブルからの入力を用いる手段におけるアドレス発生手段に必要なデータ、
前記ポインタテーブルからの入力を用いる手段における処理手順を示す複数のビット、
前記固定長データテーブルを格納する固定長データテーブルメモリを構成する複数メモリアレイのうち、関連するメモリアレイだけを読み出す手順を示す複数のビット、
前記比較手段において入力固定長データとの比較を行うことなく検索が可能である前記固定長データテーブルにおける固定長データについて、アドレスを示す複数のビット
のデータまたはビットのうち少なくともいずれかを備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項５】
前記ポインタ処理手段は、
前記ポインタテーブルの出力または固定長データテーブルの出力の少なくともいずれかの出力に基づいて、
前記固定長データテーブルのアドレス、
前記固定長データテーブルと前記データテーブルを含むデータベースに作成された数値比較テーブルのアドレス、
２次ポインタテーブルのアドレス、
前記データベースに作成されたローカルテーブルのアドレス
の少なくともいずれかのアドレスを発生する手段を備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項６】
前記要素は、固定長データと、固定長データに固有の固定長データ名と、要素制御データとを備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項７】
前記要素は、プレフィックスマスク手段に使用するプレフィックスマスク、または、ローカルマスク手段に使用するローカルマスクのいずれかのマスクを更に備え、
前記プレフィックスマスク手段は、前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索すべき固定長データとを比較器によりビット比較し、該比較器の出力を固定長データの固有のその最上位ビットからのビット長だけ使用して比較結果を得る前記比較手段における手段であり、前記ローカルマスク手段は、前記固定長データテーブルに格納されている複数の固定長データと、前記入力された検索すべき固定長データとを比較器によりビット比較し、該比較器の出力を固定長データ固有のマスクデータによりマスクして比較結果を得る手段である、請求項６に記載の固定長データ検索装置。
【請求項８】
前記要素制御データは、前記固定長データテーブルの要素を自動的に削除する手段を制御する複数のビットを備えることを特徴とする請求項６に記載の固定長データ検索装置。
【請求項９】
前記エントリー制御データは、前記固定長データテーブルを読み出した出力への処理内容を示す複数のビットを備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項１０】
前記固定長データテーブルは、
前記固定長データテーブルを読み出すアドレス、
前記２次ポインタテーブルを読み出すアドレス、
その内部のローカルテーブルを読み出すアドレス、
その内部の数値比較テーブルを読み出すアドレス
の少なくともいずれかのアドレスをエントリー制御データとして備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項１１】
前記固定長データテーブルは、その内部にローカルテーブルと数値比較テーブルを構築可能な構成を備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項１２】
前記ポインタテーブルメモリ、前記固定長データテーブルメモリ、および前記データテーブルメモリは、それぞれＱ、Ｎ、およびＵ（Ｑ、Ｎ、およびＵは１以上の整数）個のメモリアレイを有し、各メモリアレイは、それぞれＰ、Ｍ、およびＶ（Ｐ、Ｍ、およびＶは１以上の整数）個のメモリバンクを有し、
前記ポインタテーブルメモリ、前記固定長データテーブルメモリ、前記データテーブルメモリの少なくともいずれかのメモリにおける各メモリアレイおよび各メモリバンクは独立に動作可能で並列動作を行い、各メモリバンクは、一度に複数のビットを読み出しまたは書き込み可能な手段、または、メモリアレイ内のメモリバンクの並列動作を効率よく動作させるための読み出し手段の少なくともいずれかの手段を備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項１３】
前記データテーブルは、固定長データテーブルに格納されている固定長データに対応する検索動作に関係のない静的データと検索動作結果で修正される動的データとを保持する手段を備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項１４】
前記修正手段は、前記比較手段が出力する結果により前記データテーブルから読み出す手段と、読み出したデータを修正して前記データテーブルに書き込む手段とを備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項１５】
前記比較手段は、
指定された方法によって、前記固定長データテーブルに格納されている複数の固定長データを、前記入力された検索すべき固定長データと同時に比較し、比較結果を出力するためにＮ＊Ｒ（＊は掛け算を示す演算記号）個のマスク可能なビット比較器と大小比較器と、
Ｎ＊Ｒ個のマスク可能なビット比較器と大小比較器は、前記固定長データまたはその一部と比較するため、可変ビット長で再配置可能な手段と
を備え、Ｎはメモリアレイの数を表わす１以上の整数であり、Ｒは前記メモリアレイ中のメモリバンクにおいて一度に読み出しまたは書き込み可能なビット数である、請求項１に記載の固定長データ検索装置。
【請求項１６】
前記比較手段は、
前記固定長データテーブルに格納されている複数の固定長データと前記入力された検索すべき固定長データとを比較器によりビット比較し、該比較器の出力をビットごとにマスクし比較結果を得るグローバルマスク手段、
該比較器の出力を固定長データ固有のマスクデータによりマスクして比較結果を得るローカルマスク手段、
該比較器の出力を固定長データの固有のその最上位ビットからのビット長だけ使用して比較結果を得るプリフィックスマスク手段
の少なくともいずれかの手段を備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項１７】
前記比較手段は、前記入力に付けられた名称または検索番号を伴って比較結果を出力する手段を備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項１８】
前記出力手段は、
前記比較手段から受け取った比較結果と修正手段から受け取ったユーザーデータとを同期させて出力する手段、
前記入力された検索すべき固定長データのオーバーフローを防ぐため、その入力に付けられた名称または検索番号を固定長データ検索装置の 命令スロットとして出力する手段
の少なくともいずれかの手段を備えることを特徴とする請求項１に記載の固定長データ検索装置。
【請求項１９】
請求項１に記載の固定長データ検索装置と、
入力されたテーブル変更命令を実行するテーブル管理制御手段と、
前記テーブル管理制御手段がテーブル変更命令を実行するとき、参照される空家テーブルを格納する空家テーブルメモリと、
前記テーブル管理制御手段がテーブル変更命令を実行するとき、参照される空室テーブルを格納する空室テーブルメモリと、
前記テーブル管理制御手段がテーブル変更命令を実行するとき、参照される室管理テーブルを格納する室管理テーブルメモリと、
前記テーブル管理制御手段がテーブル変更命令を実行するとき、参照される構造管理テーブルを格納する構造管理テーブルメモリと、
前記テーブル管理制御手段がテーブル変更命令を実行後、実行結果を出力する管理出力手段と
を備える固定長データ検索および管理装置。
【請求項２０】
入力のそれぞれに付けられた名称または検索番号を伴って入力された検索すべき固定長データに対して、指定された処理を行って出力する入力固定長データ処理ステップと、
前記入力固定長データ処理ステップの出力値をインデックスとしてポインタテーブルからポインタ値を読み出すステップと、
前記ポインタテーブルメモリから出力された前記ポインタ値と入力固定長データ処理ステップの出力値とを用いて、指定された処理を行うポインタ処理ステップと、
検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、前記ポインタ処理ステップの出力によりアドレス指定される多数の固定長データとを保持する固定長データテーブルを読み出すステップであって、前記固定長データテーブルは、一つのメモリアドレスによって参照される複数の要素とエントリー制御データを格納しており、前記複数の要素は固定長データとその固定長データに対応するデータであり、前記ポインタ処理ステップの出力に含まれる一つのメモリアドレスを用いて前記複数の要素とエントリー制御データを読み出すステップと、
指定された方法によって、前記固定長データテーブルに格納されていて前記一つのメモリアドレスを参照することによって読み出される複数の固定長データを、前記入力された検索すべき固定長データと同時に比較し、比較結果を出力する比較ステップと、
固定長データテーブルに格納されており、固定長データに対応する種々のデータを保持するデータテーブルを、前記比較結果に基づいて読み出すステップと、
比較結果により読み出されたデータを修正する修正ステップと、
前記比較ステップおよび修正ステップから出力された検索結果と固定長データ名と他のデータとを出力する出力ステップと
を有する固定長データ検索方法。
【請求項２１】
入力のそれぞれに付けられた名称または検索番号を伴って入力された検索すべき固定長データに対して、指定された処理を行って出力する入力固定長データ処理ステップと、
前記入力固定長データ処理ステップの出力値をインデックスとして、ポインタテーブルから第１のポインタ値を読み出すステップと、
前記第１のポインタ値と入力固定長データ処理ステップの出力とを用いて、指定された処理を行う第１のポインタ処理ステップと、
前記第１のポインタを用いるポインタ処理ステップの出力値をインデックスとして前記ポインタテーブルから第２のポインタ値を読み出すステップと、
前記第２のポインタ値と入力された固定長データとを用い、指定された処理を行う第２のポインタ処理ステップと、
検索に必要な固定長データに対応するデータまたは検索に必要なデータの少なくともいずれかのデータと、前記第２のポインタ処理ステップの出力によりアドレス指定される多数の固定長データとを保持する固定長データテーブルを読み出すステップであって、前記固定長データテーブルは、一つのメモリアドレスによって参照される複数の要素とエントリー制御データを格納しており、前記複数の要素は固定長データとその固定長データに対応するデータであり、前記第２のポインタ処理ステップの出力に含まれる一つのメモリアドレスを用いて前記複数の要素とエントリー制御データを読み出すステップと、
前記固定長データテーブルに格納されていて前記一つのメモリアドレスを参照することによって読み出される複数の固定長データと、前記入力された検索すべき固定長データとを指定された方法によって比較し、該比較による比較結果を出力する比較ステップと、
前記固定長データテーブルに格納されている固定長データに対応する種々のデータを保持するデータテーブルを、前記比較結果に基づいて読み出すステップと、
比較結果に基づいて読み出されたデータを修正する修正ステップと、
前記比較ステップと修正ステップから出力された、検索結果と固定長データ名と他のデータを出力する出力ステップと
を有する固定長データ検索方法。
【請求項２２】
入力のそれぞれに付けられた名称または検索番号を伴って入力された検索すべき固定長データに対して、指定された処理を行って出力する入力固定長データ処理ステップと、
前記入力固定長データ処理ポインタテーブルインデックスとしてポインタテーブルからポインタ値を読み出すステップと、
前記ポインタテーブルメモリから出力された前記ポインタ値と入力固定長データ処理ステップの出力値とを用いて、指定された処理を行う第１のポインタ処理ステップと、
検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、前記ポインタ処理ステップの出力によりアドレス指定される多数の固定長データとを保持する固定長データテーブルを読み出す、第１の固定長データテーブル読み出しステップと、
前記固定長データテーブルからの出力を用い、指定された処理を行う第２のポインタ処理ステップと、
前記固定長データテーブルを読み出す第２の固定長データテーブル読み出しステップであって、前記固定長データテーブルは、一つのメモリアドレスによって参照される複数の要素とエントリー制御データを格納しており、前記複数の要素は固定長データとその固定長データに対応するデータであり、前記第２のポインタ処理ステップの出力に含まれる一つのメモリアドレスを用いて前記複数の要素とエントリー制御データを読み出す、第２の固定長データテーブル読み出しステップと、
指定された方法によって、前記固定長データテーブルに格納されていて前記一つのメモリアドレスを参照することによって読み出される複数の固定長データを、前記入力された検索すべき固定長データと同時に比較し、比較結果を出力する比較ステップと、
固定長データテーブルに格納されており、固定長データに対応する種々のデータを保持するデータテーブルを、前記比較結果に基づいて読み出すステップと、
比較結果により読み出されたデータを修正する修正ステップと、
前記比較ステップおよび修正ステップから出力された検索結果と固定長データ名と他のデータとを出力する出力ステップと
を有する固定長データ検索方法。
【請求項２３】
入力のそれぞれに付けられた名称または検索番号を伴って入力された検索すべき固定長データに対して、指定された処理を行って出力する入力固定長データ処理ステップと、
前記入力固定長データ処理ステップの出力値をインデックスとして、ポインタテーブルから第１のポインタ値を読み出すステップと、
前記第１のポインタ値と入力固定長データ処理ステップの出力とを用いて、指定された処理を行う第１のポインタ処理ステップと、
前記第１のポインタ値を用いるポインタ処理ステップの出力値をインデックスとして前記ポインタテーブルから第２のポインタ値を読み出すステップと、
前記第２のポインタ値と入力された固定長データとを用いて、指定された処理を行う第２のポインタ処理ステップと、
検索に必要な固定長データに対応するデータ、または、検索に必要なデータの少なくともいずれかのデータと、前記第２のポインタ処理ステップの出力によりアドレス指定される多数の固定長データとを保持する固定長データテーブルを読み出す、第１の固定長データテーブル読み出しステップと、
前記固定長データテーブルからの出力を用い、指定された処理を行う第３のポインタ処理ステップと、
前記固定長データテーブルを読み出す第２の固定長データテーブル読み出しステップであって、前記固定長データテーブルは、一つのメモリアドレスによって参照される複数の要素とエントリー制御データを格納しており、前記複数の要素は固定長データとその固定長データに対応するデータであり、前記第２のポインタ処理ステップの出力に含まれる一つのメモリアドレスを用いて前記複数の要素とエントリー制御データを読み出す、第２の固定長データテーブル読み出しステップと、
指定された方法によって、前記固定長データテーブルに格納されていて前記一つのメモリアドレスを参照することによって読み出される複数の固定長データを、前記入力された検索すべき固定長データと同時に比較し、比較結果を出力する比較ステップと、
固定長データテーブルに格納されており、固定長データに対応する種々のデータを保持するデータテーブルを、前記比較結果に基づいて読み出すステップと、
比較結果により読み出されたデータを修正する修正ステップと、
前記比較ステップおよび修正ステップから出力された検索結果と固定長データ名と他のデータを出力する出力ステップと
を有する固定長データ検索方法。
【請求項２４】
コンピュータを、請求項１〜請求項１９のいずれかに記載の装置として機能させることを特徴とするプログラム。
【請求項２５】
請求項２４に記載のプログラムを記録したコンピュータ読取可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、データの検索装置、検索方法に関する。特に、データのビット長が一定である固定長データの集合であるデータベースから、指定された検索ルールの下で一致するデータを高速に検索する機能を備える制御装置、制御方法、制御プログラム、制御用データ構造、並びにコンピュータ読取可能な記録媒体に関し、さらに、検索機能を考慮したデータベースを効率よく構築・管理する機能を備える制御装置、制御方法、制御プログラム、制御用データ構造、並びにコンピュータ読取可能な記録媒体に関する。さらに詳しくは、ネットワーク間中継装置における宛先ルートの高速検索およびフィルター機能に必要な高速検索を実現するための通信制御装置、通信制御方法、通信制御プログラム、通信制御用データ構造、並びに通信コンピュータ読取可能な記録媒体に関する。
【背景技術】
【０００２】
データベースから希望する固定長データを高速で検索する要求は各種分野において存在する。特にネットワーク内中継装置およびネットワーク間中継装置に使用される中継先判定および中継判定のためのデータベースにおいては、異なる検索ルールを用いる場合において、高速な検索、効率的なデータベースの構築・管理等、および、検索後のデータベースの読み出し・修正等に対して、さらなる高度な要求が存在する。
【０００３】
高速にデータベースを検索する従来技術がＭＡＣ（Media Access Control）アドレステーブルの検索に関して用いられている。それは、ＭＡＣアドレステーブルを高速に検索する従来技術としてハッシュ関数を適用する方法、ＣＡＭ（Content Addressable Memory）を使用する方法、およびその他の方法、例えば、二分岐検索アルゴリズムを適用する方法等である。ＭＡＣアドレステーブルが数十万個以上のＭＡＣアドレスにより構築された場合には、以下のような問題点を有する。
【０００４】
データベースから希望する固定長データを検索する場合において、希望する固定長データがデータベース内の固定長データと完全に合致する検索法が知られている。実際には、その他の検索ルールによる検索も多く実現・使用されている。例えばネットワーク間中継装置に使用されるルートテーブルの中から希望するＩＰ（Internet Protocol）アドレスを検索する場合、ＬＰＭ（Longest Prefix Match）法に基づく検索が必要である。ＩＰアドレスはネットワークアドレス（Prefixまたはプレフィックスとも呼ばれる）とホストアドレスにより構成される。プレフィックスは可変長であり、集約(アグリゲート)される。集約とはプレフィックスの上位ビットが共通で同じ宛先を持つ複数のプレフィックスを１つのプレフィックスとして代表させることである。代表するプレフィックスは共通の上位ビットで表される。この結果、集約されたＩＰアドレスを含むルートテーブルを検索すると、複数のＩＰアドレスが合致することが起きる。ＬＰＭ法は合致した複数のＩＰアドレスの中で最も長いプリフィックスを検索結果とする検索方法である。ＬＰＭ法に基づく高速検索を実現する従来技術はＴＣＡＭ（Ternary Content Addressable Memory）である。高速検索は実現可能であるが前述のＣＡＭと同じ問題を持つ。すなわちＴＣＡＭはその回路構造からして大規模(大容量)なＴＣＡＭが製造しにくく、大量の固定長データを保持することができない。
【０００５】
マスク機能付検索ルールも一般的である。このルールは、例えば、データベースから希望する固定長データを検索する場合、希望する固定長データがデータベース内の固定長データの一部（全部の場合もある）と合致すればそれを検索結果とする検索ルールである。この場合、マスクは固定長データと同じデータ長を持ち、固定長データを構成するビット単位でマスク可能な機能を有しており、本ルールにおいて多数の検索方法が実現されている。本ルールを、ネットワーク内中継装置およびネットワーク間中継装置を例として説明する。本例の装置においては、入力されたパケットをどの送出ポートに出力するかルートテーブの検索により決定する。ここで、送出するか否かの判断はフィルタリング機能により行われる。このフィルタリング機能はマスク機能付検索の代表例である。例えば、入力パケットにおいて、送信元ＩＰアドレス（３２ビット）、宛先ＩＰアドレス（３２ビット）、プロトコル（８ビット）、送信元ポート（１６ビット）そして宛先ポート(１６ビット)の五つのデータから構成される１０４ビットの固定長データによって構築されるフローテーブルがフィルタリング機能に用いられる。この場合には、１０４ビットの中で一部のビットを比較対照から除く（マスクする）ことが可能で、マスクされないビット全てが合致する固定長データが検索結果となる。マスク機能付検索の従来技術はハッシュ法やＣＡＭを使用することが一般的である。ハッシュ法やＣＡＭにおいても以下の問題点が存在する。
【０００６】
すなわち、従来技術の検索方式における大きな問題はデータベースの構築およびその管理である。種々の検索法を選択したり実現したりする場合には、データベースの構築および管理法をあわせて評価しなければ、目標とする検索方式は実現できない。
【０００７】
従来技術が持つデータベースの構築・管理の問題点を、例として二分岐検索によるクイックサーチとＴＣＡＭを利用した検索法を用いて説明する。二分岐検索法においては、まず、データベースの構成員であるｍ個の固定長データが大小順に並べ替えられたデータベースを準備する。検索は、データベースの中点、[ｍ/２]（[ｍ/２]はｍが奇数の場合、四捨五入し整数を得ることを意味する）に位置する固定長データと検索希望固定長データとを比較することから開始する。比較した結果、検索希望固定長データが大きい場合、[ｍ/２]とｍの中点、[（[ｍ/２]＋ｍ）/２]、に位置する固定長データと検索希望固定長データとを比較する。最初の比較で検索希望固定長データが小さい場合、[ｍ/２]と１の中点、[（[ｍ/２]＋１）/２]、に位置する固定長データと検索希望固定長データとを比較する。検索希望固定長データと比較した固定長データが合致すれば比較した固定長データが検索結果として検索は終了する。以上の比較動作を中点計算が可能な限り行う。ただし中点計算が１と２で行われる場合、１を選択し、比較を行う。ｍが２６２、１４４（２の１８乗）の場合、最大１８＋１回のデータベースからの読み出しが必要である。以上の検索動作は簡単であり、検索法は実現可能である。しかし、データベースを構築したり管理したりすることは簡単ではない。特にｍが前記の例の様に大きくなり、通信用制御装置で一般的な大規模データベースを構築する場合、多くの時間と大きな計算能力を必要とする。加えて、データベースが時間と共に変更を強いられるような、モバイル製品が増加する最近の環境の下においては、データベースにおいて固定長データの削除・追加が頻繁に起こる。固定長データの従来技術における削除・追加においては、そのたびに上記並べ替えを行う必要が生じる。このようにデータベースの構築・管理は大きな負荷となり、検索能力に大きな障害となっているのが現状である。
【０００８】
従来技術において、高速でＩＰアドレスを検索する方法としてＴＣＡＭが多く利用されている。しかし、ＴＣＡＭはＣＡＭと同じ問題を持つ。そのメモリ容量がＤＲＡＭ（Dynamic Random Access Memory）程大きくなく、そのため多数のＩＰアドレスを持つデータベースを構築すると、多数のＴＣＡＭが必要となりパワー供給およびパッケージの制約から大きなデータベースは構築できない。それに加えて、ＴＣＡＭを用いる場合には、データベースの構築・管理上の問題が生じる。前記ＬＰＭルールにより、希望固定長データに合致する多数の固定長データが存在することは説明した。それらの中から、最長のプレフィックスを持つ固定長データを選択するため、合致する多数の固定長データにおけるプリフィックスの長さ順にデータを並べる必要がある。すなわち、ＩＰアドレスの上位ビットが共通となるＩＰアドレスの集合をグループ化し、それらをグループ内で長さ順に並べる作業がデータベース構築の作業として必要である。この場合、変更時の検索能力への影響を最小にするため、グループ間にいくつかの空きロケーションを準備することが、追加動作に対し最小の時間でその追加作業が完了することを目的として行われている。このように、ＴＣＡＭを用いる場合において、その検索能力を減少させずにデータベースを構築・管理することには大きな問題が含まれている。また、グループ間にいくつかの空きロケーションを準備することにより、ＴＣＡＭの使用効率は減少し、ＴＣＡＭの容量不足にさらに拍車がかかる悪循環を招来する。
【０００９】
通信制御装置において、データベースを検索後、宛先ポート等のユーザーデータをその検索結果から読み出したり、合致した固定長データの統計データ等を修正したりする機能をもつことは一般的である。従来技術としての高速検索法はユーザーデータおよび統計データ等は外部メモリ素子に格納されているため、検索開始から宛先ポートを得るまでの時間が大きい。
【発明の開示】
【発明が解決しようとする課題】
【００１０】
一般に、検索法は、大きく分類して（１）検索に必要なデータ、ユーザーデータ、統計データ等を含む、（２）大きなデータベースを、（３）データベースに要求される検索ルールの下、（４）高速に検索し、（５）データベースを効率的に構築・管理を行う。しかし従来技術の検索法は前記要求に対し各要求項目に大きな問題を持つ。一般的に（１）と（２）を解決すると（３）と（４）に問題が残り、逆に（３）と（４）を解決すると（１）と（２）に問題が存在する。（５）の問題は従来技術では共通に顕在化している。
【課題を解決するための手段】
【００１１】
本発明は、前記した問題点を解消するためになされたものであって、その主たる目的は、データベースに大量に格納される検索に必要なデータ、ユーザーデータ、統計データ等、種々のデータを含む固定長データを（１）高速に検索し、（２）検索結果に応じ修正を行い、（３）データベースの構築の際に空きロケーションの不必要な高いメモリ使用効率を実現し、（４）データベースへの追加・削除動作で、検索能力が減少しないデータベース管理ができるようにすることであり、そのための装置または方法またはコンピュータ用記録媒体を提供することである。
【００１２】
データベース内の固定長データから希望の固定長データを検索することはデータベース内の固定長データを一つ一つ希望の固定長データと比較することである。そして、合致する固定長データが得られたとき、または最後の固定長データを比較したときに検索は終了する。この方法はデータベースが大きくなればなるほど、検索時間が大きくなり実現性がなくなる。
【００１３】
このため、高速検索方法の一つはいかに希望の固定長データと比較するデータベース内の固定長データの数を少なくするかという命題と同じである。本発明が提案する検索方法はデータベース内の固定長データの数を細分化し、希望の固定長データと比較する固定長データの数を最小にする手段を備える。主たる手段は、ハッシュ値、ハッシュ値の一部、固定長データ、および固定長データの一部を使用し、データベースを構成する固定長データを細分化する。なお、従来の手段はハッシュ値の一部、または固定長データの一部を使用して、テーブルを構築すること、または二分岐検索法を応用したＬ（ＬはＱ＊Ｋ以上の整数。ＱとＫは後述）分岐検索法を適用することにより、目的とする細分化を実現する。
【００１４】
また、本発明においては、高速に検索を行うために、一度に比較する固定長データの数を増やす目的で、Ｑ個のメモリアレイと該メモリアレイから読み出されるビット数（Ｒ）を最大にするメモリとを提案する。又、本発明においては、それらのビットに対応する比較器を持つことにより、ＲがＫ個の固定長データ長に相当する場合においては、一度にＱ＊Ｋ個の固定長データの比較が行うことができる。この結果、固定長データの数がＱ＊Ｋ個以下の場合、一度のメモリ読み出しにより検索結果が得られる。メンバー数がＱ＊Ｋ個以上、２＊Ｑ＊Ｋ以下の場合、メモリ読み出し回数を２回にすることも可能になる。同様に、本発明においては、メモリ読み出し回数を可変とすることにより、データベース内の固定長データ数の細分化による、固定長データ数の不均衡の問題も解決可能である。本手法において、２６２、１４４個のランダムな数値（メンバー）を６５、５３６個のグループに細分化した場合、４〜５メンバーのグループ数が一番多く、１５〜１６メンバーを持つグループも存在する。それ以上のメンバーを持つグループはなくなる。これはランダムな数値を細分化した一例であるが、Ｑ＊Ｋが４である場合を仮定すれば、最大４回のメモリ読み出しで、目的の検索が終了する。以上が、本発明が提案する基本的な検索法である。しかし、メモリアレイの数Ｑは上限があり、メモリアレイから読み出されるビット数にも制限が存在する。これらの制限下で、メモリの読み出し回数を削減するためには、データベースの細分化をより強化することである。そこで、本発明は、固定長データ数の不均衡の問題を解決する方法を提案し、大きな不均衡にも対応可能な検索方法を提案する。
【００１５】
データベース内の固定長データ数の細分化は一般的な手法、すなわち、ハッシュ関数と、それが適用できない場合、そのデータそのものを適用する。後者の例はＩＰアドレスの細分化である。細分化のための全インデックスを計算する。ハッシュ関数を適用した場合、全インデックスはハッシュ値であり、ＩＰアドレスの場合、全インデックスはＩＰアドレスである。この処理には、全インデックス、または全インデックスの一部をインデックスとするポインタテーブルが用いられる。これにより、検索されるデータベースはポインタテーブルのエントリー数のグループに細分化される。細分化されたグループは固定長データテーブルに格納される。固定長データテーブルの１つのエントリーはＱ＊Ｋ個のメンバーを格納可能である。このとき、Ｑ＊Ｋ個のメンバーを格納するエントリーを家と、その家が１つのメンバーを格納する場所を室と定義する。ポインタテーブルにより細分化されたグループ数が家の室数より小さい場合、ポインタテーブルの読み出しと、固定長データテーブルの一回の読み出しで検索が終了する。ポインタテーブルと固定長データテーブルを別々のメモリに格納し、それぞれが独立に読み出されれば、並列動作により、検索時間は二回のメモリ読み出し時間がかかるが、検索回数は一回のメモリ読み出しで行われる検索数に等しい。
【００１６】
問題はポインタテーブルにより細分化されたグループ数が家の室数より大きい場合である。この場合のグループの細分化で、本発明は二つの方法を提案する。一つはＳＰＴ（２次ポインタテーブル）とローカルテーブルである。ＳＰＴはポインタテーブルが格納されているメモリに格納され、ローカルテーブルは固定長データテーブルに格納される。ＳＰＴとローカルテーブルを別なメモリに格納することも可能である。両テーブルは小さなエントリー数であり４〜１６エントリーを持ち、ポインタテーブルのエントリーに属するＱ＊Ｋ個のメンバーを細分化する。ポインタテーブルと固定長データテーブルとの読み出しにより検索されるメンバー数を１とすると、（１）ポインタテーブルと、ＳＰＴと、固定長データテーブルの読み出しにより検索されるメンバー数の最大数は４〜１６となり、（２）ポインタテーブルと、ローカルテーブルの読み出しにより検索されるメンバー数の最大数は４〜１６となり、（３）ポインタテーブルと、ＳＰＴと、ローカルテーブルの読み出しにより検索されるメンバー数の最大数は１６〜２５６となる。しかし、これらの手法は二つの問題が存在する。一つはＩＰアドレスの検索の場合に生じる。ＩＰアドレスのマスクにより、ＳＰＴまたはローカルテーブルのインデックスの部分とマスク長が重なり合った場合、そのマスクを持つＩＰアドレスの処理を考えなくてはならない。この点の詳細は発明を実施するための最良の形態で説明する。他の一つは、最悪の場合、ＳＰＴとローカルテーブルは細分化の解にならない場合があることである。すなわち、全てのメンバーがＳＰＴまたはローカルテーブルの一つのエントリーに分布した場合である。このケースは大変まれなことで、考えなくても良いかもしれない。しかし、完全な解を追求するために、本発明においては数値比較（ＮＶＣ）法を用いることを提案する。ＮＶＣ法は基本的に二分岐検索と同じ原理であるＬ分岐検索を行う。一回のＮＶＣ法で一度に検索できるメンバー数はニ分岐検索のＬ倍であり、二回のＮＶＣ法の場合には二分岐検索のＬ＊Ｌ倍となる。数値比較法の詳細な説明は、発明を実施するための最良の形態で行う。以上の方法により、本発明によれば、２、３回のメモリ読み出し回数で目的とする固定長データを検索することができる高速検索法を提案する。
【００１７】
本発明においては検索法を一般化するために、検索するいろいろな検索ルールを伴う検索装置を提案する。それらは（１）グローバルマスクを使用する検索ルール、（２）ローカルマスクを使用する検索ルール、（３）ＬＰＭ（Longest Prefix Mask）を使用して検索するルールである。検索はマスクされないビットだけが比較され、（１）と（２）の場合には一致したデータが検索結果となり、（３）の場合には多数の一致したデータの内、一番長いマスク長を持つデータが検索結果となる。
【００１８】
本発明の提案する検索装置においては、一秒間に検索される回数を最大化するために検索動作がメモリ読み出しの時期によっては、かならずしも入力順には検索されず、処理可能な順に検索される。本発明においては、検索動作に必要な各処理の同期を取る目的で、検索番号を検索装置に導入し、非同期処理の検索を実現する。そして、検索番号を本発明の検索装置に入力させることにより、検索命令と検索結果の同期を取ることを可能にする。同時に、過入力（オーバーフロー）による、本装置のオーバーランを防止するメリットも存在する。すなわち、検索番号Ｎで検索命令を入力すると、検索番号Ｎの検索結果が得られなければ、検索番号Ｎで新しい検索命令を入力することが出来ない。Nの最大値を定めておけば、過入力による問題は防止できる。
【発明の効果】
【００１９】
本発明は、従来技術が持つ検索対象が格納されるテーブルの構築または管理の問題点を解決する。従来の技術と関連して説明した、テーブルの構築・管理の問題点は（１）検索対象が格納されるテーブルにおける可能格納数の７０〜８０％しか利用出来ない、（２）テーブルの構築・管理に多大な作業が必要である。本発明は家と、室と、テーブルの構造とを管理することにより、（１）を解決し、ホスト制御装置が行う（２）を低減する。本発明は、基本的に家は全て満室に保つ方法で管理を行う。発明を実施するための最良の形態で説明している管理は家を大団体と小団体により、または同じサイズを持つ二つの団体で満室にする。一つも団体が存在しない家を空家テーブルで、そして小団体が不在の、または同じサイズを持つ二つの団体の一つが不在の場合、それらの家を空室テーブル、および室管理テーブルで管理する。そのため、満室の家は管理しない。本発明の検索法はいろいろなテーブル形態を持ち、検索手順の構造を持つ。このため、テーブル検索手順の変更に伴う、構造変更が短期間に、簡単に行える手法を提案する。
【発明を実施するための最良の形態】
【００２０】
以降、本発明を実施のための最良の形態および実施例について具体的に説明する。しかし、本発明は以下に説明する実施の形態および実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々の改良が可能である。
【００２１】
［全体の構成］
本発明における固定長データの検索および管理に係る実施例を示す機能ブロック図を図１に示す。理解しやすいように、検索に必要な機能を図１〜１４により最初に説明し、その基本機能となる各種テーブルを構築し、保守する管理機能を次に説明する。
【００２２】
図１は、本発明における固定長データ検索および管理装置に係る実施例を示すブロック図である。図１に示す固定長データ検索および管理装置５０は、固定長データ検索装置１０を一部に有している。図１に示された固定長データ検索装置１０は、入力された入力固定長データ９と検索番号８および統計データ１１に対して、指定された処理を行って出力する入力固定長データ処理手段１００と、前記入力固定長データ処理手段１００の出力またはポインタ処理手段２００の出力によりインデックスされるポインタテーブルを格納するポインタテーブルメモリ５００と、後記固定長データテーブルメモリ５６０の出力または前記ポインタテーブルメモリ５００の出力を前記入力固定長データ処理手段１００の出力の一部とともに演算を行い、その結果を出力する前記ポインタ処理手段２００と、前記ポインタ処理手段２００の出力をインデックスとした固定長データテーブルを格納する固定長データテーブルメモリ５６０と、前記固定長データテーブルメモリ５６０が出力する多数の固定長データと前記入力固定長データ９を指定されたルールで比較する比較手段４００と、前記比較手段４００の一致結果の出力により、前記ポインタ処理手段２００の出力をインデックスの一部とした、ユーザーデータと統計データを保持するデータテーブルを格納するデータテーブルメモリ５４０と、前記データテーブルメモリ５４０の出力の一部を出力する、又その一部のデータに演算を行い、前記データテーブルメモリの同じ場所に書き込む修正手段３００と、前記比較手段４００の出力と前記修正手段３００の出力を同期させて出力する出力手段８００とを備える。なお、前記ポインタテーブルメモリ５００と固定長データテーブルメモリ５６０とデータテーブルメモリ５４０とを単一のメモリで構成するようにしてもよい。
【００２３】
図２は、図１に記載した固定長データ検索装置１０の処理フロー図である。概略を説明すると、まず検索したい入力固定長データ９が入力される（Ｓ２０２）。そして入力固定長データ処理手段１００によりポインタテーブルのインデックスを計算する（Ｓ２０４）。さらにポインタテーブルを読み出す（Ｓ２０６）。その後、ポインタテーブルの出力をポインタ処理手段２００により処理する（Ｓ２０８）。それがポインタテーブルを指示すれば（Ｓ２１０）、ポインタテーブルの読み出し（Ｓ２０６）を再び行う。ポインタ処理手段２００の出力が固定長データテーブルの読み出しを指示すれば、それを実行する（Ｓ２１２）。一回の固定長データテーブルの読み出しで比較動作（Ｓ２１４）が終了すれば（Ｓ２１６）、検索結果を作成し、一致していれば（Ｓ２１８〜Ｓ２２２）、修正手段３００によりデータテーブルの読み出しと書き込み（Ｓ２２４）が行われる。そして出力手段により検索結果が出力される（Ｓ２２６）。比較結果が不一致（Ｓ２１８）の場合、不一致結果を作成し（Ｓ２２８）、出力手段により検索結果が出力される（Ｓ２２６）。前記比較動作が終了しなければ（Ｓ２１６〜Ｓ２３０）、再び、ポインタ処理でテーブルのアドレス計算が行われ、テーブルの選択（Ｓ２３２）が行われる。ローカルテーブルが選択された場合、固定長データテーブルの読み出し（Ｓ２１２）を実行する。テーブルの選択（Ｓ２３２）でＳＰＴが選択された場合、ポインタテーブルからの読み出し（Ｓ２０６）を実行する。本発明におけるデータベースの細分化の特徴は複数のポインタテーブルの読み出し、複数の固定長データテーブルの読み出し、そしてポインタテーブルと固定長データテーブルの組み合わせによる複数の読み出し、により実現される。以下に固定長データ検索装置１０の動作について図１、図２と共に詳細に説明する。
【００２４】
固定長データ検索装置１０に入力される検索番号８は主に前記ポインタ処理手段２００と比較手段４００と修正手段３００と各メモリの動作並列化および比較手段４００と、修正手段３００と、出力手段８００の出力の名前として使用されるため、そして入力される統計データ１１は修正手段３００で使われるため、検索手法の本質ではないので図２に記述してはいない。
【００２５】
［入力固定長データ処理手段］
入力固定長データ９と検索番号８と統計データ１１は入力固定長データ処理手段１００に入力される。入力固定長データ処理手段１００はポインタテーブル５００に格納されたポインタテーブルのインデックスを演算し出力する。ポインタテーブルの役目はデータベース内の固定長データをグループに分割し、そのグループ内の固定長データの数（メンバー数）を均一化し可能な限り少なくすることである。このため、演算方法は次の４つを用意する。
（１）ハッシュ法により計算されたハッシュ値
（２）ハッシュ法により計算されたハッシュ値の一部
（３）入力固定長データ
（４）入力固定長データの一部
演算方法、ハッシュ値または入力固定長データから一部を取り出す方法は指定可能とする。入力固定長データ処理手段１００の実施例を図３に示す。
【００２６】
入力固定長データ処理手段１００に入力された入力固定長データ９はレジスターＤに、検索番号８および統計データ１１はレジスターＣにそれぞれ一時的に貯蔵され、後述するその他の出力データが入力固定長データ処理手段１００から出力される際に、同期して出力される。このため、レジスターＣの出力を同期検索番号１９２および同期統計データ１９４と呼び、レジスターＤの出力を同期入力固定長データ１９３と呼ぶ。固定長データ検索装置１０の説明では混乱を避ける意味で同期した番号やデータに対しても、同じ名称を使う、ただしその番号はその都度異なるものとする。各信号はポインタ処理手段２００、比較手段４００、および修正手段３００への入力となる。そして、入力固定長データ処理手段１００への追加の入力には図３に示すように管理データ６９９がある。管理データ６９９は管理固定長データと管理検索番号と管理統計データから構成され、入力固定長データ９と検索番号８と統計データ１１と同様に扱われる。管理データ６９９は固定長データ検索装置１０の各種テーブルの管理の行う場合に入力される。管理データ６９９の詳細は固定長データ検索および管理装置５０の説明で行う。
【００２７】
入力固定長データ９は入力抽出機能１１０に入力される。入力抽出機能１１０は、入力固定長データ９の入力抽出開始値１７１により指定されるビット位置のビットから、入力抽出終了値１７２により指定されるビット位置のビットまでを抽出し出力する。入力抽出開始値１７１が入力固定長データ９の最初のビット位置を示し、入力抽出終了値１７２が最後のビット位置を示す場合、出力される値は入力固定長データ９そのものである。なお、入力抽出開始値１７１または入力抽出終了値１７２はビット単位で指定されることを仮定して説明したが、バイト単位で指定することも可能である。入力抽出機能１１０の手順は入力固定長データ処理制御機能１６０により制御される。
【００２８】
入力抽出機能１１０の出力は後述する３：１選択器１４０と加算器１２０に入力される。抽出したデータが入力抽出機能１１０の出力バス幅を超える場合、入力抽出機能１１０は複数の出力バス転送サイクルにより抽出したデータを出力する。この場合、各バスサイクルで出力された出力値は加算器１２０により積算される。一例として、入力抽出機能１１０の出力バス幅が３２ビット、加算器１２０が３２ビット加算器を備え、抽出したデータが６４ビットである場合、抽出したデータは２回の出力バス転送サイクルにより出力される。入力前に、レジスターＡ１８０は初期値（ゼロ）に設定されている。抽出したデータの最初の出力値は加算器１２０でレジスターＡ１８０が保持する値（この場合は初期値ゼロである）と加算され、その結果がレジスターＡ１８０に保持される。抽出したデータの２回目の出力値は同様に加算器１２０でレジスターＡ１８０が保持する値（この場合は最初の出力値である）と加算され、その結果がレジスターＡ１８０に保持される。抽出したデータの処理が終了したので、入力固定長データ処理制御機能１６０はレジスターＡ１８０のデータをレジスターＢ１８１に転送する。レジスターＡ１８０およびレジスターＢ１８１のデータ保持信号の発生は入力固定長データ処理制御機能１６０により生成および制御される。
【００２９】
レジスターＢ１８１の出力は後述する３：１選択器１４０とハッシュ演算器１３０に入力する。ハッシュ演算器１３０は入力されたレジスターＢ１８１の出力値からハッシュ関数値１７３を参照し、ハッシュ値を出力する。ハッシュ演算器１３０の出力値は３：１選択器１４０に入力される。ハッシュ関数はいろいろな方法が提案されている。例えば、ハッシュ関数として、入力されたレジスターＢ１８１の出力値をハッシュ関数値で除算し商と余りを得る、そして余りをハッシュ値とする方法である。本実施例においては、ハッシュ関数値を変更可能値と定めているが、ハッシュ関数値を固定にし、レジスターＢ１８１の出力値をシフト動作等により変化させる方法も可能である。
【００３０】
入力抽出機能１１０の出力、レジスターＢ１８１の出力、およびハッシュ演算器１３０の出力は３：１選択器１４０に入力される。３：１選択器１４０は選択値１７４を参照し、入力された３出力のうち一つを全インデックス１９０として出力する。全インデックス１９０は出力抽出機能１５０に入力される。
【００３１】
出力抽出機能１５０は全インデックス１９０の出力抽出開始値１７５により指定されるビット位置のビットから、出力抽出終了値１７６により指定されるビット位置のビットまでを抽出し、抽出したビットはポインタテーブルインデックス１９１として出力される。出力抽出開始値１７５が全インデックス１９０の最初のビット位置を、出力抽出終了値１７６が最後のビット位置を示す場合、出力される値は全インデックス１９０そのものである。出力抽出開始値１７５または出力抽出終了値１７６はビット単位で指定されることを仮定して説明したが、バイト単位で指定することも可能である。入力抽出機能１１０の手順は入力固定長データ処理制御機能１６０により制御される。
【００３２】
図３において、入力抽出開始値１７１、および入力抽出終了値１７２、ハッシュ関数値１７３、選択値１７４、出力抽出開始値１７５、および出力抽出終了値１７６は変更可能なレジスターに保持される。
【００３３】
入力固定長データ処理手段１００はその回路を入力抽出機能１１０、加算器１２０とレジスターＡ１８０、ハッシュ演算器１３０、３：１選択器、および出力抽出機能１５０に分割し、おのおのをステージと呼ぶと、各ステージで異なる検索番号８を持つ検索動作が可能である。このように入力固定長データ処理手段１００は検索処理能力を増大させるパイプライン処理を行う。
【００３４】
一般的に、入力固定長データ９の全てまたはその一部は、ＩＰアドレスを検索するために使用され、その他の検索のためにはハッシュ値全てまたはその一部が使用される。
【００３５】
［ポインタテーブル］
図４に、ポインタテーブルメモリ５００の構成例を示す。なお、図４には、ポインタテーブルメモリ５００、固定長テーブルメモリ５６０、データテーブル５４０の構成が似ている場合の例をまとめて記載したものである。図４の下段には、これらの各メモリとして使用する場合の制御信号、アドレス、データ組合わせが記載されている。
【００３６】
ポインタテーブルメモリ５００はメモリアレイ５０１から構成されるメモリ部分と書き込みおよび読み出し回路５０９から構成される。入力固定長データ処理手段１００の出力の内、ポインタテーブルインデックス１９１（図３）はポインタテーブルメモリ５００のメモリのアドレスに使われ、同期検索番号１９２はポインタテーブルメモリ５００の読み出し回路を同期させるために使われる。ポインタテーブルインデックス１９１は図５に示すようにメモリアレイ５０１のアドレスと、メモリバンク５０２それ自体のアドレスと、メモリバンク５０２内のアドレス（ディスプレースメント）とから構成され、ポインタテーブルメモリ５００のメモリアドレスとなる。
【００３７】
書き込み機能は、書き込みおよび読み出し回路５０９に入力される書き込みアドレス・制御信号５０３と書き込みデータ５０４により与えられる書き込み命令を実行することにより実現される。ポインタテーブルメモリ５００におけること書き込み機能は、主に固定長データ検索および管理装置で使用される機能であるため、詳細な説明は、固定長データ検索および管理装置の説明において行う。
【００３８】
書き込みおよび読み出し回路５０９における読み出し機能は、２箇所からの読み出し命令を受付けて動作することができる。読み出し命令の一つは入力固定長データ処理手段１００からの読み出し命令５０５であり、他はポインタ処理手段２００からの読み出し命令５０６である。両命令とも読み出すメモリのアドレスおよび制御信号を含み、命令に固有な同期検索番号１９２を伴っている。このように構成する理由は、読み出し命令は、必ずしも順番には実行されず、実行可能な命令から実行されるからである。読み出し命令が実行された後、読み出されたデータが図４の読み出しデータ５０７として、入力された同期検索番号１９２を伴って出力される。これにより、読み出しデータ５０７がどの読み出し命令によるものであるか判断することができる。
【００３９】
ポインタテーブルメモリ５００のメモリ部分はＱ（Ｑは１以上の整数）個のメモリアレイ５０１から成り、各メモリアレイはＰ（Ｐは１以上の整数）個のメモリバンク５０２から構成される。各メモリアレイ５０１は独立して動作し、全ての、あるいは一部の複数のメモリアレイ５０１を同時に動作させることができる。メモリアレイ５０１において、各メモリバンク５０２は独立したタイミング発生回路を持つため独立に動作する。しかし各バンクを接続するアドレスとデータバスと制御信号が共通であるため、一時に動作開始可能なメモリバンク５０２は一つだけである。メモリ動作命令間隔に比べて、各メモリバンク５０２の動作時間が長いため、メモリアレイ５０１内の複数のメモリバンク５０２が動作できる。ポインタテーブルメモリ５００はＰ＊Ｑ個のメモリバンクから構成される。Ｐ＊Ｑ個のメモリアレイ５０１から構成しない理由はアドレス・データバスおよび制御信号が膨大な量になるからである。
【００４０】
ポインタテーブルメモリ５００は、一つの同じメモリアレイ５０１にはメモリ動作命令間隔で読み出し命令を与えることができる。メモリ動作命令間隔（ｔ秒）は、全てのメモリバンク５０２が動作可能な場合、読み出しアドレス・制御信号を運ぶバスと読み出しデータを運ぶバスの転送能力に依存する。１秒あたり最大Ｑ／ｔ回のメモリ動作命令すなわちポインタテーブルの読み出しが実行可能である。しかしながら、複数の読み出し命令が同じメモリバンク５０２に対し与えられる場合、メモリの動作時間間隔でしかその命令を実行することができない。その場合、ポインタテーブルメモリ５００が並列動作可能であるというメリットが失われる。この状況が起きた場合、解決法はメモリの動作時間を短縮するほか手段は無いが、この状況が短い時間内で起きる場合において、メモリの並列動作を改善する手法を以下に説明する。
【００４１】
図５にはポインタテーブルメモリ５００の読み出し機能５１０が示されている。メモリアレイ５０１の読み出し機能５１０はｎ個のレジスター５１１とポインタテーブルメモリ制御手段５１２から構成される。ｎ個のレジスターはＲ１、Ｒ２、Ｒ３、Ｒｎと名付けられており、読み出し命令を格納する。読み出し命令は読み出すメモリバンク５０２のアドレスを含むメモリアドレスと制御信号を含む。各レジスターはＲ２の読み出し命令をＲ１へ、Ｒ３の読み出し命令をＲ２へと移動させるための独立したシフト動作を行える配線で結ばれている。各シフト動作は、ポインタテーブルメモリ制御手段５１２により発せられる実行命令により制御される。例えば、３つの読み出し命令が実行待ちの状態のとき、ポインタテーブルメモリ制御手段５１２は、３つの命令をＲ１、Ｒ２、およびＲ３に格納するように管理する。ここで、命令を受けた時間はＲ１の命令が最初で、Ｒ３の命令が最後である。ポインタテーブルメモリ制御手段５１２は担当するメモリアレイ５０１内の各メモリバンク５０２の動作状況を管理する。
【００４２】
読み出し命令５２０は入力固定長データ処理手段１００からの読み出し命令５０５とポインタ処理手段２００からの読み出し命令５０６とをまとめた信号である。読み出し命令５２０が読み出し機能５１０に入力されると、ポインタテーブルメモリ制御手段５１２は最後に格納されたレジスターの次のレジスターを選択して命令を格納する。例えば、レジスターＲ１、Ｒ２、およびＲ３が満室の場合、レジスターＲ４が選択され、命令はレジスターＲ４に格納される。メモリアレイ５０１へのアクセス開始時間前に、ポインタテーブルメモリ制御手段５１２は、次に実行可能なメモリバンクに対する命令を、レジスターＲ１、Ｒ２、Ｒ３、およびＲ４に格納されている命令の中から選択する。ここで、実行可能な命令が複数ある場合には、古い命令から順に実行される。例えば、レジスターＲ２とＲ４内の命令が実行可能である場合、レジスターＲ２の命令が実行される。Ｒ２の命令がメモリバンク５０２に転送された後、レジスターＲ３の命令はＲ２にシフトされ、レジスターＲ４の命令はＲ３にシフトされる。レジスターの数ｎはメモリアレイ５０１内のメモリバンク５０２の数、メモリ動作命令間隔、メモリの動作時間を考慮して決定される。このように、与えられた読み出し命令５２０を実行可能な命令から順次実行することにより、単位時間当たりのメモリ読み出し回数を増大させることができる。
【００４３】
ポインタテーブルメモリ５００の出力は読み出された読み出しデータ５０７（図４）とその読み出し命令５２０に付属した同期検索番号１９２（図３）である。読み出しデータ５０７はポインタテーブルのエントリーデータである。
【００４４】
図６に、ポインタテーブルメモリ５００に格納されるポインタテーブルのエントリーデータの内容を示す。図６に示したように、エントリーデータは大きく分類して３つの要素に分けられる。それらは（１）次工程、（２）次工程で必要なデータ、（３）メモリ制御データである。メモリ制御データは、次に読み出されるメモリアレイを含む固定長データテーブルを格納する固定長データテーブルメモリ５６０を構成するメモリアレイ５６１を制御するデータである。固定長データテーブルメモリ５６０については、固定長データが格納されているメモリアレイだけ、メモリ制御データにより読み出される。
【００４５】
ポインタテーブルのエントリーデータは次の６つの次工程を備える。
（１）ポインタテーブルのこのエントリーに固定長データは無い。検索終了となる。
（２）ポインタテーブルのこのエントリーに一つの固定長データが存在する。検索終了となる。
（３）ポインタテーブルの再読み出しを行う。
（４）ローカルテーブル（ＬＴ）の読み出しを行い、比較を実行する。
（５）固定長データテーブルの読み出しを行い、ＮＶＣ（数値比較）を実行する。
（６）固定長データテーブルの読み出しを行い、比較を実行する。
これら次工程を詳しく説明する。
【００４６】
次工程が上記（１）である場合、すなわち、ポインタテーブルのこのエントリーに固定長データが無い場合、ポインタ処理手段２００、固定長データテーブルメモリ５６０、比較手段４００を経て出力手段８００から検索結果が出力される。当然であるが固定長データテーブルメモリ５６０に入力されたポインタ処理手段２００からのこの場合の命令によって読み出し動作は行われず、当該命令はそのまま比較手段４００に出力される。もし、同期検索番号１９２に相当する検索結果が比較手段４００に貯蔵されていなければ、不一致を示す検索結果が同期検索番号１９２と共に出力される。
【００４７】
次工程が上記（２）である場合、すなわち、ポインタテーブルの当該エントリーに一つの固定長データが存在する場合、このエントリーデータは固定長データのアドレスを持っている。この場合、ポインタ処理手段２００、固定長データテーブルメモリ５６０、比較手段４００を経て修正手段３００でユーザーデータを得る。そして統計データが変更された後、一致検索結果とユーザーデータが同期検索番号１９２と共に出力手段から出力される。このケースはＩＰアドレスの検索に使われる工程であるため、後の比較処理は必要が無い。固定長データテーブルメモリ５６０におけるこの場合の動作は次工程（１）と同じである。
【００４８】
次工程が上記（３）である場合、すなわち、ポインタテーブルの再読み出しを行う場合は、ポインタテーブルのこのエントリーに多数の固定長データが存在することから、よりいっそうの細分化が必要である場合である。そのための手段として、ポインタテーブルによる細分化が図られる。最初のポインタテーブルと区別するため、このポインタテーブルをセカンダリーポインタテーブル（ＳＰＴ）または２次ポインタテーブルと呼ぶ。このエントリーは、ＳＰＴのインデックスを生成させる目的で、ポインタテーブルメモリ５００のベースアドレス、ポインタテーブルのサイズ、全インデックスの開始ビット位置、および全インデックスの終了ビット位置を備えている。ＳＰＴのインデックスはポインタテーブルメモリ５００のベースアドレスと全インデックスの開始ビット位置から終了ビット位置に存在するビットとを連結して得られる。全インデックスの開始ビット位置から終了ビット位置に存在するビットは、ポインタテーブルインデックスとは異なる部分である。ＳＰＴのインデックスが得られた後、再びポインタテーブルが読み出される。その後の工程は、読み出されたポインタテーブルのエントリーに従う。
【００４９】
次工程が上記（４）である場合、すなわち、ローカルテーブル（ＬＴ）の読み出しを行い、比較を実行する場合、固定長データテーブル内に構築されたＬＴの読み出しを行い、得られた多数の固定長データの比較を行う。この次工程は、ポインタテーブルのこのエントリーに多数の固定長データが存在することから、よりいっそうの細分化を図る必要がある場合である。ＬＴはそのための手段の一つである。ＬＴは、固定長データテーブル内の複数のエントリーがテーブルとして活用されたものである。ＬＴのインデックスは固定長データテーブルのインデックスの上位部分と、全インデックスの開始ビット位置から終了ビット位置に存在するビットとを連結して得られる。ＬＴのインデックスが得られた後は（６）の工程の固定長データテーブルのインデックスが得られた後と同じである。
【００５０】
次工程が上記（５）である場合、すなわち、固定長データテーブルの読み出しを行い、ＮＶＣを実行する場合は、ポインタテーブルのこのエントリーに超多数の固定長データが存在することから、真剣によりいっそうのグループ化が必要となる場合である。このエントリーデータは、固定長データテーブルのインデックスを備え、そのインデックスに基づいて固定長データテーブルの読み出しを行い、読み出されたデータに基づいてＮＶＣを実行する。この次工程が使われることはまれなことである。ＮＶＣにおいては数値比較を行うことによりデータベースを細分化する。ＮＶＣ動作の詳細な説明は、固定データテーブルメモリの説明において行う。この次工程の次は（５）もしくは（６）である。（５）が選ばれる場合、このエントリーは巨大な数の固定長データを持つことが予想される。
【００５１】
次工程が上記（６）である場合、すなわち、固定長データテーブルの読み出しを行い、比較を実行する場合、このエントリーデータは、固定長データテーブルのインデックスと固定長データテーブルのメモリ制御データとを備え、そのインデックスに基づいて固定長データテーブルの読み出しを行い、読み出されたデータに基づいて比較を実行する。固定長データテーブルの読み出しの際、固定長データテーブルのメモリ制御データにより、このエントリーに属する固定長データが格納されているメモリアレイ５０１だけが読み出される。これにより、メモリ読み出し回数が増大され、メモリ読み出しに必要な電力が節約される。一般に、固定長データ検索装置１０による検索の大部分は、この次工程により完了される。このエントリーデータから、固定長データテーブルのインデックスを得た後、固定長データテーブルが読み出される。得られた複数の固定長データテーブルのエントリーが比較手段に送られ、同期入力固定長データ１９３と比較されることにより、比較結果が得られる。
【００５２】
［ポインタ処理手段］
ポインタテーブルメモリ５００の出力であるエントリーデータ（読み出しデータ５０７）はポインタ処理手段２００に入力される（図１）。ポインタ処理手段２００の目的は入力された情報から次工程である固定長データテーブルメモリのインデックスを出力することである。ポインタ処理手段２００の実施例を図７に示す。ポインタ処理手段２００の入力は、ポインタテーブルの前記エントリーデータと、入力固定長データ処理手段１００の出力と、固定長データテーブルのエントリー制御データとである。ポインタテーブルの前記エントリーデータと固定長データテーブルのエントリー制御データとは同じ形式を持つので、以降の説明では単にエントリーデータという。
【００５３】
図７で、ポインタ処理手段２００は、入力固定長データ処理手段１００から出力された同期検索番号１９２と全インデックス１９０を受け取り、同期検索番号１９２をデコードして、その番号ｘに相当するレジスターＳｘに全インデックス１９０を格納する。
【００５４】
図７で、ポインタ処理手段２００は、ポインタテーブルメモリ５００の読み出しデータ５０７に含まれている同期検索番号５１４と比較手段４００の同期検索番号４５１とを受け取り、同様にポインタテーブルメモリ５００の読み出しデータ５０７に含まれているエントリーデータ５１６と比較手段４００のエントリーデータ４５２とを受け取る。二つの同期検索番号５１４および４５１は、ＡＮＤ−ＯＲ２３１に入力される。ポインタ処理制御機能２４０の管理の下で、ＡＮＤ−ＯＲ２３１は同期検索番号２５１を生成する。同様に、エントリーデータ５１６およびエントリー制御データ４５２は、ＡＮＤ−ＯＲ２２１に入力される。さらにポインタ処理制御機能２４０の管理の下で、ＡＮＤ−ＯＲ２２１はエントリーデータを生成する。
【００５５】
同期検索番号は、エントリーデータを処理して、固定長データテーブルのインデックスを発生させるために、同期検索番号に相当する全インデックスを得る事に使われ、そして同期検索番号２５１として固定長データテーブルメモリ５６０に出力される。同期検索番号に相当する全インデックスは、ｎ：１選択器２１３により準備され、レジスターＥに格納される。
【００５６】
エントリーデータはＡＮＤ−ＯＲ２２１により出力された後、レジスターＦに格納される。その後、エントリーデータはそれ自体が有する次工程ビットによりデコードされ、目的のテーブルインデックス２５２とメモリ制御データ２５３を発生させる。次に、次工程とテーブルインデックス２５２およびメモリ制御データ２５３の関係を説明する。
【００５７】
（１）ポインタテーブルのこのエントリーに固定長データが無い場合、メモリ制御データ２５３は一致データ無しのデータとなり、そしてメモリ読み出し無しのデータとなる。両データは６：１選択器２３３に入力される固定制御データ２３４により生成される。固定制御データ２３４は、ポインタ処理制御手段２４０が生成する制御データの一つである。テーブルインデックス２５２は意味の無いデータとなる。テーブルインデックス２５２とメモリ制御データ２５３は固定長データテーブルメモリ５６０（図１）に送られる。
【００５８】
（２）ポインタテーブルのこのエントリーに一つの固定長データが存在する場合、メモリ制御データ２５３は一致データ有りのデータとなり、そしてメモリ読み出し無しのデータとなる。両データは６：１選択器２３３に入力され固定制御データにより発生される。テーブルインデックス２５２はエントリーデータから抽出された固定長データのアドレスとなる。テーブルインデックス２５２とメモリ制御データ２５３は固定長データテーブルメモリ５６０に送られる。
【００５９】
（３）ポインタテーブルの再読み出しを行う場合、メモリ制御データ２５３はポインタテーブルの読み出しのデータとなる。そのデータは６：１選択器２３３に入力される固定制御データ２３４により生成される。テーブルインデックス２５２としてはレジスターＧ２１６の出力が選択される。エントリーデータから抽出されたポインタテーブルベースアドレスと、ＳＰＴのサイズと、開始ビット位置と、終了ビット位置とが抽出機能２１５に入力され、全インデックスの開始ビット位置から終了ビット位置までのビットがレジスターＧ２１６に格納される。その結果、ポインタテーブルインデックスが形成される。テーブルインデックス２５２とメモリ制御データ２５３はポインタテーブルメモリ５００に送られる。
【００６０】
（４）ローカルテーブル（ＬＴ）の読み出しを行い、比較を実行する場合、メモリ制御データ２５３は、固定長データテーブルの読み出しのデータとなる。そのデータは６：１選択器２３３に入力する固定制御データ２３４により生成される。テーブルインデックス２５２としてはレジスターＧ２１６の出力が選択される。エントリーデータから抽出された固定長データテーブルのインデックスの上位ビットと、ＬＴのサイズと、開始ビット位置と、終了ビット位置とが抽出機能２１５に入力され、全インデックスの開始ビット位置から終了ビット位置までのビットがレジスターＧ２１６に格納される。その結果、固定長データテーブルインデックスが形成される。テーブルインデックス２５２とメモリ制御データ２５３は固定長データテーブルメモリ５６０に送られる。
【００６１】
（５）固定長データテーブルの読み出しを行い、ＮＶＣを実行する場合、メモリ制御データ２５３は固定長データテーブルを読み出したデータおよびＮＶＣ動作のデータとなる。そのデータは６：１選択器２３３に入力する固定制御データ２３４により生成される。テーブルインデックス２５２はエントリーデータから抽出された固定長データテーブルのインデックスとなる。テーブルインデックス２５２とメモリ制御データ２５３は固定長データテーブルメモリ５６０に送られる。
【００６２】
（６）固定長データテーブルの読み出しを行い、比較を実行する場合、メモリ制御データ２５３は固定長データテーブルを読み出したデータとエントリーデータから抽出された固定長データテーブルメモリの制御データとなる。固定長データテーブルの読み出しデータは、６：１選択器２３３に入力する固定制御データ２３４により発生される。テーブルインデックス２５２はエントリーデータから抽出された固定長データテーブルのインデックスを出力する。テーブルインデックス２５２とメモリ制御データ２５３は固定長データテーブルメモリ５６０に送られる。
【００６３】
ポインタ処理手段２００のレジスターＰ２１７には、ポインタ処理手段２００によって出力される、管理データを扱う検索番号を有しているテーブルインデックス２５２が格納される。レジスターＰ２１７においては、管理データを扱う検索番号を有しているテーブルインデックス２５２が複数回生成された場合、その生成のたびに格納動作が行われる。結果的に、レジスターＰ２１７は最後に生成されたテーブルインデックス２５２を保持する。
【００６４】
ポインタ処理手段２００において、レジスターＥ２１４、レジスターＦ２３２、レジスターＧ２１６の前後において回路構成を複数のステージに区別すると、各ステージで異なる検索番号８を用いて検索動作が可能である。このようにポインタ処理手段２００は検索処理能力を増大させるパイプライン処理を行う。ポインタ処理手段２００のポインタ処理制御機能２４０は、抽出機能２１５、レジスターＧ２１６の格納信号発生、そしてパイプライン処理の管理を行う。
【００６５】
［固定長データテーブルメモリ］
図４に、固定長データテーブルメモリ５６０（図１）の構成例を示す。固定長データテーブルメモリ５６０は、メモリアレイ５６１から構成されるメモリ部分と書き込みおよび読み出し回路５６９とから構成される。ポインタ処理手段２００の出力、固定長データテーブルインデックス２５２は、固定長データテーブルメモリ５６０のメモリのアドレス指定に使われ、同期検索番号２５１は固定長データテーブルメモリ５６０の読み出し回路の同期に使われる。固定長データテーブルインデックス２５２は、図５に示すようにメモリバンク５６２それ自体のアドレスと、メモリバンク５６２内のアドレス（ディスプレースメント）とから構成され、固定長データテーブルメモリ５６０のメモリアドレスとなる。この場合、メモリアレイ５６１のアドレスは出力されず、ポインタ処理手段２００の出力であるメモリ制御データ（図示しない）により、固定長データテーブルメモリ５６０は独立して制御される。このため、固定長データテーブルメモリ５６０の全てのメモリアレイ５６１を読み出すことが可能となる。
【００６６】
固定長データテーブルメモリ５６０の書き込み機能は、書き込みおよび読み出し回路５６９に入力される書き込みアドレス・制御信号５６３と、書き込みデータ５６４により与えられる書き込み命令とにより実現される。この書き込み機能は、主に固定長データ検索および管理装置で使用される機能であるため、詳細な説明は固定長データ検索および管理装置の説明において行う。
【００６７】
固定長データテーブルメモリ５６０の読み出し機能はポインタ処理手段２００からの読み出し命令５６５により実行される。読み出し命令５６５は、読み出すメモリのアドレスおよび制御信号を含み、そして命令に固有な同期検索番号２５１を伴う。その理由は読み出し命令が必ずしも順番には実行されず、実行可能な命令から実行されるからである。読み出し命令の実行後、読み出されたデータが図４の読み出しデータ５６７から、入力された同期検索番号２５１を伴って出力される。これにより、読み出しデータ５６７がどの読み出し命令によるものか判断できる。
【００６８】
固定長データテーブルメモリ５６０のメモリ部分はＮ（Ｎは１以上の整数）個のメモリアレイ５６１から成り、各メモリアレイはＭ（Ｍは１以上の整数）個のメモリバンク５６２から成る。各メモリアレイ５６１は独立して動作し、全ての、あるいは一部の複数のメモリアレイ５６１を同時に動作させることができる。メモリアレイ５６１において、各メモリバンク５６２は独立したタイミング発生回路を持つため独立に動作する。しかし各バンクを接続するアドレスとデータバスと制御信号が共通であるため、一時に動作開始可能なメモリバンク５６２は一つだけである。メモリ動作命令間隔に比べて、各メモリバンク５６２の動作時間が長いため、メモリアレイ５６１内の複数のメモリバンク５６２が動作できる。固定長データテーブルメモリ５６０はＭ＊Ｎ個のメモリバンクから構成されるが、Ｍ＊Ｎ個のメモリアレイ５６１から構成しない理由はアドレス・データバスおよび制御信号が膨大な量になるからである。
【００６９】
固定長データテーブルメモリ５６０は一つのメモリアレイ５６１にはメモリ動作命令間隔（ｔ秒）で読み出し命令を与えることができる。メモリ動作命令間隔は、全てのメモリバンク５６２が動作可能な場合、読み出しアドレス・制御信号を運ぶバスと読み出しデータを運ぶバスの転送能力に依存する。１秒あたり最小１／ｔ、最大Ｎ／ｔ回のメモリ動作命令すなわち固定長データテーブルの読み出しが実行可能である。しかしながら、複数の読み出し命令が同じメモリバンク５６２に対し与えられる場合、メモリの動作時間間隔でしかその命令を実行することができない。その場合、固定長データテーブルメモリ５６０が並列動作可能であるというメリットが失われる。この状況が起きた場合、解決法は動作時間を短縮するほか手段は無いが、この状況が短い時間内で起きる場合、メモリの並列動作を改善する手法を以下に説明する。
【００７０】
図５に、固定長データテーブルメモリ５６０の読み出し機能５７０を示す。メモリアレイ５６１の読み出し機能５７０はｎ個のレジスター５７１と固定長データテーブルメモリ制御手段５７２から構成される。ｎ個のレジスターはＲ１、Ｒ２、Ｒ３、Ｒｎと名付けられており、読み出し命令を格納する。読み出し命令は読み出すメモリバンク５６２のアドレスを含むメモリアドレスと制御信号を含む。各レジスターはＲ２の読み出し命令をＲ１へ、Ｒ３の読み出し命令をＲ２へと移動させるための、独立したシフト動作を行える配線で結ばれている。各シフト動作は、固定長データテーブルメモリ制御手段５７２により発せられる実行命令により制御される。例えば、３つの読み出し命令が実行待ちの状態のとき、ポインタテーブルメモリ制御手段５１２は、３つの命令をＲ１、Ｒ２、およびＲ３に格納するように管理する。ここで、命令を受けた時間はＲ１の命令が最初で、Ｒ３の命令が最後である。固定長データテーブルメモリ制御手段５７２は担当するメモリアレイ５６１内の各メモリバンク５６２の動作状況を管理する。
【００７１】
読み出し命令５６５が読み出し機能５７０に入力されると、固定長データテーブルメモリ制御手段５７２は最後に格納されたレジスターの次のレジスターを選択して、命令を格納する。例えば、Ｒ１、Ｒ２、およびＲ３が満室の場合、Ｒ４が選択され、命令はそれに格納される。メモリアレイ５６１へのアクセス開始時間前に、固定長データテーブルメモリ制御手段５７２は、次に実行可能なメモリバンクに対する命令をレジスターＲ１、Ｒ２、Ｒ３、およびＲ４に格納されている命令の中から選択する。ここで、実行可能な命令が複数ある場合には、古い命令から順に実行される。例えば、レジスターＲ２とＲ４内の命令が実行可能である場合、レジスターＲ２に格納された命令が実行される。レジスターＲ２の命令がメモリバンク５６２に転送された後、レジスターＲ３の命令はＲ２にシフトされ、レジスターＲ４の命令はＲ３にシフトされる。レジスターの数ｎはメモリアレイ５６１内のメモリバンク５６２の数、メモリ動作命令間隔、メモリの動作時間を考慮して決定される。このように、与えられた読み出し命令５６５を実行可能な命令から、実行することにより、単位時間当たりのメモリ読み出し回数を増大させることができる。
【００７２】
固定長データテーブルメモリ５６０の出力は読み出された読み出しデータ５６７とその読み出し命令５６５に付属した同期検索番号２５１である。読み出しデータ５６７は固定長データテーブルのエントリーデータである。
【００７３】
図５に示されているように、固定長データテーブルのインデックスはメモリバンク５６２それ自体のアドレスとメモリバンク５６２の中のアドレス（ディスプレースメント）により構成される。そしてメモリアレイはメモリ制御データ２５３により制御される。この理由は一度に比較される固定長データの数をできるだけ多くするためであり、不必要なメモリアレイの読み出しを防ぐためである。固定長データテーブルの一つのインデックスで読み出される固定長データの構成を図８に示す。メモリアレイ５６１から読み出されるエントリーデータは、エントリー制御データと、複数の、単数の、または一部の固定値データとから構成される。メモリアレイ５６１に含まれる固定値データの数は、固定値データの長さに依存する。例として、図８は固定長データテーブルの一つのインデックスに最大数の固定長データが存在する場合を示す。このケースでは、メモリアレイ１を除く各メモリアレイの持つエントリー制御データは無視されるため、図示していない。
【００７４】
図８に、固定長データテーブルの要素の構成を示す。固定長データテーブルの要素としては２つの形式が存在し、前次工程がその形式を決定する。一つは前次工程が比較動作を指示した場合の形式（１）であり、他はＮＶＣ動作を指示した場合の形式（２）である。形式（１）は固定長データ、マスク、および固定長データ名から構成される。形式（１）の場合、マスクについては検索ルールによって存在しない場合（グローバルマスクである場合）もある。この場合には、比較対照データは固定長データであり、マスクはその比較動作で使用される。この場合において、比較動作の結果、固定長データ名が一致した場合、比較対照データは一致した固定長データの名前として出力されるデータである。形式（２）は抽出インデックスと固定長データテーブルインデックスとから構成される。形式（２）を理解するために、以下、ＮＶＣ動作を説明する。
【００７５】
図９により、ＮＶＣ動作を説明する。ＮＶＣ動作をより理解しやすいように、ＮＶＣ動作のエントリーデータの作成手順を図９により説明する。例として、ポインタテーブルのあるエントリーがｍ個の固定長データを保持していると仮定する。固定長データは、詳しくは、固定長データ、対応する全インデックス、マスク、および固定長データ名である。図９の作業１で示されるように、まず、全インデックスから指定された部分を抽出し、それを抽出インデックスと呼ぶこととすると、ｍ個の固定長データに対する抽出インデックスを得る。次に、作業２で、ｍ個の抽出インデックスを大小順に他のデータと共に並べる。さらに、作業３で、大小順に並べられた他のデータを伴ったｍ個の抽出インデックスを、所定の数以内に大きさ順に分割し、所定の数のグループを作る。この所定の数は、固定長データテーブルの一つのエントリーデータに格納できる数である。この所定の数以内であればエントリーデータ内に格納できるので、そのグループの所定の数は任意に選択できる。そして、作業４で、各グループの固定長データとその他のデータをエントリーデータに格納する。これが比較動作のためのエントリーデータとなる。各エントリーデータはそれぞれインデックスを持つ。加えて、作業５で、ＮＶＣ動作のエントリーデータを作成する。なお、以上の説明においてはＮＶＣ動作によりエントリーデータを作成する方法を示したが、本発明でＮＶＣ形式のテーブル構造を作成する方法は異なる。
【００７６】
図９の説明により、ＮＶＣ動作のエントリーデータが理解できる。すなわち、ＮＶＣ動作は次のように行われる。例えば、ポインタテーブルのエントリーデータの次工程がＮＶＣ動作を指示した場合、そのエントリーデータが指定する固定長データテーブルインデックスに従って固定長データテーブルメモリを読み出し、ＮＶＣ動作のエントリーデータを得る、その後、入力固定長データ９の全インデックス１９０から、そのＮＶＣ動作のエントリーデータの次工程が指定した部分を抽出する。抽出された抽出インデックスはＮＶＣ動作のエントリーデータにおける各固定長データテーブルの要素の抽出インデックスとその値が大小比較される。図９の作業５で得られたＮＶＣ動作のエントリーデータは、左側の抽出インデックスが最小で、右に向かって大きな抽出インデックスとなるように並べられている。この例に従えば、値の大小比較の結果は、抽出インデックスとの大小比較結果を左側から記述すると、大、大、大、大、小、小のような並びが得られる。この場合、大から小に遷移する直前の「大」が有する固定長データテーブルインデックスが、次の固定長データテーブルの読み出しインデックスとなる。大小比較の結果が全て大となれば、一番右側の抽出インデックスが持つ固定長データテーブルインデックスが次の固定長データテーブルの読み出しインデックスとなる。
【００７７】
もし、ＮＶＣ動作のエントリーデータと比較動作のエントリーデータで格納できないほどに著しく多い固定長データがポインタテーブルのあるエントリーに属している場合には、ＮＶＣ動作のエントリーデータを増やし、ＮＶＣ動作のエントリーデータ、ＮＶＣ動作のエントリーデータ、そして比較動作のエントリーデータという構成で、非常に大きな数の固定長データが検索可能である。なお、ＮＶＣ動作自体が非常にまれな事態であるため、ＮＶＣ動作のエントリーデータが二つ続くケースはありえないと考えられるが機能としては用意されている。
【００７８】
図６に、固定長データテーブルメモリ５６０に格納される固定長データテーブルのエントリー制御データの内容を示す。エントリー制御データはポインタテーブルのエントリーデータと同様な構成である。図６に示されたようにエントリー制御データは大きく分類して３つの要素に分けられる。それらは（１）次工程、（２）次工程で必要なデータ、（３）メモリ制御データである。メモリ制御データは、固定長データテーブルを格納する固定長データテーブルメモリ５６０を構成するメモリアレイ５６１であって、次に読み出されるメモリアレイ５６１を制御するデータである。固定長データテーブルメモリ５６０においては、固定長データが格納されているメモリアレイだけが、メモリ制御データにより読み出される。次に読み出されるメモリがポインタテーブルメモリ５００である場合、メモリ制御データは無視される。
【００７９】
エントリー制御データは次の５つの次工程を備える。
（１）固定長データテーブルのこのエントリーに固定長データは無い。
検索終了となる。
（２）ポインタテーブルの再読み出しを行う。
（３）ローカルテーブル（ＬＴ）の読み出しを行い、比較を実行する。
（４）固定長データテーブルの読み出しを行い、ＮＶＣを実行する。
（５）固定長データテーブルの読み出しを行い、比較を実行する。
これら次工程を詳しく説明する。
【００８０】
次工程が上記（１）である場合、すなわち、固定長データテーブルのこのエントリーに固定長データは無い場合、比較手段を経て出力手段８００から検索結果が出力される。もし比較手段４００に、同期検索番号１９２に相当する検索結果が貯蔵されていなければ、不一致の検索結果が同期検索番号１９２と共に出力される。
【００８１】
次工程が上記（２）である場合、すなわち、ポインタテーブルの再読み出しを行う場合、固定長データテーブルの当該エントリーに多数の固定長データが存在するため、よりいっそうの細分化が必要であることを意味する。その手段として、ポインタテーブルによる細分化が図られる。ＳＰＴのインデックスを発生する目的で、このエントリーは、ポインタテーブルメモリ５００のベースアドレス、ポインタテーブルのサイズ、全インデックスの開始ビット位置、および全インデックスの終了ビット位置を備える。ＳＰＴのインデックスはポインタテーブルメモリ５００のベースアドレスと全インデックスの開始ビット位置から終了ビット位置に存在するビットを連結して得られる。全インデックスの開始ビット位置から終了ビット位置に存在するビットは、ポインタテーブルインデックスとは異なる部分である。ＳＰＴのインデックスが得られた後、比較手段を経て再びポインタテーブルの読み出しを行う。その後の工程は、読み出されたポインタテーブルのエントリーに従う。
【００８２】
次工程が上記（３）である場合、すなわち、ローカルテーブル（ＬＴ）の読み出しを行い、比較を実行する場合、固定長データテーブル内に構築されたＬＴの読み出しを行い、得られた多数の固定長データの比較を行う。これは、ポインタテーブルのこのエントリーに多数の固定長データが存在するため、よりいっそうの細分化を図る必要があることを意味し、ＬＴはその手段の一つである。ＬＴは、固定長データテーブル内の複数のエントリーをテーブルとして活用する。ＬＴのインデックスは固定長データテーブルのインデックスの上位部分と全インデックスの開始ビット位置から終了ビット位置に存在するビットを連結して得られる。ＬＴのインデックスが得られた後は（５）の工程の固定長データテーブルのインデックスが得られた後と同じである。
【００８３】
次工程が上記（４）である場合、すなわち、固定長データテーブルの読み出しを行い、ＮＶＣを実行する場合、ポインタテーブルのこのエントリーに超多数の固定長データが存在するため、真剣によりいっそうのグループ化が必要であることを意味する。このエントリーデータは固定長データテーブルのインデックスを備え、そのインデックスで固定長データテーブルの読み出しを行い、読み出されたデータでＮＶＣを実行する。この次工程が使われることはまれなことである。この次工程の次は（４）または（５）である。（４）が選ばれる場合、このエントリーは巨大な数の固定長データを持つことが予想される。前次工程がＮＶＣの実行を指示している場合、図６に示されたようにエントリー制御データは全インデックスから抽出するデータを含む。
【００８４】
次工程が上記（５）である場合、すなわち、固定長データテーブルの読み出しを行い、比較を実行する場合、このエントリーデータは、固定長データテーブルのインデックスと固定長データテーブルのメモリ制御データを備え、そのインデックスの作用により固定長データテーブルの読み出しを行い、読み出されたデータを用いて比較を実行する。固定長データテーブルの読み出しの際、固定長データテーブルのメモリ制御データは、このエントリーに属する固定長データが格納されているメモリアレイ５６１だけを読み出す。これにより、メモリ読み出し回数を増大し、メモリ読み出しに必要な電力の節約になる。一般に、固定長データ検索装置１０で検索される大部分はこの次工程により検索終了する。このエントリーデータから、固定長データテーブルのインデックスを得た後、固定長データテーブルが読み出される。得られた複数の固定長データテーブルのエントリーは比較手段４００に送られ、同期入力固定長データ１９３と比較され、比較結果が得られる。前次工程がＮＶＣの実行を指示している場合、図６に示されたようにエントリー制御データは全インデックスから抽出するデータを含む。
【００８５】
［比較手段］
固定長データテーブルメモリ５６０の出力であるエントリーデータは比較手段４００に入力される。比較手段４００の目的は、入力されたエントリーデータと前もって保存された同期入力固定値データ１９３とを比較し（比較動作）、比較により得られた結果を保持すること、入力されたエントリーデータと全インデックスから抽出した抽出インデックスを大小比較すること、および、入力されたエントリー制御データの次工程に従い、次の工程を決定することである。
【００８６】
比較手段４００の実施例を図１０に示す。比較手段４００への入力は固定長データテーブルメモリ５６０の出力である固定長データテーブルのエントリーデータと入力固定長データ処理手段の出力とである。図１０に示したように、比較手段４００は、入力固定長データ処理手段１００から出力された同期検索番号１９２と全インデックス１９０を受け取り、デコーダー４１１により同期検索番号１９２をデコードして、その番号ｘに相当するレジスターＴｘ、４１２に同期入力固定値データ１９３と全インデックス１９０を格納する。同期入力固定値データ１９３は、固定値データテーブルメモリ５６０から出力された固定値データテーブルのエントリーデータと比較を行うために使われ、全インデックス１９０は、ポインタテーブルインデックスまたは固定値データテーブルインデックスの発生のために使われる。
【００８７】
固定長データテーブルメモリ５６０から入力される同期検索番号とエントリーデータはレジスターＨに保持される。比較手段４００の機能は、レジスターＨ、４２１のメモリ制御データ以外のエントリーデータの処理、すなわち前次工程の処理とレジスターＨのエントリーデータの持つ次工程の処理とである。このため、前次工程の示す処理を最初に説明し、その後、エントリーデータが含む次工程によって実行される、比較手段４００の処理を説明する。各説明における動作手順は比較制御機能４４０により管理される。比較制御機能４４０は入力される次工程により比較手段４００の他の回路の制御信号を発生する。
【００８８】
前次工程において固定長データテーブルメモリ５６０から比較手段４００への入力が生じるのは次の５つのケースである。
（１）ポインタテーブルのこのエントリーに固定長データは無い。検索終了となる。
（２）ポインタテーブルのこのエントリーに一つの固定長データが存在する。検索終了となる。
（３）ローカルテーブル（ＬＴ）の読み出しを行い、比較を実行する。
（４）固定長データテーブルの読み出しを行い、ＮＶＣを実行する。
（５）固定長データテーブルの読み出しを行い、比較を実行する。
以下、各ケースについて比較手段４００の処理を説明する。
【００８９】
次工程が上記（１）である場合、すなわち、このエントリーに固定長データが無い場合においては、比較制御機能４４０は検索の終了を認識する。この際、レジスターＨに保持されている同期検索番号ｘに相当するレジスターＵｘの内容、すなわち、検索結果４５３と固定長データ名４５２がｎ：１選択器４２４を通して、同期検索番号４５１を伴って、出力手段８００に出力される。それと同時に、検索結果が一致結果を示す場合には、同期検索番号４５１と同期検索番号ｘに相当するレジスターＵｘに保持されるデータテーブルインデックス４５５が修正手段３００に送られる。
【００９０】
次工程が上記（２）である場合、すなわち、このエントリーに一つの固定長データが存在する場合、比較制御機能４４０は検索の終了および一致結果を認識し、比較器４３１に対し、レジスターＨに保持されている固定長データテーブルのインデックスのアドレスをｎ：１選択器４３２に出力し、一致結果を出力させる。ｎ：１選択器４３２は固定長データ名と固定長データテーブルインデックスを、比較器４３１は検索結果と固定長データテーブルのインデックスのアドレスを出力し、その出力は同期検索番号ｘに相当するレジスターＵｘに書き込まれる。書き込み動作後、ｎ：１選択器４２４を通して出力手段８００と修正手段３００に出力される。固定長データテーブルインデックスと固定長データテーブルのインデックスのアドレスを連結することによりデータテーブルインデックス４５５が得られる。出力手段８００に出力されるデータは検索結果４５３、同期検索番号４５１と固定長データ名である。そして修正手段３００に出力されるデータは同期検索番号４５１とデータテーブルインデックス４５５である。
【００９１】
次工程が上記（３）である場合、すなわち、ローカルテーブル（ＬＴ）の読み出しを行い、比較を実行する、および（５）固定長データテーブルの読み出しを行い、比較を実行する場合、レジスターＨに保持されているエントリーデータについての比較手段４００が行う処理は同じである。レジスターＨに保持されている同期検索番号により、ｎ：１選択器４１３はレジスターＴｘを選択し、その内容、すなわち同期入力固定長データと全インデックスを出力する。次工程が（３）または（５）であるため、２：１選択器は、同期入力固定長データをレジスターＴｘの出力から選択する。そして、その出力は抽出機能４１５に入力される。この際、同様に次工程（３）または（５）であるため、抽出機能４１５は機能せず、入力された同期入力固定長データはそのまま出力されずに、比較器４３１に入力される。一方、レジスターＨに保持されている固定長データテーブルの各要素は比較器４３１に入力され、比較動作が行われる。
【００９２】
比較器４３１は図１１に示す３種類の論理比較を行う。検索ルールがＬＰＭ（Longest Prefix Match）法の場合、固定長データテーブルの要素はマスク値を持つ。マスクは固定長データのビット長を有するビット列に展開される。展開方法は、マスクが持つ値（図１１ではｍ）に１を加えた和だけ左側のビット位置から１を並べ、それ以降は固定長データのビット長のところまで０を並べる。固定長データと同じ長さを有する展開されたビット列が論理比較動作のマスクとして動作する。この場合、固定長データの左側から（ｍ＋１）ビットだけ論理比較が行われる。論理比較は固定長データテーブルの要素と同期入力固定長データの左側の（ｍ＋１）ビットが一致すれば、一致していると判断し、それ以外の場合には不一致であると判断する。検索ルールがローカルマスクルール法により行われる場合、固定長データテーブルの要素はマスクそれ自体を有しており、そのマスクを使い、固定長データテーブルの要素と同期入力固定長データの論理比較を行う。論理比較はＬＰＭ法のマスク展開後の処理と同じである。ただし、マスクは任意のビット位置に１が存在するものであるため、１となっているビット位置においてのみ論理比較を実行する。検索ルールがグローバルマスクルール法により行われる場合、固定長データテーブルの要素はマスクを持たない。そのかわり、マスクは指定可能なレジスターに保存されている。そのマスクを使い、固定長データテーブルの要素と同期入力固定長データの論理比較が行われる。論理比較はローカルマスクルール法と全く同じである。
【００９３】
論理比較の結果、一致する固定長データテーブルの要素が存在すれば、一致要素のアドレスを発生させ、レジスターＨ４２１に保持されている同期検索番号ｘでアドレス指定されるレジスターＵｘ４２３に検索結果、固定長データ名、固定長データテーブルインデックス、および一致要素のアドレスを保存する。固定長データテーブルインデックスと一致要素のアドレスを連結すればデータテーブルのインデックスが得られる。
【００９４】
次工程が上記（４）である場合、すなわち、固定長データテーブルの読み出しを行い、ＮＶＣを実行する場合、図１１に示す大小比較を行い、検索を続ける。レジスターＨに保持されている同期検索番号ｘにより、ｎ：１選択器４１３はレジスターＴ１〜Ｔｎ４１２の中から、レジスターＴｘを選択し、その内容、同期入力固定長データと全インデックスを出力する。それらから、２：１選択器は、次工程（４）であるため、全インデックスを選択する。そして、その出力は抽出機能４１５に入力され、同様に次工程（４）であるため、抽出機能４１５はレジスターＨ４２１に保持されているＮＶＣの長さ、開始ビット位置、および終了ビット位置により制御され、それらから抽出インデックスを抽出し、比較器４３１に入力される。一方、レジスターＨ４２１に保持されている固定長データテーブルの各要素は比較器４３１に入力され、大小比較動作が行われる。ＮＶＣの長さ、開始ビット位置、および終了ビット位置は、前次工程がＮＶＣ動作を指示した場合、レジスターＨのエントリーデータの持つ次工程に保存されている。
【００９５】
比較器４３１は、図１１に示すように、抽出機能４１５からの抽出インデックス（Ａ）と固定長データテーブルの各要素の抽出インデックス（Ｂ）を大小比較する。比較器４３１はこの結果、Ａ＞Ｂ、Ａ＝Ｂ、そしてＡ＜Ｂを発生する。
【００９６】
結果として、比較器４３１は比較回路と大小比較回路を備える。これらの回路はいろいろなビット長を持つ固定長データを扱えるように、回路のビット長を変更可能な構成を持つ。１ビット単位で再配置可能な回路が無駄である場合には、バイト、またはワード単位で規定される再配置可能な回路を備える。
【００９７】
比較手段４００においては、記述された前次工程の処理と同時に、レジスターＨのエントリーデータの持つ次工程の処理が行われる。固定長データテーブルのエントリー制御データは図６に示されている下記次工程の処理を行う。
（１）固定長データテーブルの当該エントリーに固定長データは無い。検索終了となる。
（２）ポインタテーブルの再読み出しを行う。
（３）ローカルテーブル（ＬＴ）の読み出しを行い、比較を実行する。
（４）固定長データテーブルの読み出しを行い、ＮＶＣを実行する。
（５）固定長データテーブルの読み出しを行い、比較を実行する。
又、前次工程がＮＶＣ動作か否かでこれら次工程の処理は異なる、このため、最初は前次工程がＮＶＣ動作ではない場合を詳しく説明する。そしてその後、前次工程がＮＶＣ動作の場合について説明する。
【００９８】
次工程が（１）である場合、すなわち、固定長データテーブルのこのエントリーに固定長データは無い場合、比較制御機能４４０は検索の終了を認識し、レジスターＨに保持されている同期検索番号ｘに相当するレジスターＵｘの内容（すなわち、検索結果４５３と固定長データ名４５２）がｎ：１選択器４２４を通して、同期検索番号４５１を伴って、出力手段８００へと出力される。同時に、検索結果が一致結果を示す場合、同期検索番号４５１と同期検索番号ｘに相当するレジスターＵｘに保持されるデータテーブルインデックス４５５とが修正手段３００に送られる。
【００９９】
その他（２）〜（５）の次工程においてはエントリー制御データがレジスターＩ４３３に入力され、２：１選択器４３４を通して出力される。出力されるエントリー制御データ４５４はポインタ処理手段２００に出力される。
【０１００】
前次工程がＮＶＣ動作の場合、エントリー制御データの次工程としては次の３つが使用できる。
（１）固定長データテーブルのこのエントリーに固定長データが無い。
（２）固定長データテーブルの読み出しを行い、ＮＶＣを実行する。
（３）固定長データテーブルの読み出しを行い、比較を実行する。
このうち、次工程（１）は前次工程がＮＶＣ動作ではない場合の次工程（１）と全く同じ処理を行う。
【０１０１】
次工程が上記（２）と（３）である場合において、出力されるエントリー制御データは、前次工程がＮＶＣ動作ではない場合と異なる。前次工程がＮＶＣ動作を指定しているため、レジスターＨに保持されているエントリーデータの固定長データテーブルの各要素と大小比較が行われている。この際の比較は大小比較であるため、条件に合う要素が存在する。その要素の持つ固定長データテーブルのインデックスはｎ：１選択器４３２を通して、レジスターＩ４３３に保存される。そして固定長データテーブルのインデックスは次工程と共に、２：１選択器４３４を通して出力される。出力されるエントリー制御データ４５４はポインタ処理手段２００に出力される。
【０１０２】
比較手段４００が出力するデータのまとめを図１２に示す。比較手段４００は検索動作が終了したと判断した場合、修正手段３００と出力手段８００（図１）に図１２に示すデータを出力する。すなわち修正手段３００に同期検索番号を伴い、データテーブルのインデックスを出力する。これを使い修正手段３００はユーザーデータと統計データをアクセスする。出力手段８００に検索結果と同期検索番号を伴い、比較結果が一致した場合だけ固定長データ名を加えて出力する。又、比較手段４００は検索動作が続くと判断した場合、ポインタ処理手段２００に図１２に示すデータを出力する。すなわち、同期検索番号を伴い、前次工程がＮＶＣの場合、ＮＶＣ動作で得た固定長データテーブルインデックスが、その他の場合、エントリー制御データが出力される。
【０１０３】
比較手段４００（図１０）はその回路をレジスターＨ４２１とレジスターＩ４３３の前後に区分して、おのおのをステージと呼ぶと、各ステージで異なる同期検索番号を持つ検索動作が可能である。このように比較手段４００は検索処理能力を増大させるパイプライン処理を行う。比較手段４００の比較制御機能４４０は抽出機能４１５、比較器４３１、レジスターＵｘの格納信号発生、そしてパイプライン処理の管理を行う。
【０１０４】
ポインタ処理手段２００に出力されたエントリー制御データの処理は前記ポインタ処理手段２００で説明された方法により行われる。
【０１０５】
［修正手段］
修正手段３００に入力された同期検索番号４５１とデータテーブルインデックス４５５はデータテーブルに格納されているユーザーデータの読み出しと、統計データの変更を行う。図１３に修正手段３００の実施例を示す。
【０１０６】
図１３において、修正手段３００は、入力固定長データ処理手段１００から出力された同期検索番号１９２と同期統計データ１９４を受け取り、同期検索番号１９２をデコーダー３１１によりデコードして、その番号ｘに相当するレジスターＴｘに同期統計データ１９４を格納する。同期統計データ１９４はデータテーブルメモリ５４０から出力されたデータテーブルのエントリーデータの一つである統計データに加算される。加算結果は統計データが格納されていたのと同じエントリーに書き込まれる。データテーブルのエントリーデータにおける他のデータ、ユーザーデータは統計データと共に読み込まれ、出力手段８００に同期検索番号と共に出力される。
【０１０７】
図１３において、比較手段４００からデータテーブルインデックス４５５と同期検索番号４５１が入力されレジスターＫ３１６に格納される。レジスターＫの出力である読み込み同期検索番号３３６と読み込みデータテーブルインデックス３３５とはデータテーブルメモリ５４０に読み出し動作を行うために出力される。又、データテーブルインデックス３３５は統計データの変更後の書き込みを行うためにレジスターＭ３２２に格納される。
【０１０８】
データテーブルメモリ５４０の読み出し動作終了後、データテーブルメモリ５４０の読み出しデータ５５６、すなわち、同期検索番号とエントリーデータが入力され、同期検索番号はレジスターＭ３２２に、エントリーデータはレジスターＪ３１５に各々格納される。同期検索番号はｎ：１選択器の選択信号として使われ、同期検索番号ｘに相当するレジスターＶｘ３１２に格納されている統計データを選択する。選択された統計データはレジスターＬ３１３に格納され、加算器３２１に入力される。一方、レジスターＪ３１５に格納されているエントリーデータの統計データは、加算器３２１の他方の入力に送られる。エントリーデータのユーザーデータはレジスターＭ３２２に格納される。
【０１０９】
加算器３２１は加算結果を出力し、加算結果はレジスターＭ３２２に格納される。そして、レジスターＭ３２２の格納されている読み込みデータテーブルインデックス３３５、同期検索番号、および加算器の結果を、それぞれ書き込みデータテーブルインデックス３３４、書き込みおよび出力同期検索番号３３３、書き込み累積統計データ３３１の名前でデータテーブルメモリ５４０に出力して、書き込み動作をする。この際、管理データを処理する検索番号を受け取った場合には、加算器３２１は加算結果をレジスターＯ３２３に格納することもできる。管理データを扱う検索番号はデコーダー３２４で認識され、レジスターＯ３２３の格納信号となる。レジスターＯ３２３の出力は固定長データ検索および管理装置５０により読み出される。その詳細は後述する、固定長データ検索および管理装置５０に関連して説明する。
【０１１０】
レジスターＭ３２２に格納されているユーザーデータは、出力ユーザーデータ３３２として、書き込みおよび出力同期検索番号３３３と共に出力手段８００に出力される。図１３に、出力手段８００への出力データを示す。
【０１１１】
修正手段３００はその回路をレジスターＫ３１６、レジスターＪ３１５、レジスターＬ３１３とレジスターＭ３２２の前後に区分し、おのおのをステージと呼ぶと、各ステージで異なる同期検索番号を持つ検索動作が可能である。このように修正手段３００は検索処理能力を増大させるパイプライン処理を行う。又、修正手段３００の修正制御機能３４０は加算器３２１の制御とレジスターＫ３１６、レジスターＪ３１５、レジスターＬ３１３とレジスターＭ３２２の格納信号発生、そしてパイプライン処理の管理を行う。特に、レジスターＭ３２２は格納する各種データに合わせた格納信号を発生させる必要がある。
【０１１２】
［データテーブルメモリ］
図４に、データテーブルメモリ５４０の構成例を示す。データテーブルメモリ５４０はメモリアレイ５４１から構成されるメモリ部分と書き込みおよび読み出し回路５５０から構成される。修正手段３００の出力である書き込みデータテーブルインデックス３３４、および読み出しデータテーブルインデックス３３５は、データテーブルメモリ５４０のメモリのアドレス指定に使われ、読み出し同期検索番号３３６はデータテーブルメモリ５４０の読み出し回路の同期に使われる。書き込みデータテーブルインデックス３３４、および読み出しデータテーブルインデックス３３５は、図５に示されるように、メモリアレイ５５１のアドレス、メモリバンク５４２のアドレス、およびメモリバンク５４２内のアドレス（ディスプレースメント）から構成され、データテーブルメモリ５４０のメモリアドレスとなる。
【０１１３】
書き込み機能は、２箇所からの書き込み命令を受け付け、実行可能である。一つは修正手段３００からの書き込み命令であり、他はデータテーブルメモリ５４０の管理機能からの書き込み命令である。修正手段３００からの書き込み命令は、書き込みおよび読み出し回路５５０に入力される書き込みアドレス・制御信号Ａ５５１と書き込みデータ５５２とにより実行する。データテーブルメモリ５４０の管理機能からの書き込み命令は、書き込みおよび読み出し回路５５０に入力される書き込みアドレス・制御信号Ｂ５５３と書き込みデータ５５４とにより実行する。管理機能からの書き込み機能は、主に固定長データ検索および管理装置で使用される機能であるため、詳細説明は固定長データ検索および管理装置の説明で行う。
【０１１４】
読み出し機能は修正手段３００からの読み出し命令であり、読み出し命令はアドレス・制御信号５５５と命令に固有な読み出し同期検索番号３３６を伴う。これは、読み出し命令が順番には実行されず、実行可能な命令から実行されるためである。読み出し命令の実行後、読み出されたデータが図４の読み出しデータ５５６から、入力された読み出し同期検索番号３３６を伴って出力される。これにより、読み出しデータ５５６がどの読み出し命令によるものか判断できる。
【０１１５】
データテーブルメモリ５４０のメモリ部分はＵ（Ｕは１以上の整数）個のメモリアレイ５４１から成り、各メモリアレイはＶ（Ｖは１以上の整数）個のメモリバンク５４２から構成される。各メモリアレイ５４１は独立して動作し、複数のメモリアレイ５４１の全てあるいはその一部だけを同時に動作させることができる。メモリアレイ５４１において、各メモリバンク５４２は独立したタイミング発生回路を持つため独立に動作する。しかし各バンクを接続するアドレスとデータバスと制御信号が共通であるため、一時に動作開始可能なメモリバンク５４２は一つだけである。メモリ動作命令間隔に比べて、各メモリバンク５４２の動作時間が長いため、メモリアレイ５４１内の複数のメモリバンク５４２が動作できる。データテーブルメモリ５４０はＵ＊Ｖ個のメモリバンクから構成されるが、Ｕ＊Ｖ個のメモリアレイ５４１から構成しない理由はアドレス・データバスおよび制御信号が膨大な量になるからである。
【０１１６】
データテーブルメモリ５４０は同じメモリアレイ５４１にメモリ動作命令間隔で読み出し命令を与えることができる。メモリ動作命令間隔（ｔ秒）は、全てのメモリバンク５４２が動作可能な場合、読み出しアドレス・制御信号を運ぶバスと読み出しデータを運ぶバスの転送能力に依存する。毎秒最大Ｑ／ｔ回のメモリ動作命令すなわちデータテーブルの読み出しが実行可能である。しかしながら、複数の読み出し命令が同じメモリバンク５４２に対し与えられる場合、メモリの動作時間間隔でしかその命令を実行することができない。その場合、ポインタテーブルメモリ５４０の並列動作可能なメリットが失われる。この状況となった場合、解決法は動作時間を短縮するほか手段は無いが、この状況が短い時間内で起きる場合、メモリの並列動作を改善する手段を説明する。図５に、データテーブルメモリ５４０の読み出し機能５４９を示す。
【０１１７】
メモリアレイ５４１の読み出し機能５４９はｎ個のレジスター５４３とデータテーブルメモリ制御手段５４４から構成される。ｎ個のレジスターはＲ１、Ｒ２、Ｒ３、Ｒｎと名付けられ、読み出し命令を格納する。読み出し命令は読み出すメモリバンク５４２のアドレスを含むメモリアドレスと制御信号を含む。各レジスターはＲ２の読み出し命令をＲ１へ、Ｒ３の読み出し命令をＲ２へ移動する、独立したシフト動作を行える配線で結ばれ、各シフト動作はデータテーブルメモリ制御手段５４４が実行命令を出す。例えば、３つの読み出し命令が実行待ちの状態のとき、データテーブルメモリ制御手段５４４は、３つの命令をＲ１、Ｒ２、およびＲ３に格納するように管理する。この場合、命令を受けた時間はＲ１の命令が最初で、Ｒ３の命令が最後である。データテーブルメモリ制御手段５４４は担当するメモリアレイ５４１内の各メモリバンク５４２の動作状況を管理する。
【０１１８】
読み出し命令５５７が読み出し機能５４９に入力されると、データテーブルメモリ制御手段５４４は最後に格納されたレジスターの次のものを選択し、命令を格納する。例えば、Ｒ１、Ｒ２、およびＲ３が満室の場合、Ｒ４が選択され、命令はそれに格納される。メモリアレイ５４１の開始時間前に、データテーブルメモリ制御手段５４４は次に実行可能なメモリバンクに対する命令をＲ１、Ｒ２、Ｒ３、およびＲ４に格納されている命令の中から選択する。例えば、Ｒ２とＲ４内の命令が実行可能である場合、古い命令を実行する。この場合、Ｒ２の命令が実行され。Ｒ２の命令がメモリバンク５４２に転送された後、Ｒ３の命令はＲ２に移動され、Ｒ４の命令はＲ３にシフトされる。レジスターの数ｎはメモリアレイ５４１内のメモリバンク５４２の数、メモリ動作命令間隔、メモリの動作時間を考慮して決定される。このように、与えられた読み出し命令５５７を実行可能な命令から、実行することにより、単位時間当たりのメモリ読み出し回数が増大する。
【０１１９】
データテーブルメモリの読み出し機能を説明したが、データテーブルメモリは読み出しと同様に、読み出されたデータに修正を行い、同じ場所に書き込まれる。この為、上記説明で読み出し命令と書き込み命令を同時に制御しても良い。
【０１２０】
データテーブルメモリ５４０の出力は読み出された読み出しデータ５５６とその読み出し命令５５７に付属した読み出し同期検索番号３３６である。読み出しデータ５５６はデータテーブルのエントリーデータである。
【０１２１】
データテーブルメモリ５４０に格納されるデータタテーブルのエントリーデータの内容を図１３に示す。図１３に示されるように、エントリーデータは２つの要素に分けられる。それらは累積統計データとユーザーデータである。これらデータの処理は修正手段３００で説明した。
【０１２２】
［出力手段］
出力手段８００は検索結果を出力する。出力手段８００の実施例を図１４に示す。出力手段８００は比較手段４００から同期検索番号４５１、検索結果４５３と固定長データ名４５２が入力される。入力された、それらのデータは同期検索番号４５１のデコーダー８１１によって同期検索番号４５１（ｘとする）に相当するレジスターＳｘ８１２に格納される。
【０１２３】
同様に出力手段８００には修正手段３００から出力同期検索番号３３３と出力ユーザーデータ３３２が入力される。入力されたそれらのデータは、出力同期検索番号３３３のデコーダー８１５によって出力同期検索番号３３３（ｙとする）に相当するレジスターＳｙ８１２に格納される。
【０１２４】
出力手段８００は、比較手段４００から入力された検索結果４５３が不一致である場合、同期検索番号４５１、検索結果４５３および固定長データ名４５２が比較手段４００から入力されて、レジスターＳｘ８１２に格納され、ＡＮＤ−ＯＲ選択器８１３から出力されて、レジスターＮに格納され、そして検索結果出力８２０として出力される。図１４に、出力手段８００の出力として検索結果出力８２０を示す。このとき、レジスターＳｘ８１２の名前、すなわち同期検索番号もＡＮＤ−ＯＲ選択器８１３から出力、そしてレジスターＮに格納され、検索結果出力８２０として出力される。
【０１２５】
比較手段４００から入力された検索結果４５３が一致の場合、同期検索番号４５１と、検索結果４５３および固定長データ名４５２が比較手段４００から入力され、レジスターＳｘに格納される。そして修正手段からの出力ユーザーデータ３３２を待つ。修正手段３００から出力同期検索番号３３３と出力ユーザーデータ３３２が入力され、レジスターＳｘ８１２に格納された後、レジスターＳｘの全ての内容（同期検索番号を含む）がＡＮＤ−ＯＲ選択器８１３から出力され、レジスターＮ８１４に格納され、検索結果出力８２０として出力される。図１４に、出力手段８００の出力として検索結果出力８２０を示す。
【０１２６】
出力手段８００が行う出力判断は出力制御機能８４０により行われる。同期検索番号が管理データを扱う場合、出力制御機能８４０はそれに相当するレジスターＳｘ８１２の内容を検索結果出力８２０に出力しないで、レジスターＳｘ８１２の内容を管理検索結果出力８２１に直接出力する。
【０１２７】
レジスターＳｘ８１２に格納する回路とレジスターＮ８１４の回路おのおのをステージと呼ぶと、各ステージで異なる同期検索番号を持つ検索動作が可能である。このように出力手段８００は検索処理能力を増大させるパイプライン処理を行う。又、出力手段８００の出力制御機能８００は出力判断、レジスターＮ８１４の格納信号発生、そしてパイプライン処理の管理を行う。
【０１２８】
［実施例］
図１は本発明固定長データ検索および管理装置５０に係る実施例を示すブロック図である。図１に示す固定長データ検索および管理装置５０は、前記固定長データ検索装置１０（図１）に加え、入力されたテーブル管理命令１を解釈および実行するテーブル管理制御手段６００と、固定長データテーブルメモリ５６０において、一つのメモリアドレスまたは複数のメモリバンク５６２の異なるメモリアドレスを用いて読み出される単位を家と定義した場合、使用されていない家を管理する空家テーブルを格納する空家テーブルメモリ７００と、前記家において、固定長データと検索に必要な固定長データに対応するデータそして検索に必要なデータを保持する単位を室と定義した場合、使用されていない室を持つ家を管理する空室テーブルを格納する空室テーブルメモリと、室の使用状態を管理する室管理テーブルを格納する室管理メモリ７４０と、検索方法により構築されたテーブルの構造を管理する構造管理テーブルを格納する構造管理テーブルメモリ７６０とを備える。なお、前記空室テーブルメモリ７００と空家テーブルメモリ７２０と室管理テーブルメモリ７４０と構造管理テーブルメモリ７６０を単一のメモリで構成するようにしてもよい。
【０１２９】
上記メモリのほかに、固定長データ検索装置１０に含まれる、ポインタテーブルメモリ５００と、固定長データテーブルメモリ５６０と、データテーブルメモリ５４０は検索動作のための読み出し・書き込み動作中であっても、テーブル管理制御手段６００により割り込まれ、読み出し、そして書き込みが可能な構成を持つ。この場合、テーブル管理制御手段６００のそれらのメモリに対する読み込みと書き込み動作は、検索動作の問題または妨害にはならない。
【０１３０】
図１５に、空家テーブルメモリ７００に格納される空家テーブル７０１と、そのエントリーデータとを示す。空家テーブル７０１のエントリーデータは、家制御ビット７０３と次の空家のインデックス７０４から構成される。空家テーブル７０１のエントリー数は最大で固定長データテーブルが持つ家の数である。空家テーブル７０１は空家を管理するだけの役割であるため、この他にもいろいろな実施例が考えられる。
【０１３１】
［空家テーブルメモリ］
図１５に、空家テーブル７０１の実施例の一つと、その使用法をあわせて示す。空家の管理においては登録された空家は順次使用されるため、空家テーブル７０１と空家開始レジスター７０２により行われる。空家開始レジスター７０２は空家ありビットと最初の空家のインデックスを保持する。図１５に、６個の空家、Ａ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆの管理を示す。空家テーブル７０１は一方向のリンク構造を持ち、空家テーブル７０１のエントリーＡは終了ビットがオフの家制御ビット７０３と次の空家のインデックス７０４にＢの値とを持つ。同様に、エントリー、Ｂ、Ｃ、Ｄ、Ｅは終了ビットがオフの家制御ビット７０３と次の空家のインデックス７０４、Ｃ、Ｄ、Ｅ、Ｆをそれぞれ持つ。エントリーＦは終了ビットがオンの家制御ビット７０３だけを保持する。そして、空家開始レジスター７０２は最初の空家のインデックスＡを持つ。空家への要求がある場合、空家開始レジスター７０２が保持する空家ありビットがオンであることを確認できれば、家のインデックスＡは使用可能である。空家ありビットがオフであれば空家はないと確認できる。そして、空家のインデックスＡで空家テーブル７０１を読み出し、家制御ビットの終了ビットがオフのとき、読み出されたインデックスＡにある次の空家のインデックス７０４、Ｂを空家開始レジスター７０２に保持する。この動作は、空家開始レジスター７０２が空家インデックスＦを格納するまで行われる。その後、空家を求める要求に対し、空家開始レジスター７０２の保持する空家ありビットがオンであるため、空家のインデックス７０４、Ｆは空家として使用される。その後、空家のインデックス７０４、Ｆを読み出し、家制御ビットの終了ビットがオンであることに対応させて、空家開始レジスター７０２の空家ありビットをオフに変更する。その後は空家の要求に対し空家無しの状態が続く。空家を登録する場合、登録する空家のインデックスを空家開始レジスター７０２の持つインデックスに書き込み、同時に書き込まれたインデックスの終了ビットをオフにする。このとき、空家開始レジスター７０２の空家ありビットがオフである場合、空家ありビットをオンに変更する。以上の方法によって、空家の入手および登録が可能となる。
【０１３２】
［空室テーブルメモリ］
図１６に、空室テーブルメモリ７２０に格納される空室テーブル７２１とそのエントリーデータを示す。登録された空室を持つ家は必要なときに使用されるため、空室テーブル７２１のエントリーデータは、室制御データ７２３と、前の空家のインデックス７２５と、次の空家のインデックス７２６とから構成される。空室テーブル７２１のエントリー数は最大で固定長データテーブルが持つ家の数である。空家テーブル７０１は空室を持つ家を管理するだけの役割であるため、いろいろな実施例が考えられる。
【０１３３】
図１６に、空室テーブル７２１の実施例の一つであり、使用法をあわせて示す。空室のある家の管理は空室テーブル７２１とｘ空室開始レジスター７２２により行われる。ｘは空室数を表す整数であり、図１６に、１室空いている家を管理する１空室開始レジスターと、同様に２室、３室、そして４室空いている家を管理する２空室開始レジスター、３空室開始レジスター、そして４空室開始レジスターを示す。各ｘ空室開始レジスター７２２は前記空家開始レジスター７０２と同じ役割を行う。図１６において示される、２空室開始レジスターを伴う空室管理動作を説明する。
【０１３４】
２空室開始レジスター７２２は、空室ありビットと最初の２空室のある家のインデックスとを保持する。図１６に、５個の２空室を持つ家、Ａ、Ｂ、Ｃ、Ｄ、Ｅの管理を示す。空室テーブル７２１は双方向のリンク構造を持ち、空室テーブル７２１のエントリーＡは終了ビットがオフの室制御ビット７２３と、次の家のインデックス７２６、Ｂ、を持つ。この場合、２空室を有している前の家のインデックス７２５は最初のエントリーであるため必要が無い。同様に、エントリー、Ｂ、Ｃ、Ｄは終了ビットがオフの室制御ビット７２３と、前の家のインデックス７２５、Ａ、Ｂ、Ｃと、次の家のインデックス７２６、Ｃ、Ｄ、そしてＥ、をそれぞれ持つ。エントリーＥは終了ビットがオンにされている室制御ビット７２３と前の家のインデックス７２５、Ｄだけを保持する。そして、２空室開始レジスター７２２は最初の２空室を持つ家のインデックスＡを持つ。２空室を持つ家の要求がある場合、２空室開始レジスター７２２が保持する空室ありビットのオンが確認できれば、２空室開始レジスター７２２の家のインデックスＡは使用可能である。空室ありビットがオフであれば空室を有する家はないと確認できる。そして、家のインデックスＡで空室テーブル７２１を読み出し、室制御ビットの終了ビットがオフのとき、読み出されたインデックスＡの次の家のインデックス７２４、Ｂ、を２空室開始レジスター７２２に保持する。この動作が、２空室開始レジスター７２２が家インデックスＥを格納するまで行われる。その後、２空室の要求に対し、２空室開始レジスター７２２の保持する空室ありビットがオンであるため、次の家のインデックス７２６、Ｅ、は２空室を持つ家として使用される。その後、次の家のインデックス７２６、Ｅ、を読み出し、室制御ビットの終了ビットがオンであるため、２空室開始レジスター７２２の空室ありビットをオフに変更する。その後は２空室を持つ家の要求に対し２空室を持つ家は無い状態が続く。
【０１３５】
２空室をもつ家を登録する場合、登録する２空室を持つ家のインデックスを２空室開始レジスター７２２の持つインデックスにおける前の家のインデックス７２５に書き込み、同時に書き込まれたインデックスの終了ビットをオフにする。又、登録する２空室を持つ家のインデックスにおける前の家のインデックス７２５に２空室開始レジスター７２２の持つインデックスを書き込む、そして、２空室開始レジスター７２２に登録する２空室を持つ家のインデックスを書き込む。このとき、２空室開始レジスター７２２の２空室ありビットがオフである場合、２空室ありビットをオンに変更する。
【０１３６】
２空室をもつ家の１室に書き込み要求が発生した場合、空室テーブル７２１のその家を２空室開始レジスター７２２が作成するリンクから登録を削除する必要がある。この場合、例えば、その家を示すインデックスがＣであるとすると、インデックスＣを読み出し、前の家のインデックス７２５、Ｂと次の家のインデックス７２６、Ｄを得る。インデックスＢにおける次の家のインデックス７２６にインデックスＤを書き込み、さらに、インデックスＤにおける前の家のインデックス７２５にインデックスＢを書き込む。この結果、インデックスＣは２空室開始レジスター７２２が作成するリンクから削除され、リンクはインデックスＡ、Ｂ、Ｄ、そしてＥとなる。以上の方法によって、２空室を持つ家の入手、登録および登録削除が可能となる。
【０１３７】
図１７に室の管理法を示す。説明を簡単にするために、２つのメモリアレイに、家が構成され、家は８個の室を持つと仮定するが、本発明がこれに限られるものではない。検索動作で論理比較される固定長データの集まり、すなわち室の集まりを以後団体と呼ぶ。室の管理法の基本は全ての家を満室状態にすることである。満室状態とは図１７に示すように、一つの団体または複数の団体により家に存在する全ての室が使用されることである。満室にするために、団体の数を増やすことは、管理の複雑性、および必要なメモリおよびレジスターの増大等につながり、その効果は少ない場合があるために、一つの家に存在する可能な団体の数を例えば２とする。家に２つの団体が存在するとき、他の団体より多くの室を所有する団体を大団体、その他を小団体と呼ぶ。家に団体を保存するときは大団体を基本に考える。すなわち、大団体を保存した家は空室の数で管理される。管理は前記空室テーブルとｘ空室開始レジスターにより行われる。ｘは１〜４の整数である。大団体と同居する以上に小団体が多く存在した場合、図１７の最下段に示されるように、家を２分割し、分割した家に２つの小団体を格納する。この場合、１室、２室そして３室を所有する団体が入居する。これらの団体を管理するためには、ｘ’ 空室開始レジスターが管理に使用される。この理由は、ｘ’ 空室開始レジスターにより管理される家の数については、固定長データテーブルの有効利用を考えて最小にする努力が必要であるためである。このため、ｘ空室が必要となった場合には、最初にｘ’ 空室開始レジスターに登録されている家を利用する。それらの家が無くなったら、ｘ空室開始レジスターに登録されている家を利用する。
【０１３８】
図１８に、室管理テーブルメモリ７４０に格納されている室管理テーブル７４１とそのエントリーデータを示す。室管理テーブル７４１のエントリー数は固定長データテーブルの家の数と同じであり、各家に室管理テーブル７４１の各エントリーが対応する。室管理テーブル７４１のエントリーの一般形式は、図１８に示されているように、室管理データ７４２とｎ個の団体データ７４５から構築される。説明はｎが２の場合について行う。室管理データ７４２は家の形式７４４と家が持つデータの形式７４３を持つ。データの形式７４３は１ビットで、家が格納しているデータ、ＮＶＣか論理比較データかを選択する。家は（１）一つの団体または、（２）大団体と小団体または、（３）二つの団体、により構成されるので、家の形式７４４は２ビットで表現されており、上記３つの形式のうち一つを選択的に有する。一つの団体が家に格納されたとき、団体１データがその団体を示し、団体２データは無視される。大団体と小団体が選択されたとき、団体１データは大団体を記述し、団体２データは小団体を記述する。二つの団体が選択されたとき、団体１データと団体２データはそれぞれの団体を記述する。団体データ７４５は団体が格納されている家を呼び出す上位テーブルのインデックスまたはアドレスを表すテーブルタイプ７４６と上位アドレス７４８および団体の占める室数７４７を持つ。テーブルタイプ７４６がポインタテーブルのとき、上位アドレス７４８はポインタテーブルのインデックスを表わし、テーブルタイプ７４６が固定長データテーブルのとき、上位アドレス７４８は固定長データテーブルのインデックスを表わす。テーブルタイプ７４６が空室テーブルのとき、上位アドレス７４８は空室テーブルのインデックス、すなわち家のインデックスを表す。大団体が一つの室を必要になった場合には、小団体を他の家に移動し、空き室となった室を大団体に使用させることが必要となる。この場合、小団体の各パラメータを入手・修正するために室管理テーブルのデータが利用される。
【０１３９】
図１９に、前記固定長データテーブルの家と、ポインタテーブルのインデックスと、室管理テーブル７４１のエントリーデータと、空室テーブル７２１との関連を示す。家が満室の場合、固定長データテーブルのインデックスＳは大団体を指定するポインタテーブルのインデックスＡのエントリーに含まれ、又小団体を指定するポインタテーブルのインデックスＢのエントリーにも含まれる。この関係は室管理テーブル７４１のインデックスＳのエントリーデータに記述される。空室がある場合、空き室のある家Ｒは大団体を指定するポインタテーブルのインデックスＡのエントリーに含まれ、その空室はその数で表されるｘ空室テーブルにより管理される。この場合、室管理テーブル７４１のインデックスＲのエントリーデータは大団体を記述するポインタテーブルのインデックスＡと空室を記述するｘ空室テーブルのインデックスＲを持つ。図１９でｘ空室テーブルは空室テーブルでｘ空室開始レジスターによりリンクされたテーブルを意味する。
【０１４０】
図２０に、空家テーブル７０１と空室テーブル７２１と室管理テーブル７４１を一つのテーブルにまとめた家管理テーブル７５１の例を示す。家管理テーブル７５１のエントリーデータは、家・室制御データと、次の空家のインデックスまたは前の空室のある家のインデックスと、次の空室のある家のインデックスと、ｎ個の団体データとから構成される。家・室制御データは、終了ビットと、データ形式と、家の形式とを有する。家・室制御データと次の空家のインデックスまたは前の空室のある家のインデックスで空家テーブルの機能が実現でき、家・室制御データと、次の空家のインデックスまたは前の空室のある家のインデックスと、次の空室のある家のインデックスで空室テーブルが実現され、家・室制御データとｎ個の団体データにより室管理テーブルの機能が実現できる。このとき、空家開始レジスターとｎ空室開始レジスターは３つの機能を実装するために必要である。
【０１４１】
［構造管理テーブルメモリ］
図２１に、構造管理テーブルメモリ７６０に格納されている構造管理テーブル７６１とそのエントリーデータとを示す。構造管理テーブル７６１のエントリー数はポインタテーブルのエントリー数と同じである。エントリーデータは、構造制御ビットと、ポインタテーブルのエントリーが持つ固定データ長データ数と、リンクアドレスとにより構成される。本発明においては、検索方法として、検索対象の固定長データの集団を一時に比較可能な数に分解し、比較することはすでに述べた。しかし、固定長データの集団の分布においては、一時に比較可能な数の分布にはなっていないのが一般的である。このため、本発明は二次ポインタテーブル、ローカルテーブル、ＮＶＣ比較法のテーブル等の手法を導入し、固定長データの集団の分散化を図る。本発明の実際の実装においてはこれらの方法を組み合わせる。図２１の詳細説明を行う前に、テーブルの構造から見た検索手順を図２２で説明し、その構造の変移を図２１を用いて説明する。その後、構造変移に必要なデータに関して図２１の構造管理テーブルを参考に説明する。
【０１４２】
図２２に検索手順の例を示す。その他の検索手順も作成可能ではあるが、説明のため、手順１から手順５を検索手段の説明に使う。手順１はポインタテーブルを読み出し、固定値データテーブルのインデックスを得て、固定値データテーブルを読み出し、比較を行う。この手順はポインタテーブルのエントリーの持つ比較データ数が一つの家に格納できる固定長データの数以下の場合に実現する。説明では家が持つ室数（固定長データの数）を８と仮定しているため、ポインタテーブルのエントリーの持つ固定長データの数が８以下の場合である。本発明の固定長データ検索装置１０は、大多数の固定長データを手順１により検索することができる。手順２は手順１に固定長データテーブルの読み出しと比較動作を加えたものである。この手順はポインタテーブルのエントリーの持つ比較データ数が１６以下の場合に使われる。手順１と手順２の間に構造の変化は存在しない。
【０１４３】
手順３は、手順１の次に、第２ポインタテーブル（ＳＰＴ）の読み出しを行い、入手した固定長データテーブルのインデックスで固定長データテーブルの読み出し、および比較動作を行う。最初の固定長データテーブルの読み出し・比較動作の後にＳＰＴと固定長データテーブルの読み出しを行う理由は、検索をＬＰＭルールで行う場合、ＳＰＴのインデックスを発生するために使われる全インデックス１９０の一部のビットのビット位置と固定長データの要素であるマスクの関係で、ＳＰＴ前に比較が必要な固定長データが存在するためである。手順３が扱う固定長データの数は最低１７個で、最高（８＊ｎ＋８）個である。ｎはＳＰＴのサイズである。ＳＰＴが３ビットでインデックスされると考えると最高７２個の固定長データが手順３で処理できる。
【０１４４】
手順４は、手順３における最後の固定長データテーブルの読み出し・比較動作が、ローカルテーブルの読み出し・比較動作に置き換わられたものである。手順４は手順３におけるＳＰＴの一つのエントリーがローカルテーブルを要求した場合である。他のＳＰＴのエントリーが手順３で動作しても、一つのローカルテーブルが存在すれば手順４である。このため、手順４が扱う固定長データの数は最低１７個で、最高（８＊ｎ＊ｍ＋８）個である。ｍはローカルテーブルのサイズである。ローカルテーブルが３ビットでインデックスされると考えると最高５２０個の固定長データが手順４で処理できる。
【０１４５】
手順５は手順４までの手段と大きく異なり、ＮＶＣ構造のテーブルを作成し、大小比較で検索を行う。このため、手順５が扱う固定長データの数は最高（８＊ｐ＊ｐ）個である。ここで、ｐは一つの家が格納できるＮＶＣタイプのデータ数である。図２２における手順５で二つの構造を示しているが、実際のケースとしては二つの構造の組み合わせである。一般的にＮＶＣタイプのデータ数を固定長データの数の２倍と考えると最高２０４８個の固定長データが手順５により処理できる。一般的に、家が格納する室の数は、ポインタテーブルが固定長データの集団を理想的に分散した場合の数、すなわちポインタテーブルのエントリーが持つ平均固定長データ数の２倍の数に設定する。ポインタテーブルのエントリーが持つ平均固定長データ数が４であることを考えると、手順３と手順４の扱う固定長データ数は非常に大きいと考えられ、手順３と手順４が必要な場合はまれなときと推測される。手順５は手順３と手順４以上の場合であり、必要か否かの議論が存在する。しかし、手順５を用いることにより、実装される固定長データの分布が非常に大きく偏っていた場合でも、検索動作が可能となることがわかる。
【０１４６】
図２１に、各手順に必要なテーブルの構造の変移を示す。変移Ａは条件７７４が成立したとき、変移Ｂは条件７７５が成立したとき、変移Ｃは条件７７５が成立したとき、変移Ｄは条件７７９が成立したとき、変移Ｅは条件７７８が成立したとき、変移Ｆは条件７７７が成立したときに実行される。図２１では、手順１と手順２のテーブルの構造は同一とみなす。図２１において長方形７７０内の手順１/手順２は手順１または２により検索されるテーブル構造を意味する。他の長方形も同様である。
【０１４７】
ポインタテーブルのエントリーの持つ固定長データ数（簡単のため、ＰＴの固定長データ数と呼ぶ）が１６以内の場合、そのエントリーは手順１または手順２で検索が行われる。ＰＴの固定長データ数が１６個であるエントリーに、固定長データの付加命令が実行されたとき、すなわち、ポインタテーブルのエントリーが持つ固定長データ数が１６を超えるとき（条件７７４）、変移Ａが実行されて、手順３で検索するテーブル構造に変移する。
【０１４８】
手順３で検索されるエントリーのテーブル構造は最初ポインタテーブル、次に固定長データテーブル、次にＳＰＴ、最後に固定長データテーブルである。最後の固定長データテーブルの家が満室で固定長データの付加命令が実行されたとき、すなわち、ＳＰＴのエントリーが持つ固定長データ数が８を超えるとき（条件７７５）、手順４で検索するテーブル構造に変移する。
【０１４９】
手順４で検索されるエントリーのテーブル構造は最初ポインタテーブル、次に固定長データテーブル、次にＳＰＴ、最後にローカルテーブルである。最後のローカルテーブルのエントリーにおける家が満室で固定長データの付加命令が実行されたとき、すなわち、ＬＴのエントリーが持つ固定長データ数が８を超えるとき（条件７７６）、手順５で検索するテーブル構造に変移する。手順５は手順１から手順４までのテーブル構造とは全く異なるテーブル構造を持つ。このため、構造を管理する方法は手順１から手順４までのテーブル構造を管理した手法と同じ物を使う。しかし、手順５で検索されるエントリーのテーブル構造は最初ポインタテーブル、次にＮＶＣ構造の固定長データテーブル、次にＮＶＣ構造の固定長データテーブル、最後に固定長データテーブルである。
【０１５０】
手順５で検索されるエントリーにいくつかの固定長データの削除命令が実行されたとき、その結果ローカルテーブルの全てのエントリーが８以下の固定長データを持てば、すなわち、ＬＴのエントリーが持つ固定長データ数が８以下になるとき（条件７７９）、手順５で検索されるテーブル構造は手順４で検索されるテーブル構造に変移する。同様に、手順４で検索されるエントリーにいくつかの固定長データの削除命令が実行されたとき、その結果ＳＰＴの全てのエントリーが８以下の固定長データを持てば、すなわち、ＳＰＴのエントリーが持つ固定長データ数が８以下になるとき（条件７７８）、手順４で検索されるテーブル構造は手順３で検索されるテーブル構造に変移する。最後に、手順３で検索されるエントリーにいくつかの固定長データの削除命令が実行されたとき、その結果ＰＴの全てのエントリーが１６以下の固定長データを持てば、すなわち、ポインタテーブルのエントリーが持つ固定長データ数が１６以下になるとき（条件７７７）、手順３で検索されるテーブル構造は手順１/手順２で検索されるテーブル構造に変移する。上記条件、７７７、７７８、７７９でそれぞれ１６以下、８以下、８以下の尺度が規定されているが、実際の値は指定可能とする。
【０１５１】
図２１に示されている構造管理テーブルは、各手順で検索されるテーブル構造の変移（図２１）を行うデータを管理する。構造管理テーブル７６１はポインタテーブルと同じエントリー数を持ち、各エントリーはポインタテーブルのエントリーに対応する。構造管理テーブル７６１のエントリーは構造制御データ７６２と、ポインタテーブルのエントリーが持つ固定長データ数７６３と、リンクアドレス７６４とから構成される。構造制御データ７６２は手順番号７６５と、ＳＰＴのサイズ７６６と、ローカルテーブルのサイズ７６７とで構成される。手順番号７６５が手順１または手順２である場合、ＳＰＴのサイズ７６６と、ローカルテーブルのサイズ７６７と、リンクアドレスは無視される。ポインタテーブルの大部分のエントリーはこれらの手順に入る。
【０１５２】
手順番号７６５が手順３である場合、ＳＰＴのサイズ７６６とリンクアドレスは使われ、ローカルテーブルのサイズ７６７は無視される。この場合、リンクアドレス７６４はＳＰＴの各エントリーが持つ固定長データ数のテーブル７６８の位置を示す。ＳＰＴのサイズ７６６はＳＰＴのエントリー数ｎである。
【０１５３】
手順番号７６５が手順４または手順５である場合、ＳＰＴのサイズ７６６と、ローカルテーブルのサイズ７６７と、リンクアドレスは使われる。この場合、リンクアドレス７６４はＳＰＴとローカルテーブルの各エントリーが持つ固定長データ数のテーブル７６９の位置を示す。ＳＰＴのサイズ７６６はＳＰＴのエントリー数ｎであり、ローカルテーブルのサイズ７６７はローカルテーブルのエントリー数ｎである。このように、構造管理テーブル７６１を活用することにより、検索手順に対応するテーブル構造の変移を行うことができる。ここで注意すべきことは、手順５はＮＶＣ構造のテーブルを使って検索を行うが、構造管理テーブルによる、テーブル構造管理はＳＰＴとローカルテーブルの形式で管理することである。この方法により、構造管理に一貫性が生まれ、構造管理が効率的に、簡単に行うことが出来る。
【０１５４】
［テーブル管理手段］
テーブル管理手段６００のある実施例を図２３に示す。テーブル管理手段６００はＣＰＵ６０１と、入出力バス、ＣＰＵバス、メモリバス、メモリ信号を供える制御回路６０２と、ＣＰＵ６０１のプログラムとデータを格納するメモリ６０３とで構成される。図２３において説明するテーブル管理の方法は複雑なため、図２３で示されるＣＰＵ６０１によって実行される。入力バスは命令の入力に使われ、メモリバスは制御回路６０２と各テーブルメモリ間、または制御回路６０２と入力固定長データ処理手段１００の間で、または制御回路６０２と出力手段８００の間でのデータ転送に使われる。本実施例はテーブルの管理を行うプログラムが命令の同時実行を行い、複雑な構成となる場合がある。
【０１５５】
テーブル管理手段６００の他の実施例を図２３に示す。本実施例は実施例１でＣＰＵ６０１が実現する機能を細分化し、細分化された機能を図２３に示されたコントローラまたはシークエンサーにより実現するものである。図２３においてテーブル管理制御手段６００はホスト制御装置からの命令を受けて、その解析、実行を行う入力命令・実行機能６７０と、入力命令・実行機能６７０の付加命令実行時に、テーブルの構造の変移を必要としない付加を補助する単純付加機能６３０と、テーブルの構造の変移を必要とする付加を補助する構造変更付加機能６４０と、入力命令・実行機能６７０の削除命令実行時に、テーブルの構造の変移を必要としない削除を補助する単純削除機能６５０と、テーブルの構造の変移を必要とする削除を補助する構造変更付加機能６６０と、自動削除命令を発生させ、入力命令実行機能６７０に送る自動削除命令機能６２０と、入力命令実行機能６７０が一時的にデータを格納する一時記憶機能６１０とから構成される。
【０１５６】
図２３に示される一時記憶機能６１０を除く各機能は図２３に示されるコントローラまたはシークエンサーにより実現される。図２３において、コントローラまたはシークエンサーは初期化信号により初期化される、又インストラクション実行回路６０７の実行結果により変更されるインストラクションカウンター６０４と、インストラクションカウンター６０４でインデックスされ読み出されるインストラクションを格納するインストラクションメモリ６０５と、読み出されたインストラクションをデコードするインストラクションデコード６０６と、デコードされた信号により制御され指定された機能を実行する実行回路６０７と、実行回路６０７に必要なデータを一時的に格納するレジスター６０８と、実行回路６０７とレジスター６０８とその他の回路間のデータ転送を行う内部バス６０９とにより構成される。コントローラまたはシークエンサーは実行する機能が細分化されているため、そしてその機能にあった実行回路を実装することにより、インストラクションメモリ６０５のサイズは最小にでき、またコントローラまたはシークエンサーは単純化が可能である。以下、コントローラまたはシークエンサーを使用した各機能を説明する。
【０１５７】
図２４に入力命令・実行機能６７０（図２３）が受付けるホスト制御装置からの４つの命令を示す。図２４に示されているように、付加命令は固定長データと、マスクと、固定長データ名と、ユーザーデータと、状態ビットを伴って入力される。この場合、検索ルールにより、マスクが送られない場合がある。送られた固定長データ、マスク、および固定長データ名が固定長データテーブルに、ユーザーデータと初期化された統計データがユーザーデータテーブルに格納される。状態ビットは要素制御データの作成に使用される。状態ビットがこの要素を常駐させることを示す場合、要素制御データは常駐状態にセットされる、それ以外は使用状態にセットされる。削除命令は固定長データを伴い入力される。送られた固定長データとそれに関連するデータが固定長データテーブルおよびユーザーデータテーブルから削除される。統計データ引出命令は固定長データを伴い入力される。入力された固定長データに関する統計データがホスト制御装置に送られる。最後に自動削除名引出命令は引出自動削除名数を伴って入力される。自動削除機能により削除された引出自動削除名数の固定長データの固定長データ名がホスト制御装置に送られる。自動削除機能により削除された固定長データが引出自動削除名数以下である場合、削除された固定長データ数の削除固定長データ名が送られる。
【０１５８】
図２４に、入力命令・実行機能６７０の実施例を示す。入力命令・実行機能６７０は二つのコントローラまたはシークエンサーを持ち、一つはホスト制御装置からの入力命令を処理し、他は自動削除命令機能６２０からの入力命令を処理する。二つのコントローラまたはシークエンサーを備える理由は、ホスト制御装置からの入力命令と自動削除命令機能６２０からの入力命令とを独立に処理できるからである。このために、相互の処理が影響しあわない仕組みが必要になる。この点について、自動削除命令の実行で説明する。ホスト制御装置からの入力命令を入力命令・実行機能６７０が受け取り、命令のデコード後、担当コントローラまたはシークエンサーを動作させ、入力命令に対応した実行、付加命令の実行６７１、または削除命令の実行６７２、または統計データ引出命令の実行６７３、または自動削除名引出命令の実行６７４を行う。そして、実行結果をホスト制御装置に送付して、入力命令に対応した実行は終了するため、いずれかの実行を担当しているコントローラまたはシークエンサーが動作中には、ホスト制御装置からの別の入力命令が送られてくることは無い。ホスト制御装置からの入力命令待ち、または入力命令を実行中、自動削除命令機能６２０からの入力命令を入力命令・実行機能６７０が受け取り、実行可能である。担当コントローラまたはシークエンサーが自動削除命令を実行中においては、他の自動削除命令が入力命令・実行機能６７０に入力されることは無い。理由は自動削除命令機能６２０が動作可能な状態をチェックしているからである。
【０１５９】
図２４に自動削除命令機能６２０の実施例を示す。図２４から明らかであるが、自動削除命令機能６２０は単なるタイマー回路である。自動削除命令機能６２０は自動削徐命令発行時間レジスター６２１を持ち、自動削徐命令発行時間レジスター６２１のエネーブルビットが１のとき、自動削徐命令発行時間レジスター６２１の定める時間間隔で自動削除命令を発行する。図２４の動作可能判断は自動削除命令機能６２０が発行した自動削除命令がすでに終了していることと、自動削徐命令発行時間レジスター６２１のエネーブルビットが１であることを確認して行われる。このように自動削除命令機能６２０はコントローラまたはシークエンサーにより実現される必要は無い。
【０１６０】
図２５に、ホスト制御装置からの付加命令を実行するコントローラまたはシークエンサーの動作例を示す。入力命令・実行機能６７０が付加命令を受付けて、まず、構造管理テーブル７６１を読み出し、手順番号を確認し、その手順の最後に読み出すテーブルの固定長データの数を構造管理テーブル７６１から得る（Ｓ６７１０）。そして、その数が図２１で示される構造変移に必要な条件であるか否かを確認する（Ｓ６７１１）。構造変移の条件であれば入力命令・実行機能６７０は構造変更付加機能６４０を起動し、その終了まで停止する（Ｓ６７１２）。構造変移の条件でなければ入力命令・実行機能６７０は単純付加機能６３０を起動し、その終了まで停止する。（Ｓ６７１３）構造変更付加機能６４０、または単純付加機能６３０の実行終了の結果、入力命令・実行機能６７０は実行結果を得て再スタートする。得られた実行結果を解析し（Ｓ６７１４）、実行結果が問題なく実行されたことを報告していれば、実行済み結果データを作成し、管理出力機能に送る。（Ｓ６７１５）。この場合、さらに、最後に構造管理テーブルの対応する要素数に１加える（Ｓ６７１６）。得られた実行結果が実行できなかった場合、不実行結果データを作成し（Ｓ６７１７）、管理出力機能に送る。そして、入力命令・実行機能６７０はホスト制御装置からの次の命令を待つ。得られた実行結果が実行できないケースは（１）固定長データテーブルに固定長データを付加するロケーションが無い（２）固定長データテーブルに付加する固定長データがすでに存在する、等が考えられる。（２）のケースでは付加する固定長データに伴うマスク、固定長データ名、およびユーザーデータは現存するデータと置き換えることができる選択能力をレジスターにより実現できる。
【０１６１】
図２５に、ホスト制御装置からの削除命令を実行するコントローラまたはシークエンサーの動作例を示す。入力命令・実行機能６７０が削除命令を受付けると、まず、構造管理テーブル７６１を読み出し、手順番号を確認し、その手順の最後に読み出すテーブルの固定長データの数を構造管理テーブル７６１から得る（Ｓ６７２０）。その数が図２１で示される構造変移に必要な条件であるか否かを確認する（Ｓ６７２１）。構造変移の条件であれば入力命令・実行機能６７０は構造変更削除機能６６０を起動し、その終了まで停止する（Ｓ６７２２）。構造変移の条件でなければ入力命令・実行機能６７０は単純削除機能６５０を起動し、その終了まで停止する（Ｓ６７２３）。構造変更削除機能６６０、または単純削除機能６５０の実行終了の結果、入力命令・実行機能６７０は実行結果を得て再スタートする。得られた実行結果を解析し、実行結果が問題なく実行されたことを報告していれば（Ｓ６７２４）、実行済み結果データを作成し、管理出力機能に送る（Ｓ６７２５）。最後に構造管理テーブルの対応する要素数から１を減ずる（Ｓ６７２６）。得られた実行結果が実行できなかった場合、不実行結果データを作成し、管理出力機能に送る（Ｓ６７２７）。そして、入力命令・実行機能６７０はホスト制御装置からの次の命令を待つ。得られた実行結果が実行できないケースは（１）固定長データテーブルに構造変更を行うロケーションが無い（２）固定長データテーブルに削除する固定長データが無い、等が考えられる。（１）の場合、構造変更を行わず、命令内の固定長データ削除し、構造管理テーブルの対応する要素数から１を減らした後で、報告する手法も存在する。
【０１６２】
図２６に、ホスト制御装置からの統計データ引出命令を実行するコントローラまたはシークエンサーの動作例を示す。入力命令・実行機能６７０が統計データ引出命令を受付けて、まず、統計データ引出命令内の固定長データを検索する（Ｓ６７３０）。入力命令・実行機能６７０は統計データ引出命令内の固定長データを入力固定値データ処理手段１００の管理データ６９９から入力する。入力検索番号はテーブル管理制御手段６００に割り当てられた検索番号である、又入力統計データはゼロが入力される。テーブル管理制御手段６００に割り当てられた検索番号を伴う検索動作は出力制御機能８４０により、レジスターＳ８１２にデータが格納された時点で終了する。その時、検索結果はテーブル管理制御手段６００に割り当てられた検索番号のレジスターＳ８１２に格納され、管理検索結果出力８２１を通して、入力命令・実行機能６７０に読み込まれる。統計データ引出命令内の固定長データに関する統計データは、修正手段３００のレジスターＯに格納され、統計データ３３７を通して、入力命令・実行機能６７０に読み込まれる。（Ｓ６７３２）読み込まれた統計データは出力手段８００内の管理出力機能に出力する。（Ｓ６７３３）読み込まれた検索結果により実行結果が作成される。検索結果が一致の場合、固定長データ名を伴い統計データと実行結果が出力手段８００の管理出力機能に出力される。（Ｓ６７３４）検索結果が一致しなかった場合、不一致の実行結果だけが出力手段８００に管理出力機能に出力される（Ｓ６７３５）。
【０１６３】
図２６に、ホスト制御装置からの自動削除名引出命令を実行するコントローラまたはシークエンサーの動作例を示す。入力命令・実行機能６７０が自動削除名引出命令を受付けて、まず、図２６に示すように引き出し自動削除数レジスターを初期化する。自動削除命令の実行の結果、削除された固定長データの固定長データ名がテーブル管理手段６００の一時記憶機能６１０に格納される。自動削除名引出命令は格納されている固定長データ名を指定された数だけ読み出し、管理出力機能に出力することである。このため、図２６に示すように、一時記憶機能６１０に格納されている自動削除された固定長データ名があるか確認する（Ｓ６７４１）。あれば、一時記憶機能６１０に格納されている固定長データ名を一つ入手し（Ｓ６７４２）管理出力機能に出力する。（Ｓ６７４３）そして引き出し自動削除数レジスターを１増加させる（Ｓ６７４４）。増加後、引き出し自動削除数レジスターが自動削除名引出命令内の引き出し数と同じか確認する（Ｓ６７４５）。引き出し自動削除数レジスターが引き出し数より少ない場合、再び、一時記憶機能６１０に格納されている自動削除された固定長データ名があるか確認する。この動作を引き出し自動削除数レジスターと引き出し数が同じになるまで続ける。引き出し自動削除数レジスターが引き出し数に達したとき、引き出し数を伴い、実行結果データが管理出力機能に出力される（Ｓ６７４６）。引き出し自動削除数レジスターが引き出し数に達する前に、一時記憶機能６１０に格納されている自動削除された固定長データ名がなくなった場合、引き出し自動削除数レジスターの引き出し数を伴い、実行結果データが管理出力機能に出力される（Ｓ６７４６）。
【０１６４】
図２７に、自動削除命令機能からの自動削除命令を実行するコントローラまたはシークエンサーの動作例を示す。入力命令・実行機能６７０が自動削除命令を受付けて、まず、図２７に示すように固定長データアドレスレジスターを初期化する（Ｓ６７５０）。自動削除命令は、図８に示される固定長データテーブルの要素制御データを参照して行われる。
【０１６５】
図２７に、要素制御データの詳細を示す。要素制御データは要素状態と位置変更から構成される。要素状態は４つの状態の一つを保持する。４つの状態は（１）空室状態、（２）常駐状態、（３）削除状態、そして（４）使用状態、である。固定長データが初期化された時、要素状態は空室状態にセットされる。空室状態にある固定長データテーブルの要素に常駐の状態ビットを持つ固定長データが付加された時、その要素の要素制御データは常駐状態に変移する。この状態にある固定長データは自動削除命令による削除対象には含まれない。すなわち、この状態にある固定長データはホスト制御装置からの削除命令を実行する以外、削除はされない。空室状態にある固定長データテーブルの要素に常駐で無い状態ビットを持つ固定長データが付加された時、その要素の要素制御データは削除状態に変移する。そして、位置変更がセットされる。削除状態にある固定長データは自動削除命令による削除対象に含まれる。すなわち、この状態にある固定長データはホスト制御装置からの削除命令と自動削除命令の実行で削除される。（位置変更がセットされた削除状態は自動削除命令の対象から除かれる。位置変更は後述する。）削除状態にある固定長データテーブルの要素が検索動作で検索目的の固定長データと一致すると、削除状態にある固定長データテーブルの要素状態は使用状態に変移する。自動削除命令の目的はある時間間隔で使われない固定長データを削除することである。自動削除命令は周期的に発行される。その時間の間に、使われない、すなわち削除状態にある固定長データは削除される。使用状態にある固定長データテーブルの要素状態は自動削除命令の実行により削除状態に変移する。そして次の自動削除命令により、使われたか否かを調べられ、使われていなければ削除される。
【０１６６】
図２７において位置変更はホスト制御装置からの付加命令または削除命令、または自動削除命令機能からの自動削除命令を実行したとき、固定長データテーブル内を移動する固定長データの位置変更をセットし、実行中の自動削除命令の対象から除く。そして、自動削除命令が実行されたとき、位置変更がセットされている固定長データは削除されず、次の自動削除命令の実行対象とするため、位置変更をリセットされる。
【０１６７】
図２７において、固定長データアドレスレジスターをインデックスとして固定長データテーブルの家を読み出す（Ｓ６７５１）。読み出された家の中において固定長データの要素制御データをチェックする（Ｓ６７５２）。その要素状態が空室状態または常駐状態の場合、次の固定長データをチェックする。要素状態が削除状態にあり、位置変更がセットされていない場合（アクセスが無い場合）、その固定長データは削除される（Ｓ６７５３）。削除は削除命令と同じ動作を行い、固定長データを削除する。そして削除した固定長データの固定長データ名をテーブル管理制御手段６００の一時記憶機能に保存する（Ｓ６７５４）。要素状態が削除状態にあり、位置変更がセットされている場合（アクセスがある場合）、その固定長データは削除されず、そして位置変更をリセットする。この作業を読み込まれた家の全固定長データに対して行う。読み込まれた家の全ての固定長データがチェックされると（Ｓ６７５５）、固定長データアドレスレジスターを１増加する（Ｓ６７５６）。そして固定長データアドレスレジスターをインデックスとして固定長データテーブルの家を読み出す作業を行う。このような作業を、固定長データテーブルの全ての家に対して行うと（Ｓ６７５７）自動削除命令の実行を終了する。
【０１６８】
図２８に、入力命令・実行機能６７０の要請で構造変更の必要の無い付加機能（単純付加機能６３０）を実行するコントローラまたはシークエンサーの動作例の一部を示す。単純付加機能６３０の全てのケースを図２８に記述することは複雑となるため、詳細な機能は説明により行う。入力命令・実行機能６７０から単純付加命令の実行を受付けると、まず、付加命令内の固定長データを検索する（Ｓ６３００）。単純付加機能６３０は入力固定値データ処理手段１００の管理データ６９９から付加命令内の固定長データを入力する。入力検索番号はテーブル管理制御手段６００に割り当てられた検索番号であり、又入力統計データにはゼロが入力される。テーブル管理制御手段６００に割り当てられた検索番号を伴う検索動作は出力制御機能８４０により、レジスターＳ８１２にデータが格納された時点で終了する。又、図７のポインタ処理手段２００において、テーブル管理制御手段６００に割り当てられた検索番号のインデックスを発生させるとき、そのインデックスはレジスターＰ２１７に保存される。検索過程の中でレジスターＰ２１７はポインタ処理手段２００がテーブルインデックス２５２を発生するたびに改定される。このため、検索終了時、レジスターＰ２１７は固定長データテーブルを読み込んだ最後のインデックスが保持されている。それに加え、付加命令内の固定長データに関する検索結果、固定長データ名、およびユーザーデータは、テーブル管理制御手段６００に割り当てられた検索番号のレジスターＳ８１２に格納され、単純付加機能６３０に読み込まれる。今後の説明には省略するが、付加される固定長データは大小順に並べられるものとする、そして付加される固定長データ以外の固定長データ名とマスクと状態ビットから作成される要素制御データは固定長データテーブルに、ユーザーデータと初期化された統計データはデータテーブルに、固定長データが格納される時点で同時に格納される。
【０１６９】
図２８には記述されていないが、一致しない検索結果が得られたとき、単純付加機能６３０の実行は続けられる。一致した結果が得られた時、二つの選択肢が考えられる。一つは単純付加機能６３０の実行を中止して、その結果をホスト制御装置に報告する。他は単純付加機能６３０の実行を続行し、付加すべき固定長データに関連した各種データを付加命令内のデータと置き換え、改正を行う。これらの選択肢はレジスターにより行われる。
【０１７０】
ポインタ処理手段２００のレジスターＰ２１７が保持するインデックスで、室管理テーブル７４１を参照し（Ｓ６３０１）、家が満室（８室が単一団体で占められている）か否かを確認する。満室でない場合、二つの団体により家が構成されている。このとき、家の占有の状況と固定長データが付加される団体とを用いて場合分けをすると、次のケースが考えられる。（１）家には大団体と小団体が同居しており、大団体に付加される、（２）家には大団体と小団体が同居しており、小団体に付加される、（３）家には大団体と小団体が同居できるが、大団体だけが存在し、そこに付加される、（４）家にはサイズの等しい二団体が同居しており、その一つの団体に付加される、（５）家にはサイズの等しい二団体が同居できるが、一つだけが存在し、その団体に付加される、（６）付加する団体が無い。図２８に上記（１）と（２）のケースを示したが、以下、（１）〜（６）のケースについて説明を行う。
【０１７１】
（１）家（Ｐ）には大団体と小団体が同居しており、大団体に付加される場合、小団体を移動し、付加する固定長データとその関連するデータを空いた室に格納する。作業の順番は最初に空室テーブル７２１から小団体の持つ室数の空き室を持つ家（Ｑ）のインデックスを得る。家（Ｑ）に小団体を移す（Ｓ６３０４）。そして家（Ｑ）の室管理テーブル７４１に小団体に関連するパラメータを写し、室管理テーブル７４１が持つ上位アドレスを使い上位テーブルのエントリー制御データに家（Ｑ）のインデックスを書き込む。次に大団体の家（Ｐ）に付加命令内の固定長データとその関連データを格納する。付加することによりその家が満室になった場合、その家の室管理テーブル７４１と構造管理テーブル７６１のパラメータを変更する。その家が満室で無い場合、それらの変更に加えて、家（Ｐ）を（小団体の室数―１）の空室テーブル７２１に登録する（Ｓ６３０５）。
【０１７２】
（２）家（Ｐ）には大団体と小団体が同居しており、小団体に付加される場合、小団体の室数より一つ大きな空室をもつ家（Ｑ）を空室テーブル７２１から入手し、小団体を家（Ｑ）に移動し、そして付加する固定長データとその関連するデータを家（Ｑ）に格納する（Ｓ６３０６）。そして家（Ｑ）の室管理テーブル７４１に小団体に関連するパラメータを写し、室管理テーブル７４１が持つ上位アドレスを使い上位テーブルのエントリー制御データと構造管理テーブル７６１を変更する。次に大団体の家（Ｐ）を小団体の室数の空室テーブル７２１に登録し、家（Ｐ）の室管理テーブルの上位アドレスに空室テーブル７２１に登録したアドレスを書き込み、それらに対応するパラメータを変更する（Ｓ６３０７）。
【０１７３】
（３）家には大団体と小団体が同居できるが、大団体だけが存在し、そこに付加される場合、大団体の家に付加命令内の固定長データとその関連データを格納する。空き室であった小団体の室数の空室テーブル７２１からこの家を削除する。付加することによりその家が満室になった場合、その家の室管理テーブル７４１と構造管理テーブル７６１のパラメータを変更する。その家が満室で無い場合、それらの変更に加えて、家を（空き室であった小団体の室数―１）の空室テーブル７２１に登録する。
【０１７４】
（４）家（Ｐ）にはサイズの等しい二団体（ＡとＢと呼ぶ）が同居しており、その一つの団体Ａに付加される場合、団体の室数が１、２、または３のとき、団体Ａの室数より一つ大きな空室をもつ家（Ｑ）を空室テーブル７２１から入手し、団体Ａを移動し、そして付加する固定長データとその関連するデータをその家に格納する。そして家（Ｑ）の室管理テーブル７４１の団体Ａに関連するパラメータを写し、室管理テーブル７４１が持つ上位アドレスを使い、上位テーブルのエントリー制御データに家（Ｑ）のインデックスを書き込み、構造管理テーブル７６１を変更する。次に家（Ｐ）を団体Ｂの室数の空室テーブル７２１に登録し、そして団体Ｂの家（Ｐ）の室管理テーブル７４１の団体Ａのパラメータを登録された空室テーブル７２１のアドレスに変更する。団体の室数が４のとき、空き家（Ｒ）を空家テーブル７０１から入手し、団体Ａを移動し、そして付加する固定長データとその関連するデータをその家に格納する。そして新しい家（Ｒ）の室管理テーブル７４１に団体Ａに関連するパラメータを写し、室管理テーブル７４１が持つ上位アドレスを使い、上位テーブルのエントリー制御データと構造管理テーブル７６１を変更する。次に家（Ｐ）を団体Ｂの室数の空室テーブル７２１に登録し、そして団体Ｂの家（Ｐ）の室管理テーブル７４１の団体Ｂのパラメータを登録された空室テーブル７２１のアドレスに変更する。
【０１７５】
（５）家にはサイズの等しい二団体（ＡとＢと呼ぶ）が同居できるが、一つ（団体Ａ）だけが存在し、その団体に付加される場合、団体Ａの家に付加命令内の固定長データとその関連データを格納する。空き室であった団体（Ｂ）の室数の空室テーブル７２１からこの家を削除する。家を（空き室であった団体Ｂの室数＋１）の空室テーブル７２１に登録する。その家における室管理テーブル７４１の空き室の上位アドレスに登録した空室テーブル７２１のアドレスを書き込み、構造管理テーブル７６１のパラメータを変更する。
【０１７６】
（６）付加する団体が無い場合、１空室テーブル７２１から、１室の空室を持つ家を入手する。付加する固定長データをその家に付加し、ポインタテーブルにその家を登録し、その家の室管理テーブル７４１の空き室にポインタテーブルのインデックスを登録する。最後に構造管理テーブル７６１のパラメータを変更する。
【０１７７】
図２８において、家が満室（８室が単一団体で占められている）の場合、二つのケースにより処理される。一つはＮＶＣ形式の場合と他はそれ以外である（Ｓ６３０８）。ＮＶＣ形式の場合、再配列を行い（Ｓ６３０９）、付加命令内の固定長データとその関連データを格納する。そして、再配置の結果、付加しなければならない家に対して、上記（１）から（５）の中で、一つの付加動作を行う（Ｓ６３１０）。ＮＶＣ形式ではない場合、一つの空室を持つ家（Ｑ）を空室テーブル７２１から入手し、家（Ｐ）の８個の固定長データとの大小比較により、９個の固定長データを家（Ｐ）と家（Ｑ）に格納する（Ｓ６３１１）。家（Ｐ）のエントリー制御データを家（Ｑ）にリンクするように変更し（Ｓ６３１２）、家（Ｑ）のエントリー制御データを修正し、家（Ｑ）の室管理テーブル７４１に家（Ｐ）のインデックスを書き込み、最後に構造管理テーブル７６１を変更する。
【０１７８】
図２８に、入力命令・実行機能６７０の要請で構造変更の必要のある付加機能（構造変更付加機能６４０）を実行するコントローラまたはシークエンサーの動作例の一部を示す。単純付加機能６３０の説明と同様に、構造変更付加機能６４０の全てのケースを図２８に記述することは複雑となるため、詳細な機能は説明により行う。入力命令・実行機能６７０から構造変更付加命令の実行を受付けると、まず、付加命令内の固定長データを検索する（Ｓ６４００）。構造変更付加機能６４０は、入力固定値データ処理手段１００の管理データ６９９から付加命令内の固定長データを入力する。入力検索番号は、テーブル管理制御手段６００に割り当てられた検索番号であり、又入力統計データとしてはゼロが入力される。テーブル管理制御手段６００に割り当てられた検索番号を伴う検索動作は、出力制御機能８４０により、レジスターＳ８１２にデータが格納された時点で終了する。又、図７のポインタ処理手段２００において、テーブル管理制御手段６００に割り当てられた検索番号のインデックスを発生させるとき、そのインデックスはレジスターＰ２１７に保存される。検索過程の中でレジスターＰ２１７はポインタ処理手段２００がテーブルインデックス２５２を発生するたびに改定される。このため、検索終了時、レジスターＰ２１７には固定長データテーブルを読み込んだ最後のインデックスが保持されている。それに加え、付加命令内の固定長データに関する検索結果、固定長データ名、およびユーザーデータは、テーブル管理制御手段６００に割り当てられた検索番号のレジスターＳ８１２に格納され、構造変更付加機能６４０に読み込まれる。
【０１７９】
図２８には記述されていないが、一致しない検索結果が得られたときに構造変更付加機能６４０の実行は続けられる。一致した結果が得られた時、二つの選択肢が考えられる。一つは構造変更付加機能６４０の実行を中止して、その結果をホスト制御装置に報告する。他は構造変更付加機能６４０の実行を続行し、付加すべき固定長データに関連した各種データを付加命令内のデータと置き換え、改正を行う。これらの選択肢はレジスターにより行われる。
【０１８０】
ポインタ処理手段２００のレジスターＰ２１７が保持するインデックスで、室管理テーブル７４１を参照し、家の形式が一つの団体で占められていることを確認する（Ｓ６４０１）。そして、上位アドレスを得る。次に構造管理テーブル７６１を参照し、手順番号と構造変更理由を確認する（Ｓ６４０２、Ｓ６４０３）。手順２の場合、ＳＰＴを構築する。手順３の場合、ローカルテーブルを構築する。手順４の場合、ＮＶＣ形式のテーブル構造に変更する。
【０１８１】
構造管理テーブル７６１の手順番号が２のとき、固定長データテーブルの二つの家（ＰとＱ）に格納されている１６個の固定長データと付加される固定長データをＳＰＴの構築により再配置する（Ｓ６４０５）。その作業の最初は、１７個の固定長データの区分けである。ＳＰＴのサイズを８と仮定して説明しているため、９つに区分け（区分０から区分８）する。区分けに使われるデータは、全インデックスからポインタテーブルのインデックスに使われているビットからの３ビットである。例えば、ポインタテーブルのインデックスが全インデックス、（例えば３２ビット）の３１ビットから１６ビットであるならば、ＳＰＴのインデックスはビット１５、ビット１４、およびビット１３である。それらを（ビット１５、ビット１４、ビット１３）で表す。この場合、区分０は（０００）、区分１は（００１）、同様に区分７は（１１１）で表す。区分８は１７個の固定長データのうち、そのマスクの長さが１７ビット（３２ビットー１５ビット）か１８ビット（３２ビットー１４ビット）を持つ固定長データを扱う。区分け後、区分８に属する固定長データの数の空き室を持つ家（Ｒ）を空室テーブル７２１から入手し、区分８に属する固定長データをその家（Ｒ）に移す（Ｓ６４０６）。このときの動作は単純付加機能６３０で説明したとおりである。その家（Ｒ）のインデックスをポインタテーブルのエントリーデータに書き込む。
【０１８２】
８エントリーを持つテーブル、ＳＰＴ、をポインタテーブルメモリ５００に構築し、初期化する。ＳＰＴのインデックス（０００）のメモリアドレス、すなわちベースアドレスとＳＰＴのパラメータを家（Ｒ）のエントリー制御データに書き込む。
【０１８３】
区分０に属する固定長データの数の空き室を持つ家（Ｓ）を空室テーブル７２１から入手し、区分０に属する固定長データをその家（Ｓ）に移す。このときの動作は単純付加機能６３０で説明したとおりである。その家（Ｓ）のインデックスと次工程１０１とメモリ制御データをＳＰＴのエントリーデータに書き込む。固定長データの数の空き室が４以下であれば、それを格納するメモリアレイだけを活性化するデータをメモリ制御データに書き込む。最後にその家（Ｓ）のエントリー制御データの次工程０００を書き込む。この作業を区分１から区分７まで行う。構造管理テーブルの変更を行う。そして家Ｐと家Ｑを空家テーブル７０１に登録し、ＳＰＴへの構造変更は終了する（Ｓ６４１１）。
【０１８４】
構造管理テーブル７６１の手順番号が３のとき（Ｓ６４０３）、固定長データテーブルの一つの家（Ｐ）に格納されている８個の固定長データと付加される固定長データをローカルテーブルの構築により再配置する（Ｓ６４０７）。これら９個の固定長データはＳＰＴの一つのエントリーに格納できないためである。その作業の最初は、９個の固定長データの区分けである。ローカルテーブルのサイズを８と仮定して説明しているため、８つに区分け（区分０から区分７）する。区分けに使われるデータは、全インデックスからポインタテーブルとＳＰＴのインデックスに使われているビットからの３ビットである。例えば、ポインタテーブルのインデックスが全インデックス、（例えば３２ビット）の３１ビットから１６ビットであるならば、ＳＰＴのインデックスはビット１５、ビット１４、およびビット１３である。このため、ローカルテーブルのインデックスはビット１２、ビット１１、およびビット１０である。それらを（ビット１２、ビット１１、ビット１０）で表す。この場合、区分０は（０００）、区分１は（００１）、同様に区分７は（１１１）で表す。
【０１８５】
８エントリーを持つローカルテーブルを固定長データテーブルメモリ５６０に構築し、初期化する。ローカルテーブルのインデックス（０００）のメモリアドレス、すなわちベースアドレスとローカルテーブルのパラメータを家（Ｐ）の室管理テーブル７４１の上位アドレスが示すＳＰＴのエントリーのエントリー制御データに書き込む。固定長データテーブルの一部の家はローカルテーブルに予約されている。
【０１８６】
区分０に属する固定長データをベースアドレスでインデックスされる固定長データテーブルの家に移す（Ｓ６４０８）。このときの動作は単純付加機能６３０で説明したとおりである。その家の室管理テーブル７４１のＬＴビットをセットすることによりその団体は、付加命令および削減命令によりその家から移動することは無い。最後にその家のエントリー制御データの次工程０００を書き込む。この作業を区分１から区分７まで行う。構造管理テーブルの変更を行う。そして家Ｐを空家テーブル７０１に登録し、ローカルテーブルへの構造変更は終了する（Ｓ６４１１）。
【０１８７】
構造管理テーブル７６１の手順番号が４のとき、付加する固定長データが所属するポインタテーブルのエントリーに属する全ての固定長データと付加する固定長データとが構造変更の対象になる（Ｓ６４０９）。全ての家が持つ固定長データは、その家の団体の中で大小順に並んでいる。このため、付加する固定長データが所属するポインタテーブルのエントリーに属するＳＰＴとローカルテーブルの固定長データは大小順に並んでいると考えられる。例えば、ローカルテーブルを含まないＳＰＴのインデックス０を（０００）と、ローカルテーブル（そのインデックス０）を含むＳＰＴのインデックス１を（００１、０００）と表わせば、固定長データの大小順は大きいほうから（１１１）、（１１０）、（１０１）、（１００）、（０１１）、（０１０）、（００１，１１１）、（００１，１１０）、（００１，１０１）、（００１，１００）、（００１，０１１）、（００１，０１０）、（００１，００１）、（００１，０００）、（０００）となる。この順序にポインタテーブルの次に読み込まれる固定長データテーブルの家（Ｐ）の固定長データが割り込む。
【０１８８】
大小順に並べられた固定長データの大小比較の方法を説明する。上記例を使えば、ポインタテーブルのインデックスが全インデックス、（例えば３２ビット）の３１ビットから１６ビットであるならば、ＳＰＴのインデックスはビット１５、ビット１４、およびビット１３である。ローカルテーブルのインデックスはビット１２、ビット１１、およびビット１１である。これらはあくまで各テーブルに分類するために使われ方法であり、大小比較を全インデックスのビット１５からビット０に対して行っても、今までの説明に問題は起こらない。また、マスク付の大小比較であるため、マスクされるビットは比較しても意味が無い。すなわち、マスクが２３であれば、全インデックスのビット３１からビット８までが比較され、ビット７からビット０までは意味の無い。このため、マスクされるビットは０として扱う。ＮＶＣ形式の固定長データテーブルの要素は、抽出されたインデックス（全インデックスのビット１５からビット０）と、このインデックスとの大小比較の結果、参照される固定長データテーブルインデックスから構成される（図８参照）。又、手順５は固定長データテーブルでＮＶＣ形式の家をふたつまで持つことができる。一つの家に固定長データは８個まで格納できるが、ＮＶＣ形式のデータは一つの家に１６個まで格納できるので、二つの家に最高２５６個のＮＶＣ形式のデータを格納できる。ＮＶＣ形式への構造変更はこの性質を利用する。
【０１８９】
上記例でＳＰＴと一つのローカルテーブルが存在すると仮定すれば、インデックス数は１５である。このため、付加する固定長データと付加される家の８個の固定長データを二つに分解し、全部で１６個の家を持つ。これからは図９で記述された作業３、作業４、そして作業５を行う（Ｓ６４１１）。空家テーブル７０１から家（Ｐ）を入手する。各家の最小値を持つ固定長データのビット１５からビット０を抽出し、大きい順に家（Ｐ）に格納する。それらの固定値データに相当する家のインデックスを各抽出インデックスの固定長データテーブルインデックスとして格納する。家（Ｐ）のインデックスをポインタテーブルのエントリーデータに保存し、次工程はＮＶＣ形式をセットする。構造管理テーブルを修正する。ローカルテーブルを構成する家の室管理テーブル７４１のＬＴビットは変更しない。以上により構造変更は完了する。
【０１９０】
上記、付加する固定長データと付加される家（Ｒ）の８個の固定長データを二つに分解する方法を説明する。付加する固定長データが付加される８個の固定長データの大きい順のｍ番目と仮定する。ｍは０から８の値である。０は付加する固定長データが最大であり、８は付加する固定長データが最小である。ｍが１、２、３の時、ｍ＋１の空き室を持つ家（Ｓ）を空室テーブル７２１から入手し、大きい順からｍ個の固定長データと付加する固定長データを移動する。家（Ｒ）をｍ個の空室テーブルに登録しそのアドレスを家（Ｒ）の室管理テーブルに書き込む。全てにおいて家の室管理テーブルの上位アドレスにポインタテーブルのインデックスを書き込む。ｍが１、２、３以外の時、ｍの空き室を持つ家（Ｓ）を空室テーブル７２１から入手し、小さい順から（８−ｍ）個の固定長データを移動する。家（Ｒ）に付加する固定長データを保存し、（７−ｍ）個の空室テーブルに登録しそのアドレスを家（Ｒ）の室管理テーブルに書き込む。全てにおいて家の室管理テーブルの上位アドレスにポインタテーブルのインデックスを書き込む。
【０１９１】
ＮＶＣ形式のテーブルの構築変更は一つのローカルテーブルを例に説明したが、ローカルテーブルが複数存在しても、説明した手法は使える。ＳＰＴの全てのエントリーがローカルテーブルをもった場合、６４個の家が存在する。しかし、ＮＶＣ形式の家は説明では一つであったが、二つまでもてるため、２５６個の家が処理できる。すなわち、手順４から手順５の構造変更の手法の上記説明は、手順４が、いかなるテーブル構造を持っていても手順５のＮＶＣ形式のテーブル構造に変更可能である。
【０１９２】
図２９に、入力命令・実行機能６７０の要請で構造変更の必要の無い削除機能（単純削除機能６５０）を実行するコントローラまたはシークエンサーの動作例の一部を示す。単純削除機能６５０の全てのケースを図２９に記述することは複雑となるため、詳細な機能は説明により行う。入力命令・実行機能６７０から単純削除命令の実行を受付けると、まず、削除命令内の固定長データを検索する（Ｓ６５００）。単純削除機能６５０は削除命令内の固定長データを入力固定値データ処理手段１００の管理データ６９９から入力する。入力検索番号はテーブル管理制御手段６００に割り当てられた検索番号である、又入力統計データはゼロが入力される。テーブル管理制御手段６００に割り当てられた検索番号を伴う検索動作は出力制御機能８４０により、レジスターＳ８１２にデータが格納された時点で終了する。又、図７のポインタ処理手段２００において、テーブル管理制御手段６００に割り当てられた検索番号のインデックスを発生させるとき、そのインデックスはレジスターＰ２１７に保存される。検索過程の中でレジスターＰ２１７はポインタ処理手段２００がテーブルインデックス２５２を発生するたびに改定される。このため、検索終了時、レジスターＰ２１７は固定長データテーブルを読み込んだ最後のインデックスが保持されている。それに加え、削除命令内の固定長データに関する検索結果、固定長データ名、およびユーザーデータは、テーブル管理制御手段６００に割り当てられた検索番号のレジスターＳ８１２に格納され、単純削除機能６５０に読み込まれる。
【０１９３】
図２９には記述されていないが、一致した検索結果が得られたとき、単純削除機能６５０の実行は続けられる。一致しない結果が得られた時、単純削除機能６５０の実行を中止して、その結果をホスト制御装置に報告する。これからは、検索結果が一致した場合を説明する。
【０１９４】
ポインタ処理手段２００のレジスターＰ２１７が保持するインデックスで、室管理テーブル７４１を参照し（Ｓ６５０１）、家が満室（８室が単一団体で占められている）か否かを確認する。満室でない場合、二つの団体により家が構成されている。このとき、家の占有の状況と固定長データが削除される団体とを用いて場合分けをすると、次のケースが考えられる。（１）家には大団体と小団体が同居しており、大団体から削除される、（２）家には大団体と小団体が同居しており、小団体から削除される、（３）家には大団体と小団体が同居できるが、大団体だけが存在し、そこから削除される、（４）家にはサイズの等しい二団体が同居しており、その一つの団体から削除される、（５）家にはサイズの等しい二団体が同居できるが、一つだけが存在し、その団体から削除される。図２９に（１）と（２）と満室の場合を示す。以下、（１）から（５）の説明を行う。
【０１９５】
（１）家（Ｐ）には大団体と小団体が同居しており、大団体から削除される場合、小団体を移動し（Ｓ６５０３）、大団体から削除した後、家（Ｐ）を（小団体の室数＋１）の空室テーブル７２１に登録する（Ｓ６５０４）。作業の順番は最初に空室テーブル７２１から小団体の持つ室数の空き室を持つ家（Ｑ）のインデックスを得る。家（Ｑ）に小団体を移す。そして家（Ｑ）の室管理テーブル７４１に小団体に関連するパラメータを写し、室管理テーブル７４１が持つ上位アドレスを使い上位テーブルのエントリー制御データに家（Ｑ）のインデックスを書き込む。次に大団体の家（Ｐ）から削除命令内の固定長データを削除し、家（Ｐ）の室管理テーブル７４１と構造管理テーブル７６１のパラメータを変更する。家（Ｐ）を（小団体の室数＋１）の空室テーブル７２１に登録する（Ｓ６５０５）。
【０１９６】
（２）家（Ｐ）には大団体と小団体が同居しており、小団体から削除される場合、小団体の室数より一つ小さな空室をもつ家（Ｑ）を空室テーブル７２１から入手し、小団体から削除命令内の固定長データを削除し、小団体を家（Ｑ）に移動する（Ｓ６５０６）。そして家（Ｑ）の室管理テーブル７４１に小団体に関連するパラメータを写し、室管理テーブル７４１が持つ上位アドレスを使い上位テーブルのエントリー制御データと構造管理テーブル７６１を変更する。次に大団体の家（Ｐ）を削除前の小団体の室数の空室テーブル７２１に登録し（Ｓ６５０７）、家（Ｐ）の室管理テーブルの上位アドレスに空室テーブル７２１に登録したアドレスを書き込み、それらに対応するパラメータを変更する（Ｓ６５０５）。
【０１９７】
（３）家には大団体と小団体が同居できるが、大団体だけが存在し、そこから削除される場合、大団体の家から削除命令内の固定長データとその関連するデータを削除する。空き室であった小団体の室数の空室テーブル７２１からこの家を削除する。その家の室管理テーブル７４１と構造管理テーブル７６１のパラメータを変更する、そして家を（空き室であった小団体の室数＋１）の空室テーブル７２１に登録する。
【０１９８】
（４）家（Ｐ）にはサイズの等しい二団体（ＡとＢと呼ぶ）が同居しており、その一つの団体Ａから削除される場合、団体の室数が２、３、または４のとき、団体Ａの室数より一つ小さな空室をもつ家（Ｑ）を空室テーブル７２１から入手する。団体Ａから削除命令内の固定長データとその関連するデータを削除後、団体Ａを家（Ｑ）に移動する。そして家（Ｑ）の室管理テーブル７４１の団体Ａに関連するパラメータを写し、室管理テーブル７４１が持つ上位アドレスを使い、上位テーブルのエントリー制御データに家（Ｑ）のインデックスを書き込み、構造管理テーブル７６１を変更する。次に家（Ｐ）を団体Ｂの室数の空室テーブル７２１に登録し、そして団体Ｂの家（Ｐ）の室管理テーブル７４１の団体Ａのパラメータを登録された空室テーブル７２１のアドレスに変更する。団体の室数が１の場合、団体Ａから削除命令内の固定長データとその関連するデータを削除する。そしてこの家（Ｐ）の団体Ａの上位アドレスで示されるテーブルの次工程およびそれに関するパラメータを変更する。次に家（Ｐ）を１の室数の空室テーブル７２１に登録し、そして団体Ｂの家（Ｐ）の室管理テーブル７４１の団体Ａのパラメータを登録された空室テーブル７２１のアドレスに変更する。
【０１９９】
（５）家にはサイズの等しい二団体（ＡとＢと呼ぶ）が同居できるが、一つ（団体Ａ）だけが存在し、その団体から削除される場合、団体Ａの家から削除命令内の固定長データとその関連データを削除する。団体の室数が２、３、または４のとき、空き室であった団体（Ｂ）の室数の空室テーブル７２１からこの家を削除する。家を（空き室であった団体Ｂの室数―１）の空室テーブル７２１に登録する。その家の室管理テーブル７４１の空き室の上位アドレスに登録した空室テーブル７２１のアドレスを書き込み、構造管理テーブル７６１のパラメータを変更する。団体の室数が１のとき、その家を空家テーブル７０１に登録する。そしてこの家の団体Ａの上位アドレスで示されるテーブルの次工程およびそれに関するパラメータを変更する。
【０２００】
図２９において、家が満室（８室が単一団体で占められている）の場合、その家から削除命令内の固定長データとその関連データを削除する。そして、その家を１の室数を持つ空室テーブル７２１に登録する（Ｓ６５０８）。最後に構造管理テーブル７６１のパラメータを変更する（Ｓ６５０９）。
【０２０１】
図２９に、入力命令・実行機能６７０の要請で構造変更の必要のある削除機能（構造変更削除機能６６０）を実行するコントローラまたはシークエンサーの動作例の一部を示す。単純削除機能６５０の説明と同様に、構造変更削除機能６６０の全てのケースを図２９に記述することは複雑となるため、詳細な機能は説明により行う。入力命令・実行機能６７０から構造変更削除命令の実行を受付けると、まず、削除命令内の固定長データを検索する（Ｓ６６００）。構造変更削除機能６６０は、削除命令内の固定長データを入力固定値データ処理手段１００の管理データ６９９から入力する（Ｓ６６００）。入力検索番号はテーブル管理制御手段６００に割り当てられた検索番号である、又入力統計データとしては、ゼロが入力される。テーブル管理制御手段６００に割り当てられた検索番号を伴う検索動作は出力制御機能８４０により、レジスターＳ８１２にデータが格納された時点で終了する。又、図７のポインタ処理手段２００において、テーブル管理制御手段６００に割り当てられた検索番号のインデックスを発生させるとき、そのインデックスはレジスターＰ２１７に保存される。検索過程の中でレジスターＰ２１７はポインタ処理手段２００がテーブルインデックス２５２を発生するたびに改定される。このため、検索終了時、レジスターＰ２１７は固定長データテーブルを読み込んだ最後のインデックスが保持されている。それに加え、付加命令内の固定長データに関する検索結果、固定長データ名、およびユーザーデータは、テーブル管理制御手段６００に割り当てられた検索番号のレジスターＳ８１２に格納され、構造変更削除機能６６０に読み込まれる。
【０２０２】
図２９には記述されていないが、一致した検索結果が得られたとき、構造変更削除機能６６０の実行が続けられる。一致しない結果が得られた時、構造変更削除機能６６０の実行を中止して、その結果をホスト制御装置に報告する。これからは、検索結果が一致した場合を説明する。
【０２０３】
ポインタ処理手段２００のレジスターＰ２１７が保持するインデックスで、室管理テーブル７４１を参照し（Ｓ６６０１）、上位アドレスを得る。次に構造管理テーブル７６１を参照し、手順番号と構造変更理由を確認する。手順３の場合、ＳＰＴを分解する。手順４の場合、ローカルテーブルを分解する。手順５の場合、ＮＶＣ形式のテーブル構造を分解する。
【０２０４】
構造管理テーブル７６１の手順番号が３のとき、ＳＰＴが管理する家とポインタテーブルが管理する家に格納されている固定長データとそれに関連するデータを二つの家に移動し（Ｓ６６０４、Ｓ６６０５）、ポインタテーブルが管理する形式を構築する。ＳＰＴのサイズを８と仮定して説明しているため、９つの家に区分け（区分０から区分８）されている。区分けに使われるデータは、全インデックスからポインタテーブルのインデックスに使われているビットからの３ビットである。例えば、ポインタテーブルのインデックスが全インデックス、（例えば３２ビット）の３１ビットから１６ビットであるならば、ＳＰＴのインデックスはビット１５、ビット１４、およびビット１３である。それらを（ビット１５、ビット１４、ビット１３）で表す。この場合、区分０は（０００）、区分１は（００１）、同様に区分７は（１１１）で表す。区分８は１７個の固定長データのうち、そのマスクの長さが１７ビット（３２ビットー１５ビット）か１８ビット（３２ビット−１４ビット）を持つ固定長データを扱う。区分０から区分７はＳＰＴにより管理され、区分８はポインタテーブルにより管理される家である。又、各家に格納されている固定長データは大小順に並べられている。
【０２０５】
区分０から区分８の家にある固定長データを二つの家に移動する方法を述べる。最初に二つの家（ＰとＱ）を空家テーブル７０１から入手する。そして区分７と８の家の最大値を持つ固定長データを大小比較する。その結果大きいほうを家Ｐの最大値の位置する場所に移動・格納する。大小比較は全インデックスのビット１５からビット０で行われる。次に、比較結果の小さいほうと、大きいほうの次の固定長データを大小比較する。この作業を区分８の家が持つ固定長データが移動・格納されるまで行う。その後、残った区分に属する固定長データを順次、家Ｐと家Ｑに移動・格納する。この場合、削除命令内の固定長データは大小比較、そして移動・格納の対象から除かれる。
【０２０６】
区分０から区分８に属する家を空家テーブル７０１に登録する。この場合、区分によっては最初から固定長データを持たない家が存在する。この場合、その家に対し移動・格納は行われず、空家テーブル７０１への登録も行われない。最後に、家Ｐと家Ｑのパラメータをおのおののエントリー制御データに書き込み、家Ｐのアドレスをポインタテーブルの対応するエントリーに書き込み、そのエントリーに対応する構造管理テーブル７６１を変更する。以上により、ＳＰＴからの構造変更は終了する（Ｓ６６０６）。
【０２０７】
構造管理テーブル７６１の手順番号が４のとき、ポインタ処理手段２００のレジスターＰ２１７が保持するインデックスから得られた、上位アドレス、すなわちＳＰＴのエントリーアドレスが管理するローカルテーブルを分解し、ローカルテーブルが管理していた固定長データの内、削除命令内の固定長データを除き、一つの家に移動・格納する（Ｓ６６０７、Ｓ６６０８）。これらの固定長データはＳＰＴの一つのエントリーに格納できないためにローカルテーブルを構築していたが、削除命令で一つの家に格納可能になった。ローカルテーブルのインデックスは、全インデックスからポインタテーブルとＳＰＴのインデックスに使われているビットからの３ビットである。例えば、ポインタテーブルのインデックスが全インデックス、（例えば３２ビット）の３１ビットから１６ビットであるならば、ＳＰＴのインデックスはビット１５、ビット１４、およびビット１３である。このため、ローカルテーブルのインデックスはビット１２、ビット１１、およびビット１０である。それらを（ビット１２、ビット１１、ビット１０）で表す。この場合、区分０は（０００）、区分１は（００１）、同様に区分７は（１１１）で表す。
【０２０８】
その作業の最初は、一つの家Ｐを空家テーブル７０１から入手する。ローカルテーブルのサイズを８と仮定して説明しているため、８つに区分け（区分０から区分７）されている家に格納されている固定長データを区分７の家から、順次、移動・格納する。区分７の家の固定長データの処理が終了した後で、区分６の家の固定長データの処理を行う。このような処理を区分０の家の固定長データに対して行う。この場合、削除命令内の固定長データは移動・格納の対象から除かれる。
【０２０９】
区分０から区分７に属する家を空家テーブル７０１に登録する。この場合、区分によっては最初から固定長データを持たない家が存在する。この場合、その家に対し移動・格納は行われず、空家テーブル７０１への登録も行われない。最後に、家Ｐのパラメータを自身のエントリー制御データに書き込み、家ＰのアドレスをＳＰＴの対応するエントリーに書き込み、そのエントリーに対応する構造管理テーブル７６１を変更する。以上により、ローカルテーブルからの構造変更は終了する。
【０２１０】
構造管理テーブル７６１の手順番号が５のとき、手順５のＮＶＣ形式のテーブル構造はＳＰＴとローカルテーブルの組み合わせのテーブル構造に変換される。このとき大事なポイントを指摘する。削除命令内の固定長データが属するポインタテーブルのエントリーはその次工程でＮＶＣ動作による検索を指示し、そのエントリーにつながるテーブル構造はＮＶＣ形式である。しかし、そのエントリーに対応する構造管理テーブル７６１はＳＰＴとローカルテーブルの組み合わせで、ＮＶＣ形式で動作する固定長データを管理していることである。このため、ＮＶＣ形式の対応する構造管理テーブル７６１が構造変更動作の大きく関与する。構造変更動作を説明する前に、ＮＶＣ形式の構造管理テーブル７６１の構造を説明する。
【０２１１】
例えば構造変更付加命令の説明のように、ローカルテーブルを含まないＳＰＴのインデックス０を（０００）と、ローカルテーブル（そのインデックス０）を含むＳＰＴのインデックス１を（００１、０００）と表す。構造管理テーブル７６１のＮＶＣ形式に対応するエントリーデータは左から順番に、構造制御データ、ポインタテーブルのエントリーが持つ固定長データ数、次の家が持つ固定長データ数、そしてＳＰＴとローカルテーブルの各エントリーが格納する固定長データ数である。ＳＰＴとローカルテーブルの各エントリーが格納する固定長データ数は、エントリー順に並べられており、大きいほうから（１１１）、（１１０）、（１０１）、（１００）、（０１１）、（０１０）、（００１，１１１）、（００１，１１０）、（００１，１０１）、（００１，１００）、（００１，０１１）、（００１，０１０）、（００１，００１）、（００１，０００）、（０００）となる。上記順番はＮＶＣ形式が構造管理テーブルによりＳＰＴと一つのローカルテーブルの形で管理されている例を示す。もし複数のローカルテーブルにより管理されていれば、（７＊ローカルテーブル数）だけ固定長データ数を格納するエントリー数が増加する。又、構造変更削除命令を発生させる判断は、構造管理テーブルのエントリーの、次の家が持つ固定長データ数、そしてＳＰＴとローカルテーブルの各エントリーが格納する固定長データ数がある指定された数以下になった時、行われる。
【０２１２】
大小順に並べられた固定長データの大小比較の方法を説明する。上記例を使えば、ポインタテーブルのインデックスが全インデックス、（例えば３２ビット）の３１ビットから１６ビットであるならば、ＳＰＴのインデックスはビット１５、ビット１４、およびビット１３である。ローカルテーブルのインデックスはビット１２、ビット１１、およびビット１０である。これらはあくまで各テーブルに分類するために使われ方法であり、大小比較を全インデックスのビット１５からビット０に対して行っても、今までの説明に問題は起こらない。また、マスク付の大小比較であるため、マスクされるビットは比較しても意味が無い。すなわち、マスクが２３であれば、全インデックスのビット３１からビット８までが比較され、ビット７からビット０までは意味の無い。このため、マスクされるビットは０として扱う。ＮＶＣ形式の固定長データテーブルの要素は抽出されたインデックス（全インデックスのビット１５からビット０）と、このインデックスとの大小比較の結果、参照される固定長データテーブルインデックスから構成される。（図８参照）
【０２１３】
以上の説明で、構造変更削除命令の手順５の構造変更動作を説明する。構造変更削除命令の構造変更動作は構造変更付加命令の構造変更動作の逆である。最初に構造管理テーブル７６１を参照し（Ｓ６６０９）、ＳＰＴとローカルテーブルを構築し（Ｓ６６１０とＳ６６１１）、空家テーブル７０１から家（Ｐ）を入手する。ポインタテーブルのエントリーの次工程にＢ‘１０１’をセットし、固定長データテーブルのインデックスに家（Ｐ）のインデックスをセットする。家（Ｐ）のエントリー制御データの次工程にＢ‘０１０’をセットし、ポインタテーブルメモリのアドレスにＳＰＴのエントリー０のアドレスをセットし、その他のパラメータをセットする（Ｓ６６１０）。そしてローカルテーブルを持つＳＰＴのエントリーのエントリー制御データの次工程にＢ‘０１１’をセットし、固定長データテーブルのインデックスにローカルテーブルのエントリー０のインデックスをセットし、その他のパラメータをセットする（Ｓ６６１１）。これで構造変更動作の準備が終了する。
【０２１４】
ポインタテーブルのエントリーに保持されていた、ＮＶＣ形式の家のインデックスでＮＶＣ形式のテーブル構造を解析・構造変更を行う。基本的に構造管理テーブル７６１が持つＳＰＴとローカルテーブルの構造で家が構成されているので、上記構造管理テーブル７６１のエントリーの例を使って説明する。上記例では、ＳＰＴとローカルテーブルの各エントリーが格納する固定長データ数は、エントリー順に並べられており、大きいほうから（１１１）、（１１０）、（１０１）、（１００）、（０１１）、（０１０）、（００１，１１１）、（００１，１１０）、（００１，１０１）、（００１，１００）、（００１，０１１）、（００１，０１０）、（００１，００１）、（００１，０００）、（０００）となる。すなわち、１５個の数に対応する家が存在する、これが基本的な考え方である。もちろん、固定長データ数が０の場合、家は存在せず、あるエントリーは固定長データ数が指定した数以下でも、いくつかの家に分割されて格納されている場合もある。ＮＶＣ形式の家のインデックスで最高位の要素が上記（１１１）に相当すれば、その要素に含まれる固定長データテーブルインデックスをＳＰＴのエントリー（１１１）に格納し、その次工程はＢ‘１０１’をセットする。この場合、マスクがビット１５からビット１１の間に位置する固定長データはその家から家（Ｐ）に移動する。又、構造変更命令にある固定長データは当然その家から削除される。その家の固定長データ数に変化があるとき、単純削除機能の説明で行われた各種テーブルの修正が行われる。
【０２１５】
上記例でＳＰＴのエントリーが（００１）の場合、ローカルテーブルに属する家の処理となる。ＮＶＣ形式の家のインデックスでその要素が上記（００１、１１１）に相当すれば、その要素に含まれる固定長データテーブルインデックスをローカルテーブルのエントリー（１１１）に格納し、その次工程はＢ‘１０１’をセットする（Ｓ６６１２）。ＳＰＴと同様に、この場合、マスクがビット１５からビット１１の間に位置する固定長データはその家から家（Ｐ）に移動する。又、構造変更命令にある固定長データは当然その家から削除される。その家の固定長データ数に変化があるとき、単純削除機能の説明で行われた各種テーブルの修正が行われる。
【０２１６】
例えば、ＮＶＣ形式の家のインデックスでその複数の要素が上記（００１、１００）に相当すれば、その中で最高値を持つ家にそれから続く家の固定長データを移動・格納する。（００１、１００）に相当する全ての要素の家の固定長データを移動・格納後、空き室になった家は空き室数の空室テーブルに登録され、空室テーブルのアドレスはその家の空室管理テーブルのパラメータに格納される。そして、全ての固定長データを格納した家のインデックスはローカルテーブルのエントリー（１００）に格納され、その次工程はＢ‘１０１’をセットする（Ｓ６６１２）。ＳＰＴと同様に、この場合、マスクがビット１５からビット１１の間に位置する固定長データはその家から家（Ｐ）に移動する。又、構造変更命令にある固定長データは当然その家から削除される。その家に移動・格納される固定長データは、単純削除機能により行われる。以上により構造変更は完了する。
【０２１７】
図３０にテーブル管理制御手段６００により実行された命令（図２４に示された命令）の実行結果を出力する管理出力機能の実施例である。入力命令・実行機能６７０から送られた実行結果をレジスターＸに格納し、それに付属するデータをＦＩＦＯレジスターに格納する。ＦＩＦＯレジスターは多数のデータが送られてきたとき、その順序を守り、ライトポインタでＦＩＦＯレジスター内に保持する。全てのデータが送られてきた時、出力制御機能８４０はレジスターＸに格納されている実行結果を最初に出力し、次にデータが存在すれば、ＦＩＦＯレジスターに保持されているデータをリードポインタにしたがって出力する。
【０２１８】
図３０に管理出力データの内容を示す。付加命令の実行の結果としては、実行結果データだけが送られる。実行結果データの内容は、（１）問題なく実行完了、（２）付加する固定長データは存在するため、付加しないこと、または（２）付加する固定長データは存在するが実行完了したこと、（３）付加するメモリの不足のため、付加できなかったこと等を示すデータである。削除命令の実行の結果としては、実行結果データだけが送られる。この場合の実行結果データの内容は（１）問題なく実行完了したこと、（２）削除する固定長データは存在しないこと等を示すデータである。統計データ引出命令の実行の結果、実行結果データと、統計データと、固定長データ名が出力される。この場合、実行結果データは実行完了データが出力される。自動削除名引出命令の実行の結果、実行結果データと、命令で指定された数の、または存在する全ての、自動的に削除された固定長データ名が出力される。この場合、実行結果データは実行完了データが出力される。
【０２１９】
図３１に本発明のコンピュータプログラムおよび記録媒体の適用可能なハードウェアの構成例を示すブロック図を示す。図３１において、コンピュータシステム９０は、システムバス９４に接続されたＣＰＵ（Central Processing Unit）９１と、記憶装置９２と、入出力装置９３とを含む。ＣＰＵ９１は、少なくとも演算装置と制御装置とを備え、記憶装置９２は例えば内蔵主記憶メモリ、ハードディスクドライブ、フロッピーディスクドライブなどで構成される。コンピュータシステム９０に本発明のコンピュータプログラムがインストールされると、前記コンピュータプログラムは前記ハードディスクドライブ内に格納され、必要に応じて前記主記憶メモリにロードされる。記憶装置５５の前記主記憶メモリにより、またはＣＰＵ９１が備えるキャッシュメモリにより、本発明におけるポインタ・テーブル・メモリ、固定長データテーブルメモリ、データテーブルメモリ、および空家テーブルメモリ、空室テーブルメモリ、空室管理テーブルメモリ、構造管理テーブルメモリ等が構成される。入出力装置９３は、複数の入出力ポートを備えて外部とのデータ通信を行うことが出来る。記憶装置９２内の例えばハードディスクドライブやフロッピーディスクドライブなどにより、本発明のコンピュータプログラムが記録された記録媒体からプログラムが読み出される。
【０２２０】
以上、詳細に説明したように、本発明を適用した実施の形態によれば、多数の固定長データが格納された固定長データテーブルの検索処理がいろいろな検索ルールで、２から３メモリーサイクル程度の速度で実行することができる。又、パイプライン構成が可能なため、一秒間あたりの検索処理数は膨大な数になる。検索処理に加えて、ユーザーデータ、統計データの管理を行うため、検索後のデータ処理を削減でき、検索処理の高速化、および検索処理数の増大が図れる。それらに加えて、固定長データの付加、削除、および自動削除を行うため、ホスト制御装置が行っていた重い処理を削減できる。又、本発明固定長データ検索装置と固定長データ検索および管理装置および管理方法と検索方法は、実施例で説明したように、ネットワーク通信で多用されるＩＰアドレスの検索や各種フィルターに適用可能である。又、本発明は、本発明の固定長データ検索および管理装置または管理・検索方法を適用した情報処理装置として、コンピュータを機能させるためのコンピュータプログラムに適用することが可能である。さらに本発明は、前記コンピュータプログラムを記録したコンピュータ読取可能な記録媒体に適用することも可能である。
【０２２１】
以上のように、いくつかの例示的な実施形態が本発明に関して詳細に説明された。当業者には、本発明の新規な開示および効果から実質的に離れることなくこれら実施形態を様々に改良することが可能であることが分るであろう。したがって、そのような改良も全て本発明の範囲に含められるべきことが意図されている。
【図面の簡単な説明】
【０２２２】
【図１】図１は、本発明のある実施の形態における本発明固定長データ検索および管理装置に係る実施例を示すブロック図である。
【図２】図２は、本発明のある実施の形態における固定長データ検索装置１０の動作を示すフローチャートである。
【図３】図３は、本発明のある実施の形態における固定長データ検索装置１０を構成する入力固定長データ処理手段１００の機能を示すブロック図である。
【図４】図４は、本発明のある実施の形態における固定長データ検索装置１０を構成するポインタテーブルメモリ５００の構成と、固定長データ検索装置１０を構成する固定長データテーブルメモリ５６０の構成と、固定長データ検索装置１０を構成するデータテーブルメモリ５４０の構成を示すブロック図である。
【図５】図５は、本発明のある実施の形態におけるポインタテーブルメモリ５００に格納されるポインタテーブルのインデックスと、ポインタテーブルメモリ５００の読み出し機能ブロックと、固定長データテーブルメモリ５６０に格納される固定長データテーブルのインデックスと、固定長データテーブルメモリ５６０の読み出し機能ブロックと、データテーブルメモリ５４０に格納されるデータテーブルへの読み出しおよび書き込みのインデックスと、データテーブルメモリ５４０の読み出し機能ブロックとを示す説明図である。
【図６】図６は、本発明のある実施の形態におけるポインタテーブルのエントリーデータの形式およびその内容と、固定長データテーブルのエントリー制御データの形式およびその内容を示す図である。
【図７】図７は、本発明のある実施の形態における固定長データ検索装置１０を構成するポインタ処理手段２００の機能を示すブロック図である。
【図８】図８は、本発明のある実施の形態における固定長データテーブルのエントリーデータの形式およびその内容と、固定長データテーブルのエントリーデータにおける要素の種類およびその内容を示す図である。
【図９】図９は、本発明のある実施の形態における固定長データテーブルが持つＮＶＣ形式の動作説明を行う図である。
【図１０】図１０は、本発明のある実施の形態における本発明のある実施の形態における固定長データ検索装置１０を構成する比較手段４００の機能を示すブロック図である。
【図１１】図１１は、本発明のある実施の形態における比較手段４００が行う比較方法とそれに対応するマスクを示す機能ブロックと、比較手段４００が行う大小比較方法を示す機能ブロック図である。
【図１２】図１２は、本発明のある実施の形態における比較手段４００が出力する出力データの種類とその内容を示す図である。
【図１３】図１３は、本発明のある実施の形態における固定長データ検索装置１０を構成する修正手段３００の機能ブロックと、修正手段３００が出力する出力データと、データテーブルのエントリーデータの内容を示す説明図である。
【図１４】図１４は、本発明のある実施の形態における固定長データ検索装置１０を構成する出力手段８００の機能ブロックと、出力手段８００が出力する出力データとを示す説明図である。
【図１５】図１５は、本発明のある実施の形態における空家テーブルメモリ７００に格納される空家テーブルとその内容、および、空家テーブルのエントリーの関係を示す図である。
【図１６】図１６は、本発明のある実施の形態における空室テーブルメモリ７２０に格納される空室テーブルとその内容、および、空室テーブルのエントリーの関係を示す図である。
【図１７】図１７は、本発明のある実施の形態における室の管理法を示す図である。
【図１８】図１８は、本発明のある実施の形態における空室管理テーブルメモリ７４０に格納される空室管理テーブルとその内容を示す図である。
【図１９】図１９は、本発明のある実施の形態における固定長データ検索および管理装置に係るテーブルの関係を示す図である。
【図２０】図２０は、本発明のある実施の形態における管理テーブルを示す図である。
【図２１】図２１は、本発明のある実施の形態における構造管理テーブルメモリ７６０に格納される構造管理テーブルとその内容、および、固定長データテーブルの構造の変移を示す図である。
【図２２】図２２は、本発明のある実施の形態における検索手順の実施例を示す図である。
【図２３】図２３は、本発明のある実施の形態における固定長データ検索および管理装置に係るテーブル管理制御手段の実施例と、本発明のある実施の形態における固定長データ検索および管理装置に係るテーブル管理制御手段、および、コントローラまたはシークエンサーのブロック図である。
【図２４】図２４は、本発明のある実施の形態におけるテーブル管理制御手段への命令と、入力命令・実行機能の動作および自動削除命令機能の動作を示すフローチャートである。
【図２５】図２５は、本発明のある実施の形態における付加命令の実行および削除命令の実行を示すフローチャートである。
【図２６】図２６は、本発明のある実施の形態における統計データ引出命令の実行および自動削除名引出命令の実行を示すフローチャートである。
【図２７】図２７は、本発明のある実施の形態における自動削除命令の実行のフローチャートと、固定長データテーブルの要素制御データの内容を示す説明図である。
【図２８】図２８は、本発明のある実施の形態における単純付加機能および構造変更付加機能を示すフローチャートである。
【図２９】図２９は、本発明のある実施の形態における単純削除機能および構造変更削除機能を示すフローチャートである。
【図３０】図３０は、本発明のある実施の形態における管理出力機能のブロックと、管理出力データを示す説明図である。
【図３１】図３１は、本発明のある実施の形態における本発明のコンピュータプログラムおよび記録媒体を適用可能なコンピュータシステムの構成例を示すブロック図である。
【図１】
0004435156.tif 000002
【図２】
0004435156.tif 000003
【図３】
0004435156.tif 000004
【図４】
0004435156.tif 000005
【図５】
0004435156.tif 000006
【図６】
0004435156.tif 000007
【図７】
0004435156.tif 000008
【図８】
0004435156.tif 000009
【図９】
0004435156.tif 000010
【図１０】
0004435156.tif 000011
【図１１】
0004435156.tif 000012
【図１２】
0004435156.tif 000013
【図１３】
0004435156.tif 000014
【図１４】
0004435156.tif 000015
【図１５】
0004435156.tif 000016
【図１６】
0004435156.tif 000017
【図１７】
0004435156.tif 000018
【図１８】
0004435156.tif 000019
【図１９】
0004435156.tif 000020
【図２０】
0004435156.tif 000021
【図２１】
0004435156.tif 000022
【図２２】
0004435156.tif 000023
【図２３】
0004435156.tif 000024
【図２４】
0004435156.tif 000025
【図２５】
0004435156.tif 000026
【図２６】
0004435156.tif 000027
【図２７】
0004435156.tif 000028
【図２８】
0004435156.tif 000029
【図２９】
0004435156.tif 000030
【図３０】
0004435156.tif 000031
【図３１】
0004435156.tif 000032