(57)【特許請求の範囲】
【請求項１】
コンテントアドレサブルメモリデバイス内で検索動作、読み出し動作、及び書き込み動作を実行するための方法であって、
前記コンテントアドレサブルメモリ内で検索データを検索するために、前記検索データおよび検索制御信号を、第１のポートを経て検索制御ブロックに供給する工程であって、前記検索制御ブロックは、前記コンテントアドレサブルメモリにアクセスすることによって検索動作を実行するように構成されており、前記コンテントアドレサブルメモリは、第２のポートを経て検索結果を出力する、工程と、
メンテナンス制御ブロックが、第３のポートを経て、指定されたデータを前記コンテントアドレサブルメモリで読み出しまたは書き込みすることによって前記読み出し又は書き込み動作を実行する工程と、
を備え、
前記読み出し又は書き込み動作を実行する前記工程は、
前記メンテナンス制御ブロックが、前記検索動作のための第１のクロックと、前記読み出し又は書き込み動作のための第２のクロックとに応じた制御信号を出力する工程と、
前記メンテナンス制御ブロックが、前記読み出し又は書き込み動作が前記検索動作と同期されるように、前記制御信号に応じたタイミングで前記読み出し又は書き込み動作を実行する工程と、
を含み、
前記検索動作を実行する工程は、
前記検索制御ブロックが、前記検索動作が前記読み出し又は書き込み動作と同期されるように、前記制御信号に応じたタイミングで前記検索動作を実行する工程を含む、
方法。
【請求項２】
請求項１記載の方法であって、
前記コンテントアドレサブルメモリは、前記データを格納するための一組のバンクを備えており、前記読み出し又は書き込み動作では、前記データは前記バンクのうちの１つからアクセスされ、前記検索動作では、前記データは別のバンク内で検索される、方法。
【請求項３】
請求項１または２に記載の方法であって、
前記読み出し又は書き込み動作は、前記検索動作の検索サイクル内で実行される、方法。
【請求項４】
請求項１〜３の何れか一項に記載の方法であって、
前記第１のポートと前記第２のポートと前記第３のポートは、検索入力ポートと検索結果ポートと読み出し又は書き込み用のポートである、方法。
【請求項５】
請求項１〜４の何れか一項に記載の方法であって、
前記検索制御ブロックは、検索データバスを介した前記検索データを前記第１のポートを経て受け取り、前記メンテナンス制御ブロックは、読み出し又は書き込み用のデータバスを介した前記指定されたデータを前記第３のポートを経て通信し、前記コンテントアドレサブルメモリは、検索結果バスを介した前記検索結果を前記第２のポートを経て出力する、方法。
【請求項６】
３ポートコンテントアドレサブルメモリデバイスであって、
データを格納するためのコンテントアドレサブルメモリと、
前記コンテントアドレサブルメモリ内で検索データを検索するために、前記検索データおよび検索制御信号を第１のポートを経て受け取るように構成され、前記コンテントアドレサブルメモリにアクセスすることによって検索動作を実行するように構成された検索制御ブロックと、
前記コンテントアドレサブルメモリから検索結果を出力するように構成された第２のポートであって、前記コンテントアドレサブルメモリが前記検索動作の検索結果を該第２のポートを経て出力する前記第２のポートと、
読み出し又は書き込み動作のために、前記コンテントアドレサブルメモリとの間で、第３のポートを経て読み出し又は書き込みデータを通信するように構成されたメンテナンス制御ブロックと、
を備え、
前記メンテナンス制御ブロックは、前記検索動作のための第１のクロックと、前記読み出し又は書き込み動作のための第２のクロックとに応じた制御信号を出力し、前記読み出し又は書き込み動作が前記検索動作と同期されるように、前記制御信号に応じたタイミングで前記読み出し又は書き込み動作を実行するように構成され、
前記検索制御ブロックは、前記検索動作が前記読み出し又は書き込み動作と同期されるように、前記制御信号に応じたタイミングで前記検索動作を実行するように構成される、
３ポートコンテントアドレサブルメモリデバイス。
【請求項７】
請求項６に記載の３ポートコンテントアドレサブルメモリデバイスであって、
前記コンテントアドレサブルメモリは、前記データを格納するための一組のバンクを備えており、前記読み出し又は書き込み動作では、前記データは前記バンクのうちの１つからアクセスされ、前記検索動作では、前記データは別のバンク内で検索される、３ポートコンテントアドレサブルメモリデバイス。
【請求項８】
請求項６又は７に記載の３ポートコンテントアドレサブルメモリデバイスであって、
前記第１のポートと前記第２のポートと前記第３のポートは、検索入力ポートと検索結果ポートと読み出し又は書き込み用のポートである、３ポートコンテントアドレサブルメモリデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般にメモリデバイスに関し、特に、書き込み／読み出し動作に同期して中断しない検索動作と、独立した検索インターフェースおよびメンテナンスインターフェースとを、提供するコンテントアドレサブルメモリデバイスに関する。
【背景技術】
【０００２】
メモリデバイスは、現代のコンピュータシステムに不可欠なコンポーネントである。メモリデバイスは、ストレージデバイスとして、格納されたデータや命令に素早くアクセスするのに使用される。コンテントアドレサブルメモリ（ＣＡＭ）は、アドレス検索を実行するためによく用いられる特別なタイプのメモリである。例えば、インターネットルータは、指定されたデータのアドレスを検索するためにＣＡＭを備えていることが多い。ＣＡＭの使用によって、ルータはアドレスを検索することができ、この結果、コンピュータシステム間で、ネットワークを介して互いにデータをやり取りすることが可能となる。ＣＡＭは、ルータの他、データベース検索、画像処理、音声認識アプリケーションなどに使用される。
【０００３】
ＣＡＭは、一般に、コアセルとなる二次元的な行および列のコンテントアドレサブルメモリアレイを備えており、各列は、アドレスや、ポインタ、ビットパターンのエントリを有している。ＣＡＭは、このようなセルの配列に基づいて、従来のランダムアクセスメモリ（ＲＡＭ）のように、特定アドレスにおいて「読み出し」および「書き込み」動作を実行することができる。また、ＣＡＭは、「被比較数」として知られるデータのビットパターンを、ＣＡＭアレイ内に予め格納されたビットパターンのエントリ（すなわち列）の全リスト（すなわち行）と同時に比較する「検索」動作を実行することもできる。
【０００４】
従来のＣＡＭは、通常、２つのポートデバイスを備えている。図１Ａは、従来の２ポートＣＡＭ１００を示すブロック図である。ＣＡＭ１００は、入力ポート１０７と出力ポート１０９とを備えている。入力ポート１０７は、データ通信のためのデータバス１０２と、実行される動作に関連付けられた命令を伝送するための命令バス１０４と、を介して、データおよび制御信号の通信を行う。データバス１０２は、被比較数または書き込みデータを入力として受け取るために使用されており、検索動作の実行と書き込み動作の実行とで共用される。
【０００５】
出力ポート１０９は、検索動作と読み出し動作とで共用される。より厳密には、出力ポート１０９は、ＣＡＭ１００からの検索結果または読み出し結果のいずれかを、出力バス１０６を介して出力する。例えば、検索動作の場合、ＣＡＭ１００は、入力データと一致したエントリに対応する検索結果を、アドレスや、ポインタ、ビットパターン形式で、出力バス１０６を介して出力する。あるいは、読み出し結果が、データバス１０２から出力される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のＣＡＭ１００は、通常、検索、読み出し、および／または書き込みなどの動作を順次実行する。図１Ｂは、ＣＡＭ１００により、連続したメモリクロックサイクルで順次実行される代表的な一連の動作を示す図である。図１Ｂに示すように、ＣＡＭは、３つの「検索」動作から始まり、１つの「書き込み」動作、２つの「検索」動作、１つの「書き込み」動作、２つの「読み出し」動作を経て、２つの「検索」動作で終了するような、一連の動作を実行する。これらの動作は、各動作が少なくとも１つのクロックサイクルで実行されるように、順次実行される。
【０００７】
しかしながら、ＣＡＭ動作の順次的性質は、検索動作の遅延によるＣＡＭの性能低下を招く。これは、「読み出し」および「書き込み」動作が「検索」動作を中断させるためである。検索動作における中断は、高速な「リアルタイム」連続アドレス検索に大きな障害をもたらし、システム設計を複雑化すると考えられる。例えば、インターネットルータは、ＣＡＭに格納されたルーティングテーブルで多数の検索を実行するために頻繁に呼び出される。このような状況では、通常、検索の中断によって検索動作の処理が遅延し、コンピュータシステムの応答時間が遅くなる。
【０００８】
また、被比較数および書き込みデータによって入力ポート１０７が共用されているため、通常、被比較数および書き込みデータを多重化してＣＡＭに入力させる必要がある。同様に、検索結果および読み出し結果の出力によって出力ポート１０９が共用されているため、出力時にはこれらの結果を逆多重化する必要がある。図１Ｃは、従来の２ポートＣＡＭ１００を、マルチプレクサ１１１およびデマルチプレクサ１１３と共に、より詳細に示すブロック図である。ＣＡＭ１００は、制御ブロック１０８とＣＡＭアレイ１１０とを備えている。マルチプレクサ１１１は、被比較数および／または書き込みデータを入力として受け取り、制御信号に応じて、被比較数と書き込みデータとのいずれか一方を選択して出力する。マルチプレクサ１１１で選択された出力は、ＣＡＭアレイ１１０への入力としてデータバス１０２に供給される。
【０００９】
ＣＡＭ１００の動作を制御するために、制御信号が、制御ブロック１０８への入力として命令バス１０４に供給される。制御ブロック１０８は、制御信号に応じて、ＣＡＭアレイ１１０の動作を制御するための別の一組の制御信号を生成する。検索動作では、ＣＡＭアレイ１１０は、データバス１０２の入力データに一致するＣＡＭアレイ１１０内のエントリまたはワードに対応するアドレスや、ポインタ、ビットパターン（「アドレス」と総称する）を、結果バス１０６上に出力する。一方、読み出し動作では、ＣＡＭは、データバス１０２に供給されたアドレスに対応するデータを、結果バス１０６上に出力する。
【００１０】
デマルチプレクサ１１３は、出力バス１０６からの出力結果を、入力として受け取るように接続されている。ＣＡＭ動作が検索動作のとき、デマルチプレクサ１１３は、検索データバス１１５上に出力結果を送る。一方、ＣＡＭ動作が読み出し動作のとき、デマルチプレクサ１１３は、読み出しデータバス１１７上に出力結果を送る。
【００１１】
図１Ｄは、従来のＣＡＭ１００をより詳細に示す別のブロック図である。ＣＡＭ１００は、データバス１０２と、命令バス１０４と、結果バス１０６と、制御ブロック１０８と、ＣＡＭアレイ１１０と、マルチプレクサ（ＭＵＸ）１１２と、被比較数レジスタ１１４と、グローバルマスクレジスタ１１６と、状況レジスタ１１８と、アドレスカウンタ１２０と、を備えている。制御ブロック１０８は、命令バス１０４を介して要求された動作のための命令を受け取り、ＣＡＭアレイ１１０の「検索」、「読み出し」、「書き込み」動作のための制御信号を生成する。図１Ｄに示すＣＡＭ１００は、例えば、ネットロジック・ミコシステムズ社のモデルＮＬ８５７２１−３進コンテントアドレサブルメモリＩＰＣＡＭとして市販されている。
【００１２】
しかしながら、書き込み／読み出し動作および検索動作の実行に多重化機構を用いると、従来の２ポートＣＡＭの実装が複雑となり、それに伴いコストも増大する。さらに、多重化機構を用いると、読み出し／書き込みデータを、検索データまたは結果を伴う同じクロックサイクル内で、同時に入力または出力することができないため、ＣＡＭの性能全体が低下してしまう。要するに、バス１０２および１０６が共用されているので、読み出しまたは書き込み動作を実行する場合には、検索動作からサイクルを「奪う」必要がある。
【００１３】
以上から分かるように、入力データおよび出力結果を多重化することなく、読み出し／書き込み動作と検索動作とを同時に実行して、ＣＡＭの性能の向上を図ることができるようなＣＡＭデバイスおよび方法が必要とされている。
【課題を解決するための手段】
【００１４】
本発明は、上述の要求を満たすため、３ポートコンテントアドレサブルメモリ（ＣＡＭ）デバイス、およびそれを実現するための方法を提供する。本発明は、プロセス、装置、システム、デバイス、方法を含む種々の形態で実現可能である。以下では、本発明のいくつかの実施形態を説明する。
【００１５】
本発明は、一実施形態において、ＣＡＭと検索制御ブロックとメンテナンス制御ブロックとを備える３ポートＣＡＭデバイスを提供する。ＣＡＭは、データを格納するように構成されている。検索制御ブロックは、ＣＡＭ内で検索データを検索するために、第１のポートを経て検索データおよび検索制御信号を受け取るように構成されている。さらに、検索制御ブロックは、ＣＡＭにアクセスして検索動作を実行するように構成されている。検索動作は検索サイクル内で実行され、各検索動作は複数のクロックサイクルに渡って実行される。この構成では、２以上の検索動作を１つまたはそれ以上のクロックサイクルに渡って同時に実行可能である。検索動作による検索結果は、第２のポートを経て出力される。メンテナンス制御ブロックは、第３のポートを経て、指定されたデータをＣＡＭで読み出しまたは書き込みをすることにより、読み出し／書き込み動作を実行するように構成されている。
【００１６】
本発明は、別の実施形態において、ＣＡＭデバイス内で検索動作と読み出し／書き込み動作とを実行するための方法を提供する。この方法では、データを格納するためにＣＡＭが準備される。そして、ＣＡＭ内で検索データを検索するために、検索データおよび検索制御信号が、第１のポートを経て検索制御ブロックに供給される。検索制御ブロックは、コンテントアドレサブルメモリにアクセスすることによって検索動作を実行するように構成されている。検索動作は、複数のクロックサイクルに渡る検索サイクル内で実行される。２以上の検索動作を１つまたはそれ以上のクロックサイクルに渡って同時に実行可能である。ＣＡＭからの検索結果は、第２のポートを経て出力される。読み出し／書き込み動作は、第３のポートを経て、指定されたデータをＣＡＭで読み出しまたは書き込みすることによって実行される。
【００１７】
さらに別の実施形態において、データを含むＣＡＭにアクセスするための３ポートＣＡＭデバイスを開示する。３ポートＣＡＭデバイスは、データを格納するためのコンテントアドレサブルメモリと第１のポートと第２のポートと第３のポートとを備えている。第１のポートは、コンテントアドレサブルメモリ内で検索データを検索するために、検索データおよび検索制御信号を受け取るように構成されている。検索動作は、コンテントアドレサブルメモリにアクセスすることによって実行される。第２のポートは、コンテントアドレサブルメモリから検索結果を出力するように構成されている。第３のポートは、読み出し／書き込み動作のために、コンテントアドレサブルメモリとの間で読み出し／書き込みデータを通信するように構成されている。
【００１８】
本発明の３ポートの構成は、検索データ経路と読み出し／書き込みデータ経路とを効果的に分離する。このため、検索結果を破壊したり障害を与えたりすることなく、検索クロックサイクル中に読み出し／書き込み動作を実行することが可能となる。さらに、検索サイクル中における読み出し／書き込み動作の実行を可能にすることにより、読み出し／書き込み動作が検索を中断するのを排除し、検索動作を加速させることができる。このため、本発明のデバイスおよび方法は、所定のクロック周波数における動作を高速化させることができる。本発明の原理を例示した添付の図面と関連させた以下の詳細な説明から、本発明の他の効果が明らかとなる。
【図面の簡単な説明】
【００１９】
本発明は、添付図面と関連させた詳細な説明から容易に理解できる。同様の符号は同様の構造エレメントを示している。
【図１Ａ】従来の２ポートコンテントアドレサブルメモリ（ＣＡＭ）を示すブロック図である。
【図１Ｂ】図１Ａに示すＣＡＭによる連続したメモリクロックサイクルで順次実行される一連の動作を示す図である。
【図１Ｃ】従来の２ポートＣＡＭを、マルチプレクサ１１１およびデマルチプレクサ１１３と共に、より詳細に示すブロック図である。
【図１Ｄ】従来のＣＡＭをより詳細に示す別のブロック図である。
【図２Ａ】検索データ経路と読み出し／書き込みデータ経路とを分離した代表的な３ポートＣＡＭデバイス２００を、本発明の一実施形態に従って示す図である。
【図２Ｂ】３ポートＣＡＭデバイスによって実行される一連の動作を、本発明の一実施形態に従って示すタイミング図である。
【図２Ｃ】３ポートＣＡＭデバイスを、本発明の一実施形態に従ってより詳細に示すブロック図である。
【図３Ａ】メンテナンス制御ブロックを、本発明の一実施形態に従ってより詳細に示すブロック図である。
【図３Ｂ】ＣＡＭアレイと通信する検索制御ブロックを、本発明の一実施形態に従ってより詳細に示すブロック図である。
【発明を実施するための形態】
【００２０】
読み出しおよび／または書き込み動作の実行中に、中断されずに検索動作を実行することのできる３ポートコンテントアドレサブルメモリ（ＣＡＭ）デバイスを開示する。以下の説明では、本発明の完全な理解を促すために多くの項目を特定している。しかしながら、当業者には理解できるように、本発明は、これらの項目の一部または全てを特定しなくても実施することが可能である。そのほか、本発明を不必要に不明瞭化するのを避けるため、周知の処理動作の説明は省略した。
【００２１】
図２Ａは、検索データ経路と読み出し／書き込みデータ経路とを分離した代表的な３ポートＣＡＭデバイス２００を、本発明の一実施形態に従って示す図である。３ポートＣＡＭデバイス２００は、検索入力ポート２６２と、検索結果ポート２６６と、メンテナンスポート２６４と、の３つのポートを備えている。検索入力ポート２６２は、入力検索データと検索制御信号と検索クロック信号とを、それぞれ検索バス２０２と検索制御バス２０５と検索クロックバス２０８を介して通信する。検索結果ポート２６６は、検索結果を検索結果バス２０６を介して通信する。検索入力ポート２６２と検索結果ポート２６６とから分離されたメンテナンスポート２６４は、読み出し／書き込みデータと、読み出し／書き込み制御信号と、読み出し／書き込みクロック信号とを、それぞれ読み出し／書き込みデータバス２０３と読み出し／書き込み制御バス２０７と読み出し／書き込みクロックバス２０９を介して通信する。
【００２２】
３ポートＣＡＭデバイス２００は、検索動作と読み出し／書き込み動作とを実行するように構成されている。特に、検索動作では、ＣＡＭデバイス２００には、検索バス２０２を介した検索データと、検索制御バス２０５を介した検索制御信号と、検索クロックバス２０８を介した検索クロックとが、検索入力ポート２６２を経て供給される。そして、出力としての検索結果が、検索結果ポート２６６を経て検索結果バス２０６から供給される。一方、読み出し／書き込み動作では、ＣＡＭ２００には、読み出し／書き込み制御バス２０７を介した読み出し／書き込み制御信号と、読み出し／書き込みデータバス２０３を介した読み出し／書き込みデータと、読み出し／書き込みクロックバス２０９を介した読み出し／書き込みクロックとが、メンテナンスポート２６４を経て供給される。検索クロックバス２０８と読み出し／書き込みクロックバス２０９とを介して供給されるクロック信号は、同じクロック信号であってもよい。
【００２３】
検索データ経路と読み出し／書き込みデータ経路とが分離された３ポートＣＡＭデバイス２００は、読み出し／書き込み動作を検索動作と同じクロックサイクルで実行することができる。例えば、図２Ｂは、ＣＡＭデバイス２００によって実行される一連の動作を、本発明の一実施形態に従って示すタイミング図２５０である。このタイミング図では、検索動作は、クロックサイクル２５２，２５４，２５６，２５８において順次実行されており、１回の検索動作は、各クロックサイクルごとに実行されている。先ず、サイクル２５２では検索動作のみが行われる。次のサイクル２５４では、検索動作と書き込み動作とが共に実行される。このサイクルでは、ＣＡＭデバイス２００は、検索ポート２６２を経る検索動作と、メンテナンスポート２６４を経る書き込み動作とを、同じクロックサイクル２５４内で実行する。
【００２４】
次のサイクル２５６では、検索動作と読み出し動作とが実行される。このサイクル２５６では、ＣＡＭデバイス２００は、検索動作と読み出し動作とを同じクロックサイクル２５６内で実行する。そして、次のクロックサイクル２５８では、ＣＡＭデバイス２００は別の検索動作を実行する。このように、検索結果に障害を与えたり破壊したりすることなしに、検索動作と同じサイクル内で読み出し／書き込み動作を実行することができる。なお、検索動作は、複数のクロックサイクルに渡って実行されていてもよい。また、複数のクロックサイクルに渡って、複数の検索動作を同時に実行するようにしてもよい。
【００２５】
また、検索動作と同じクロックサイクル内における読み出し／書き込み動作の実行を可能にすることにより、読み出し／書き込み動作が検索動作を中断したり干渉したりするのを防ぐことができる。このため、本発明の３ポートＣＡＭデバイス２００は、従来の２ポートＣＡＭデバイスのように読み出し／書き込みデータ経路と検索データ経路とが共用されることによる遅延を生じることなく、検索動作を実行することができる。また、検索データ経路をメンテナンス（例えば、読み出し／書き込み）データ経路から分離することにより、システムレベルの設計を簡略化することもできる。
【００２６】
図２Ｃは、３ポートＣＡＭデバイス２００を、本発明の一実施形態に従ってより詳細に示すブロック図である。３ポートＣＡＭデバイス２００は、ＣＡＭアレイ２１０と検索制御ブロック２１１とメンテナンス制御ブロック２１２とを備えている。検索制御ブロック２１１は、検索データバス２０２を介した検索データと、検索制御バス２０５を介した検索制御信号と、検索クロックバス２０８を介した検索クロックとを、検索入力ポート２６２を経て受け取る。メンテナンス制御ブロック２１２は、読み出し／書き込み制御信号バス２０７を介した読み出し／書き込み制御信号と、読み出し／書き込みデータバス２０３を介した読み出し／書き込みデータと、読み出し／書き込みクロックバス２０９を介した読み出し／書き込みクロックとを、メンテナンスポート２６４を経て受け取る。ＣＡＭアレイ２１０は、検索制御ブロック２１１およびメンテナンス制御ブロック２１２と接続されており、バス２２０，２０３ｂ，２０７ｂを介してデータおよび制御信号の通信を行う。なお、本明細書中で用いられるブロックという用語は、デバイス、装置、サブシステムなどを示し、これらの用語と交換可能である。
【００２７】
この３ポートの構成において、検索制御ブロック２１１は、制御信号を生成して、その信号を指定された検索データとともに、バス２２０を介して通信し、ＣＡＭアレイ２１０内で検索データの検索が行われるようにする。検索が完了すると、ＣＡＭアレイ２１０は、指定されたデータのアドレスを、検索結果ポート２６６を経る検索結果バス２０６を介して出力する。一方、メンテナンス制御ブロック２１２は、読み出し／書き込み動作を制御する。メインテナンス制御ブロック２１２は、特に、制御信号を生成して、その信号を指定されたデータとともにバス２０３ｂおよび２０７ｂを介して通信し、ＣＡＭアレイ２１０でデータの読み出しまたは書き込みが行われるようにする。メインテナンス制御ブロック２１２は、例えば、データ（例えば、書き込みのためのデータおよびアドレスや、読み出しのためのアドレス）および制御信号をデータバス２０３および制御バス２０７を介して受け取る。そして、データおよび制御信号をデータバス２０３ｂおよび制御バス２０７ｂを介して伝送し、ＣＡＭアレイ２１０内でデータの読み出しまたは書き込みが行われるようにする。読み出し動作では、ＣＡＭアレイ２１０は、バス２０３ｂを介してメンテナンス制御ブロック２１２にデータを供給し、メンテナンス制御ブロックはさらに、データバス２０３を介してデータを出力する。検索動作を読み出し／書き込み動作と同期させるために、検索制御ブロック２１１およびメンテナンス制御ブロック２１２は、同期化バス２１４を介して同期化信号の通信を行う。
【００２８】
本発明の代替の実施形態では、ＣＡＭは、複数のＣＡＭアレイと、複数の検索制御ブロックと、複数のメンテナンス制御ブロックあるいは分離された読み出し制御ブロックおよび書き込み制御ブロックと、を備えていてもよい。また、データの複数のコピーが複数のバンクに格納されてもよい。例えば、２バンク構成では、データが一方のバンクで読み出しまたは書き込みされ、検索が他方のバンクで行われるようにしてもよい。また、本発明の代替の実施形態では、内部に検索制御ブロックまたはメンテナンス制御ブロックを組み込んだ１つまたはそれ以上のＣＡＭアレイを備えるＣＡＭであってもよいし、非配列形式のＣＡＭであってもよい。さらに、本発明の代替の実施形態では、ＣＡＭは、追加の制御信号や、静的もしくは動的にクロックされたデバイス、複数のクロック信号、分離された基板を備えていてもよい。また、チップコンフィギュレーションまたはレジスタ動作などの、読み出し動作や書き込み動作以外のメンテナンス動作を、メンテナンスポートで処理するようにしてもよい。
【００２９】
図３Ａは、メンテナンス制御ブロック２１２を、本発明の一実施形態に従ってより詳細に示すブロック図である。メンテナンス制御ブロック２１２は、クロックを調停するためのクロックブリッジ２１６と、一対の有限状態マシン２１３および２１８と、を備えている。有限状態マシン２１３は、読み出し／書き込み制御バス２０７を介した読み出し／書き込み制御信号と、読み出し／書き込みデータバス２０３を介した読み出し／書き込みデータとを受け取る。また、有限状態マシン２１３は、読み出し／書き込みクロックバス２０９を介した読み出し／書き込みクロックを受け取る。さらに、有限状態マシン２１３は、受け取った制御信号を解析することにより制御信号を生成し、読み出し／書き込みデータを取得する。そして、有限状態マシン２１３は、生成された制御信号を制御バス２１５を介してクロックブリッジ２１６に伝送する。この制御信号によって、検索クロックバス２０８と読み出し／書き込みクロックバス２０９とを介して受け取った検索クロックと読み出し／書き込みクロックとが同期化される。さらに、有限状態マシン２１３は、プロセッサポート（図示せず）と外部チップポート（図示せず）との初期接続手続きを制御するのに使用されても良い。
【００３０】
クロックブリッジ２１６は、制御バス２１５を介して受け取った制御信号に応じて制御信号を生成し、その信号を、制御信号バス２１７を介して他方の有限状態マシン２１８に伝送する。有限状態マシン２１８は、検索クロックバス２０８から検索クロックを受け取り、制御バス２１４を介して、読み出し／書き込み動作を検索動作と同期させる。また、有限状態マシン２１８は、読み出し／書き込み制御信号を生成し、その信号を、読み出し／書き込み制御バス２０７ｂおよび２０３ｂを介してＣＡＭアレイ２１０に伝送し、読み出し／書き込み動作が実行されるようにする。有限状態マシン２１３と２１８との間には、バス２０３ａが設けられており、読み出し／書き込み動作におけるデータの通信を可能にする。例えば、書き込み動作では、データは、有限状態マシン２１３からバス２０３ａを経て有限状態マシン２１８へと流れる。逆に、読み出し動作では、データは、有限状態マシン２１８からバス２０３ａを経て有限状態マシン２１３へと流れる。有限状態マシン２１３と２１８は、１つまたは２つの論理ゲートのように単純でも良い。
【００３１】
図３Ｂは、ＣＡＭアレイ２１０と通信する検索制御ブロック２１１を、本発明の一実施形態に従ってより詳細に示すブロック図である。検索制御ブロック２１１は、検索有限状態マシン２３０と、キャプチャおよびパイプライン検索データデバイス２３４と、を備えている。キャプチャおよびパイプライン検索データデバイス２３４は、検索データバス２０２を介した検索データと、検索制御バス２０５を介した検索制御信号と、検索クロックバス２０８を介した検索クロックとを、入力として受け取る。キャプチャおよびパイプライン検索データデバイス２３４は、このような信号を受け取ると制御およびデータ信号を生成し、これらの信号を、制御およびデータバス２３５を介してＣＡＭアレイ２１０に伝送する。
【００３２】
検索有限状態マシン２３０は、検索クロックバス２０８を介して検索クロックを受け取り、制御信号を生成し、その信号を制御バス２３２を介してＣＡＭアレイ２１０に伝送する。また、検索有限状態マシン２３０は、同期化制御信号を生成し、その信号を、制御バス２１４を介してメンテナンス制御ブロック２１２の有限状態マシン２１８に伝送する。一実施形態において、検索有限状態マシン２３０は、有限状態マシン２１８を使用することによって実現されていてもよい。制御バス２３２と制御およびデータバス２３５とは、図２Ｃに示す制御およびデータバス２２０に対応する。また、ＣＡＭアレイ２１０は、メンテナンス制御ブロック２１２との間で、制御バス２０７ｂおよび２０３ｂを介して制御信号の通信を行う。
【００３３】
カスケード制御ブロック２３７は、検索クロックバス２０８を介して検索クロックを受け取り、データバス２３６を介してＣＡＭアレイ２１０からのデータ（例えば検索アドレス）を出力するために設けられている。カスケード制御ブロック２３７は、検索結果バス２０６を介して検索結果ポート２６６に出力データを供給する。また、カスケード制御ブロック２３７は、複数のコンテントアドレサブルメモリを連結し、指定されたデータのエントリを数多く保持できるようにするために、一組のＣＡＭチップ２００を並列接続できるように構成されている。３ポートＣＡＭデバイス２００が単独で使用されている場合には、カスケード制御ブロック２３７は出力バッファでよい。一実施形態において、カスケード制御ブロック２３７は、検索制御ブロック２１１に含まれていてもよい。あるいは、カスケード制御ブロックは、個別の出力ステージとしてＣＡＭデバイス２００内に設けられていてもよい。
【００３４】
このように本発明は、検索サイクル中に読み出しおよび書き込み動作を実行することを可能にするとともに、ＣＡＭアレイの検索動作を高めることができる。従来のＣＡＭでは、検索および読み出し／書き込み動作を別々のクロックサイクルで順次に実行していたが、検索サイクル中に読み出し／書き込み動作の実行を可能にすることにより、中断を排除し、検索動作を高速化させることができる。したがって、本発明のＣＡＭデバイスは、所定のクロック周波数におけるスループットを高めることができる。
【００３５】
例えば、適切な半導体基板、プリントデバイス基板、パッケージ化された集積デバイス、ソフトウェアインプリメンテーションなどを含む任意の形態で、種々のブロック図を具現化できる。したがって、当業者にはわかるように、本明細書で取り上げた実施形態は、例示を目的としたものであって、本発明の内容を限定するものではない。このため本発明は、本明細書で特定した詳細に限定されることなく、添付した特許請求の範囲の範囲および均等物の範囲内で、種々の変更を加えることが可能である。
【図１Ａ】
0005842284.tif 000002
【図１Ｂ】
0005842284.tif 000003
【図１Ｃ】
0005842284.tif 000004
【図１Ｄ】
0005842284.tif 000005
【図２Ａ】
0005842284.tif 000006
【図２Ｂ】
0005842284.tif 000007
【図２Ｃ】
0005842284.tif 000008
【図３Ａ】
0005842284.tif 000009
【図３Ｂ】
0005842284.tif 000010