(57)【要約】【課題】探索データが入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納される前記メモリ内のアドレスを探索する探索回路とを備える、連想メモリにおいて、探索データに対して比較対象となるエントリデータの数を、全エントリデータ数の対数に抑え、消費電力を低減する。【解決手段】メモリには、昇順または降順に並べ替えられたエントリデータをアドレスに対応付けて格納する。探索回路は、複数のエントリデータが格納されるアドレス全体を初期の探索領域とし、探索領域の中央のアドレスに格納されるエントリデータと探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて、次の探索における探索領域を狭める探索動作を繰り返す。【選択図】図１
2015225675.tif 000002
【特許請求の範囲】
【請求項１】
探索データが入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納される前記メモリ内のアドレスを探索する探索回路とを備える、連想メモリであって、
前記メモリには、前記エントリデータが昇順または降順に並べ替えられアドレスに対応付けられて格納可能であり、
前記探索回路は、前記複数のエントリデータが格納されるアドレス全体を初期の探索領域とし、前記探索領域の中央のアドレスに格納されるエントリデータと前記探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて前記探索領域を狭める探索動作を繰り返す、連想メモリ。
【請求項２】
請求項１において、前記メモリは、各ワードに前記探索領域の中央のアドレスが対応付けされた、１ワードから２のＮ−１乗までの２のべき乗数毎のワード数を持つ第１から第Ｎメモリを有し（Ｎは自然数）、前記探索回路は、前記第１から第Ｎメモリに対応して設けられる第１から第Ｎ比較回路を有し、
前記比較回路は、対応するメモリからエントリデータを読み出し前記探索データと比較して、当該エントリデータが格納されるアドレスと比較結果とを後段の比較回路に出力し、
前記比較回路は、前段から入力されるアドレスと比較結果に基づいて、比較対象のエントリデータを読み出すアドレスを決める、連想メモリ。
【請求項３】
請求項２において、前記メモリは、２のＮ乗−１のアドレスを有する１ワードの第Ｎ＋１メモリをさらに有し、前記探索回路は、第Ｎ−１比較回路から入力される比較結果に基づいて前記探索データと前記第Ｎ＋１メモリに格納されるエントリデータとを比較する第Ｎ＋１比較回路をさらに有する、連想メモリ。
【請求項４】
請求項１において、前記連想メモリと同一構成の連想メモリを第１の連想メモリとし、前記第１の連想メモリと同じエントリ数の第２の連想メモリと、複数個の前記第１の連想メモリと、前記第２の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第１の連想メモリに転送する、転送回路をさらに備える、連想メモリ。
【請求項５】
請求項４において、前記第２の連想メモリを２個備え、一方から第１の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする、連想メモリ。
【請求項６】
請求項４において、探索データが入力されたとき、まず前記第２の連想メモリを探索対象とし、前記第２の連想メモリでヒットしなかった場合に、前記複数の第１の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする、連想メモリ。
【請求項７】
請求項４において、前記第２の連想メモリは、大小一致を比較する機能を有するメモリセルで構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路をさらに有し、前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第１の連想メモリに転送する、連想メモリ。
【請求項８】
請求項１において、前記メモリは、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路を、前記複数のポート毎に並列に備える、連想メモリ。
【請求項９】
請求項１に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
【請求項１０】
２のＮ乗個のエントリデータを保持することができ（Ｎは自然数）、入力される探索データと一致するエントリデータを探索する、連想メモリであって、
１ワードから２のＮ−１乗までの２のべき乗数毎のワード数を持つ第１から第Ｎメモリと１ワードの第Ｎ＋１メモリと、前記第１から第Ｎ＋１メモリに対応して設けられる第１から第Ｎ＋１比較回路とを有し、
前記第１比較回路は、前記第１メモリからエントリデータを読み出し前記探索データとの間で大小一致の比較を行い、前記比較の結果を前記第２比較回路に出力し、
前記第２比較回路は、前記第１比較回路から入力される比較結果に基づいて算出される前記第２メモリのアドレスに格納されるエントリデータを読み出し、前記探索データとの間で大小一致の比較を行い、前記比較の結果を前記第３比較回路に出力し、
前記第３から第Ｎ−１比較回路は、前段の比較回路で比較対象とされたエントリデータが格納されていたアドレスと前段から入力される比較結果とに基づいて、比較対象のエントリデータを読み出すアドレスを決め、対応するメモリからエントリデータを読み出し前記探索データとの間で大小一致の比較を行い、前記比較の結果を後段の比較回路に出力し、
前記第Ｎ＋１比較回路は、前記探索データと前記第Ｎ＋１メモリに格納されるエントリデータとが一致するか否かの比較を行い、
前記探索データと一致するエントリデータが存在するときには、当該一致するエントリデータを格納するメモリの番号と当該一致するエントリデータが格納される当該メモリ内のアドレスとに基づいて、前記探索データが前記２のＮ乗個のエントリデータをソートしたときの何番目のエントリデータと一致するかを算出して出力する、連想メモリ。
【請求項１１】
請求項１０において、
前記第１メモリは前記２のＮ乗個のエントリデータのうち２のＮ−１乗番目のデータを格納し、
前記第Ｎ＋１メモリは前記２のＮ乗個のエントリデータのうち２のＮ乗番目のデータを格納し、
前記第ｉメモリ（ｉは２以上Ｎ未満の自然数）は、ｊを２のｉ乗未満のすべての自然数とするとき、ｊ×２のＮ−ｉ乗番目のエントリデータのうち、前記第１メモリから第ｉ−１メモリに格納されたエントリデータ以外のエントリデータを格納し、
前記探索データと一致するエントリデータが存在するときに、当該一致するエントリデータに対応する前記ｊ×２のＮ−ｉ乗の値−１を出力する、連想メモリ。
【請求項１２】
請求項１１において、前記第１から第Ｎ＋１比較回路は、同一の探索データに対して、互いに異なるパイプラインステージで順次動作する、連想メモリ。
【請求項１３】
請求項１１において、前記連想メモリと同一構成の連想メモリを第１の連想メモリとし、前記第１の連想メモリと同じエントリ数の第２の連想メモリと、複数個の前記第１の連想メモリと、前記第２の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第１の連想メモリに転送する、転送回路をさらに備える、連想メモリ。
【請求項１４】
請求項１３において、前記第２の連想メモリを２個備え、一方から第１の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする、連想メモリ。
【請求項１５】
請求項１３において、探索データが入力されたとき、まず前記第２の連想メモリを探索対象とし、前記第２の連想メモリでヒットしなかった場合に、前記複数の第１の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする、連想メモリ。
【請求項１６】
請求項１３において、前記第２の連想メモリは、大小一致を比較する機能を有するメモリセルで構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路をさらに有し、前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第１の連想メモリに転送する、連想メモリ。
【請求項１７】
請求項１１において、前記第１から第Ｎメモリのそれぞれは、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路を、前記複数のポート毎に並列に備える、連想メモリ。
【請求項１８】
請求項１０に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連想メモリおよびそれを用いた半導体装置に関し、特に消費電力の低い連想メモリに好適に利用できるものである。
【背景技術】
【０００２】
連想メモリ（ＣＡＭ：Content Addressable Memory）は、ルーターやネットワークスイッチに用いられており、ネットワークトラフィックの増大に伴ってＣＡＭにも大容量化が求められている。オープンフローによって実現される仮想ネットワークでは、１個のオープンフローコントローラが多数のオープンフロースイッチを統合して制御する。オープンフロースイッチを始めとするネットワーク機器に搭載されるＣＡＭには、大容量、高速スループット、ダイナミックエントリーテーブル、低消費電力等が求められる。
【０００３】
特許文献１には、記憶回路に記憶されたデータと探索データとの間で大小比較とレンジ一致比較の機能を実現するＣＡＭが開示されている。
【０００４】
特許文献２には、同一キャッシュエントリに割り付けられる異なるタグの複数のメモリエントリへのアクセスが競合するか連続する場合にも、メインメモリへのアクセスを抑え、システム効率を向上することができるキャッシュメモリ装置が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００４−２９５９６７号公報
【特許文献２】特開平０９−２８８６１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１及び２について本発明者が検討した結果、以下のような新たな課題があることがわかった。即ち特許文献１に記載されるようなＣＡＭは、探索データを記憶されている全てのデータ（エントリデータ）と比較するため、消費電力が大きいことが分かった。このようなＣＡＭを本明細書ではバイナリＣＡＭと呼び、ＢＣＡＭと略記する。
【０００７】
このような課題を解決するための手段を以下に説明するが、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００８】
一実施の形態によれば、下記の通りである。
【０００９】
すなわち、探索データが入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納される前記メモリ内のアドレスを探索する探索回路とを備える、連想メモリであって以下のように構成される。メモリには、昇順または降順に並べ替えられたエントリデータがアドレスに対応付けて格納される。探索回路は、メモリのアドレス全体を初期の探索領域とし、探索領域の中央のアドレスに格納されるエントリデータと探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて、次の探索の探索領域を狭める探索動作を繰り返す。
【発明の効果】
【００１０】
前記一実施の形態によって得られる効果を簡単に説明すれば下記のとおりである。
【００１１】
すなわち、消費電力の低いＣＡＭを提供することができる。
【図面の簡単な説明】
【００１２】
【図１】図１は、ＳＲＡＭ上で２分探索を行うＣＡＭの構成例を示すブロック図である。
【図２】図２は、図１のＣＡＭにおける比較回路３＿１の動作例を示す説明図である。
【図３】図３は、図１のＣＡＭにおける比較回路３＿２の動作例を示す説明図である。
【図４】図４は、図１のＣＡＭにおける比較回路３＿３の動作例を示す説明図である。
【図５】図５は、図１のＣＡＭにおける比較回路３＿４の動作例を示す説明図である。
【図６】図６は、図１のＣＡＭにおける比較回路３＿５の動作例を示す説明図である。
【図７】図７は、２段階サーチを行うＣＡＭの構成例を示すブロック図である。
【図８】図８は、２段階サーチを行うＣＡＭの別の構成例を示すブロック図である。
【図９】図９は、２段階サーチを行うＣＡＭの動作例を示す説明図である。
【図１０】図１０は、２入力のサーチエントリに対して２分探索を行うＣＡＭの構成例を示すブロック図である。
【図１１】図１１は、ソート機能付きＣＡＭの構成例を示すブロック図である。
【図１２】図１２は、ソート機能付きＣＡＭの動作例を示すタイミングチャートである。
【図１３】図１３は、ソート機能付きＣＡＭの別の構成例を示すブロック図である。
【図１４】図１４は、ソート機能付きＣＡＭに適用可能なメモリセルの構成例を示す回路図である。
【図１５】図１５は、図１４のメモリセルの動作を表す真理値表を示す説明図である。
【図１６】図１６は、ソート機能付きＣＡＭに適用可能なメモリセルの別の構成例を示す回路図である。
【図１７】図１７は、図１６のメモリセルの動作を表す真理値表を示す説明図である。
【図１８】図１８は、ソート機能付ＢＣＡＭで相補型サーチキャッシュを構成し、複数のＢＳＲＡＭを備えて２段階サーチを行うＣＡＭの構成例を示すブロック図である。
【発明を実施するための形態】
【００１３】
１．実施の形態の概要
先ず、本願において開示される代表的な実施の形態について概要を説明する。代表的な実施の形態についての概要説明で括弧を付して参照する図面中の参照符号はそれが付された構成要素の概念に含まれるものを例示するに過ぎない。
【００１４】
〔１〕＜ＳＲＡＭ上で２分探索（Binary Search）を行う連想メモリ（ＣＡＭ）＞
本願において開示される代表的な実施の形態に係る連想メモリ（ＣＡＭ）（１００）は、探索データ（Search Entry）が入力され、複数のエントリデータを格納するメモリ（１＿１〜１＿５、２＿２〜２＿４）と、前記探索データと一致するエントリデータが格納される前記メモリ内のアドレスを探索する探索回路（３＿１〜３＿５、４＿１〜４＿５）とを備える。
【００１５】
前記メモリには、前記複数のエントリデータが昇順または降順に並べ替えられアドレスに対応付けられて格納可能である。
【００１６】
前記探索回路は、前記複数のエントリデータが格納されるアドレス全体（０ｔｈｗ〜１５ｔｈｗ）を初期の探索領域とし、前記探索領域の中央のアドレス（７ｔｈｗ、…）に格納されるエントリデータと前記探索データとを比較して、一致したときは当該アドレスを探索結果として出力し、不一致のときは大小比較の結果に基づいて前記探索領域を狭める探索動作を繰り返す。
【００１７】
これにより、探索データに対して比較対象となるエントリデータが、各探索領域の中央のアドレスに格納される１個ずつで済むため、比較対象のエントリデータの数が全エントリデータ数（2Ｎ）の対数（log22Ｎ=N）に抑えられ、消費電力が低く抑えられた連想メモリを提供することができる。ここで探索領域の「中央」のアドレスとは、数学的に厳密な１／２を意味するものではなく、概ね中央であればよい。例えば１６エントリの中央のアドレスは７番目でも８番目でも良い。さらに大きな誤差を含んでいても良いが、正確に１／２に近い程、探索に要するステップ数（上記「繰り返し」の数）、即ち比較の回数を少なくすることができる。以下、本明細書における「中央」の語は同様に定義される。
【００１８】
〔２〕＜パイプライン構成＞
項１において、前記メモリは、各ワードに前記探索領域の中央のアドレスが対応付けされた、１ワードから２のＮ−１乗までの２のべき乗数毎のワード数を持つ第１から第Ｎメモリ（１＿１〜１＿４）を有し（Ｎは自然数）、前記探索回路は、前記第１から第Ｎメモリに対応して設けられる第１から第Ｎ比較回路（３＿１〜３＿４）を有する。
【００１９】
前記比較回路は、対応するメモリからエントリデータを読み出し前記探索データと比較して、当該エントリデータが格納されるアドレスと比較結果とを後段の比較回路に出力する。前記比較回路は、前段から入力されるアドレスと比較結果に基づいて、比較対象のエントリデータを読み出すアドレスを決める。
【００２０】
これにより、２分探索を行うＣＡＭをパイプラインで構成することができ、スループットを向上することができる。
【００２１】
〔３〕＜２のＮ乗エントリのＣＡＭ＞
項２において、前記メモリは、２のＮ乗−１のアドレスを有する１ワードの第Ｎ＋１メモリ（１＿５）をさらに有し、前記探索回路は、第Ｎ−１比較回路から入力される比較結果に基づいて前記探索データと前記第Ｎ＋１メモリに格納されるエントリデータとを比較する第Ｎ＋１比較回路（３＿５）をさらに有する。
【００２２】
これにより、２のべき乗（2Ｎ）ワードのエントリ数を備えるＣＡＭを提供することができる。
【００２３】
〔４〕＜２段階サーチを行う連想メモリ＞
項１において、前記連想メモリと同一構成の連想メモリを第１の連想メモリ（ＢＳＲＡＭ，１００）とする。２段階サーチを行う連想メモリ（５００）は、前記第１の連想メモリと同じエントリ数の第２の連想メモリ（ＢＣＡＭ，２００）と、複数個の前記第１の連想メモリ（１００＿１〜１００＿ｍ）と、前記第２の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第１の連想メモリに転送する、転送回路（９００）をさらに備える。
【００２４】
これにより、サーチキャッシュとして機能する第２の連想メモリにヒットしたときにはレイテンシが小さく、ヒットしない場合に複数の第１の連想メモリを順次探索対象とすることで、大容量でも消費電力の小さいＣＡＭを提供することができる。
【００２５】
〔５〕＜２面サーチキャッシュ＞
項４において、連想メモリ（５００）は、前記第２の連想メモリを２個（２００＿１、２００＿２）備え、一方から第１の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする。
【００２６】
これにより、新たなエントリデータの書き込みが待たされることがない。エントリデータを一方の第２の連想メモリから第１の連想メモリへ転送する期間には、転送が行われている当該第２の連想メモリへは新たなエントリデータを書き込むことができない。しかしその期間に新たなエントリデータの書き込み要求が発生した場合には、転送対象とされない他方の第２の連想メモリに対して新たなエントリデータの書き込みを行う事ができる。
【００２７】
〔６〕＜探索順序＞
項４または項５において、連想メモリ（５００）は、探索データが入力されたとき、まず前記第２の連想メモリを探索対象とし、前記第２の連想メモリでヒットしなかった場合に、前記複数の第１の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする。
【００２８】
これにより、ヒットするまでの時間を短縮することができる。
【００２９】
〔７〕＜ソート機能付きＣＡＭ＞
項４または項５において、前記第２の連想メモリは、大小一致を比較する機能を有するメモリセル（１０）で構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路（９＿１〜９＿Ｎ）をさらに有する。前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第１の連想メモリに転送する。
【００３０】
これにより、エントリデータの並べ替え（ソート）に要する時間を短縮することができる。
【００３１】
〔８〕＜複数の探索データの並列入力＞
項１において、前記メモリ（２＿２〜２＿４）は、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路（３＿１〜３＿５と４＿１〜４＿５）を、前記複数のポート毎に並列に備える。
【００３２】
これにより、複数の探索データ（Search Entry 1とSearch Entry 2）を同時に並列して入力し、同時に並列して探索することができる。
【００３３】
〔９〕＜半導体装置＞
項１から項８までのいずれか１項に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
【００３４】
これにより、ＣＡＭが集積された半導体装置において、消費電力を低く抑えることができる。
【００３５】
〔１０〕＜ＳＲＡＭ上で２分探索（Binary Search）を行う連想メモリ（ＣＡＭ）＞
本願において開示される代表的な実施の形態に係る連想メモリは、２のＮ乗個のエントリデータを保持することができ（Ｎは自然数）、入力される探索データ（Search Entry）と一致するエントリデータを探索する、連想メモリ（ＣＡＭ）（１００）である。
【００３６】
１ワードから２のＮ−１乗までの２のべき乗数毎のワード数を持つ第１から第Ｎメモリ（１＿１〜１＿４）と１ワードの第Ｎ＋１メモリ（１＿５）と、前記第１から第Ｎ＋１メモリに対応して設けられる第１から第Ｎ＋１比較回路（３＿１〜３＿５）とを有する。
【００３７】
前記第１比較回路は、前記第１メモリからエントリデータを読み出し前記探索データとの間で大小一致の比較を行い、前記比較の結果を前記第２比較回路に出力する。
【００３８】
前記第２比較回路（３＿２）は、前記第１比較回路から入力される比較結果に基づいて算出される前記第２メモリのアドレス（３ｒｄｗまたは１１ｔｈｗ）に格納されるエントリデータを読み出し、前記探索データとの間で大小一致の比較を行い、前記比較の結果を前記第３比較回路（３＿３）に出力する。
【００３９】
前記第３から第Ｎ比較回路（３＿３〜３＿４）は、前段の比較回路で比較対象とされたエントリデータが格納されていたアドレスと前段から入力される比較結果とに基づいて、比較対象のエントリデータを読み出すアドレスを決め、対応するメモリからエントリデータを読み出し前記探索データとの間で大小一致の比較を行い、前記比較の結果を後段の比較回路に出力する。
【００４０】
前記第Ｎ＋１比較回路（３＿５）は、前記探索データと前記第Ｎ＋１メモリ（１＿５）に格納されるエントリデータとが一致するか否かの比較を行う。
【００４１】
前記探索データと一致するエントリデータが存在するときには、当該一致するエントリデータを格納するメモリの番号と当該一致するエントリデータが格納される当該メモリ内のアドレスとに基づいて、前記探索データが前記２のＮ乗個のエントリデータをソートしたときの何番目のエントリデータと一致するかを算出して出力する。
【００４２】
これにより、探索データに対して比較対象となるエントリデータが、各探索領域の中央のアドレスに格納される１個ずつで済むため、比較対象のエントリデータの数が全エントリデータ数（2Ｎ）の対数（log22Ｎ=N）に抑えられ、消費電力が低く抑えられた連想メモリを提供することができる。
【００４３】
〔１１〕＜ソートされたエントリデータの格納＞
項１０において、前記第１メモリは前記２のＮ乗個のエントリデータのうち２のＮ−１乗番目のデータを格納し、前記第Ｎ＋１メモリは前記２のＮ乗個のエントリデータのうち２のＮ乗番目のデータを格納する。
【００４４】
前記第ｉメモリ（ｉは２以上Ｎ未満の自然数）は、ｊを２のｉ乗未満のすべての自然数とするとき、ｊ×２のＮ−ｉ乗番目のエントリデータのうち、前記第１メモリから第ｉ−１メモリに格納されたエントリデータ以外のエントリデータを格納する。
【００４５】
連想メモリは、前記探索データと一致するエントリデータが存在するときに、当該一致するエントリデータに対応する前記ｊ×２のＮ−ｉ乗の値−１を出力する。
【００４６】
これにより、エントリデータがソートされて格納され、探索データと一致するエントリデータの順位が、格納されるアドレスとして出力される。
【００４７】
〔１２〕＜パイプライン構成＞
項１１において、前記第１から第Ｎ＋１比較回路は、同一の探索データに対して、互いに異なるパイプラインステージで順次動作する。
【００４８】
これにより、２分探索を行うＣＡＭをパイプラインで構成することができ、スループットを向上することができる。
【００４９】
〔１３〕＜２段階サーチを行う連想メモリ＞
項１１において、前記連想メモリと同一構成の連想メモリを第１の連想メモリ（ＢＳＲＡＭ，１００）とする。２段階サーチを行う連想メモリ（５００）は、前記第１の連想メモリと同じエントリ数の第２の連想メモリ（ＢＣＡＭ，２００）と、複数個の前記第１の連想メモリ（１００＿１〜１００＿ｍ）と、前記第２の連想メモリから複数のエントリデータを読み出して昇順または降順に並べ替えて前記第１の連想メモリに転送する、転送回路（９００）をさらに備える。
【００５０】
これにより、サーチキャッシュとして機能する第２の連想メモリにヒットしたときにはレイテンシが小さく、ヒットしない場合に複数の第１の連想メモリを順次探索対象とすることで、大容量でも消費電力の小さいＣＡＭを提供することができる。
【００５１】
〔１４〕＜２面サーチキャッシュ＞
項１３において、連想メモリ（５００）は、前記第２の連想メモリを２個（２００＿１、２００＿２）備え、一方から第１の連想メモリへのエントリデータの転送を行うときに、他方を新たなエントリデータの書き込み対象とする。
【００５２】
これにより、新たなエントリデータの書き込みが待たされることがない。エントリデータを一方の第２の連想メモリから第１の連想メモリへ転送する期間には、転送が行われている当該第２の連想メモリへは新たなエントリデータを書き込むことができない。しかしその期間に新たなエントリデータの書き込み要求が発生した場合には、転送対象とされない他方の第２の連想メモリに対して新たなエントリデータの書き込みを行う事ができる。
【００５３】
〔１５〕＜探索順序＞
項１３または項１４において、連想メモリ（５００）は、探索データが入力されたとき、まず前記第２の連想メモリを探索対象とし、前記第２の連想メモリでヒットしなかった場合に、前記複数の第１の連想メモリのうち、最も最近エントリデータが書き込まれたものから順に探索対象とする。
【００５４】
これにより、ヒットするまでの時間を短縮することができ、ヒットした後の探索を行わないことによって消費電力を低減することができる。
【００５５】
〔１６〕＜ソート機能付きＣＡＭ＞
項１３または項１４において、前記第２の連想メモリは、大小一致を比較する機能を有するメモリセル（１０）で構成され、入力されるエントリデータとそれまでに入力されたエントリデータのそれぞれを比較した結果に基づいて、入力された複数のエントリデータに対応する順位を求めて記憶する順位記憶回路（９＿１〜９＿Ｎ）をさらに有する。前記転送回路は順位とエントリデータとを対応付けて読み出し、並べ替えて前記第１の連想メモリに転送する。
【００５６】
これにより、エントリデータの並べ替え（ソート）に要する時間を短縮することができる。
【００５７】
〔１７〕＜複数の探索データの並列入力＞
項１１において、前記第２から第Ｎメモリのそれぞれは、複数のアドレスによって同時に異なるワードからデータを読み出すことができる複数のポートを有し、前記探索回路（４＿１〜４＿５）を、前記複数のポート毎に並列に備える。
【００５８】
これにより、複数の探索データを同時に並列して入力し、同時に並列して探索することができる。
【００５９】
〔１８〕＜半導体装置＞
項１０から項１７までのいずれか１項に記載される連想メモリを、単一半導体基板上に備える、半導体装置。
【００６０】
これにより、ＣＡＭが集積された半導体装置において、消費電力を低く抑えることができる。
【００６１】
２．実施の形態の詳細
実施の形態について更に詳述する。
【００６２】
〔実施形態１〕＜ＳＲＡＭ上で２分探索（Binary Search）を行うＣＡＭ＞
本願において開示される代表的な実施の形態に係る連想メモリ（ＣＡＭ）は、探索データ（Search Entry）が入力され、複数のエントリデータを格納するメモリと、前記探索データと一致するエントリデータが格納されるメモリ内のアドレスを探索する探索回路とを備える。メモリには、複数のエントリデータが昇順または降順に並べ替えられ、それぞれがアドレスに対応付けられて格納される。例えばメモリが２Ｎワードの場合、２Ｎ個のエントリデータが昇順で格納されることにより、０ｗ（ワード）には最小値を持つエントリデータが、２Ｎ−１ｗには最大値を持つエントリデータが格納される。ここで、メモリは例えばＳＲＡＭ（Static Random Access Memory）であり、全てのエントリデータを１個で格納することができる大容量のＳＲＡＭであっても良いが、後述のように適切なワード数毎に分割された複数のＳＲＡＭで構成されるのが好適である。複数のＳＲＡＭのそれぞれをパイプラインステップとするパイプライン構成とすることにより、性能を向上することができるからである。また、同等の機能を有する他の記憶装置であってもよい。
【００６３】
探索回路は、複数のエントリデータが格納されるアドレス全体０ｗ〜２Ｎ−１ｗを初期の探索領域とし、探索領域の中央のアドレス２Ｎ−１−１ｗに格納されるエントリデータと探索データ（Search Entry）とを比較する。一致したときは当該アドレス（２Ｎ−１−１ｗ）を探索結果として出力し、不一致のときは大小比較の結果に基づいて探索領域を狭める。即ち、探索データ（Search Entry）が探索領域の中央のアドレス２Ｎ−１−１ｗに格納されるエントリデータよりも小さいときは、次の探索領域を中央のアドレス２Ｎ−１−１ｗよりも小さい領域０ｗ〜２Ｎ−１−２ｗに変更し、大きいときは、次の探索領域を中央のアドレス２Ｎ−１−１ｗよりも大きい領域２Ｎ−１ｗ〜２Ｎ−１ｗに変更する。この例のように、探索領域を繰り返しのステップごとに１／２に狭めるのが好ましい。
【００６４】
次に探索回路は、変更された（狭められた）探索領域の中央のアドレスに格納されるエントリデータと探索データ（Search Entry）とを比較する。即ち、前段で探索領域が０ｗ〜２Ｎ−１−２ｗに変更されたときには、中央のアドレス２Ｎ−２−１ｗに格納されるエントリデータと探索データ（Search Entry）とを比較し、前段で探索領域が２Ｎ−１ｗ〜２Ｎ−１ｗに変更されたときには、中央のアドレス３×２Ｎ−２−１ｗに格納されるエントリデータと探索データ（Search Entry）とを比較する。
【００６５】
探索回路は、この動作を探索領域が分割できなくなるまで繰り返し、その過程で探索データ（Search Entry）と一致したエントリデータを格納するアドレスの値をヒットアドレスとして出力し、一致するエントリデータがない場合には、ミスヒットとして出力する。
【００６６】
このように、探索データに対して比較対象となるエントリデータが、各探索領域の中央のアドレスに格納される１個ずつで済む。探索回路は、比較と探索領域の変更を順次繰り返しながら、探索データ（Search Entry）と一致するエントリデータを探索（サーチ）するので、全ての領域を探索する場合であっても、Ｎ回の比較を行えば足りるからである。これにより、比較対象のエントリデータの数が全エントリデータ数（2Ｎ）の対数（log22Ｎ=N）に抑えられ、消費電力が低く抑えられた連想メモリを提供することができる。
【００６７】
ここで、上記のメモリは、従来のＣＡＭとは異なり、アドレスを指定してデータを読み書きすることができる単純なＲＡＭでよい。探索データ（Search Entry）との比較は、探索回路内で行うためである。複数のエントリデータが昇順にソートされ、メモリのアドレス順に格納されている例について説明したが、ソートの方法と探索回路内の比較の方法とが対応していればよい。数値としてソート／比較するときには、数値が補数表現されているものとして大小比較を行ってもよいし、絶対値として比較しても良い。また数値以外の何らかの順序（例えばアルファベット順）を規定して、その順序における大小関係の比較を採用しても良い。また、エントリデータは同一の数値を複数個含んでいてもよい。
【００６８】
エントリデータの数がメモリのアドレス領域の大きさ（上の例では０ｗ〜２Ｎ−１ｗ）に満たない場合には、各エントリデータに有効フラグ（Ｖａｌｉｄフラグ）を設けて有効／無効を管理し、無効なエントリデータを比較対象から除外する。これにより、エントリデータの数が少ない場合にも探索データ（Search Entry）のサーチを行うことができる。なお、有効フラグ（Ｖａｌｉｄフラグ）については、以下の各実施形態におけるＣＡＭにそれぞれ設けられてもよいが、ＣＡＭ全体の構成と動作についての理解を容易にするために、有効フラグ（Ｖａｌｉｄフラグ）についての説明は省略する。
【００６９】
本実施形態１に係る、ＳＲＡＭ上で２分探索（Binary Search）を行うＣＡＭの、より具体的な構成例について説明する。
【００７０】
図１は、ＳＲＡＭ上で２分探索を行うＣＡＭの構成例を示すブロック図である。Ｎ＝４とし、エントリデータを１２８ビット×１６ワードとした。
【００７１】
上述のメモリは、５個のＳＲＡＭ１＿１〜１＿５に分割して実装され、全体としてパイプラインが構成されている。入力される探索データ（Search Entry）は、１２８ビットのレジスタ６＿１〜６＿８によって構成されるシフトレジスタで、順次後段のパイプラインステージに転送される。上述の探索回路は、探索データ（Search Entry）とエントリデータを比較する比較回路３＿１〜３＿５によって構成される。比較回路３＿１〜３＿５に機能については後述する。また、タイミング調整のために、１２８ビットのレジスタ６＿１〜６＿８とフリップフロップ（ＦＦ）７＿１〜７＿８が設けられている。
【００７２】
初段のＳＲＡＭ１＿１は１ワードのみのＳＲＡＭで、第７ワード（７ｔｈｗ）のエントリデータのみが格納される。ＳＲＡＭ１＿２は２ワードＳＲＡＭで、第３ワード（３ｒｄｗ）と第１１ワード（１１ｔｈｗ）のエントリデータが格納される。ＳＲＡＭ１＿３は４ワードＳＲＡＭで、第１ワード（１ｓｔｗ）と第５ワード（５ｔｈｗ）と第９ワード（９ｔｈｗ）と第１３ワード（１３ｔｈｗ）のエントリデータが格納される。ＳＲＡＭ１＿４は８ワードＳＲＡＭで、と第０ワード（０ｔｈｗ）と第２ワード（２ｎｄｗ）と第４ワード（４ｔｈｗ）と第６ワード（６ｔｈｗ）と第８ワード（８ｔｈｗ）と第１０ワード（１０ｔｈｗ）と第１２ワード（１２ｔｈｗ）と第１４ワード（１４ｔｈｗ）のエントリデータが格納される。ＳＲＡＭ１＿５は１ワードのみのＳＲＡＭで、第１５ワード（１５ｔｈｗ）のエントリデータのみが格納される。ＳＲＡＭ１＿１とＳＲＡＭ１＿５は、１ワードＳＲＡＭであるのでアドレスは不要であり、それぞれ単純なレジスタで構成されればよい。図１に示される各配線は、１ビット又は複数ビットの配線で構成されるが、図示ではバス表記は省略されている。
【００７３】
図１に示されるＣＡＭの動作について説明する。
【００７４】
１６個のエントリデータは、予め例えば昇順にソートされ、５個のＳＲＡＭ１＿１〜１＿５の上述のワードに格納される。ワード番号の大きいワードにより大きいエントリデータが格納され、最大のエントリデータはＳＲＡＭ１＿５である第１５ワード（１５ｔｈｗ）に、最小のエントリデータはＳＲＡＭ１＿４に第０ワード（０ｔｈｗ）に格納されている。ここで、初段のＳＲＡＭ１＿１に格納される第７ワード（７ｔｈｗ）は、探索領域である第０ワード（０ｔｈｗ）から第１５ワード（１５ｔｈｗ）の中央のアドレスである。
【００７５】
探索データ（Search Entry）は、ＳＲＡＭ１＿１に格納される第７ワード（７ｔｈｗ）のエントリデータと、比較回路３＿１によって比較される。図２は、比較回路３＿１の動作例を示す説明図である。比較回路３＿１は初段であるので、その前段の比較結果として不一致を示す「０」が入力され、アドレスとして比較対象であるエントリデータのアドレスとして「７」が入力される。このとき、探索データ（Search Entry）と、ＳＲＡＭ１＿１から入力された第７ワード（７ｔｈｗ）のエントリデータとの比較結果は、「小」、「大」、「一致」の３通りである。比較回路３＿１は、比較結果が「小」のとき不一致を示す「０」とアドレス「３」を、比較結果が「大」のとき不一致を示す「０」とアドレス「１１」を、比較結果が「一致」のとき一致を示す「１」とアドレス「７」を出力する。比較結果が「小」のときは、探索領域は第７ワード（７ｔｈｗ）よりも小さい範囲に変更されるので、探索領域は０〜６となりその中央のアドレス「３」が出力される。比較結果が「大」のときは、探索領域は第７ワード（７ｔｈｗ）よりも大きい範囲に変更されるので、探索領域は８〜１５となりその中央のアドレス「１１」が出力される。このように、１回の比較の結果、探索領域は１／２に狭められ、対象の探索領域の中央のアドレスが、次段に出力される。
【００７６】
比較回路３＿１から出力されたアドレスは、ＳＲＡＭ１＿２に入力され、第３ワード（３ｒｄｗ）または第１１ワード（１１ｔｈｗ）のエントリデータが読み出され、レジスタ６＿９を経て比較回路３＿２に供給される。比較回路３＿１から出力された比較結果とアドレスは、フリップフロップ７＿１と７＿２を経て比較回路３＿２に供給される。図３は、比較回路３＿２の動作例を示す説明図である。比較回路３＿２にはその前段の比較結果として一致を示す「１」または不一致を示す「０」が入力され、アドレスとして比較対象であるエントリデータのアドレスとして「３」または「１１」が入力される。
【００７７】
前段からの入力アドレスが「３」の場合には、ＳＲＡＭ１＿２から第３ワード（３ｒｄｗ）のエントリデータが読み出され、比較回路３＿２で探索データ（Search Entry）と比較される。比較回路３＿２は、比較結果が「小」のとき不一致を示す「０」とアドレス「１」を、比較結果が「大」のとき不一致を示す「０」とアドレス「５」を、比較結果が「一致」のとき一致を示す「１」とアドレス「３」を出力する。
【００７８】
前段からの入力アドレスが「１１」の場合には、ＳＲＡＭ１＿２から第１１ワード（１１ｔｈｗ）のエントリデータが読み出され、比較回路３＿２で探索データ（Search Entry）と比較される。比較回路３＿２は、比較結果が「小」のとき不一致を示す「０」とアドレス「９」を、比較結果が「大」のとき不一致を示す「０」とアドレス「１３」を、比較結果が「一致」のとき一致を示す「１」とアドレス「１１」を出力する。
【００７９】
前段からの入力が「一致」でアドレスが「７」の場合には、比較回路３＿２はそのまま、比較結果が「一致」を示す「１」とアドレス「７」を出力する。
【００８０】
このように、２回目の比較の結果、探索領域はさらに１／２、全体の１／４に狭められ、４通りの探索領域のうち対象の探索領域の中央のアドレスが、次段に出力される。
【００８１】
比較回路３＿２から出力されたアドレスは、ＳＲＡＭ１＿３に入力され、第１ワード（１ｓｔｗ）、第５ワード（５ｔｈｗ）、第９ワード（９ｔｈｗ）または第１３ワード（１３ｔｈｗ）のエントリデータが読み出され、レジスタ６＿１０を経て比較回路３＿３に供給される。比較回路３＿２から出力された比較結果とアドレスは、フリップフロップ７＿３と７＿４を経て比較回路３＿３に供給される。図４は、比較回路３＿３の動作例を示す説明図である。比較回路３＿３にはその前段の比較結果として一致を示す「１」または不一致を示す「０」が入力され、アドレスとして比較対象であるエントリデータのアドレスとして「１」、「５」、「９」または「１３」、或いは、それまでステージで探索データ（Search Entry）と一致した場合には、一致したエントリデータのアドレスとして、「３」、「７」または「１１」が入力される。
【００８２】
前段からの入力アドレスが「１」の場合には、ＳＲＡＭ１＿３から第１ワード（１ｓｔｗ）のエントリデータが読み出され、比較回路３＿３で探索データ（Search Entry）と比較される。比較回路３＿３は、比較結果が「小」のとき不一致を示す「０」とアドレス「０」を、比較結果が「大」のとき不一致を示す「１」とアドレス「２」を、比較結果が「一致」のとき一致を示す「１」とアドレス「１」を出力する。
【００８３】
前段からの入力アドレスが「５」の場合には、ＳＲＡＭ１＿３から第５ワード（５ｔｈｗ）のエントリデータが読み出され、比較回路３＿３で探索データ（Search Entry）と比較される。比較回路３＿３は、比較結果が「小」のとき不一致を示す「０」とアドレス「４」を、比較結果が「大」のとき不一致を示す「１」とアドレス「６」を、比較結果が「一致」のとき一致を示す「１」とアドレス「５」を出力する。
【００８４】
前段からの入力アドレスが「９」の場合には、ＳＲＡＭ１＿３から第９ワード（９ｔｈｗ）のエントリデータが読み出され、比較回路３＿３で探索データ（Search Entry）と比較される。比較回路３＿３は、比較結果が「小」のとき不一致を示す「０」とアドレス「８」を、比較結果が「大」のとき不一致を示す「１」とアドレス「１０」を、比較結果が「一致」のとき一致を示す「１」とアドレス「９」を出力する。
【００８５】
前段からの入力アドレスが「１３」の場合には、ＳＲＡＭ１＿３から第１３ワード（１３ｔｈｗ）のエントリデータが読み出され、比較回路３＿３で探索データ（Search Entry）と比較される。比較回路３＿３は、比較結果が「小」のとき不一致を示す「０」とアドレス「１２」を、比較結果が「大」のとき不一致を示す「１」とアドレス「１４」を、比較結果が「一致」のとき一致を示す「１」とアドレス「１３」を出力する。
【００８６】
前段からの入力が「一致」でアドレスが「３」、「７」または「１１」の場合には、比較回路３＿２はそのまま、比較結果が「一致」を示す「１」と入力されたアドレス「３」、「７」または「１１」を出力する。
【００８７】
このように、３回目の比較の結果、探索領域はさらに１／２、全体の１／８に狭められ、８通りの探索領域のうち対象の探索領域の中央のアドレスが、次段に出力される。
【００８８】
比較回路３＿３から出力されたアドレスは、ＳＲＡＭ１＿４に入力され、第２ワード（２ｎｄｗ）、第４ワード（４ｔｈｗ）、第６ワード（６ｔｈｗ）、第８ワード（８ｔｈｗ）、第１０ワード（１０ｔｈｗ）、第１２ワード（１２ｔｈｗ）または第１４ワード（１４ｔｈｗ）のエントリデータが読み出され、レジスタ６＿１１を経て比較回路３＿４に供給される。比較回路３＿３から出力された比較結果とアドレスは、フリップフロップ７＿５と７＿６を経て比較回路３＿４に供給される。図５は、比較回路３＿４の動作例を示す説明図である。比較回路３＿４にはその前段の比較結果として一致を示す「１」または不一致を示す「０」が入力され、アドレスとして比較対象であるエントリデータのアドレスとして「２」、「４」、「６」、「８」、「１０」、「１２」または「１４」が入力される。或いは、比較回路３＿４にはそれまでのステージで探索データ（Search Entry）と一致した場合には、一致したエントリデータのアドレスとして、「１」、「３」、「５」、「７」、「９」、「１１」または「１３」が入力される。
【００８９】
このステージでは、探索領域は１ワード単位になっているので、これ以降探索領域を狭めることができない。前段から入力されたアドレスで指定されるエントリデータと探索データ（Search Entry）が一致したときには、一致を示す「１」とともにそのときのアドレスが出力され、前段からの入力が「一致」で一致したときのアドレスが入力された場合には、一致を示す「１」とともに入力されたアドレスがそのまま出力される。この段階で、実質的に、第０ワード（０ｔｈｗ）から第１４ワード（１４ｔｈｗ）までのエントリデータと、探索データ（Search Entry）との比較が完了したことになる。
【００９０】
図６は、比較回路３＿５の動作例を示す説明図である。比較回路３＿５は、前段の比較回路３＿４からの出力が不一致を示す「０」である場合には、ＳＲＡＭ１＿５に格納されている第１５ワード（１５ｔｈｗ）のエントリデータと、探索データ（Search Entry）との比較を行い、一致の場合にはアドレスとして「１５」を出力し、不一致の場合には最終的に不一致を表す「ｍｉｓｓ  ｈｉｔ」を出力する。前段の比較回路３＿４からの出力が一致を示す「１」である場合には、入力されるアドレスをそのまま出力する。
【００９１】
以上のように、比較回路３＿１〜３＿５による比較動作を１段階実行する毎に探索範囲を１／２に狭めるので、比較の回数はエントリ数を2Nとするとき、２を底とする対数をとったlog22N=Nとなる。探索データを全てのエントリと比較する従来のＢＣＡＭでは、比較の回数はエントリ数と等しい2Nであるので、本実施形態に係るＣＡＭでは比較の回数をN/2Nに抑えることができる。連想メモリ（ＣＡＭ）の消費電力が比較の回数に概ね比例すると、本実施形態のＣＡＭの消費電力は、従来のＢＣＡＭのN/2Nに抑えることができことになる。なおこれは、原理的な概算であって、現実の回路素子に実装した場合には、その実装状態に応じた誤差が生じる。例えば、上述の例ではＮ＝４に対して比較の回数は５回である。一方、比較回路は通常の論理回路で構成されるため、セル内の比較回路よりも１回の比較動作で消費する電力は大きくなる可能性があるが、比較回数の減少により全体の消費電力はむしろ抑えられる。
【００９２】
本実施形態に示されるＣＡＭは、他の制御回路と共に、単一の半導体基板上に形成され、１チップのＬＳＩ（Large Scale Integrated Circuit）に集積されて実現されると好適である。このようなＬＳＩは、例えばシリコン基板上に、公知のＣＭＯＳ（Complementary Metal-Oxide-Semiconductor field effect transistor）半導体の製造技術を用いて形成される。また、本実施形態に示されるＣＡＭは、システムＬＳＩを設計するための設計環境において、マクロセルライブラリとして提供され、或いは、ビット数やエントリ数を自由に指定して適切なマクロセルを生成することができるコンパイラとして提供されてもよい。以上述べたＣＡＭの提供方法は、本実施形態に限られず、他の実施形態２〜６にも同様に妥当する。
【００９３】
〔実施形態２〕＜２段階サーチを行うＣＡＭ＞
実施形態１で示した、ＳＲＡＭ上で２分探索を行うＣＡＭ（以降、ＢＳＲＡＭと略記する）は、上述の通り消費電力を抑える効果が顕著であるが、全てのエントリデータがソートされていることが前提となる。したがって、古いエントリデータを最新のエントリデータで上書きするような部分的な書込みが許されず、必要な全てのエントリデータを読み出してソートし、再書き込みを行うような動作が必要となる。一方、従来のＣＡＭ（ＢＣＡＭ）は、探索データを同時に全てのエントリデータと比較するので、エントリデータの書き換え（追記、上書き）は、自由に行うことができる。
【００９４】
本実施形態２においては、ＢＳＲＡＭの前段にサーチキャッシュとして機能するＢＣＡＭを設け、２段階サーチを行う。新しいエントリデータは、ＢＣＡＭに順次書き込まれ、ＢＳＲＡＭのエントリ数に達するとソートされてＢＳＲＡＭに転送される。探索データのサーチは、初めにＢＣＡＭをサーチ対象とし、ＢＣＡＭでミスヒットした場合にＢＳＲＡＭをサーチ対象とする。これにより、エントリデータの書き換え（追記、上書き）を、自由に行うことができ、消費電力を抑えることができる。１個のＢＣＡＭと多数のＢＳＲＡＭを組合せて２段階サーチを行うＣＡＭを構成することにより、消費電力を抑える効果はより顕著となる。
【００９５】
図７は、２段階サーチを行うＣＡＭの構成例を示すブロック図である。
【００９６】
２段階サーチを行うＣＡＭ５００は、サーチキャッシュとして機能する１個のバイナリＣＡＭ（ＢＣＡＭ）２００と、メインサーチとして機能するｍ個のＳＲＡＭ上で２分探索を行うＣＡＭ（ＢＳＲＡＭ）１００＿１〜１００＿ｍとを含んで構成される。ＢＣＡＭ２００は、例えば２５６エントリであり、１個の探索データが入力されたときに既に格納されている最大２５６個のエントリデータと同時に比較を行って、一致するエントリデータを格納するアドレスまたは不一致を示す「ミスヒット」を出力する。ＢＣＡＭ２００は、それぞれのエントリが有効フラグ（Ｖａｌｉｄフラグ）を備えており、Ｖａｌｉｄのエントリデータのみが探索対象とされるので、Ｉｎｖａｌｉｄのエントリデータとの比較結果は無視される。Ｉｎｖａｌｉｄのエントリには、新たなエントリデータを書き込むことができ、この書き込みは探索動作と並列に実行することができる。ＢＳＲＡＭ１００＿１〜１００＿ｍは、それぞれがＢＣＡＭ２００と同じ２５６エントリであり、１個の探索データが入力されたときに、格納されている２５６個のエントリデータと実施形態１で説明したアルゴリズムに基づく比較を行って、一致するエントリデータを格納するアドレスまたは不一致を示す「ミスヒット」を出力する。
【００９７】
ＣＡＭ５００に入力されるエントリデータは、ＢＣＡＭ２００に書き込まれる。ＢＣＡＭ２００の２５６個全てのエントリにエントリデータが書き込まれたとき、即ちＦＵＬＬになったときには、ＢＣＡＭ２００から２５６個のエントリを読み出し、ソートしてＢＳＲＡＭ１００＿１〜１００＿ｍの中の１個に転送する（９００）。ＢＣＡＭ２００の２５６個全てのエントリはＩｎｖａｌｉｄにして、エントリデータの書き込みが許可された状態とする。さらにＢＣＡＭ２００に新たな２５６個のエントリデータが書き込まれたときには、再びその２５６個のエントリを読み出し、ソートしてＢＳＲＡＭ１００＿１〜１００＿ｍの中の別の１個に転送する（９００）。このように、ＢＣＡＭ２００に書き込まれるエントリデータは、２５６個ずつソートされ、ＢＳＲＡＭ１００＿１〜１００＿ｍに順次転送される。ソート及び転送動作は、その動作を行う専用の論理回路９００を設けて実行しても良いし、ＣＡＭ５００を制御するプロセッサのタスクの１つとしてソフトウェアによって実行しても良い。
【００９８】
探索データが入力されると、ＢＣＡＭ２００が探索（サーチ）を行い、ＢＣＡＭ２００がミスヒットを出力した時、即ち、入力された探索データと一致するエントリデータが、ＢＣＡＭ２００に格納されているエントリデータの中から発見されなかったときには、その探索データは、ＢＳＲＡＭ１００＿１〜１００＿ｍのうちの１個に送られて探索される。探索される順序は、ＢＣＡＭ２００が最初であり、以降は、ＢＳＲＡＭ１００＿１〜１００＿ｍのうち、最近エントリデータの転送が行われたＢＳＲＡＭから順に探索対象とするのが好適である。最近書き込まれたエントリデータの方がヒットする確率が高いため、ヒットするまでの時間が短縮され、ヒットした後の探索を行わないことによって消費電力を低減することができる。
【００９９】
以上説明したように、サーチキャッシュとして機能するＢＣＡＭ２００にヒットしたときにはレイテンシが小さく、ヒットしない場合にＢＳＲＡＭ１００＿１〜１００＿ｍを順次探索対象とすることで、大容量でも消費電力の小さいＣＡＭを提供することができる。
【０１００】
例えば、ｍ＝２５５とすることでＣＡＭ５００全体は６４Ｋ（６５５３６）エントリの大容量となる。これを１個のＢｉｎａｒｙＣＡＭで構成した場合には、１個の探索データに対して６５５３６個のエントリデータとの比較動作が同時に発生し、それに伴った電力が消費される。これに対して、本実施形態２のＣＡＭ５００では、全てのＣＡＭ（ＢＣＡＭ２００とＢＳＲＡＭ１００＿１〜１００＿ｍ）の全領域を探索した場合であっても、１個の探索データに対して比較されるエントリデータの数は、ＢＣＡＭにおける２５６個と、ＢＳＲＡＭ１００＿１〜１００＿ｍにおける１６個×２５５の合計４３３６個であり、約１／１５に抑えることができる。途中でヒットした場合には以降の比較を中止することができるので、さらに減らすことができる。
【０１０１】
本実施形態では各ＣＡＭのエントリ数を２５６とし、上述ではｍ＝２５５として全体として６４ＫエントリのＣＡＭを構成した例を示したが、エントリ数、ＢＳＣＡＭの数（ｍ）は任意に変更することができる。また、ＢＣＡＭ２００のエントリ数を各ＢＳＲＡＭのエントリ数と同数としたが、各ＢＳＲＡＭのエントリ数以上であればよい。ＢＣＡＭ２００のエントリ数を各ＢＳＲＡＭのエントリ数よりも大きくすることにより、ＢＣＡＭ２００からＢＳＲＡＭへのエントリデータの転送を行っている期間にも、ＢＣＡＭ２００への新たなエントリデータの書き込みを行うことができる。
【０１０２】
〔実施形態３〕＜２段階サーチを行うＣＡＭ（相補型サーチキャッシュ）＞
上述の図７に示されるＣＡＭ５００では、サーチキャッシュとして機能するＢＣＡＭ２００を１個搭載するのみであるので、ＢＣＡＭ２００の構成によっては、ＢＣＡＭ２００がＦＵＬＬになってＢＳＲＡＭへのエントリデータの転送を行う期間には、ＢＣＡＭ２００への新たなエントリデータの書き込みが制限され、又は禁止される場合がある。このような課題を解決するために、サーチキャッシュを相補的動作する２個のＢＣＡＭ２００＿１と２００＿２によって構成する。
【０１０３】
図８は、２段階サーチを行うＣＡＭ５００の別の構成例を示すブロック図である。
【０１０４】
ＣＡＭ５００は、サーチキャッシュとして機能する相補的動作する２個のＢＣＡＭ２００＿１と２００＿２と、メインサーチとして機能するｍ個のＳＲＡＭ上で２分探索を行うＣＡＭ（ＢＳＲＡＭ）１００＿１〜１００＿ｍとを含んで構成される。ＢＣＡＭ２００＿１と２００＿２は、それぞれが例えば２５６エントリであり、実施形態２におけるＢＣＡＭ２００と同様に動作する。また、ＢＳＲＡＭ１００＿１〜１００＿ｍも実施形態２におけるＢＳＲＡＭ１００＿１〜１００＿ｍと同様である。
【０１０５】
ＣＡＭ５００に入力されるエントリデータは、ＢＣＡＭ２００＿１と２００＿２のうちの一方、例えばＢＣＡＭ２００＿２に書き込まれる。そのＢＣＡＭ２００＿２がＦＵＬＬになったときには、ＢＣＡＭ２００＿２から全てのエントリを読み出しソートしてＢＳＲＡＭ１００＿１〜１００＿ｍの中の１個に転送する（９０２）。この読み出し・ソート・転送の期間は、他方のＢＣＡＭ２００＿１が新たに入力されるエントリデータの書き込み対象とされる。ＢＣＡＭ２００＿１がＦＵＬＬになったときには、ＢＣＡＭ２００＿１から全てのエントリを読み出しソートしてＢＳＲＡＭ１００＿１〜１００＿ｍの中の１個に転送する（９０１）が、この時には、代わりに元のＢＣＡＭ２００＿２が新たに入力されるエントリデータの書き込み対象とされる。このように、ＢＣＡＭ２００＿１と２００＿２が交互に、入力されるエントリデータの書き込み対象とされ、読み出し・ソート・転送の対象とされるので、新たなエントリデータの書き込みが待たされることがない。
【０１０６】
探索動作についても、ＢＣＡＭ２００＿１と２００＿２は交互に探索対象とされ、いずれかでミスヒットとなった場合には、メインサーチであるＢＳＲＡＭ１００＿１〜１００＿ｍが探索対象とされる。探索動作の詳細については実施形態２と同様であるので、説明を省略する。
【０１０７】
〔実施形態４〕＜探索順序＞
実施形態２と３で示したＣＡＭ５００において、メインサーチであるＢＳＲＡＭ１００＿１〜１００＿ｍの間の探索順序は、フレキシブルに変更することができる。ここで、エントリデータの書き換えが頻繁に行われる応用システムに適用される場合には、新しく書き込まれたエントリデータほど、ヒットする確率が高い傾向にあることがわかった。そこで、新しく書き込まれたエントリデータをより優先して探索対象とすることにより、より早くヒットさせることができ、ヒットした時点でそれ以降の探索を行わないように制御することにより、消費電力をさらに削減することができる。
【０１０８】
図９は、２段階サーチを行うＣＡＭの動作例を示す説明図である。横方向にＢＳＲＡＭの番号を示し、縦方向にパイプラインステージが示される。理解を容易にするため、ＢＳＲＡＭの数ｍ＝８とし、番号０〜７を付す。パイプラインステージの１ステージは、１個のＢＳＲＡＭ全体に書き込む、または、探索する期間を表わし、第１（１ｓｔ）から第８（８ｔｈ）までのステージが図示される。「Ｗ」はエントリデータの書き込み動作、即ちサーチキャッシュ（ＢＣＡＭ２００，またはＢＣＡＭ２００＿１と２００＿２のいずれか）からのソートを伴ったエントリデータの転送動作を示す。「ｄａｔａ０」から「ｄａｔａ７」はそのデータを探索データとする探索動作が実行されていることを示す。
【０１０９】
エントリデータの書き込み「Ｗ」は、第１ステージのＢＳＲＡＭ０、第２ステージのＢＳＲＡＭ１の順に、第７ステージのＢＳＲＡＭ７へ進み、図示されないが以降はＢＳＲＡＭ０に戻って繰り返されるもとする。
【０１１０】
第１ステージではＢＳＲＡＭ０が書込み対象であり、その直前に書き込むが完了されているＢＳＲＡＭ７が、最も新しいエントリデータを格納していることになる。そのため、探索データｄａｔａ０についてサーチキャッシュでミスヒットした後の最初の探索対象は、ＢＳＲＡＭ７である。ＢＳＲＡＭ７でもミスヒットの場合、さらに第２ステージでＢＳＲＡＭ６がサーチされ、ミスヒットが続くと、第３ステージでＢＳＲＡＭ５、第４ステージでＢＳＲＡＭ４、第５ステージでＢＳＲＡＭ３、第６ステージでＢＳＲＡＭ２、第７ステージでＢＳＲＡＭ１、第８ステージでＢＳＲＡＭ０が、順次探索対象とされる。上記の書き込み順序を仮定した場合には、ＢＳＲＡＭに付された番号が大きいほど新しいエントリデータを格納していることになるので、先に探索対象とされる。
【０１１１】
第２ステージではＢＳＲＡＭ１が書込み対象であり、その直前に書き込むが完了されているＢＳＲＡＭ０が、最も新しいエントリデータを格納していることになる。そのため、探索データｄａｔａ１についてサーチキャッシュでミスヒットした後の最初の探索対象は、ＢＳＲＡＭ０である。以降、ＢＳＲＡＭ７、ＢＳＲＡＭ６、ＢＳＲＡＭ５、ＢＳＲＡＭ４、ＢＳＲＡＭ３、ＢＳＲＡＭ２、ＢＳＲＡＭ１と続く。第３ステージ以降も同様である。
【０１１２】
ここで、第５ステージでは、ＢＳＲＡＭ４が書込み対象であり、その直前に書き込むが完了されているＢＳＲＡＭ４が、最も新しいエントリデータを格納しているため、探索データｄａｔａ４についてサーチキャッシュでミスヒットした後の最初の探索対象となっている。ところが同じ第５ステージは、上述の探索データｄａｔａ０についての探索も実行されるタイミングとなっている。このように１個のＢＳＲＡＭに対して２個の探索データｄａｔａ４とｄａｔａ０が同時に入力されることとなる。同様の現象は、第６ステージのＢＳＲＡＭ２とＢＳＲＡＭ４、第７ステージのＢＳＲＡＭ１とＢＳＲＡＭ３とＢＡＲＡＭ５、第８ステージのＢＳＲＡＭ０とＢＳＲＡＭ２とＢＳＲＡＭ４とＢＳＲＡＭ６でも発生する。
【０１１３】
この場合には下記３種類の解決手段を採り得る。第１の解決手段は、探索動作を待たせることである。例えば第５ステージでは、探索データｄａｔａ４またはｄａｔａ０の探索動作を待たせることにより解決することができる。第２の解決手段は、一方の探索データについての探索動作を中止することである。ｄａｔａ０のＢＳＲＡＭ３に対する探索動作は、第４ステージでＢＳＲＡＭ３のエントリデータが書き換えられているために、第４ステージでのＢＳＲＡＭ４の次の第５ステージで探索対象とする意味がなくなっている場合がある。この場合には、ｄａｔａ０の探索結果を「ミスヒット」として、これ以降の探索を中止することにより、探索データの競合の問題は解決される。第３の解決手段は、ＢＳＲＡＭを複数の探索データを同時に並列して探索することができるように構成することである。
【０１１４】
図１０は、２入力のサーチエントリに対して２分探索を行うＣＡＭの構成例を示すブロック図である。図１に示されるＳＲＡＭ上で２分探索を行うＣＡＭとの違いは、ＳＲＡＭ１＿２〜１＿４に代えて、デュアルポートＳＲＡＭ２＿２〜２＿４を備え、比較回路３＿１〜３＿５に加えて比較回路４＿１〜４＿５をさらに備える点である。パイプラインを構成するレジスタ６＿１２〜６＿２２とフリップフロップ７＿９〜７＿１６も並列に設けられている。２個の探索データSearch Entry 1とSearch Entry 2は、比較回路３＿１〜３＿５と比較回路４＿１〜４＿５によって同時に並列してエントリデータと比較される。比較対象のエントリデータは、デュアルポートＳＲＡＭ２＿２〜２＿４のそれぞれのポートから独立に読み出される。なお、図１０に示される各配線は、１又は複数ビットの配線で構成されるが、図示ではバス表記は省略されている。
【０１１５】
並列動作を可能とした点以外の動作は、図１を引用して実施形態１で説明した動作と同様であるので、ここでの説明を省略する。
【０１１６】
〔実施形態５〕＜ソート機能付ＢＣＡＭ＞
図１と図１０に示したＳＲＡＭ上で２分探索を行うＣＡＭは、上述の通り、エントリデータをソートして書き込む必要がある。
【０１１７】
図１１は、ソート機能付きＣＡＭ３００の構成例を示すブロック図である。図７と図８に示される２段階サーチを行うＣＡＭにおいて、サーチャキャッシュとして機能するＢＣＡＭ２００または２００＿１と２００＿２を図１１に示されるソート機能付きＣＡＭ３００とすることにより、転送動作または転送回路９００、９０１及び９０２が簡略化される。
【０１１８】
ソート機能付きＣＡＭ３００は、一致に加えて大小比較の機能を持つ比較機能付セルを使用したＢＣＡＭアレイ２０１と、各エントリに対応して設けられる順位レジスタ９＿１〜９＿Ｎと、比較機能付セルによる比較結果に基づいて、順位レジスタ９＿１〜９＿Ｎに適切な値を書き込む論理回路（Ｌｏｇｉｃ）８とを備える。ＢＣＡＭアレイ２０１は、通常のメモリと同様にアドレスを入力してデータをリード／ライトすることができ（ＲＡＭモード）、探索データ（Search Data）を入力して一致するエントリデータが格納されているアドレスをヒットアドレス（Hit Address）として出力することができる（ＣＡＭモード）。
【０１１９】
ソート機能付きＣＡＭ３００は、新たなエントリデータが書き込まれる度に順位レジスタ９＿１〜９＿Ｎに格納される全ての順位を適切に更新する。新たなエントリデータが入力されると、比較機能付セルを使用したＢＣＡＭアレイ２０１は、入力された新たなエントリデータと、ＢＣＡＭアレイ２０１内の各エントリに保持されているエントリデータとの比較を行って、エントリ毎に一致及び大小の比較結果を出力する。論理回路（Ｌｏｇｉｃ）８は、エントリ毎の上記比較結果に基づいて、順位レジスタ９＿１〜９＿Ｎに格納される全ての順位を適切に更新する。このとき、順位を更新するアルゴリズムについては、「ソート機能付きＣＡＭ３００の動作」としてその一例を説明するが、その例に制限されるものではなく任意である。
【０１２０】
なお、図１１に示される各配線は、複数ビットの配線で構成されるが、図示ではバス表記は省略されている。一致及び大小比較の機能を持つ比較機能付セルには、例えば、図１４または図１６、或いは特許文献１に記載されるセルを用いることができる。その詳細な構成と動作については後述するが、エントリごとに格納されている値とサーチエントリから入力される値との間で比較を行い、一致または大小の関係が並列して同時に出力される。
【０１２１】
ソート機能付きＣＡＭ３００の動作について説明する。
【０１２２】
全てのエントリのデータ及びそれぞれに対応する順位レジスタ９＿１〜９＿Ｎの値を０に初期化する。
【０１２３】
書き込み対象のデータは、エントリデータが既に書き込まれているか否かに関わらず、他の全てのエントリデータとの間で一致／大小の比較を行う。
【０１２４】
書き込み非対象のエントリについては、書き込み対象のデータが、当該書き込み非対象のエントリに格納されているエントリデータよりも「小さい」ときには、対応する順位レジスタの順位を１増やす（＋１する）。また、書き込み非対象のエントリの順位は、書き込み対象エントリの元の順位よりも大きい場合には、１減らす（−１する）。書き込み対象エントリの順位は、各エントリとの比較の結果、書き込み対象のデータがそれぞれのエントリのエントリデータよりも「大きい」とされた個数を順位として、順位レジスタに書き込む。
【０１２５】
これにより、エントリデータが書き込まれる度に全てのエントリの順位が適切に更新され、常に正しい順位が保たれる。
【０１２６】
ここで、上記アルゴリズムでは、同じ値のエントリデータに対して、同じ順位が付される。これに対して各エントリとの比較の結果、書き込み対象のデータがそれぞれのエントリのエントリデータよりも「大きい」とされた個数に代えて、「一致を含んで大きい」とされた個数を書き込み対象エントリの順位として、対応する順位レジスタに書き込むことにより、同じ値のエントリデータに異なる順位を付すことができる。このように、論理回路（Ｌｏｇｉｃ）８による順位の更新アルゴリズムは、種々変更することができる。
【０１２７】
図１２は、ソート機能付きＣＡＭの動作例を示すタイミングチャートである。理解を助けるため、エントリ数を４として説明する。横軸は時刻であり、縦軸方向に各エントリの有効フラグ（Ｖａｌｉｄフラグ）、エントリデータ、順位レジスタの値が、上から順に示される。
【０１２８】
時刻ｔ０において、全てのエントリのデータと順位は０に初期化される。
【０１２９】
時刻ｔ１においてエントリ０にデータ「１」が書き込まれる。書き込み非対象のエントリの比較結果は、すべて「大きい」であるので「大きい」とされた個数である「３」が、順位レジスタ０に書き込まれる。
【０１３０】
時刻ｔ２においてエントリ１にデータ「３」が書き込まれる。書き込み非対象のエントリの比較結果は、すべて「大きい」であるので「大きい」とされた個数である「３」が、順位レジスタ１に書き込まれる。書き込み非対象のエントリ０については、書き込み対象エントリ１の元の順位「０」よりも順位レジスタ０の値である書き込み非対象のエントリ０の元の順位「３」の方が大きいので１減らされて、順位レジスタ０の値は「２」となる。
【０１３１】
時刻ｔ３においてエントリ２にデータ「２」が書き込まれる。書き込み非対象のエントリの比較結果は、エントリ０と３で「大きい」、エントリ１で「小さい」であるので「大きい」とされた個数である「２」が、順位レジスタ２に書き込まれる。書き込み非対象のエントリ０については、書き込み対象エントリ２の元の順位「０」よりも順位レジスタ０の値である書き込み非対象のエントリ０の元の順位「２」の方が大きいので１減らされて、順位レジスタ０の値は「１」となる。書き込み非対象のエントリ１については、対応する順位レジスタ１の値を１増やす（＋１する）操作と１減らす（−１する）操作とが行われて互いに相殺され、順位レジスタ１の値は「３」のまま変化しない。書き込み対象のデータ「２」が、当該書き込み非対象のエントリに格納されているエントリデータ「３」よりも「小さい」ので、対応する順位レジスタ１の順位を１増やす（＋１する）一方、書き込み対象エントリ２の元の順位「０」よりも順位レジスタ１の値である書き込み非対象のエントリ１の元の順位「３」の方が大きいので１減らす（−１する）からである。
【０１３２】
時刻ｔ４においてエントリ３にデータ「０」が書き込まれる。書き込み非対象のエントリの比較結果は、エントリ０〜２で「小さい」であるので「大きい」とされた個数である「０」が、順位レジスタ３に書き込まれる。書き込み非対象のエントリ０、１、２については、それぞれ対応する順位レジスタ０、１、２の順位を１増やす（＋１する）操作と１減らす（−１する）操作とが行われて互いに相殺され、順位レジスタ０、１、２の値は「１」、「３」、「２」のまま変化しない。書き込み対象のデータ「０」が、書き込み非対象の各エントリに格納されているエントリデータ「１」、「３」、「２」よりも「小さい」ので、対応する順位レジスタ０、１、２の値をそれぞれ１増やす一方、書き込み対象エントリ３の元の順位「０」よりも書き込み非対象のエントリ０、１、２の元の順位「１」、「３」、「２」の方が大きいのでそれぞれ１減らすからである。
【０１３３】
以上のように、新たなエントリデータが書き込まれる度に全てのエントリの順位が適切に更新され、常に正しい順位が保たれる。
【０１３４】
図１３は、ソート機能付きＣＡＭ３００の別の構成例を示すブロック図である。図１１に示されるＣＡＭとは異なり、順位レジスタ９＿１〜９＿ＮをＣＡＭ２０２によって構成し、順位を入力してそのアドレスを探索することができるように構成されている。ＢＣＡＭ２０１へのアドレス入力は、順位レジスタとして機能するＣＡＭ２０２から出力されるソートアドレスと、外部から入力される論理アドレスとを選択的に切替えるセレクタ１１を含んで構成される。入力アドレスから順位を順に入力することにより、ＢＣＡＭ２０１からは対応するエントリが順位に対応して出力される。
【０１３５】
図１１に示されるソート機能付きＣＡＭ３００では、順位レジスタ９＿１〜９＿Ｎから順次、順位の値を出力し、ＢＣＡＭ２０１からは対応するエントリのエントリデータをＲＡＭモードで順次読み出すことにより、エントリデータとそれに対応する順位が読み出される。順位をＢＳＲＡＭのアドレスとして対応するエントリデータをＢＳＲＡＭのエントリに書き込むことにより、ソートされたエントリデータをＢＳＲＡＭに書き込むことができる。
【０１３６】
図１３に示されるソート機能付きＣＡＭ３００では、入力アドレスに順位を順次入力することによって指定された順序で、対応するエントリデータをＢＣＡＭ２０１から読み出すことができるので、ＢＳＲＡＭがエントリデータの書き込みにおいてランダムアクセスを可能とする構成とする必要がない。また、図１３に示されるソート機能付きＣＡＭ３００は、順位をランダムに指定して対応するエントリを読み出すことができるので、実施形態２と３に示される２段階サーチを行うＣＡＭ５００のサーチキャッシュ以外にも、応用することができる。
【０１３７】
一致に加えて大小比較の機能を持つ比較機能付セルの構成と動作について、説明する。
【０１３８】
図１４は、ソート機能付きＣＡＭに適用可能なメモリセル１０の構成例を示す回路図であり、図１５は、そのメモリセルの動作を表す真理値表を示す説明図である。
【０１３９】
メモリセル１０では、ＮチャネルトランジスタＭＮ１とＰチャネルトランジスタＭＰ１とで構成されるインバータとで構成されるインバータとが、互いの出力が他の入力に接続されて記憶素子を構成する。ＭＮ１とＭＰ１とで構成されるインバータの出力は、ワード線ＷＬで制御されるＭＮ３を介してビット線ＢＬに接続され、ＭＮ２とＭＰ２とで構成されるインバータの出力は、ワード線ＷＬで制御されるＭＮ４を介して反転ビット線／ＢＬに接続される。ＢＬと／ＢＬは互いに論理的に逆極性で相補的なビット線対を構成している。論理的な反転は本来信号線名の上側に示される「上線」で区別されるが、明細書で使用することができるフォントの制限により、「／」（スラッシュ）で代用する。探索データ（Search Data）の１ビットは、相補的な探索データ線対ＳＬと／ＳＬに入力される。ＳＬはＭＮ５のゲートに、／ＳＬはＭＮ６のゲートにそれぞれ接続される。ＭＰ３のゲートはＭＮ１とＭＰ１とで構成されるインバータの出力に接続され、ＭＰ４のゲートはＭＮ２とＭＰ２とで構成されるインバータの出力に接続され、ＭＰ３とＭＮ４のドレインは共に複合論理ゲート１２の非反転入力端子に入力される。複合論理ゲート１２の非反転入力端子は、プリチャージイネーブル信号ＰＥによって制御されるＭＮ７を介してＶＤＤにプリチャージされ、ＭＰ３とＭＮ５、またはＭＰ４とＭＮ６を介する放電経路が形成されている。複合論理ゲート１２の非反転入力端子は、ＭＰ３とＭＮ５、またはＭＰ４とＭＮ６のいずれかがともにオンの場合に、放電されロウレベルとなる。ＭＰ３とＭＮ５、またはＭＰ４とＭＮ６のいずれかがともにオンする場合とは、保持されるデータと探索データが不一致の場合である。複合論理ゲート１２の出力は、「一致」を示すマッチラインＭＬの反転論理／ＭＬであり、複合論理ゲート１２の反転入力端子には、上位ビット側で隣接するセルからのマッチラインｐｒｅ／ＭＬが入力されている。上位ビット側から入力されるマッチラインｐｒｅ／ＭＬがロウであると、当該セル１０より上位の全てのビットで「一致」が検出されたことになり、当該セル１０でも「一致」を検出したときには、マッチライン／ＭＬからロウが出力される。
【０１４０】
大小判定ラインＢＧは、当該セル１０に保持されるデータが探索データよりも大きいときにハイ「１」、小さい時にロウ「０」、一致するときにはハイインピーダンス（ＨｉＺ）を出力する。大小判定ラインＢＧは、同じエントリを構成する複数のセル１０の間で互いに短絡されており、上位ビットから順に比較したときに初めて不一致となったセル１０から、保持されているエントリデータのビットをＭＰ５とＭＰ６とＭＮ８を介して出力する。これにより、複数ビットのエントリデータの大小比較をおこなうことができる。
【０１４１】
図１６は、ソート機能付きＣＡＭに適用可能なメモリセル１０の別の構成例を示す回路図であり、図１７は、そのメモリセルの動作を表す真理値表を示す説明図である。図１５に示される回路がダイナミック回路であるのに対し、図１６に示される回路はフルスタティック回路である。そのため、プリチャージイネーブルＰＥは不要とされ、大小比較結果を示すＢＧは、隣接するセルからの入力ｐｒｅＢＧが入力され、後段にＢＧとして出力される。プリチャージを制御するＭＮ７に替え、ＭＰ７〜ＭＰ１９が設けられ、ＭＰ５，ＭＰ６，ＭＮ８に代えて複合論理ゲート１３と１４が設けられているが、実現されている論理は、図１４に示されるセル１０と同様である。
【０１４２】
図１１と図１３に示されるＢＣＡＭ２０１に使用される一致及び大小比較の機能を持つ比較機能付セルには、エントリごとに格納されている値とサーチエントリから入力される値との間で比較を行い、一致または大小の関係を並列して判定して出力することができるセルが用いられる。上述の図１４や図１６に示したセルには限定されず、他の回路構成であっても良く、例えば、特許文献１に記載されるセルを用いることができる。
【０１４３】
〔実施形態６〕＜高スループット・低消費電力のＣＡＭ＞
図１８は、ソート機能付ＢＣＡＭで相補型サーチキャッシュを構成し、複数のＢＳＲＡＭを備えて２段階サーチを行うＣＡＭの構成例を示すブロック図である。
【０１４４】
ＣＡＭ５００は、サーチキャッシュとして機能する相補的動作する２個のＢＣＡＭ３００＿１と３００＿２と、メインサーチとして機能するｍ個のＳＲＡＭ上で２分探索を行うＣＡＭ（ＢＳＲＡＭ）１００＿１〜１００＿ｍとを含んで構成される。ＢＣＡＭ３００＿１と３００＿２は、実施形態５に例示したようなソート機能付きのＢＣＡＭであり、それぞれが例えば２５６エントリとされる。
【０１４５】
ＣＡＭ５００に入力されるエントリデータは、ＢＣＡＭ３００＿１と３００＿２が交互に、入力されるエントリデータの書き込み対象とされ、読み出し・ソート・転送の対象とされるので、実施形態３と同様に、新たなエントリデータの書き込みが待たされることがない。ここで、ＢＣＡＭ３００＿１と３００＿２は、ソート機能付きのＢＣＡＭであるので、実施形態５に例示したように、エントリデータをソートされた順序で、或いは対応する順位と共に読み出すことができるため、ＢＳＲＡＭ１００＿１〜１００＿ｍへの転送動作または転送回路９１１と９１２では、ソート機能を省略または大幅に簡略化することができる。
【０１４６】
探索動作については、ＢＣＡＭ３００＿１と３００＿２は交互に探索対象とされ、いずれかでミスヒットとなった場合には、メインサーチであるＢＳＲＡＭ１００＿１〜１００＿ｍが探索対象とされる。探索動作の詳細については実施形態２と同様であるので、説明を省略する。
【０１４７】
これにより、高いスループットと低消費電力を両立することができるＣＡＭを提供することができる。
【０１４８】
以上本発明者によってなされた発明を実施形態に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１４９】
例えば、ＢＳＲＡＭ１００＿１〜１００＿ｍを構成するメモリは、ＳＲＡＭとして説明したが、ＳＲＡＭに限定される必要はない。例えば、他の記憶素子を用いたＲＡＭであっても良く、さらにエントリデータの固定されているシステムでは、電気的に書き換え可能なＲＯＭ（Read Only Memory）或いは書き換えのできないＲＯＭで構成されてもよい。
【符号の説明】
【０１５０】
１  ＲＡＭ
２  ２ポートＲＡＭ
３、４  比較回路
５  アドレスデコーダ（ＡＤＲ）
６  レジスタ（128b reg.）
７  フリップフロップ（ＦＦ）
８  論理回路
９  順位レジスタ
１０  メモリセル
１１  セレクタ
１２、  論理ゲート
１００  ＳＲＡＭ上で２分探索を行うＣＡＭ（ＢＳＲＡＭ）
２００、２０２  Ｂｉｎａｒｙ  ＣＡＭ（ＢＣＡＭ）
２０１  比較機能付きＢＣＡＭ
３００  ソート機能付ＢＣＡＭ
５００  ２段階サーチを行うＣＡＭ
９００、９０１、９０２  ソートして転送する動作または回路
９１１、９１２  転送動作または転送回路
【図１】
2015225675.tif 000003
【図２】
2015225675.tif 000004
【図３】
2015225675.tif 000005
【図４】
2015225675.tif 000006
【図５】
2015225675.tif 000007
【図６】
2015225675.tif 000008
【図７】
2015225675.tif 000009
【図８】
2015225675.tif 000010
【図９】
2015225675.tif 000011
【図１０】
2015225675.tif 000012
【図１１】
2015225675.tif 000013
【図１２】
2015225675.tif 000014
【図１３】
2015225675.tif 000015
【図１４】
2015225675.tif 000016
【図１５】
2015225675.tif 000017
【図１６】
2015225675.tif 000018
【図１７】
2015225675.tif 000019
【図１８】
2015225675.tif 000020