(57)【要約】【課題】データ・テーブルに大量に格納されるＭＡＣアドレス等の固定長データを高速に検索できるようにする。【解決手段】入力された固定長データのハッシュ値を演算して出力するハッシュ演算手段１１と、Ｎ（Ｎは２以上の整数）個のメモリバンクから成り、多数の固定長データが保持されるデータ・テーブルを格納するデータ・テーブル・メモリ１４と、各固定長データの格納先のメモリアドレスが、前記ハッシュ値をインデックスとして保持されるメモリ・ポインタ・テーブルを格納するポインタ・テーブル・メモリ１３と、前記Ｎ個のメモリバンクの同一メモリアドレスに格納されている複数の固定長データと、前記ハッシュ演算手段に入力された一つの固定長データとを同時に比較し、比較結果を出力する比較手段１５とを備える。【選択図】    図１
2004229163.tif 000002
【特許請求の範囲】
【請求項１】
入力された固定長データのハッシュ値を演算して出力するハッシュ演算手段と、
Ｎ（Ｎは２以上の整数）個のメモリバンクから成り、多数の固定長データが保持されるデータ・テーブルを格納するデータ・テーブル・メモリと、
各固定長データの格納先のメモリアドレスが、前記ハッシュ値をインデックスとして保持されるメモリ・ポインタ・テーブルを格納するポインタ・テーブル・メモリと、
前記Ｎ個のメモリバンクの同一メモリアドレスに格納されている複数の固定長データと、前記ハッシュ演算手段に入力された一つの固定長データとを同時に比較し、比較結果を出力する比較手段と、
を備えることを特徴とする固定長データ検索装置。
【請求項２】
前記比較手段は２つの固定長データが同一であるか否かを判別する比較器をＮ個備え、前記ハッシュ演算手段に入力された一つの固定長データのハッシュ値に基づいて前記メモリ・ポインタ・テーブルを参照し、得られたメモリアドレスに基づいて前記データ・テーブルを参照して、前記比較手段が、前記Ｎ個のメモリバンクの同一メモリアドレスに格納されている固定長データのいずれかと、前記ハッシュ演算手段に入力された一つの固定長データとが一致するか否かを判別し、判別結果を出力することを特徴とする請求項１記載の固定長データ検索装置。
【請求項３】
前記ハッシュ演算手段に入力された一つの固定長データと同一のデータを、前記ハッシュ演算手段を介して前記データ・テーブルで検索し、前記データ・テーブルに未登録である場合には前記一つの固定長データを前記データ・テーブルに登録することを特徴とする請求項１または請求項２記載の固定長データ検索装置。
【請求項４】
ハッシュ値が同一となる別々の固定長データを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに格納することを特徴とする請求項３記載の固定長データ検索装置。
【請求項５】
ハッシュ値が異なる複数の固定長データのそれぞれを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに格納することを特徴とする請求項３記載の固定長データ検索装置。
【請求項６】
前記固定長データはネットワーク通信用のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスであり、前記データ・テーブル・メモリは、多数のＭＡＣアドレスが保持されるＭＡＣアドレス・テーブルを格納するＭＡＣエントリ・テーブル・メモリであることを特徴とする請求項１乃至請求項５のいずれか１項に記載の固定長データ検索装置。
【請求項７】
２種類のハッシュ関数を用いて、入力された固定長データの第１及び第２のハッシュ値を求めるハッシュ演算手段と、
Ｎ（Ｎは２以上の整数）個のメモリバンクから成り、多数の固定長データが保持されるデータ・テーブルを格納するデータ・テーブル・メモリと、
各固定長データの格納先のメモリアドレスが、前記第１のハッシュ値をインデックスとして保持される主メモリ・ポインタ・テーブル、及び、各固定長データの格納先のメモリアドレスが、前記第２のハッシュ値をインデックスとして保持される副メモリ・ポインタ・テーブルを格納するポインタ・テーブル・メモリと、
前記Ｎ個のメモリバンクの同一メモリアドレスに格納されている複数の固定長データと、前記ハッシュ演算手段に入力された一つの固定長データとを同時に比較し、比較結果を出力する比較手段と、
を備えることを固定長データ検索装置。
【請求項８】
固定長データが入力された時に２つの前記メモリ・ポインタ・テーブルのいずれを参照するかを、前記第１のハッシュ値をインデックスとして示すポインタ・セレクタ・テーブルを備えることを特徴とする請求項７記載の固定長データ検索装置。
【請求項９】
前記データ・テーブルにおいて、第１のハッシュ値が同一となる別々の固定長データの格納数がＮを超えるときに、新たに格納する固定長データの第１のハッシュ値に対応する前記ポインタ・セレクタ・テーブルのポインタを、前記副メモリ・ポインタ・テーブルにセットし、且つ、第２のハッシュ値が一致する、互いに異なる複数の固定長データを、前記データ・メモリにおける異なるメモリバンクの同一アドレスに分散して格納し、該格納したメモリアドレスを前記副メモリ・ポインタ・テーブルで管理することを特徴とする請求項８記載の固定長データ検索装置。
【請求項１０】
前記比較手段はＮ個の比較器を備え、前記各比較器は、２つの固定長データが同一であるか否かを判別する際に、全ビットを同時に比較して判別することを特徴とする請求項９記載の固定長データ検索装置。
【請求項１１】
前記ハッシュ演算手段に入力された一つの固定長データの第１のハッシュ値に基づいて前記ポインタ・セレクタ・テーブルを参照し、該テーブルのポインタに応じて前記主メモリ・ポインタ・テーブルまたは副メモリ・ポインタ・テーブルを参照して、得られたメモリアドレスに基づいて前記データ・テーブルを参照して、前記比較手段が、前記Ｎ個のメモリバンクの同一メモリアドレスに格納されている固定長データのいずれかと、前記ハッシュ演算手段に入力された一つの固定長データとが一致するか否かを判別し、判別結果を出力することを特徴とする請求項９記載の固定長データ検索装置。
【請求項１２】
入力された固定長データと第１のハッシュ値が同一になる固定長データが、前記データ・テーブルにまだ登録されていない場合は、前記入力された固定長データを前記データ・テーブル・メモリに格納し、該格納先のメモリアドレスを前記主メモリ・ポインタ・テーブルで管理することを特徴とする請求項９記載の固定長データ検索装置。
【請求項１３】
前記固定長データはネットワーク通信用のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスであり、前記データ・テーブル・メモリは、多数のＭＡＣアドレスが保持されるＭＡＣアドレス・テーブルを格納するＭＡＣエントリ・テーブル・メモリであることを特徴とする請求項７乃至請求項１２のいずれか１項に記載の固定長データ検索装置。
【請求項１４】
コンピュータを、請求項１乃至請求項１３のいずれか１項に記載の情報処理装置として機能させることを特徴とするプログラム。
【請求項１５】
請求項１４に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【請求項１６】
入力された固定長データのハッシュ値を演算して出力するハッシュ演算ステップと、
各固定長データの格納先のメモリアドレスが、前記ハッシュ値をインデックスとして保持されるメモリ・ポインタ・テーブルを、前記演算されたハッシュ値に基づいて参照するステップと、
Ｎ（Ｎは２以上の整数）個のメモリバンクからなるデータ・テーブル・メモリに格納され、多数の固定長データが保持されるデータ・テーブルから、前記メモリ・ポインタ・テーブルのポインタが指すアドレスに格納されているＮ個の固定長データを読み出すステップと、
前記読み出したＮ個の固定長データと、前記入力された一つの固定長データとを同時に比較し、比較結果を出力する比較ステップと、
を含むことを特徴とする固定長データ検索方法。
【請求項１７】
前記比較ステップでは、２つの固定長データが同一であるか否かを判別する比較処理を、前記読み出したＮ個のデータについて、並列処理により同一のタイミングで行うことを特徴とする請求項１６記載の固定長データ検索方法。
【請求項１８】
前記入力された一つの固定長データと同一のデータを、そのハッシュ値に基づいて前記データ・テーブルで検索するステップと、
該検索において前記同一のデータが検出されなかった場合に、前記入力された一つの固定長データを前記データ・テーブルに登録する登録ステップとを含むことを特徴とする請求項１６または請求項１７記載の固定長データ検索方法。
【請求項１９】
前記登録ステップでは、ハッシュ値が同一となる別々の固定長データを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに登録することを特徴とする請求項１８記載の固定長データ検索方法。
【請求項２０】
前記登録ステップでは、ハッシュ値が異なる複数の固定長データのそれぞれを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに登録することを特徴とする請求項１８記載の固定長データ検索方法。
【請求項２１】
前記固定長データはネットワーク通信用のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスであり、前記データ・テーブル・メモリは、多数のＭＡＣアドレスが保持されるＭＡＣアドレス・テーブルを格納するＭＡＣエントリ・テーブル・メモリであることを特徴とする請求項１６乃至請求項２０のいずれか１項に記載の固定長データ検索方法。
【請求項２２】
第１のハッシュ関数を用いて、入力された固定長データの第１のハッシュ値を求める第１ハッシュ演算ステップと、
第２のハッシュ関数を用いて、入力された固定長データの第２のハッシュ値を求める第２ハッシュ演算ステップと、
各固定長データの格納先のメモリアドレスが、前記第１のハッシュ値をインデックスとして保持される主メモリ・ポインタ・テーブルを、前記第１のハッシュ値に基づいて参照するステップと、
各固定長データの格納先のメモリアドレスが、前記第２のハッシュ値をインデックスとして保持される副メモリ・ポインタ・テーブルを、前記第２のハッシュ値に基づいて参照するステップと、
Ｎ（Ｎは２以上の整数）個のメモリバンクで構成され、多数の固定長データを保持するデータ・テーブルが格納されているデータ・テーブル・メモリから、前記主メモリ・ポインタ・テーブルまたは前記副メモリ・ポインタ・テーブルのポインタが示すアドレスに格納されているＮ個の固定長データを読み出すステップと、
該読み出されたＮ個の固定長データと、入力された一つの固定長データとを比較する比較ステップとを含むことを特徴とする固定長データ検索方法。
【請求項２３】
固定長データが入力された時に２つの前記メモリ・ポインタ・テーブルのいずれを参照するかが、前記第１のハッシュ値をインデックスとして示されているポインタ・セレクタ・テーブルを、入力された固定長データの第１のハッシュ値に基づいて参照するステップを含むことを特徴とする請求項２２記載の固定長データ検索方法。
【請求項２４】
前記データ・テーブルにおいて、第１のハッシュ値が同一となる別々の固定長データの格納数がＮを超えるときに、新たに格納する固定長データの第１のハッシュ値に対応する前記ポインタ・セレクタ・テーブルのポインタを、前記副メモリ・ポインタ・テーブルに設定するステップを含むことを特徴とする請求項２３記載の固定長データ検索方法。
【請求項２５】
前記比較ステップは、読み出されたＮ個の固定長データのそれぞれを入力された固定長データと比較する際に、データの全ビットを同時に比較するステップを含むことを特徴とする請求項２２記載の固定長データ検索方法。
【請求項２６】
第２のハッシュ値が一致する、互いに異なる複数の固定長データを、前記データ・メモリにおける異なるメモリバンクの同一アドレスに分散して格納し、該格納したメモリアドレスを前記副メモリ・ポインタ・テーブルに登録するステップを含むことを特徴とする請求項２２記載の固定長データ検索方法。
【請求項２７】
入力された固定長データと第１のハッシュ値が同一になる固定長データが、前記データ・テーブルにまだ登録されていない場合は、前記入力された固定長データを前記データ・テーブル・メモリに格納し、該格納先のメモリアドレスを前記主メモリ・ポインタ・テーブルに登録するステップを含み、
且つ、入力された固定長データを前記データ・テーブル・メモリに格納する際に、未使用のアドレスがある場合は未使用のアドレスに格納し、未使用のアドレスがない場合は、使用済みアドレスの中で、データが格納されていないメモリバンクに格納するステップを含むことを特徴とする請求項２２記載の固定長データ検索方法。
【請求項２８】
前記固定長データはネットワーク通信用のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスであり、前記データ・テーブルは、多数のＭＡＣアドレスが保持されるＭＡＣアドレス・テーブルであることを特徴とする請求項２２乃至請求項２７のいずれか１項に記載の固定長データ検索方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、データのビット長が一定である固定長データを検索するための装置及び方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体に関し、特に、ネットワーク間中継装置におけるＭＡＣアドレスを高速に検索するための装置及び方法、及びコンピュータプログラム、並びにコンピュータ読み取り可能な記録媒体に関する。
【０００２】
【従来の技術】
従来のネットワーク間中継装置に使用される中継先判定用データベースは、複数のサーチキーが同一のハッシュ値に変換されるため、ＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレス・テーブルの再構築に長時間を要したり、或いは、ＭＡＣアドレス・テーブルで必要な情報をサーチするのに長時間を要したりして、ハッシュ関数を利用しても効率的なサーチが行なえないという問題があった。これを解決する方法として、例えば、学習時と実際の中継先判定時とで異なるハッシュ・テーブルを使用し、且つＭＡＣアドレス・テーブルの各エントリに、前記した両方のハッシュ・テーブル用のメモリ・ポインタを持たせておくようにしたものがある。（例えば、特許文献１参照）
【０００３】
【特許文献１】
特開平１０−２１００６６号公報
【０００４】
従来、ネットワーク間中継装置に使用されるＬ２（ＯＳＩ（Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）参照モデルの第２層）スイッチ、Ｌ３（ＯＳＩ参照モデルの第３層）スイッチ等のネットワーク・スイッチ手段において、十数万を超えるＭＡＣアドレスをサポート出来るシステムは、多くのサーバーやクライアントをサポートできる反面、ＭＡＣアドレスに該当するポートを特定する為には、ＭＡＣエントリ・テーブル・メモリが保持している全てのＭＡＣアドレスを検索した上で、ＭＡＣアドレスに対応したポートを探し出さなければならなかった。これは十数万を超すＭＡＣアドレスを持つ大規模ネットワーク・スイッチ手段にとっては、スイッチの性能を落とす大きな要因となる。
【０００５】
図１１はＭＡＣアドレスの構造を示す図である。ＭＡＣアドレスはデータリンクに接続しているノードを識別するために利用されるもので、ＩＥＥＥ８０２．３で規格化されている。ＭＡＣアドレスは、４８ｂｉｔの固定長データであり、その３〜２４ｂｉｔはベンダ識別子を示し、２５〜４８ｂｉｔはベンダ内での識別子を示す。前記ベンダ識別子は正式にはＯＵＩ（Ｏｒｇａｎｉｚａｔｉｏｎａｌｌｙ  Ｕｎｉｑｕｅ  Ｉｄｅｎｔｉｆｉｅｒ）と呼ばれ、ＩＥＥＥがベンダごとに重ならないように管理しているアドレスである。また、前記ベンダ内での識別子は、ベンダが製品ごとに重ならないように管理しているアドレスである。
【０００６】
伝送されるフレームやパケットには、送信先を示す宛先ＭＡＣアドレスと、送信元を示す送信元ＭＡＣアドレスとが付加されて伝送される。一方、Ｌ２スイッチ、Ｌ３スイッチ、ルータ等のスイッチ手段は、フレームやパケットの送信先ポートを特定するために、ＭＡＣエントリ・テーブル・メモリを持っている。ＭＡＣエントリ・テーブル・メモリはＭＡＣアドレス・テーブルを格納するメモリであり、ＭＡＣアドレス・テーブルはＭＡＣアドレスとそのポートアドレス等の対応関係を示す情報の一覧表であり、多数のＭＡＣアドレスに関する情報を保持している。
なお、ＭＡＣアドレス・テーブルは、受信したフレームのヘッダから分離された送信元ＭＡＣアドレスの情報に基づいて作成される。また、ＭＡＣアドレス・テーブルを用いてＭＡＣアドレスを検索するときには、受信したフレームのヘッダから分離された宛先ＭＡＣアドレスを用いて実行される。
【０００７】
スイッチ手段において十数万を超えるＭＡＣエントリ・テーブル・メモリから任意のＭＡＣアドレスを高速に検索する場合は、一般的に、（１）一時的にＭＡＣアドレスを保持できるキャッシュメモリを持ち、受信した宛先ＭＡＣアドレスをキャッシュメモリにすでに保持している場合は、このキャッシュメモリから宛先ＭＡＣアドレスに該当するポートアドレスを導き出して、このポートに対してのみ転送を行う。また、（２）上記キャッシュメモリに当該宛先ＭＡＣアドレスをまだ保持していない場合は、送信元ポート以外の全ポートに転送を行う、いわゆるブロードキャストを行う必要がある。
【０００８】
上記（１）の場合、キャッシュメモリの現実的なサイズでは数十万を超すＭＡＣアドレスを格納することが困難であり、スイッチ手段がそのキャッシュサイズで対応可能な量以上の通信を行った場合は、上記（２）に記したブロードキャストを行う頻度が高くなる。
ブロードキャストは、関係する全てのネットワークに対して同時にパケットを載せる処理を行う為、関係するネットワークの負荷が増大する。そして、結果的に全てのネットワークを一時的に止めてしまうような動作状態に陥ってしまうことがあり、これが、関係するスイッチ手段のスループットを低下させる結果に繋がっている。
【０００９】
上記（１）に記したようなキャッシュをする例では、ＣＡＭ（Ｃｏｎｔｅｎｔ  Ａｄｄｒｅｓｓａｂｌｅ  Ｍｅｍｏｒｙ：連想メモリ）を使用する。ＣＡＭを使用した場合、ＭＡＣアドレスの高速検索（以下、高速サーチとも記す）が可能であるが、ＣＡＭはその回路構造からして大規模なものが製造しにくく、大量の比較データを保持することが出来ない為、数万を超えるエントリのＭＡＣアドレス・テーブルを格納することができない。
他方、ＣＡＭを使用せずに、通常のメモリを使用してＭＡＣアドレスの高速検索（高速サーチ）を行おうとした場合、検索方法としていくつか考えられる。例えば、（３）十数万のＭＡＣアドレスが検索方法に適応した形でソート（ｓｏｒｔ）してある場合は、例えば二分岐検索によるクイック・サーチを利用して、ＭＡＣアドレスのエントリ数が１２８ｋとして１８回以内のメモリアクセスで検索可能である。
【００１０】
しかし、このようなアルゴリズムを使用するためには、ＭＡＣアドレス・テーブルを検索し易い形で常に整列しておかなければならない。一方、ネットワーク・ホストの中には、モバイル製品のように接続場所が一定であるとは限らないものがある。よって一部のＭＡＣアドレスとスイッチ／ルータのポートアドレスとの対応関係は、時間と共に変化し、追加、削除が繰り返されている可能性が常にある。このため、ＭＡＣエントリ・テーブル・メモリにおけるデータの追加、削除に伴うＭＡＣエントリ・テーブル・メモリのデータの並べ替えは、周期的に行う必要がある。この並べ替え作業は十数万を超えるエントリ数においては、数ミリ秒〜数十ミリ秒という長時間を要する処理であり、通常のメモリを使用してＭＡＣアドレスの検索を行うことは、実現性に乏しかった。
【００１１】
また、ＭＡＣアドレスなどの非連続的なデータを効率的にメモリに格納しようとする場合、以下のような処理が行われる。すなわち、（４）ハッシュ法によってＭＡＣアドレス等のエントリデータを実質的に分散させるべく、ハッシュ関数によって生成されたハッシュ値をメモリ・ポインタ・テーブルのメモリアドレスに関連付け、ＭＡＣアドレス・テーブルの１つのメモリアドレスに対するエントリデータを一つにするという方法が一般的に用いられる。
しかしながら完全なハッシュ関数は存在しないため、全てのエントリデータのメモリアドレスを均等に分散することは、不可能である。ハッシュ関数のエントリデータであるＭＡＣアドレスが異なっていても、それらのハッシュ値が一致する場合、ＭＡＣアドレス・テーブルを格納するＭＡＣエントリ・テーブル・メモリ内で、同じメモリアドレスに複数のデータが対応付けされることになるため、検索時には、前記した複数のデータの中から一つを選ぶ処理が必要になり、また、ＭＡＣアドレス・テーブルの構築時にはデータの追加、削除に伴う格納アドレスの変更が必要になるため、データの並べ替えを行うか、または想定する格納データ量の数倍（メモリアドレスの重なりを想定した最大のデータ量）のメモリを用意しなければならないと言う問題があった。
【００１２】
【発明が解決しようとする課題】
本発明は、前記した問題点を解消するためになされたものであって、その主たる目的は、データ・テーブルに大量に格納されるＭＡＣアドレス等の固定長データを高速に検索できるようにすることであり、そのための装置または方法またはコンピュータ用記録媒体を提供することである。
【００１３】
【課題を解決するための手段】
本発明の固定長データ検索装置、固定長データ検索方法、コンピュータ読み取り可能な記録媒体は、前記目的を達成するために次のように構成されている。
すなわち、第１の発明の固定長データ検索装置は、入力された固定長データのハッシュ値を演算して出力するハッシュ演算手段と、Ｎ（Ｎは２以上の整数）個のメモリバンクから成り、多数の固定長データが保持されるデータ・テーブルを格納するデータ・テーブル・メモリと、各固定長データの格納先のメモリアドレスが、前記ハッシュ値をインデックスとして保持されるメモリ・ポインタ・テーブルを格納するポインタ・テーブル・メモリと、前記Ｎ個のメモリバンクの同一メモリアドレスに格納されている複数の固定長データと、前記ハッシュ演算手段に入力された一つの固定長データとを同時に比較し、比較結果を出力する比較手段と、を備えるようにした固定長データ検索装置である。
【００１４】
第２の発明の固定長データ検索装置は、第１の発明の固定長データ検索装置において、前記比較手段は２つの固定長データが同一であるか否かを判別する比較器をＮ個備え、前記ハッシュ演算手段に入力された一つの固定長データのハッシュ値に基づいて前記メモリ・ポインタ・テーブルを参照し、得られたメモリアドレスに基づいて前記データ・テーブルを参照して、前記比較手段が、前記Ｎ個のメモリバンクの同一メモリアドレスに格納されている固定長データのいずれかと、前記ハッシュ演算手段に入力された一つの固定長データとが一致するか否かを判別し、判別結果を出力するようにした固定長データ検索装置である。
【００１５】
第３の発明の固定長データ検索装置は、第１または第２の発明の固定長データ検索装置において、前記ハッシュ演算手段に入力された一つの固定長データと同一のデータを、前記ハッシュ演算手段を介して前記データ・テーブルで検索し、前記データ・テーブルに未登録である場合には前記一つの固定長データを前記データ・テーブルに登録するようにした固定長データ検索装置である。
【００１６】
第４の発明の固定長データ検索装置は、第３の発明の固定長データ検索装置において、ハッシュ値が同一となる別々の固定長データを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに格納するようにした固定長データ検索装置である。
【００１７】
第５の発明の固定長データ検索装置は、第３の発明の固定長データ検索装置において、ハッシュ値が異なる複数の固定長データのそれぞれを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに格納するようにした固定長データ検索装置である。
【００１８】
第６の発明の固定長データ検索装置は、第１〜第５のいずれかの発明の固定長データ検索装置において、前記固定長データはネットワーク通信用のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスであり、前記データ・テーブル・メモリは、多数のＭＡＣアドレスが保持されるＭＡＣアドレス・テーブルを格納するＭＡＣエントリ・テーブル・メモリであるようにした固定長データ検索装置である。
【００１９】
第７の発明の固定長データ検索装置は、２種類のハッシュ関数を用いて、入力された固定長データの第１及び第２のハッシュ値を求めるハッシュ演算手段と、Ｎ（Ｎは２以上の整数）個のメモリバンクから成り、多数の固定長データが保持されるデータ・テーブルを格納するデータ・テーブル・メモリと、各固定長データの格納先のメモリアドレスが、前記第１のハッシュ値をインデックスとして保持される主メモリ・ポインタ・テーブル、及び、各固定長データの格納先のメモリアドレスが、前記第２のハッシュ値をインデックスとして保持される副メモリ・ポインタ・テーブルを格納するポインタ・テーブル・メモリと、前記Ｎ個のメモリバンクの同一メモリアドレスに格納されている複数の固定長データと、前記ハッシュ演算手段に入力された一つの固定長データとを同時に比較し、比較結果を出力する比較手段と、を備えるようにした固定長データ検索装置である。
【００２０】
第８の発明の固定長データ検索装置は、第７の発明の固定長データ検索装置において、固定長データが入力された時に２つの前記メモリ・ポインタ・テーブルのいずれを参照するかを、前記第１のハッシュ値をインデックスとして示すポインタ・セレクタ・テーブルを備えるようにした固定長データ検索装置である。
【００２１】
第９の発明の固定長データ検索装置は、第８の発明の固定長データ検索装置において、前記データ・テーブルにおいて、第１のハッシュ値が同一となる別々の固定長データの格納数がＮを超えるときに、新たに格納する固定長データの第１のハッシュ値に対応する前記ポインタ・セレクタ・テーブルのポインタを、前記副メモリ・ポインタ・テーブルにセットし、且つ、第２のハッシュ値が一致する、互いに異なる複数の固定長データを、前記データ・メモリにおける異なるメモリバンクの同一アドレスに分散して格納し、該格納したメモリアドレスを前記副メモリ・ポインタ・テーブルで管理するようにした固定長データ検索装置である。
【００２２】
第１０の発明の固定長データ検索装置は、第９の発明の固定長データ検索装置において、前記比較手段はＮ個の比較器を備え、前記各比較器は、２つの固定長データが同一であるか否かを判別する際に、全ビットを同時に比較して判別するようにした固定長データ検索装置である。
【００２３】
第１１の発明の固定長データ検索装置は、第９の発明の固定長データ検索装置において、前記ハッシュ演算手段に入力された一つの固定長データの第１のハッシュ値に基づいて前記ポインタ・セレクタ・テーブルを参照し、該テーブルのポインタに応じて前記主メモリ・ポインタ・テーブルまたは副メモリ・ポインタ・テーブルを参照して、得られたメモリアドレスに基づいて前記データ・テーブルを参照して、前記比較手段が、前記Ｎ個のメモリバンクの同一メモリアドレスに格納されている固定長データのいずれかと、前記ハッシュ演算手段に入力された一つの固定長データとが一致するか否かを判別し、判別結果を出力するようにした固定長データ検索装置である。
【００２４】
第１２の発明の固定長データ検索装置は、第９の発明の固定長データ検索装置において、入力された固定長データと第１のハッシュ値が同一になる固定長データが、前記データ・テーブルにまだ登録されていない場合は、前記入力された固定長データを前記データ・テーブル・メモリに格納し、該格納先のメモリアドレスを前記主メモリ・ポインタ・テーブルで管理するようにした固定長データ検索装置である。
【００２５】
第１３の発明の固定長データ検索装置は、第７〜第１２のいずれかの発明の固定長データ検索装置において、前記固定長データはネットワーク通信用のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスであり、前記データ・テーブル・メモリは、多数のＭＡＣアドレスが保持されるＭＡＣアドレス・テーブルを格納するＭＡＣエントリ・テーブル・メモリであるようにした固定長データ検索装置である。
【００２６】
第１４の発明は、コンピュータを、第１乃至第１３の発明のいずれかの情報処理装置として機能させるためのプログラムである。
【００２７】
第１５の発明は、第１４の発明のプログラムを記録したコンピュータ読み取り可能な記録媒体である。
【００２８】
第１６の発明の固定長データ検索方法は、入力された固定長データのハッシュ値を演算して出力するハッシュ演算ステップと、各固定長データの格納先のメモリアドレスが、前記ハッシュ値をインデックスとして保持されるメモリ・ポインタ・テーブルを、前記演算されたハッシュ値に基づいて参照するステップと、
Ｎ（Ｎは２以上の整数）個のメモリバンクからなるデータ・テーブル・メモリに格納され、多数の固定長データが保持されるデータ・テーブルから、前記メモリ・ポインタ・テーブルのポインタが指すアドレスに格納されているＮ個の固定長データを読み出すステップと、前記読み出したＮ個の固定長データと、前記入力された一つの固定長データとを同時に比較し、比較結果を出力する比較ステップと、を含むようにした固定長データ検索方法である。
【００２９】
第１７の発明の固定長データ検索方法は、第１６の発明の固定長データ検索方法において、前記比較ステップでは、２つの固定長データが同一であるか否かを判別する比較処理を、前記読み出したＮ個のデータについて、並列処理により同一のタイミングで行うようにした固定長データ検索方法である。
【００３０】
第１８の発明の固定長データ検索方法は、第１６または第１７の発明の固定長データ検索方法において、前記入力された一つの固定長データと同一のデータを、そのハッシュ値に基づいて前記データ・テーブルで検索するステップと、該検索において前記同一のデータが検出されなかった場合に、前記入力された一つの固定長データを前記データ・テーブルに登録する登録ステップとを含むようにした固定長データ検索方法である。
【００３１】
第１９の発明の固定長データ検索方法は、第１８の発明の固定長データ検索方法において、前記登録ステップでは、ハッシュ値が同一となる別々の固定長データを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに登録するようにした固定長データ検索方法である。
【００３２】
第２０の発明の固定長データ検索方法は、第１８の発明の固定長データ検索方法において、前記登録ステップでは、ハッシュ値が異なる複数の固定長データのそれぞれを、前記データ・テーブル・メモリにおける異なるメモリバンクの同一メモリアドレスに登録するようにした固定長データ検索方法である。
【００３３】
第２１の発明の固定長データ検索方法は、第１６〜第２０のいずれかの発明の固定長データ検索方法において、前記固定長データはネットワーク通信用のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスであり、前記データ・テーブル・メモリは、多数のＭＡＣアドレスが保持されるＭＡＣアドレス・テーブルを格納するＭＡＣエントリ・テーブル・メモリであるようにした固定長データ検索方法である。
【００３４】
第２２の発明の固定長データ検索方法は、第１のハッシュ関数を用いて、入力された固定長データの第１のハッシュ値を求める第１ハッシュ演算ステップと、
第２のハッシュ関数を用いて、入力された固定長データの第２のハッシュ値を求める第２ハッシュ演算ステップと、各固定長データの格納先のメモリアドレスが、前記第１のハッシュ値をインデックスとして保持される主メモリ・ポインタ・テーブルを、前記第１のハッシュ値に基づいて参照するステップと、各固定長データの格納先のメモリアドレスが、前記第２のハッシュ値をインデックスとして保持される副メモリ・ポインタ・テーブルを、前記第２のハッシュ値に基づいて参照するステップと、Ｎ（Ｎは２以上の整数）個のメモリバンクで構成され、多数の固定長データを保持するデータ・テーブルが格納されているデータ・テーブル・メモリから、前記主メモリ・ポインタ・テーブルまたは前記副メモリ・ポインタ・テーブルのポインタが示すアドレスに格納されているＮ個の固定長データを読み出すステップと、該読み出されたＮ個の固定長データと、入力された一つの固定長データとを比較する比較ステップとを含むようにした固定長データ検索方法である。
【００３５】
第２３の発明の固定長データ検索方法は、第２２の発明の固定長データ検索方法において、固定長データが入力された時に２つの前記メモリ・ポインタ・テーブルのいずれを参照するかが、前記第１のハッシュ値をインデックスとして示されているポインタ・セレクタ・テーブルを、入力された固定長データの第１のハッシュ値に基づいて参照するステップを含むようにした固定長データ検索方法である。
【００３６】
第２４の発明の固定長データ検索方法は、第２３の発明の固定長データ検索方法において、第１のハッシュ値が同一となる別々の固定長データの、前記データ・テーブルにおける格納数がＮを超えるときに、新たに格納する固定長データの第１のハッシュ値に対応する前記ポインタ・セレクタ・テーブルのポインタを、前記副メモリ・ポインタ・テーブルに設定するステップを含むようにした固定長データ検索方法である。
【００３７】
第２５の発明の固定長データ検索方法は、第２２の発明の固定長データ検索方法において、前記比較ステップは、読み出されたＮ個の固定長データのそれぞれを入力された固定長データと比較する際に、データの全ビットを同時に比較するステップを含むようにした固定長データ検索方法である。
【００３８】
第２６の発明の固定長データ検索方法は、第２２の発明の固定長データ検索方法において、第２のハッシュ値が一致する、互いに異なる複数の固定長データを、前記データ・メモリにおける異なるメモリバンクの同一アドレスに分散して格納し、該格納したメモリアドレスを前記副メモリ・ポインタ・テーブルに登録するステップを含むようにした固定長データ検索方法である。
【００３９】
第２７の発明の固定長データ検索方法は、第２２の発明の固定長データ検索方法において、入力された固定長データと第１のハッシュ値が同一になる固定長データが、前記データ・テーブルにまだ登録されていない場合は、前記入力された固定長データを前記データ・テーブル・メモリに格納し、該格納先のメモリアドレスを前記主メモリ・ポインタ・テーブルに登録するステップを含み、且つ、入力された固定長データを前記データ・テーブル・メモリに格納する際に、未使用のアドレスがある場合は未使用のアドレスに格納し、未使用のアドレスがない場合は、使用済みアドレスの中で、データが格納されていないメモリバンクに格納するステップを含むようにした固定長データ検索方法である。
【００４０】
第２８の発明の固定長データ検索方法は、第２２〜第２７のいずれかの発明の固定長データ検索方法において、前記固定長データはネットワーク通信用のＭＡＣ（Ｍｅｄｉａ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ）アドレスであり、前記データ・テーブルは、多数のＭＡＣアドレスが保持されるＭＡＣアドレス・テーブルであるようにした固定長データ検索方法である。
【００４１】
【発明の実施の形態】
図１は本発明固定長データ検索装置に係る第１実施例を示すブロック図である。図１に示す固定長データ検索装置１０は、入力された固定長データのハッシュ値を演算し出力するハッシュ演算手段１１と、Ｎ（Ｎは２以上の整数）個のメモリバンクで構成され、前記固定長データをデータ・テーブルとして格納するデータ・テーブル・メモリ１４と、前記データ・テーブル・メモリ１４に格納される各固定長データのメモリアドレスを、前記ハッシュ値をインデックスとしたメモリ・ポインタ・テーブルとして格納するポインタ・テーブル・メモリ１３と、前記Ｎ個のメモリバンクの同一メモリアドレスに格納されている複数の固定長データと、前記ハッシュ演算手段１１に入力された一つの固定長データとを同時に比較し、比較結果を出力する比較手段１５と、ＣＰＵを備えて固定長データ検索装置全体を制御する制御手段１２とを備える。なお、前記ポインタ・テーブル・メモリ１３とデータ・テーブル・メモリ１４とを単一のメモリで構成するようにしても良い。
【００４２】
図２は固定データ検索装置１０の機能ブロック図である。以下、固定長データ検索装置１０の動作について図１、図２と共に説明する。
入力端子９には固定長データが入力される。ハッシュ演算手段１１では前記入力された固定長データについてハッシュ関数の演算が行われ、ハッシュ値ＨＳが求められる。メモリ・ポインタ・テーブル参照手段３３は算出されたハッシュ値ＨＳをインデックスとしてポインタ・テーブル・メモリ１３を参照し、ポインタ・テーブル・メモリ１３の該当アドレスにポインタがあるか否かを判別する。前記メモリ・ポインタ・テーブルは、当該ハッシュ値を有する固定長データが格納されているデータ・テーブル・メモリ１４上のアドレスを、前記ハッシュ値をインデックスとして示すテーブルである。
【００４３】
メモリ・ポインタ・テーブルを参照して、ポインタ・テーブル・メモリ１３の該当するアドレスにポインタがある場合は、データ・テーブル読出手段３５で、そのポインタが示すメモリアドレスに基づいてデータ・テーブル・メモリ１４を検索する。前記データ・テーブルは多数の固定長データを保持するテーブルであり、データ・テーブル・メモリ１４は前記データ・テーブルを格納するメモリである。前記データ・テーブルに保持される各固定長データには、当該固定長データに関連する種々の情報が対応付けされており、多数の固定長データとその関連情報が対応付けして前記データ・テーブルに保持される。
【００４４】
データ・テーブル・メモリ１４は同一のアドレス構成を有するＮ（Ｎは２以上の整数）個のメモリバンクで構成される。したがって、ハッシュ演算手段１１で求められたハッシュ値ＨＳに関連付けされたメモリ・ポインタＡＤＲは、データ・テーブル・メモリ１４内の最大Ｎ個の固定長データに関連付けされる。すなわち、メモリ・ポインタ・テーブルの一つのポインタＡＤＲは、データ・テーブル・メモリ１４の一つのメモリアドレスを示すが、そのメモリアドレスＡＤＲに該当する固定長データとしては、メモリバンク１〜Ｎの該当メモリアドレスＡＤＲに、最大Ｎ個存在する可能性がある。
【００４５】
比較手段１５は、２つの固定長データを比較する比較器をＮ個有し、入力端子９に入力された固定長データＦＤＴがデータ・テーブルに登録されているか否かを判別し、一致データの有無を出力する手段３９により判別結果を出力する。比較手段１５を構成する個々の比較器は、入力端子９に入力された固定長データＦＤＴと、或るメモリバンクのアドレスＡＤＲから読み出された一つの固定長データとを比較する。
【００４６】
データ・テーブル・メモリ１４には、Ｎ個のメモリバンクを用いて、メモリアドレスＡＤＲに最大Ｎ個の固定長データが格納されている。アドレスＡＤＲで２以上のメモリバンクに固定長データが格納されている場合、アドレスＡＤＲに格納されている固定長データと入力端子９に入力された固定長データＦＤＴとの比較は、複数のデータについて同時に行われる。すなわち、最大Ｎ個の比較器が同じタイミングで比較処理を行う。
そして、比較手段１５において、固定長データＦＤＴと一致するデータがデータ・テーブルで検出されると、そのデータに関連するデータが関連データ出力手段４１から出力される。
【００４７】
なお、メモリ・ポインタ・テーブル参照手段３３において、ハッシュ演算手段１１から出力されたハッシュ値ＨＳに対応するポインタが検出されない場合は、該当する固定長データがデータ・テーブル・メモリ１４に格納されていないことを意味するから、メモリ・ポインタ・テーブル参照手段３３はポインタがないことを示す信号を出力し、一致データの有無を出力する手段３９は一致データが無いことを示す信号を出力する。そして、データ登録手段すなわちデータ格納手段４３で当該固定長データをデータ・テーブルに格納し、そのメモリアドレスをメモリ・ポインタ・テーブルに登録する、なお、データ登録手段４３で行うデータ・テーブルへの格納とモリ・ポインタ・テーブルへの登録の処理は、検索処理とは別に行うようにしても良い。
【００４８】
また、前記ハッシュ値ＨＳに対応するポインタが存在した場合であっても、比較手段１５による比較処理において、入力端子９に入力された固定長データＦＤＴと一致するデータをデータ・テーブルで検出できなかったときは、前記固定長データＦＤＴがデータ・テーブルに格納されていないことを意味するから、データ登録手段４３は当該固定長データＦＤＴをデータ・テーブルに格納する。この場合、同一ハッシュ値のエントリが複数あることになり、該複数のデータの格納先は、同一のアドレスＡＤＲで且つ別々のメモリバンクとする。すなわち、ポインタが示すアドレスＡＤＲのＮ個のメモリバンクのうち、空いているいずれかのメモリバンクに追加データを格納する。
【００４９】
上記したように、ハッシュ値が同一になる複数の固定長データがデータ・テーブルに登録される場合であっても、メモリ・ポインタ・テーブルを変更する必要がなく、ハッシュ値が同一の複数の固定長データは、最大Ｎ個までであれば、データ・テーブル・メモリ１４の複数のメモリバンクの同一アドレスに夫々格納される。したがってデータ・テーブルにおけるデータの再配置処理は必要がない。また、前記複数の固定長データの中の一部の固定長データが削除される場合であっても、メモリ・ポインタ・テーブルの変更は必要なく、データ・テーブルにおけるデータの再配置を行う必要がない。
一方、固定長データの検索時には、入力された固定長データと、データ・テーブル・メモリのＮ個のメモリバンクから読み出された固定長データとを、並列処理により同時に比較して、極めて短時間に検索結果を出力することが出来る。
【００５０】
以下、固定長データがＭＡＣアドレスである場合を例にして、本発明の第２実施例について説明する。
図３は本発明固定長データ検索装置の第２実施例として示すＭＡＣアドレス検索装置の主要部の構成図である。本明細書の記載においては、複数のエントリデータ中にハッシュ値が同一となるデータが存在することを「衝突」とも記す。また、ハッシュ値が同一となる複数のデータをシノニムのデータとも記す。
図３に示すＭＡＣアドレス検索装置２０では、図１に示すデータ・テーブル・メモリ１４に対応するのがＭＡＣエントリ・テーブル・メモリ２４である。また、図３に示すように、ＭＡＣアドレス・テーブルを格納するＭＡＣエントリ・テーブル・メモリは８個のメモリバンクで構成されているものとする。
【００５１】
この第２実施例では、図示しないハッシュ演算手段に４８ｂｉｔ構造のＭＡＣアドレスがエントリされ、１６ｂｉｔのハッシュ値が出力される。一方、メモリ・ポインタ・テーブルのポインタは、エントリされたＭＡＣアドレスが格納されるＭＡＣエントリ・テーブル・メモリのアドレスを示す。メモリ・ポインタ・テーブルは、入力されたＭＡＣアドレスから算出されたハッシュ値をインデックスとする。すなわち、ハッシュ値として出力される１６ｂｉｔデータとポインタ・テーブル・メモリのアドレスとが関連付けされている。このようにハッシュ値は、ＭＡＣアドレスの格納先のメモリアドレスを、メモリ・ポインタ・テーブルのポインタによって示すためのインデックスとして使用される。
【００５２】
第２実施例のＭＡＣアドレス検索装置２０によれば、ＭＡＣアドレス・テーブルにおいて、エントリデータの挿入削除によるデータの移動を無くすことが出来る。そして、接続位置の移動や、ある任意の周期において可能な削除機能等によって頻繁に起こるＭＡＣエントリ・テーブル・メモリのアップデートに際しても、テーブル再構築に伴うメモリアクセス回数を最小限にすることが出来る。したがって、検索に割り当てる割合を大きくすることが出来、サポートするポート数も多くすることが出来る。
【００５３】
以下、具体例として、ハッシュ関数を使用し、衝突するデータが最大８個であり、格納するＭＡＣアドレスのデータ数は最大１２８ｋエントリであり、ハッシュ値は１６ｂｉｔであるものと想定した例について説明する。
図３に示す固定長データ検索装置２０は、（１）ハッシュ演算手段２１（図示せず）、（２）制御手段２２（図示せず）、（３）６４ｋ×１６ｂｉｔのメモリ・ポインタ・テーブルを格納するポインタ・テーブル・メモリ２３、（４）１６ｋ×８×６４ｂｉｔのＭＡＣアドレス・テーブルを格納するＭＡＣエントリ・テーブル・メモリ２４、（５）８個の比較回路からなる比較手段２５を含む。ＭＡＣエントリ・テーブル・メモリ２４は８つのメモリバンクで構成されている。
【００５４】
また、ＭＡＣエントリ・テーブル・メモリ２４のアドレスの深さは１６ｋであり、ポインタ・テーブル・メモリ２３のアドレスの深さ６４ｋに比較して１／４に縮小されている点に注目する必要がある。
メモリ・ポインタ・テーブルのポインタとして、ポインタ・テーブル・メモリ２３の当該アドレスに関連付けされたＭＡＣアドレスの格納先メモリアドレスが書込まれている。すなわち、ＭＡＣエントリ・テーブル・メモリ２４の該当する一つのメモリアドレスがポインタとして書きこまれており、ハッシュ値をインデックスとしてメモリ・ポインタ・テーブルを参照することにより、当該ＭＡＣアドレスの格納先アドレスを知ることが出来る。
【００５５】
ＭＡＣアドレスが受信されると、または比較対象ＭＡＣアドレスが入力されると、そのＭＡＣアドレスのハッシュ値がハッシュ演算手段２１で演算される。そして、得られた１６ｂｉｔのハッシュ値をインデックスとしてメモリ・ポインタ・テーブルが参照される。次に、当該ポインタが示すＭＡＣエントリ・テーブル・メモリのアドレスに基づき、ＭＡＣエントリ・テーブル・メモリ２４の８つのメモリバンクにそれぞれ格納されているＭＡＣアドレスが読み出される。そして比較手段２５では、前記読み出された８つのデータが、別途与えられた比較対象ＭＡＣアドレスとそれぞれ比較される。比較手段２５は８個の比較器を備え、各比較器はＭＡＣエントリ・テーブル・メモリから読み出された一つのデータと、比較対象ＭＡＣアドレスとが一致するか比較するが、８個の比較器は並列処理により同じタイミングで動作する。比較手段２５からは比較結果が出力される。
【００５６】
図４は、ハッシュ値が同一となる複数のエントリデータが複数のメモリバンクの同一アドレスに格納される様子を示す図である。ＭＡＣアドレスは、ＭＡＣエントリ・テーブル・メモリ２４に格納されるが、格納される位置（メモリアドレス）はメモリ・ポインタ・テーブルのポインタによって指定される。ＭＡＣエントリ・テーブル・メモリ２４に書込まれる個々のＭＡＣアドレスは、ＭＡＣアドレス以外の他の情報と対応付けして格納される。そのデータ構造は図４に示すように、先頭に１ｂｉｔのＥｘｉｓｔ  ｂｉｔ、その後に付加情報（ｏｔｈｅｒ  ｉｎｆｏｒｍａｔｉｏｎ）、ＭＡＣアドレス（ＭＡＣ  ｅｎｔｒｙ  ｄａｔａ）が配置されている。前記付加情報にはポート番号などが含まれる。
【００５７】
前記したように、ＭＡＣエントリ・テーブル・メモリ２４は８つの同一サイズのメモリバンクで構成されており、書き込み済みのメモリ領域のＥｘｉｓｔ  ｂｉｔはＯＮであり、書き込みから所定時間が経過すると、または当該メモリ領域へのアクセスから所定時間が経過すると、当該メモリ領域のデータが削除され、Ｅｘｉｓｔ  ｂｉｔはＯＦＦとされる。また、８つのメモリバンクの同一のアドレスには必ずしも８個のデータが格納されているのではなく、Ｅｘｉｓｔ  ｂｉｔがＯＦＦのメモリ領域にはデータが格納されていないものとされるため、そのメモリ領域のデータは比較手段２５での比較の対象にならない。
【００５８】
入力データのハッシュ演算の結果、ハッシュ値が同一の値Ｈ１となるエントリが複数となる場合、それら衝突した複数のＭＡＣアドレス（シノニム・データ）の格納は、ＭＡＣエントリ・テーブル・メモリ２４における同一アドレスで別々のメモリバンクに振り分けて行われる。
例えば、図４に示すようにエントリデータ１〜８の８個のＭＡＣアドレスのハッシュ値が全てＨ１である場合を考える。この場合に、メモリ・ポインタ・テーブルのポインタがＰ１であるとすると、メモリバンク・アドレス”０００”のメモリバンクのアドレスＰ１にエントリデータ１が格納され、メモリバンク・アドレス”００１”のメモリバンクのアドレスＰ１にエントリデータ２が格納され、同様にしてメモリバンク・アドレス”１１１”のメモリバンクのアドレスＰ１にエントリデータ８が格納される。このように、８個のメモリバンクの同一アドレスに８個のエントリデータが格納される。
【００５９】
一方、互いにハッシュ値が衝突しないような複数のＭＡＣアドレスは、ＭＡＣエントリ・テーブル・メモリ２４の別々のアドレスに振り分けて格納される。データを追加する際に、ＭＡＣエントリ・テーブル・メモリ２４に空いているアドレスがない場合は、図６に示すように振り分けるが、図６については後で詳述する。
【００６０】
図５は本発明第２実施例に係るＭＡＣアドレス検索・登録方法を示すフローチャートである。図５に示す処理は、図３に示すＭＡＣアドレス検索装置２０にエントリデータが入力された場合に行う処理であり、検索処理と登録処理との両方を示している。
図５において、ステップＳ１１ではフレームヘッダが受信されたときにステップＳ１３へ進む。ステップＳ１３ではフレームヘッダから送信元ＭＡＣアドレスを抽出しステップＳ１５へ進む。ステップＳ１５では、抽出した送信元ＭＡＣアドレスをハッシュ関数のエントリデータとしてハッシュ値Ｈ１を求め、ステップＳ１７へ進む。ステップＳ１７では、演算して得られたハッシュ値Ｈ１をインデックスとしてメモリ・ポインタ・テーブルを参照し、ステップＳ１９ではメモリ・ポインタ・テーブルの当該アドレスＨ１に、ポインタが書込まれているか否かを判別し、ポインタが有ればステップＳ２１へ進み、なければステップＳ２３へ進む。
【００６１】
ステップＳ２１ではポインタが示すメモリアドレスＰ１に基づいてＭＡＣアドレス・テーブルの全メモリバンクを参照し、当該アドレスＰ１に格納されているＭＡＣアドレスを８つのメモリバンクから読み出してステップＳ２５へ進む。ステップＳ２５では、読み出された８個のＭＡＣアドレスと、別途与えられた（ハッシュ演算手段に入力された）宛先ＭＡＣアドレスとを並列処理によって同時に比較し、ステップＳ２７へ進む。ステップＳ２７ではステップＳ２５の比較処理において、一致したデータが検出された場合はステップＳ２９へ進み、一致データが一つも検出されなかった場合はステップＳ２３へ進む。ステップＳ２９ではＭＡＣアドレスとそのポートアドレスとを出力してこのフローを終了する。
【００６２】
ステップＳ１９又はステップＳ２７からステップＳ２３へ進んだ場合は、ステップＳ２３で、一致データがないことを示す信号を出力してステップＳ３１へ進む。ステップＳ３１では、当該宛先ＭＡＣアドレスと共に伝送された送信元ＭＡＣアドレスのハッシュ値を求めてステップＳ３３へ進む。ステップＳ３３では、ステップＳ３１で求めたハッシュ値を用いて、当該送信元ＭＡＣアドレスをＭＡＣアドレス・テーブルで検索し、一致データが検出された場合はステップＳ３７へ進み、一致データが検出されなかった場合はステップＳ３５へ進む。
【００６３】
前記ステップＳ３３における検索処理は、前記したステップＳ２５での比較処理と同様の比較処理を含むものとする。すなわち、ＭＡＣエントリ・テーブル・メモリ２４の該当するアドレスから読み出された８個のＭＡＣアドレスと、登録対象の送信元ＭＡＣアドレスとを並列処理によって同時に比較して検索する。ステップＳ３５では、当該送信元ＭＡＣアドレス及びその関連データをＭＡＣアドレス・テーブルの空きアドレス（未使用アドレス）に登録し、これに伴ってメモリ・ポインタ・テーブルにもポインタを書込んで、このフローを終了する。
ステップＳ３７では、エージング（Ａｇｉｎｇ）処理有り、の場合はステップＳ３９へ進み、無しの場合はこのフローを終了する。ステップＳ３９ではエージングタイマをリセットしてこのフローを終了する。
なお、ＭＡＣエントリ・テーブル・メモリ２４に空きアドレスがない場合については後で説明する。また、ステップＳ２３からステップＳ３５へ至るフローにおける新規の登録は、検索処理とは切り離して別途行うようにしても良い。
【００６４】
以下、ＭＡＣエントリ・テーブル・メモリ２４に未使用のアドレスがない場合について、データの追加方法を説明する。
図６は、ＭＡＣエントリ・テーブル・メモリに未使用アドレスがない場合のエントリデータの振り分け方を示す図である。図６に示す例では、新たなエントリデータの格納先として未使用アドレスがない場合、ＭＡＣエントリ・テーブル・メモリの使用済みアドレスの中で、使用されていないメモリバンクがあればそのメモリバンクにＭＡＣアドレス・データを振り分ける。そして図６に示すような、互いに異なる３つのハッシュ値にそれぞれ対応する３つのポインタから、ＭＡＣアドレス・テーブルの同一のアドレスを参照できる。
【００６５】
図６において、Ｈ１１はエントリデータ１をハッシュ関数にエントリして算出されたハッシュ値である。そしてその該当するポインタの値がＰ１１であるとする。同様に、Ｈ１２、Ｈ１３はそれぞれエントリデータ２、エントリデータ３のハッシュ値であり、それぞれに該当するポインタの値がＰ１２、Ｐ１３であるとする。前記３つのハッシュ値は互いに異なる値であるとする。
【００６６】
ＭＡＣエントリ・テーブル・メモリのアドレスＰ１１に既にエントリデータ１が格納されており、ＭＡＣエントリ・テーブル・メモリの空きアドレスがないときに、エントリデータ２がエントリされると、そのハッシュ値Ｈ１２に対応するポインタの値Ｐ１２は例えば前記Ｐ１１と同じ値にセットされ、同様に、エントリデータ３がエントリされると、そのハッシュ値Ｈ１３に対応するポインタの値Ｐ１３は例えば前記Ｐ１１と同じ値にセットされる。このように、ＭＡＣエントリ・テーブル・メモリの複数のメモリバンクの同一アドレスに、ハッシュ値が互いに異なる複数のＭＡＣアドレスが格納される。したがって、同一容量のＭＡＣエントリ・テーブル・メモリに、より多くのエントリデータを格納することが出来、所定数のエントリデータを格納できるＭＡＣエントリ・テーブル・メモリを比較的小容量のメモリで構成することが出来る。
【００６７】
前記したように、ハッシュ値をインデックスとしてメモリ・ポインタ・テーブルを参照し、このポインタが示すＭＡＣエントリ・テーブル・メモリのアドレスは、８個のメモリバンクのそれぞれの該当アドレスを示すことになり、一つのポインタによって同時に８つのデータをアクセスすることが可能である。
【００６８】
図７は、８つのエントリを同時に比較する比較手段の一例を示すブロック図である。図７に示すように、Ｉ／Ｏ装置からＭＡＣアドレスを受け取るとそれをレジスタ５１に格納すると共に、８個のメモリバンクから同時にデータを読み出す。Ｅｎｔｒｙ  Ｄａｔａ  １〜Ｅｎｔｒｙ  Ｄａｔａ  ８はＭＡＣエントリ・テーブル・メモリ２４のメモリバンク・アドレス”０００”〜メモリバンク・アドレス”１１１”の同一アドレスからそれぞれ読み出されたＭＡＣアドレス・データである。前記同一アドレスは、メモリ・ポインタ・テーブルのポインタで与えられたメモリアドレスである。Ｅｎｔｒｙ  Ｄａｔａ  １〜Ｅｎｔｒｙ  Ｄａｔａ  ８は比較手段２５を構成する比較回路１〜比較回路８にそれぞれ入力される。
【００６９】
レジスタ５１から読み出されたＭＡＣアドレスは比較器１〜比較器８の全てに入力される。例えば比較回路１ではレジスタ５１から出力される４８ｂｉｔのＭＡＣアドレスと４８ｂｉｔのＥｎｔｒｙ  Ｄａｔａ  １の各ｂｉｔを同時に比較し、２つのデータの全ｂｉｔが一致するか否かを判別し、全ｂｉｔが一致し、且つＥｘｉｓｔｂｉｔがＯＮである場合はＡＮＤ１に１を出力し、それ以外の場合はＡＮＤ９に１を出力する。
【００７０】
図８は図７に示す各比較回路の具体的な回路を例示する図である。図８に示すように、各比較回路は４８ｂｉｔのデータを同時に比較して比較結果を出力するために、４８個のＸＮＯＲ回路、４８入力ＡＮＤ回路（ＡＮＤ１１）、２入力ＡＮＤ回路（ＡＮＤ１２）、反転回路で構成される。図８においては４８個のＸＮＯＲの中の一つだけが描かれている。ＡＮＤ１１では前記４８個のＸＮＯＲの出力のＡＮＤをとる。前記４８個のＸＮＯＲ回路によって、レジスタ５１の出力の４８ｂｉｔと読み出されたＭＡＣアドレスの４８ｂｉｔとが同時に比較され、４８個の比較結果がＡＮＤ１２に与えられる。ＡＮＤ１２は、ＡＮＤ１１の出力とＥｘｉｓｔ  ｂｉｔとのＡＮＤをとる。この結果、両データが一致し、且つ、ＥｘｉｓｔｂｉｔがＯＮである場合にＡＮＤ１２から１が出力され、それ以外はＡＮＤ１２から０が出力される。インバータからはその逆の値が出力される。
【００７１】
図７において、比較回路１〜比較回路８におけるデータの比較は並列処理により同時に行われる。ＡＮＤ１〜ＡＮＤ８の各ＡＮＤ回路は、実際にはＥｎｔｒｙ  ｄａｔａのｂｉｔ幅に応じた数のＡＮＤ回路を備えて構成されるが、図示は簡略化されている。そして、例えばＡＮＤ１は比較回路１の一方の出力とＥｎｔｒｙ  Ｄａｔａ  １のＥｘｉｓｔ  ｂｉｔのＡＮＤを取り、結果を出力部に与える。ＡＮＤ２〜ＡＮＤ８もＡＮＤ１と同様の動作を行う。この結果、Ｅｎｔｒｙ  Ｄａｔａ１〜８が、レジスタ５１のデータと一致するか否かを示す８ｂｉｔのデータが出力部から出力され、８個のデータの中に一致するデータがある場合、そのデータが格納されたメモリバンクを特定することが出来、必要に応じて、当該一致したデータに関連するデータをＭＡＣアドレス・テーブルから読み出して出力する。Ｅｎｔｒｙ  Ｄａｔａ  １〜８が全てレジスタ５１のデータと不一致の場合は、ＡＮＤ９から「Ｎｏｔ  ｅｑｕａｌ」を示す信号を返す処理を行う。
【００７２】
図７に示す回路によれば、同一のメモリアドレスの８個のデータを同時に読み出し、比較することが可能なため、１回のメモリ・サイクル時間内に８データの比較を完了できる。したがって、本発明の検索方法によれば、検索に要するメモリへのアクセスは、メモリ・ポインタ・テーブル及びＭＡＣアドレス・テーブルへ各１回ずつであり、２回のメモリ・サイクルで比較、検索を完了することができる。またメモリ・ポインタ・テーブルとＭＡＣアドレス・テーブルとを異なるメモリバンクに置くことによりパイプライン処理も可能であるから、その場合は、多数のＭＡＣアドレスを保持するＭＡＣアドレス・テーブルでの検索が、実質１メモリ・サイクルでも可能になる。
【００７３】
図９は本発明第３実施例にかかる固定長データ検索装置を示す概念図である。図９に示す固定長データ検索装置３０において、ポインタ・セレクタ・テーブルは６４ｋ×１ｂｉｔのサイズを有するテーブルで、後述する２つメモリ・ポインタ・テーブルのいずれか一方を選択するためのテーブルである。メモリ・ポインタ・テーブルには主メモリ・ポインタ・テーブルと副メモリ・ポインタ・テーブルとがある。ＭＡＣエントリ・テーブル・メモリ２４及び比較手段２５は図３のものと同一である。
【００７４】
前記主メモリ・ポインタ・テーブルは、第１のハッシュ関数によって求められた第１のハッシュ値をインデックスとして、各ＭＡＣアドレスの格納先のメモリアドレスを保持する。また、前記副メモリ・ポインタ・テーブルは、第２のハッシュ関数によって求められた第２のハッシュ値をインデックスとして、各ＭＡＣアドレスの格納先のメモリアドレスを保持する。前記主メモリ・ポインタ・テーブル及び副メモリ・ポインタ・テーブルはポインタ・テーブル・メモリに格納される。ＭＡＣアドレスの検索の実施に際しては、前記したポインタ・セレクタ・テーブル、２つのメモリ・ポインタ・テーブル、ＭＡＣアドレス・テーブルは個別のメモリに格納しても良いが、単一のメモリに格納しても良い。
この第３実施例では、２つのハッシュ関数を使用して、二つの異なるメモリ・ポインタ・テーブルを生成し、これらのメモリ・ポインタ・テーブルのポインタによりＭＡＣアドレスを格納したＭＡＣアドレス・テーブルのアドレスを指定する。ここにハッシュ関数は、特定のものではなく、任意のものである。
【００７５】
ＭＡＣアドレスを受信すると、まず第１のハッシュ関数により前記エントリされたＭＡＣアドレスの第１のハッシュ値を求める。これにより、１６ｂｉｔのハッシュ値が求まる。次に、算出された１６ｂｉｔのハッシュ値をインデックスとしてポインタ・セレクタ・テーブルを参照する。そして、ここの１ビットが”プライマリＰ”（ｐｒｉｍａｒｙ：主）を指している場合、そのハッシュ値をインデックスとして主メモリ・ポインタ・テーブルを参照することにより、当該ＭＡＣアドレスが格納されているＭＡＣアドレス・テーブルのアドレスが特定される。
【００７６】
また、算出されたハッシュ値をインデックスとしてポインタ・セレクタ・テーブルを参照した結果、ポインタ・セレクタ・テーブルの１ビットが”セカンダリＳ”（ｓｅｃｏｎｄａｒｙ：副）を指している場合は、次のような処理をする。
すなわち、前記第１のハッシュ関数とは異なる第２のハッシュ関数を用いて、１６ｂｉｔのハッシュ値（第２のハッシュ値）を求める。そして、算出された第２ハッシュ値をインデックスとして副メモリ・ポインタ・テーブルを参照し、ここのポインタの値からに当該ＭＡＣアドレスが格納されているＭＡＣアドレス・テーブルのアドレスが特定される。
【００７７】
前記ポインタ・セレクタ・テーブルの１ｂｉｔの値は、デフォルトでは”プライマリ”のＰを示す。しかし、前記第１のハッシュ関数によって生成されたハッシュ値のうち、ハッシュ値が同一となるデータがバンク数Ｎを超える場合は、前記ポインタ・セレクタ・テーブルの１ｂｉｔの値は、”セカンダリ”のＳを示すように変更される。そして第１のハッシュ値が現在の第１のハッシュ値と同じになる複数のＭＡＣアドレスについて、第２のハッシュ関数を用いて第２のハッシュ値が算出され、この第２のハッシュ値をインデックスとして副メモリ・ポインタ・テーブルが参照される。
【００７８】
具体的には、例えば第１のハッシュ関数で求めたハッシュ値がＨ３となる８個のＭＡＣアドレス（１〜８）がＭＡＣアドレス・テーブルに既に登録されている状態で、ＭＡＣアドレス（９）が入力され、そのＭＡＣアドレス（９）の第１のハッシュ値が前記ハッシュ値Ｈ３と同一になった場合は、ポインタ・セレクタ・テーブルの、ハッシュ値Ｈ３に対応する値を”プライマリ”から”セカンダリ”に変更する。次に、ＭＡＣアドレス（１〜８）及びＭＡＣアドレス（９）の第２ハッシュ値を第２のハッシュ関数によって算出する。この場合、ＭＡＣアドレス（１〜８）及びＭＡＣアドレス（９）の第２ハッシュ値が同一となる確率は低い。算出された第２ハッシュ値を用いて、ＭＡＣアドレス（１〜８）とＭＡＣアドレス（９）がそれぞれＭＡＣアドレス・テーブルに書込まれ、そのメモリアドレスが副メモリ・ポインタ・テーブルの該当領域に書込まれる。
【００７９】
前記したように、第１のハッシュ関数で生成したハッシュ値が所定数Ｎを超えて重なる場合は、第２のハッシュ関数を使用するようにして、ハッシュ値を分散させる。これによって、同一の第１ハッシュ値をとるＭＡＣアドレスの数が所定値Ｎ以下である場合は、主メモリ・ポインタ・テーブルを使用し、Ｎを越える場合のみ副メモリ・ポインタ・テーブルを使用する。従って殆どのＭＡＣエントリは主メモリ・ポインタ・テーブルの方に指定され、一部のハッシュ値が多数重なったＭＡＣエントリについてだけ副メモリ・ポインタ・テーブルが指定されることになるので、メモリ・ポインタ・テーブルを効率よく使用できる。
【００８０】
第２のハッシュ関数で算出された複数のＭＡＣアドレスの第２ハッシュ値が同一となる確率は低いが、ハッシュ値を均一に分散させる完全なハッシュ関数は存在しないため、同一となることがあり得る。その場合は、第２ハッシュ値が同一となる複数のエントリが、ＭＡＣエントリ・テーブル・メモリ２４の別々のメモリバンクの同一アドレスに登録される。従って、この例では同一のハッシュ値を取る８個のＭＡＣエントリを許容することが出来る。
【００８１】
一方、第１のハッシュ関数で第１ハッシュ値を求め、ＭＡＣアドレス・テーブルにＭＡＣアドレスを追加して登録しようとした時に、ＭＡＣエントリ・テーブル・メモリ２４の未使用のアドレスがない場合がある。かかる場合には、使用済みアドレスの中で使用されていないメモリバンクにＭＡＣアドレスを登録する。この場合、同一のメモリアドレスの各メモリバンクに、ハッシュ値が異なるＭＡＣアドレスが登録されることとなり、限られたメモリアドレスを有効に使用することが出来る。
【００８２】
また、ＭＡＣアドレスの検索を行う場合は、入力されたＭＡＣアドレスの第１ハッシュ値を第１のハッシュ関数によって求め、その第１ハッシュ値をインデックスとしてポインタ・セレクタ・テーブルを参照し、１ｂｉｔのデータが示す”プライマリ”または”セカンダリ”に応じて、主メモリ・ポインタ・テーブルまたは副メモリ・ポインタ・テーブルを参照して、読み出すべきＭＡＣエントリ・テーブル・メモリ２４のアドレスを得る。当該アドレスに格納された８個のデータは同時に読み出され、比較手段２５では、入力されたＭＡＣアドレスと、読み出された８個のデータとが同時に比較され、その比較結果が出力される。
【００８３】
図１０は本発明第３実施例に係るＭＡＣアドレス検索処理を示すフローチャートである。図１０に示す処理は、ＭＡＣアドレス検索装置３０にエントリデータが入力された場合に行う処理である。
図１０において、ステップＳ５１ではフレームヘッダが受信されたときにステップＳ５３へ進む。ステップＳ５３ではフレームヘッダから宛先ＭＡＣアドレスを抽出しステップＳ５５へ進む。ステップＳ５５では、第１のハッシュ関数により、当該宛先ＭＡＣアドレスの第１のハッシュ値Ｈ１０を求め、ステップＳ５７へ進む。ステップＳ５７では、ハッシュ値Ｈ１０をインデックスとしてポインタ・セレクタ・テーブルを参照し、その値がＰ（Ｐｒｉｍａｒｙ：主）を指している場合はステップＳ５９へ進み、Ｓ（Ｓｅｃｏｎｄａｒｙ：副）を指している場合はステップＳ６７へ進む。このポインタの初期値はＰである。
【００８４】
ステップＳ５９では、第１のハッシュ値Ｈ１０をインデックスとして主メモリ・ポインタ・テーブルを参照し、そこにポインタがある場合はステップＳ６１へ進み、ない場合はステップＳ７３へ進む。ステップＳ６１ではこのポインタに基づいて、入力された宛先ＭＡＣアドレスと一致するデータをＭＡＣアドレス・テーブルで検索し、ステップＳ６３では、一致するデータが検出された場合はステップＳ６５へ進み、検出されなかった場合はステップＳ７３へ進む。ステップＳ６１における検索処理は、図５に示すステップＳ２５の比較処理と同様の比較処理を含むものとし、ここでは説明を省略する。
【００８５】
ステップＳ６５では、一致データであるＭＡＣアドレスに対応するポートアドレスをＭＡＣアドレス・テーブルから読み出して、ＭＡＣアドレスと共に出力して、このフローを終了する。ステップＳ５９からステップＳ７３へ進んだ場合、ステップＳ７３で、「一致データなし」を示す信号を出力する。ステップＳ７３の処理の後は、このフローを終了するか、或いは、一致データが検出されなかった宛先ＭＡＣアドレスと共に伝送された送信元ＭＡＣアドレスの登録処理に移行する。この送信元ＭＡＣアドレスの登録処理については後で図１２を用いて説明する。
【００８６】
ステップＳ５７からステップＳ６７へ進んだ場合は、ステップＳ６７で、第２のハッシュ関数により、入力されたＭＡＣアドレスの第２ハッシュ値Ｈ２０を求め、ステップＳ６９へ進む。ステップＳ６９では、前記第２のハッシュ値Ｈ２０をインデックスとして副メモリ・ポインタ・テーブルを参照し、そのポインタに基づき、入力された宛先ＭＡＣアドレスと一致するデータをＭＡＣアドレス・テーブルで検索する。ステップＳ７１では、一致データがあった場合はステップＳ６５へ進み、なかった場合はステップＳ７３へ進む。
【００８７】
図１２は本発明第３実施例に係るＭＡＣアドレス登録処理を示すフローチャートである。図１２に示すＭＡＣアドレスの登録処理は、図１０に示すステップＳ７３の後に行うことも出来るが、検索処理から独立して行うことも出来る。
図１２において、ステップＳ１５３ではフレームヘッダから送信元ＭＡＣアドレスを抽出しステップＳ１５５へ進む。ステップＳ１５５では、第１のハッシュ関数により、当該送信元ＭＡＣアドレスの第１のハッシュ値を求め、ステップＳ１５７へ進む。ステップＳ１５７では、前記ハッシュ値をインデックスとしてポインタ・セレクタ・テーブルを参照し、その値がＰ（Ｐｒｉｍａｒｙ：主）を指している場合はステップＳ１５９へ進み、Ｓ（Ｓｅｃｏｎｄａｒｙ：副）を指している場合はステップＳ１６７へ進む。このポインタの初期値はＰである。
【００８８】
ステップＳ１５９では、前記第１のハッシュ値をインデックスとして主メモリ・ポインタ・テーブルを参照し、そこにポインタがある場合はステップＳ１６１へ進み、ない場合はステップＳ１７７へ進む。ステップＳ１６１ではこのポインタに基づいて、入力された送信元ＭＡＣアドレスと一致するデータをＭＡＣアドレス・テーブルで検索する。ステップＳ１６１における検索処理は第２実施例で詳細に説明したステップＳ３３の処理と同様であるが、ＭＡＣエントリ・テーブル・メモリ２４の該当するアドレスから読み出された８個のＭＡＣアドレスと、登録対象の送信元ＭＡＣアドレスとを並列処理によって同時に比較して検索する。ステップＳ１６３では、一致するデータが検出された場合はステップＳ１６４へ進み、検出されなかった場合はステップＳ１７９へ進む。
【００８９】
ステップＳ１６４では、エージング（Ａｇｉｎｇ）処理が有りの場合はステップＳ１６５へ進み、無しの場合はこのフローを終了する。ステップＳ１６５ではエージングタイマをリセットしてこのフローを終了する。
ステップＳ１５９からステップＳ１７７へ進んだ場合は、ステップＳ１７７で、入力された当該送信元ＭＡＣアドレスとその関連データを、主メモリ・ポインタ・テーブルとＭＡＣアドレス・テーブルに登録し、このフローを終了する。前記ステップＳ１７７での登録処理では、ＭＡＣエントリ・テーブル・メモリ２４に未使用のアドレスがある場合は未使用アドレスに登録される。また、未使用アドレスがない場合は、既に使用されているメモリアドレスの中で使用されていないメモリバンクに登録される。この場合、同一のアドレスに、ハッシュ値が異なる複数のデータが格納されることになる。
【００９０】
ステップＳ１６３からステップＳ１７９へ進んだ場合は、ステップＳ１７９で、ポインタが示す当該アドレス中に、空きバンク（未使用バンク）が有るか否かを調べ、ある場合はステップＳ１８１へ進み，無い場合はステップＳ１８３へ進む。ステップＳ１８１では、登録対象の送信元ＭＡＣアドレスとその関連データを当該メモリアドレスの中で空いているバンクに登録して、このフローを終了する。ステップＳ１８３では、第１のハッシュ値が同一となる複数のデータ（シノニム・データ）について、第２のハッシュ関数により第２のハッシュ値を求め、該第２のハッシュ値に基づいて、副メモリ・ポインタ・テーブルとＭＡＣアドレス・テーブルに登録する。
【００９１】
そして、前記複数のシノニム・データのうち、既に主メモリ・ポインタ・テーブルに登録されていた複数のデータは、主メモリ・ポインタ・テーブルから削除する。さらに、第２ハッシュ値が同一となるＭＡＣアドレスの数が複数となる場合は、それらのデータをＭＡＣエントリ・テーブル・メモリ２４における同一アドレスで別々のメモリバンクに格納する。ステップＳ１８５では、ポインタ・セレクタ・テーブルの当該ポインタをＰからＳへ変更し、このフローを終了する。
【００９２】
ステップＳ１５７からステップＳ１６７へ進んだ場合は、ステップＳ１６７で、第２のハッシュ関数により、入力された送信元ＭＡＣアドレスの第２のハッシュ値Ｈ２０を求め、ステップＳ１６９へ進む。ステップＳ１６９では、前記第２のハッシュ値Ｈ２０をインデックスとして副メモリ・ポインタ・テーブルを参照し、そのポインタに基づき、入力された送信元ＭＡＣアドレスと一致するデータをＭＡＣアドレス・テーブルで検索する。ステップＳ１７１では、一致データがあった場合はステップＳ１６４へ進み、無かった場合はステップＳ１７５へ進む。
ステップＳ１７５では、入力された送信元ＭＡＣアドレスを副メモリ・ポインタ・テーブルとＭＡＣアドレス・テーブルに登録し、このフローを終了する。前記ステップＳ１７５の処理で、第２のハッシュ値が同一となるＭＡＣアドレスが複数ある場合は、それらをＭＡＣエントリ・テーブル・メモリ２４における同一アドレスで別々のメモリバンクに格納する。
【００９３】
第２実施例で既に詳細に説明したことであるが、この第３実施例でも、別々のポインタからＭＡＣエントリ・テーブル・メモリ２４の一つのメモリアドレスを参照できるから、ＭＡＣエントリ・テーブル・メモリを効率よく使用でき、ＭＡＣエントリ・テーブル・メモリ２４のサイズを小さく出来る。また、同一アドレスの複数のメモリバンクから読み出された複数のＭＡＣアドレスが、並列処理により同時に比較されるから、ＭＡＣドレスの検索処理が極めて短時間で行われる。
第３実施例における検索の所要時間は、第２実施例に比べて、１メモリ・サイクル分増加するが、それでも、大量のＭＡＣアドレスが保持されたＭＡＣアドレス・テーブルを検索するのに要する時間は２〜３メモリ・サイクルであり、短時間で実行可能である。
【００９４】
以上、詳細に説明したように、本発明を適用した実施の形態によれば、多数の固定長データが格納されたデータ・テーブルの検索処理が、１〜３メモリ・サイクル程度の高速で実行することが出来る。また、本発明固定長データ検索装置及び検索方法は、実施例で説明したように、ネットワーク通信で多用されるＭＡＣアドレスの検索及び登録にも適用できる。また、本発明は、本発明の固定長データ検索装置または検索方法を適用した情報処理装置としてコンピュータを機能させるためのコンピュータプログラムに適用することが可能である。さらに本発明は、前記コンピュータプログラムを記録したコンピュータ読み取り可能な記録媒体に適用することも可能である。
【００９５】
図１３は本発明のコンピュータプログラム及び記録媒体を適用可能なハードウエアの構成例を示すブロック図である。
図１３において、コンピュータシステム７０は、システムバス５１に接続されたＣＰＵ５３と、記憶装置５５と、入出力装置５７とを含む。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５３は、少なくとも演算装置と制御装置とを備え、記憶装置５５は例えば内蔵主記憶メモリ、ハードディスクドライブ、フロッピディスクドライブなどで構成される。コンピュータシステム７０に本発明のコンピュータプログラムがインストールされると、前記コンピュータプログラムは前記ハードディスクドライブ内に格納され、必要に応じて前記主記憶メモリにロードされる。記憶装置５５の前記主記憶メモリにより、またはＣＰＵ５３が備えるキャッシュメモリにより、本発明におけるポインタ・テーブル・メモリ及びデータ・テーブル・メモリ等が構成される。入出力装置５７は、複数の入出力ポートを備えて外部とのデータ通信を行うことが出来る。記憶装置５５内の例えばハードディスクドライブやフロッピディスクドライブなどにより、本発明の、コンピュータプログラムが記録された記録媒体からプログラムが読み出される。
【図面の簡単な説明】
【図１】本発明固定長データ検索装置に係る第１実施例を示すブロック図である。
【図２】固定データ検索装置１０の機能ブロック図である。
【図３】本発明固定長データ検索装置の第２実施例として示すＭＡＣアドレス検索装置の主要部の構成図である。
【図４】ハッシュ値が同一となる複数のエントリデータが複数のメモリバンクの同一アドレスに格納される様子を示す図である。
【図５】本発明第２実施例に係るＭＡＣアドレス検索・登録方法を示すフローチャートである。
【図６】ＭＡＣエントリ・テーブル・メモリに未使用アドレスがない場合のエントリデータの振り分け方を示す図である。
【図７】８つのエントリを同時に比較する比較手段の一例を示すブロック図である。
【図８】図７に示す比較回路の一例を示すブロック図である。
【図９】本発明第３実施例にかかる固定長データ検索装置を示す概念図である。
【図１０】本発明第３実施例に係るＭＡＣアドレス検索処理を示すフローチャートである。
【図１１】ＭＡＣアドレスの構造を示す図である。
【図１２】本発明第３実施例に係るＭＡＣアドレス登録処理を示すフローチャートである。
【図１３】本発明のコンピュータプログラム及び記録媒体を適用可能なハードウエアの構成例を示すブロック図である。
【符号の説明】
１１    ハッシュ演算手段
１２    制御手段
１３    ポインタ・テーブル・メモリ
１４    データ・テーブル・メモリ
１５、２５    比較手段
２３    ポインタ・テーブル・メモリ
２４    ＭＡＣエントリ・テーブル・メモリ
【図１】
2004229163.tif 000003
【図２】
2004229163.tif 000004
【図３】
2004229163.tif 000005
【図４】
2004229163.tif 000006
【図５】
2004229163.tif 000007
【図６】
2004229163.tif 000008
【図７】
2004229163.tif 000009
【図８】
2004229163.tif 000010
【図９】
2004229163.tif 000011
【図１０】
2004229163.tif 000012
【図１１】
2004229163.tif 000013
【図１２】
2004229163.tif 000014
【図１３】
2004229163.tif 000015