JP2004520671A - 複合コンテントアドレッサブルメモリ - Google Patents
複合コンテントアドレッサブルメモリ Download PDFInfo
- Publication number
- JP2004520671A JP2004520671A JP2002561837A JP2002561837A JP2004520671A JP 2004520671 A JP2004520671 A JP 2004520671A JP 2002561837 A JP2002561837 A JP 2002561837A JP 2002561837 A JP2002561837 A JP 2002561837A JP 2004520671 A JP2004520671 A JP 2004520671A
- Authority
- JP
- Japan
- Prior art keywords
- cam
- address
- interface
- block
- line
- 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.)
- Withdrawn
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
Landscapes
- Dram (AREA)
- Static Random-Access Memory (AREA)
- Bus Control (AREA)
Abstract
複数のコンテントアドレッサブルメモリを、より大きな複合コンテントアドレッサブルメモリへ、個々のメモリの元の応答時間からほとんど遅延なく、統合することを可能にする高速インタフェース用の方法と回路。このインタフェースは、バスシステムのみへの接続を提供し、異なるCAMデバイス間での接続を必要としない。これにより、一つのCAMと一つのCAMインタフェースとの組み合わせ(例えばチップ)が可能となる。このようなチップは、RAMのような標準的なメモリチップとして知られているように、他の追加インタフェースを用いずにそれらのチップを直接にバスシステムに取り付けることにより、CAMメモリを増加させるためのモジュールとして用いられる。この新規なインタフェースは、メモリセルを、より大きな統合CAMデバイスに本発明にかかるインタフェースを介して接続されたグループに分割することにより、CAMデバイス内に階層構造を生成するためにも用いられる。このような構成において、各グループにおけるプライオリティ機能は、より少数のセル上で動作し、このインタフェースを構成するために必要なゲートが比較的少数であることにより、少数ゲートによるCAMデバイスの実装が可能である。複合CAMデバイスにおいて、複数のCAMは、各々のインタフェースを介して、アドレスバスとデータバスに接続される。読み出しおよび書き込みモードにおいて、インタフェースは、二組のラインを接続し、これにより、読み出しまたは書き込み動作に対して透過的になる。サーチモード(コンテントアドレッシングモード)では、インタフェースは、予め定められた方向において最も高い、一つのマッチングセルのアドレスを出力するために、CAMの応答に応じてデータバス数を選択し、設定する。インタフェース回路は、CAMモジュールのコンテントアドレス機能を、より広範囲のアドレスに拡張するために必要な論理機能とラインとを追加し、セルのアドレスをより広い範囲に書き込むために追加のバスライン数を設定し、CAMアドレスのビットがより高いアドレスを持つセルのアドレスを変更しようとする場合は、それらのビットをマスクすることによって、システム中でより高いアドレスを持つ他のセルが応答しないことを確認する。これにより、CAMの全体構成が、より大きなサイズの単一のCAMとして機能することが可能となる。
Description
【技術分野】
【0001】
本発明は、複数のコンテントアドレッサブルメモリを、一つのより大きな結合コンテントアドレッサブルメモリへ統合することを可能にする高速度インタフェースの方法と回路に関する。
【0002】
本発明において、コンテントアドレッサブルメモリ(CAM)という用語は、一般に、通常のメモリのストア機能やリトリーブ機能に加えて、コンテントアドレス機能を有する記憶装置を意味する。コンテントアドレス機能の処理内容は、以下に記すとおりである:
コンテントアドレッサブルメモリ装置は、多数のバスインタフェースラインに所定の値がセットされることにより、コンテントアドレスモードになる。そして、コンテントアドレッサブルメモリ装置は、バスインタフェースラインの別のセットに、1つのメモリセルの位置を表すデータをセットすることにより応答する。そのセル(以下、応答セルと称する)は、予め定義された最初のバスインタフェースラインに現れるデータとの関係を確認するデータを格納している(以下、マッチングデータと称する)。いくつかのタイプのCAMで、バスインタフェースラインの最初のまたは2番目のセットは、動作サイクルの上述の両方のフェーズで用いられる物理的に同じラインであることもある。最初のまたは2番目のバスインタフェースラインのセットを、以下では、アドレスバスおよびデータバスと称する。
【0003】
上記のようなメモリデバイスは、例えば、米国特許第4,805,093号、米国特許第5,502,832号、および米国特許第5,568,416に開示されている。
【0004】
本発明において、CAMは、PCT国際特許出願00/00121およびPCT国際特許出願00/00327に開示されたようなコールアウトメモリをも意味する。コールアウトメモリは、アドレス値(「原アドレス」という用語を用いる)を定義する「レンジ」機能も有することがある。原アドレスは、コールアウトメモリへの入力として転送されることがある。
【0005】
コンテントアドレスモードにおいて、この原アドレスは、所定の方向への検索機能の開始位置を定義する。この検索は、コールアウトメモリのアドレス出力が、マッチングデータを持つ全てのメモリセルの中で最大であり、しかし、原アドレスよりも小さくなるように定義される。コールアウトメモリの場合は、コンテントアドレスモードは、コールアウトモードとも称される。
【0006】
現存するCAMデバイスは、実現に必要なゲート数が膨大であるので、その容量に限界がある。その結果、大きなコンテントアドレッサブルメモリ空間が必要な場合は、複数のCAMデバイスを用いなければならない。しかし、多くのCAMを併合して一つの大きなコンテントアドレッサブルメモリを実現するためには、専用のインタフェースまたは接続が必要となる。このようなインタフェース回路は、反対に遅延を生じさせ、コンテントアドレッサブルメモリ全体での応答(検索)時間に遅れを引き起こす結果となる。
【0007】
複数のCAMをモジュラー式に連続して接続する様々な方法(国際公開WO99/23662、米国特許第5,930,359)が提案されている。しかし、これらの方法は、応答時間の劣化を伴うものである。例えば、米国特許第5,930,359の場合は、検索された結果は、全てのCAMをパイプライン転送され、これにより、最終的な応答に、潜在的な遅れにCAMの数を乗じた遅れを生じさせる。国際公開WO99/2362には、論理信号だけがCAMからCAMを通過することにより、最初のゲートの遅れにCAMの数を乗じたものと等しい遅れを生じさせる、改良されたシステムが示されている。
【0008】
両方のケースで、複数のCAMを一つの大きなコンテントアドレッサブルメモリに統合することは、メモリの応答時間の劣化を引き起こす。
【0009】
これらの統合手法における別の欠点は、異なるCAMデバイス間での連結が必要であるため、バスシステムの並行アーキテクチャが乱されるということである。これは、システムのモジュール性と拡張可能性を損なう。
【0010】
従って、CAMデバイス用モジュールインタフェースであって、遅延を生じさせず、かつバスシステムの並行アーキテクチャを保護するインタフェースを設計することが望まれている。さらに、CAMデバイスと一体的に構築されるCAMデバイス用モジュールインタフェースを設計し、結合されたCAMとインタフェースとが、他の回路を追加することなく現存のメモリを迅速かつ用意に拡張するための一つのモジュールユニットとして応用され得るようにすることも望まれている。
【0011】
また、このような構造に必要な論理ゲートの数や配線の量を削減しつつ、大きく複雑なCAMデバイスの構築を可能とするCAMデバイス用モジュールインタフェースを設計することも望ましい。
【0012】
(発明の概要)
個々のメモリの元の応答時間の無意味の遅れだけでより多い、複数のコンテントアドレッサブルメモリを統合して、各メモリの原応答時間から微少な遅延のみを持つ、より大きな結合されたコンテントアドレッサブルメモリとすることを可能にする高速インタフェースのための方法と回路。
【0013】
この新規なインタフェースは、バスシステムのみへの接続を提供し、このシステムの異なるCAMデバイス間での接続は必要とされない。これにより、例えばチップのような一つの装置内における一つのCAMと一つのCAMインタフェースとの組み合わせが可能となる。このようなチップは、例えばRAMのような標準メモリチップとして知られているように、他の追加インタフェースを必要とせずに、バスシステムに直接取り付けることによってCAMメモリを増設するモジュールとして使用することができる。
【0014】
本発明のインタフェースは、グループ化したメモリセルの各グループを、大規模結合CAMデバイスに本発明のインタフェースを介してインタフェース接続することによって、CAMデバイス内に階層的構造を作るためにも利用できる。このような構造において、それぞれのグループの主要な機能は、より少数のセル上で動作し、インタフェースを作成するために必要なゲート数は比較的少数であるため、CAMデバイスをより少ないゲート数で実現することが容易となる。
【0015】
結合CAMデバイスにおいて、いくつかのCAMは、それぞれのインタフェース経由でアドレスバスとデータバスに接続される。リード(Read)およびライト(Write)モードでは、インタフェースは、2セットのラインを接続し、これにより、リードまたはライト操作に対して透過的となる。検索モード(コンテントアドレスモード)では、インタフェースは、予め定義された方向において最も上位のマッチングセルアドレスを出力するために、CAMの応答に応じてデータバスのラインの数を選択して設定する。インタフェース回路は、より多いアドレス範囲にCAMのコンテントアドレス機能をより広い範囲のアドレスに拡張するために必要な論理関数とラインを追加し、前記のより広い範囲にセルのアドレスを書きこむためのバスラインの追加数をセットし、システムを通じてより上位のアドレスをもつ他のセルが応答しないことを確認する。この確認の際、CAMアドレスのビットがセルのアドレスをより上位のアドレスに変化させるのであれば、それらのビットをマスクする。このようにして、CAMの集合全体が、より大きなサイズの一つのCAMとして機能することが可能となる。
【発明を実施するための最良の形態】
【0016】
本発明の目的は、いくつかのコンテントアドレッサブルメモリを統合して、一つのより大きな結合されたコンテントアドレッサブルメモリとすることを可能にする高速インタフェースを提供することである。本発明にかかる方法と回路によれば、この新規なインタフェースは、新しいインタフェースは、バスシステムのみへの接続を提供し、同じシステム内の異なるCAM間でのいかなる接続も必要としない。本発明にかかるインタフェースは、このインタフェースによって加わる遅延が、非常に小さく、かつ組み込まれているCAMの数に依存しないという点で有利である。従って、この新規なインタフェースは、組み込まれている全てのCAMを、単一のCAMデバイスの応答時間とほぼ等しい応答時間を有する、より大型の一つのコンテントアドレッサブルメモリに統合する。
【0017】
本発明のインタフェースは、また、コールアウトタイプの内部接続メモリにも用いることができる。これらのメモリは、R/Wモードまたはコールアウトモードのいずれかで動作するように設計されている。コールアウトメモリは、範囲回路(Range Circuit)を備え、コールアウトモードの場合、範囲回路は、予め定義された方向で最も大きい値であるが原アドレスよりも小さい値のマッチングセルアドレスを、バスへ出力する。このようなメモリは、PCT国際出願PCT/IL 00/00121およびPCT/IL 00/00327に記載されている。
【0018】
以下の例は、本発明のインタフェースを最適に示すかも知れない。利用可能なCAMデバイスが2w1の基本セルを有する場合、各セルはWdビットを格納でき、この新規なインタフェースは、2w1+w2セルを有するCAMメモリを作るために、2w2までの同じCAMを統合する手段を提供する。この例では、CAMデバイスの全ては、同じサイズ、すなわち同じセル数を持つ。しかし、本発明は、サイズが異なる複数のCAMデバイス用のインタフェースも提供できる。
【0019】
本発明の利点は、得られたより大きいコンテントアドレッサブルメモリアレイが、個々のCAMの各々とほぼ同じ速度で動作する点にある。最小限の遅延のみが加わる。
【0020】
本発明の方法および回路のさらに有利な特徴によれば、本発明に従って設計されたインタフェースは、CAMモジュールとバスシステムのみへ接続する(すなわち、当該システムの他のCAMへの接続が必要ない)モジュールインタフェースを提供する。この特徴によれば、例えばチップのような一つのデバイスにおける一つのCAMと一つのCAMインタフェースとの組み合わせが可能となる。そのようなタイプのいくつかのデバイスまたはチップは、より大きなメモリを形成するために、いくつかの標準的なメモリチップ(例えばランダムアクセスメモリ)の追加で知られているのと同様に、バスシステムに他のインタフェースを追加することなく、バスシステムに直接的に用いることができる。
【0021】
本発明のさらに別の有利な特徴は、本発明によって設計されたインタフェースが、本発明のインタフェースによってさらに大きなCAMデバイスへインタフェース接続されるCAMグループ内に、階層的な構造を作るために用い得ることである。このようなアーキテクチャを用いることにより、各グループの主な機能が、より少数のセルで動作するので、CAMを実現するために必要な論理ゲートの数を減らすことができる。インタフェースを作成するために必要なゲート数は、一つのグループの全セルに対してそのようなインタフェースは一つだけ設けられていれば良いので、比較的少ない。上記に列挙した本発明の利点によれば、ゲート数が削減されたCAMデバイスの実現が容易となる。
【0022】
本発明のインタフェースを用いてコールアウトメモリをインタフェース接続する場合、原アドレスインタフェースも提供される。このインタフェースは、システムバスから原アドレスを受け取り、CAMの少なくとも一つのセルが、原アドレスよりも下位のアドレス(予め定義された方向で)を持つ場合にのみ、CAMを有効にする。
【0023】
本発明は、以下に、好適な実施形態に限って説明する。しかし、本発明のインタフェースおよび回路について、ここに説明し特許請求の範囲に記載するとおりの本発明の範囲内で、多数の変更および修正が可能であることは、言うまでもない。
【0024】
図1に、CAMメモリは、本発明にかかるインタフェースと共に示されている。このインタフェースは、Wa本のアドレス線を介してアドレスバスに接続されている。CAMは、Wb本のアドレス線を介して、インタフェースに接続されている。Wbは、Wa以下である。アドレス線の数であるWbは、CAMデバイスの仕様に従い、CAMデバイスの操作に必要なアドレス線の数である。
【0025】
インタフェースは、また、一方でデータバスへ接続され、他方でCAMデバイスバスラインへ接続されている。CAMデバイスからまたはCAMデバイスへの値を読む間または書き込む間は、インタフェースは、2セットのバスラインを接続し、これにより、リードまたは書き込み操作に対して透過性となる。検索モード(コンテントアドレスモード)で動作するときは、インタフェースは、このシステム上の全てのCAMの全セルのうち、CAMの一つのマッチングセルの位置(アドレス)を表す値をデータバスへ出力するために、CAMの応答に応じて、データバスのライン数を選択して設定する。ただし、このCAMのマッチングセルが、予め定義された方向で最も上位のアドレスを有するセルであることが条件である。
【0026】
バスシステムの全アドレス空間においてCAMおよびCAMインタフェースの特定の位置を定義するために用いられる多くの選択線が、インタフェースに接続されている。このような選択線は、制限されたアドレス空間を有するデバイスの位置を定義するために、バスシステム内で共通に使用される。一般的に、選択線は、予め定義された論理レベルに固定されることにより、システムの全メモリ範囲におけるCAMセルのアドレス範囲が定義される。
【0027】
システムバスの制御線の別のセットも、インタフェースに接続されている。この制御線は、インタフェースからCAMデバイスまでの間も接続する。システムバスからインタフェースまでの制御線は、図1に示されている。バス制御線と、インタフェースからCAMデバイスまでの制御線は、指定されたインタフェース制御線である。このような制御線は、バスプロトコルの実現に必要な信号を伝送するものであり、バスシステムで共用される。
【0028】
より大きなCAMデバイス内に設けられ、本発明のCAMインタフェースを介して接続されたCAMを、ここではCAMモジュールと称する。
【0029】
インタフェース回路の目的は、CAMモジュールのコンテントアドレス機能を、より広い範囲のアドレスに拡張するために必要な論理関数やラインを追加することにある。CAMモジュールは、限られたサイズ用に設計されているので、システム全体のアドレスを定義するために必要なビット数よりも少ないビット数で、応答セルの1つのアドレスを出力できる。CAMモジュールをより大きなコンテントアドレッサブルメモリに統合したらすぐに、アドレスを書くためにバスラインの追加の数を設定することが必要となる。さらに、アドレスが出力される前に、システム中でより上位のアドレスをもつ他のセルが応答しないことを確認する必要がある。CAMインタフェースは、その後、a)拡張された応答セルアドレスを書き込むための追加のバスラインを設定する、b)アドレスのビットを、それらのビットにより上位のアドレスを持つ応答セルのアドレスが変更されるならば、マスクする。
【0030】
例えば、それぞれが2w1セルを有するCAMデバイスを複数個統合することにより、一つの大きいCAMアレイを設計できる。これらのCAMデバイスの各々は、各々が有する個々のマッチングセルのアドレス値を設定するために、w1本のラインを引き出すこととなる。2w2個のCAMデバイスによって形成されたより大きなシステムは、アドレス値を出力するためにw1+w2本のラインを必要とする。そこで、インタフェースの役割は、CAMのw1本のラインをインタフェースして、CAMモジュールの集合全体が大きなサイズの一つのCAMとして機能するように、データバスに接続されたw2本のラインを適切に設定することとなる。
【0031】
図2において、複数のCAMデバイスを統合して、1つのより大きいコンテントアドレッサブルメモリを形成する方法を示す。CAMとCAMインタフェースは、基本CAMブロックにグループ化される。各々の基本CAMブロックは、CAMモジュールとCAMインタフェースから構成される。基本CAMブロック間は、いかなる接続も必要ではない。各基本ブロックは、システムバスのみに接続されている。これは、従来技術に対する、本発明にかかるCAMインタフェースの利点を説明するものである。
【0032】
従来のCAMでは、複数のCAMモジュールをより大きなCAMアレイ中でカスケード接続させるためには、CAMモジュール間の接続が必要である。その結果として、モジュール式にCAMアレイを大きくすることは不可能である。
【0033】
本発明にかかる新規な設計によってCAMデバイスをCAMインタフェースに接続することにより、複数のCAMモジュールをモジュール組み立て式に統合させることにより、より大きいCAMアレイを形成することができる。これは、複数の共通メモリデバイス(例えばRAM)が、バスシステム内の接続に何も追加せず、接続の変更もせずに、バスシステムに追加される場合と同様の方法でなされる。
【0034】
例えば、CAMインタフェースがCAMデバイスと一体的に実装されれば(例えば同じチップ内に)、例えばRAMのような標準メモリデバイスと同じモジュール方式を持った新しいCAMエレメントが得られる。
【0035】
図3に、大きなCAMを生成するために用いられるCAMとCAMインタフェースの階層構造を示す。単体の基本CAMブロックA1,A2,Anのそれぞれは、縮小されたアドレス空間用に設計されており、これにより、アドレスを記述するために必要なビット数が削減され、用いられる論理ゲート数も同様に削減される。
【0036】
そして、これらの単体のCAMは、前述のCAMをグループバスAおよびBにそれぞれ接続することにより2つのより大きなCAMを実現するCAMインタフェースにより、二つのグループAおよびBに接続される(A1からAnはグループAへ、B1からBnはグループBへ)。
【0037】
これら二つのより大きなCAMは、二つの追加CAMインタフェースG1およびG2により、システムバスへ接続され、各々が前記のより大きなCAMの一つとインタフェースG1およびG2の一つを備えた二つの複合CAMブロックは、さらに大きなサイズの一つのCAMに統合される。この例では、二つの複合CAMブロックのみを示したが、任意の数のブロックを用いることができることは言うまでもない。また、同じ原理は逆方向にも作用し、すなわち、例えば、すべてのサブグループは複数のより小さなサブグループを含んでもよい。このような階層構造は、一つのデバイス(例えば一つのチップ)内で大きなサイズのCAMを実現するために用いることができる。
【0038】
この階層構造を目的として、追加の出力がそれぞれのCAMインタフェースに設けられる。この出力(match)は、少なくとも一つのメモリセルがマッチングすると判定された場合に有効化される。
【0039】
より高階層のCAMインタフェースに接続するために複数のCAMモジュールが一つのグループに集められる場合、図3においてHで示されるOR機能が、これらマッチラインの全てに適用される。このORの出力は、その後、より高階層のCAMインタフェースに接続される。この信号は、その後、より低階層のグループに接続する全てのセルのうち少なくとも一つのセルがマッチした場合に、より高階層のインタフェースを選択的に有効化するために用いられる。
【0040】
図4に、コールアウトメモリ用に設計されたCAMインタフェースの好ましい実施形態のブロック図を示す。このCAMインタフェースは、以下の構成要素を含む。
【0041】
a)チップセレクト:デバイスを有効化するバスシステムで一般的に用いられる論理回路である。本インタフェースでは、チップセレクトは、読み出しまたは書き込み処理に対してCAMを有効化するために、ノーマルモードで用いられる。
【0042】
b)ブロックレンジ回路:レンジ回路は、インタフェースがコンテントアドレッシングモードである場合にアドレスバスライン上のデータセットをセレクトライン上のデータセットと比較する比較回路である。予め定められた方向において、前者が後者以下であれば、CAMデバイスを有効化するブロックセレクト信号が発行される。コントロールライン(CO)も、コンテントアドレッシングモードで選択的にCAMを操作するために、CAMに入力される。
【0043】
c)CAMデバイス:
本発明の範囲では、CAMデバイスは、以下のように、通常、通常のストア機能およびリトリーブ機能に加えてコンテントアドレッシング機能を有するメモリデバイスを指定する:
CAMデバイスがコンテントアドレッシングモードにセットされたとき、多くのバスインタフェースラインに所定の値が設定され、デバイスは、他のバスラインセットに一つのメモリセルの一を表すデータをセットすることにより応答する。そのセル(以下、応答セルと称する)は、最初のバスラインに提示されたデータ(以降、マッチングデータと称する)との間で予め定義された関係を確認するデータを格納している。
【0044】
データは、ここで、CAMデバイス内のセルのアドレスを二進数表記するために必要なビット数として定義される。
【0045】
CAMインタフェースは、CAMの全てのセルに対する基底アドレスを定義するW2セレクトラインを受信する。これにより、システム全体におけるCAMのセルアドレスは、Da最下位ビットとW2最上位ビットを持つ二進数となる。
【0046】
CAMデバイスは、入力として、通常の読み出しモードと書き込みモード間で選択を行うR/W信号と、ノーマルモードおよびコールアウトモード間で選択を行うCOラインとを受信する。メモリデバイスで一般的に用いられる他のコントロールラインも、CAMの通常の機能を有効化するために、CAMへ入力される。CAMは、ノーマルモードではチップセレクトにより、コールアウトモードではレンジ回路により、有効化される。
【0047】
通常の読み出しまたは書き込み動作では、Da+Dbデータバスラインが、一対のバッファを介してCAMデバイスへ接続される。Da+Dbは、読み出しまたは書き込み動作のためにCAMが用いる(最大)ビット数である。
【0048】
コールアウトモードでは、Daラインのみが、データバスへバッファされ、データバス上の応答セルの部分アドレスをセットするために用いられる。この部分アドレスは、CAMデバイス内の応答セルのアドレスである。ブロックプライオリティマスクが、それから、W2セレクトラインに従って、メモリシステム全体におけるCAMデバイスの位置を表す残りのアドレスをセットする。これらのW2ライン上のデータセットを、ブロックアドレスとも称する。
【0049】
d)ブロックプライオリティマスク:
W2ラインの同じW2最上位ビットを含んでいるアドレス(ブロックアドレス)は、CAMデバイス内のすべてのセルに割り当てられる。
【0050】
CAMの一つのセルが応答するとき、これらのW2最上位ビットをセットするように設計され、バスにセットされているアドレスがより大きい値を有する場合は、他の任意のアドレスの設定ビットをマスクする。
【0051】
この機能を実装するために、ブロックプライオリティマスクは、入力として、データバスラインとW2セレクトラインを受信する。これらの入力の論理機能により、ブロックプライオリティマスクは、ブロックアドレスにおいて、それ自体のブロックアドレスよりも高い値のアドレスを変更しないビットのみを、出力として有効化する。
【0052】
ブロックプライオリティマスクは、コールアウトモードが有効化され、一つのCAMセルが応答する場合に有効化される。ブロックプライオリティマスクは、データバス上でそれ自体のブロックアドレスよりも高いアドレスを検出しなければ、応答セルのアドレスをデータバス上へ出力するための有効化信号を、最初のバッファへ出力する。
【0053】
e)マッチ検出回路。CAMの一部、または、CAMに追加された論理回路であっても良い。ほとんどのCAMデバイスは、マッチ検出出力を備える。この出力は、CAMの少なくとも一つのセルが応答する場合に有効化される。本実施形態では、この出力は、ブロックプライオリティマスクを有効化するために用いられる。
【0054】
f)ゲート配置(ゲート1)は、以下の機能を実行する:
−ブロックプライオリティマスクを、コンテントアドレッシングノードのみにおいて有効化する。
【0055】
−ブロックプライオリティマスクを、一つのセルがマッチングデータを有する場合にのみ有効化する。
【0056】
g)バッファ1,2
バッファ1は、CAMからのデータバスのDaラインを接続または切り離すために用いられる。このバッファは、ORゲート(ゲート3)からの有効化信号を受信する。有効化信号が発行されたとき、バッファは、DaデータバスラインとCAMバスラインとの間の接続を実行する。
【0057】
バッファ2は、CAMからのデータバスのD1bラインを接続または切り離すために用いられる。バッファ2は、COを無効化信号として受信する。COが有効である場合、バッファ2は、データバスからのCAMのDbラインを切り離す。
【0058】
CAMだけがバスシステムに接続されているとすれば、CAMのDa+Dbラインがデータバスに接続されるであろう。読み出しまたは書き込みモードでは、これらのラインは、リトリーブまたはストアされるべきデータを転送するために用いられる。
【0059】
CAMが新規なCAMインタフェースに連結されている場合、通常の読み出し/書き込みモード(CO信号が無効)では、通常の読み出し/書き込み動作を実行するためには、データバスラインの全てが、メモリセルに接続されている必要がある。それから、CAMインタフェースのバッファ1,2は、データバスラインをCAMに接続するために有効化される。図4を参照すれば、CO信号がORゲート(ゲート3)へ入力され、COが有効化されていなければORゲートがバッファ1へ有効化信号を出力することが分かるであろう。図4には、さらに、CO信号がバッファ2へ直接入力され、このCOが有効化されていなければバッファ2が有効化されることが示されている。
【0060】
コールアウトモードでは、CAMは、限定された数Daのライン上に応答セルのアドレスをセットする。このときCAMのDbラインは使用されない。これらのラインはバッファ2によりデータバスから切り離される。
【0061】
CAMの一つのセルが応答する場合、CAMがCAMのアドレスをDaライン上にセットし、ブロックプライオリティマスクが有効化される。ブロックプライオリティマスクは、W2ライン上のデータバスに、ブロックアドレスと、より高いアドレスに他の応答セルがない場合はこれとをセットする。この場合、ブロックプライオリティマスクは、有効化信号もバッファ1へ出力する。これにより、CAMが、Da最下位ビットに応答セルのアドレスを出力することが可能となる。
【0062】
ブロックプライオリティマスクは、それ自体のアドレスより高い値を持つアドレスがデータバスにセットされていることを検出すると、バッファ1に有効化信号を出力しない。これにより、CAMはデータバスから切り離されたままとなる。
【0063】
図4における単一のCAMは、図2を参照して説明したようなエレメンタリーCAMブロックや複合CAMブロックなどのより複雑なユニットに置き換えることが可能であり、新規なインタフェースは、この複合ユニットに関しても同様にして読み書きやコールアウト機能を有効化することができる。
【0064】
図5に、ブロックプライオリティマスクとデータバスとの接続を示す。ブロックプライオリティマスクの一方の側に、データバスラインが入力として接続され、ブロックプライオリティマスクの他方の側に、ブロックプライオリティマスクの各出力ラインが、ワイドORによりデータバスに接続されている。
【0065】
図6は、プライオリティマスクの好ましい実施形態を示す。ブロックアドレスNは、図6において、以下のように表される。
(数1)
ここで、Kはブロックアドレスの設定ビット数から1を減じた値である。u(N,k)は、ブロックアドレス中で、最下位ビットからk番目のビットの位置である。
【0066】
例えば、16(4ビット)メモリセルを有するCAMを、256(8ビット)メモリセルを有するより大きなCAMに接続するためには、ブロックアドレスは4ビットを有する。ブロックアドレスは、その4ビットを最上位に、最下位ビットの全てが0であるアドレスを持つ:
例えば、N=1010,0000
設定ビット数は2であり、K=1である。
【0067】
10100000=1.27+1.25とも書ける。
【0068】
従って、この場合は、
U[N,0]=5; U[N,1]=7;
再び図6を参照すれば、ブロックアドレスの全設定ビットについて、ラインP{N,u(N,k)}はブロックプライオリティマスクからの出力である。
【0069】
このラインの状態は、論理ゲートによって設定され、以下の全ての条件が確認された場合、アクティブ(論理1)に設定される:
a)_CAMの少なくとも一つのセルが応答することにより、有効化信号Eが有効化されている。
【0070】
b)_より上位のビット位置における次のラインの状態がアクティブ(論理1)である、または、現在のラインが最上位ビットである。
【0071】
c)_現在のラインビット位置と、より上位のビット位置における次のラインとの間のビットの全てのバスラインの状態がアクティブではない。
【0072】
P{N,u(N,0)}がアクティブであり、かつ、P{N,u(N,0)}よりも下位のブロックアドレスのビットにおける全バスラインの状態がアクティブではない場合、ブロックマッチ信号が発行される。このようなラインがない場合、ブロックマッチラインは、P{N,u(N,0)}により直接的に有効化される。
【0073】
ブロックプライオリティマスクがP(k)ラインを一つも持たない場合(ブロックアドレス=0)、有効化信号がアクティブにされたときに、ブロックマッチ信号が出力される。
【0074】
この論理回路の目的は、データバスのより上位のビットにおいて既に設定された部分アドレスを変更しようとする場合に、データバスのビットをマスクすることである(すなわち設定ではない)。
【0075】
この例は、特定の実施態様を示したが、プライオリティマスクの実施態様については、データバスのより上位のビットの一つまたは複数のラインがアクティブである場合に、ブロックアドレスが未設定ビットを有する位置においてラインP{N,u(N,k)}をマスクする(すなわち無効状態を維持する)という同じ原理を有する限りにおいて、あらゆる多様な実施態様が可能である。
【図面の簡単な説明】
【0076】
【図1】図1は、本発明のCAMデバイス用のインタフェースの一般的な構成を示す。
【図2】図2は、複数のCAMが、それぞれのCAMを本発明のCAMインタフェースに結合することによって一つのより大きいCAMに統合される様子を示す。
【図3】図3は、複数のCAMがより大きいCAMを形成するためにグループ化される様子を示す。これらのCAMグループも、本発明によりインタフェース接続されており、これにより、さらに大きなCAMメモリを形成する。
【図4】図4は、本発明のCAMインタフェースの構成要素を示す。
【図5】図5は、プライオリティマスクが、“OR”関数においてデータバスへどのように接続されるかを示す。
【図6】図6は、プライオリティマスクの実現例を示す。
【0001】
本発明は、複数のコンテントアドレッサブルメモリを、一つのより大きな結合コンテントアドレッサブルメモリへ統合することを可能にする高速度インタフェースの方法と回路に関する。
【0002】
本発明において、コンテントアドレッサブルメモリ(CAM)という用語は、一般に、通常のメモリのストア機能やリトリーブ機能に加えて、コンテントアドレス機能を有する記憶装置を意味する。コンテントアドレス機能の処理内容は、以下に記すとおりである:
コンテントアドレッサブルメモリ装置は、多数のバスインタフェースラインに所定の値がセットされることにより、コンテントアドレスモードになる。そして、コンテントアドレッサブルメモリ装置は、バスインタフェースラインの別のセットに、1つのメモリセルの位置を表すデータをセットすることにより応答する。そのセル(以下、応答セルと称する)は、予め定義された最初のバスインタフェースラインに現れるデータとの関係を確認するデータを格納している(以下、マッチングデータと称する)。いくつかのタイプのCAMで、バスインタフェースラインの最初のまたは2番目のセットは、動作サイクルの上述の両方のフェーズで用いられる物理的に同じラインであることもある。最初のまたは2番目のバスインタフェースラインのセットを、以下では、アドレスバスおよびデータバスと称する。
【0003】
上記のようなメモリデバイスは、例えば、米国特許第4,805,093号、米国特許第5,502,832号、および米国特許第5,568,416に開示されている。
【0004】
本発明において、CAMは、PCT国際特許出願00/00121およびPCT国際特許出願00/00327に開示されたようなコールアウトメモリをも意味する。コールアウトメモリは、アドレス値(「原アドレス」という用語を用いる)を定義する「レンジ」機能も有することがある。原アドレスは、コールアウトメモリへの入力として転送されることがある。
【0005】
コンテントアドレスモードにおいて、この原アドレスは、所定の方向への検索機能の開始位置を定義する。この検索は、コールアウトメモリのアドレス出力が、マッチングデータを持つ全てのメモリセルの中で最大であり、しかし、原アドレスよりも小さくなるように定義される。コールアウトメモリの場合は、コンテントアドレスモードは、コールアウトモードとも称される。
【0006】
現存するCAMデバイスは、実現に必要なゲート数が膨大であるので、その容量に限界がある。その結果、大きなコンテントアドレッサブルメモリ空間が必要な場合は、複数のCAMデバイスを用いなければならない。しかし、多くのCAMを併合して一つの大きなコンテントアドレッサブルメモリを実現するためには、専用のインタフェースまたは接続が必要となる。このようなインタフェース回路は、反対に遅延を生じさせ、コンテントアドレッサブルメモリ全体での応答(検索)時間に遅れを引き起こす結果となる。
【0007】
複数のCAMをモジュラー式に連続して接続する様々な方法(国際公開WO99/23662、米国特許第5,930,359)が提案されている。しかし、これらの方法は、応答時間の劣化を伴うものである。例えば、米国特許第5,930,359の場合は、検索された結果は、全てのCAMをパイプライン転送され、これにより、最終的な応答に、潜在的な遅れにCAMの数を乗じた遅れを生じさせる。国際公開WO99/2362には、論理信号だけがCAMからCAMを通過することにより、最初のゲートの遅れにCAMの数を乗じたものと等しい遅れを生じさせる、改良されたシステムが示されている。
【0008】
両方のケースで、複数のCAMを一つの大きなコンテントアドレッサブルメモリに統合することは、メモリの応答時間の劣化を引き起こす。
【0009】
これらの統合手法における別の欠点は、異なるCAMデバイス間での連結が必要であるため、バスシステムの並行アーキテクチャが乱されるということである。これは、システムのモジュール性と拡張可能性を損なう。
【0010】
従って、CAMデバイス用モジュールインタフェースであって、遅延を生じさせず、かつバスシステムの並行アーキテクチャを保護するインタフェースを設計することが望まれている。さらに、CAMデバイスと一体的に構築されるCAMデバイス用モジュールインタフェースを設計し、結合されたCAMとインタフェースとが、他の回路を追加することなく現存のメモリを迅速かつ用意に拡張するための一つのモジュールユニットとして応用され得るようにすることも望まれている。
【0011】
また、このような構造に必要な論理ゲートの数や配線の量を削減しつつ、大きく複雑なCAMデバイスの構築を可能とするCAMデバイス用モジュールインタフェースを設計することも望ましい。
【0012】
(発明の概要)
個々のメモリの元の応答時間の無意味の遅れだけでより多い、複数のコンテントアドレッサブルメモリを統合して、各メモリの原応答時間から微少な遅延のみを持つ、より大きな結合されたコンテントアドレッサブルメモリとすることを可能にする高速インタフェースのための方法と回路。
【0013】
この新規なインタフェースは、バスシステムのみへの接続を提供し、このシステムの異なるCAMデバイス間での接続は必要とされない。これにより、例えばチップのような一つの装置内における一つのCAMと一つのCAMインタフェースとの組み合わせが可能となる。このようなチップは、例えばRAMのような標準メモリチップとして知られているように、他の追加インタフェースを必要とせずに、バスシステムに直接取り付けることによってCAMメモリを増設するモジュールとして使用することができる。
【0014】
本発明のインタフェースは、グループ化したメモリセルの各グループを、大規模結合CAMデバイスに本発明のインタフェースを介してインタフェース接続することによって、CAMデバイス内に階層的構造を作るためにも利用できる。このような構造において、それぞれのグループの主要な機能は、より少数のセル上で動作し、インタフェースを作成するために必要なゲート数は比較的少数であるため、CAMデバイスをより少ないゲート数で実現することが容易となる。
【0015】
結合CAMデバイスにおいて、いくつかのCAMは、それぞれのインタフェース経由でアドレスバスとデータバスに接続される。リード(Read)およびライト(Write)モードでは、インタフェースは、2セットのラインを接続し、これにより、リードまたはライト操作に対して透過的となる。検索モード(コンテントアドレスモード)では、インタフェースは、予め定義された方向において最も上位のマッチングセルアドレスを出力するために、CAMの応答に応じてデータバスのラインの数を選択して設定する。インタフェース回路は、より多いアドレス範囲にCAMのコンテントアドレス機能をより広い範囲のアドレスに拡張するために必要な論理関数とラインを追加し、前記のより広い範囲にセルのアドレスを書きこむためのバスラインの追加数をセットし、システムを通じてより上位のアドレスをもつ他のセルが応答しないことを確認する。この確認の際、CAMアドレスのビットがセルのアドレスをより上位のアドレスに変化させるのであれば、それらのビットをマスクする。このようにして、CAMの集合全体が、より大きなサイズの一つのCAMとして機能することが可能となる。
【発明を実施するための最良の形態】
【0016】
本発明の目的は、いくつかのコンテントアドレッサブルメモリを統合して、一つのより大きな結合されたコンテントアドレッサブルメモリとすることを可能にする高速インタフェースを提供することである。本発明にかかる方法と回路によれば、この新規なインタフェースは、新しいインタフェースは、バスシステムのみへの接続を提供し、同じシステム内の異なるCAM間でのいかなる接続も必要としない。本発明にかかるインタフェースは、このインタフェースによって加わる遅延が、非常に小さく、かつ組み込まれているCAMの数に依存しないという点で有利である。従って、この新規なインタフェースは、組み込まれている全てのCAMを、単一のCAMデバイスの応答時間とほぼ等しい応答時間を有する、より大型の一つのコンテントアドレッサブルメモリに統合する。
【0017】
本発明のインタフェースは、また、コールアウトタイプの内部接続メモリにも用いることができる。これらのメモリは、R/Wモードまたはコールアウトモードのいずれかで動作するように設計されている。コールアウトメモリは、範囲回路(Range Circuit)を備え、コールアウトモードの場合、範囲回路は、予め定義された方向で最も大きい値であるが原アドレスよりも小さい値のマッチングセルアドレスを、バスへ出力する。このようなメモリは、PCT国際出願PCT/IL 00/00121およびPCT/IL 00/00327に記載されている。
【0018】
以下の例は、本発明のインタフェースを最適に示すかも知れない。利用可能なCAMデバイスが2w1の基本セルを有する場合、各セルはWdビットを格納でき、この新規なインタフェースは、2w1+w2セルを有するCAMメモリを作るために、2w2までの同じCAMを統合する手段を提供する。この例では、CAMデバイスの全ては、同じサイズ、すなわち同じセル数を持つ。しかし、本発明は、サイズが異なる複数のCAMデバイス用のインタフェースも提供できる。
【0019】
本発明の利点は、得られたより大きいコンテントアドレッサブルメモリアレイが、個々のCAMの各々とほぼ同じ速度で動作する点にある。最小限の遅延のみが加わる。
【0020】
本発明の方法および回路のさらに有利な特徴によれば、本発明に従って設計されたインタフェースは、CAMモジュールとバスシステムのみへ接続する(すなわち、当該システムの他のCAMへの接続が必要ない)モジュールインタフェースを提供する。この特徴によれば、例えばチップのような一つのデバイスにおける一つのCAMと一つのCAMインタフェースとの組み合わせが可能となる。そのようなタイプのいくつかのデバイスまたはチップは、より大きなメモリを形成するために、いくつかの標準的なメモリチップ(例えばランダムアクセスメモリ)の追加で知られているのと同様に、バスシステムに他のインタフェースを追加することなく、バスシステムに直接的に用いることができる。
【0021】
本発明のさらに別の有利な特徴は、本発明によって設計されたインタフェースが、本発明のインタフェースによってさらに大きなCAMデバイスへインタフェース接続されるCAMグループ内に、階層的な構造を作るために用い得ることである。このようなアーキテクチャを用いることにより、各グループの主な機能が、より少数のセルで動作するので、CAMを実現するために必要な論理ゲートの数を減らすことができる。インタフェースを作成するために必要なゲート数は、一つのグループの全セルに対してそのようなインタフェースは一つだけ設けられていれば良いので、比較的少ない。上記に列挙した本発明の利点によれば、ゲート数が削減されたCAMデバイスの実現が容易となる。
【0022】
本発明のインタフェースを用いてコールアウトメモリをインタフェース接続する場合、原アドレスインタフェースも提供される。このインタフェースは、システムバスから原アドレスを受け取り、CAMの少なくとも一つのセルが、原アドレスよりも下位のアドレス(予め定義された方向で)を持つ場合にのみ、CAMを有効にする。
【0023】
本発明は、以下に、好適な実施形態に限って説明する。しかし、本発明のインタフェースおよび回路について、ここに説明し特許請求の範囲に記載するとおりの本発明の範囲内で、多数の変更および修正が可能であることは、言うまでもない。
【0024】
図1に、CAMメモリは、本発明にかかるインタフェースと共に示されている。このインタフェースは、Wa本のアドレス線を介してアドレスバスに接続されている。CAMは、Wb本のアドレス線を介して、インタフェースに接続されている。Wbは、Wa以下である。アドレス線の数であるWbは、CAMデバイスの仕様に従い、CAMデバイスの操作に必要なアドレス線の数である。
【0025】
インタフェースは、また、一方でデータバスへ接続され、他方でCAMデバイスバスラインへ接続されている。CAMデバイスからまたはCAMデバイスへの値を読む間または書き込む間は、インタフェースは、2セットのバスラインを接続し、これにより、リードまたは書き込み操作に対して透過性となる。検索モード(コンテントアドレスモード)で動作するときは、インタフェースは、このシステム上の全てのCAMの全セルのうち、CAMの一つのマッチングセルの位置(アドレス)を表す値をデータバスへ出力するために、CAMの応答に応じて、データバスのライン数を選択して設定する。ただし、このCAMのマッチングセルが、予め定義された方向で最も上位のアドレスを有するセルであることが条件である。
【0026】
バスシステムの全アドレス空間においてCAMおよびCAMインタフェースの特定の位置を定義するために用いられる多くの選択線が、インタフェースに接続されている。このような選択線は、制限されたアドレス空間を有するデバイスの位置を定義するために、バスシステム内で共通に使用される。一般的に、選択線は、予め定義された論理レベルに固定されることにより、システムの全メモリ範囲におけるCAMセルのアドレス範囲が定義される。
【0027】
システムバスの制御線の別のセットも、インタフェースに接続されている。この制御線は、インタフェースからCAMデバイスまでの間も接続する。システムバスからインタフェースまでの制御線は、図1に示されている。バス制御線と、インタフェースからCAMデバイスまでの制御線は、指定されたインタフェース制御線である。このような制御線は、バスプロトコルの実現に必要な信号を伝送するものであり、バスシステムで共用される。
【0028】
より大きなCAMデバイス内に設けられ、本発明のCAMインタフェースを介して接続されたCAMを、ここではCAMモジュールと称する。
【0029】
インタフェース回路の目的は、CAMモジュールのコンテントアドレス機能を、より広い範囲のアドレスに拡張するために必要な論理関数やラインを追加することにある。CAMモジュールは、限られたサイズ用に設計されているので、システム全体のアドレスを定義するために必要なビット数よりも少ないビット数で、応答セルの1つのアドレスを出力できる。CAMモジュールをより大きなコンテントアドレッサブルメモリに統合したらすぐに、アドレスを書くためにバスラインの追加の数を設定することが必要となる。さらに、アドレスが出力される前に、システム中でより上位のアドレスをもつ他のセルが応答しないことを確認する必要がある。CAMインタフェースは、その後、a)拡張された応答セルアドレスを書き込むための追加のバスラインを設定する、b)アドレスのビットを、それらのビットにより上位のアドレスを持つ応答セルのアドレスが変更されるならば、マスクする。
【0030】
例えば、それぞれが2w1セルを有するCAMデバイスを複数個統合することにより、一つの大きいCAMアレイを設計できる。これらのCAMデバイスの各々は、各々が有する個々のマッチングセルのアドレス値を設定するために、w1本のラインを引き出すこととなる。2w2個のCAMデバイスによって形成されたより大きなシステムは、アドレス値を出力するためにw1+w2本のラインを必要とする。そこで、インタフェースの役割は、CAMのw1本のラインをインタフェースして、CAMモジュールの集合全体が大きなサイズの一つのCAMとして機能するように、データバスに接続されたw2本のラインを適切に設定することとなる。
【0031】
図2において、複数のCAMデバイスを統合して、1つのより大きいコンテントアドレッサブルメモリを形成する方法を示す。CAMとCAMインタフェースは、基本CAMブロックにグループ化される。各々の基本CAMブロックは、CAMモジュールとCAMインタフェースから構成される。基本CAMブロック間は、いかなる接続も必要ではない。各基本ブロックは、システムバスのみに接続されている。これは、従来技術に対する、本発明にかかるCAMインタフェースの利点を説明するものである。
【0032】
従来のCAMでは、複数のCAMモジュールをより大きなCAMアレイ中でカスケード接続させるためには、CAMモジュール間の接続が必要である。その結果として、モジュール式にCAMアレイを大きくすることは不可能である。
【0033】
本発明にかかる新規な設計によってCAMデバイスをCAMインタフェースに接続することにより、複数のCAMモジュールをモジュール組み立て式に統合させることにより、より大きいCAMアレイを形成することができる。これは、複数の共通メモリデバイス(例えばRAM)が、バスシステム内の接続に何も追加せず、接続の変更もせずに、バスシステムに追加される場合と同様の方法でなされる。
【0034】
例えば、CAMインタフェースがCAMデバイスと一体的に実装されれば(例えば同じチップ内に)、例えばRAMのような標準メモリデバイスと同じモジュール方式を持った新しいCAMエレメントが得られる。
【0035】
図3に、大きなCAMを生成するために用いられるCAMとCAMインタフェースの階層構造を示す。単体の基本CAMブロックA1,A2,Anのそれぞれは、縮小されたアドレス空間用に設計されており、これにより、アドレスを記述するために必要なビット数が削減され、用いられる論理ゲート数も同様に削減される。
【0036】
そして、これらの単体のCAMは、前述のCAMをグループバスAおよびBにそれぞれ接続することにより2つのより大きなCAMを実現するCAMインタフェースにより、二つのグループAおよびBに接続される(A1からAnはグループAへ、B1からBnはグループBへ)。
【0037】
これら二つのより大きなCAMは、二つの追加CAMインタフェースG1およびG2により、システムバスへ接続され、各々が前記のより大きなCAMの一つとインタフェースG1およびG2の一つを備えた二つの複合CAMブロックは、さらに大きなサイズの一つのCAMに統合される。この例では、二つの複合CAMブロックのみを示したが、任意の数のブロックを用いることができることは言うまでもない。また、同じ原理は逆方向にも作用し、すなわち、例えば、すべてのサブグループは複数のより小さなサブグループを含んでもよい。このような階層構造は、一つのデバイス(例えば一つのチップ)内で大きなサイズのCAMを実現するために用いることができる。
【0038】
この階層構造を目的として、追加の出力がそれぞれのCAMインタフェースに設けられる。この出力(match)は、少なくとも一つのメモリセルがマッチングすると判定された場合に有効化される。
【0039】
より高階層のCAMインタフェースに接続するために複数のCAMモジュールが一つのグループに集められる場合、図3においてHで示されるOR機能が、これらマッチラインの全てに適用される。このORの出力は、その後、より高階層のCAMインタフェースに接続される。この信号は、その後、より低階層のグループに接続する全てのセルのうち少なくとも一つのセルがマッチした場合に、より高階層のインタフェースを選択的に有効化するために用いられる。
【0040】
図4に、コールアウトメモリ用に設計されたCAMインタフェースの好ましい実施形態のブロック図を示す。このCAMインタフェースは、以下の構成要素を含む。
【0041】
a)チップセレクト:デバイスを有効化するバスシステムで一般的に用いられる論理回路である。本インタフェースでは、チップセレクトは、読み出しまたは書き込み処理に対してCAMを有効化するために、ノーマルモードで用いられる。
【0042】
b)ブロックレンジ回路:レンジ回路は、インタフェースがコンテントアドレッシングモードである場合にアドレスバスライン上のデータセットをセレクトライン上のデータセットと比較する比較回路である。予め定められた方向において、前者が後者以下であれば、CAMデバイスを有効化するブロックセレクト信号が発行される。コントロールライン(CO)も、コンテントアドレッシングモードで選択的にCAMを操作するために、CAMに入力される。
【0043】
c)CAMデバイス:
本発明の範囲では、CAMデバイスは、以下のように、通常、通常のストア機能およびリトリーブ機能に加えてコンテントアドレッシング機能を有するメモリデバイスを指定する:
CAMデバイスがコンテントアドレッシングモードにセットされたとき、多くのバスインタフェースラインに所定の値が設定され、デバイスは、他のバスラインセットに一つのメモリセルの一を表すデータをセットすることにより応答する。そのセル(以下、応答セルと称する)は、最初のバスラインに提示されたデータ(以降、マッチングデータと称する)との間で予め定義された関係を確認するデータを格納している。
【0044】
データは、ここで、CAMデバイス内のセルのアドレスを二進数表記するために必要なビット数として定義される。
【0045】
CAMインタフェースは、CAMの全てのセルに対する基底アドレスを定義するW2セレクトラインを受信する。これにより、システム全体におけるCAMのセルアドレスは、Da最下位ビットとW2最上位ビットを持つ二進数となる。
【0046】
CAMデバイスは、入力として、通常の読み出しモードと書き込みモード間で選択を行うR/W信号と、ノーマルモードおよびコールアウトモード間で選択を行うCOラインとを受信する。メモリデバイスで一般的に用いられる他のコントロールラインも、CAMの通常の機能を有効化するために、CAMへ入力される。CAMは、ノーマルモードではチップセレクトにより、コールアウトモードではレンジ回路により、有効化される。
【0047】
通常の読み出しまたは書き込み動作では、Da+Dbデータバスラインが、一対のバッファを介してCAMデバイスへ接続される。Da+Dbは、読み出しまたは書き込み動作のためにCAMが用いる(最大)ビット数である。
【0048】
コールアウトモードでは、Daラインのみが、データバスへバッファされ、データバス上の応答セルの部分アドレスをセットするために用いられる。この部分アドレスは、CAMデバイス内の応答セルのアドレスである。ブロックプライオリティマスクが、それから、W2セレクトラインに従って、メモリシステム全体におけるCAMデバイスの位置を表す残りのアドレスをセットする。これらのW2ライン上のデータセットを、ブロックアドレスとも称する。
【0049】
d)ブロックプライオリティマスク:
W2ラインの同じW2最上位ビットを含んでいるアドレス(ブロックアドレス)は、CAMデバイス内のすべてのセルに割り当てられる。
【0050】
CAMの一つのセルが応答するとき、これらのW2最上位ビットをセットするように設計され、バスにセットされているアドレスがより大きい値を有する場合は、他の任意のアドレスの設定ビットをマスクする。
【0051】
この機能を実装するために、ブロックプライオリティマスクは、入力として、データバスラインとW2セレクトラインを受信する。これらの入力の論理機能により、ブロックプライオリティマスクは、ブロックアドレスにおいて、それ自体のブロックアドレスよりも高い値のアドレスを変更しないビットのみを、出力として有効化する。
【0052】
ブロックプライオリティマスクは、コールアウトモードが有効化され、一つのCAMセルが応答する場合に有効化される。ブロックプライオリティマスクは、データバス上でそれ自体のブロックアドレスよりも高いアドレスを検出しなければ、応答セルのアドレスをデータバス上へ出力するための有効化信号を、最初のバッファへ出力する。
【0053】
e)マッチ検出回路。CAMの一部、または、CAMに追加された論理回路であっても良い。ほとんどのCAMデバイスは、マッチ検出出力を備える。この出力は、CAMの少なくとも一つのセルが応答する場合に有効化される。本実施形態では、この出力は、ブロックプライオリティマスクを有効化するために用いられる。
【0054】
f)ゲート配置(ゲート1)は、以下の機能を実行する:
−ブロックプライオリティマスクを、コンテントアドレッシングノードのみにおいて有効化する。
【0055】
−ブロックプライオリティマスクを、一つのセルがマッチングデータを有する場合にのみ有効化する。
【0056】
g)バッファ1,2
バッファ1は、CAMからのデータバスのDaラインを接続または切り離すために用いられる。このバッファは、ORゲート(ゲート3)からの有効化信号を受信する。有効化信号が発行されたとき、バッファは、DaデータバスラインとCAMバスラインとの間の接続を実行する。
【0057】
バッファ2は、CAMからのデータバスのD1bラインを接続または切り離すために用いられる。バッファ2は、COを無効化信号として受信する。COが有効である場合、バッファ2は、データバスからのCAMのDbラインを切り離す。
【0058】
CAMだけがバスシステムに接続されているとすれば、CAMのDa+Dbラインがデータバスに接続されるであろう。読み出しまたは書き込みモードでは、これらのラインは、リトリーブまたはストアされるべきデータを転送するために用いられる。
【0059】
CAMが新規なCAMインタフェースに連結されている場合、通常の読み出し/書き込みモード(CO信号が無効)では、通常の読み出し/書き込み動作を実行するためには、データバスラインの全てが、メモリセルに接続されている必要がある。それから、CAMインタフェースのバッファ1,2は、データバスラインをCAMに接続するために有効化される。図4を参照すれば、CO信号がORゲート(ゲート3)へ入力され、COが有効化されていなければORゲートがバッファ1へ有効化信号を出力することが分かるであろう。図4には、さらに、CO信号がバッファ2へ直接入力され、このCOが有効化されていなければバッファ2が有効化されることが示されている。
【0060】
コールアウトモードでは、CAMは、限定された数Daのライン上に応答セルのアドレスをセットする。このときCAMのDbラインは使用されない。これらのラインはバッファ2によりデータバスから切り離される。
【0061】
CAMの一つのセルが応答する場合、CAMがCAMのアドレスをDaライン上にセットし、ブロックプライオリティマスクが有効化される。ブロックプライオリティマスクは、W2ライン上のデータバスに、ブロックアドレスと、より高いアドレスに他の応答セルがない場合はこれとをセットする。この場合、ブロックプライオリティマスクは、有効化信号もバッファ1へ出力する。これにより、CAMが、Da最下位ビットに応答セルのアドレスを出力することが可能となる。
【0062】
ブロックプライオリティマスクは、それ自体のアドレスより高い値を持つアドレスがデータバスにセットされていることを検出すると、バッファ1に有効化信号を出力しない。これにより、CAMはデータバスから切り離されたままとなる。
【0063】
図4における単一のCAMは、図2を参照して説明したようなエレメンタリーCAMブロックや複合CAMブロックなどのより複雑なユニットに置き換えることが可能であり、新規なインタフェースは、この複合ユニットに関しても同様にして読み書きやコールアウト機能を有効化することができる。
【0064】
図5に、ブロックプライオリティマスクとデータバスとの接続を示す。ブロックプライオリティマスクの一方の側に、データバスラインが入力として接続され、ブロックプライオリティマスクの他方の側に、ブロックプライオリティマスクの各出力ラインが、ワイドORによりデータバスに接続されている。
【0065】
図6は、プライオリティマスクの好ましい実施形態を示す。ブロックアドレスNは、図6において、以下のように表される。
(数1)
ここで、Kはブロックアドレスの設定ビット数から1を減じた値である。u(N,k)は、ブロックアドレス中で、最下位ビットからk番目のビットの位置である。
【0066】
例えば、16(4ビット)メモリセルを有するCAMを、256(8ビット)メモリセルを有するより大きなCAMに接続するためには、ブロックアドレスは4ビットを有する。ブロックアドレスは、その4ビットを最上位に、最下位ビットの全てが0であるアドレスを持つ:
例えば、N=1010,0000
設定ビット数は2であり、K=1である。
【0067】
10100000=1.27+1.25とも書ける。
【0068】
従って、この場合は、
U[N,0]=5; U[N,1]=7;
再び図6を参照すれば、ブロックアドレスの全設定ビットについて、ラインP{N,u(N,k)}はブロックプライオリティマスクからの出力である。
【0069】
このラインの状態は、論理ゲートによって設定され、以下の全ての条件が確認された場合、アクティブ(論理1)に設定される:
a)_CAMの少なくとも一つのセルが応答することにより、有効化信号Eが有効化されている。
【0070】
b)_より上位のビット位置における次のラインの状態がアクティブ(論理1)である、または、現在のラインが最上位ビットである。
【0071】
c)_現在のラインビット位置と、より上位のビット位置における次のラインとの間のビットの全てのバスラインの状態がアクティブではない。
【0072】
P{N,u(N,0)}がアクティブであり、かつ、P{N,u(N,0)}よりも下位のブロックアドレスのビットにおける全バスラインの状態がアクティブではない場合、ブロックマッチ信号が発行される。このようなラインがない場合、ブロックマッチラインは、P{N,u(N,0)}により直接的に有効化される。
【0073】
ブロックプライオリティマスクがP(k)ラインを一つも持たない場合(ブロックアドレス=0)、有効化信号がアクティブにされたときに、ブロックマッチ信号が出力される。
【0074】
この論理回路の目的は、データバスのより上位のビットにおいて既に設定された部分アドレスを変更しようとする場合に、データバスのビットをマスクすることである(すなわち設定ではない)。
【0075】
この例は、特定の実施態様を示したが、プライオリティマスクの実施態様については、データバスのより上位のビットの一つまたは複数のラインがアクティブである場合に、ブロックアドレスが未設定ビットを有する位置においてラインP{N,u(N,k)}をマスクする(すなわち無効状態を維持する)という同じ原理を有する限りにおいて、あらゆる多様な実施態様が可能である。
【図面の簡単な説明】
【0076】
【図1】図1は、本発明のCAMデバイス用のインタフェースの一般的な構成を示す。
【図2】図2は、複数のCAMが、それぞれのCAMを本発明のCAMインタフェースに結合することによって一つのより大きいCAMに統合される様子を示す。
【図3】図3は、複数のCAMがより大きいCAMを形成するためにグループ化される様子を示す。これらのCAMグループも、本発明によりインタフェース接続されており、これにより、さらに大きなCAMメモリを形成する。
【図4】図4は、本発明のCAMインタフェースの構成要素を示す。
【図5】図5は、プライオリティマスクが、“OR”関数においてデータバスへどのように接続されるかを示す。
【図6】図6は、プライオリティマスクの実現例を示す。
Claims (13)
- 二つ以上のCAMデバイスを、同じデータバスラインと同じアドレスバスラインへ接続することにより、一つの複合CAMアレイに統合するためのCAMインタフェースであって、
a)WaをWb以上の数として、前記CAMインタフェースを、アドレスバスラインと、CAMインタフェースをCAMデバイスへ接続するための複数(Wb)本のラインとに接続する複数(Wa)本のラインと、
b)CAMの第1の複数(Da)本のデータラインを、第1の有効化信号がセットされたときに、データバスの同数のデータラインへ選択的に接続する第1のバッファと、
c)CAMの第2の複数(Db)本のデータラインを、第2の有効化信号がセットされたときに、データバスのDbと等しい第2の数のデータラインへ選択的に接続する第2のバッファと、
d)複数(W2)本のセレクトラインを入力として受け取るプライオリティマスク回路とを備え、
前記プライオリティマスクの状態が、CAMインタフェースに対するブロックアドレスを定義すると共に、入力として有効化信号を受け取り、前記プライオリティマスク回路はW3本のデータラインを介してデータバスへさらに接続され、前記W3はW2以上であり、
CAM内の少なくとも一つのメモリセルが、アドレスバスライン上のデータセットとの所定の関係を照合するデータを格納している場合、前記CAMが、当該CAMに対して定義された内部優先順位に従って前記セルの一つを選択し、そのセルのアドレスを前記第1のバッファに与え、あるいは、前記CAMが前記信号に応答するセルのアドレスを前記第1のバッファへ与え、
前記CAMは、前記有効化信号をブロックプライオリティマスクへ出力し、
ブロックプライオリティマスク論理回路は、その後、前記ブロックアドレスを前記W3本のデータバスラインへ与えると共に、前記データバスラインに既に設定されている任意のアドレスであって、所定の方向についてより高いアドレスと干渉するブロックアドレスビットをマスクし、
データバスへより高いアドレスが出力されなかった場合、ブロックプライオリティマスク論理回路が第1の有効化信号を前記第1のバッファへ出力し、そのときに、選択されたアドレスが前記第1の本数のデータバスラインにセットされる、CAMインタフェース。 - 同じバスラインが、システムの機能要求に従って、アドレスバスラインおよびデータバスラインとして交互に用いられる、請求項1に記載のCAMインタフェース。
- アドレスバス上のアドレスセットをブロックアドレスと比較するブロックレンジ回路をさらに備え、前記ブロックアドレスが所定の方向において前記アドレスバス上のアドレスセット以下であった場合、CAMのみを有効化する、請求項1または2に記載のCAMインタフェース。
- ブロックプライオリティマスクおよびブロックアドレスであって、前記ブロックアドレスは、同じデータバスラインおよび同じアドレスバスラインに接続された二つ以上のメモリデバイスを備えた複合メモリアレイ中のCAMメモリデバイスのアドレスであり、
前記ブロックプライオリティマスクは、一本の有効化入力ラインと、前記ブロックアドレスの全てのビットセットkに対する一本の出力ラインP(k)と、一本のブロックマッチラインとを有し、
前記ブロックプライオリティマスクは、入力として前記データバスラインを受け取り、有効化されたとき、データバス上のどのデバイスも、ブロックアドレスが未設定ビットを有するより上位のビット位置のラインを設定していない場合に限り、前記出力ラインP(k)のそれぞれを有効化する論理機能を実行し、
ブロックマッチラインは、(a)全てのP(k)ラインが有効化され、かつ、(b)バスラインが最下位ビット位置を持つP(k)よりも下位ビット位置であった場合に、前記ブロックアドレスの任意のビット位置で有効化されたバスラインが他にない、という両条件が満たされた場合に有効化される。 - 以下の全ての条件が確認された場合、前記論理機能により、P(k)の状態がアクティブ(論理1)にセットされる、請求項3または4に記載のブロックプライオリティマスク。
a)_CAMの少なくとも一つのセルが応答することにより、有効化信号Eが有効化されている。
b)_より上位のビット位置における次のラインの状態がアクティブ(論理1)である、または、現在のラインが最上位ビット位置にある。
c)_現在のラインビット位置と、より上位のビット位置における次のラインとの間のビットの全てのバスラインの状態がアクティブではない。
最下位ビット位置のP(k)ラインがアクティブであり、かつ、P(k)よりも下位のブロックアドレスのビットにおけるバスラインの状態がいずれもアクティブではない場合、ブロックマッチ信号が発行される。 - プライオリティマスクが、P(k)ライン(ブロックアドレス=0)を持たず、前記ブロックアドレスの位置における全てのバスラインが設定されていない場合、ブロックマッチ信号が出力される、請求項5に記載の論理回路を有するブロックプライオリティマスク。
- 二つ以上のCAMが一つのグループに統合され、かつ、二つ以上のグループが一つの複合メモリアレイに統合された、あるいは、二つ以上の複合CAMメモリアレイまたは一つの複合CAMメモリアレイおよび単一CAMが一つのより大きな複合CAMメモリアレイに統合された、階層的なCAM構造であって、
前記CAMデバイスの各々が、追加の出力コネクションを備えたCAMインタフェースを有し、
この出力は、接続されたCAMの少なくとも一つのメモリセルがマッチングすると判断された場合に有効化され、
OR関数が前記CAMユニットの前記出力ラインに与えられ、
前記OR関数が、階層において隣接しかつ高位のCAMインタフェースに接続されることにより、前記出力信号が、CAMの低位階層グループ内で接続される全てのセルのうちの少なくとも一つのセルがマッチングする場合、前記高位の階層インタフェースを選択的に有効化することを特徴とする階層的なCAM構造。 - より大きな複合CAMメモリアレイを、個々に検索可能な、または必要であるとして検索サイクルから除外される、より小さなCAMユニットまたはグループに分割する、請求項7に記載のCAMメモリの階層構造。
- チップなどの個別のデバイス内に統合された、請求項7に記載のCAMメモリの階層構造。
- 請求項1のインタフェースを有するCAMメモリへ、当該CAMメモリを拡張するために、モジュールとして追加可能である、請求項7〜9のいずれかに記載の階層構造。
- メモリ検索のための原アドレスが、一つ以上のCAMユニットに与えられることにより、検索結果としてバスラインへ出力されるアドレスが、前記原アドレスとの所定の関係を表す、請求項7〜10のいずれかに記載の階層構造。
- 図面を参照してここに実質的に説明したCAMインタフェース。
- 図面を参照してここに実質的に説明したCAMメモリの階層構造。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/IL2001/000088 WO2002061757A1 (en) | 2001-01-30 | 2001-01-30 | Combined content addressable memories |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004520671A true JP2004520671A (ja) | 2004-07-08 |
Family
ID=11043028
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002561837A Withdrawn JP2004520671A (ja) | 2001-01-30 | 2001-01-30 | 複合コンテントアドレッサブルメモリ |
Country Status (6)
Country | Link |
---|---|
US (1) | US6957299B2 (ja) |
EP (1) | EP1356471A1 (ja) |
JP (1) | JP2004520671A (ja) |
CN (1) | CN1427994A (ja) |
IL (1) | IL151866A0 (ja) |
WO (1) | WO2002061757A1 (ja) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2004526272A (ja) * | 2001-02-01 | 2004-08-26 | メンコール インク. | 最長一致を検出するメモリ・システム |
US7054994B2 (en) * | 2002-07-29 | 2006-05-30 | Hy Wire Ltd. | Multiple-RAM CAM device and method therefor |
US20040044508A1 (en) * | 2002-08-29 | 2004-03-04 | Hoffman Robert R. | Method for generating commands for testing hardware device models |
US7779212B2 (en) | 2003-10-17 | 2010-08-17 | Micron Technology, Inc. | Method and apparatus for sending data from multiple sources over a communications bus |
US7778812B2 (en) * | 2005-01-07 | 2010-08-17 | Micron Technology, Inc. | Selecting data to verify in hardware device model simulation test generation |
US7904433B2 (en) * | 2007-10-09 | 2011-03-08 | O2Micro International Limited | Apparatus and methods for performing a rule matching |
DE102008001739B4 (de) * | 2008-05-14 | 2016-08-18 | Robert Bosch Gmbh | Verfahren zum Steuern eines Zugriffs auf Bereiche eines Speichers aus mehreren Prozessen heraus und Kommunikations-Modul mit einem Nachrichten-Speicher zur Realisierung des Verfahrens |
US7782646B2 (en) * | 2008-06-30 | 2010-08-24 | International Business Machines Corporation | High density content addressable memory using phase change devices |
US8381019B2 (en) | 2010-06-24 | 2013-02-19 | International Business Machines Corporation | EDRAM macro disablement in cache memory |
CN103400597B (zh) * | 2013-07-25 | 2016-04-20 | 安徽大学 | 一种超低功耗混合型内容可寻址存储器 |
CN104375946B (zh) * | 2013-08-16 | 2018-04-20 | 华为技术有限公司 | 一种数据处理的方法及装置 |
CN106205687B (zh) * | 2016-06-30 | 2018-06-05 | 湖南恒茂高科股份有限公司 | 存储器及其搜索控制电路 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5010516A (en) * | 1988-01-11 | 1991-04-23 | Texas Instruments Incorporated | Content addressable memory |
US5568416A (en) * | 1994-03-24 | 1996-10-22 | Kawasaki Steel Corporation | Associative memory |
JP3037089B2 (ja) * | 1994-12-14 | 2000-04-24 | 川崎製鉄株式会社 | 連想メモリ |
JP3166838B2 (ja) * | 1997-12-16 | 2001-05-14 | 日本電気株式会社 | プライオリティ・エンコーダ及びプライオリティ・エンコード方法 |
CN1252733C (zh) * | 2000-02-28 | 2006-04-19 | 梅姆考尔有限责任公司 | 存储系统、存储单元、比特屏蔽电路及相关方法 |
-
2001
- 2001-01-30 WO PCT/IL2001/000088 patent/WO2002061757A1/en not_active Application Discontinuation
- 2001-01-30 EP EP01902611A patent/EP1356471A1/en not_active Withdrawn
- 2001-01-30 CN CN01808869.4A patent/CN1427994A/zh active Pending
- 2001-01-30 US US10/240,104 patent/US6957299B2/en not_active Expired - Fee Related
- 2001-01-30 JP JP2002561837A patent/JP2004520671A/ja not_active Withdrawn
- 2001-01-30 IL IL15186601A patent/IL151866A0/xx unknown
Also Published As
Publication number | Publication date |
---|---|
US20030182498A1 (en) | 2003-09-25 |
CN1427994A (zh) | 2003-07-02 |
IL151866A0 (en) | 2003-04-10 |
EP1356471A1 (en) | 2003-10-29 |
US6957299B2 (en) | 2005-10-18 |
WO2002061757A1 (en) | 2002-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5999435A (en) | Content addressable memory device | |
JP3065736B2 (ja) | 半導体記憶装置 | |
US6480931B1 (en) | Content addressable storage apparatus and register mapper architecture | |
US5537353A (en) | Low pin count-wide memory devices and systems and methods using the same | |
US6845024B1 (en) | Result compare circuit and method for content addressable memory (CAM) device | |
US6212597B1 (en) | Apparatus for and method of architecturally enhancing the performance of a multi-port internally cached (AMPIC) DRAM array and like | |
US6521994B1 (en) | Multi-chip module having content addressable memory | |
JPH10511208A (ja) | マルチポートram用の拡張可能なデータ幅を有するsam | |
AU7600094A (en) | Multiple-port shared memory interface and associated method | |
US20030056061A1 (en) | Multi-ported memory | |
US7117291B2 (en) | Memory with synchronous bank architecture | |
JP2004520671A (ja) | 複合コンテントアドレッサブルメモリ | |
US6718432B1 (en) | Method and apparatus for transparent cascading of multiple content addressable memory devices | |
JPH11149781A (ja) | メモリアーキテクチャ | |
US6954823B1 (en) | Search engine device and method for generating output search responses from multiple input search responses | |
US6034965A (en) | Multi-stream associative memory architecture for computer telephony | |
JPH0635874A (ja) | 並列プロセッサ | |
US7107392B2 (en) | Content addressable memory (CAM) device employing a recirculating shift register for data storage | |
EP1314099A2 (en) | Method and apparatus for connecting a massively parallel processor array to a memory array in a bit serial manner | |
JP2003525511A (ja) | コールアウト機能付きメモリ | |
US6721233B2 (en) | Circuit and method for reducing memory idle cycles | |
US5875147A (en) | Address alignment system for semiconductor memory device | |
KR20030014384A (ko) | 복합 내용 주소화 기억장치 | |
JP2710580B2 (ja) | キャッシュメモリ装置 | |
WO2002001570A1 (en) | Call out memory with reduced surface |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20080401 |