(57)【特許請求の範囲】
【請求項１】
サーチオブジェクトが知識ベース内の何れかのエントリと合致するか否かを判定する方法において、該方法が、
ａ) 該サーチオブジェクトを複数のグループのサーチオブジェクトビットに分割するステップと、
ｂ)  メモリ内に記憶されると共に、該メモリ内の各位置に関する内容を含むニューラルネットワークに、該複数のサーチオブジェクトビットからの第１のグループのサーチオブジェクトビットを使用してアクセスするステップとを含み、アクセスされる該メモリ位置は、該第一のグループのサーチオブジェクトビットに関連しており、該方法は、更に、
ｃ) 該複数のサーチオブジェクトビットからの後続のグループのサーチオブジェクトビットのためのサブマップとしてアドレス指定されている該メモリ位置の内容を使用するステップと、
ｄ) 該サブマップ及び該後続のグループのサーチオブジェクトビットを使用して、後続のサブマップを含む該メモリ内の後続の位置にアクセスするステップとを含み、該後続のメモリ位置は、該サブマップ及び該後続のグループのサーチオブジェクトビットに関連しており、該方法は、更に、
ｅ) 該複数のグループのサーチオブジェクトビットが全て使用されるまで、各後続のグループのサーチオブジェクトビット及び各後続のサブマップを使用してステップ (ｃ) 及び (ｄ) を反復するステップと、
ｆ）  該サーチオブジェクトが該知識ベース内の何れかのエントリに一致するか否かを、アクセスされた該最終のメモリ位置の内容に基づいて判定するステップとを含む方法。
【請求項２】
請求項１に記載の方法において、該サブマップ及び該後続のグループのサーチオブジェクトビットを使用するステップが、該サブマップを該後続のグループのサーチオブジェクトビットに書き加えて、メモリ内の該後続の位置に対するアドレスを生成するステップを含み、アドレスは、全ての先行するグループのサーチオブジェクトビットに依存する方法。
【請求項３】
請求項１に記載の方法において、０値がミスを示すと共に、該グループの使用されたサーチオブジェクトビットに依存する該サブマップが０以外の値によって与えられるように、アクセスされた該メモリ位置の内容が、該内容の値に従ってミスまたは一致を示す方法。
【請求項４】
請求項１に記載の方法において、該複数のグループのサーチオブジェクトビットが、５つのグループのサーチオブジェクトビットを含む方法。
【請求項５】
サーチオブジェクトが知識ベース内の何れかのエントリと一致するか否かを判定する方法において、該方法が、
ａ) 少なくとも１つのサーチオブジェクトビットを選択するステップと、
ｂ) 該少なくとも１つのサーチオブジェクトビットに関連するメモリ位置にアクセスすることにより、該少なくとも１つのサーチオブジェクトビットが該知識ベース内の何れかのエントリの対応する少なくとも１つのビットと一致するか否かを判定するステップとを含み、該メモリ位置及びサブマップは、該知識ベースに関連する全てのメモリ位置及びサブマップにより形成されるニューラルネットワークのノードとして存在し、該メモリ位置は、該少なくとも１つのサーチオブジェクトビットと一致する、該知識ベース内のエントリのサブセットに対応するサブマップを格納し、該方法は、更に、
ｃ) 少なくとも１つの後続のサーチオブジェクトビットを選択するステップと、
ｄ) 該サブマップ及び該少なくとも１つの後続のサーチオブジェクトビットに対応する後続のメモリ位置にアクセスすることにより、該サブマップ及び該少なくとも１つの後続のサーチオブジェクトビットを使用して、該知識ベース内のエントリの該サブセットにある何れかのエントリの後続の対応する少なくとも１つのビットと該少なくとも１つの後続のサーチオブジェクトビットが一致するか否かを判定するステップとを含み、該後続のメモリ位置は、後続のサブマップを格納し、該方法は、更に、
ｅ) 該サーチオブジェクトの全てのビットが探索されるまで、各後続のグループのサーチオブジェクトビット及び各後続のサブマップを使用してステップ (ｃ)及び (ｄ) を反復するステップを含む方法。
【請求項６】
請求項５に記載の方法において、該サーチオブジェクトが該知識ベース内の何れかのエントリと一致するか否かを、アクセスされた最後のメモリ位置に格納された該サブマップに基づいて判定するステップを更に含む方法。
【請求項７】
請求項５に記載の方法において、該サブマップのうちの１つが、該知識ベース内に一致するエントリが存在しないことを示す場合は常に探索を終了させる方法。
【請求項８】
請求項５に記載の方法において、各サブマップは、関連するグループのサーチオブジェクトビット及び各後続のグループのサーチオブジェクトビットを有する、該知識ベース内のエントリのサブセットに対応する方法。
【請求項９】
サーチオブジェクトが知識ベース内の何れかのエントリと一致するか否かを判定する方法において、該方法が、
ａ) 該サーチオブジェクトを複数のグループのサーチオブジェクトビットに分割するステップと、
ｂ) 該複数のグループのサーチオブジェクトビットから第１のグループのサーチオブジェクトビットを選択するステップと、
ｃ) ニューラルネットワーク内のサブマップにアクセスすることにより、該第１のグループのサーチオブジェクトビットが該知識ベース内の何れかのエントリに対応しているか否かを判定するステップとを含み、該サブマップは、該第１のグループのサーチオブジェクトビットに関連すると共に、該知識ベース内のエントリのサブセットに対応しており、エントリの該サブセットは、該第１のサーチオブジェクトビットに対応する、該知識ベース内の何れかのエントリに対応しており、該方法が、更に、
ｄ) 該複数のグループのサーチオブジェクトビットから後続のグループのサーチオブジェクトビットを選択するステップと、
ｅ) 該ニューラルネットワーク内の後続のサブマップにアクセスすることにより、該後続のグループのサーチオブジェクトビットがエントリの該サブセット内の何れかのエントリに対応するか否かを判定するステップとを含み、該後続のサブマップは、該後続のグループのサーチオブジェクトビット及び該サブマップに関連すると共に、エントリの該サブセットの後続のサブセットに対応しており、該方法が、更に、
ｆ) 該グループのサーチオブジェクトビットの全てのビットが使用されるまで、各後続のグループのサーチオブジェクトビット及びエントリの各後続のサブセットに対応する各後続のサブマップを使用してステップ (ｄ) 及び (ｅ) を反復するステップを含む方法。
【請求項１０】
請求項９に記載の方法において、該サーチオブジェクトが該知識ベース内の何れかのエントリと一致するか否かを、最後のグループのサーチオブジェクトビットに関連する該サブマップに基づいて判定するステップを更に含む方法。
【請求項１１】
請求項９に記載の方法において、該サブマップのうちの１つが、該知識ベース内に一致するエントリが存在しないことを示す場合は常に探索を終了させる方法。
【請求項１２】
請求項９に記載の探索の方法において、各サブマップは、該関連するグループのビットが単一の一致に対応するかまたは多数の一致に対応するかを示す方法。
【請求項１３】
知識ベースを探索して、該知識ベース内のエントリがサーチオブジェクトと一致するか否かを判定する際に使用されるサブマップを生成及び組織化する方法において、該方法が、
ａ) サブマップのための少なくとも１部分のアドレスとして、該知識ベース内のエントリからのグループのビットを使用するステップと、
ｂ) アクセスされる後続のグループのサブマップを示すかまたはサーチオブジェクトが該知識ベース内の該エントリと一致するということを示すかの何れかである該サブマップに値を割り当てるステップと、
ｃ) 該知識ベース内の該エントリを判別するのに必要なグループのサブマップを生成するために必要に応じてステップ (ａ) 及び (ｂ) を反復するステップとを含み、該グループのサブマップは、ニューラルネットワークを形成する方法。
【請求項１４】
請求項１３に記載の方法において、
ｄ) 該知識ベース内の全てのエントリを判別するのに必要な全てのサブマップを生成するために必要に応じてステップ (ａ) 及び (ｂ) を反復するステップを更に含む方法。
【請求項１５】
サーチオブジェクトが知識ベース内の何れかのエントリと一致するか否かを判定する方法において、該方法が、
ａ) 該サーチオブジェクトを複数のグループのサーチオブジェクトビットに分割するステップと、
ｂ) 該複数のグループのサーチオブジェクトビットをシリアルに探索するステップとを含み、各探索はサブマップを生成し、該サブマップは、該知識ベースに関連する全てのサブマップにより形成されるニューラルネットワークのノードとして存在し、該方法が、更に、
ｃ) 各後続する探索の際に該サブマップを使用して、該サーチオブジェクトに対応する、該知識ベース内のエントリのサブセットを判別するステップと、
ｄ) 最後のグループのサーチオブジェクトビットによって生成される該サブマップの値に基づいて、該サーチオブジェクトが該知識ベース内の何れかのエントリと一致するか否かを判定するステップとを含む方法。
【請求項１６】
請求項１５に記載の方法において、該サブマップの１つが、該知識ベース内に一致するエントリが存在しないということを示す場合は常に検索を終了させる方法。
【請求項１７】
請求項１５に記載の方法において、各サブマップは、該関連するグループのビットが単一の一致に対応するかまたは多数の一致に対応するかを示す方法。
【請求項１８】
サーチオブジェクトが知識ベース内の何れかのエントリに一致するか否かを判定する装置において、
各々が、該知識ベース内のエントリに関する１部分の一致に対応する複数のノードと、
該ノードを接続する複数のアークとを含み、各アークは、前のノードからの該１部分の一致を含むと共に該知識ベース内にあるエントリに対応するノードのサブセットを示すサブマップを形成し、該複数のノード及びアークは、該サーチオブジェクトが該知識ベース内のエントリと一致するか否かを該装置が判定可能であるようにニューラルネットワークを形成し、該装置が、該サーチオブジェクトを複数のサーチオブジェクトビットに分割し、そして第１のグループのサーチオブジェクトビットを使用して第１のノードにアクセスし、それによって、全ての該グループのサーチオブジェクトビットが探索されるまで該探索を反復し、そして該サーチオブジェクトが該知識ベース内のエントリと一致するかまたは一致しないかの何れかを、アクセスされた最後のサブマップが示すことにより該判定は実行され、該第１のノードは、後続のサブマップを有する後続のノードにアクセスするために後続のグループのサーチオブジェクトビットと共に使用される第一のサブマップを含む装置。
【請求項１９】
請求項１８に記載の装置において、該ノードは、メモリ内のメモリ位置であり、該サブマップは、該メモリ位置の内容である装置。
【請求項２０】
請求項１９に記載の装置において、該メモリ内の該後続の位置に対するアドレスを生成するように、該サブマップが該後続のグループのサーチオブジェクトビットに書き加えられ、アドレスは、全ての先行するグループのサーチオブジェクトビットに依存する装置。
【請求項２１】
請求項１９に記載の装置において、０値がミスを示し、該グループの使用されたサーチオブジェクトビットに依存する該サブマップが０以外の値によって提供されるように、アクセスされた該メモリ位置の該内容が、ミスまたは一致を該内容の値に従って示す装置。
【請求項２２】
請求項１８に記載の装置において、該複数のグループのサーチオブジェクトビットが５つのグループのサーチオブジェクトビットを含む装置。
【請求項２３】
サーチオブジェクトが知識ベース内の何れかのエントリと一致するか否かを判定する装置において、該装置が、
少なくとも１つのサーチオブジェクトビットを選択する手段と、
該少なくとも１つのサーチオブジェクトビットに関連するメモリ位置にアクセスすることにより、該少なくとも１つのサーチオブジェクトビットが該知識ベース内の何れかのエントリの対応する少なくとも１つのビットと一致するか否かを判定する手段とを含み、該メモリ位置は、該少なくとも１つのサーチオブジェクトビットと一致すると共に該知識ベース内にあるエントリのサブセットに対応するサブマップを格納し、該装置が、更に、
少なくとも１つの後続のサーチオブジェクトビットを選択して、該サブマップ及び該少なくとも１つの後続のサーチオブジェクトビットに関連する後続のメモリ位置にアクセスすることにより、該少なくとも１つの後続のサーチオブジェクトビットが該知識ベース内のエントリの該サブセットに属する何れかのエントリの後続の対応する少なくとも１つのビットと一致するか否かを判定するのに該サブマップ及び該少なくとも１との後続のサーチオブジェクトビットを使用する手段を含み、該後続のメモリ位置は、後続のサブマップを格納し、該装置が、更に、
該サーチオブジェクトの全てのビットが探索されるまで、各後続のグループのサーチオブジェクトビット及び各後続のサブマップを使用して前記少なくとも１つの後続のサーチオブジェクトビットを選択するプロセスを反復する手段を含む装置。
【請求項２４】
請求項２３に記載の装置において、アクセスされた該最後のメモリ位置に格納されている該サブマップに基づいて、該サーチオブジェクトが該知識ベース内の何れかのエントリと一致するか否かを判定する手段を更に含む装置。
【請求項２５】
請求項２３に記載の装置において、該サブマップの中の１つが、該知識ベース内に一致するエントリが存在しないことを示す場合は常に探索を終了させる装置。
【請求項２６】
請求項２３に記載の装置において、各サブマップは、該関連するグループのサーチオブジェクトビット及び各後続のグループのサーチオブジェクトビットを有すると共に該知識ベース内にあるエントリのサブセットに対応する装置。
【請求項２７】
サーチオブジェクトが知識ベース内の何れかのエントリと一致するか否かを判定する装置において、
複数のメモリ位置を有するメモリを含み、各メモリ位置は、そのメモリ位置に関連するサブマップを格納し、該メモリ位置及び該サブマップはニューラルネットワークを形成し、該メモリ位置は、アクセスされた前のメモリ位置からのサブマップと共に、該サーチオブジェクトの１部分によりまたは該サーチオブジェクトの後続の部分によりアクセスされ、該装置は、該サーチオブジェクトが該知識ベース内のエントリと一致するか否かを該最後のサブマップの値により判定する装置。
【請求項２８】
請求項２７に記載の装置において、該サブマップの中の１つが、該知識ベース内に一致するエントリが存在しないことを示す場合は常に探索を終了させる装置。
【請求項２９】
請求項２７に記載の装置において、各サブマップは、該関連するグループのビットが単一の一致に対応するかまたは多数に一致に対応するかを示す装置。
【請求項３０】
知識ベース内のエントリがサーチオブジェクトと一致するか否かを判定するために該知識ベースを探索するのに使用される装置において、  複数のメモリ位置を有し、該知識ベース内のエントリからのグループのビットがある特定のメモリ位置に対する少なくとも１部分のアドレスに対応するメモリと、
その段階まで探索された該サーチオブジェクトの部分と一致する後続のグループのサブマップまたはサーチオブジェクトが該知識ベース内の該エントリと一致することを示すサブマップの何れかを示す値を有する各メモリ位置内のサブマップとを含み、該メモリ及びサブマップの構造がニューラルネットワークを形成する装置。
【請求項３１】
請求項３０に記載の装置において、各サブマップは、該関連するグループのビットが単一の一致に対応するかまたは多数の一致に対応するかを示す装置。
【発明の詳細な説明】
【０００１】
＜技術分野＞
本出願は、発明の名称が「サーチ方法及び装置」とする出願番号No.08/141,245 (１９９３年１０月２２日出願)の継続出願に該当し、現在取り下げられている。
【０００２】
本発明は、知識ベースのエントリを組織するため、及び、サーチ対象のエントリのいずれかに一致するか否かを決定するための知識ベースの検索のための方法及び装置に関する。
【０００３】
＜発明の背景＞
サーチ対象物の一致又は矛盾を決定するための知識ベースのサーチは、多くの異なるアプリケーションのタイプに対して要求される重要な点である。 例えば、データベース修正、 エクスパートシステム、 ロボティック及びステート制御方法、例えば音声及びイメージ認識を含む信号認識、例えばブリッジング、ルーティング及びスイッチングに適用するためのプロトコルプロセシング及びデータ圧縮を含む通信、自然言語認識システム、モデリングオペレーション、パーサー及びコンパイラの適用にあっては、高速のサーチを行う上で、非常に期待されている。従って、かなりの研究がサーチのより良い方策を見つけだすためになされている。
【０００４】
サーチ機構の有効性は、３つの要素（しかし関連した特性を有する）に基づいて評価できる。第１は、知識ベースを実行するために要求されるメモリの点でのサーチ機構のコストが最小にされるべきである。第２に、サーチを完結するために要求されるもっとも多くかかった時間により決定されるサーチ機構のスピードが、最大に高速化されるべきである。一般的に、サーチ機構は、それぞれ完結のための所定の時間を与える複数のステップ及びサイクルにおいて実行される。従って、サーチの完結のための最大の時間は、最悪の場合のステップ及びサイクル数を最小にすることにより減少される。最後に、エントリを追加又は削除するための知識ベースの更新に関連したコストが、最小にされるべきである。典型的には、知識ベースが更新される場合、同時にはサーチを実行することは出来ない。いずれのサーチ機構の有効性も、与えられた時間内で実行することが出来るサーチ数にもとずく故に、知識ベースを維持するために費やす時間は、最小にされるべきである。
【０００５】
多くのアプリケーションにおいて、サーチが多くのビット数を有するサーチオブジェクトに対して行われる。そういった適当の例は、コミュニケーションシステムにおけるブリッジである。典型的なコミュニケーションシステムは、複数のコネクションにわたって通信する多数のデバイスを含む。典型的には、そのようなシステムは、各ローカルコネクションと連動する限定数のデバイスのみを有する複数のローカルコネクションにおいて体系づけられる。ブリッジのネットワークは、各デバイスが同じローカルコネクションと連動しない他のデバイスとコミュニケート出来ないようにローカルコネクションを相互接続するために用いられる。各ローカルコネクションは、外部トラフィックはもちろん、ローカルコネクション上のトラフィック（システム中のいずれか他のコネクション上のトラフィック）をモニタする関連するブリッジを有する。ブリッジが、外部トラフィックがローカルコネクションにおけるデバイスに対して割り当てられたと判断した場合、ブリッジは、情報がローカルコネクションを通過することを許容する。同様に、情報がローカルコネクションから外部の宛先へ割り当てられる場合は、ブリッジは情報がローカルコネクションから通過することを許容する。
【０００６】
典型的には、デバイスは、ソースからシステムにわたる宛先への情報のパケットを移動することにより通信する。パケットは、典型的には、パケットソース及び宛先デバイスのアドレスを認識するビット（４８ビットのオーダ）を包含する。各ブリッジは、関連するローカルコネクションにおけるデバイスのそれぞれに対してエントリをともなう知識ベースを管理することによりローカルに及び外部的にトラフィックを監視する。従って、ブリッジによりもたらされる機能は、割り当てられたパケットを外部的に受信することであり、更に４８ビットの宛先アドレスがローカルコネクションに位置されたいずれのデバイスとも一致するか否かを判断するための知識ベースのサーチを行うことである。従って、サーチオブジェクト（即ち、宛先アドレス）は、２48又は２８０兆になる得るアドレスに等しい値を有する。しかしながら、ビレッジ知識ベースにおけるエントリ数は、関連したローカルコネクション上のデバイス数に等しものにすぎず、従って、２８０兆よりはるかに少なくなる。
【０００７】
上記から明らかなように、ブリッジを行うアプリケーションの要求を満たすために、サーチ機構は、膨大な数値を有することが出来るサーチオブジェクトにて動作する必要があり、相当に下まわる知識ベースエントリ数をサーチしなければならない。この特徴は、多くのサーチアプリケーションにおいて典型的である。しかしながら、従来のサーチ技術は、そのようなサーチを行うために特によく適合されたものではない。
【０００８】
サーチ機構を実行するための技術の例としては、ダイレクトメモリアクセスを使用することが挙げられる。そのような機構の下では、メモリは、サーチオブジェクトが有するフルセットの可能値に等しいエントリ数を記憶する能力を有するように提供される。従って、上記のように、４８ビット宛先アドレスは、４８ビットアドレスを有する知識ベースメモリを直接にアドレスするために使用される。そういったサーチ機構は、各サーチが４８ビットアドレスがメモり中の各エントリに直接アクセスするために1ステップ又はサイクルにて行われるサーチ及び更新を顕著に高速にする。しかしながら、サーチオブジェクトが多くのビット数を含む適用にあっては、可能なサーチ値のフルセットをサポートするためのメモリのコストが、非実用的なサーチ機構を作るほどに大きなものとなる。例えば、上記したようなブリッジの適用を行うためにダイレクトメモリアクセスを用いるために、知識ベースメモリは２８０兆(即ち２48)のエントリを含むことが必要である。従って、大量のメモリが必要とされる故に、ダイレクトメモリアクセスは、サーチオブジェクトが多くのビット数を含むサーチ適用においての使用のためには実用的ではない。
【０００９】
知識ベースが一時的にストアされる最大数のエントリにより拘束される他の従来のサーチ技術が開発されている。情報(Informed)サーチは、そういったサーチ技術の例である。情報サーチは、知識ベースメモリの複数のルックアップを用いることにより行われる  （ルックアップの結果は、次のルックアップのためのメモリアドレスを決定するために使用される）。バイナリサーチは、情報サーチの例である。バイナリサーチシステムにおいては、知識ベースにストアされたサーチエントリのすべてがアドレスによりソートされる。与えられたサーチオブジェクトをサーチするために、そのオブジェクトは、はじめに知識ベース内に記憶されたエントリと比較される。もし、サーチオブジェクトが中間のエントリと一致しないときは、次に比較がなされるエントリに関する判定が情報化(informed)されたものであるように、サーチオブジェクト値の高低に関する指示が与えられる。次いで、このサーチオブジェクトは、中位のエントリと上位又は下位のエントリの間に記憶されたエントリと比較される。この方法においては、サーチ機構は、一致又は不一致が判断されるまで、半分に残りのエントリを分割することを続ける。
【００１０】
知識ベースが、サーチオブジェクトが有する、可能なエントリ値に対応するエントリを記憶するために十分なメモリを有することよりむしろ、一時的に現実に記憶されるエントリの最悪の数を記憶するために十分なメモリを包含することのみが必要である故に、バイナリサーチは、ダイレクトメモリアクセス機構のおいて利点を有する。しかしながら、実行の費用は、サーチスピード及びエントリの追加／削除のための知識ベースの更新のために支払われることになる。バイナリサーチシステムにおいては、知識ベースにおけるエントリの関連した位置づけは、それが情報化（伝達）されるべきサーチを可能にするものであるがゆえに重要である。従って、知識ベースが比較的低い値を有するエントリで更新された場合には、知識ベースにおけるエントリのそれぞれが、それらのポジションを調整し直すために更新することを要求することが可能である。従って、知識ベースを更新するためのコストは、規則されたエントリ数との関数であり、最悪の数のケースの場合には、記憶されたエントリ数に等しくなる。加えて、バイナリサーチのために要求される最悪の時間もまた、ダイレクトメモリアクセス機構のためのそれよりも大きい。1ステップ又はサイクルごとにサーチを行うことではなく、バイナリサーチに要求される最悪のサイクル数は、知識ベースにおけるエントリ数Ｎの関数であり、log2Nに等しい。
【００１１】
サーチスピード増大を図る場合に、知識ベースエントリがハッシングテーブルにストアされるようなハッシング技術を組み入れている。ハッシングテーブルは、早期一致検出の可能性の改善を図る場合に、非１対１のマッピングを使用する。しかしながら、このマッピングが用いられる故に、１回以上のサーチエントリは、ハッシングコリジョン(collision)をおこす、シングルアドレスへマッピングすることが出来る。従って、ハッシング機構は、コリジョンを解決するいくつかのメカニズムを包含しなければならない。ハッシングコリジョンの解決が、一般的に追加のルックアップを必要とすることから、コリジョンはハッシングテーブルのサーチは行われることが出来るスピードに大きく減少できる。
【００１２】
以上を考慮して、本願発明は、サーチの方法及び装置を提供することを目的とする。
【００１３】
＜発明の要約＞
上記目的は、以下の本願発明の一態様により達成される。
知識ベースがサーチオブジェクトに一致するエントリを含むか否かを判定するために知識ベースをサーチするための方法及び装置が提供され、サーチオブジェクトは複数のビットを含み、知識ベースは複数のビットをそれぞれ含む複数のエントリを有し、各エントリの各ビットは複数のサーチオブジェクトビットの内の一つに対応する。本発明の態様によれば、少なくとも一つのサーチオブジェクトビットが選択され、その選択された少なくとも一つのサーチオブジェクトビットは選択されたビットパターンを表す。判定は、知識ベースがサーチオブジェクトの少なくとも一つの選択されたビットに対応する少なくとも一つのビットにおける選択されたビットパターンを表すエントリを含むか否かについて行われる。知識ベースが少なくとも一つの部分的に一致したエントリを含まないことが判定された場合、サーチオブジェクトに対する一致していないことの指示がなされ、サーチは終了する。知識ベースが少なくとも一つの部分的に一致したエントリを含むことが判定された場合は、すべての部分的に一致したエントリのグループ（以下「サブマップ」という。）が認定される。次いで、少なくとも一つの以前に選択されなかったサーチオブジェクトビットが選択される（少なくとも一つのサーチオブジェクトビットはターゲットビットパターンを表す。）。判定は、グループ（又はサブマップ）が、サーチオブジェクトの少なくとも一つの以前に選択されなかったビットに対応する少なくとも一つのビットにおけるターゲットビットパターンを表す少なくとも一つの部分的に一致したエントリ含むか否かを判定することにより、その部分的に一致したエントリのグループが少なくとも一つの更に部分的に一致したエントリを含むか否かについて行われる。部分的に一致したエントリのグループが、少なくとも一つの更に部分的に一致したエントリを含まないことが判定された場合は、サーチオブジェクトに対する一致がなされていない旨の指示がなされ、サーチは終了する。部分的に一致したエントリのグループが少なくとも一つの更に一致したエントリを含むことが判定された場合には、部分的に一致したエントリのグループはアップデートされ、更に部分的に一致したエントリのみを認識する。判定は、サーチオブジェクトの各ビットが選択され、それが有するか否かについて行われ、指示が部分的に一致したエントリのグループに対する一致についてなされ、サーチは終了する。各サーチオブジェクトビットが選択されていない場合は、新しいサーチオブジェクトビットが選択され、サーチが上記手順に従って続行される。
【００１４】
本願発明の他の態様においては、サーチデバイスの知識ベースへ新しいエントリを付加する方法及び装置が提供され、サーチを行うためのサーチデバイスは、知識ベースがサーチオブジェクトに一致するエントリを含むか否かについて判定し、サーチデバイスは複数の独自にアドレス化可能なメモリロケーションを包含するメモリを有し、各メモリロケーションは複数の高ビット及び低ビットを含む複数のアドレスビットにより表される対応するアドレスを有する。本態様によれば、新しいエントリのビットは、少なくとも第１の及び第２のビットへ分離され、ビットの各グループは値を示し、新しいエントリのビットの第１及び第２のグループは知識ベースに包含される各エントリのビットの第１及び第２のグループに対応する。第１のビットパターンは、第１のメモリアドレスを選択することにより第１のメモリアドレスでの第１のメモリロケーションに書き込まれる。そしてその書き込みは、少なくともその低ビットが新しいエントリのビットの第１のグループにより表される値に等しい値を表すように、及び、第１のビットパターンが、少なくとも一つの以前未使用だったメモリロケーションを含むメモリロケーションのグループを認識するオフセットアドレスの少なくとも高ビットを含むように該第１のビットパターンを形成することのよってなされる。第２のビットパターンは、第２のメモリアドレスを選択することにより第２のメモリアドレスでの第２のメモリロケーションに書き込まれる。そしてその書き込みは、その高ビットが第１のメモリロケーションにストアされたオフセットアドレスに等しいように、及び、第２のビットパターンが、新しいエントリのビットの第１及び第２のグループによりそれぞれ表される値に等しくないビットの対応する第１及び第２のグループにより表される値を有する以前に加えられたエントリから新しいエントリを区別するように該第２のビットパターンを形成することにより行われる。
【００１５】
本願発明の更に他の態様においては、知識ベースがサーチオブジェクトに一致するエントリを包含するか否かを判断するために、サーチをパターン化するサーチデバイスのメモリを組織化するための方法及びデバイスを提供し、サーチオブジェクトはメモリのアドレスビット数以下であるビット数を含み、各エントリの各ビットはサーチオブジェクトビットに対応する。本態様によれば、メモリは、エントリが加えられるか、又は、少なくとも一つのメモリロケーションに記憶された値を変更することにより知識ベースから除去されるたびに更新される。メモリは、メモリが少なくとも一つのサーチオブジェクトビットに少なくとも部分的に基づくアドレスでアクセスされる場合、メモリからアウトプットされた値が、少なくとも一つのサーチオブジェクトビットが知識ベースエントリの対応するビットに一致するか否かを判定的に指示するように組織化される。
【００１６】
本願発明の更に他の態様においては、知識ベースがサーチオブジェクトに一致するエントリを含むか否かを判定するためにサーチを行うサーチデバイスを実行するための方法を提供し、サーチデバイスは複数の独自にアドレス化可能なメモリロケーションを含むメモリを有し、サーチオブジェクトはメモリのアドレスビット数以下のビット数を含み、各エントリの各ビットはサーチオブジェクトビットに対応する。本態様によれば、サーチは複数のリードアドレスに対応する複数のメモリロケーションをリードすることにより特定のサーチオブジェクトに対して行われ、各リードアドレスは特定のサーチオブジェクトの少なくとも一つの選択されたビットに少なくとも部分的に基づき、複数のリードアドレスが基づく選択されたビットは所定のシーケンスに選択される。 メモリは、エントリが加えられるか、又は、更新する値を記憶するように少なくとの一つのメモリロケーションを変更することにより知識ベースから除去されるごとに、及びサーチが選択されたサーチオブジェクトに対して行われた場合に、複数のリードのそれぞれの間にメモリから出力された値が選択されたサーチオブジェクトの少なくとも一つのビットが知識ベースエントリの対応するビットに一致するか否かを判定的に指示するように、少なくとも一つのメモリロケーション及び更新された値を選択することにより、更新される。
【００１７】
本願発明の更に他の態様においては、ニューラルネットワークがサーチオブジェクトに一致するエントリを表すか否かを判断するためにサーチを行うためのニューラルネットワークを提供し、各エントリはサーチオブジェクトのビットの少なくとも第１及び第２のグループにそれぞれ対応するビットの少なくとも第１及び第２のグループを有し、第１のグループはビット数Ｆを有し、第２のグループはビット数Ｓを有し、各エントリはビットの第１及び第２のグループによりそれぞれ表される第１の及び第２の値を有する。本態様によれば、ニューラルネットワークは、各エントリの第１の値とサーチオブジェクトのビットの第１のグループにより表される値を比較する第１のレベルノードを包含する。第１のレベルノードは、サーチオブジェクトのビットの第１のグループにより表される値がエントリの第１の値に等しくないことが判断される場合にもたらされる第１のレベルの不一致のアークを出力する。第１のレベルノードは更に、第１のレベルの一致したアーク数を出力し、第１のレベルの一致するアーク数は知識ベースエントリにより表される別個の第１の値数と等しいものであり、各第１のレベルの一致するアーク（又はサブマップ）は、個別の第１の値に対応し、及び、サーチオブジェクトのビットの第１のグループが対応する第１の値に等しいことが判断された場合にもたらされる。本態様におけるニューラルネットワークは更に、各第１のレベルマッチアーク又はサブマップに対応する第２のレベルノードを包含し、各第２のレベルノードは、その対応する第１のレベルマッチアークがもたらされる場合に起動される。各第２のレベルノードは、ニューラルネットワークにより表されるエントリのサブセットを表し、特別な第２のレベルノードにより表されるエントリのサブセットは、その特別な第２のレベルノードの対応する第１のレベルの一致するアーク又はサブセットにより表される個別の第１の値に等しい第１の値を有する。各第２のレベルノードは、エントリのその表されたサブセットの各々の第２の値とサーチオブジェクトのビットの第２のグループにより表される値を比較する。各第２のレベルノードは、第２のレベルノードが起動される場合、及び、サーチオブジェクトのビットの第２のグループにより表される値が、エントリのその表されたサブセットの第２の値に等しくないと判断される場合にもたらされる第２のレベルの不一致のアークを出力する。各第２のレベルノードは更に、第２のレベルノードが起動される場合、及び、サーチオブジェクトのビットの第２のグループにより表される値が、エントリのその表されたサブセットの少なくとも一つの第２の値に等しいと判定された場合にもたらされる少なくとも一つの第２のレベルの一致するアーク又はサブセットを出力する。
【００１８】
＜発明を実施するための最良の形態＞
本発明はサーチを実行する方法および装置に関し、各々のサーチは知識ベースにおけるサーチオブジェクトと複数のエントリのいずれかとの間で一致または競合しているかを判断するものである。本発明のサーチスキームはニューラルネットワークのように多様に動作し、従って、その動作は図１に示されたニューラルネットワーク１を参照して示される。
【００１９】
ニューラルネットワーク１は、３２ｂｉｔのサーチオブジェクトが１６進表記の”２Ｅ３８４５３４”で表された値を持つ所定の３２ｂｉｔのエントリに一致するかの決定を実行する。ニューラルネットワーク１は５つのノード、すなわちノード３，５，７，９，１１を持ち、それぞれの出力は２つのアーク（ａｒｃ）を持つ。第１のノード３は、サーチオブジェクトの上位１６ビットとニューラルネットワークエントリの上位１６ビットとの一致、すなわち、サーチオブジェクトとの０〜１５ビットが”２Ｅ３８”に等しいかを判断する。ノード３は、アクティブになった時に、サーチオブジェクトの最初の１６ビットが”２Ｅ３８”に等しいことを示すアーク１３を出力し、そして、不一致を示す第２のアーク１５を出力する。よって、サーチオブジェクトの最初の１６ビットがニューラルネットワークのエントリに一致しないとノード３において判断された場合、アーク１５がアクティブになり、これにより、サーチが終了し、一致が見つからないことを示す。しかしながら、ノード３において最初の１６ビットが”２Ｅ３８”に一致したと判断された場合、アーク１３はアクティブになり、これによりノード５の実行が開始される。
【００２０】
ノート５はサーチオブジェクトの次の４ビット（すなわち、１６〜１９ビット）が”４”に等しいかを判断し、それぞれ一致または不一致（ミス）を示す二つのアーク１７、１９を出力する。同様に、ノード７は、サーチオブジェクトの２０〜２３ビットが”５”に等しいかを判断し、ノード９は、２４〜２７ビットが”３”に等しいかを判断し、そして、ノード１１は２８〜３１ビットが”４”に等しいかを判断する。ノード７，９，１１が起動（トリガ）され、それらの対応するビットに一致すると判断された場合にはアーク２１，２５，２９をそれぞれアクティブにし、一致しないと判断された場合にはアーク２３，２７，３１をアクティブにする。よって、ノード３，５，７，９，１１のいずれかにおいて不一致であると判断された場合には、対応するアークがアクティブになり、一致が見つからなかったことを示し、サーチが終了する。アーク２９は、ノード１１が起動された場合にのみ、一致を示すために起動され、サーチオブジェクトの０〜２７ビットが”２Ｅ３８４５３”に一致し、サーチオブジェクトの２８〜３１ビットが”４”に等しいことを示す。よって、ニューラルネットワーク１のアーク２９がアクティブであることは３２ビットのサーチオブジェクトがネットワークの唯一のエントリに一致することを示す。
【００２１】
先に述べたことから分かるように、ニューラルネットワーク１はサーチを５つのステップまたはレベルに分割することにより３２ビットオブジェクトのサーチを実行し、各々のレベルはサーチオブジェクトのビットのサブセットに対して一致が存在するかを決定する。ノード３，５，７，９，１１はそれぞれ５つのレベルのうちの一つを実行する。分割されたレベルのサーチを実行することによる利点は図１における簡略化された例からは自明でないかもしれない。よって、さらに複雑な例を図２に示すこととする。ここで、ニューラルネットワーク４０は、１６進表記で”０００１ＢＡ２２”、”００１ＢＡ７Ｆ”、”０００１ＢＢＥ２”、”２Ｅ３８４５３４”、”２Ｅ３８４２２７”、”２Ｅ３８ＥＥ５６”、”９１０ＡＥＦＢ６”、”９１０ＡＥ２３７”、”９１０ＡＥ４６８”、”９１０Ａ２２７Ｅ”の値を持つ１０個の３２ビットサーチのいずれかに、サーチオブジェクトが一致するかを判断可能となるように実行するものである。
【００２２】
ニューラルネットワーク４０は、レベル１〜５までの５つのレベルに分けられる２８個のノードを有する。レベル１は一つのノード５０を有している。ノード５０はサーチオブジェクトの最初の１６ビットを調べ、それらがニューラルネットワーク４０に記憶されたいずれかのエントリの最初の１６ビットに一致するかを判断する。ニューラルネットワーク４０には１０個の別々のエントリがあるが、多くのエントリはそれらの上位１６ビットにおいて同じ値を有し、ずべてのエントリの最初の１６ビットは以下の３つの１６進の値、”０００１”、”２Ｅ３８”、”９１０Ａ”のうちの一つを有する。従って、ミスを示すアーク（未図示）を出力するのに加えて、ノード５０は３個のアーク５１〜５３だけを出力する。サーチオブジェクトの最初の１６ビットが”０００１”に等しい場合には、ノード５０はアーク５１をアクティブにし、ノード６０を起動する。同様に、最初のの１６ビットが”２Ｅ３８”または”９１０Ａ”に等しい場合には、ノード５０はアーク５２または５３をそれぞれアクティブにし、ノード６１または６２をそれぞれ起動させる。最初の１６ビットが”０００１”、”２Ｅ３８”、”９１０Ａ”のいずれとも一致しないと判断された場合には、ノード５０は、サーチオブジェクトがニューラルネットワーク４０に記憶されたいずれの要素とも一致しないことを示すアーク（未図示）をアクティブにし、サーチを終了する。よって、いずれのオブジェクトに対しても、ノード５０は、ミスが起きたことを示すサーチを終了するか、または、サーチオブジェクトの最初の１６ビットがニューラルネットワークのエントリの少なくとも一つと一致した場合にアーク５１〜５３のうちの一つをアクティブにする。
【００２３】
ノード５０から出力されたアーク５１〜５３の各々はレベル２のノードのうちの一つ、すなわち、ノード６０〜６２に接続されている。よって、アーク５１〜５３のうちの一つがアクティブにされた場合はいつでも、レベル２のノードは起動され、サーチオブジェクトの次の４個のビット（すなわち、１６〜１９）を調べる。レベル２のノード６０〜６２の各々は、ノードが起動されるとともにサーチオブジェクトの１６〜１９ビットにおいて一致が発見された場合にアクティブになる少なくとも一つのアークを出力する。また、レベル２のノード６０〜６２の各々は、ノートが起動されるとともに１６〜１９ビットにおいて一致が発見されなかった場合にアクティブになるミスのアーク（未図示）を出力する。例えば、起動されると、ノート６０は、サーチオブジェクトの１６〜１９ビットが”Ｂ”に一致したと判断した場合にアーク６３をアクティブにする；ノード６１は、これらのビットが”４”に一致した場合にはアーク６４をアクティブにし、それらが”Ｅ”に一致した場合にはアーク６５をアクティブにする；ノード６２は、これらのビットが”Ｅ”に一致した場合にはアーク６６をアクティブにし、それらが”２”に一致した場合にはアーク６７をアクティブにする。
【００２４】
上述したように、アクティブにされるべきレベル２のノード６０〜６２から出力されたアークに対して、サーチオブジェクトの１６〜１９ビットに対して一致が生じなければならないだけではなく、対応するノードが、サーチオブジェクトの最初の１６ビット（すなわち、０〜１５ビット）にも一致することを表すレベル１のノード５０から出力されたアークによって始動されていなければならない。よって、レベル２のノードからのアーク６３〜６７のいずれかは、サーチオブジェクトの最初の２０ビットがニューラルネットワーク４０の少なくとも一つのエントリに一致することを示す。
【００２５】
レベル２から出力されたアーク６３〜６７のいずれかはレベル３のノード７０〜７４のうちの一つに接続され、その一つのノードはサーチオブジェクトの２０〜２３ビットを調べる。これらが始動され、これらの一致を検出した場合には、レベル３のノードは、レベル４のノードをアクティブにするアークを出力し、そしてレベル４のノードはサーチオブジェクトの２４〜２７ビットを調べる。同様に、レベル４のノードが始動され、２４〜２７ビットの一致を検出した場合には、これらはレベル５のノード９０〜９９を起動するアークをアクティブにし、そしてレベル５のノード９０〜９９はサーチオブジェクトの２８〜３１ビットを調べる。レベル５のノードが起動され、これらのビットの一致を検出した場合には、それらは、サーチオブジェクトの３２ビットがニューラルネットワーク４０のエントリに一致することを示すアークをアクティブにする。よって、ニューラルネットワーク４０がサーチを実行する場合はいつでも、サーチオブジェクトの３２ビットについて一致するレベル５のノード９０〜９９のうちの一つから、出力はアクティブにされ、または、サーチオブジェクトが発見されなかったことを示すノード５０，６０〜６２，７０〜７４、８０〜８８、９０〜９９のうちのいずれかから、ミスの出力がアクティブにされる。
【００２６】
上述したことから分かるように、図２のニューラルネットワーク４０は、エントリのうちのいずれかが３２ビットのサーチオブジェクトに一致するかを判断する１０個の３２ビットエントリを含む知識ベースのサーチを実行する。かかるサーチスキームによる２つの利点が図１および図２から理解される。第１に、完全なサーチを実行するのに必要な最大のステップ数は、知識ベースのエントリの個数によって変化することはない。図１および図２の比較から理解できるように、ニューラルネットワーク４０（図２）の知識ベースはニューラルネットワーク１（図１）の単一のエントリの知識ベースよりも１０倍大きいが、サーチはそれぞれ５ステップだけで足りる。ニューラルネットワークは、３２ビットアドレスから生成され得る４０億を越えるエントリの各々を含んで構成されるとしても、同様に実行されるニューラルネットワークはわずか５ステップのみを含み、エントリのいずれかのサーチを実行するにはわずか５ステップで足りる。よって、本発明のニューラルネットワークのサーチスキームを用いて完全なサーチを実行するのに要する最大のステップ数は、実際のエントリの数には依存せず、むしろサーチオブジェクトのビット数の関数、およびネットワークの実行方法による。
【００２７】
第２の利点として、エントリが追加または削除された場合にネットワークを更新するのに比較的に低コストで済むという点がある。図２に示されたように、１０個のエントリのサーチ経路は５個のレベルの各々におけるノードを通過する。よって、追加のエントリに要するコストの最悪のケースは、５個のノードから出力されたアークと一緒に、５個のノードの追加または更新とこれらから出力されたアークの追加または更新を要する場合である。同様に、エントリの削除はせいぜい５個のノードおよびそれらに対応するアークの削除または置換で足りる。
【００２８】
上述したように、図２に示されたニューラルネットワーク４０はレベル１における１６ビット、レベル２〜５の各々における４ビットを調べる。本発明におけるサーチスキームはこれに限定されるものではなく、他の方法によっても実行されるべきものであることが理解されよう。例えば、レベル１を含む各々のレベルはわずか４個のビットを調べる。しかしながら、この方法において実行されるのであれば、図２に示されるノード５０によって実行される機能を実行するには、４個の独立したレベルを要する。上述したように、ニューラルネットワークを実行するのに使用されるレベルを増やすと、サーチを実行するのに要するステップも増加する。よって、４ビットがそれぞれのレベルにおいて調べられるよう、ニューラルネットワークが実行された場合、サーチに要する時間の最悪のケースとして５〜８個のステップが増加することになる。
【００２９】
最悪のケースにおけるステップ数を減少させることにより、性能が全体的に向上するため、各々のレベルにおいて調べられるビット数を最大にすることが望ましい。例えば、各々のレベルにおいて１６ビットが調べられる場合、サーチオブジェクトの３２ビットのサーチのためには最悪のケースでもわずか２個のステップで足りる。しかしながら、各々のレベルにおいて調べられるビット数を増加させると、ニューラルネットワークにおける実行のためのコストを増加させる結果となる。概して、ノードによって調べられるビット数が少なければ、実行に要するノードの機能が減少し、よって、ノードにおける実行の複雑さが軽減される。したがって、コスト効率および簡略な方法においてネットワークを実行させることと、性能を最大化させることとの間においてバランスをとらなければならない。
【００３０】
図２に示された実行において、次のレベルのいずれかよりも最初のレベル（すなわち、レベル１における１６ビット）において、より多くのビットが比較される。これは利点となるものであり、なぜなら、上述したように、同時に比較さえるビット数を増加させると、サーチの実行に要するステップ数が減少するからである。さらに、最初のレベルにおいて比較されるビット数を増加させても、他のレベルにおけるビットが増加した場合ほどにはネットワークの実行に要するコストは増加しない。図１および図２に示されたように、ネットワークに記憶されたエントリの数に拘わらず、最初のレベルにおけるノードは１個のみである。一方、他のレベルの各々は複数のノードを有している。よって、例えばレベル２が図２に示されたように１６ビットを調べるように実行された場合、レベル２の３個のノード６０〜６２は各々、４ビットというよりも６ビットを調べるのに必要となる。よって、次のレベルにおいて調べられるビット数を増加させると、ニューラルネットワークの複雑度が、最初のレベルのビット数の増加の割合以上に増大する。
【００３１】
本発明におけるサーチスキームは上述したように、先ずサーチオブジェクトの上位から下位ビットへと順に実行され、最下位ビットが最後に比較されるのであるが、本発明はこれに限られるものではない。サーチの順番を逆にし、最下位ビットから順番に実行することも可能である。さらに、必ずしもビットを順番に調べなくても良い。必要なことは、サーチオブジェクトの各々のビットがサーチスキームのいくつかのレベルにおいて調べられるということである。
【００３２】
本発明は上述において４ビットまたは他の複数ビットを各々のレベルにおいて調べているが、本発明はこれに限定されるものでもない。上述したニューラルネットワークは、単なる説明のために４ビットの限度に分解して示したにすぎない。いずれのレベルにおいて比較されるビット数はいかなる数でもよく、奇数のビットを含むものでも良いことが理解されるべきである。
【００３３】
本発明におけるサーチ技術は、ミスが生じた場合における重み付けサーチの実行に有用であり、サーチテーブルにおける一致したいずれかのエントリのビット数を知るのに望ましいものである。本発明はサーチオブジェクトのビットにおいて増加のサーチを実行させるため、重み付けサーチの実行に有用な情報が、異なるレベルにおいて生じた失敗のためのミスのアークを分離することにより得られる。かかる方法により、失敗に終わったアークは、最初のミスビットを検出する以前にサーチオブジェクトのいくつのビットが一致したと発見されたかを示す。
【００３４】
上述のことから分かるように、本発明のサーチスキームは、ニューラルネットワークによって記憶されたエントリの範囲内であるサーチオブジェクトに対応する１対１のマッピングを提供する。しかしながら、非１対１のマッピング（すなわち、ミスにマップされたすべてのアドレス）が、記憶されたエントリの範囲外であるサーチオブジェクトのために実行される。よって、サーチオブジェクトの可能な値のセットとして、本発明は、ある領域から、記憶された範囲への１対１のマッピング機能、および、範囲外の値を持つ第２の領域のための非１対１のマッピング機能を実行する。
【００３５】
本発明におけるサーチ方法および装置の実行技術の一つとして、スキャッターメモリアクセスまたはＳＭＡが挙げられる。スキャッターメモリアクセスは、一つまたはそれ以上のメモリアクセスがサーチオブジェクトの採り得る値のセットとして、ある領域から記憶されたエントリへの１対１マッピング機能、および、範囲外の値を有する第２の領域のための非１対１のマッピングを実行するものである。
【００３６】
一つの実施例において、スキャッターメモリアクセスデバイスは図３に示された方法により実行される。レベル１、レベル２，レベル３、レベル４，レベル５の各々は、ＲＡＭ１０１〜１０５と、６５５３６個のロケーション（１６ビットでアドレス可能）を有するＲＡＭと、出力の１２ビットとともに実行される。レベル１のＲＡＭ１０１の１６のアドレスビットはサーチオブジェクトの最初の１６ビット（すなわち、０〜１５ビット）を受信する。ＲＡＭ１０２〜１５の各々は、その上位１２ビットアドレスが前のレベルのＲＡＭから出力された１２ビットを受信するとともに、その下位４ビットアドレスが対応するレベルにおいて調べられるべきサーチオブジェクトの４ビットを受信するよう、アドレス指定される。このようにして、前のＲＡＭから出力された１２ビットは、ＲＡＭのアドレス空間へのオフセットとして提供され、サーチオブジェクトの４ビットは１６個のメモリロケーションの一つへのインデックスとして提供される。
【００３７】
図３に示されたＳＭＡの実行は、４０９５（２の１２乗マイナス１）個までの固有のエントリを支援するサーチスキームを提供する。独立のエントリの最大数は最後の４個のレベルにおけるＲＡＭ１０２〜１０５を考慮して決定される。これらのＲＡＭの各々は４０９５個の４ビットのコンパレータの実行として考慮され、４０９５個のコンパレータのうちの特定の一つの選択は前のレベルから受信した１２のアドレスビットによって決定され、また、各々のコンパレータは１６個のメモリロケーションのルックアップを実行することによりサーチオブジェクトの４ビットを比較する。よって、コンパレータを実行する各々の１６番目のロケーションのブロックは、ニューラルネットワークのノードの実行として調べられ、そして１２ビットのＲＡＭの出力は各々のノードからの４０９６個の固有のアークのアドレスの生成として調べられ得る。ＲＡＭ１０１〜１０５の各々から出力された１２ビットは４０９６個の別個のアドレスを支援するのではあるが、あるアークはミスを示すように割り当てられ、４０９５個の独立したアークが別個のエントリへ割り当てられるべきものとして残る。したがって、図３に示された実行は３２ビットのサーチオブジェクトを受信するとともにサーチオブジェクトが４０９５個までの別個の３２ビットエントリのいずれかに一致するか否かがを決定する。
【００３８】
エントリが装置の知識ベースに追加または削除された場合にＲＡＭ１０１〜１０５の装着を管理するために、プロセッシングシステムのように、ある設備において手続は実行される。いずれのＲＡＭのロケーションの各々のビットは、”０”のように単一の値を含むように初期化され、これは一般的にミスを示すものとして選択され得る。初期化に続いて、メモリ管理手続は３２ビットのサーチエントリに関する値でシステムを更新し始める。具体例として、追加された最初のエントリは”２Ｅ３８４５３４”の値を採り得る。上述したように、ＲＡＭ１０１はレベル１を実行するのに使用され、レベル１は、サーチオブジェクトの最初の１６ビットを調べる単一のノードを有し、それらがサーチデバイスのエントリのいずれかの最初の１６ビットに一致するかを決定する。この決定はサーチオブジェクトの最初の１６ビットを直接にＲＡＭ１０１に入力することによりなされ、この結果、最初の１６ビットがサーチオブジェクトのそれらと一致するエントリを有するか否かをサーチデバイスが決定するよう、ルックアップが実行される。
【００３９】
エントリ”２Ｅ３８４５３４”を追加するため、”２Ｅ３８”に等しい１６ビットを有する少なくも一つのエントリをサーチメカニズムが含むことを示す値を有するように、ＲＡＭ１０１はアドレス”２Ｅ３８”において更新される。レベル１のノードを実行するため、アドレス”２Ｅ３８”におけるＲＡＭ１０１の１２ビットの内容は、ＲＡＭ１０２において実行されるレベル２のノードへのアークのアドレスを示すように更新される。上述したように、ＲＡＭ１０２は２の１２乗（すなわち、４０９６）個のノードまたは４ビットのコンパレータとしてみなされ得る。利便のため、ＲＡＭ１０２のアドレス”０００Ｘ”におけるノードは、サーチオブジェクトの最初の１６ビットにわたってミスが生じたことを示すように割り当てられる。従って、”２Ｅ３８４５３４”がデバイスに追加された唯一のエントリであり、最初の１６ビットが”２Ｅ３８”に等しくないサーチオブジェクトのためにサーチが実行されたとした場合には、ＲＡＭ１０１の１２ビットの出力は初期状態である”０００”となり、ミスが生じたことが示されるであろう。よって、ＲＡＭ１０２（サーチオブジェクトの１６〜１９ビットに対応する）の下位の４個のアドレスビットに入力された値に拘わらず、１２個の上位のビットに割り当てる”０００”は、サーチオブジェクトに対してミスを示す”０００”を、さらにＲＡＭ１０２に出力させる。ＲＡＭ１０３〜１０５の各々に対する下位の１６個のロケーション”０００Ｘ”は同様に割り当てられ、ミスのノードを実行するとともに、アドレス指定されたときに各々”０００”を出力する。この結果、いずれのレベルにおいてミスが検出されたとしても、アドレス”０００Ｘ”はＲＡＭの各々を介して伝播し、ＲＡＭ１０５はミスを示す”０００”を出力する。
【００４０】
上述したことから分かるように、ミスを示すために各々のメモリ１０２〜１９５に対して”０００”を予約することは便利なことである。よって、ＲＡＭ１０１を更新し、エントリ”２Ｅ３８４５３４”を追加した場合、アドレス”２Ｅ３８”におけるメモリロケーションの１２ビットの内容は”０００”以外のアドレス値にアークのアドレスが割り当てられる。例えば、１２ビットの出力は”００１”の値に割り当てられ、この結果、レベルとレベル２の間のアークのアドレス”００１”はサーチオブジェクトの最初の１６ビットが”２Ｅ３８”に等しいことを示す。
【００４１】
上述した方法においてレベル１のＲＡＭ１０１を更新する結果、レベル２のノード、または最初の１６ビットが”２Ｅ３８”であるエントリの４ビットのコンパレータを実行するように、アドレス”００１Ｘ”におけるＲＡＭ１０２の１６個のロケーションが割り当てられる。よって、ＲＡＭ１０２を更新し、エントリ”２Ｅ３８４５３４”を追加するため、アドレス”００１Ｘ”における１６個のロケーションのうちの一つは、このエントリにおいて一致したことを示すように更新されなければならない。上述したように、ＲＡＭ１０２の下位の４ビットはサーチオブジェクトの１６〜１９ビットを受信し、これは、エントリ”２Ｅ３８４５３４”において”４”に等しくなる。よって、エントリ”２Ｅ３８４５３４”を追加するため、ＲＡＭ１０２はアドレス”００１４”において、ＲＡＭ１０１から出力されたアークのアドレスに対応するする”００１”に等しい最初の１２ビットと、エントリ”２Ｅ３８４５３４”のエントリの１６〜１９ビットの値に対応する”４”に等しい最後の４個のビットとに更新される。アドレス”００１４”におけるＲＡＭ１０２の１２ビットの内容は、ＲＡＭ１０１がＲＡＭ１０３にオフセットを提供するように更新されたのと同様の方法で、アークアドレスのオフセットをレベル３のＲＡＭ１０３に提供するように更新される。よって、ロケーション”００１４”におけるＲＡＭ１０２の１２ビットの値は同様に”００１”に等しくなりように更新される。この方法において、レベル２とレベル３との間に延びるアドレス”００１”を有するアークは、エントリの最初の２０ビットが”２Ｅ３８４”に等しいことを示す。
【００４２】
エントリ”２Ｅ３８４５３４”を追加するためのＳＭＡの更新は、同様の方法でＲＡＭ１０３〜１０５の各々のエントリを追加することによって終了する。よって、”００１”の値は、アドレス”００１５”におけるＲＡＭ１０３、アドレス”００１３”におけるＲＡＭ１０４、アドレス”００１４”におけるＲＡＭ１０５のそれぞれに書き込まれる。かかる方法において、ノードは、ＲＡＭ１０１〜１０５に対応するアドレス”００１Ｘ”におけるレベル１〜レベル５の各々において形成される。上述したように、これらのノードの各々は、サーチオブジェクトの４ビットと、一致を決定するための記憶されたエントリの４ビットとを比較する４ビットのコンパレータとしてみなされ得る。レベル１〜レベル５のいずれにおいてミスが発見された場合には、対応するＲＡＭ１０１〜１０５がその出力上に”０００”を生成する。上述したように、ＲＡＭ１０２〜１０５の各々の１６個のロケーション”０００Ｘ”が”０００”の値を有するため、ＲＡＭ１０１〜１０５のいずれかからの出力”０００”は最後のＲＡＭの出力を介して伝播し、これにより、サーチオブジェクトがスキャッターメモリアクセスデバイスに記憶されていないことが示される。
【００４３】
追加のエントリは、同様の方法によりスキャッターメモリアクセスデバイスに追加される。例えば、第２のエントリが”Ａ７９Ｃ２ＦＢ０”の値を有して追加される。このように新たなエントリが追加されると、ＲＡＭ１０１はアドレス”Ａ７９Ｃ”において更新され、この結果、１２ビットの内容はＲＡＭ１０２における独立したレベル２のノードを形成するアークのアドレスを含む。上述したように、ＲＡＭ１０２におけるアドレス”０００Ｘ”と”００１Ｘ”とは各々、予めミスのノードおよび”２Ｅ３８”の値のノードを実行するように割り当てられている。よって、エントリ”Ａ７９Ｃ２ＦＢ０”を追加するため、アドレス”Ａ７９Ｃ”におけるＲＡＭ１０２の１２ビットの内容は”０００”または”００１”以外のいずれかの値に更新され得る。例えば、アドレス”Ａ７９Ｃ”におけるＲＡＭ１０１は”００２”の値に更新され得る。同様に、ＳＭＡのＲＡＭの残りも更新され、例えば、アドレス”００２２”におけるＲＡＭ１０２、アドレス”００２Ｆ”におけるＲＡＭ１０３、アドレス”００２Ｂ”におけるＲＡＭ１０４、アドレス”００２０”におけるＲＡＭ１０５はぞれぞれ”００２”の値に更新される。かかる方法において、４ビットのコンパレータを実行する別個のノードは、エントリ”Ａ７９Ｃ２ＦＢ０”におけるレベル２〜レベル５の各々において形成される。さらにサーチオブジェクトの最初の１６ビットの比較を実行するレベル１において、追加のノードは形成されない。しかしながら、追加のノードは、最初の１６ビットが”Ａ７９Ｃ”に等しい少なくとも一つのエントリをデバイスが含むことを示す、アドレス”Ａ７９Ｃ”におけるレベル１のＲＡＭ１０１において形成される。
【００４４】
上述した実施例においては、ＲＡＭ１０１乃至１０５の間に延びるアークの各々が、エントリ"2E384534"に対して"001"をアドレスするよう割り当てられ、エントリ"A79C2FB0"に対して"002"をアドレスするよう割り当てられる。しかしながら、任意のエントリに対して、レベルの間のアークを同じアドレスに維持することは必ずしも必要ではない。事実、エントリのある組み合わせに対し、特定のエントリに対してアークのアドレスの各々を同一に割り当てることは好ましくない。例えば、図３に示されるＳＭＡに付加される、第３のエントリが"2E384789"の値を有するときには、同じアドレスを有するように第３のエントリにアークの各々を割り当てないことによって、利点を得ることができる。この第３のエントリがデバイスに追加されたときには、ＲＡＭ１０１と１０２を更新する必要がない。なぜなら、サーチオブジェクトの最初の２０ビットが"2E384"に等しいときには、ＲＡＭ１０３は既に、ＲＡＭ１０１のアドレス"2E38"から出力されたアーク"001"とＲＡＭ１０２のアドレス"0014"から出力されたアーク"001"とを介してアクセスされるアドレス"001X"にノードを有しているからである。即ち、第３のエントリ"2E384789"がＳＭＡデバイスに追加されたときには、追加のアークとノードを形成するためにはＲＡＭ１０３乃至１０５のみを更新することで足りる。第３のエントリに対するノードを実行するのに有効なＲＡＭ１０４乃至１０５にある次の１６個のロケーションブロック(location blocks)はアドレス"003x"にある。即ち、ＲＡＭ１０３のアドレス"0017"とＲＡＭ１０４のアドレス"0038"とＲＡＭ１０５のアドレス"0039"とに値"003"を書き込むことによって、値"2E384789"を有する第３のエントリでＳＭＡデバイスを更新することができる。即ち、エントリ"2E384789"に対するアークはレベルの各々の間で同じアークアドレスを有してはいない。なぜなら、レベル１乃至レベル3においてアークアドレスは"001"に等しく、レベル3乃至レベル5においてアークアドレスは"003"に等しいからである。
【００４５】
アークアドレスが割り当てられる上述の手法は例示の目的で提供されたものであり、ＳＭＡデバイスが新しいエントリで更新されたときにはアークアドレス値をいくつかの異なる方法で更新することもできることを理解すべきである。新しいエントリの追加に伴ってアークアドレス値を増加させる必要はなく、また追加されたノード、即ち４ビット比較器の各々を以前追加したノードに隣接するメモリロケーションへ割り当てる必要もない。むしろ必要なのは、新しいエントリが追加される毎に、追加のノード即ち４ビット比較器が必要に応じて有効なメモリスペースに割り当てられ、追加されたエントリと一致する値を有するサーチオブジェクトに対する一致をデバイスが示すように、ＲＡＭ１０１乃至１０５を更新することである。
【００４６】
さらに、メモリを全て零に初期化する必要がなく、またその零もミス(miss)を示すために使用されるデータパターンである必要もない。むしろ必要なのは、あるレベルでミスが検出されたときに、アドレスのいくつかの経路が必然的にＲＡＭの各々を介して伝搬し、ミスが生じたことを示していると、ＲＡＭ１０５からの１２ビット出力が認識されるよう、ＲＡＭを初期化することである。即ち、ＲＡＭの各々に対するミスのロケーションに記録されている１２ビットのアークアドレスが同一であることも必要ではない。
【００４７】
図３に示されるように、レベル５のＲＡＭ１０５は１２ビット出力を生成する。レベル５は、図３に示された例示的な実施例においては最後のレベルであるので、その出力は続く次のノードへのアークアドレスを示していない。むしろこの１２ビット出力は、例えあるとしても4095個の可能なエントリのいずれがサーチオブジェクトであるかを示す指標(index)を提供する。多くの検索応用において、サーチオブジェクトが知識ベースのエントリの１つと一致したと決定したときには、一致したエントリに付属するある情報を出力することが好ましい。即ち、最後のレベルから出力された１２ビットは、どのエントリが一致したかを識別する指標を提供することになる。
【００４８】
上述の記載から判るように、ＲＡＭ１０２乃至１０５の各々は最大4095個のノード、即ち4095個の４ビット比較器を実現する。この最大数は、ノードを実現する１６個のロケーションブロックを識別するオフセットとして取り扱うためにＲＡＭの各々へ入力される１２アドレスビット（２12＝4096）が存在し、4096個のノードの１つがミスを示すのに使用されるという事実から確証する。即ち、サポートされる別個のエントリの最大数は、ＲＡＭ１０１乃至１０５の各々から出力されたビットの数を決定するファクタである。図３に示されるＳＭＡデバイスは4096個の別個のエントリをサポートすることから、ミスアークを含む4096個のアークをレベル１乃至レベル５の何れかにおいて何れかのノードから出力することができる。即ち、ＲＡＭ１０１乃至１０５の各々は１２ビットを出力し、4096個の別個のアークアドレスをサポートすることが可能である。
【００４９】
スキャッターメモリアクセスデバイスを実現するのに用いられる全メモリサイズはデバイスに記録されているエントリの数によって束縛されるのであって、任意のビット数を有するサーチオブジェクトに対して生じる可能性のある別個の値の最大数によって拘束されるのではないことは、上述の点から好ましいことである。図３に示される例においては、サーチオブジェクトは２２ビットを含んでおり、ＳＭＡデバイスに記録されているエントリは４０憶を超える固有値を有する。しかしながら、上述したように、実際の応用においては、任意のある時間に記録されるエントリの数は、一般的に固有値の全数よりも非常に少ない。サポート可能な最大エントリの数を4095に制限することによって、ＳＭＡデバイスを実現するに使用されるメモリの総量が合理的な制限に維持される。図３に示された実現において、５つのＲＡＭが使用され、各々が２16、即ち65,536個のアドレス可能なロケーションをサポートする。即ち、図３に示されたデバイスを実現するのに使用するアドレス可能なロケーションの総数は327,680（即ち、５×65,536）である。アドレス可能なロケーションの各々は１２ビット即ちメモリの１．５バイトを含み、図３に示されるデバイスを実現するのに使用されるバイトの総数はたったの458,752（即ち、327,680×１．５）である。
【００５０】
本発明のスキャッターメモリアクセスデバイスは4095個の固有アドレスのみをサポートすることに制限されず、図３に示される例示的な実施例を変更することによってそれ以下またはそれ以上の数のエントリをサポートすることも可能である。一般的に、サポートされるエントリの最大数を大きくすると、より多くのメモリが必要である。例えば、別個のエントリの最大数が２倍であり、デバイスが図３に示されるのと同じ手法で実現されるときには、必要なメモリ総量はおおよそ２倍となる。8191個（即ち、4096個×２引く１個のミスエントリ）の固有エントリをサポートするために、レベル１のＲＡＭのロケーションの数が65,536個（即ち、２16）以上に増加する必要はない。しかしながら、8192個（即ち２13）の固有アークアドレスをサポートするためには、レベル１のＲＡＭの各々のロケーションのビットの数を１２から１３に増加する必要がある。さらに、レベル２乃至レベル５のためのＲＡＭの各エントリに対するビットの数は、同様の理由で１３に増加する。さらに、８１９２個（即ち２13）の固有ノード、即ち４ビット比較器をサポートするためにはレベル２乃至レベル５のためのＲＡＭの各々のロケーションの数を２倍にしなければならない。即ち、全部で589,824個のメモリロケーションのために、ＳＭＡデバイスは65,536個のメモリロケーションのＲＡＭを１つと、131,072個（即ち２17）のロケーションを有するＲＡＭを４つ含む。上述したように、メモリロケーションの各々は１３ビット、即ち1.625バイトを含む必要がある。即ち、デバイスに要求される全メモリは958,464バイト（即ち、589,824個のロケーション×１ロケーション当たり1.625バイト）である。即ち、この特定の実現に対し、サポートされるエントリの最大数を２倍にするとロケーションの数は１．８倍になり、バイト数は2.089倍となる。
【００５１】
上述から判るように、ある最大数の別個のエントリのためのスキャッターメモリアクセスデバイスを実現するのに必要とされるメモリの総量は３つのファクタに依存する。即ち、エントリの数、１エントリ当たり必要なメモリロケーションの数、そして１ロケーション当たりに必要なビット数である。図１０との関連において以下に詳細に記載するように、１エントリ当たりのメモリロケーションの最悪な場合の数は、デバイスのレベルの数に依存するだけでなく、未使用ロケーションと既使用ロケーション(unused locations and used location)との最悪な場合の比にも依存する。
【００５２】
アークのアドレス割当とＲＡＭ１０１乃至１０５の読み込みを管理するために、同じ設備、例えば同じ処理システム上で手順を実行しなければならない。処理システムにおけるディスクスペースや他のメモリリソースの割当を管理するために使用される現存のメモリ管理技術や他の応用は、アークアドレス割当やスキャッターメモリアクセスＲＡＭの読み込みを取り扱うのに適している。上述したように、ＲＡＭはいかなる特定の形式で読み込まれる必要はない。むしろ必要なのは、エントリがデバイスに付加される毎にノードを形成してアーク割当を生成するようＲＡＭが更新され、追加されたエントリと同じ値を有するサーチオブジェクトが供給されたときにデバイスが一致を示すようにすることである。即ち、生成された追加のノードの各々に対し、必要なのは、関連するＲＡＭにある空のメモリロケーションが新しいノードのために見出され、新しく追加されたノードへ割り当てられたメモリロケーションへ適切なオフセットを提供する値を有するアークアドレスで前のメモリを更新することである。
【００５３】
ＳＭＡデバイスの有利な構成は、新しいエントリが追加あるいは削除されたときにデバイスを更新するのに必要なコストが最小である点にある。図３に示される例示的な実施例においては、５つの新しいノードとアークがエントリのために形成されるときに、エントリの更新のための最も悪い場合のコストを招く。即ち、デバイスを更新するための最も悪い場合のコストは５つのメモリがＲＡＭ１０１乃至１０５の各々へ書き込むことを含む。デバイスはエントリを追加し、削除しまたは変更するために主要な再構成を必要としない。最も悪い場合のコストがデバイスのレベルの数によって単独に決定され、記録されているエントリの数に基づいて増加はしない。エントリを取り除くには、取り除かれるエントリと等しい値を有するサーチオブジェクトに対するミスを示すようにＲＡＭに書き込むことだけが要求される。繰り返すが、エントリを取り除くための最も悪い場合のコストは、取り除かれるエントリに対する固有のアークアドレスが以前記録されていたメモリロケーションに０を導入するために、５つのメモリがＲＡＭ１０１乃至１０５の各々にそれを書き込むことを含む。即ち、図３に示されるスキャッターメモリアクセスデバイスの更新は、最悪でも、新しく追加されるかまたは取り除かれるエントリに対する５つのメモリの書き込みを要求するだけである。
【００５４】
図３に記載の特定の実現は、単なる例示的な目的のためにのみ提供されることを理解すべきである。本願発明のスキャッターメモリアクセスデバイスを類似的に実行して、いかなるビット長を有するサーチオブジェクトの検索を実行することができ、そして３２ビット目的物を検索することをデバイスが強いられているものでもない。レベル１において１６ビットを比較し、後に続くレベルの各々で４ビットを比較するようデバイスを実現してはいるが、多数の他の実現もまた可能である。例えば、図３に示す実施例のままで、レベル１において１６ビットを比較するのではなく、各レベルで４ビットのみを比較することによって追加のレベルを生成することも可能である。逆に、後の任意のレベルにおいて４ビット以上のビットを比較することによって数個のレベルを生成しても良い。さらに、各レベルで比較されるビットの数を偶数に強いるものではない。スキャッターメモリアクセスデバイスは数多くの異なる構成で実現が可能である。必要なのは、サーチオブジェクトの各ビットがデバイスレベルのうちの１つにおいて比較されることである。
【００５５】
ＳＭＡデバイスが任意の応用において最もよく実現される手法を決定するのに重要なファクタは、メモリ消費と同様に、検索と更新の速度である。各レベルにおいて同時に比較されるビットが多ければ多いほど、最も悪い検索の速度となる。例えば３２ビットの目的物を検索するＳＭＡデバイスが２つのレベルで実行され、その各々が１６ビットを比較するときには、検索は２つのレベルで実行され、２つのメモリアクセスのみが要求される。しかしながら、この手法で実現されるときには、より多くのメモリが必要になる。なぜなら、レベル２は4096個の１６ビットメモリ比較器の実現を必要とするからである。逆に、各レベルでより少ないビットを比較するときには、メモリ消費の減少は実現され得るが、それはレベルの数が増加する、その結果として検索を行うのに必要な時間が増加するコストにおけるものである。即ち、ＳＭＡデバイスが実現される特定の手法は、特定の応用に対する上述した特徴のバランスに依存するのである。
【００５６】
３２ビットのサーチオブジェクトの検索を実行し、4095個の固有エントリをサポートするＳＭＡデバイスの代替実施例が図４に示されている。図４の実施例は、多くの点において図３の実施例と類似する。デバイスは５つのレベルに分離され、レベル１はサーチオブジェクトの最初の１６ビットを試験し、残りのレベルの各々は４ビットを試験する。しかしながら、図３の実施例のＲＡＭ１０１乃至１０５は単一のＲＡＭ１０６に置き換わっている。ＲＡＭ１０６が５つのページに分割され、ページ１は図３のＲＡＭ１０１の機能を実現し、ページ２はＲＡＭ１０２の機能を実現する、等である。カウンタ１０８は上位の３アドレスビットをＲＡＭ１０６へ提供し、どのページがアクティブかを選択する。即ち、ＲＡＭ１０６は図３に示されるＲＡＭ１０１乃至１０５の各々よりも８倍大きい。ＲＡＭ１０６は、図３の実施例で用いられるメモリロケーションの数を２倍にするためには５倍だけ大きい必要があるが、５つのページの間で区別するために３ビットを用いるには、８つ（２3）の固有ページを用いる必要がある。ＲＡＭ１０１乃至１０５に対応する個別ページへＲＡＭ１０６を分割することは、ＲＡＭ１０６を更新するメモリ管理の必要性を簡略化し、図３に示される実施例と同じ方法でメモリを管理することができる。
【００５７】
図４に示された実現もまた５つのエントリの１６ビットマルチプレクサ（ｍｕｘ）１１０を含む。ｍｕｘ１１０はメモリのどのページが現在アクセスされているかを示す、カウンタ１０８から出力された３ビット出力を受信し、サーチオブジェクトとＲＡＭ１０６の出力上に提供される計時レジスタ１１２とからの入力の対応するビットを選択する。図４のスキャッターメモリアクセスデバイスを用いる検索には５つのクロックサイクルを必要とする。第１のサイクルにおいては、カウンタ１０８が初期化されてレベル１を選択し、ｍｕｘ１１０は、サーチオブジェクトの上位１６ビットをＲＡＭ１０６のアドレスへ送る。ＲＡＭ１０６は応動して、図３の実施例との関連で上述した手法で１２ビットのアークのアドレスをレベル２のノードへ出力する。クロックサイクルの終わりにおいて、この１２ビットのアークのアドレスがレジスタ１１２に計時され、カウンタ１０８が増加する。即ち、第２のサイクルの間、ｍｕｘは、サーチオブジェクトのビット１６から１９と同様にレジスタ１１２に記録されたレベル２のアークのアドレスを選択し、これらビットをＲＡＭ１０６のアドレスへ供給する。従って、第２のサイクルにおいては、ＲＡＭ１０６は図３の実施例においてＲＡＭ１０２によって実行されたのと同じ機能を実行する。この手法においては、ｍｕｘ１１０とＲＡＭ１０６はレベル１乃至レベル５の各々を介して同時に歩調を合わせる(simultaneously step)ようにカウンタを増加させることによって、３２ビットのサーチオブジェクトの検索が５つのサイクルで実現される。
【００５８】
上述した本願発明のスキャッタメモリアクセスデバイスの実施例は検索を実現するために、速くてコスト的に有効である機構を提供する。しかしながら、他の実施例においてはスキャッタメモリアクセスデバイスの効率をさらに改良するためにさらなるステップを取る。ＳＭＡデバイスの非効率は、メモリ値の未使用、即ち、ミスで満たされたメモリロケーションから来る。この非効率が図５に概念的に示されており、図５はスキャッタメモリアクセスデバイスの例示的な実施例を通して、いくつかのノードの分配を説明する。図５においては、２16個（即ち、65,536）のメモリロケーションのブロック１２０がレベル１に示されており、アドレス"0001xxxx"、"2E38xxxx"、"910Axxxx"及び"FFFCxxxx"に対応する４つのエントリを記録する。同様に、レベル２における１６のメモリロケーションのブロック１２２は、アドレス"2E384xxx"と"2E38Exxx"に対応する２つの使用されたロケーションのみを含んでいる。図５から判るように、追加された１６個のロケーションメモリブロック１２３乃至１３６がレベル３、レベル４及びレベル５を介して分散されており、各ブロックはいくつかの未使用ロケーションを有する。大きなロケーションブロックの中で１つのエントリのみを使用するときに、メモリが最も非効率的に使用されることになる。図５に示された例示的な実施例においては、１６個のロケーションブロックの中の１つのエントリのみが使用され、未使用ロケーションと既使用ロケーションの１５／１の比率が生じたときに最も非効率的である。本願発明のＳＭＡデバイスの代替実施例においては、メモリ消費を減少し、メモリ利用の効率を改善するためにマッピング能力が提供される。
【００５９】
図６はスキャッタメモリアクセスデバイスのメモリを介してノードを分配するさらに効率的な機構を概念的に示す。示された実施例においては、２つのエントリテーブルを用いてそこから発出される１つの非ミスアークのみを有するノード、即ちノード１４１乃至１５０の各々を実現する。即ち、これらノードの各々に対して１５の未使用（即ち、ミス）ロケーションで１６のエントリテーブルを用いるのではなく、より少ない２つのエントリテーブル、即ちノードを用い、これにより必要なメモリロケーションの総数を減少させる。２つのエントリテーブルにおいて、１のエントリは、次のレベルにおけるノードへの非ミスアークアドレスを記録し、他のエントリはミスアドレスを記録する。
【００６０】
２つのエントリテーブルの使用はスキャッタメモリアクセスデバイスにおけるメモリ使用の効率を向上させる。ＳＭＡデバイスが図６に示された機構を用いて実現されるときには、メモリはノードに対して非効率的に使用され、１６のロケーションブロックの２つのエントリ、即ちノード１５２と１５４のみが使用される。即ち、未使用ロケーションと既使用ロケーションの最悪の場合の比は、図５に示された実現に対する１５／１から、図６で示された実現に対する７／１（即ち１４／２）に減少する。上述したように、未使用ロケーションと既使用ロケーションの最悪の場合の比を減少することは、任意の数のエントリをサポートするＳＭＡデバイスを実現するのに必要なメモリの総量の減少に帰着する。
【００６１】
図７は、以下に記載する追加の機能を有する、２つのエントリテーブルを実現することができるスキャッタメモリアクセスデバイスの実施例のブロック図である。図７に示される実施例は、図４で示されるものと多くの点で類似する。単一のＲＡＭ１６０が５つのページに分割され、各ページがレベル１乃至レベル５の１つを実現する。カウンタ１６２は上位の３アドレスビットをＲＡＭ１６０に供給し、どのページがアクティブであるかを選択する。５入力の４ビットマルチプレクサ（ｍｕｘ）１６４は、メモリのどのページがアクセスされているかを示す、カウンタ１６２から出力された３ビットを受信し、サーチオブジェクトからの入力の対応するビットを選択する。計時されたレジスタ１６６がＲＡＭ１６０の出力に提供され、各クロックサイクルの終了においてＲＡＭの出力を記録する。即ち、図４に示された実施例と同様に、図７のスキャッタメモリアクセスデバイスの検索は５つのクロックサイクルを必要とし、１サイクル毎にレベル１からレベル５を処理する。
【００６２】
図７に示された実施例は、サーチオブジェクトのビット０から１５と、ｍｕｘ１６４の４ビット出力と計時されたレジスタ１６６の出力とを受信し、これら値をＲＡＭ１６０に対するアドレスにマッピングする。マッピングファンクション１６８は、サーチオブジェクトの４ビットと非ミスエントリの対応するビットとの比較を他の機能の間で実行し、比較の結果に基づいて、２つのエントリテーブルの適切なエントリにアドレスをマッピングすることによって、２つのエントリテーブルを実現する。
【００６３】
マッピングファンクション１６８をサポートするために、ＲＡＭ１６０から出力されたビットの数を２０に増加する。２つのエントリノードをトリガするアークの各々は、サーチオブジェクトの関連するビットをマッピングファンクション１６８によって比較することができることに備えてエントリのアドレスの４ビットを含む。例えば、ノード"2E384B4X"を表すレベル４の２つのエントリノード１４５（図６）を考える。このノードが、レベル３のメモリロケーション１７０によって生成されたアークによってトリガされる。即ち、ビット２４乃至２７も"４"に等しくない限り、ビット０から２３が"2E384B"に等しい任意のサーチオブジェクトがミスにマップされる。マッピングファンクション１６８は、ノード１４５のような２つのエントリノードに対する４ビット比較を実行し、サーチオブジェクトのビット２４から２７が非ミスエントリと一致するかどうかを決定する。レベル４においてマッピングファンクション１６８に４ビット比較を実行させるために、メモリロケーション１７０（これは２つのエントリノードを鳥がするレベル３ノードを実現する。）は"４"に等しい４ビットの出力を含む。ＳＭＡデバイスが、"2E384BXX"に等しいアドレスを有することを見出されたサーチオブジェクトを比較する４番目のサイクルにあるとき、ｍｕｘ１６４は、サーチオブジェクトのビット２４から２７をマッピングファンクション１６８へ送る。マッピングファンクション１６８はまた、サーチオブジェクトのビット２４から２７が比較されることに備えて、計時されたレジスタ１６６を介して、"４"の値を有する４ビットをメモリロケーション１７０から受信する。即ち、マッピングファンクション１６８はこれらビットに備えて４ビット比較を実行し、サーチオブジェクトビットが"４"に等しいときには、メモリロケーション１７２が記録されたところでアドレスを出力し、ノード"2E384B4X"がＳＭＡデバイスで見出されたことを示す。これとは反対に、サーチオブジェクトのビット２４乃至２７が"４"と等しくないときには、マッピングファンクション１６８はメモリロケーション１７３のアドレスを出力し、これにより、ミスが生じたことを示す。即ち、マッピングファンクション１６８は、２つのメモリロケーション１７２と１７３のみを用いてノード１４５を実現するのであって、図４に示される実現で用いられる全１６のメモリロケーションを用いるのではない。
【００６４】
通常の論理デバイスを用いた種々の異なる方法で、マッピングファンクション１６８を実現することができる。例示的な実現が図８に示されている。マッピングファンクション１６８は、計時されたレジスタ１６６から２０ビット、ｍｕｘ１６４からは４ビット、サーチオブジェクトのビット０から１５、そしてカウンタ１６２の３ビット出力を受信する。レジスタ１６６から受信した２０ビットが以下のように分配される。（ｉ）次のノードが記録されているアドレス（これらアドレスビットは図４に示されている実施例の計時レジスタ１１２から出力された１２ビットと同じ機能を取り扱う）に対する上位オフセットを提供するアークアドレス１８０の１２ビット、(ii)次のノードが２つまたは１６のエントリテーブルで実現されるかどうかを特定するのに用いられる１ビットの制御ビット１７０、(iii)次のノードが２つのエントリのみを含むときにサーチオブジェクトのビットが比較されることに備える４ビット１８４、そして(iv)ノードが２つのエントリのみを含むときに次のノードへのオフセットアドレスの中間ビットを供給する３ビット１８８。
【００６５】
図４に示された実施例で用いられる１６ビットｍｕｘ１１０とは対照的に、図７の実施例におけるｍｕｘ１６４はたったの４ビット幅である。即ち、サーチオブジェクトの上位１２ビットとレジスタ１６６から出力されたアークアドレスの１２ビットとが各々マッピングファンクション１６８へ直接入力される。マッピングファンクションは、これら２つの１２ビット入力の間で選択する１２ビットｍｕｘ１７９を含む。ｍｕｘ１７９の出力がカウンタ１６２の３ビット出力によって制御される。
【００６６】
カウンタが、レベル１が処理されていることを示すときに、ｍｕｘ１７９はサーチオブジェクトの０から１５のビットを選択してパスする。しかし、カウンタ１６２が、レベル２−レベル５のいずれかが処理されているときは、ｍｕｘ１７９はレジスタ１６６から１２ビットアークアドレスをパスして選択する。このようにして、ｍｕｘ１７９は図４の実施態様に使用される高位の１２ビットと同じ機能を実行する。ｍｕｘ１７９の１２ビット出力はマッピングファンクション出力１７８の１２の高位ビットを提供する。
【００６７】
制御ビット１７０は４ビットｍｕｘ１７２の選択入力に結合される。制御ビット１７０が、次のノードが２エントリテーブルで実行されることを示すときに、ｍｕｘ１７９はｍｕｘ１６４から出力されるサーチオブジェクト１７４の４つのビットを選択してパスする。ｍｕｘ１７２の４ビット出力はマッピングファンクション出力１７８の４個の下位ビットを提供し、その１２個の高位ビットは上述の態様でｍｕｘ１７９によって提供される。従って、制御ビット１７０が、次のノードが２エントリテーブルを含まないことを示すときに、マッピングファンクションは、図４に示される本発明の実施態様から出力される１６ビットのアドレスと同一である１６ビットの出力を生成する。従って、レベル１では出力１７８はサーチオブジェクトのビット０から１５を提供し、レベル２−レベル５では出力１７８は１６エントリテーブルへ１２ビットアークアドレス、並びにサーチオブジェクトの関係ビットからの４ビットインデックスを提供する。
【００６８】
図８を参照して、マッピングファンクション１６８も４ビットコンパレータ１８２を含み、それはｍｕｘ１６４から出力されるサーチオブジェクトの４個のビットとレジスタ１６６から出力される４個のビット１８４（２エントリテーブルに記憶されるノンミスエントリの関係ビットの値を示す）とを比較する。コンパレータ１８２はサーチオブジェクトの４個のビットがノンミスエントリの関係ビットに一致するかどうかを示す１ビット出力を生成する。制御ビット１７０が、次のノードが２個のエントリだけを有することを示すときに、ｍｕｘ１７２はコンパレータ出力１８６を、レジスタ１６６から出力される３個の中間オフセットアドレスビット１８８と共に選択してパスする。従って、コンパレータ出力１８６は１ビットインデックスを２エントリテーブルに提供して一致を示すメモリロケーションかまたはミスを示すメモリロケーションのいずれかを選択する。１ビットインデックスだけが使用されるので、２エントリノードをトリガするアークアドレスは、ＲＡＭ１６０にアドレスするためにオフセットの１５個のビットを提供する。１５ビットのオフセットは、２エントリテーブルにのみ使用される３個の中間アドレスビット１８８と共に、テーブルのエントリの数にかかわらず高位１２ビットのオフセット１８０によって提供されている。３個の中間ビット１８８はコンパレータ出力１８６に連結され、制御ビット１７０が２エントリテーブルの使用を指示するときにｍｕｘ１７２を通過する４個のビットを形成する。上述のように、ｍｕｘ１７２のこの４ビット出力１７６は、低位アドレスビットをＲＡＭ１６０に提供する。
【００６９】
上述のように、マッピングファンクション１６８は多くの他の方法で既知の論理設計技術を使用して実行され得る。図６に示される特定の実施形態は図示のためにだけ提供される。なぜなら、マッピングファンクションは２エントリテーブルの使用を可能にする態様の理解を容易にするからである。本発明は、この特定の実施形態に限定されない。
【００７０】
上述の態様において、２エントリテーブルを使用するほかに、他の中間サイズのテーブルを使用することによって、さらに別の効率の増加が達成できる。例えば、マッピングファンクション１６８もまた４及び８エントリテーブルを、上述の２及び１６エントリテーブルに加えて実行するために使用できる。この増大した融通性を支持するために、追加の制御ビットをＲＡＭ１６０の横に加えることができる。従って、２エントリテーブルの実施形態に関連して記載した上記原理に従うことによって及び必要な場合には標準的な論理設計技術及び追加の制御ビットを使用することによって、マッピングファンクションもまた４及び８エントリテーブルを実行できるよう作成できる。例えば、多数のノンミスエントリがあるときに、マッピングファンクションの４ビット比較を実行する簡易な方法は、ＲＡＭに１６個（すなわち、２4）の指令ビットを加えることである。各指令ビットは、サーチオブジェクトの４個のビットが表現できる可能な１６値の１つに割り当てられ、ノンミスエントリに対応するそれらの値のみが”１”に設定される。各々の指令ビットは１６対１デマルチプレクサの各入力の源であり、それらの選択ビットはサーチオブジェクトの４個の関係ビットを受け取る。従って、デマルチプレクサの出力は、サーチオブジェクトの４個の比較ビットがノンミスエントリの１つに一致してデマルチプレクサが４ビットコンパレータとして動作するときのみ、”１”である。
【００７１】
もし、１６、８、４、及び２のエントリテーブルがすべて使用されると、ＳＭＡデバイスの効率が増加する。この実施形態の４、８、１６エントリテーブルの最も非効率的な使用は各々、図９（ａ）−（ｃ）に示され、使用ロケーションはクロスハッチングで示される。図９（ｃ）から分かるように、８エントリテーブルが使用されると、１６エントリテーブル１９０の最も悪い場合の使用は７／９（未使用ロケーション対使用ロケーション）の比率である。同様に、図９（ｂ）は４エントリテーブルが使用されると、８エントリテーブル１９２の最も悪い場合の使用は１／３（未使用ロケーション対使用ロケーション）である。図９（ａ）−（ｃ）から分かるように、最も効率の悪いテーブルは、テーブルサイズのこの範囲が使用されるときは、依然として７／９の未使用対使用比率を有する１６エントリテーブル１９０である。しかしながら、この比率は、２及び１６エントリテーブルのみが使用される場合の最も悪い場合の比率より小さく、従って、２、４及び８エントリテーブルを使用すると、ＳＭＡデバイスの効率を増大させ、所定数のエントリを支持するＳＭＡデバイスを実行するのに必要な最も悪い場合のメモリ量を減少させる。
【００７２】
図１０は、エントリにつき要求されるメモリロケーションの数は、２、４、８及び１６エントリテーブルを支持するマッピング能力を有するＳＭＡデバイスにとって計算できる態様を示す。レベルＡの４個のメモリロケーションのブロック２００が３個のロケーションのみ使用される最も悪い形態において示される。従って、４個のメモリロケーションは３個のエントリのみを実行するために使用される。従って、レベルＡのこれら３個のエントリを実行するためのエントリについてのコストは４／３すなわち１．３３である（すなわち、１と１／３は未使用ロケーションに割り当てられる）。レベルＡの３個のエントリの１つは、８エントリノード２０４に対するアークアドレス２０２をレベルＢにて含む。ノード２０４は、５エントリのみが使用される最も悪い場合の８エントリ形態である。レベルＢのノード２０４を実行するためのエントリについてのコストは８／５すなわち１．６（すなわち、１と３／５は未使用ロケーションに割り当てられる）である。また、ノード２０４の各々の５エントリもまたノード２００の１個のメモリロケーションの割り当てを要求する。しかしながら、このレベルＡのメモリロケーションは５個のエントリによって共有される。従って、エントリについてのコストはレベルＡのエントリの（４／３）／５にレベルＢの８／５を加えて、合計１．８７に等しい。
【００７３】
レベルＢの５個のエントリの１つはレベルＣの８エントリノード２０８へのアークアドレス２０６を含む。ノード２０８もまた５個のエントリのみが使用される最も悪い場合の８エントリ形態である。ノード２０８を実行するためのエントリについてのコストは、レベルＡの（（４／３）／５）／５にレベルＢの（８／５）／５及びレベルＣの８／５を加えて合計１．９７に等しい。レベルＣの５個のエントリの１つはレベルＤの４エントリノードへのアークアドレス２１０を含む。ノード２１２は３個のエントリのみが使用される最も悪い場合の４エントリ形態である。ノード２１２を実行するためのエントリについてのコストはレベルＡの（（（４／３）／５）／５）／３にレベルＢの（（８／５）／５）／３、レベルＣの（８／５）／３及びレベルＤの４／３を加えて、合計１．９９に等しい。
【００７４】
上記から分かるように、ＳＭＡデバイスを実行するためにエントリについて要求されるメモリロケーションの平均数は内部に記憶されるエントリのビット数の増加で増加する。しかしながら、図１０に示される例によって例示されるように、各ノード毎の未使用ロケーション対使用ロケーションの最も悪い比率が１未満であるかぎり、エントリについてのコストは２を越えない。ＳＭＡデバイスのこの特性は以下に証明される。
【００７５】
レベルＮ＋１のノードのエントリＸN+1についてのコストは次の再帰的定義により定義され、ＡはレベルＮ＋１のノードのエントリの数を示し、ＢはノードＮ＋１のノンミスエントリの数を示し、ＸNはノードＮのエントリについてのコストを示す。
ＸN+1＝（Ａ＋ＸN）／Ｂ
【００７６】
この式は、帰納法により次のように非再帰項で書き換えることができる。
0003672822.tif 000002
【００７７】
参照により本願に組み込まれる、グラシュエン及びリズイックの「積分、数列、及び積のテーブル」、アカデミックプレス、１９６５年（英訳）において記載されるように、次の関係は真を維持する。
0003672822.tif 000003
【００７８】
従って、
Ｘ∽＝（１／Ｂ）Ｘ（Ａ／（１−１／Ｂ））
であり、
Ｘ∽＝Ａ／（Ｂ−１）
に減少する。
【００７９】
上述のように、２、４、８及び１６エントリテーブルが使用されるシステム内の最も効率的でないメモリの使用は、９エントリのみが使用される１６エントリテーブルに対してである。係る実施のために、Ａは１６に等しくかつＢは９に等しい。これらの値が上で与えられた式に代入されると、エントリについての最も悪い場合のメモリロケーションは、一定の数のビットを有するエントリを有するＳＭＡデバイスに対してさえも２を越えないということが分かる。エントリの数に使用されるメモリロケーションの数のこの制約は意義を有する。なぜなら、このことは適切なレベルでメモリ使用を維持するのに最も重要な要因となるからである。ＭＳＡデバイスを実行するのに要求されるメモリ総量はまた各メモリロケーションに記憶されるビットの数に依存するが、メモリ横に単一ビットを加えると、一群のアドレスビットによって生成され得るアドレスの数を２倍に、またはマッピングファンクションにより実行され得るファンクションの数を２倍にし、それによってかなり大きい機能的な能力を所要メモリ量を大きく増大させることなく提供する。
【００８０】
２、４及び８エントリテーブルが、スキャッターメモリアクセスデバイスの効率を増大させるとして特に記載されたが、奇数のエントリを有するテーブルを含む、１６エントリより少ないいずれのテーブルも同じ結果を提供する。２、４及び８エントリテーブルは図示のためにのみ例として使用された。また、上述のように、本発明のＳＭＡデバイスは各レベルの４ビットを比較することに限定されない。望ましいビットの任意の番号Ｄは所定のレベルで比較でき、そのレベルでの最大サイズのテーブルは２Dに等しい。２Dより小さい任意のサイズのテーブルもまた、上述の態様でデバイスの効率を増大させるためにそのレベルで実行できる。
【００８１】
Ｄビットが比較されるレベルで２Dより少ないテーブルの使用により、テーブル管理プロセスは幾分複雑になる。図示のために、図６を再び参照する。図６に示されるように、２エントリテーブル１４２は、ノード”２Ｅ３８６ＸＸＸ”を示すのに使用される。なぜなら、アドレス”０”がそこから流出するノンミスアークのみだからである。従って、エントリ”２Ｅ３８６０７７”が図６のＳＭＡデバイスに加えられたときに、メモリ管理体系はノード１４２を実行するのに２個のメモリロケーションのみを割り当てた。もし、アドレス”２Ｅ３８６０７７”及び”２Ｅ３８６２１２”を有する、２個の追加のエントリが順次図６のＳＭＡデバイスに加えられたならば、ノード１４２は拡張されねばならず、もはや２エントリテーブルとして、３個のノンミスアークがそこから流出されるので、実行され得ない。従って、２、４、８及び１６エントリテーブルのみが支持されると仮定すると、ノード１４２は、２メモリロケーションから４メモリロケーションに拡張される必要がある。従って、２個の新しいエントリが追加されたときに、テーブル管理体系はノード１４２を、４個の隣接するメモリロケーションが使用のために利用可能であったメモリのロケーションに再配置する必要がある。また、メモリ管理体系が次いで、ノード１４２によって前に使用された２個のメモリロケーションのエントリをそれらの２個のメモリロケーションが使用のために利用可能であったことを示すことによって「削除」する。これらの追加のメモリ要求は幾分より複雑であるけれども、これらのタスクを遂行することができる技術は公知であり、他の適用に使用されている。
【００８２】
増加したテーブルサイズを使用することによって得られた増加した効率は、テーブル管理の複雑性の増大を非常に補う。テーブル最大サイズを半分に増分的に分割するより小さいテーブルの使用は（例えば、１６のテーブル最大サイズに対して、８、４、２及び１のエントリのテーブルが使用される。）、任意のテーブルにおける未使用対使用ロケーションの最も悪い場合の比率が１／２未満であることを保証する。図１に関連して上述したように、この特徴は、いずれの数のエントリに対しても、ＳＭＡデバイスを実行するのに要求される最も悪い場合のメモリロケーションの数が支持エントリの数の２倍未満であることを保証する。
【００８３】
スキャッターメモリアクセスデバイスの効率は、さらにミスまたは失敗テーブルの使用により増大することができる。図６を参照すると、レベル４に含まれる３個の２エントリテーブル１４３−１４５の各々は、ミスが起こったことを示すことに専用のそれらのメモリロケーションの１つを有することが理解され得る。レベル４を実行するのに使用されるメモリロケーションの数は、各々のノード１４３−１４５がこの目的のために共通のアドレスを共有したならば、減少され得る。もし、このように実行されれば、マッピングファンクション１６８は同じメモリアドレスをミスがノード”２Ｅ３８４ＢＸＸ”、”２Ｅ３８６０ＸＸ”及び”２Ｅ３８Ｅ０ＸＸ”のいずれかから検出されるときにはＲＡＭ１６０にソース付けられる。従って、ミステーブルは種々のタイプのミスを示すアドレスを提供するよう実行され得る。多数のミスを表す失敗テーブルの使用により、図６に図示された２エントリテーブルは単一のノンミスエントリに軽減され得る。従って、ミスまたは失敗テーブルを実行するのに使用されるメモリロケーションに対して、単一のエントリを有するノードを実行するのに使用されるメモリロケーションの数は２から１へ半分に減少される。
【００８４】
失敗テーブルにおけるエントリの数は、適用により、そして失敗が起こったときに、種々の有用な情報が望ましいかどうかに依存して変動可能である。上記説明したように、本発明のサーチ技術は加重サーチを実行するのに有用であり、ミスが起こったときに、所定数のビットがサーチテーブルのいずれかのエントリに一致したかどうかを知ることが望ましい。加重サーチが望ましいシステムにおいては、失敗テーブルは複数のロケーションで実行でき、少なくとも１つのロケーションは各々のレベルに対応する。このようにして、レベル１からの失敗テーブルを参照する各ミスはマッピングファンクション１６８によって第１のミステーブルアドレスにマップでき、レベル２で起こる各ミスは第２のミステーブルアドレスにマップ可能である等々。結果として、種々のミステーブルロケーションはミスを決定する前に一致したビット数に関する情報を含む。しかしながら、各ミスが同じ態様で扱われ、ミスが起こるときに、追加の情報が取得され得ない適用においては、失敗テーブルは単一のメモリロケーションとして実行でき、各ミスが同じ失敗アドレスにマップできる。このように実行されると、失敗テーブルを実行するのにより少ないメモリロケーションですむ。
【００８５】
失敗テーブルが２エントリテーブルのサイズを減少させるために使用されるとして特に上述されるが、それは他のテーブルも同様に減少させるのに使用され得る。失敗テーブルにより、各テーブル毎に１つのエントリの節約ができる。なぜなら、ノンミスエントリのテーブルはミスを示すメモリロケーションを専用に設ける必要がないからである。この節約を成し遂げるためには、十分な指令ビットが、マッピングファンクションを制御するためにメモリ横に加えることができ、ミスが起こるときに、メモリアドレスは失敗テーブルにマップされる。
【００８６】
ＲＡＭ１６０（図７）及び１０６（図４）のロケーションの数はさらに、レベル１−レベル５の各々がメモリの別個のページに割り当てられるべきであるとする、前に仮定した制約を排除することによって減少させることができる。この制約は、図３に示される本発明の実施態様が単一のＲＡＭを使用するためにどの様に変換され得るかを説明するのに明瞭化かつ簡易化のために前もって仮定された。しかしながら、各レベルは別のページに割り当てる必要はない。むしろ、メモリは、テーブル管理体系がメモリロケーションを適宜の基礎に割り当てることが単にできるようにすることによって最も効率よく使用できる。所定レベルを実行するのに使用される各々のメモリロケーションがメモリにおいて隣接する必要がある理由はない。従って、メモリは使用効率を最大にする考えられる方法で組織できる。
【００８７】
図１１は、単一のＲＡＭ２２０がメモリの別個のページを各々のレベルに割り当てさせることなく上述の態様で実行される本発明のＳＭＡデバイスの別の実施態様を示す。図７の実施態様と同様に、図１１に示される実施態様はＲＡＭ２２０、クロックレジスタ２２６、４ビットｍｕｘ２２４、及びマッピングファンクション２２８を含む。しかしながら、図１１の実施態様は、サーチのどのレベルが実行されているかに基づいて、ｍｕｘ２２４の入力から選択するカウンタを含まない。むしろ、３個の指令ビットはＲＡＭ２２０の横に加えられ、ｍｕｘ２２４の選択入力にソース付けられる。このようにして、各ノードのメモリロケーションは次のサイクルの間にＲＡＭ２２０へのアドレスのソースを選択する指令ビットを含む。
【００８８】
本発明のスキャッターメモリアクセスデバイスは、サーチオブジェクトの対象のビット数がデバイスのエントリ毎に対象のビット数に一致されるサーチを実行するとして、図示して上述された。しかしながら、ＳＭＡデバイスもまた対象のビット数が正確に一致しないサーチを実行することができる。例えば、ドントケアは、所定のノードの２以上のエントリに次のノードに対して同じアークアドレスを生成させることにより、ＳＭＡデバイスによって容易に実行される。ドントケアの形態は、２４ビット値がＳＭＡデバイスの１６エントリノード２３０に記憶されかつ２進値”１１１０００１１１００００１００１０１Ｘ０１００”を有する図１２に示される。ここで、”Ｘ”は、ドントケアを表す。従って、このエントリは２４ビット値すなわち”Ｅ３８４Ａ４”及び”Ｅ３８４Ｂ４”を表す。図１２に示されるように、このドントケアは、ノード２３０のメモリロケーション”Ａ”及び”Ｂ”を次のレベルで同じノードアドレスへマップさせることによって容易に実行される。この能力により、スキャッターアクセスデバイスは、サーチオブジェクトの対象のビット数及びデバイスエントリが同一でないサーチを実行できる。
【００８９】
図面に示される実施態様の種々の変更及び改変は本発明の範囲内において行うことができることに理解されたい。従って、上記記載に包含され、そして添付図面に示されるすべての事項は限定的ではなく例示的な意味において解釈されることが意図される。
【図面の簡単な説明】
【図１】  ニューラルネットワークとして表される本発明のサーチ機構を示す。
【図２】  追加のサーチエントリを包含するように拡張された図１のニューラルネットワークを示す。
【図３】  本発明のスキャッターメモリアクセスデバイスの一態様のブロックダイヤグラムである。
【図４】  スキャッターメモリアクセスの第２の態様のブロックダイヤグラムである。
【図５】  １６エントリテーブルが用いられている一態様としてのスキャッターメモリアクセスデバイス中のメモリロケーションの分布を示す。
【図６】  ２つの１６エントリテーブルが用いられている一態様としての分散されたメモリーアクセスデバイス中のメモリロケーションの分布を示す。
【図７】  マッピングファンクションが実行されているスキャッターメモリアクセスデバイスの第３の態様のブロックダイヤグラムである。
【図８】  図７のマッピングファンクションの一実行例のブロックダイヤグラムである。
【図９】  ａは、種々のエントリサイズのテーブルに対する最悪ケースメモリ効率を示す。
ｂは、種々のエントリサイズのテーブルに対する最悪ケースメモリ効率を示す。
ｃは、種々のエントリサイズのテーブルに対する最悪ケースメモリ効率を示す。
【図１０】  エントリ当たりの最悪ケースのメモリロケーション数が、スキャッターメモリアクセスデバイスの一実行例に対して計算可能とされる仕様を示す。
【図１１】  与えられたノードに対するメモリアドレスのソースが、前記ノードからの指示ビットにより判定されているスキャッターメモリアクセスデバイスの第４の態様のブロックダイアグラムである。
【図１２】  ドントケアが、スキャッターされたメモリアクセスデバイスにより実行されている仕様を示す。
【図１】
0003672822.tif 000004
【図２】
0003672822.tif 000005
【図３】
0003672822.tif 000006
【図４】
0003672822.tif 000007
【図５】
0003672822.tif 000008
【図６】
0003672822.tif 000009
【図７】
0003672822.tif 000010
【図８】
0003672822.tif 000011
【図９】
0003672822.tif 000012
【図１０】
0003672822.tif 000013
【図１１】
0003672822.tif 000014
【図１２】
0003672822.tif 000015