JP3672822B2 - 知識ベースのサーチ方法 - Google Patents
知識ベースのサーチ方法 Download PDFInfo
- Publication number
- JP3672822B2 JP3672822B2 JP2000571370A JP2000571370A JP3672822B2 JP 3672822 B2 JP3672822 B2 JP 3672822B2 JP 2000571370 A JP2000571370 A JP 2000571370A JP 2000571370 A JP2000571370 A JP 2000571370A JP 3672822 B2 JP3672822 B2 JP 3672822B2
- Authority
- JP
- Japan
- Prior art keywords
- search object
- bits
- entry
- submap
- search
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims description 73
- 230000015654 memory Effects 0.000 claims description 220
- 238000013528 artificial neural network Methods 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 3
- 230000006870 function Effects 0.000 description 46
- 238000013507 mapping Methods 0.000 description 41
- 230000007246 mechanism Effects 0.000 description 20
- 238000007726 management method Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 102200093465 rs1169288 Human genes 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 230000001960 triggered effect Effects 0.000 description 4
- 238000013459 approach Methods 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000007423 decrease Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000013144 data compression Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006698 induction Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
Images
Description
<技術分野>
本出願は、発明の名称が「サーチ方法及び装置」とする出願番号No.08/141,245 (1993年10月22日出願)の継続出願に該当し、現在取り下げられている。
【0002】
本発明は、知識ベースのエントリを組織するため、及び、サーチ対象のエントリのいずれかに一致するか否かを決定するための知識ベースの検索のための方法及び装置に関する。
【0003】
<発明の背景>
サーチ対象物の一致又は矛盾を決定するための知識ベースのサーチは、多くの異なるアプリケーションのタイプに対して要求される重要な点である。 例えば、データベース修正、 エクスパートシステム、 ロボティック及びステート制御方法、例えば音声及びイメージ認識を含む信号認識、例えばブリッジング、ルーティング及びスイッチングに適用するためのプロトコルプロセシング及びデータ圧縮を含む通信、自然言語認識システム、モデリングオペレーション、パーサー及びコンパイラの適用にあっては、高速のサーチを行う上で、非常に期待されている。従って、かなりの研究がサーチのより良い方策を見つけだすためになされている。
【0004】
サーチ機構の有効性は、3つの要素(しかし関連した特性を有する)に基づいて評価できる。第1は、知識ベースを実行するために要求されるメモリの点でのサーチ機構のコストが最小にされるべきである。第2に、サーチを完結するために要求されるもっとも多くかかった時間により決定されるサーチ機構のスピードが、最大に高速化されるべきである。一般的に、サーチ機構は、それぞれ完結のための所定の時間を与える複数のステップ及びサイクルにおいて実行される。従って、サーチの完結のための最大の時間は、最悪の場合のステップ及びサイクル数を最小にすることにより減少される。最後に、エントリを追加又は削除するための知識ベースの更新に関連したコストが、最小にされるべきである。典型的には、知識ベースが更新される場合、同時にはサーチを実行することは出来ない。いずれのサーチ機構の有効性も、与えられた時間内で実行することが出来るサーチ数にもとずく故に、知識ベースを維持するために費やす時間は、最小にされるべきである。
【0005】
多くのアプリケーションにおいて、サーチが多くのビット数を有するサーチオブジェクトに対して行われる。そういった適当の例は、コミュニケーションシステムにおけるブリッジである。典型的なコミュニケーションシステムは、複数のコネクションにわたって通信する多数のデバイスを含む。典型的には、そのようなシステムは、各ローカルコネクションと連動する限定数のデバイスのみを有する複数のローカルコネクションにおいて体系づけられる。ブリッジのネットワークは、各デバイスが同じローカルコネクションと連動しない他のデバイスとコミュニケート出来ないようにローカルコネクションを相互接続するために用いられる。各ローカルコネクションは、外部トラフィックはもちろん、ローカルコネクション上のトラフィック(システム中のいずれか他のコネクション上のトラフィック)をモニタする関連するブリッジを有する。ブリッジが、外部トラフィックがローカルコネクションにおけるデバイスに対して割り当てられたと判断した場合、ブリッジは、情報がローカルコネクションを通過することを許容する。同様に、情報がローカルコネクションから外部の宛先へ割り当てられる場合は、ブリッジは情報がローカルコネクションから通過することを許容する。
【0006】
典型的には、デバイスは、ソースからシステムにわたる宛先への情報のパケットを移動することにより通信する。パケットは、典型的には、パケットソース及び宛先デバイスのアドレスを認識するビット(48ビットのオーダ)を包含する。各ブリッジは、関連するローカルコネクションにおけるデバイスのそれぞれに対してエントリをともなう知識ベースを管理することによりローカルに及び外部的にトラフィックを監視する。従って、ブリッジによりもたらされる機能は、割り当てられたパケットを外部的に受信することであり、更に48ビットの宛先アドレスがローカルコネクションに位置されたいずれのデバイスとも一致するか否かを判断するための知識ベースのサーチを行うことである。従って、サーチオブジェクト(即ち、宛先アドレス)は、248又は280兆になる得るアドレスに等しい値を有する。しかしながら、ビレッジ知識ベースにおけるエントリ数は、関連したローカルコネクション上のデバイス数に等しものにすぎず、従って、280兆よりはるかに少なくなる。
【0007】
上記から明らかなように、ブリッジを行うアプリケーションの要求を満たすために、サーチ機構は、膨大な数値を有することが出来るサーチオブジェクトにて動作する必要があり、相当に下まわる知識ベースエントリ数をサーチしなければならない。この特徴は、多くのサーチアプリケーションにおいて典型的である。しかしながら、従来のサーチ技術は、そのようなサーチを行うために特によく適合されたものではない。
【0008】
サーチ機構を実行するための技術の例としては、ダイレクトメモリアクセスを使用することが挙げられる。そのような機構の下では、メモリは、サーチオブジェクトが有するフルセットの可能値に等しいエントリ数を記憶する能力を有するように提供される。従って、上記のように、48ビット宛先アドレスは、48ビットアドレスを有する知識ベースメモリを直接にアドレスするために使用される。そういったサーチ機構は、各サーチが48ビットアドレスがメモり中の各エントリに直接アクセスするために1ステップ又はサイクルにて行われるサーチ及び更新を顕著に高速にする。しかしながら、サーチオブジェクトが多くのビット数を含む適用にあっては、可能なサーチ値のフルセットをサポートするためのメモリのコストが、非実用的なサーチ機構を作るほどに大きなものとなる。例えば、上記したようなブリッジの適用を行うためにダイレクトメモリアクセスを用いるために、知識ベースメモリは280兆(即ち248)のエントリを含むことが必要である。従って、大量のメモリが必要とされる故に、ダイレクトメモリアクセスは、サーチオブジェクトが多くのビット数を含むサーチ適用においての使用のためには実用的ではない。
【0009】
知識ベースが一時的にストアされる最大数のエントリにより拘束される他の従来のサーチ技術が開発されている。情報(Informed)サーチは、そういったサーチ技術の例である。情報サーチは、知識ベースメモリの複数のルックアップを用いることにより行われる (ルックアップの結果は、次のルックアップのためのメモリアドレスを決定するために使用される)。バイナリサーチは、情報サーチの例である。バイナリサーチシステムにおいては、知識ベースにストアされたサーチエントリのすべてがアドレスによりソートされる。与えられたサーチオブジェクトをサーチするために、そのオブジェクトは、はじめに知識ベース内に記憶されたエントリと比較される。もし、サーチオブジェクトが中間のエントリと一致しないときは、次に比較がなされるエントリに関する判定が情報化(informed)されたものであるように、サーチオブジェクト値の高低に関する指示が与えられる。次いで、このサーチオブジェクトは、中位のエントリと上位又は下位のエントリの間に記憶されたエントリと比較される。この方法においては、サーチ機構は、一致又は不一致が判断されるまで、半分に残りのエントリを分割することを続ける。
【0010】
知識ベースが、サーチオブジェクトが有する、可能なエントリ値に対応するエントリを記憶するために十分なメモリを有することよりむしろ、一時的に現実に記憶されるエントリの最悪の数を記憶するために十分なメモリを包含することのみが必要である故に、バイナリサーチは、ダイレクトメモリアクセス機構のおいて利点を有する。しかしながら、実行の費用は、サーチスピード及びエントリの追加/削除のための知識ベースの更新のために支払われることになる。バイナリサーチシステムにおいては、知識ベースにおけるエントリの関連した位置づけは、それが情報化(伝達)されるべきサーチを可能にするものであるがゆえに重要である。従って、知識ベースが比較的低い値を有するエントリで更新された場合には、知識ベースにおけるエントリのそれぞれが、それらのポジションを調整し直すために更新することを要求することが可能である。従って、知識ベースを更新するためのコストは、規則されたエントリ数との関数であり、最悪の数のケースの場合には、記憶されたエントリ数に等しくなる。加えて、バイナリサーチのために要求される最悪の時間もまた、ダイレクトメモリアクセス機構のためのそれよりも大きい。1ステップ又はサイクルごとにサーチを行うことではなく、バイナリサーチに要求される最悪のサイクル数は、知識ベースにおけるエントリ数Nの関数であり、log2Nに等しい。
【0011】
サーチスピード増大を図る場合に、知識ベースエントリがハッシングテーブルにストアされるようなハッシング技術を組み入れている。ハッシングテーブルは、早期一致検出の可能性の改善を図る場合に、非1対1のマッピングを使用する。しかしながら、このマッピングが用いられる故に、1回以上のサーチエントリは、ハッシングコリジョン(collision)をおこす、シングルアドレスへマッピングすることが出来る。従って、ハッシング機構は、コリジョンを解決するいくつかのメカニズムを包含しなければならない。ハッシングコリジョンの解決が、一般的に追加のルックアップを必要とすることから、コリジョンはハッシングテーブルのサーチは行われることが出来るスピードに大きく減少できる。
【0012】
以上を考慮して、本願発明は、サーチの方法及び装置を提供することを目的とする。
【0013】
<発明の要約>
上記目的は、以下の本願発明の一態様により達成される。
知識ベースがサーチオブジェクトに一致するエントリを含むか否かを判定するために知識ベースをサーチするための方法及び装置が提供され、サーチオブジェクトは複数のビットを含み、知識ベースは複数のビットをそれぞれ含む複数のエントリを有し、各エントリの各ビットは複数のサーチオブジェクトビットの内の一つに対応する。本発明の態様によれば、少なくとも一つのサーチオブジェクトビットが選択され、その選択された少なくとも一つのサーチオブジェクトビットは選択されたビットパターンを表す。判定は、知識ベースがサーチオブジェクトの少なくとも一つの選択されたビットに対応する少なくとも一つのビットにおける選択されたビットパターンを表すエントリを含むか否かについて行われる。知識ベースが少なくとも一つの部分的に一致したエントリを含まないことが判定された場合、サーチオブジェクトに対する一致していないことの指示がなされ、サーチは終了する。知識ベースが少なくとも一つの部分的に一致したエントリを含むことが判定された場合は、すべての部分的に一致したエントリのグループ(以下「サブマップ」という。)が認定される。次いで、少なくとも一つの以前に選択されなかったサーチオブジェクトビットが選択される(少なくとも一つのサーチオブジェクトビットはターゲットビットパターンを表す。)。判定は、グループ(又はサブマップ)が、サーチオブジェクトの少なくとも一つの以前に選択されなかったビットに対応する少なくとも一つのビットにおけるターゲットビットパターンを表す少なくとも一つの部分的に一致したエントリ含むか否かを判定することにより、その部分的に一致したエントリのグループが少なくとも一つの更に部分的に一致したエントリを含むか否かについて行われる。部分的に一致したエントリのグループが、少なくとも一つの更に部分的に一致したエントリを含まないことが判定された場合は、サーチオブジェクトに対する一致がなされていない旨の指示がなされ、サーチは終了する。部分的に一致したエントリのグループが少なくとも一つの更に一致したエントリを含むことが判定された場合には、部分的に一致したエントリのグループはアップデートされ、更に部分的に一致したエントリのみを認識する。判定は、サーチオブジェクトの各ビットが選択され、それが有するか否かについて行われ、指示が部分的に一致したエントリのグループに対する一致についてなされ、サーチは終了する。各サーチオブジェクトビットが選択されていない場合は、新しいサーチオブジェクトビットが選択され、サーチが上記手順に従って続行される。
【0014】
本願発明の他の態様においては、サーチデバイスの知識ベースへ新しいエントリを付加する方法及び装置が提供され、サーチを行うためのサーチデバイスは、知識ベースがサーチオブジェクトに一致するエントリを含むか否かについて判定し、サーチデバイスは複数の独自にアドレス化可能なメモリロケーションを包含するメモリを有し、各メモリロケーションは複数の高ビット及び低ビットを含む複数のアドレスビットにより表される対応するアドレスを有する。本態様によれば、新しいエントリのビットは、少なくとも第1の及び第2のビットへ分離され、ビットの各グループは値を示し、新しいエントリのビットの第1及び第2のグループは知識ベースに包含される各エントリのビットの第1及び第2のグループに対応する。第1のビットパターンは、第1のメモリアドレスを選択することにより第1のメモリアドレスでの第1のメモリロケーションに書き込まれる。そしてその書き込みは、少なくともその低ビットが新しいエントリのビットの第1のグループにより表される値に等しい値を表すように、及び、第1のビットパターンが、少なくとも一つの以前未使用だったメモリロケーションを含むメモリロケーションのグループを認識するオフセットアドレスの少なくとも高ビットを含むように該第1のビットパターンを形成することのよってなされる。第2のビットパターンは、第2のメモリアドレスを選択することにより第2のメモリアドレスでの第2のメモリロケーションに書き込まれる。そしてその書き込みは、その高ビットが第1のメモリロケーションにストアされたオフセットアドレスに等しいように、及び、第2のビットパターンが、新しいエントリのビットの第1及び第2のグループによりそれぞれ表される値に等しくないビットの対応する第1及び第2のグループにより表される値を有する以前に加えられたエントリから新しいエントリを区別するように該第2のビットパターンを形成することにより行われる。
【0015】
本願発明の更に他の態様においては、知識ベースがサーチオブジェクトに一致するエントリを包含するか否かを判断するために、サーチをパターン化するサーチデバイスのメモリを組織化するための方法及びデバイスを提供し、サーチオブジェクトはメモリのアドレスビット数以下であるビット数を含み、各エントリの各ビットはサーチオブジェクトビットに対応する。本態様によれば、メモリは、エントリが加えられるか、又は、少なくとも一つのメモリロケーションに記憶された値を変更することにより知識ベースから除去されるたびに更新される。メモリは、メモリが少なくとも一つのサーチオブジェクトビットに少なくとも部分的に基づくアドレスでアクセスされる場合、メモリからアウトプットされた値が、少なくとも一つのサーチオブジェクトビットが知識ベースエントリの対応するビットに一致するか否かを判定的に指示するように組織化される。
【0016】
本願発明の更に他の態様においては、知識ベースがサーチオブジェクトに一致するエントリを含むか否かを判定するためにサーチを行うサーチデバイスを実行するための方法を提供し、サーチデバイスは複数の独自にアドレス化可能なメモリロケーションを含むメモリを有し、サーチオブジェクトはメモリのアドレスビット数以下のビット数を含み、各エントリの各ビットはサーチオブジェクトビットに対応する。本態様によれば、サーチは複数のリードアドレスに対応する複数のメモリロケーションをリードすることにより特定のサーチオブジェクトに対して行われ、各リードアドレスは特定のサーチオブジェクトの少なくとも一つの選択されたビットに少なくとも部分的に基づき、複数のリードアドレスが基づく選択されたビットは所定のシーケンスに選択される。 メモリは、エントリが加えられるか、又は、更新する値を記憶するように少なくとの一つのメモリロケーションを変更することにより知識ベースから除去されるごとに、及びサーチが選択されたサーチオブジェクトに対して行われた場合に、複数のリードのそれぞれの間にメモリから出力された値が選択されたサーチオブジェクトの少なくとも一つのビットが知識ベースエントリの対応するビットに一致するか否かを判定的に指示するように、少なくとも一つのメモリロケーション及び更新された値を選択することにより、更新される。
【0017】
本願発明の更に他の態様においては、ニューラルネットワークがサーチオブジェクトに一致するエントリを表すか否かを判断するためにサーチを行うためのニューラルネットワークを提供し、各エントリはサーチオブジェクトのビットの少なくとも第1及び第2のグループにそれぞれ対応するビットの少なくとも第1及び第2のグループを有し、第1のグループはビット数Fを有し、第2のグループはビット数Sを有し、各エントリはビットの第1及び第2のグループによりそれぞれ表される第1の及び第2の値を有する。本態様によれば、ニューラルネットワークは、各エントリの第1の値とサーチオブジェクトのビットの第1のグループにより表される値を比較する第1のレベルノードを包含する。第1のレベルノードは、サーチオブジェクトのビットの第1のグループにより表される値がエントリの第1の値に等しくないことが判断される場合にもたらされる第1のレベルの不一致のアークを出力する。第1のレベルノードは更に、第1のレベルの一致したアーク数を出力し、第1のレベルの一致するアーク数は知識ベースエントリにより表される別個の第1の値数と等しいものであり、各第1のレベルの一致するアーク(又はサブマップ)は、個別の第1の値に対応し、及び、サーチオブジェクトのビットの第1のグループが対応する第1の値に等しいことが判断された場合にもたらされる。本態様におけるニューラルネットワークは更に、各第1のレベルマッチアーク又はサブマップに対応する第2のレベルノードを包含し、各第2のレベルノードは、その対応する第1のレベルマッチアークがもたらされる場合に起動される。各第2のレベルノードは、ニューラルネットワークにより表されるエントリのサブセットを表し、特別な第2のレベルノードにより表されるエントリのサブセットは、その特別な第2のレベルノードの対応する第1のレベルの一致するアーク又はサブセットにより表される個別の第1の値に等しい第1の値を有する。各第2のレベルノードは、エントリのその表されたサブセットの各々の第2の値とサーチオブジェクトのビットの第2のグループにより表される値を比較する。各第2のレベルノードは、第2のレベルノードが起動される場合、及び、サーチオブジェクトのビットの第2のグループにより表される値が、エントリのその表されたサブセットの第2の値に等しくないと判断される場合にもたらされる第2のレベルの不一致のアークを出力する。各第2のレベルノードは更に、第2のレベルノードが起動される場合、及び、サーチオブジェクトのビットの第2のグループにより表される値が、エントリのその表されたサブセットの少なくとも一つの第2の値に等しいと判定された場合にもたらされる少なくとも一つの第2のレベルの一致するアーク又はサブセットを出力する。
【0018】
<発明を実施するための最良の形態>
本発明はサーチを実行する方法および装置に関し、各々のサーチは知識ベースにおけるサーチオブジェクトと複数のエントリのいずれかとの間で一致または競合しているかを判断するものである。本発明のサーチスキームはニューラルネットワークのように多様に動作し、従って、その動作は図1に示されたニューラルネットワーク1を参照して示される。
【0019】
ニューラルネットワーク1は、32bitのサーチオブジェクトが16進表記の”2E384534”で表された値を持つ所定の32bitのエントリに一致するかの決定を実行する。ニューラルネットワーク1は5つのノード、すなわちノード3,5,7,9,11を持ち、それぞれの出力は2つのアーク(arc)を持つ。第1のノード3は、サーチオブジェクトの上位16ビットとニューラルネットワークエントリの上位16ビットとの一致、すなわち、サーチオブジェクトとの0〜15ビットが”2E38”に等しいかを判断する。ノード3は、アクティブになった時に、サーチオブジェクトの最初の16ビットが”2E38”に等しいことを示すアーク13を出力し、そして、不一致を示す第2のアーク15を出力する。よって、サーチオブジェクトの最初の16ビットがニューラルネットワークのエントリに一致しないとノード3において判断された場合、アーク15がアクティブになり、これにより、サーチが終了し、一致が見つからないことを示す。しかしながら、ノード3において最初の16ビットが”2E38”に一致したと判断された場合、アーク13はアクティブになり、これによりノード5の実行が開始される。
【0020】
ノート5はサーチオブジェクトの次の4ビット(すなわち、16〜19ビット)が”4”に等しいかを判断し、それぞれ一致または不一致(ミス)を示す二つのアーク17、19を出力する。同様に、ノード7は、サーチオブジェクトの20〜23ビットが”5”に等しいかを判断し、ノード9は、24〜27ビットが”3”に等しいかを判断し、そして、ノード11は28〜31ビットが”4”に等しいかを判断する。ノード7,9,11が起動(トリガ)され、それらの対応するビットに一致すると判断された場合にはアーク21,25,29をそれぞれアクティブにし、一致しないと判断された場合にはアーク23,27,31をアクティブにする。よって、ノード3,5,7,9,11のいずれかにおいて不一致であると判断された場合には、対応するアークがアクティブになり、一致が見つからなかったことを示し、サーチが終了する。アーク29は、ノード11が起動された場合にのみ、一致を示すために起動され、サーチオブジェクトの0〜27ビットが”2E38453”に一致し、サーチオブジェクトの28〜31ビットが”4”に等しいことを示す。よって、ニューラルネットワーク1のアーク29がアクティブであることは32ビットのサーチオブジェクトがネットワークの唯一のエントリに一致することを示す。
【0021】
先に述べたことから分かるように、ニューラルネットワーク1はサーチを5つのステップまたはレベルに分割することにより32ビットオブジェクトのサーチを実行し、各々のレベルはサーチオブジェクトのビットのサブセットに対して一致が存在するかを決定する。ノード3,5,7,9,11はそれぞれ5つのレベルのうちの一つを実行する。分割されたレベルのサーチを実行することによる利点は図1における簡略化された例からは自明でないかもしれない。よって、さらに複雑な例を図2に示すこととする。ここで、ニューラルネットワーク40は、16進表記で”0001BA22”、”001BA7F”、”0001BBE2”、”2E384534”、”2E384227”、”2E38EE56”、”910AEFB6”、”910AE237”、”910AE468”、”910A227E”の値を持つ10個の32ビットサーチのいずれかに、サーチオブジェクトが一致するかを判断可能となるように実行するものである。
【0022】
ニューラルネットワーク40は、レベル1〜5までの5つのレベルに分けられる28個のノードを有する。レベル1は一つのノード50を有している。ノード50はサーチオブジェクトの最初の16ビットを調べ、それらがニューラルネットワーク40に記憶されたいずれかのエントリの最初の16ビットに一致するかを判断する。ニューラルネットワーク40には10個の別々のエントリがあるが、多くのエントリはそれらの上位16ビットにおいて同じ値を有し、ずべてのエントリの最初の16ビットは以下の3つの16進の値、”0001”、”2E38”、”910A”のうちの一つを有する。従って、ミスを示すアーク(未図示)を出力するのに加えて、ノード50は3個のアーク51〜53だけを出力する。サーチオブジェクトの最初の16ビットが”0001”に等しい場合には、ノード50はアーク51をアクティブにし、ノード60を起動する。同様に、最初のの16ビットが”2E38”または”910A”に等しい場合には、ノード50はアーク52または53をそれぞれアクティブにし、ノード61または62をそれぞれ起動させる。最初の16ビットが”0001”、”2E38”、”910A”のいずれとも一致しないと判断された場合には、ノード50は、サーチオブジェクトがニューラルネットワーク40に記憶されたいずれの要素とも一致しないことを示すアーク(未図示)をアクティブにし、サーチを終了する。よって、いずれのオブジェクトに対しても、ノード50は、ミスが起きたことを示すサーチを終了するか、または、サーチオブジェクトの最初の16ビットがニューラルネットワークのエントリの少なくとも一つと一致した場合にアーク51〜53のうちの一つをアクティブにする。
【0023】
ノード50から出力されたアーク51〜53の各々はレベル2のノードのうちの一つ、すなわち、ノード60〜62に接続されている。よって、アーク51〜53のうちの一つがアクティブにされた場合はいつでも、レベル2のノードは起動され、サーチオブジェクトの次の4個のビット(すなわち、16〜19)を調べる。レベル2のノード60〜62の各々は、ノードが起動されるとともにサーチオブジェクトの16〜19ビットにおいて一致が発見された場合にアクティブになる少なくとも一つのアークを出力する。また、レベル2のノード60〜62の各々は、ノートが起動されるとともに16〜19ビットにおいて一致が発見されなかった場合にアクティブになるミスのアーク(未図示)を出力する。例えば、起動されると、ノート60は、サーチオブジェクトの16〜19ビットが”B”に一致したと判断した場合にアーク63をアクティブにする;ノード61は、これらのビットが”4”に一致した場合にはアーク64をアクティブにし、それらが”E”に一致した場合にはアーク65をアクティブにする;ノード62は、これらのビットが”E”に一致した場合にはアーク66をアクティブにし、それらが”2”に一致した場合にはアーク67をアクティブにする。
【0024】
上述したように、アクティブにされるべきレベル2のノード60〜62から出力されたアークに対して、サーチオブジェクトの16〜19ビットに対して一致が生じなければならないだけではなく、対応するノードが、サーチオブジェクトの最初の16ビット(すなわち、0〜15ビット)にも一致することを表すレベル1のノード50から出力されたアークによって始動されていなければならない。よって、レベル2のノードからのアーク63〜67のいずれかは、サーチオブジェクトの最初の20ビットがニューラルネットワーク40の少なくとも一つのエントリに一致することを示す。
【0025】
レベル2から出力されたアーク63〜67のいずれかはレベル3のノード70〜74のうちの一つに接続され、その一つのノードはサーチオブジェクトの20〜23ビットを調べる。これらが始動され、これらの一致を検出した場合には、レベル3のノードは、レベル4のノードをアクティブにするアークを出力し、そしてレベル4のノードはサーチオブジェクトの24〜27ビットを調べる。同様に、レベル4のノードが始動され、24〜27ビットの一致を検出した場合には、これらはレベル5のノード90〜99を起動するアークをアクティブにし、そしてレベル5のノード90〜99はサーチオブジェクトの28〜31ビットを調べる。レベル5のノードが起動され、これらのビットの一致を検出した場合には、それらは、サーチオブジェクトの32ビットがニューラルネットワーク40のエントリに一致することを示すアークをアクティブにする。よって、ニューラルネットワーク40がサーチを実行する場合はいつでも、サーチオブジェクトの32ビットについて一致するレベル5のノード90〜99のうちの一つから、出力はアクティブにされ、または、サーチオブジェクトが発見されなかったことを示すノード50,60〜62,70〜74、80〜88、90〜99のうちのいずれかから、ミスの出力がアクティブにされる。
【0026】
上述したことから分かるように、図2のニューラルネットワーク40は、エントリのうちのいずれかが32ビットのサーチオブジェクトに一致するかを判断する10個の32ビットエントリを含む知識ベースのサーチを実行する。かかるサーチスキームによる2つの利点が図1および図2から理解される。第1に、完全なサーチを実行するのに必要な最大のステップ数は、知識ベースのエントリの個数によって変化することはない。図1および図2の比較から理解できるように、ニューラルネットワーク40(図2)の知識ベースはニューラルネットワーク1(図1)の単一のエントリの知識ベースよりも10倍大きいが、サーチはそれぞれ5ステップだけで足りる。ニューラルネットワークは、32ビットアドレスから生成され得る40億を越えるエントリの各々を含んで構成されるとしても、同様に実行されるニューラルネットワークはわずか5ステップのみを含み、エントリのいずれかのサーチを実行するにはわずか5ステップで足りる。よって、本発明のニューラルネットワークのサーチスキームを用いて完全なサーチを実行するのに要する最大のステップ数は、実際のエントリの数には依存せず、むしろサーチオブジェクトのビット数の関数、およびネットワークの実行方法による。
【0027】
第2の利点として、エントリが追加または削除された場合にネットワークを更新するのに比較的に低コストで済むという点がある。図2に示されたように、10個のエントリのサーチ経路は5個のレベルの各々におけるノードを通過する。よって、追加のエントリに要するコストの最悪のケースは、5個のノードから出力されたアークと一緒に、5個のノードの追加または更新とこれらから出力されたアークの追加または更新を要する場合である。同様に、エントリの削除はせいぜい5個のノードおよびそれらに対応するアークの削除または置換で足りる。
【0028】
上述したように、図2に示されたニューラルネットワーク40はレベル1における16ビット、レベル2〜5の各々における4ビットを調べる。本発明におけるサーチスキームはこれに限定されるものではなく、他の方法によっても実行されるべきものであることが理解されよう。例えば、レベル1を含む各々のレベルはわずか4個のビットを調べる。しかしながら、この方法において実行されるのであれば、図2に示されるノード50によって実行される機能を実行するには、4個の独立したレベルを要する。上述したように、ニューラルネットワークを実行するのに使用されるレベルを増やすと、サーチを実行するのに要するステップも増加する。よって、4ビットがそれぞれのレベルにおいて調べられるよう、ニューラルネットワークが実行された場合、サーチに要する時間の最悪のケースとして5〜8個のステップが増加することになる。
【0029】
最悪のケースにおけるステップ数を減少させることにより、性能が全体的に向上するため、各々のレベルにおいて調べられるビット数を最大にすることが望ましい。例えば、各々のレベルにおいて16ビットが調べられる場合、サーチオブジェクトの32ビットのサーチのためには最悪のケースでもわずか2個のステップで足りる。しかしながら、各々のレベルにおいて調べられるビット数を増加させると、ニューラルネットワークにおける実行のためのコストを増加させる結果となる。概して、ノードによって調べられるビット数が少なければ、実行に要するノードの機能が減少し、よって、ノードにおける実行の複雑さが軽減される。したがって、コスト効率および簡略な方法においてネットワークを実行させることと、性能を最大化させることとの間においてバランスをとらなければならない。
【0030】
図2に示された実行において、次のレベルのいずれかよりも最初のレベル(すなわち、レベル1における16ビット)において、より多くのビットが比較される。これは利点となるものであり、なぜなら、上述したように、同時に比較さえるビット数を増加させると、サーチの実行に要するステップ数が減少するからである。さらに、最初のレベルにおいて比較されるビット数を増加させても、他のレベルにおけるビットが増加した場合ほどにはネットワークの実行に要するコストは増加しない。図1および図2に示されたように、ネットワークに記憶されたエントリの数に拘わらず、最初のレベルにおけるノードは1個のみである。一方、他のレベルの各々は複数のノードを有している。よって、例えばレベル2が図2に示されたように16ビットを調べるように実行された場合、レベル2の3個のノード60〜62は各々、4ビットというよりも6ビットを調べるのに必要となる。よって、次のレベルにおいて調べられるビット数を増加させると、ニューラルネットワークの複雑度が、最初のレベルのビット数の増加の割合以上に増大する。
【0031】
本発明におけるサーチスキームは上述したように、先ずサーチオブジェクトの上位から下位ビットへと順に実行され、最下位ビットが最後に比較されるのであるが、本発明はこれに限られるものではない。サーチの順番を逆にし、最下位ビットから順番に実行することも可能である。さらに、必ずしもビットを順番に調べなくても良い。必要なことは、サーチオブジェクトの各々のビットがサーチスキームのいくつかのレベルにおいて調べられるということである。
【0032】
本発明は上述において4ビットまたは他の複数ビットを各々のレベルにおいて調べているが、本発明はこれに限定されるものでもない。上述したニューラルネットワークは、単なる説明のために4ビットの限度に分解して示したにすぎない。いずれのレベルにおいて比較されるビット数はいかなる数でもよく、奇数のビットを含むものでも良いことが理解されるべきである。
【0033】
本発明におけるサーチ技術は、ミスが生じた場合における重み付けサーチの実行に有用であり、サーチテーブルにおける一致したいずれかのエントリのビット数を知るのに望ましいものである。本発明はサーチオブジェクトのビットにおいて増加のサーチを実行させるため、重み付けサーチの実行に有用な情報が、異なるレベルにおいて生じた失敗のためのミスのアークを分離することにより得られる。かかる方法により、失敗に終わったアークは、最初のミスビットを検出する以前にサーチオブジェクトのいくつのビットが一致したと発見されたかを示す。
【0034】
上述のことから分かるように、本発明のサーチスキームは、ニューラルネットワークによって記憶されたエントリの範囲内であるサーチオブジェクトに対応する1対1のマッピングを提供する。しかしながら、非1対1のマッピング(すなわち、ミスにマップされたすべてのアドレス)が、記憶されたエントリの範囲外であるサーチオブジェクトのために実行される。よって、サーチオブジェクトの可能な値のセットとして、本発明は、ある領域から、記憶された範囲への1対1のマッピング機能、および、範囲外の値を持つ第2の領域のための非1対1のマッピング機能を実行する。
【0035】
本発明におけるサーチ方法および装置の実行技術の一つとして、スキャッターメモリアクセスまたはSMAが挙げられる。スキャッターメモリアクセスは、一つまたはそれ以上のメモリアクセスがサーチオブジェクトの採り得る値のセットとして、ある領域から記憶されたエントリへの1対1マッピング機能、および、範囲外の値を有する第2の領域のための非1対1のマッピングを実行するものである。
【0036】
一つの実施例において、スキャッターメモリアクセスデバイスは図3に示された方法により実行される。レベル1、レベル2,レベル3、レベル4,レベル5の各々は、RAM101〜105と、65536個のロケーション(16ビットでアドレス可能)を有するRAMと、出力の12ビットとともに実行される。レベル1のRAM101の16のアドレスビットはサーチオブジェクトの最初の16ビット(すなわち、0〜15ビット)を受信する。RAM102〜15の各々は、その上位12ビットアドレスが前のレベルのRAMから出力された12ビットを受信するとともに、その下位4ビットアドレスが対応するレベルにおいて調べられるべきサーチオブジェクトの4ビットを受信するよう、アドレス指定される。このようにして、前のRAMから出力された12ビットは、RAMのアドレス空間へのオフセットとして提供され、サーチオブジェクトの4ビットは16個のメモリロケーションの一つへのインデックスとして提供される。
【0037】
図3に示されたSMAの実行は、4095(2の12乗マイナス1)個までの固有のエントリを支援するサーチスキームを提供する。独立のエントリの最大数は最後の4個のレベルにおけるRAM102〜105を考慮して決定される。これらのRAMの各々は4095個の4ビットのコンパレータの実行として考慮され、4095個のコンパレータのうちの特定の一つの選択は前のレベルから受信した12のアドレスビットによって決定され、また、各々のコンパレータは16個のメモリロケーションのルックアップを実行することによりサーチオブジェクトの4ビットを比較する。よって、コンパレータを実行する各々の16番目のロケーションのブロックは、ニューラルネットワークのノードの実行として調べられ、そして12ビットのRAMの出力は各々のノードからの4096個の固有のアークのアドレスの生成として調べられ得る。RAM101〜105の各々から出力された12ビットは4096個の別個のアドレスを支援するのではあるが、あるアークはミスを示すように割り当てられ、4095個の独立したアークが別個のエントリへ割り当てられるべきものとして残る。したがって、図3に示された実行は32ビットのサーチオブジェクトを受信するとともにサーチオブジェクトが4095個までの別個の32ビットエントリのいずれかに一致するか否かがを決定する。
【0038】
エントリが装置の知識ベースに追加または削除された場合にRAM101〜105の装着を管理するために、プロセッシングシステムのように、ある設備において手続は実行される。いずれのRAMのロケーションの各々のビットは、”0”のように単一の値を含むように初期化され、これは一般的にミスを示すものとして選択され得る。初期化に続いて、メモリ管理手続は32ビットのサーチエントリに関する値でシステムを更新し始める。具体例として、追加された最初のエントリは”2E384534”の値を採り得る。上述したように、RAM101はレベル1を実行するのに使用され、レベル1は、サーチオブジェクトの最初の16ビットを調べる単一のノードを有し、それらがサーチデバイスのエントリのいずれかの最初の16ビットに一致するかを決定する。この決定はサーチオブジェクトの最初の16ビットを直接にRAM101に入力することによりなされ、この結果、最初の16ビットがサーチオブジェクトのそれらと一致するエントリを有するか否かをサーチデバイスが決定するよう、ルックアップが実行される。
【0039】
エントリ”2E384534”を追加するため、”2E38”に等しい16ビットを有する少なくも一つのエントリをサーチメカニズムが含むことを示す値を有するように、RAM101はアドレス”2E38”において更新される。レベル1のノードを実行するため、アドレス”2E38”におけるRAM101の12ビットの内容は、RAM102において実行されるレベル2のノードへのアークのアドレスを示すように更新される。上述したように、RAM102は2の12乗(すなわち、4096)個のノードまたは4ビットのコンパレータとしてみなされ得る。利便のため、RAM102のアドレス”000X”におけるノードは、サーチオブジェクトの最初の16ビットにわたってミスが生じたことを示すように割り当てられる。従って、”2E384534”がデバイスに追加された唯一のエントリであり、最初の16ビットが”2E38”に等しくないサーチオブジェクトのためにサーチが実行されたとした場合には、RAM101の12ビットの出力は初期状態である”000”となり、ミスが生じたことが示されるであろう。よって、RAM102(サーチオブジェクトの16〜19ビットに対応する)の下位の4個のアドレスビットに入力された値に拘わらず、12個の上位のビットに割り当てる”000”は、サーチオブジェクトに対してミスを示す”000”を、さらにRAM102に出力させる。RAM103〜105の各々に対する下位の16個のロケーション”000X”は同様に割り当てられ、ミスのノードを実行するとともに、アドレス指定されたときに各々”000”を出力する。この結果、いずれのレベルにおいてミスが検出されたとしても、アドレス”000X”はRAMの各々を介して伝播し、RAM105はミスを示す”000”を出力する。
【0040】
上述したことから分かるように、ミスを示すために各々のメモリ102〜195に対して”000”を予約することは便利なことである。よって、RAM101を更新し、エントリ”2E384534”を追加した場合、アドレス”2E38”におけるメモリロケーションの12ビットの内容は”000”以外のアドレス値にアークのアドレスが割り当てられる。例えば、12ビットの出力は”001”の値に割り当てられ、この結果、レベルとレベル2の間のアークのアドレス”001”はサーチオブジェクトの最初の16ビットが”2E38”に等しいことを示す。
【0041】
上述した方法においてレベル1のRAM101を更新する結果、レベル2のノード、または最初の16ビットが”2E38”であるエントリの4ビットのコンパレータを実行するように、アドレス”001X”におけるRAM102の16個のロケーションが割り当てられる。よって、RAM102を更新し、エントリ”2E384534”を追加するため、アドレス”001X”における16個のロケーションのうちの一つは、このエントリにおいて一致したことを示すように更新されなければならない。上述したように、RAM102の下位の4ビットはサーチオブジェクトの16〜19ビットを受信し、これは、エントリ”2E384534”において”4”に等しくなる。よって、エントリ”2E384534”を追加するため、RAM102はアドレス”0014”において、RAM101から出力されたアークのアドレスに対応するする”001”に等しい最初の12ビットと、エントリ”2E384534”のエントリの16〜19ビットの値に対応する”4”に等しい最後の4個のビットとに更新される。アドレス”0014”におけるRAM102の12ビットの内容は、RAM101がRAM103にオフセットを提供するように更新されたのと同様の方法で、アークアドレスのオフセットをレベル3のRAM103に提供するように更新される。よって、ロケーション”0014”におけるRAM102の12ビットの値は同様に”001”に等しくなりように更新される。この方法において、レベル2とレベル3との間に延びるアドレス”001”を有するアークは、エントリの最初の20ビットが”2E384”に等しいことを示す。
【0042】
エントリ”2E384534”を追加するためのSMAの更新は、同様の方法でRAM103〜105の各々のエントリを追加することによって終了する。よって、”001”の値は、アドレス”0015”におけるRAM103、アドレス”0013”におけるRAM104、アドレス”0014”におけるRAM105のそれぞれに書き込まれる。かかる方法において、ノードは、RAM101〜105に対応するアドレス”001X”におけるレベル1〜レベル5の各々において形成される。上述したように、これらのノードの各々は、サーチオブジェクトの4ビットと、一致を決定するための記憶されたエントリの4ビットとを比較する4ビットのコンパレータとしてみなされ得る。レベル1〜レベル5のいずれにおいてミスが発見された場合には、対応するRAM101〜105がその出力上に”000”を生成する。上述したように、RAM102〜105の各々の16個のロケーション”000X”が”000”の値を有するため、RAM101〜105のいずれかからの出力”000”は最後のRAMの出力を介して伝播し、これにより、サーチオブジェクトがスキャッターメモリアクセスデバイスに記憶されていないことが示される。
【0043】
追加のエントリは、同様の方法によりスキャッターメモリアクセスデバイスに追加される。例えば、第2のエントリが”A79C2FB0”の値を有して追加される。このように新たなエントリが追加されると、RAM101はアドレス”A79C”において更新され、この結果、12ビットの内容はRAM102における独立したレベル2のノードを形成するアークのアドレスを含む。上述したように、RAM102におけるアドレス”000X”と”001X”とは各々、予めミスのノードおよび”2E38”の値のノードを実行するように割り当てられている。よって、エントリ”A79C2FB0”を追加するため、アドレス”A79C”におけるRAM102の12ビットの内容は”000”または”001”以外のいずれかの値に更新され得る。例えば、アドレス”A79C”におけるRAM101は”002”の値に更新され得る。同様に、SMAのRAMの残りも更新され、例えば、アドレス”0022”におけるRAM102、アドレス”002F”におけるRAM103、アドレス”002B”におけるRAM104、アドレス”0020”におけるRAM105はぞれぞれ”002”の値に更新される。かかる方法において、4ビットのコンパレータを実行する別個のノードは、エントリ”A79C2FB0”におけるレベル2〜レベル5の各々において形成される。さらにサーチオブジェクトの最初の16ビットの比較を実行するレベル1において、追加のノードは形成されない。しかしながら、追加のノードは、最初の16ビットが”A79C”に等しい少なくとも一つのエントリをデバイスが含むことを示す、アドレス”A79C”におけるレベル1のRAM101において形成される。
【0044】
上述した実施例においては、RAM101乃至105の間に延びるアークの各々が、エントリ"2E384534"に対して"001"をアドレスするよう割り当てられ、エントリ"A79C2FB0"に対して"002"をアドレスするよう割り当てられる。しかしながら、任意のエントリに対して、レベルの間のアークを同じアドレスに維持することは必ずしも必要ではない。事実、エントリのある組み合わせに対し、特定のエントリに対してアークのアドレスの各々を同一に割り当てることは好ましくない。例えば、図3に示されるSMAに付加される、第3のエントリが"2E384789"の値を有するときには、同じアドレスを有するように第3のエントリにアークの各々を割り当てないことによって、利点を得ることができる。この第3のエントリがデバイスに追加されたときには、RAM101と102を更新する必要がない。なぜなら、サーチオブジェクトの最初の20ビットが"2E384"に等しいときには、RAM103は既に、RAM101のアドレス"2E38"から出力されたアーク"001"とRAM102のアドレス"0014"から出力されたアーク"001"とを介してアクセスされるアドレス"001X"にノードを有しているからである。即ち、第3のエントリ"2E384789"がSMAデバイスに追加されたときには、追加のアークとノードを形成するためにはRAM103乃至105のみを更新することで足りる。第3のエントリに対するノードを実行するのに有効なRAM104乃至105にある次の16個のロケーションブロック(location blocks)はアドレス"003x"にある。即ち、RAM103のアドレス"0017"とRAM104のアドレス"0038"とRAM105のアドレス"0039"とに値"003"を書き込むことによって、値"2E384789"を有する第3のエントリでSMAデバイスを更新することができる。即ち、エントリ"2E384789"に対するアークはレベルの各々の間で同じアークアドレスを有してはいない。なぜなら、レベル1乃至レベル3においてアークアドレスは"001"に等しく、レベル3乃至レベル5においてアークアドレスは"003"に等しいからである。
【0045】
アークアドレスが割り当てられる上述の手法は例示の目的で提供されたものであり、SMAデバイスが新しいエントリで更新されたときにはアークアドレス値をいくつかの異なる方法で更新することもできることを理解すべきである。新しいエントリの追加に伴ってアークアドレス値を増加させる必要はなく、また追加されたノード、即ち4ビット比較器の各々を以前追加したノードに隣接するメモリロケーションへ割り当てる必要もない。むしろ必要なのは、新しいエントリが追加される毎に、追加のノード即ち4ビット比較器が必要に応じて有効なメモリスペースに割り当てられ、追加されたエントリと一致する値を有するサーチオブジェクトに対する一致をデバイスが示すように、RAM101乃至105を更新することである。
【0046】
さらに、メモリを全て零に初期化する必要がなく、またその零もミス(miss)を示すために使用されるデータパターンである必要もない。むしろ必要なのは、あるレベルでミスが検出されたときに、アドレスのいくつかの経路が必然的にRAMの各々を介して伝搬し、ミスが生じたことを示していると、RAM105からの12ビット出力が認識されるよう、RAMを初期化することである。即ち、RAMの各々に対するミスのロケーションに記録されている12ビットのアークアドレスが同一であることも必要ではない。
【0047】
図3に示されるように、レベル5のRAM105は12ビット出力を生成する。レベル5は、図3に示された例示的な実施例においては最後のレベルであるので、その出力は続く次のノードへのアークアドレスを示していない。むしろこの12ビット出力は、例えあるとしても4095個の可能なエントリのいずれがサーチオブジェクトであるかを示す指標(index)を提供する。多くの検索応用において、サーチオブジェクトが知識ベースのエントリの1つと一致したと決定したときには、一致したエントリに付属するある情報を出力することが好ましい。即ち、最後のレベルから出力された12ビットは、どのエントリが一致したかを識別する指標を提供することになる。
【0048】
上述の記載から判るように、RAM102乃至105の各々は最大4095個のノード、即ち4095個の4ビット比較器を実現する。この最大数は、ノードを実現する16個のロケーションブロックを識別するオフセットとして取り扱うためにRAMの各々へ入力される12アドレスビット(212=4096)が存在し、4096個のノードの1つがミスを示すのに使用されるという事実から確証する。即ち、サポートされる別個のエントリの最大数は、RAM101乃至105の各々から出力されたビットの数を決定するファクタである。図3に示されるSMAデバイスは4096個の別個のエントリをサポートすることから、ミスアークを含む4096個のアークをレベル1乃至レベル5の何れかにおいて何れかのノードから出力することができる。即ち、RAM101乃至105の各々は12ビットを出力し、4096個の別個のアークアドレスをサポートすることが可能である。
【0049】
スキャッターメモリアクセスデバイスを実現するのに用いられる全メモリサイズはデバイスに記録されているエントリの数によって束縛されるのであって、任意のビット数を有するサーチオブジェクトに対して生じる可能性のある別個の値の最大数によって拘束されるのではないことは、上述の点から好ましいことである。図3に示される例においては、サーチオブジェクトは22ビットを含んでおり、SMAデバイスに記録されているエントリは40憶を超える固有値を有する。しかしながら、上述したように、実際の応用においては、任意のある時間に記録されるエントリの数は、一般的に固有値の全数よりも非常に少ない。サポート可能な最大エントリの数を4095に制限することによって、SMAデバイスを実現するに使用されるメモリの総量が合理的な制限に維持される。図3に示された実現において、5つのRAMが使用され、各々が216、即ち65,536個のアドレス可能なロケーションをサポートする。即ち、図3に示されたデバイスを実現するのに使用するアドレス可能なロケーションの総数は327,680(即ち、5×65,536)である。アドレス可能なロケーションの各々は12ビット即ちメモリの1.5バイトを含み、図3に示されるデバイスを実現するのに使用されるバイトの総数はたったの458,752(即ち、327,680×1.5)である。
【0050】
本発明のスキャッターメモリアクセスデバイスは4095個の固有アドレスのみをサポートすることに制限されず、図3に示される例示的な実施例を変更することによってそれ以下またはそれ以上の数のエントリをサポートすることも可能である。一般的に、サポートされるエントリの最大数を大きくすると、より多くのメモリが必要である。例えば、別個のエントリの最大数が2倍であり、デバイスが図3に示されるのと同じ手法で実現されるときには、必要なメモリ総量はおおよそ2倍となる。8191個(即ち、4096個×2引く1個のミスエントリ)の固有エントリをサポートするために、レベル1のRAMのロケーションの数が65,536個(即ち、216)以上に増加する必要はない。しかしながら、8192個(即ち213)の固有アークアドレスをサポートするためには、レベル1のRAMの各々のロケーションのビットの数を12から13に増加する必要がある。さらに、レベル2乃至レベル5のためのRAMの各エントリに対するビットの数は、同様の理由で13に増加する。さらに、8192個(即ち213)の固有ノード、即ち4ビット比較器をサポートするためにはレベル2乃至レベル5のためのRAMの各々のロケーションの数を2倍にしなければならない。即ち、全部で589,824個のメモリロケーションのために、SMAデバイスは65,536個のメモリロケーションのRAMを1つと、131,072個(即ち217)のロケーションを有するRAMを4つ含む。上述したように、メモリロケーションの各々は13ビット、即ち1.625バイトを含む必要がある。即ち、デバイスに要求される全メモリは958,464バイト(即ち、589,824個のロケーション×1ロケーション当たり1.625バイト)である。即ち、この特定の実現に対し、サポートされるエントリの最大数を2倍にするとロケーションの数は1.8倍になり、バイト数は2.089倍となる。
【0051】
上述から判るように、ある最大数の別個のエントリのためのスキャッターメモリアクセスデバイスを実現するのに必要とされるメモリの総量は3つのファクタに依存する。即ち、エントリの数、1エントリ当たり必要なメモリロケーションの数、そして1ロケーション当たりに必要なビット数である。図10との関連において以下に詳細に記載するように、1エントリ当たりのメモリロケーションの最悪な場合の数は、デバイスのレベルの数に依存するだけでなく、未使用ロケーションと既使用ロケーション(unused locations and used location)との最悪な場合の比にも依存する。
【0052】
アークのアドレス割当とRAM101乃至105の読み込みを管理するために、同じ設備、例えば同じ処理システム上で手順を実行しなければならない。処理システムにおけるディスクスペースや他のメモリリソースの割当を管理するために使用される現存のメモリ管理技術や他の応用は、アークアドレス割当やスキャッターメモリアクセスRAMの読み込みを取り扱うのに適している。上述したように、RAMはいかなる特定の形式で読み込まれる必要はない。むしろ必要なのは、エントリがデバイスに付加される毎にノードを形成してアーク割当を生成するようRAMが更新され、追加されたエントリと同じ値を有するサーチオブジェクトが供給されたときにデバイスが一致を示すようにすることである。即ち、生成された追加のノードの各々に対し、必要なのは、関連するRAMにある空のメモリロケーションが新しいノードのために見出され、新しく追加されたノードへ割り当てられたメモリロケーションへ適切なオフセットを提供する値を有するアークアドレスで前のメモリを更新することである。
【0053】
SMAデバイスの有利な構成は、新しいエントリが追加あるいは削除されたときにデバイスを更新するのに必要なコストが最小である点にある。図3に示される例示的な実施例においては、5つの新しいノードとアークがエントリのために形成されるときに、エントリの更新のための最も悪い場合のコストを招く。即ち、デバイスを更新するための最も悪い場合のコストは5つのメモリがRAM101乃至105の各々へ書き込むことを含む。デバイスはエントリを追加し、削除しまたは変更するために主要な再構成を必要としない。最も悪い場合のコストがデバイスのレベルの数によって単独に決定され、記録されているエントリの数に基づいて増加はしない。エントリを取り除くには、取り除かれるエントリと等しい値を有するサーチオブジェクトに対するミスを示すようにRAMに書き込むことだけが要求される。繰り返すが、エントリを取り除くための最も悪い場合のコストは、取り除かれるエントリに対する固有のアークアドレスが以前記録されていたメモリロケーションに0を導入するために、5つのメモリがRAM101乃至105の各々にそれを書き込むことを含む。即ち、図3に示されるスキャッターメモリアクセスデバイスの更新は、最悪でも、新しく追加されるかまたは取り除かれるエントリに対する5つのメモリの書き込みを要求するだけである。
【0054】
図3に記載の特定の実現は、単なる例示的な目的のためにのみ提供されることを理解すべきである。本願発明のスキャッターメモリアクセスデバイスを類似的に実行して、いかなるビット長を有するサーチオブジェクトの検索を実行することができ、そして32ビット目的物を検索することをデバイスが強いられているものでもない。レベル1において16ビットを比較し、後に続くレベルの各々で4ビットを比較するようデバイスを実現してはいるが、多数の他の実現もまた可能である。例えば、図3に示す実施例のままで、レベル1において16ビットを比較するのではなく、各レベルで4ビットのみを比較することによって追加のレベルを生成することも可能である。逆に、後の任意のレベルにおいて4ビット以上のビットを比較することによって数個のレベルを生成しても良い。さらに、各レベルで比較されるビットの数を偶数に強いるものではない。スキャッターメモリアクセスデバイスは数多くの異なる構成で実現が可能である。必要なのは、サーチオブジェクトの各ビットがデバイスレベルのうちの1つにおいて比較されることである。
【0055】
SMAデバイスが任意の応用において最もよく実現される手法を決定するのに重要なファクタは、メモリ消費と同様に、検索と更新の速度である。各レベルにおいて同時に比較されるビットが多ければ多いほど、最も悪い検索の速度となる。例えば32ビットの目的物を検索するSMAデバイスが2つのレベルで実行され、その各々が16ビットを比較するときには、検索は2つのレベルで実行され、2つのメモリアクセスのみが要求される。しかしながら、この手法で実現されるときには、より多くのメモリが必要になる。なぜなら、レベル2は4096個の16ビットメモリ比較器の実現を必要とするからである。逆に、各レベルでより少ないビットを比較するときには、メモリ消費の減少は実現され得るが、それはレベルの数が増加する、その結果として検索を行うのに必要な時間が増加するコストにおけるものである。即ち、SMAデバイスが実現される特定の手法は、特定の応用に対する上述した特徴のバランスに依存するのである。
【0056】
32ビットのサーチオブジェクトの検索を実行し、4095個の固有エントリをサポートするSMAデバイスの代替実施例が図4に示されている。図4の実施例は、多くの点において図3の実施例と類似する。デバイスは5つのレベルに分離され、レベル1はサーチオブジェクトの最初の16ビットを試験し、残りのレベルの各々は4ビットを試験する。しかしながら、図3の実施例のRAM101乃至105は単一のRAM106に置き換わっている。RAM106が5つのページに分割され、ページ1は図3のRAM101の機能を実現し、ページ2はRAM102の機能を実現する、等である。カウンタ108は上位の3アドレスビットをRAM106へ提供し、どのページがアクティブかを選択する。即ち、RAM106は図3に示されるRAM101乃至105の各々よりも8倍大きい。RAM106は、図3の実施例で用いられるメモリロケーションの数を2倍にするためには5倍だけ大きい必要があるが、5つのページの間で区別するために3ビットを用いるには、8つ(23)の固有ページを用いる必要がある。RAM101乃至105に対応する個別ページへRAM106を分割することは、RAM106を更新するメモリ管理の必要性を簡略化し、図3に示される実施例と同じ方法でメモリを管理することができる。
【0057】
図4に示された実現もまた5つのエントリの16ビットマルチプレクサ(mux)110を含む。mux110はメモリのどのページが現在アクセスされているかを示す、カウンタ108から出力された3ビット出力を受信し、サーチオブジェクトとRAM106の出力上に提供される計時レジスタ112とからの入力の対応するビットを選択する。図4のスキャッターメモリアクセスデバイスを用いる検索には5つのクロックサイクルを必要とする。第1のサイクルにおいては、カウンタ108が初期化されてレベル1を選択し、mux110は、サーチオブジェクトの上位16ビットをRAM106のアドレスへ送る。RAM106は応動して、図3の実施例との関連で上述した手法で12ビットのアークのアドレスをレベル2のノードへ出力する。クロックサイクルの終わりにおいて、この12ビットのアークのアドレスがレジスタ112に計時され、カウンタ108が増加する。即ち、第2のサイクルの間、muxは、サーチオブジェクトのビット16から19と同様にレジスタ112に記録されたレベル2のアークのアドレスを選択し、これらビットをRAM106のアドレスへ供給する。従って、第2のサイクルにおいては、RAM106は図3の実施例においてRAM102によって実行されたのと同じ機能を実行する。この手法においては、mux110とRAM106はレベル1乃至レベル5の各々を介して同時に歩調を合わせる(simultaneously step)ようにカウンタを増加させることによって、32ビットのサーチオブジェクトの検索が5つのサイクルで実現される。
【0058】
上述した本願発明のスキャッタメモリアクセスデバイスの実施例は検索を実現するために、速くてコスト的に有効である機構を提供する。しかしながら、他の実施例においてはスキャッタメモリアクセスデバイスの効率をさらに改良するためにさらなるステップを取る。SMAデバイスの非効率は、メモリ値の未使用、即ち、ミスで満たされたメモリロケーションから来る。この非効率が図5に概念的に示されており、図5はスキャッタメモリアクセスデバイスの例示的な実施例を通して、いくつかのノードの分配を説明する。図5においては、216個(即ち、65,536)のメモリロケーションのブロック120がレベル1に示されており、アドレス"0001xxxx"、"2E38xxxx"、"910Axxxx"及び"FFFCxxxx"に対応する4つのエントリを記録する。同様に、レベル2における16のメモリロケーションのブロック122は、アドレス"2E384xxx"と"2E38Exxx"に対応する2つの使用されたロケーションのみを含んでいる。図5から判るように、追加された16個のロケーションメモリブロック123乃至136がレベル3、レベル4及びレベル5を介して分散されており、各ブロックはいくつかの未使用ロケーションを有する。大きなロケーションブロックの中で1つのエントリのみを使用するときに、メモリが最も非効率的に使用されることになる。図5に示された例示的な実施例においては、16個のロケーションブロックの中の1つのエントリのみが使用され、未使用ロケーションと既使用ロケーションの15/1の比率が生じたときに最も非効率的である。本願発明のSMAデバイスの代替実施例においては、メモリ消費を減少し、メモリ利用の効率を改善するためにマッピング能力が提供される。
【0059】
図6はスキャッタメモリアクセスデバイスのメモリを介してノードを分配するさらに効率的な機構を概念的に示す。示された実施例においては、2つのエントリテーブルを用いてそこから発出される1つの非ミスアークのみを有するノード、即ちノード141乃至150の各々を実現する。即ち、これらノードの各々に対して15の未使用(即ち、ミス)ロケーションで16のエントリテーブルを用いるのではなく、より少ない2つのエントリテーブル、即ちノードを用い、これにより必要なメモリロケーションの総数を減少させる。2つのエントリテーブルにおいて、1のエントリは、次のレベルにおけるノードへの非ミスアークアドレスを記録し、他のエントリはミスアドレスを記録する。
【0060】
2つのエントリテーブルの使用はスキャッタメモリアクセスデバイスにおけるメモリ使用の効率を向上させる。SMAデバイスが図6に示された機構を用いて実現されるときには、メモリはノードに対して非効率的に使用され、16のロケーションブロックの2つのエントリ、即ちノード152と154のみが使用される。即ち、未使用ロケーションと既使用ロケーションの最悪の場合の比は、図5に示された実現に対する15/1から、図6で示された実現に対する7/1(即ち14/2)に減少する。上述したように、未使用ロケーションと既使用ロケーションの最悪の場合の比を減少することは、任意の数のエントリをサポートするSMAデバイスを実現するのに必要なメモリの総量の減少に帰着する。
【0061】
図7は、以下に記載する追加の機能を有する、2つのエントリテーブルを実現することができるスキャッタメモリアクセスデバイスの実施例のブロック図である。図7に示される実施例は、図4で示されるものと多くの点で類似する。単一のRAM160が5つのページに分割され、各ページがレベル1乃至レベル5の1つを実現する。カウンタ162は上位の3アドレスビットをRAM160に供給し、どのページがアクティブであるかを選択する。5入力の4ビットマルチプレクサ(mux)164は、メモリのどのページがアクセスされているかを示す、カウンタ162から出力された3ビットを受信し、サーチオブジェクトからの入力の対応するビットを選択する。計時されたレジスタ166がRAM160の出力に提供され、各クロックサイクルの終了においてRAMの出力を記録する。即ち、図4に示された実施例と同様に、図7のスキャッタメモリアクセスデバイスの検索は5つのクロックサイクルを必要とし、1サイクル毎にレベル1からレベル5を処理する。
【0062】
図7に示された実施例は、サーチオブジェクトのビット0から15と、mux164の4ビット出力と計時されたレジスタ166の出力とを受信し、これら値をRAM160に対するアドレスにマッピングする。マッピングファンクション168は、サーチオブジェクトの4ビットと非ミスエントリの対応するビットとの比較を他の機能の間で実行し、比較の結果に基づいて、2つのエントリテーブルの適切なエントリにアドレスをマッピングすることによって、2つのエントリテーブルを実現する。
【0063】
マッピングファンクション168をサポートするために、RAM160から出力されたビットの数を20に増加する。2つのエントリノードをトリガするアークの各々は、サーチオブジェクトの関連するビットをマッピングファンクション168によって比較することができることに備えてエントリのアドレスの4ビットを含む。例えば、ノード"2E384B4X"を表すレベル4の2つのエントリノード145(図6)を考える。このノードが、レベル3のメモリロケーション170によって生成されたアークによってトリガされる。即ち、ビット24乃至27も"4"に等しくない限り、ビット0から23が"2E384B"に等しい任意のサーチオブジェクトがミスにマップされる。マッピングファンクション168は、ノード145のような2つのエントリノードに対する4ビット比較を実行し、サーチオブジェクトのビット24から27が非ミスエントリと一致するかどうかを決定する。レベル4においてマッピングファンクション168に4ビット比較を実行させるために、メモリロケーション170(これは2つのエントリノードを鳥がするレベル3ノードを実現する。)は"4"に等しい4ビットの出力を含む。SMAデバイスが、"2E384BXX"に等しいアドレスを有することを見出されたサーチオブジェクトを比較する4番目のサイクルにあるとき、mux164は、サーチオブジェクトのビット24から27をマッピングファンクション168へ送る。マッピングファンクション168はまた、サーチオブジェクトのビット24から27が比較されることに備えて、計時されたレジスタ166を介して、"4"の値を有する4ビットをメモリロケーション170から受信する。即ち、マッピングファンクション168はこれらビットに備えて4ビット比較を実行し、サーチオブジェクトビットが"4"に等しいときには、メモリロケーション172が記録されたところでアドレスを出力し、ノード"2E384B4X"がSMAデバイスで見出されたことを示す。これとは反対に、サーチオブジェクトのビット24乃至27が"4"と等しくないときには、マッピングファンクション168はメモリロケーション173のアドレスを出力し、これにより、ミスが生じたことを示す。即ち、マッピングファンクション168は、2つのメモリロケーション172と173のみを用いてノード145を実現するのであって、図4に示される実現で用いられる全16のメモリロケーションを用いるのではない。
【0064】
通常の論理デバイスを用いた種々の異なる方法で、マッピングファンクション168を実現することができる。例示的な実現が図8に示されている。マッピングファンクション168は、計時されたレジスタ166から20ビット、mux164からは4ビット、サーチオブジェクトのビット0から15、そしてカウンタ162の3ビット出力を受信する。レジスタ166から受信した20ビットが以下のように分配される。(i)次のノードが記録されているアドレス(これらアドレスビットは図4に示されている実施例の計時レジスタ112から出力された12ビットと同じ機能を取り扱う)に対する上位オフセットを提供するアークアドレス180の12ビット、(ii)次のノードが2つまたは16のエントリテーブルで実現されるかどうかを特定するのに用いられる1ビットの制御ビット170、(iii)次のノードが2つのエントリのみを含むときにサーチオブジェクトのビットが比較されることに備える4ビット184、そして(iv)ノードが2つのエントリのみを含むときに次のノードへのオフセットアドレスの中間ビットを供給する3ビット188。
【0065】
図4に示された実施例で用いられる16ビットmux110とは対照的に、図7の実施例におけるmux164はたったの4ビット幅である。即ち、サーチオブジェクトの上位12ビットとレジスタ166から出力されたアークアドレスの12ビットとが各々マッピングファンクション168へ直接入力される。マッピングファンクションは、これら2つの12ビット入力の間で選択する12ビットmux179を含む。mux179の出力がカウンタ162の3ビット出力によって制御される。
【0066】
カウンタが、レベル1が処理されていることを示すときに、mux179はサーチオブジェクトの0から15のビットを選択してパスする。しかし、カウンタ162が、レベル2−レベル5のいずれかが処理されているときは、mux179はレジスタ166から12ビットアークアドレスをパスして選択する。このようにして、mux179は図4の実施態様に使用される高位の12ビットと同じ機能を実行する。mux179の12ビット出力はマッピングファンクション出力178の12の高位ビットを提供する。
【0067】
制御ビット170は4ビットmux172の選択入力に結合される。制御ビット170が、次のノードが2エントリテーブルで実行されることを示すときに、mux179はmux164から出力されるサーチオブジェクト174の4つのビットを選択してパスする。mux172の4ビット出力はマッピングファンクション出力178の4個の下位ビットを提供し、その12個の高位ビットは上述の態様でmux179によって提供される。従って、制御ビット170が、次のノードが2エントリテーブルを含まないことを示すときに、マッピングファンクションは、図4に示される本発明の実施態様から出力される16ビットのアドレスと同一である16ビットの出力を生成する。従って、レベル1では出力178はサーチオブジェクトのビット0から15を提供し、レベル2−レベル5では出力178は16エントリテーブルへ12ビットアークアドレス、並びにサーチオブジェクトの関係ビットからの4ビットインデックスを提供する。
【0068】
図8を参照して、マッピングファンクション168も4ビットコンパレータ182を含み、それはmux164から出力されるサーチオブジェクトの4個のビットとレジスタ166から出力される4個のビット184(2エントリテーブルに記憶されるノンミスエントリの関係ビットの値を示す)とを比較する。コンパレータ182はサーチオブジェクトの4個のビットがノンミスエントリの関係ビットに一致するかどうかを示す1ビット出力を生成する。制御ビット170が、次のノードが2個のエントリだけを有することを示すときに、mux172はコンパレータ出力186を、レジスタ166から出力される3個の中間オフセットアドレスビット188と共に選択してパスする。従って、コンパレータ出力186は1ビットインデックスを2エントリテーブルに提供して一致を示すメモリロケーションかまたはミスを示すメモリロケーションのいずれかを選択する。1ビットインデックスだけが使用されるので、2エントリノードをトリガするアークアドレスは、RAM160にアドレスするためにオフセットの15個のビットを提供する。15ビットのオフセットは、2エントリテーブルにのみ使用される3個の中間アドレスビット188と共に、テーブルのエントリの数にかかわらず高位12ビットのオフセット180によって提供されている。3個の中間ビット188はコンパレータ出力186に連結され、制御ビット170が2エントリテーブルの使用を指示するときにmux172を通過する4個のビットを形成する。上述のように、mux172のこの4ビット出力176は、低位アドレスビットをRAM160に提供する。
【0069】
上述のように、マッピングファンクション168は多くの他の方法で既知の論理設計技術を使用して実行され得る。図6に示される特定の実施形態は図示のためにだけ提供される。なぜなら、マッピングファンクションは2エントリテーブルの使用を可能にする態様の理解を容易にするからである。本発明は、この特定の実施形態に限定されない。
【0070】
上述の態様において、2エントリテーブルを使用するほかに、他の中間サイズのテーブルを使用することによって、さらに別の効率の増加が達成できる。例えば、マッピングファンクション168もまた4及び8エントリテーブルを、上述の2及び16エントリテーブルに加えて実行するために使用できる。この増大した融通性を支持するために、追加の制御ビットをRAM160の横に加えることができる。従って、2エントリテーブルの実施形態に関連して記載した上記原理に従うことによって及び必要な場合には標準的な論理設計技術及び追加の制御ビットを使用することによって、マッピングファンクションもまた4及び8エントリテーブルを実行できるよう作成できる。例えば、多数のノンミスエントリがあるときに、マッピングファンクションの4ビット比較を実行する簡易な方法は、RAMに16個(すなわち、24)の指令ビットを加えることである。各指令ビットは、サーチオブジェクトの4個のビットが表現できる可能な16値の1つに割り当てられ、ノンミスエントリに対応するそれらの値のみが”1”に設定される。各々の指令ビットは16対1デマルチプレクサの各入力の源であり、それらの選択ビットはサーチオブジェクトの4個の関係ビットを受け取る。従って、デマルチプレクサの出力は、サーチオブジェクトの4個の比較ビットがノンミスエントリの1つに一致してデマルチプレクサが4ビットコンパレータとして動作するときのみ、”1”である。
【0071】
もし、16、8、4、及び2のエントリテーブルがすべて使用されると、SMAデバイスの効率が増加する。この実施形態の4、8、16エントリテーブルの最も非効率的な使用は各々、図9(a)−(c)に示され、使用ロケーションはクロスハッチングで示される。図9(c)から分かるように、8エントリテーブルが使用されると、16エントリテーブル190の最も悪い場合の使用は7/9(未使用ロケーション対使用ロケーション)の比率である。同様に、図9(b)は4エントリテーブルが使用されると、8エントリテーブル192の最も悪い場合の使用は1/3(未使用ロケーション対使用ロケーション)である。図9(a)−(c)から分かるように、最も効率の悪いテーブルは、テーブルサイズのこの範囲が使用されるときは、依然として7/9の未使用対使用比率を有する16エントリテーブル190である。しかしながら、この比率は、2及び16エントリテーブルのみが使用される場合の最も悪い場合の比率より小さく、従って、2、4及び8エントリテーブルを使用すると、SMAデバイスの効率を増大させ、所定数のエントリを支持するSMAデバイスを実行するのに必要な最も悪い場合のメモリ量を減少させる。
【0072】
図10は、エントリにつき要求されるメモリロケーションの数は、2、4、8及び16エントリテーブルを支持するマッピング能力を有するSMAデバイスにとって計算できる態様を示す。レベルAの4個のメモリロケーションのブロック200が3個のロケーションのみ使用される最も悪い形態において示される。従って、4個のメモリロケーションは3個のエントリのみを実行するために使用される。従って、レベルAのこれら3個のエントリを実行するためのエントリについてのコストは4/3すなわち1.33である(すなわち、1と1/3は未使用ロケーションに割り当てられる)。レベルAの3個のエントリの1つは、8エントリノード204に対するアークアドレス202をレベルBにて含む。ノード204は、5エントリのみが使用される最も悪い場合の8エントリ形態である。レベルBのノード204を実行するためのエントリについてのコストは8/5すなわち1.6(すなわち、1と3/5は未使用ロケーションに割り当てられる)である。また、ノード204の各々の5エントリもまたノード200の1個のメモリロケーションの割り当てを要求する。しかしながら、このレベルAのメモリロケーションは5個のエントリによって共有される。従って、エントリについてのコストはレベルAのエントリの(4/3)/5にレベルBの8/5を加えて、合計1.87に等しい。
【0073】
レベルBの5個のエントリの1つはレベルCの8エントリノード208へのアークアドレス206を含む。ノード208もまた5個のエントリのみが使用される最も悪い場合の8エントリ形態である。ノード208を実行するためのエントリについてのコストは、レベルAの((4/3)/5)/5にレベルBの(8/5)/5及びレベルCの8/5を加えて合計1.97に等しい。レベルCの5個のエントリの1つはレベルDの4エントリノードへのアークアドレス210を含む。ノード212は3個のエントリのみが使用される最も悪い場合の4エントリ形態である。ノード212を実行するためのエントリについてのコストはレベルAの(((4/3)/5)/5)/3にレベルBの((8/5)/5)/3、レベルCの(8/5)/3及びレベルDの4/3を加えて、合計1.99に等しい。
【0074】
上記から分かるように、SMAデバイスを実行するためにエントリについて要求されるメモリロケーションの平均数は内部に記憶されるエントリのビット数の増加で増加する。しかしながら、図10に示される例によって例示されるように、各ノード毎の未使用ロケーション対使用ロケーションの最も悪い比率が1未満であるかぎり、エントリについてのコストは2を越えない。SMAデバイスのこの特性は以下に証明される。
【0075】
レベルN+1のノードのエントリXN+1についてのコストは次の再帰的定義により定義され、AはレベルN+1のノードのエントリの数を示し、BはノードN+1のノンミスエントリの数を示し、XNはノードNのエントリについてのコストを示す。
XN+1=(A+XN)/B
【0076】
この式は、帰納法により次のように非再帰項で書き換えることができる。
【0077】
参照により本願に組み込まれる、グラシュエン及びリズイックの「積分、数列、及び積のテーブル」、アカデミックプレス、1965年(英訳)において記載されるように、次の関係は真を維持する。
【0078】
従って、
X∽=(1/B)X(A/(1−1/B))
であり、
X∽=A/(B−1)
に減少する。
【0079】
上述のように、2、4、8及び16エントリテーブルが使用されるシステム内の最も効率的でないメモリの使用は、9エントリのみが使用される16エントリテーブルに対してである。係る実施のために、Aは16に等しくかつBは9に等しい。これらの値が上で与えられた式に代入されると、エントリについての最も悪い場合のメモリロケーションは、一定の数のビットを有するエントリを有するSMAデバイスに対してさえも2を越えないということが分かる。エントリの数に使用されるメモリロケーションの数のこの制約は意義を有する。なぜなら、このことは適切なレベルでメモリ使用を維持するのに最も重要な要因となるからである。MSAデバイスを実行するのに要求されるメモリ総量はまた各メモリロケーションに記憶されるビットの数に依存するが、メモリ横に単一ビットを加えると、一群のアドレスビットによって生成され得るアドレスの数を2倍に、またはマッピングファンクションにより実行され得るファンクションの数を2倍にし、それによってかなり大きい機能的な能力を所要メモリ量を大きく増大させることなく提供する。
【0080】
2、4及び8エントリテーブルが、スキャッターメモリアクセスデバイスの効率を増大させるとして特に記載されたが、奇数のエントリを有するテーブルを含む、16エントリより少ないいずれのテーブルも同じ結果を提供する。2、4及び8エントリテーブルは図示のためにのみ例として使用された。また、上述のように、本発明のSMAデバイスは各レベルの4ビットを比較することに限定されない。望ましいビットの任意の番号Dは所定のレベルで比較でき、そのレベルでの最大サイズのテーブルは2Dに等しい。2Dより小さい任意のサイズのテーブルもまた、上述の態様でデバイスの効率を増大させるためにそのレベルで実行できる。
【0081】
Dビットが比較されるレベルで2Dより少ないテーブルの使用により、テーブル管理プロセスは幾分複雑になる。図示のために、図6を再び参照する。図6に示されるように、2エントリテーブル142は、ノード”2E386XXX”を示すのに使用される。なぜなら、アドレス”0”がそこから流出するノンミスアークのみだからである。従って、エントリ”2E386077”が図6のSMAデバイスに加えられたときに、メモリ管理体系はノード142を実行するのに2個のメモリロケーションのみを割り当てた。もし、アドレス”2E386077”及び”2E386212”を有する、2個の追加のエントリが順次図6のSMAデバイスに加えられたならば、ノード142は拡張されねばならず、もはや2エントリテーブルとして、3個のノンミスアークがそこから流出されるので、実行され得ない。従って、2、4、8及び16エントリテーブルのみが支持されると仮定すると、ノード142は、2メモリロケーションから4メモリロケーションに拡張される必要がある。従って、2個の新しいエントリが追加されたときに、テーブル管理体系はノード142を、4個の隣接するメモリロケーションが使用のために利用可能であったメモリのロケーションに再配置する必要がある。また、メモリ管理体系が次いで、ノード142によって前に使用された2個のメモリロケーションのエントリをそれらの2個のメモリロケーションが使用のために利用可能であったことを示すことによって「削除」する。これらの追加のメモリ要求は幾分より複雑であるけれども、これらのタスクを遂行することができる技術は公知であり、他の適用に使用されている。
【0082】
増加したテーブルサイズを使用することによって得られた増加した効率は、テーブル管理の複雑性の増大を非常に補う。テーブル最大サイズを半分に増分的に分割するより小さいテーブルの使用は(例えば、16のテーブル最大サイズに対して、8、4、2及び1のエントリのテーブルが使用される。)、任意のテーブルにおける未使用対使用ロケーションの最も悪い場合の比率が1/2未満であることを保証する。図1に関連して上述したように、この特徴は、いずれの数のエントリに対しても、SMAデバイスを実行するのに要求される最も悪い場合のメモリロケーションの数が支持エントリの数の2倍未満であることを保証する。
【0083】
スキャッターメモリアクセスデバイスの効率は、さらにミスまたは失敗テーブルの使用により増大することができる。図6を参照すると、レベル4に含まれる3個の2エントリテーブル143−145の各々は、ミスが起こったことを示すことに専用のそれらのメモリロケーションの1つを有することが理解され得る。レベル4を実行するのに使用されるメモリロケーションの数は、各々のノード143−145がこの目的のために共通のアドレスを共有したならば、減少され得る。もし、このように実行されれば、マッピングファンクション168は同じメモリアドレスをミスがノード”2E384BXX”、”2E3860XX”及び”2E38E0XX”のいずれかから検出されるときにはRAM160にソース付けられる。従って、ミステーブルは種々のタイプのミスを示すアドレスを提供するよう実行され得る。多数のミスを表す失敗テーブルの使用により、図6に図示された2エントリテーブルは単一のノンミスエントリに軽減され得る。従って、ミスまたは失敗テーブルを実行するのに使用されるメモリロケーションに対して、単一のエントリを有するノードを実行するのに使用されるメモリロケーションの数は2から1へ半分に減少される。
【0084】
失敗テーブルにおけるエントリの数は、適用により、そして失敗が起こったときに、種々の有用な情報が望ましいかどうかに依存して変動可能である。上記説明したように、本発明のサーチ技術は加重サーチを実行するのに有用であり、ミスが起こったときに、所定数のビットがサーチテーブルのいずれかのエントリに一致したかどうかを知ることが望ましい。加重サーチが望ましいシステムにおいては、失敗テーブルは複数のロケーションで実行でき、少なくとも1つのロケーションは各々のレベルに対応する。このようにして、レベル1からの失敗テーブルを参照する各ミスはマッピングファンクション168によって第1のミステーブルアドレスにマップでき、レベル2で起こる各ミスは第2のミステーブルアドレスにマップ可能である等々。結果として、種々のミステーブルロケーションはミスを決定する前に一致したビット数に関する情報を含む。しかしながら、各ミスが同じ態様で扱われ、ミスが起こるときに、追加の情報が取得され得ない適用においては、失敗テーブルは単一のメモリロケーションとして実行でき、各ミスが同じ失敗アドレスにマップできる。このように実行されると、失敗テーブルを実行するのにより少ないメモリロケーションですむ。
【0085】
失敗テーブルが2エントリテーブルのサイズを減少させるために使用されるとして特に上述されるが、それは他のテーブルも同様に減少させるのに使用され得る。失敗テーブルにより、各テーブル毎に1つのエントリの節約ができる。なぜなら、ノンミスエントリのテーブルはミスを示すメモリロケーションを専用に設ける必要がないからである。この節約を成し遂げるためには、十分な指令ビットが、マッピングファンクションを制御するためにメモリ横に加えることができ、ミスが起こるときに、メモリアドレスは失敗テーブルにマップされる。
【0086】
RAM160(図7)及び106(図4)のロケーションの数はさらに、レベル1−レベル5の各々がメモリの別個のページに割り当てられるべきであるとする、前に仮定した制約を排除することによって減少させることができる。この制約は、図3に示される本発明の実施態様が単一のRAMを使用するためにどの様に変換され得るかを説明するのに明瞭化かつ簡易化のために前もって仮定された。しかしながら、各レベルは別のページに割り当てる必要はない。むしろ、メモリは、テーブル管理体系がメモリロケーションを適宜の基礎に割り当てることが単にできるようにすることによって最も効率よく使用できる。所定レベルを実行するのに使用される各々のメモリロケーションがメモリにおいて隣接する必要がある理由はない。従って、メモリは使用効率を最大にする考えられる方法で組織できる。
【0087】
図11は、単一のRAM220がメモリの別個のページを各々のレベルに割り当てさせることなく上述の態様で実行される本発明のSMAデバイスの別の実施態様を示す。図7の実施態様と同様に、図11に示される実施態様はRAM220、クロックレジスタ226、4ビットmux224、及びマッピングファンクション228を含む。しかしながら、図11の実施態様は、サーチのどのレベルが実行されているかに基づいて、mux224の入力から選択するカウンタを含まない。むしろ、3個の指令ビットはRAM220の横に加えられ、mux224の選択入力にソース付けられる。このようにして、各ノードのメモリロケーションは次のサイクルの間にRAM220へのアドレスのソースを選択する指令ビットを含む。
【0088】
本発明のスキャッターメモリアクセスデバイスは、サーチオブジェクトの対象のビット数がデバイスのエントリ毎に対象のビット数に一致されるサーチを実行するとして、図示して上述された。しかしながら、SMAデバイスもまた対象のビット数が正確に一致しないサーチを実行することができる。例えば、ドントケアは、所定のノードの2以上のエントリに次のノードに対して同じアークアドレスを生成させることにより、SMAデバイスによって容易に実行される。ドントケアの形態は、24ビット値がSMAデバイスの16エントリノード230に記憶されかつ2進値”1110001110000100101X0100”を有する図12に示される。ここで、”X”は、ドントケアを表す。従って、このエントリは24ビット値すなわち”E384A4”及び”E384B4”を表す。図12に示されるように、このドントケアは、ノード230のメモリロケーション”A”及び”B”を次のレベルで同じノードアドレスへマップさせることによって容易に実行される。この能力により、スキャッターアクセスデバイスは、サーチオブジェクトの対象のビット数及びデバイスエントリが同一でないサーチを実行できる。
【0089】
図面に示される実施態様の種々の変更及び改変は本発明の範囲内において行うことができることに理解されたい。従って、上記記載に包含され、そして添付図面に示されるすべての事項は限定的ではなく例示的な意味において解釈されることが意図される。
【図面の簡単な説明】
【図1】 ニューラルネットワークとして表される本発明のサーチ機構を示す。
【図2】 追加のサーチエントリを包含するように拡張された図1のニューラルネットワークを示す。
【図3】 本発明のスキャッターメモリアクセスデバイスの一態様のブロックダイヤグラムである。
【図4】 スキャッターメモリアクセスの第2の態様のブロックダイヤグラムである。
【図5】 16エントリテーブルが用いられている一態様としてのスキャッターメモリアクセスデバイス中のメモリロケーションの分布を示す。
【図6】 2つの16エントリテーブルが用いられている一態様としての分散されたメモリーアクセスデバイス中のメモリロケーションの分布を示す。
【図7】 マッピングファンクションが実行されているスキャッターメモリアクセスデバイスの第3の態様のブロックダイヤグラムである。
【図8】 図7のマッピングファンクションの一実行例のブロックダイヤグラムである。
【図9】 aは、種々のエントリサイズのテーブルに対する最悪ケースメモリ効率を示す。
bは、種々のエントリサイズのテーブルに対する最悪ケースメモリ効率を示す。
cは、種々のエントリサイズのテーブルに対する最悪ケースメモリ効率を示す。
【図10】 エントリ当たりの最悪ケースのメモリロケーション数が、スキャッターメモリアクセスデバイスの一実行例に対して計算可能とされる仕様を示す。
【図11】 与えられたノードに対するメモリアドレスのソースが、前記ノードからの指示ビットにより判定されているスキャッターメモリアクセスデバイスの第4の態様のブロックダイアグラムである。
【図12】 ドントケアが、スキャッターされたメモリアクセスデバイスにより実行されている仕様を示す。
Claims (31)
- サーチオブジェクトが知識ベース内の何れかのエントリと合致するか否かを判定する方法において、該方法が、
a) 該サーチオブジェクトを複数のグループのサーチオブジェクトビットに分割するステップと、
b) メモリ内に記憶されると共に、該メモリ内の各位置に関する内容を含むニューラルネットワークに、該複数のサーチオブジェクトビットからの第1のグループのサーチオブジェクトビットを使用してアクセスするステップとを含み、アクセスされる該メモリ位置は、該第一のグループのサーチオブジェクトビットに関連しており、該方法は、更に、
c) 該複数のサーチオブジェクトビットからの後続のグループのサーチオブジェクトビットのためのサブマップとしてアドレス指定されている該メモリ位置の内容を使用するステップと、
d) 該サブマップ及び該後続のグループのサーチオブジェクトビットを使用して、後続のサブマップを含む該メモリ内の後続の位置にアクセスするステップとを含み、該後続のメモリ位置は、該サブマップ及び該後続のグループのサーチオブジェクトビットに関連しており、該方法は、更に、
e) 該複数のグループのサーチオブジェクトビットが全て使用されるまで、各後続のグループのサーチオブジェクトビット及び各後続のサブマップを使用してステップ (c) 及び (d) を反復するステップと、
f) 該サーチオブジェクトが該知識ベース内の何れかのエントリに一致するか否かを、アクセスされた該最終のメモリ位置の内容に基づいて判定するステップとを含む方法。 - 請求項1に記載の方法において、該サブマップ及び該後続のグループのサーチオブジェクトビットを使用するステップが、該サブマップを該後続のグループのサーチオブジェクトビットに書き加えて、メモリ内の該後続の位置に対するアドレスを生成するステップを含み、アドレスは、全ての先行するグループのサーチオブジェクトビットに依存する方法。
- 請求項1に記載の方法において、0値がミスを示すと共に、該グループの使用されたサーチオブジェクトビットに依存する該サブマップが0以外の値によって与えられるように、アクセスされた該メモリ位置の内容が、該内容の値に従ってミスまたは一致を示す方法。
- 請求項1に記載の方法において、該複数のグループのサーチオブジェクトビットが、5つのグループのサーチオブジェクトビットを含む方法。
- サーチオブジェクトが知識ベース内の何れかのエントリと一致するか否かを判定する方法において、該方法が、
a) 少なくとも1つのサーチオブジェクトビットを選択するステップと、
b) 該少なくとも1つのサーチオブジェクトビットに関連するメモリ位置にアクセスすることにより、該少なくとも1つのサーチオブジェクトビットが該知識ベース内の何れかのエントリの対応する少なくとも1つのビットと一致するか否かを判定するステップとを含み、該メモリ位置及びサブマップは、該知識ベースに関連する全てのメモリ位置及びサブマップにより形成されるニューラルネットワークのノードとして存在し、該メモリ位置は、該少なくとも1つのサーチオブジェクトビットと一致する、該知識ベース内のエントリのサブセットに対応するサブマップを格納し、該方法は、更に、
c) 少なくとも1つの後続のサーチオブジェクトビットを選択するステップと、
d) 該サブマップ及び該少なくとも1つの後続のサーチオブジェクトビットに対応する後続のメモリ位置にアクセスすることにより、該サブマップ及び該少なくとも1つの後続のサーチオブジェクトビットを使用して、該知識ベース内のエントリの該サブセットにある何れかのエントリの後続の対応する少なくとも1つのビットと該少なくとも1つの後続のサーチオブジェクトビットが一致するか否かを判定するステップとを含み、該後続のメモリ位置は、後続のサブマップを格納し、該方法は、更に、
e) 該サーチオブジェクトの全てのビットが探索されるまで、各後続のグループのサーチオブジェクトビット及び各後続のサブマップを使用してステップ (c)及び (d) を反復するステップを含む方法。 - 請求項5に記載の方法において、該サーチオブジェクトが該知識ベース内の何れかのエントリと一致するか否かを、アクセスされた最後のメモリ位置に格納された該サブマップに基づいて判定するステップを更に含む方法。
- 請求項5に記載の方法において、該サブマップのうちの1つが、該知識ベース内に一致するエントリが存在しないことを示す場合は常に探索を終了させる方法。
- 請求項5に記載の方法において、各サブマップは、関連するグループのサーチオブジェクトビット及び各後続のグループのサーチオブジェクトビットを有する、該知識ベース内のエントリのサブセットに対応する方法。
- サーチオブジェクトが知識ベース内の何れかのエントリと一致するか否かを判定する方法において、該方法が、
a) 該サーチオブジェクトを複数のグループのサーチオブジェクトビットに分割するステップと、
b) 該複数のグループのサーチオブジェクトビットから第1のグループのサーチオブジェクトビットを選択するステップと、
c) ニューラルネットワーク内のサブマップにアクセスすることにより、該第1のグループのサーチオブジェクトビットが該知識ベース内の何れかのエントリに対応しているか否かを判定するステップとを含み、該サブマップは、該第1のグループのサーチオブジェクトビットに関連すると共に、該知識ベース内のエントリのサブセットに対応しており、エントリの該サブセットは、該第1のサーチオブジェクトビットに対応する、該知識ベース内の何れかのエントリに対応しており、該方法が、更に、
d) 該複数のグループのサーチオブジェクトビットから後続のグループのサーチオブジェクトビットを選択するステップと、
e) 該ニューラルネットワーク内の後続のサブマップにアクセスすることにより、該後続のグループのサーチオブジェクトビットがエントリの該サブセット内の何れかのエントリに対応するか否かを判定するステップとを含み、該後続のサブマップは、該後続のグループのサーチオブジェクトビット及び該サブマップに関連すると共に、エントリの該サブセットの後続のサブセットに対応しており、該方法が、更に、
f) 該グループのサーチオブジェクトビットの全てのビットが使用されるまで、各後続のグループのサーチオブジェクトビット及びエントリの各後続のサブセットに対応する各後続のサブマップを使用してステップ (d) 及び (e) を反復するステップを含む方法。 - 請求項9に記載の方法において、該サーチオブジェクトが該知識ベース内の何れかのエントリと一致するか否かを、最後のグループのサーチオブジェクトビットに関連する該サブマップに基づいて判定するステップを更に含む方法。
- 請求項9に記載の方法において、該サブマップのうちの1つが、該知識ベース内に一致するエントリが存在しないことを示す場合は常に探索を終了させる方法。
- 請求項9に記載の探索の方法において、各サブマップは、該関連するグループのビットが単一の一致に対応するかまたは多数の一致に対応するかを示す方法。
- 知識ベースを探索して、該知識ベース内のエントリがサーチオブジェクトと一致するか否かを判定する際に使用されるサブマップを生成及び組織化する方法において、該方法が、
a) サブマップのための少なくとも1部分のアドレスとして、該知識ベース内のエントリからのグループのビットを使用するステップと、
b) アクセスされる後続のグループのサブマップを示すかまたはサーチオブジェクトが該知識ベース内の該エントリと一致するということを示すかの何れかである該サブマップに値を割り当てるステップと、
c) 該知識ベース内の該エントリを判別するのに必要なグループのサブマップを生成するために必要に応じてステップ (a) 及び (b) を反復するステップとを含み、該グループのサブマップは、ニューラルネットワークを形成する方法。 - 請求項13に記載の方法において、
d) 該知識ベース内の全てのエントリを判別するのに必要な全てのサブマップを生成するために必要に応じてステップ (a) 及び (b) を反復するステップを更に含む方法。 - サーチオブジェクトが知識ベース内の何れかのエントリと一致するか否かを判定する方法において、該方法が、
a) 該サーチオブジェクトを複数のグループのサーチオブジェクトビットに分割するステップと、
b) 該複数のグループのサーチオブジェクトビットをシリアルに探索するステップとを含み、各探索はサブマップを生成し、該サブマップは、該知識ベースに関連する全てのサブマップにより形成されるニューラルネットワークのノードとして存在し、該方法が、更に、
c) 各後続する探索の際に該サブマップを使用して、該サーチオブジェクトに対応する、該知識ベース内のエントリのサブセットを判別するステップと、
d) 最後のグループのサーチオブジェクトビットによって生成される該サブマップの値に基づいて、該サーチオブジェクトが該知識ベース内の何れかのエントリと一致するか否かを判定するステップとを含む方法。 - 請求項15に記載の方法において、該サブマップの1つが、該知識ベース内に一致するエントリが存在しないということを示す場合は常に検索を終了させる方法。
- 請求項15に記載の方法において、各サブマップは、該関連するグループのビットが単一の一致に対応するかまたは多数の一致に対応するかを示す方法。
- サーチオブジェクトが知識ベース内の何れかのエントリに一致するか否かを判定する装置において、
各々が、該知識ベース内のエントリに関する1部分の一致に対応する複数のノードと、
該ノードを接続する複数のアークとを含み、各アークは、前のノードからの該1部分の一致を含むと共に該知識ベース内にあるエントリに対応するノードのサブセットを示すサブマップを形成し、該複数のノード及びアークは、該サーチオブジェクトが該知識ベース内のエントリと一致するか否かを該装置が判定可能であるようにニューラルネットワークを形成し、該装置が、該サーチオブジェクトを複数のサーチオブジェクトビットに分割し、そして第1のグループのサーチオブジェクトビットを使用して第1のノードにアクセスし、それによって、全ての該グループのサーチオブジェクトビットが探索されるまで該探索を反復し、そして該サーチオブジェクトが該知識ベース内のエントリと一致するかまたは一致しないかの何れかを、アクセスされた最後のサブマップが示すことにより該判定は実行され、該第1のノードは、後続のサブマップを有する後続のノードにアクセスするために後続のグループのサーチオブジェクトビットと共に使用される第一のサブマップを含む装置。 - 請求項18に記載の装置において、該ノードは、メモリ内のメモリ位置であり、該サブマップは、該メモリ位置の内容である装置。
- 請求項19に記載の装置において、該メモリ内の該後続の位置に対するアドレスを生成するように、該サブマップが該後続のグループのサーチオブジェクトビットに書き加えられ、アドレスは、全ての先行するグループのサーチオブジェクトビットに依存する装置。
- 請求項19に記載の装置において、0値がミスを示し、該グループの使用されたサーチオブジェクトビットに依存する該サブマップが0以外の値によって提供されるように、アクセスされた該メモリ位置の該内容が、ミスまたは一致を該内容の値に従って示す装置。
- 請求項18に記載の装置において、該複数のグループのサーチオブジェクトビットが5つのグループのサーチオブジェクトビットを含む装置。
- サーチオブジェクトが知識ベース内の何れかのエントリと一致するか否かを判定する装置において、該装置が、
少なくとも1つのサーチオブジェクトビットを選択する手段と、
該少なくとも1つのサーチオブジェクトビットに関連するメモリ位置にアクセスすることにより、該少なくとも1つのサーチオブジェクトビットが該知識ベース内の何れかのエントリの対応する少なくとも1つのビットと一致するか否かを判定する手段とを含み、該メモリ位置は、該少なくとも1つのサーチオブジェクトビットと一致すると共に該知識ベース内にあるエントリのサブセットに対応するサブマップを格納し、該装置が、更に、
少なくとも1つの後続のサーチオブジェクトビットを選択して、該サブマップ及び該少なくとも1つの後続のサーチオブジェクトビットに関連する後続のメモリ位置にアクセスすることにより、該少なくとも1つの後続のサーチオブジェクトビットが該知識ベース内のエントリの該サブセットに属する何れかのエントリの後続の対応する少なくとも1つのビットと一致するか否かを判定するのに該サブマップ及び該少なくとも1との後続のサーチオブジェクトビットを使用する手段を含み、該後続のメモリ位置は、後続のサブマップを格納し、該装置が、更に、
該サーチオブジェクトの全てのビットが探索されるまで、各後続のグループのサーチオブジェクトビット及び各後続のサブマップを使用して前記少なくとも1つの後続のサーチオブジェクトビットを選択するプロセスを反復する手段を含む装置。 - 請求項23に記載の装置において、アクセスされた該最後のメモリ位置に格納されている該サブマップに基づいて、該サーチオブジェクトが該知識ベース内の何れかのエントリと一致するか否かを判定する手段を更に含む装置。
- 請求項23に記載の装置において、該サブマップの中の1つが、該知識ベース内に一致するエントリが存在しないことを示す場合は常に探索を終了させる装置。
- 請求項23に記載の装置において、各サブマップは、該関連するグループのサーチオブジェクトビット及び各後続のグループのサーチオブジェクトビットを有すると共に該知識ベース内にあるエントリのサブセットに対応する装置。
- サーチオブジェクトが知識ベース内の何れかのエントリと一致するか否かを判定する装置において、
複数のメモリ位置を有するメモリを含み、各メモリ位置は、そのメモリ位置に関連するサブマップを格納し、該メモリ位置及び該サブマップはニューラルネットワークを形成し、該メモリ位置は、アクセスされた前のメモリ位置からのサブマップと共に、該サーチオブジェクトの1部分によりまたは該サーチオブジェクトの後続の部分によりアクセスされ、該装置は、該サーチオブジェクトが該知識ベース内のエントリと一致するか否かを該最後のサブマップの値により判定する装置。 - 請求項27に記載の装置において、該サブマップの中の1つが、該知識ベース内に一致するエントリが存在しないことを示す場合は常に探索を終了させる装置。
- 請求項27に記載の装置において、各サブマップは、該関連するグループのビットが単一の一致に対応するかまたは多数に一致に対応するかを示す装置。
- 知識ベース内のエントリがサーチオブジェクトと一致するか否かを判定するために該知識ベースを探索するのに使用される装置において、 複数のメモリ位置を有し、該知識ベース内のエントリからのグループのビットがある特定のメモリ位置に対する少なくとも1部分のアドレスに対応するメモリと、
その段階まで探索された該サーチオブジェクトの部分と一致する後続のグループのサブマップまたはサーチオブジェクトが該知識ベース内の該エントリと一致することを示すサブマップの何れかを示す値を有する各メモリ位置内のサブマップとを含み、該メモリ及びサブマップの構造がニューラルネットワークを形成する装置。 - 請求項30に記載の装置において、各サブマップは、該関連するグループのビットが単一の一致に対応するかまたは多数の一致に対応するかを示す装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/US1998/019724 WO2000017780A1 (en) | 1993-10-22 | 1998-09-21 | Methods for searching a knowledge base |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002525754A JP2002525754A (ja) | 2002-08-13 |
JP3672822B2 true JP3672822B2 (ja) | 2005-07-20 |
Family
ID=22267908
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2000571370A Expired - Fee Related JP3672822B2 (ja) | 1998-09-21 | 1998-09-21 | 知識ベースのサーチ方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3672822B2 (ja) |
-
1998
- 1998-09-21 JP JP2000571370A patent/JP3672822B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JP2002525754A (ja) | 2002-08-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5813001A (en) | Method for performing optimized intelligent searches of knowledge bases using submaps associated with search objects | |
US6434144B1 (en) | Multi-level table lookup | |
US6754776B2 (en) | Method and system for logical partitioning of cache memory structures in a partitoned computer system | |
US7058642B2 (en) | Method and data structure for a low memory overhead database | |
US4980822A (en) | Multiprocessing system having nodes containing a processor and an associated memory module with dynamically allocated local/global storage in the memory modules | |
EP0408188B1 (en) | Compressed prefix matching database searching | |
AU2010239731B2 (en) | Methods of structuring data, pre-complied exception list engines, and network appliances | |
US8345685B2 (en) | Method and device for processing data packets | |
US7280752B2 (en) | Network address routing using multiple routing identifiers | |
WO2005043305A2 (en) | Methods and apparatus for longest prefix matching in processing a forwarding information database | |
JP2001223749A (ja) | パケット分類エンジン | |
JPS5990281A (ja) | メモリ管理方式 | |
JP2002073412A (ja) | メモリへのアクセス方法及びメモリ | |
US6574701B2 (en) | Technique for updating a content addressable memory | |
US6532516B1 (en) | Technique for updating a content addressable memory | |
JP2003271569A (ja) | マップテーブルを用いてメモリにインタリーブ方式でアクセスする方法 | |
US6279097B1 (en) | Method and apparatus for adaptive address lookup table generator for networking application | |
CN114006875A (zh) | 扩展PCIe系统的方法、PCIe交换设备及PCIe系统 | |
US6480943B1 (en) | Memory address interleaving and offset bits for cell interleaving of memory | |
CN114389995B (zh) | 资源共享的方法、装置以及电子设备 | |
WO2002098055A2 (en) | Load balancing in ip address lookup | |
US6625673B1 (en) | Method for assigning addresses to input/output devices | |
US20050071595A1 (en) | Methods and apparatus for allocating memory | |
US6185554B1 (en) | Methods for searching a knowledge base | |
JP3672822B2 (ja) | 知識ベースのサーチ方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040908 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20041208 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20041215 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050308 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20050330 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20050420 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090428 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100428 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100428 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110428 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120428 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130428 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130428 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140428 Year of fee payment: 9 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |