(57)【要約】【課題】高負荷時においても処理を安定させつつメモリシステムの消費電力をいっそう低減させる技術を提供する。【解決手段】メモリシステムを含む半導体装置は、検索用のデータの入力を受け付けて、メモリに保持されたデータを、ＣＡＭなどのメモリセルアレイの各行について並列に検索することが可能なものである。メモリシステムは、入力される検索用のデータの流入量が一定以上であるか否かを、検索命令が保持されるＦＩＦＯバッファの充填率を監視することで検知する。メモリシステムは、検知結果に応じて、メモリセルアレイの各ブロックを分割して検索処理の対象とすることで検索処理の速度を調節する。【選択図】図１
2017097940.tif 000002
【特許請求の範囲】
【請求項１】
検索用のデータの入力を受け付けて、メモリに保持されたデータをメモリセルアレイの各行について並列に検索することが可能な半導体装置であって、
入力される前記検索用のデータの流入量が一定以上であるか否かを検知し、検知結果に応じて、前記メモリに対する検索処理の速度を調節するように構成された検索制御部と、
前記メモリに対する検索処理の結果を示す信号を出力するように構成された出力制御部とを備える、半導体装置。
【請求項２】
前記入力される前記検索用のデータの流入量をモニタリングし、前記検索用のデータの流入量が一定以上である場合に信号を出力するように構成されたモニター部をさらに備え、
前記検索制御部が実行する処理は、前記モニター部が出力する信号に基づいて、前記検知結果に応じた前記メモリに対する検索処理の速度を調節することを含む、請求項１に記載の半導体装置。
【請求項３】
前記モニター部は、前記入力される前記検索用のデータを保持するように構成されたＦＩＦＯ（First  In  First  Out）メモリを含み、前記ＦＩＦＯメモリの使用量が一定量を超える場合に前記信号を出力するように構成されている、請求項２に記載の半導体装置。
【請求項４】
前記検索制御部が前記メモリに対する検索処理の速度を調節することは、前記メモリセルアレイを複数の部分に分割した各部分の少なくとも１つを前記検索処理の対象として前記検索処理を実行することを含む、請求項３に記載の半導体装置。
【請求項５】
前記検索制御部は、前記検索処理の対象とする前記メモリセルアレイの範囲の上限設定値を管理するように構成されており、前記入力される前記検索用のデータが前記メモリセルアレイにおいて検索対象とする範囲が前記上限設定値を超える場合に、前記メモリセルアレイを複数の部分に分割した各部分を前記検索処理の対象として前記検索処理を実行することを含む、請求項４に記載の半導体装置。
【請求項６】
前記半導体装置は、
前記メモリセルアレイを複数の部分に分割して各部分の少なくとも１つを前記検索処理の対象として前記検索処理を行うか否かの指定を含む前記検索用のデータの入力を受け付けるように構成されており、
前記検索制御部は、前記検索用のデータに含まれる前記指定に従って、前記検索処理の速度を調節するように構成されている、請求項４に記載の半導体装置。
【請求項７】
前記半導体装置は、
前記検索制御部が前記メモリセルアレイを複数の部分に分割した各部分の少なくとも１つを前記検索処理の対象として前記検索処理を行うか、または、前記メモリセルアレイの全体を検索処理の対象として前記検索処理を行うかの設定を記憶可能に構成されており、
前記検索処理部は、前記設定に従って、前記検索処理を行うように構成されている、請求項４に記載の半導体装置。
【請求項８】
前記モニター部は、前記ＦＩＦＯメモリの使用量が大きくなるほど前記メモリセルアレイの分割数が小さくなるように複数の段階の閾値を設定可能であり、前記複数の段階の閾値のそれぞれを超える場合に、各段階に応じた前記信号を出力するように構成されており、
前記検索制御部が行う前記検索処理は、前記モニター部が出力する前記信号に示される前記段階に応じた分割数により前記メモリセルアレイを複数に分割して前記検索処理を実行することを含む、請求項４に記載の半導体装置。
【請求項９】
前記モニター部は、前記ＦＩＦＯメモリの使用量に対し、前記検索制御部が前記メモリセルアレイを前記複数の部分に分割することにより前記検索処理を行うための第１の閾値と、前記検索制御部が前記メモリセルアレイを分割せず前記メモリセルアレイの全体を検索対象とするための第２の閾値とを設定可能であり、
前記検索制御部が行う前記検索処理は、前記モニター部が前記第１の閾値に応じた前記信号を出力する場合に、前記メモリセルアレイを複数の部分に分割した前記検索処理を行い、前記モニター部が前記第２の閾値に応じた前記信号を出力する場合に、前記メモリセルアレイの全体を検索対象とした前記検索処理を行うことを含む、請求項４に記載の半導体装置。
【請求項１０】
前記半導体装置は、複数の前記メモリセルアレイのそれぞれについて前記検索をすることが可能に構成されており、
前記検索制御部が行う前記検索処理は、前記複数の前記メモリセルアレイのいずれに対して前記複数の部分に分割した各部分を前記検索処理の対象とするかの指定を受け付けて、受け付けた指定に従って前記検索処理を行うことを含む、請求項４に記載の半導体装置。
【請求項１１】
前記半導体装置内の各回路の少なくともいずれかについて、製造時のバラツキをモニタリングする性能評価部をさらに備え、
前記検索制御部は、前記性能評価部による前記製造時のバラツキのモニタリング結果に応じて、前記メモリセルアレイの各部分を検索対象とするための分割数を決定するように構成されている、請求項４に記載の半導体装置。
【請求項１２】
前記検索制御部は、前記メモリセルアレイを複数の部分に分割して前記検索処理を行った際の分割数の履歴を保持するように構成されており、前記分割数の履歴に応じて、前記メモリセルアレイを複数の部分に分割する分割数を決定するように構成されている、請求項４に記載の半導体装置。
【請求項１３】
前記検索制御部は、前記半導体装置が入力を受け付ける前記検索用のデータに特定の命令が含まれる場合に、前記メモリセルアレイを複数の部分に分割した前記検索処理を実行するように構成されている、請求項４に記載の半導体装置。
【請求項１４】
前記検索制御部は、繰り返し行う前記検索処理のインターバルの長さを計測可能に構成されており、
前記インターバルの長さが一定期間を超えて前記検索処理を再開した場合、前記メモリセルアレイを複数の部分に分割した前記検索処理を行い、前記メモリセルアレイを分割する数を段階的に減少させるように構成されている、請求項４に記載の半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、メモリに保持されたデータを検索するための技術に関し、特に、ＣＡＭ（ＣＡＭ：Content  Addressable  Memory）などのメモリシステムの消費電力を低減させるための技術に関する。
【背景技術】
【０００２】
デスクトップＰＣ（Personal  Computer）、ラップトップＰＣ、タブレット端末、スマートフォンその他の通信機器が、ネットワークを介して接続している。これらの通信機器間での通信トラフィックがますます増加している。そのため、ルータ、スイッチその他のネットワーク機器は、いっそう高速に処理を行うことが必要とされている。このようなネットワーク機器等において経路探索などの処理を高速で行うため、高速で動作するメモリシステムが使用されている。
【０００３】
例えば、ネットワークルータなどではＩＰ（Internet  Protocol）パケットのルーティングが行われている。ネットワークルータは、例えば内容参照メモリ（ＣＡＭ）を備える。ＣＡＭは、複数のＣＡＭセルで構成されている。ＣＡＭにおける検索は、検索対象となるデータ列に基づいてサーチライン（ＳＬ）を活性化させ、ＣＡＭアレイ内の各エントリとの一致不一致を判定することによりなされる。ＣＡＭは、検索の結果、一致するエントリのアドレスを出力する。ネットワークルータが備えるＣＡＭは、ＣＡＭセルにＩＰアドレスを保持するように構成されている。ネットワークルータは、入力されるＩＰパケットに含まれるＩＰアドレスに基づいてＣＡＭセルに保持されているＩＰアドレスと照合することによりルーティングを行う。
【０００４】
このように、ＣＡＭは、ＣＡＭアレイ内の各エントリのデータと、検索対象のデータとの比較を、各エントリについて並列に行うことができるため、高速でデータを検索することができる。ＣＡＭは、複数のエントリに対し並列に検索を行うため高速に検索することができるが、各マッチライン（ＭＬ）へのプリチャージ等を伴うため、消費電力が比較的大きくなる。そのためＣＡＭを含むシステムの消費電力を低減させる技術について従来から様々な提案がされている。例えば、特開２００５−１８９４２号公報（特許文献１）は、ＮＰＵ（Network   Processor  Unit）、ＡＳＩＣ（Application  Specific  Integrated  Circuit）等の制御部に与える負荷を低減することが可能な連想メモリ機能付き集積回路について記載している。特許文献１には、検索キーワードをシフトさせながら、メモリに格納されるデータとの一致を検出する技術が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−１８９４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ルータやスイッチなどのネットワーク機器等においては、処理しきれず動作が不安定になってしまう事態をなるべく回避することが好ましい。ネットワーク機器の動作が安定することは、ネットワークの不通期間を短くすることとなり、ネットワークの信頼性の向上にもつながるからである。そのため、これらネットワーク機器等の高い信頼性を求められる機器においてＣＡＭが使用される場合、ＣＡＭの動作の安定性を考慮して、比較的大きな性能マージンを設けて機器の設計がなされることがある。このように機器を構成することで、瞬間的な高負荷時においてもＣＡＭを安定して動作させることができる。しかし、機器が高負荷ではない場合は必要以上の性能でＣＡＭの検索処理を実行することになり、ＣＡＭの低消費電力化を妨げている。
【０００７】
したがって、高負荷時においても機器の処理を安定させつつメモリシステムの消費電力をいっそう低減させる技術が必要とされている。本開示は、メモリシステムの消費電力を低減させつつ、高負荷時の処理を安定させる技術を提供することを目的としている。
【０００８】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００９】
一実施形態に従う半導体装置は、検索用のデータの入力を受け付けて、メモリに保持されたデータをメモリセルアレイの各行について並列に検索することが可能なものである。半導体装置は、入力される検索用のデータの流入量が一定以上であるか否かを検知し、検知結果に応じて、メモリに対する検索処理の速度を調節するように構成された検索制御部と、メモリに対する検索処理の結果を示す信号を出力するように構成された出力制御部とを備える。
【発明の効果】
【００１０】
一実施の形態に従う半導体装置によると、半導体装置に入力される検索用のデータの流入量が一定以上であるか否かに応じて、メモリに対する検索処理の速度を調節するため、高負荷時などに必要なメモリの処理性能を発揮させつつ、負荷に応じてメモリに対する検索処理の速度を制御する。そのため、検索処理の低速化により、検索処理中の消費電力のピークを低減させつつ、高負荷時の処理を安定化させることができる。
【図面の簡単な説明】
【００１１】
【図１】本実施形態の半導体装置に含まれるメモリシステム１の構成を示すブロック図である。
【図２】制御回路１００の構成を示すブロック図である。
【図３】ＴＣＡＭ（Ternary  CAM）アレイブロック３００のＣＡＭセルアレイを構成する各ブロックの優先度の例を示す図である。
【図４】関連技術における検索処理および本実施形態における分割した検索処理を示す図である。
【図５】ＴＣＡＭアレイブロック３００に対して分割して検索処理を行うことによる低消費電力化を示す図である。
【図６】ＴＣＡＭアレイブロック３００に対する処理を平均化することによるピーク電流の平準化を示す図である。
【図７】メモリシステム１がキューの使用状態に応じてＣＡＭセルアレイを検索するための分割数を決定して検索を行う処理を示すフローチャートである。
【図８】検索制御部２０がＴＣＡＭアレイブロック３００のＣＡＭセルアレイを分割して検索する動作を示すフローチャートである。
【図９】実施の形態２のメモリシステム１が、検索対象とするブロック数の最大数の閾値に応じて、ＣＡＭセルアレイを分割して検索するか否かを制御する処理を示すフローチャートである。
【図１０】実施の形態３のメモリシステム１が、外部のシステムから、ＣＡＭセルアレイに対して分割して検索するか否かの指定を受け付けることを示す図である。
【図１１】実施の形態４のメモリシステム１が、制御回路１００において分割動作制御レジスタ４１に値を保持し、ＣＡＭセルアレイに対して分割して検索するか否かを分割動作制御レジスタ４１の値に応じて制御する構成を示す図である。
【図１２】実施の形態５のメモリシステム１の制御回路１００において、閾値設定レジスタ１５がキューの残量に応じた分割数の設定を多段階で保持していることを示す図である。
【図１３】実施の形態６のメモリシステム１の制御回路１００において、閾値設定レジスタ１５がキューの残量に応じて、分割してのＣＡＭセルアレイの検索を開始する閾値と、分割しての検索処理を終了する閾値とを保持することを示す図である。
【図１４】実施の形態７の半導体回路が複数のメモリシステムを備え、これらメモリシステムの上位側のシステムがそれぞれのメモリシステムに対してＣＡＭセルアレイを分割して検索処理を行うか分割せず検索処理を行うかを指定する場合の構成を示す図である。
【図１５】実施の形態８のメモリシステム１が、性能評価部５１を備えてメモリシステム１の製造バラツキをモニタリングし、モニタリング結果に応じてＣＡＭセルアレイに対する検索処理の分割を制御する構成を示す図である。
【図１６】実施の形態８の制御回路１００が、メモリシステム１の製造バラツキの評価結果に基づいて、ＣＡＭセルアレイに対する検索処理の分割数を制御する処理を示すフローチャートである。
【図１７】実施の形態９のメモリシステム１が、ＣＡＭセルアレイに対して検索処理を行った際の分割数の履歴を保持し、履歴に基づいて、ＣＡＭセルアレイに対する検索処理の分割数を補正する構成を示す図である。
【図１８】実施の形態１０のメモリシステム１が、特定のコマンドに対してのみＣＡＭセルアレイの検索処理を分割する場合のメモリシステム１の動作を示すフローチャートである。
【図１９】実施の形態１２の制御回路１００の構成を示す図である。
【図２０】実施の形態１３のメモリシステム１が、ＣＡＭセルアレイに対する検索処理が規定値の期間より間隔が空いて検索処理を行った場合に、段階的に検索処理の分割数を小さくする処理を示す図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しつつ、本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについての詳細な説明は繰り返さない。
【００１３】
＜実施の形態１＞
図面を参照して実施の形態の半導体装置について説明する。
【００１４】
＜メモリシステムを含む半導体装置の構成＞
図１は、本実施形態の半導体装置に含まれるメモリシステム１の構成を示すブロック図である。図１に示すように、メモリシステム１は、制御回路１００と、サーチラインドライバ２００と、ＴＣＡＭアレイブロック３００と、ロウデコーダ４００と、センスアンプ／ライトドライバ５００と、マッチアンプ６００と、プライオリティエンコーダ７００とを含む。
【００１５】
ＴＣＡＭアレイブロック３００は、複数のエントリによりデータを保持する。各エントリは、複数のＣＡＭセル（TCAM  cell）により構成される。図１の例では、Ｎ行×Ｎ列のＣＡＭセルにより構成されるＴＣＡＭアレイブロック３００を示しているが、Ｎ行×Ｎ列に限られない。各エントリは、それぞれアドレスが与えられている。ＴＣＡＭアレイブロック３００は、検索用のデータの入力を受け付けて、各エントリに保持されるデータと一致するか不一致かを並列に判定する。ＴＣＡＭアレイブロック３００は、３値連想メモリ（Ternary  CAM）として構成されている。各ＣＡＭセルは、ハイ（”１”）、ロー（”０”）、ドントケア（”Ｘ”）の３値をとることができる。
【００１６】
ＴＣＡＭアレイブロック３００は、ＣＡＭセルへのデータの書き込みを行単位（エントリ単位）で受け付ける。センスアンプ／ライトドライバ５００は、制御回路１００からのセンスアンプ制御信号（Sense  Amp.制御信号）およびライトドライバ制御信号（Write  Driver制御信号）による制御に従って動作する。センスアンプ／ライトドライバ５００は、ＴＣＡＭアレイブロック３００へ書き込むデータ（Write  Data）に基づいて、ビットライン（ＢＬ）を活性化させる。また、ロウデコーダ４００は、ＴＣＡＭアレイブロック３００における書き込み対象の行のアドレスのワードライン（ＷＬ）を活性化させる。ロウデコーダ４００は、制御回路１００のＲｅａｄ／Ｗｒｉｔｅ制御信号に従って動作し、ＴＣＡＭアレイブロック３００へのデータ読み出し／書き込み対象となるアドレスの指定を受け付けて、受け付けたアドレスに対応するワードライン（ＷＬ）を活性化させる。メモリシステム１は、このビットラインおよびワードラインにより、ＴＣＡＭアレイブロック３００の指定されたアドレスに対してデータを書き込む。
【００１７】
ＴＣＡＭアレイブロック３００は、ＴＣＡＭアレイブロック３００における各エントリに保持されるデータを検索するために、検索に用いるデータを、サーチラインドライバ２００から出力されるサーチライン（ＳＬ）上の信号により受け付ける。サーチラインドライバ２００は、制御回路１００からのサーチラインドライバ制御信号（SLDrv.制御信号）による制御に従って動作する。サーチラインドライバ２００は、ＴＣＡＭアレイブロック３００を検索するための検索用のデータ（Search  Key）に基づいて、サーチライン（ＳＬ）を活性化させる。ＴＣＡＭアレイブロック３００の検索時に、サーチライン（ＳＬ）により検索用のデータがＴＣＡＭアレイブロック３００へ出力される。ＴＣＡＭアレイブロック３００において、検索用のデータと、ＴＣＡＭアレイブロック３００の各エントリに保持されるデータとが一致するエントリについて、マッチライン（ＭＬ）がハイレベルを保持する。
【００１８】
マッチアンプ６００は、制御回路１００が出力するマッチアンプ制御信号（Match  amp.  制御信号）による制御に従って動作する。マッチアンプ６００は、ＴＣＡＭアレイブロック３００の検索において、マッチラインの出力を増幅して、エントリ検索判定信号ｍａｏをプライオリティエンコーダ７００へ出力する。
【００１９】
プライオリティエンコーダ７００は、複数のエントリにおいて、検索用のデータと、ＴＣＡＭアレイブロック３００の各エントリに保持されるデータとが一致する場合に、いずれかのデータを優先して出力する。例えば、ＴＣＡＭアレイブロック３００の各エントリに保持されるデータに対し、検索用のデータとして値”Ｘ”を用いて検索をすると、複数のエントリに保持されるデータが検索によりヒットしうる。プライオリティエンコーダ７００は、例えば、予め定められた優先順位（例えば、ＴＣＡＭアレイブロック３００の各エントリのうち、アドレスが最も小さいエントリを優先する等）に従って、検索によりヒットしたマッチラインに対応するアドレスを検索結果（マッチアドレス）として制御回路１００へ出力する。
【００２０】
制御回路１００は、メモリシステム１のＴＣＡＭアレイブロック３００に対する検索動作を制御するための回路である。制御回路１００は、メモリシステム１の外部の回路から、ＴＣＡＭアレイブロック３００に対する検索命令を含む制御信号を受け付ける。制御回路１００は、外部の回路から各種コマンド（検索命令など）を受け付けて、所定のクロックに従って動作し、ＴＣＡＭアレイブロック３００に対する検索結果を出力する。また、制御回路１００は、メモリシステム１の外部の回路から受け付けた検索命令の滞留状況（例えば、検索命令を保持するキューの使用状況など）を判定し、その判定結果をフロー制御情報としてメモリシステム１の外部の回路へ出力する。
【００２１】
図２は、制御回路１００の構成を示すブロック図である。制御回路１００は、図２に示される各ブロックの機能を発揮する各回路により構成される。図２に示すように、制御回路１００は、コマンドデコーダ１１と、キューモニター部１０と、検索制御部２０と、検索結果マージ部２６と、出力制御部３０とにより構成される。
【００２２】
制御回路１００は、メモリシステム１の外部から検索命令１１０を受信する。検索命令１１０は、メモリシステム１のＴＣＡＭアレイブロック３００に保持されるデータを検索するための命令であり、検索用のデータ（Search  Key）、検索時の各種オプションの設定などを含む。検索用のデータ（Search  Key）としては、例えば、検索対象の文字列、ＩＰアドレスのような数字データその他のデータがある。
【００２３】
コマンドデコーダ１１は、メモリシステム１が受信した命令をデコードし、制御回路１００等のメモリシステム１内の各回路が処理可能となるようにフォーマットを変換する等の処理を行う。例えば、コマンドデコーダ１１は、メモリシステム１が受信した命令が、検索命令であるか、ＴＣＡＭアレイブロック３００に保持されるデータに対する書き込みまたは読み出し命令であるか、その他の各種の設定を行うための命令であるか等を判別し、判別結果に応じて各種フォーマット変換等を行う。コマンドデコーダ１１は、制御回路１００の各回路が実行可能な形式に、検索命令１１０の変換を行う。
【００２４】
キューモニター部１０は、メモリシステム１に対して入力される検索用のデータの流入量をモニタリングし、検索用のデータの流入量が一定以上である場合に、検索制御部２０に、検索用のデータの流入量が一定以上であることを示す信号を出力する。キューモニター部１０において、予め、入力データＦＩＦＯ１２の使用量と比較するための閾値が閾値設定レジスタ１５に設定されている。キューモニター部１０は、キューの使用状態（キューの使用量など）と、閾値設定レジスタ１５に設定される閾値とを比較した比較結果に基づいて、比較結果を示す信号を検索制御部２０へ出力する。例えば、制御回路１００は、キューの使用状態が、予め閾値設定レジスタ１５に設定しておいた閾値を超えない場合は、ＴＣＡＭアレイブロック３００の検索処理時のピーク電力を抑えるため、ＴＣＡＭアレイブロック３００の各ブロックを分割して検索する処理を行う。また、例えば、制御回路１００は、キューの使用状態が、予め閾値設定レジスタ１５に設定しておいた閾値を超える場合は、ＴＣＡＭアレイブロック３００の検索処理を分割しないで行う。制御回路１００は、検索する処理の処理速度を優先することにより、キューに滞留した命令を高速で処理する。
【００２５】
図２に示すように、キューモニター部１０は、入力データＦＩＦＯ１２と、出力データＦＩＦＯ１３と、キュー管理部１４と、閾値設定レジスタ１５とを含む。入力データＦＩＦＯ１２は、制御回路１００において実行可能な形式にコマンドデコーダ１１によって変換されたデータを一時的に記憶するためのメモリである。入力データＦＩＦＯ１２は、例えば、メモリシステム１に入力される検索用のデータを保持するためのバッファメモリである。制御回路１００は、入力データＦＩＦＯ１２により、メモリシステム１に入力されるデータを一時的にバッファリングすることで、ＴＣＡＭアレイブロック３００に対する検索動作時に割り込み処理が発生した場合に対処することができる。また、入力データＦＩＦＯ１２により、メモリシステム１およびメモリシステム１の外部の回路間のレーテンシーを吸収することができる。
【００２６】
出力データＦＩＦＯ１３は、ＴＣＡＭアレイブロック３００の検索結果など、制御回路１００からメモリシステム１の外部へ出力するデータを保持するためのバッファメモリである。例えば、ＴＣＡＭアレイブロック３００に対する検索結果をメモリシステム１が出力する外部の回路において、メモリシステム１の出力結果を受け取れない状態（ビジー状態）である場合に、出力データＦＩＦＯ１３においてデータをバッファリングする必要がある。この他に、ＴＣＡＭアレイブロック３００に対する検索結果に対して別のデータを付加してメモリシステム１の外部の回路へ出力する場合、また、メモリシステム１のデータバスの調停が発生した場合等において、出力データをバッファリングする必要がある。出力データＦＩＦＯ１３に保持されるデータ量が閾値を超えると、オーバーフロー等が発生する可能性があるため、キュー管理部１４は、出力データＦＩＦＯ１３の使用状態の情報を検索制御部２０に出力することで、ＴＣＡＭアレイブロック３００に対する検索時のブロック数を決定させることとしてもよい。
【００２７】
閾値設定レジスタ１５は、入力データＦＩＦＯ１２の使用状況と比較するための閾値を保持するためのレジスタである。閾値設定レジスタ１５に保持される閾値は、例えばメモリシステム１の外部から、オプション設定等の信号の入力を制御回路１００が受けて設定することができる。また、閾値設定レジスタ１５は、出力データＦＩＦＯ１３の使用状況と比較するための閾値を保持するように構成してもよい。キュー管理部１４は、出力データＦＩＦＯ１３の使用量が閾値を超える場合、出力データＦＩＦＯ１３のオーバーフローを抑止するため、検索制御部２０に信号を出力する。こうすることで、検索制御部２０が、検索処理を分割して行うことで検索処理を低速で行う、また、検索処理を一時停止する等することができる。
【００２８】
キュー管理部１４は、閾値設定レジスタ１５に保持される閾値（管理閾値）と、入力データＦＩＦＯ１２の使用状況とを比較することで、入力データＦＩＦＯ１２の使用状況を管理する。キュー管理部１４は、入力データＦＩＦＯ１２の使用量が一定量を超える場合に、入力データＦＩＦＯ１２の使用量が一定量を超えていることを示す信号を検索制御部２０へ出力する。また、キュー管理部１４は、出力データＦＩＦＯ１３の使用量を管理する。例えば、メモリシステム１の外部の回路で処理が滞留している場合、ＴＣＡＭアレイブロック３００の検索結果などを出力制御部３０からメモリシステム１の外部の回路へ出力するために、出力データＦＩＦＯ１３の使用量が徐々に増加することがある。キュー管理部１４は、このように出力データＦＩＦＯ１３の使用状況を管理して、出力データＦＩＦＯ１３の使用状況と閾値設定レジスタ１５に保持される閾値との比較結果を示す信号を検索制御部２０へ出力する。
【００２９】
また、キュー管理部１４は、入力データＦＩＦＯ１２および出力データＦＩＦＯ１３の使用量をモニタリングし、キューの使用状況をメモリシステム１の外部の回路へフロー制御情報１２０として出力する。制御回路１００に対してメモリシステム１の外部の回路から入力される命令の流入速度に対し、制御回路１００の処理速度が速い場合は、入力データＦＩＦＯ１２に制御回路１００が未処理の命令が滞留することはほとんどないといえる。しかし、制御回路１００に対するデータの流入速度が制御回路１００の処理速度を上回る場合は、入力データＦＩＦＯ１２に、制御回路１００が処理すべき命令が積みあがり、オーバーフローにより命令のロスト等を起こしうる。オーバーフロー、命令ロスト等の発生を防止するため、キュー管理部１４は、入力データＦＩＦＯ１２の負荷と比較するための閾値をあらかじめレジスタ、管理用のメモリ領域その他の記憶領域に設定し、この閾値と入力データＦＩＦＯ１２の負荷状態とを比較して、閾値を超える負荷状態の場合にアラート信号（フロー制御情報）をメモリシステム１の外部の回路へ出力する。
【００３０】
また、例えば、制御回路１００がネットワークのトラフィック管理に用いられる場合がある。この場合において、あらかじめ設定した処理能力を超えて制御回路１００に命令等の入力があるとする。このときに、制御回路１００は、ネットワークのトラフィック管理を行うため、トラフィックポリシング、または、トラフィックシェービングなどの処理を行うこととしてもよい。トラフィックポリシングとは、制御回路１００が受け付けた命令などを平準化処理せず破棄することである。また、トラフィックシェービングは、制御回路１００が、平準化処理が可能な範囲では平準化処理を行い、平準化処理からあふれた処理に対して破棄する処理を行うことである。このように、キューモニター部１０においてネットワークのトラフィックをモニタリングしているとする。この場合、制御回路１００は、あらかじめ設定した処理能力を超えない範囲のトラフィックであれば、検索制御部２０により、ピーク電流を低減させるよう検索処理を分割して動作させる。これにより、メモリシステム１は、メモリシステム１に対して電源が求められる電力供給能力を低減させることができる。また、メモリシステム１は、電源ノイズを低減させることができ、電源ノイズによるメモリシステム１の誤動作を低減させることができる。
【００３１】
検索制御部２０は、ＴＣＡＭアレイブロック３００に対して行う検索処理を、ＣＡＭセルアレイのブロックを単位として分割して行うか、ＣＡＭセルアレイの各エントリを一括して並列に検索するかを判断する。検索制御部２０は、この判断処理を、キューモニター部１０からの情報、設定管理部２５に保持される情報に基づいて行う。
【００３２】
検索制御部２０は、メモリシステム１に対して入力される検索用のデータの流入量が一定以上であるか否かを検知する。検索制御部２０は、検知結果に応じて、ＴＣＡＭアレイブロック３００に対する検索処理の速度を調節する。検索制御部２０は、キューモニター部１０が出力する信号に基づいて、ＴＣＡＭアレイブロック３００に対する検索処理の速度を調節する。検索制御部２０は、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイを複数の部分に分割した各部分（ブロック）の少なくとも１つを検索処理の対象としてＴＣＡＭアレイブロック３００の検索処理を行う。こうすることで、検索制御部２０は、ＴＣＡＭアレイブロック３００に対する検索処理の速度を調節する。
【００３３】
図２に示すように、検索制御部２０は、処理命令管理部２１と、検索エンジン制御部２２と、コマンド分割制御部２３と、検索対象エリア判定部２４と、設定管理部２５とを含む。処理命令管理部２１は、入力データＦＩＦＯ１２に記憶されるデータを読み出して、検索命令１１０などメモリシステム１の外部の回路から出力される命令を管理する。例えば、処理命令管理部２１は、入力データＦＩＦＯ１２に記憶されるデータを読み出して、どの回路に対する処理であるのか、また、処理対象の回路に対してどのような動作をするのか（ＴＣＡＭアレイブロック３００に対して検索を行うのか、書き込みを行うのか等）など、各命令を処理する順および処理内容を管理する。
【００３４】
検索エンジン制御部２２は、制御回路１００がＴＣＡＭアレイブロック３００に対して検索を行う場合に、サーチラインドライバ２００など各回路を駆動するための制御信号を生成し、生成した制御信号を、例えばコマンド分割制御部２３を介して各回路へ出力する。
【００３５】
コマンド分割制御部２３は、制御回路１００がＴＣＡＭアレイブロック３００を構成するＣＡＭセルアレイを、ブロックごとに分割して検索する場合に、検索対象とするブロックを指定するための制御信号（ブロックイネーブル信号ＢＥ）を生成する。コマンド分割制御部２３は、生成した制御信号を各回路へ出力する。検索用のデータは、コマンド分割制御部２３から検索開始のための制御信号が出力されるのに同期して、ＴＣＡＭアレイブロック３００に出力される。
【００３６】
検索対象エリア判定部２４は、設定管理部２５に設定として保持される検索用のパラメータを読み出して、検索命令１１０に示される検索の対象となるＣＡＭセルアレイの範囲を判定する。例えば、検索対象エリア判定部２４は、設定管理部２５から、設定として、ＴＣＡＭアレイブロック３００を構成するブロック数の情報、ＴＣＡＭアレイブロック３００が保持しているデータの種類（ＴＣＡＭアレイブロック３００がＩＰアドレスなどのアドレス情報を保持しているか等）、メモリシステム１の外部から入力される検索用のデータに対してマスク処理をすべき範囲、検索用のデータのサイズ、その他の情報を読み出す。検索対象エリア判定部２４は、これら設定管理部２５から読み出した情報に基づいて、例えば、複数種類のＣＡＭメモリがメモリシステム１において使用される場合は、検索対象とするＣＡＭメモリを識別すること等により、検索の対象となるＣＡＭセルアレイの範囲を判定する。処理命令管理部２１は、検索対象エリア判定部２４による判定結果に基づいて、検索エンジン制御部２２に対して検索の指示を行う。
【００３７】
設定管理部２５は、ＴＣＡＭアレイブロック３００に対して検索を行う際に活性化すべきＣＡＭセルアレイの範囲を判定するための情報を記憶する。例えば、設定管理部２５は、ＴＣＡＭアレイブロック３００に格納するデータの種類（アドレス情報など）と対応付けて、ＣＡＭセルアレイを構成するブロックを指定して記憶する。
【００３８】
検索結果マージ部２６は、ＴＣＡＭアレイブロック３００に対してブロックを単位として分割して検索処理を行った場合に、各ブロックの検索結果（マッチアドレスなど）を受け付けてマージする。検索結果マージ部２６は、マージ後の検索結果を出力データＦＩＦＯ１３に保持させる。
【００３９】
出力制御部３０は、メモリシステム１の外部の回路に対し、ＴＣＡＭアレイブロック３００に対する検索結果を検索結果１３０として出力する。検索結果１３０は、検索データに対して一致するデータがあったか否か（Ｈｉｔ／Ｍｉｓｓ情報）、一致するデータがあった場合はそのデータ（Ｈｉｔアドレスなど）を含む。
【００４０】
図３は、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイを構成する各ブロックの優先度の例を示す図である。図３に示すように、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイを構成する各ブロックは、複数のエントリを含む。また、各ブロックは、優先度が設定されており、アドレスが小さいものほど優先度が高く設定されている。ＴＣＡＭアレイブロック３００のＣＡＭセルアレイを構成するブロックを単位として分割して検索処理を行う場合、検索制御部２０は、ＣＡＭセルアレイのうち、検索する優先度が高いブロック（例えば、アドレスが小さいエントリを含むブロックを優先する）から順に検索処理を実行することとし、プライオリティエンコーダ７００から検索結果が出力されて制御回路１００が検索結果を受信した時点で、未検索のブロックに対する検索を実行させないこととしてもよい。これにより、メモリシステム１を低消費電力化させることができ、ピーク電力のみならずメモリシステム１が消費する電力の総量をも低減させることができる。
【００４１】
図４は、関連技術における検索処理および本実施形態における分割した検索処理を示す図である。
【００４２】
図４の状態（Ａ）は、関連技術として、検索対象として選択されたブロックに対して検索するための構成の概要を示す図である。図４の状態（Ｂ）は、本実施形態において、検索対象となるＣＡＭセルアレイの範囲を、ブロックごとに分割して行うか否かを、キューモニター部１０によるキューのモニタリング結果に基づいて動的に決定するための構成の概要を示す図である。
【００４３】
状態（Ａ）に示すように、関連技術において、半導体回路は、検索対象となるデータのグループと対応付けて、ＣＡＭセルアレイの各ブロックをプロファイルとして管理している。状態（Ａ）では、グループ「Group#0」が選択されている。これに対し、状態（Ｂ）に示すように、本実施形態においては、メモリシステム１は、コマンド分割制御部２３の制御信号を受けてＴＣＡＭアレイブロック３００に信号を出力するブロック選択回路２８を含む。状態（Ｂ）では、グループ「Group#0」と、グループ「Group#1」がプロファイルにより検索対象となっている。コマンド分割制御部２３により、各グループのマッチラインへのプリチャージが制御される。状態（Ｂ）では、検索処理を分割して、グループ「Group#0」が検索対象とされている。これにより、制御回路１００は、制御回路１００のモニタリング結果に従って、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイを、複数のブロックに分割して順に検索するか、ブロックごとに分割せず各エントリを並列に検索するかを切り替えることができる。
【００４４】
なお、ＣＡＭセルアレイを分割して検索する処理をソフトウェア処理で実行するとする。この場合、ネットワークルータのパケットフィルタリングなど高速の処理速度を必要とされるときは、必要な処理速度を実現することが困難な場合もある。ソフトウェア処理で各ブロックの検索結果を管理して、各ブロックの検索結果をマージするための処理の負荷が大きいためである。特に汎用的なＣＰＵ（Central  Processing  Unit）でのソフトウェア処理ではパフォーマンスが低下する。ネットワークシステムでは、装置が故障せず、また、安定して処理を行うことが特に求められているため、通常、２０％〜１００％程度の性能マージンを設けて設計がなされている。したがって、瞬間的に発生する大きなトラフィックの負荷を想定してＣＡＭメモリシステムが動作するため、トラフィック量が想定されるピークに達したとしても安定して動作することができる。しかし、ピークに満たないトラフィックの場合においても、同様に検索処理が行われるため、低消費電力化の妨げとなっている。これに対し、本実施形態によると、制御回路１００の負荷をキューモニター部１０によってモニタリングし、モニタリング結果に応じて、ＴＣＡＭアレイブロック３００に対して分割して検索処理を行うか否かを決定しているため、いっそうの低消費電力化を実現することができる。すなわち、ＴＣＡＭアレイブロック３００に対する検索処理を分割するか否かを制御回路１００が自律的に行うことで、ピーク電力を平均電力に近いところで動作させることができ、電力の消費を抑えることができる。いっそうの低消費電力化を実現することにより、ボードの設計や電源設計の自由度を高めることができる。
【００４５】
図５は、ＴＣＡＭアレイブロック３００に対して分割して検索処理を行うことによる低消費電力化を示す図である。図５の状態（Ａ）は、分割をせずにＣＡＭセルアレイに対する検索処理を行う場合の、検索時のメモリシステム１の消費電力を示す図である。図５の状態（Ｂ）は、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイを２分割して検索する場合の、検索時のメモリシステム１の消費電力を示す図である。状態（Ａ）に対し、状態（Ｂ）に示すように、２分割でＣＡＭセルアレイに対する検索処理を行うことにより、検索処理の完了に要する時間が長くなる一方で、ピーク電力を平準化することができる。
【００４６】
図６は、ＴＣＡＭアレイブロック３００に対する処理を平均化することによるピーク電流の平準化を示す図である。図６の状態（Ａ）は、分割をせずにＣＡＭセルアレイに対する検索処理を行う場合の、メモリシステム１における電流の大きさを示す図である。状態（Ａ）では、検索処理を２回行っている。状態（Ｂ）は、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイを２分割して検索をする場合の、メモリシステム１の電流の大きさを示す図である。また、状態（Ａ）に対し、状態（Ｂ）に示すように、２分割でＣＡＭセルアレイに対する検索処理を行うことにより、分割をしない場合のピーク電流に比べて、分割をした場合はピーク電流を平均電流に近づけることができる。
【００４７】
＜実施の形態１の半導体回路の動作＞
図７は、メモリシステム１がキューの使用状態に応じてＣＡＭセルアレイを検索するための分割数を決定して検索を行う処理を示すフローチャートである。図７に示す処理は、例えば、処理命令管理部２１が入力データＦＩＦＯ１２に保持される検索命令を取得することで開始する。
【００４８】
ステップＳ７０１において、検索制御部２０は、キュー管理部１４から、メモリシステム１へのデータの流入量が一定以上であるか否かを判別するために、入力データＦＩＦＯ１２の使用状況を示す信号を受け付ける。メモリシステム１へのデータの流入量が一定以上である場合、すなわち、入力データＦＩＦＯ１２の使用量が一定量を超えている場合（ステップＳ７０１においてＮＯ）、ステップＳ７０９の処理を行う。メモリシステム１へのデータの流入量が一定以下である場合、すなわち、入力データＦＩＦＯ１２の使用量が一定量を超えていない場合（ステップＳ７０１においてＹＥＳ）、ステップＳ７０３の処理を行う。または、キュー管理部１４は、入力データＦＩＦＯ１２および出力データＦＩＦＯ１３の使用量をモニタリングし、キューの滞留数が、閾値設定レジスタ１５に設定される閾値以下であるか否かを判定してもよい。キュー管理部１４は、キューの滞留数が閾値以下である場合（ステップＳ７０１においてＹＥＳ）、メモリシステム１へのデータの流入量が一定以下であることを示す信号を検索制御部２０へ出力し、そうでない場合（ステップＳ７０１においてＮＯ）、メモリシステム１へのデータの流入量が一定以上であることを示す信号を検索制御部２０へ出力する。検索制御部２０は、このようにしてキュー管理部１４が出力する信号を受け付けることにより、メモリシステム１へのデータの流入量が一定以上であるか否かを判定する。
【００４９】
ステップＳ７０３において、検索制御部２０は、メモリシステム１へ入力される命令が、複数のサイクルの命令であるか、１サイクルの命令であるかを判定する。メモリシステム１へ入力される命令が複数のサイクルの命令であるか１サイクルの命令であるかは、コマンドデコーダ１１によってデコードされている。メモリシステム１へ入力される命令が複数のサイクルの命令であると判定される場合（ステップＳ７０３において、「複数サイクル命令」）、検索制御部２０は、ステップＳ７０７の処理を行い、メモリシステム１へ入力される命令が１サイクルの命令であると判定される場合、ステップＳ７０９の処理を行う。
【００５０】
ステップＳ７０７において、検索制御部２０は、設定管理部２５に示される設定に従って、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイを、分割数に従って分割して検索するようＴＣＡＭアレイブロック３００へのコマンドを発行する。
【００５１】
ステップＳ７０９において、検索制御部２０は、設定管理部２５に示される設定に従って、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイを分割せず検索するようＴＣＡＭアレイブロック３００へのコマンドを発行する。
【００５２】
図８は、検索制御部２０がＴＣＡＭアレイブロック３００のＣＡＭセルアレイを分割して検索する動作を示すフローチャートである。
【００５３】
ステップＳ８０１において、検索制御部２０は、設定管理部２５に示される設定（制御回路１００において記憶するＴＣＡＭアレイブロック３００のプロファイル情報に示される検索対象の１以上のブロックの情報、分割数の情報その他の情報）に従って、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイのうち検索対象とするブロックを判定する。
【００５４】
ステップＳ８０３において、検索制御部２０は、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイのうち検索対象とするブロックの中で、最初に検索対象となる１以上のブロックを選択し、選択したブロックを検索する。例えば、検索制御部２０は、各ブロックに設定されている優先度に基づいて、最初に検索対象となるブロックを選択する。
【００５５】
ステップＳ８０５において、検索制御部２０は、プライオリティエンコーダ７００から制御回路１００へ出力される信号に基づいて、検索キーに対応するデータが検索対象として選択されたブロックに存在するか否かを判定する。検索キーに対応するデータが存在している場合（ステップＳ８０５においてＹＥＳ）、制御回路１００は、ステップＳ８１３の処理を行い、そうでない場合（ステップＳ８０５においてＮＯ）、ステップＳ８０７の処理を行う。
【００５６】
ステップＳ８０７において、検索制御部２０は、検索対象とするブロックの中で、まだ検索対象として選択されていないブロックがあるか（検索対象ブロックの残りは存在するか）判定する。検索対象として選択されていないブロックがある場合（ステップＳ８０７においてＹＥＳ）、制御回路１００は、ステップＳ８０９の処理を行い、そうでない場合（ステップＳ８０７においてＮＯ）、ステップＳ８１３の処理を行う。
【００５７】
ステップＳ８０９において、検索制御部２０は、検索対象とするブロックの中で、まだ検索対象として選択されていないブロックのうち、次に検索の対象となる１以上のブロックを選択し、選択したブロックを検索する。例えば、検索制御部２０は、各ブロックに設定されている優先度に基づいて、次に検索対象となるブロックを選択する。
【００５８】
ステップＳ８１１において、検索制御部２０は、プライオリティエンコーダ７００から制御回路１００へ出力される信号に基づいて、検索キーに対応するデータが検索対象として選択されたブロックに存在するか否かを判定する。検索キーに対応するデータが存在している場合（ステップＳ８１１においてＹＥＳ）、制御回路１００は、ステップＳ８１３の処理を行い、そうでない場合（ステップＳ８０５においてＮＯ）、ステップＳ８０７の処理を行う。
【００５９】
ステップＳ８１３において、出力制御部３０は、検索結果マージ部２６によってマージされた検索結果をメモリシステム１の外部の回路へ出力する。
【００６０】
図８に示す処理によると、制御回路１００は、ＣＡＭセルアレイを分割して検索する場合において、検索キーに対応するデータが検索結果として出力されると、検索対象として選択されていないブロックがある場合においても検索結果を出力して処理を終了する。通常、ＣＡＭセルアレイは、各エントリ（各ブロック）に優先度が設定されているため、このように優先度が高いブロックから検索結果が得られた段階で検索処理を終了することとしてもよい。これにより、メモリシステム１の消費電力をいっそう低減化させることができる。
【００６１】
＜実施の形態２＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【００６２】
実施の形態２では、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイについて、検索対象とするブロック数の最大数を予め閾値として設定することができる。ＣＡＭセルアレイを検索する範囲が閾値を超える場合に、制御回路１００は、ＴＣＡＭアレイブロック３００のＣＡＭセルアレイを分割して検索する。例えば、設定管理部２５に、検索対象とするブロック数の最大数を予め設定しておくことができる。なお、設定管理部２５に閾値を設定する場合の他に、制御回路１００が外部から閾値の情報を受け付けることとしてもよいし、フラッシュメモリなどの不揮発性メモリに閾値を記憶させることとしてもよいし、電気ヒューズからの信号により閾値の情報を取得することとしてもよい。
【００６３】
このように、検索制御部２０は、検索処理の対象とするＣＡＭセルアレイの範囲の上限設定値（閾値）を管理するように構成されている。検索制御部２０は、制御回路１００に入力される検索用のデータがＣＡＭセルアレイにおいて検索対象とする範囲が上限設定値を超える場合に、ＣＡＭセルアレイを複数の部分に分割した各部分を検索処理の対象として検索処理を実行する。
【００６４】
図９は、実施の形態２のメモリシステム１が、検索対象とするブロック数の最大数の閾値に応じて、ＣＡＭセルアレイを分割して検索するか否かを制御する処理を示すフローチャートである。
【００６５】
ステップＳ９０５において、検索制御部２０は、ＣＡＭセルアレイについて、検索対象とするブロックの数が、閾値として設定される最大数を超えるか否かを判定する。検索対象とするブロックの数が、閾値として設定される最大数を超える場合（ステップＳ９０５においてＹＥＳ）、制御回路１００は、ステップＳ７０７の処理を行い、そうでない場合（ステップＳ９０５においてＮＯ）、ステップＳ７０９の処理を行う。
【００６６】
このように、制御回路１００は、まず、検索する対象のブロックがどこであるかの情報を、例えば設定管理部２５の記憶領域（プロファイルレジスタ）から読み出す。例えば、検索対象となるデータがテーブルである場合、検索対象のデータがＡＣＬ（Access  Control  List）テーブルである場合や、フォワーディングテーブルである場合など、データの種類に応じて、検索対象とするブロックの範囲をプロファイルとしてレジスタ、管理用のメモリ領域その他の記憶領域に保持させておく。制御回路１００は、検索命令に示されるデータの種類に応じて、プロファイルを参照して、検索対象とするブロックの範囲の情報を取得する。本実施形態では、さらに、制御回路１００は、検索対象のブロックの範囲が、閾値として設定されるブロックの最大数を超える場合に、ＣＡＭセルアレイを分割して検索する。分割されるブロックの大きさは、閾値として設定されるブロックの最大数に達しない範囲とする。こうすることで、検索時の消費電力の大きさを、閾値に対応する最大数のブロックの検索動作時までの大きさとすることができ、低消費電力化を図ることができる。これにより、ピーク電力が大きい場合に発生するボードの電源の低下、グランドノイズの発生などを低減させることができる。
【００６７】
すなわち、検索時の消費電力の大きさを一定以下に抑えることができることにより、これまでノイズ対策として行ってきた、パスコンデンサを大量にボード上に配置する、電源ネットワークのインピーダンスをできる限り下げるなどの対策をする手間を省き得ることとなる。これにより、電源設計、ボード設計など各種の設計を容易にすることができる。特に、近年、ネットワークに接続する機器が増大する傾向にあり、検索対象となる範囲も拡大していく傾向にあるため、電源のインピーダンスを一定以下（例えば、０．５ｍΩ以下）とすることが必要とされている。本実施形態は、あらかじめ電源設定の制約条件にあわせて検索対象のブロック数の最大数を設定することができ、電源設計、ボード設計などの設計を容易にすることができる。
【００６８】
＜実施の形態３＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【００６９】
図１０は、実施の形態３のメモリシステム１が、外部のシステムから、ＣＡＭセルアレイに対して分割して検索するか否かの指定を受け付けることを示す図である。図１０の制御回路１００は、メモリシステム１の外部の回路から、ＣＡＭセルアレイを分割して検索するか否かのフラグ、検索対象とするブロックの最大数等の情報を含む制御信号を受け付ける。
【００７０】
実施の形態３では、メモリシステム１に対して検索命令を発行するシステム（メモリシステム１を管理する上位側のシステム）が、メモリシステム１に対してＴＣＡＭアレイブロック３００のＣＡＭセルアレイを分割して検索するか否かを指定することを可能としている。このように、メモリシステム１の外部の回路、または、メモリシステム１を管理する上位側のシステムからコマンドベースでＣＡＭセルアレイの検索を分割して行うか否かをオプションとして指定することを可能とする。これにより、メモリシステム１と上位側のシステムとの信号のやりとりにかかるレーテンシーを低減することができるため、上位側のシステムからのメモリシステム１の制御がいっそうリアルタイムになされることとなる。例えば、複数のデバイスをシステムレベルで管理するコントローラが、管理対象の各デバイスがどれだけ競合しているか、各デバイスがどの程度の負荷で動作しているのか等の情報をモニタリングし、これら競合の程度、負荷の程度に応じて、メモリシステム１のＣＡＭセルアレイを分割して検索するか否かを決定することができる。
【００７１】
このように、メモリシステム１は、ＣＡＭセルアレイを複数の部分に分割して各部分の少なくとも１つを検索処理の対象として検索処理を行うか否かの指定を含む検索用のデータの入力を受け付けるように構成されている。検索制御部２０は、検索用のデータに含まれる指定に従って、検索処理の速度を調節するように構成されている。
【００７２】
＜実施の形態４＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【００７３】
図１１は、実施の形態４のメモリシステム１が、制御回路１００において分割動作制御レジスタ４１に値を保持し、ＣＡＭセルアレイに対して分割して検索するか否かを分割動作制御レジスタ４１の値に応じて制御する構成を示す図である。
【００７４】
メモリシステム１は、分割動作制御レジスタ４１において、ＣＡＭセルアレイのバンク活性数を制限してピーク電力の低減を優先するか、ＣＡＭセルアレイの検索処理の性能を優先するかを設定することができる。制御回路１００は、分割動作制御レジスタ４１に示される設定に従って、ＣＡＭセルアレイに対する検索処理を行う。分割動作制御レジスタ４１には、例えば、時間帯と対応付けて、ＣＡＭセルアレイに対して分割して検索するか否かを指定することができる。ただし、ＣＡＭセルアレイに対して分割して検索することが指定されている時間帯においても、キューモニター部１０のモニタリング結果に応じて、ＣＡＭセルアレイを分割しての検索処理をせず検索処理の性能を優先することとしてもよい。例えば、ネットワークのトラフィックが多くなる時間帯などでは、ルーティング処理等の安定性を高めるため、分割動作制御レジスタ４１の設定により、ＣＡＭセルアレイを分割して検索することをせず、性能を優先して処理する。一方、ネットワークのトラフィック負荷が少なくなる時間帯では、低消費電力化のためにＣＡＭセルアレイを分割して検索しつつ、負荷の変動が発生した場合には性能を優先した処理に対応できるようにすることもできる。
【００７５】
メモリシステム１は、検索制御部２０がＣＡＭセルアレイを複数の部分に分割した各部分の少なくとも１つを検索処理の対象として検索処理を行うか、または、ＣＡＭセルアレイの全体を検索処理の対象として検索処理を行うかの設定を分割動作制御レジスタ４１に記憶可能に構成されている。検索制御部２０は、分割動作制御レジスタ４１に示される設定に従って、検索処理を行うように構成されている。
【００７６】
＜実施の形態５＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【００７７】
図１２は、実施の形態５のメモリシステム１の制御回路１００において、閾値設定レジスタ１５がキューの残量に応じた分割数の設定を多段階で保持していることを示す図である。
【００７８】
このように、入力データＦＩＦＯ１２等のＦＩＦＯの充填率を基準に、ＣＡＭセルアレイを分割して検索する際の分割数（検索処理の回数）を多段階で設定可能としておくことにより、閾値設定レジスタ１５に示される閾値をまたぐ際の検索処理の動作時の変化を小さくすることができ、処理を安定化させることができる。
【００７９】
図１２に示す例では、ＦＩＦＯにおけるキューの使用量（充填率）がＦＩＦＯに割り当てられたメモリ領域の７０％を超える場合は、検索制御部２０がＣＡＭセルアレイを分割しての検索を行わず、ＣＡＭセルアレイ全体を１回で検索することで検索処理の性能を優先することを示している。また、ＦＩＦＯにおけるキューの使用量がＦＩＦＯに割り当てられたメモリ領域の１０％に満たない場合は、検索制御部２０がＣＡＭセルアレイの検索を５回に分割して検索することを示している。
【００８０】
キューモニター部１０は、入力データＦＩＦＯ１２等のＦＩＦＯメモリの使用量が大きくなるほど、検索処理時のＣＡＭセルアレイの分割数が小さくなるように複数の段階の閾値を閾値設定レジスタ１５に設定可能である。キューモニター部１０は、閾値設定レジスタ１５に設定される、複数の段階の閾値のそれぞれをＦＩＦＯメモリの使用量が超える場合に、各段階に応じた信号を検索制御部２０へ出力するように構成されている。検索制御部２０は、検索処理を、キューモニター部１０が出力する信号に示される段階に応じた分割数によりＣＡＭセルアレイを複数に分割して検索処理を実行する。また、検索制御部２０が分割してＣＡＭセルアレイを検索する際は、優先順位の高いブロックから順に選択して検索結果を出力することで、負荷が少ない時は、検索処理に要する消費電力もピーク電力も減らすことができる。
【００８１】
＜実施の形態６＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【００８２】
図１３は、実施の形態６のメモリシステム１の制御回路１００において、閾値設定レジスタ１５がキューの残量に応じて、分割してのＣＡＭセルアレイの検索を開始する閾値と、分割しての検索処理を終了する閾値とを保持することを示す図である。
【００８３】
キューモニター部１０は、入力データＦＩＦＯ１２等のＦＩＦＯメモリの使用量に対し、検索制御部２０がＣＡＭセルアレイを複数の部分に分割することにより検索処理を行うための第１の閾値と、検索制御部２０がＣＡＭセルアレイを分割せずＣＡＭセルアレイの全体を検索対象とするための第２の閾値とを設定可能である。検索制御部２０は、キューモニター部１０が第１の閾値に応じた信号を出力する場合に、ＣＡＭセルアレイを複数の部分に分割した検索処理を行い、キューモニター部１０が第２の閾値に応じた信号を出力する場合に、ＣＡＭセルアレイの全体を検索対象とした検索処理を行う。
【００８４】
このように、ＣＡＭセルアレイに対して分割しての検索を開始する場合の閾値と、分割しての検索を終了する場合の閾値とをそれぞれ閾値設定レジスタ１５に保持することで、閾値付近での分割検索処理のセットとリセットとを繰り返すことを避けることができ、メモリシステム１の動作をいっそう安定化させることができる。図１３の例では、ＦＩＦＯの充填率がメモリ領域の７０％を超える場合は、ＣＡＭセルアレイを分割しての検索処理を行わず、性能を優先してＣＡＭセルアレイ全体を１回で検索する。検索制御部２０は、ＦＩＦＯの充填率が徐々に低下し、５０％に達した段階で、ＣＡＭセルアレイを分割して検索する処理を再開する。このように、ヒステリシス特性を閾値設定レジスタ１５に適用することで、メモリシステム１の動作を安定化させている。
【００８５】
＜実施の形態７＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【００８６】
図１４は、実施の形態７の半導体回路が複数のメモリシステムを備え、これらメモリシステムの上位側のシステムがそれぞれのメモリシステムに対してＣＡＭセルアレイを分割して検索処理を行うか分割せず検索処理を行うかを指定する場合の構成を示す図である。
【００８７】
半導体回路は、複数のメモリシステムを備え、それぞれのメモリシステムに含まれるＣＡＭセルアレイについて検索をすることが可能に構成されている。各メモリシステムは、複数のメモリシステムのＣＡＭセルアレイのいずれに対して、複数の部分に分割した各部分を検索処理の対象とするかの指定を受け付けて、受け付けた指定に従って検索処理を行う。
【００８８】
図１４の例では、半導体回路が、各実施形態で説明しているメモリシステムを複数備える構成を示している。半導体回路は、第１のメモリシステム１Ａと、第２のメモリシステム１Ｂとを備える。第１のメモリシステム１Ａは、ＴＣＡＭアレイブロック３００Ａを含む。第２のメモリシステム１Ｂは、ＴＣＡＭアレイブロック３００Ｂを含む。ＮＰＵ９００は、これらメモリシステムに対して上位のシステムとして動作し、各メモリシステムを制御する。これらメモリシステムの各々は、それぞれ、独立に設定を有し、設定に従って動作することとしてもよい。例えば、第１のメモリシステム１は実施の形態１に示すメモリシステム１の構成により動作させ、第２のメモリシステム２は実施の形態２に示すメモリシステム１の構成により動作させることとしてもよい。また、ＮＰＵ９００と第１のメモリシステム１Ａとを接続する信号配線など、ＮＰＵとメモリシステムとを接続する信号配線を、図１４に示すようにパラレル化し、ＣＡＭセルアレイに対する検索処理のオプションの切り替えを、パラレル化した信号配線により行うこととしてもよい。こうすることで、配線資源を有効に利用しつつ、メモリシステムの制御も可能となる。
【００８９】
また、各メモリシステムは、ＮＰＵ９００などメモリシステムの外部の回路からの情報に基づいて、ＣＡＭセルアレイに対して分割して検索するか否かを制御することとしてもよい。例えば、第１のメモリシステム１は、ＮＰＵ９００から、半導体回路の現在の消費電力、各機器の負荷の状態を示す信号を受け付けて、これらの情報に基づいて、ＣＡＭセルアレイに対して分割して処理を行うか否か、また分割数をどの程度にするかを決定することとしてもよい。例えば、半導体回路において、第１のメモリシステム１以外の他の機器の負荷、消費電力その他の処理の状態を示す情報に基づいて、例えば、他の機器の負荷および消費電力が高い場合は、半導体回路の電力の消費量を抑えるためＣＡＭセルアレイを分割して検索し、他の機器の負荷が小さい場合は、ＣＡＭセルアレイに対する検索を分割しないで行うことで、半導体回路を構成するシステム全体の電力の変動を小さくすることとしてもよい。
【００９０】
＜実施の形態８＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【００９１】
図１５は、実施の形態８のメモリシステム１が、性能評価部５１を備えてメモリシステム１の製造バラツキをモニタリングし、モニタリング結果に応じてＣＡＭセルアレイに対する検索処理の分割を制御する構成を示す図である。
【００９２】
メモリシステム１は、半導体回路内の各回路の少なくともいずれかについて、製造時のバラツキをモニタリングする性能評価部５１をさらに備える。検索制御部２０は、性能評価部５１による製造時のバラツキのモニタリング結果に応じて、ＣＡＭセルアレイの各部分を検索対象とするための分割数を決定するように構成されている。
【００９３】
図１６は、実施の形態８の制御回路１００が、メモリシステム１の製造バラツキの評価結果に基づいて、ＣＡＭセルアレイに対する検索処理の分割数を制御する処理を示すフローチャートである。
【００９４】
ステップＳ１６０１において、制御回路１００は、性能評価部５１により、メモリシステム１の性能を評価する情報として、メモリシステム１に組み込まれたアナログ素子による電流測定結果（測定値Ａ）と、製品に予め定められ、制御回路１００において保持される規格値（規格値Ｂ）とを取得する。規格値は、メモリシステム１が平均的な消費電力となる構成の場合に、電流値を測定することで規格値として設定される。
【００９５】
ステップＳ１６０３において、制御回路１００は、取得した情報（測定値Ａおよび規格値Ｂ）を比較することにより、メモリシステム１が、平均的な消費電力の水準よりも高い消費電力のシステムであるか否かを判定する。メモリシステム１が平均的な消費電力の水準よりも高い消費電力のシステムである場合に（ステップＳ１６０３においてＹＥＳ）、ステップＳ７０７の処理を行い、そうでない場合に（ステップＳ１６０３においてＮＯ）、ステップＳ７０９の処理を行う。
【００９６】
また、メモリシステム１が平均的な消費電力の水準よりも高い消費電力である場合は、ＣＡＭセルアレイに対する検索処理の分割数を、通常（平均的な消費電力のシステム）よりも多く設定したり、ＣＡＭセルアレイに含まれる各ブロックについて、同時に検索する領域を少なくしたりする等の設定変更を行うこととしてもよい。また、メモリシステム１が平均的な消費電力の水準よりも低い消費電力である場合は、ＣＡＭセルアレイに対する検索処理の分割数を、通常（平均的な消費電力のシステム）よりも少なく設定したり、ＣＡＭセルアレイに含まれる各ブロックについて、同時に検索する領域を多くしたりする等の設定変更を行うこととしてもよい。
【００９７】
また、半導体回路における電流および電圧等の情報は、マイコン等に組み込まれたアナログ素子を利用することで測定することができるが、電源の変化量を直接検出する機構、電源電圧を直接測定する機構その他の機構、または、電流をセンスする技術等を半導体回路に組み込むこととしてもよい。
【００９８】
＜実施の形態９＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【００９９】
図１７は、実施の形態９のメモリシステム１が、ＣＡＭセルアレイに対して検索処理を行った際の分割数の履歴を保持し、履歴に基づいて、ＣＡＭセルアレイに対する検索処理の分割数を補正する構成を示す図である。
【０１００】
検索制御部２０は、ＣＡＭセルアレイを複数の部分に分割して検索処理を行った際の分割数の履歴を保持するように構成されており、分割数の履歴に応じて、ＣＡＭセルアレイを複数の部分に分割する分割数を決定するように構成されている。
【０１０１】
図１７の状態（Ａ）は、ある時点において、閾値設定レジスタ１５に設定されている、キューの使用量と、ＣＡＭセルアレイに対する検索処理の分割数とを対応付けた情報である。状態（Ｂ）は、分割数履歴情報２９のデータ構造を示す図である。例えば、制御回路１００は、分割数履歴情報２９を保持し、ＣＡＭセルアレイに対する検索処理を行う都度、分割数履歴情報２９を更新する。分割数履歴情報２９は、一定期間内における検索処理の分割数の履歴を示す。状態（Ｂ）の例では、分割係数「３」（３分割）が頻度「６０％」と最も大きい。状態（Ｃ）は、分割数履歴情報２９に基づき、閾値設定レジスタ１５に保持される設定を更新した場合の、キューの使用量と、ＣＡＭセルアレイに対する検索処理の分割数とを対応付けた情報である。具体的には、メモリシステム１は、制御回路１００において、ＣＡＭセルアレイに対する検索処理の分割数を決定する都度、分割数に対応するカウンタを加算する。制御回路１００は、一定の周期が経過するたびに、周期内で使用された分割数をランキングする。制御回路１００は、ランキングの結果、最も分割数の回数が大きかったものをもとに、閾値の範囲を拡大する等して調整する。なお、ＣＡＭセルアレイを分割しないで検索する際の閾値は可変にせず固定にしてもよい。これにより、処理負荷が一定以上の場合には、パフォーマンスを優先させてメモリシステム１を動作させることができる。
【０１０２】
このように、制御回路１００は、分割数履歴情報２９において、最も分割数の頻度が多かったものを特定し、このメモリシステム１において最も効率よくＣＡＭセルアレイを分割できる設定値を更新する。これにより、電源を安定化させることができ、メモリシステム１を含む半導体回路の動作の安定化にも寄与することができる。
【０１０３】
＜実施の形態１０＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【０１０４】
図１８は、実施の形態１０のメモリシステム１が、特定のコマンドに対してのみＣＡＭセルアレイの検索処理を分割する場合のメモリシステム１の動作を示すフローチャートである。例えば、メモリシステム１を含むシステムに求められるワイヤースピードにあわせて、メモリシステム１は、ＣＡＭセルアレイに対する検索処理時の分割数を制御する。例えば、システムが最小のフレームサイズの６４バイトのデータを転送するとする。この場合、システムが転送するデータのサイズは、プリアンブル部分の８バイト、データ部分のフレームサイズである６４バイト、次のフレームを送信するまでの空隙（Inter  Frame  Gap）として１２バイトの合計８４バイト（６７２ビット）のデータ量を、規定の時間内で処理する必要がある。例えば、システムが４００ＧＨｚのワイヤースピードを保証する場合、検索性能として、［式１］に示すように、１．６８ｎｓ（ナノ秒）の時間で、フレームサイズが６４バイトのデータを転送する必要がある（５９５Ｍｂｐｓ）。
【０１０５】
［式１］：（１／４００ＧＨｚ）＊（８＋６４＋１２）＊８＝１．６８ｎｓ
一方、データ部分のフレームサイズが５１２バイトであった場合、検索性能として、［式２］に示すように、１０．６４ｎｓ（ナノ秒）の時間で、フレームサイズが５１２バイトのデータを転送する必要がある（９４．０Ｍｂｐｓ）。
【０１０６】
［式２］：（１／４００ＧＨｚ）＊（８＋５１２＋１２）＊８＝１０．６４ｎｓ
この場合（データフレームのサイズが５１２バイトの場合）、メモリシステム１の検索エンジンが、６００ＭＨｚで１回の検索処理を行うことができるときは、この検索処理を９回に分けて行うことが可能となる。近年では、ネットワークの仮想化技術の発展により、仮想ネットワークを１台の機器で何セットか構築することができる。仮想ネットワークにおいては、仮想ネットワークの数に応じて、実効的なワイヤースピードを可変とすることがますます必要とされている。本実施形態によると、ワイヤースピードの変動にあわせて、検索性能のレートに適合した性能を提供することができる。
【０１０７】
検索制御部２０は、半導体回路が入力を受け付ける検索用のデータに特定の命令が含まれる場合に、ＣＡＭセルアレイを複数の部分に分割した検索処理を実行するように構成されている。
【０１０８】
ステップＳ１８０１において、検索制御部２０は、ＣＡＭセルアレイの検索性能の情報（検索処理の速度の情報：レートＡ）と、ワイヤースピードの情報（レートＢ）とを、例えばメモリシステム１の外部の回路、制御回路１００のレジスタ等から取得する。
【０１０９】
ステップＳ１８０３において、検索制御部２０は、ステップＳ１８０１で取得した情報を比較して、ＣＡＭセルアレイの検索処理を分割して行うことが可能か否かを判定する。例えば、検索制御部２０は、演算式（レートＡ／レートＢ）の値が、比較値「１．０」を超えるか否かを判定する。ステップＳ１８０３において、分割によりＣＡＭセルアレイの検索処理を行うことが可能と判定した場合（ステップＳ１８０３においてＹＥＳ）、検索制御部２０は、ステップＳ１８０７の処理を行い、そうでない場合（ステップＳ１８０３においてＮＯ）、ステップＳ７０９の処理を行う。
【０１１０】
ステップＳ１８０７において、検索制御部２０は、検索性能の情報（レートＡ）およびワイヤースピードの情報（レートＢ）に基づき、演算式（レートＡ／レートＢ）の演算結果を算出し、算出結果に基づいて、ＣＡＭセルアレイに対して検索処理を行う場合の分割数を決定する。検索制御部２０は、決定された分割数に従って、ＣＡＭセルアレイへの検索処理を行う。検索制御部２０は、例えば演算式（レートＡ／レートＢ）の演算結果が、値「０」以上かつ値「２」未満であれば、分割をせずＣＡＭセルアレイへの検索処理を行うと決定する。また、検索制御部２０は、例えば演算式（レートＡ／レートＢ）の演算結果が、値「２」以上かつ値「３」未満であれば、ＣＡＭセルアレイを２分割して検索処理を行うと決定する。同様に、検索制御部２０は、演算式（レートＡ／レートＢ）の値に応じて、ＣＡＭセルアレイを分割する数を決定する。例えば、レートＡがレート「６００ＭＨｚ」、レートＢがレート「９４Ｍｂｐｓ」である場合、演算式（レートＡ／レートＢ）の演算結果が、値「６．３７」となるため、検索制御部２０は、ＣＡＭセルアレイを６分割して検索処理を行うと決定する。
【０１１１】
＜実施の形態１１＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【０１１２】
実施の形態１１のメモリシステム１は、設定に従って、ＣＡＭセルアレイに対して検索処理を行う際の分割数を決定する。メモリシステム１は、キューモニター部１０がモニタリングする入力データＦＩＦＯ１２等の充填率が、ある閾値を超える場合、オーバーフローした処理を削除して、エラーログを付加してメモリシステム１の外部の回路へ出力する。オーバーフローした処理を削除することにより、メモリシステム１による処理結果を受け取る機器がオーバーフローによる不安定な動作をしてしまう事態を回避するためである。制御回路１００は、例えば、キューモニター部１０のモニタリング結果に応じて、オーバーフローした処理を削除することとしてもよいし、メモリシステム１の外部からの制御信号、特に、上位側のレイヤーの管理信号に基づいて、制御回路１００が処理中のデータをオーバーフローとして削除するか否かを判定してもよい。
【０１１３】
＜実施の形態１２＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【０１１４】
図１９は、実施の形態１２の制御回路１００の構成を示す図である。図１９に示すように、実施の形態１２の制御回路１００は、キューモニター部１０に対し、クロックを分周して入力するための構成（二分周クロック１７、四分周クロック１８および分周クロック制御回路１９）を有する。二分周クロック１７は、制御回路１００に入力されるクロックを２分周して出力する。四分周クロック１８は、制御回路１００に入力されるクロックを、４分周して出力する。
【０１１５】
制御回路１００は、検索制御部２０に対しては、通常のクロックを入力し、キューモニター部１０に対しては、入力されるクロックを分周クロック制御回路１９によって切り替え可能としている。これにより、制御回路１００は、実効的に、ＣＡＭセルアレイへの検索を分割するために、分数値の分割を実現することができる。図１９の例では、制御回路１００は、複数の分周クロック（二分周クロック１７および四分周クロック１８）を備える。図１９では図示していないが、例えば制御回路１００が５分周したクロックをキューモニター部１０に入力し、分周していないクロックを検索制御部２０に入力するとする。この場合、キューモニター部１０が、５分周したクロックで、制御回路１００の外部から入力されるコマンドのステータスを管理する。このとき、検索制御部２０が、ＣＡＭセルアレイへの検索処理を２分割で行うとする。この場合、制御回路１００の実行的な処理速度は、クロックを分周しない場合と比べて、比率「２／５」の速度となる。すなわち、実施の形態１２の制御回路１００によると、ＣＡＭセルアレイの検索処理の分割数を、整数値だけでなく分数値によっても調整することができる。なお、図１９では、制御回路１００が分周クロックを備える例を説明したが、これに限らず、例えば、クロック数をカウントするカウンタを制御回路１００の内部に設けて、一定のカウント値に達した場合に信号をキューモニター部１０に出力する等の構成によっても、ＣＡＭセルアレイの検索処理の分割数を、整数だけでなく分数値によっても調整可能とすることができる。
【０１１６】
＜実施の形態１３＞
次に、別の実施の形態にかかる半導体回路に含まれるメモリシステムについて説明する。
【０１１７】
図２０は、実施の形態１３のメモリシステム１が、ＣＡＭセルアレイに対する検索処理が規定値の期間より間隔が空いて検索処理を行った場合に、段階的に検索処理の分割数を小さくする処理を示す図である。
【０１１８】
検索制御部２０は、繰り返し行うＣＡＭセルアレイへの検索処理のインターバルの長さを計測可能に構成されている。検索制御部２０は、インターバルの長さが一定期間を超えてＣＡＭセルアレイへの検索処理を再開した場合、ＣＡＭセルアレイを複数の部分に分割した検索処理を行い、ＣＡＭセルアレイを分割する数を段階的に減少させるように構成されている。
【０１１９】
図２０に示すように、ＣＡＭセルアレイに対して検索処理を行った後、あらかじめ規定されたインターバル（Ｔinterval）を経過してから制御回路１００がＣＡＭセルアレイへの検索処理を行ったとする。この場合、制御回路１００は、ＣＡＭセルアレイを複数の部分に分割して検索処理を行う。図２０の例では、制御回路１００は、あらかじめ規定されたインターバルを経過してからＣＡＭセルアレイへの検索処理を行う場合に（時間Ｔ１）、１つの検索処理を３つに分割して検索処理を行う（時間Ｔ１〜時間Ｔ２）。次に、制御回路１００は、検索処理の分割数を減少させて、ＣＡＭセルアレイへの検索処理を行う（時間Ｔ２〜時間Ｔ３）。次に、制御回路１００は、検索処理の分割数を減少させ（図２０の場合は、分割数「１」から分割数「ゼロ」へと減少）、ＣＡＭセルアレイへの検索処理を行う（時間Ｔ３〜時間Ｔ４）。
【０１２０】
このように、検索処理を開始してから徐々にＣＡＭセルアレイに対して検索対象とする範囲を拡大することにより、メモリシステム１の電源の安定性をいっそう向上させることができる。また、メモリシステム１を含むシステムの消費電力をいっそう低減することができる。
【０１２１】
ここで、インターバル（Ｔinterval）として設定する期間は、ＣＡＭセルアレイに対して分割しないで検索処理を行った後に（図２０の「１つの検索処理」）、半導体回路における電源供給システムの負荷が小さくなることで、電源の応答性、電源の供給能力その他の電源の特性に変化が生じる期間の長さとしている。このインターバルの期間は、システムによって異なるため、メモリシステム１の外部の回路から設定可能としておくこととしてもよい。
【０１２２】
制御回路１００は、ＣＡＭセルアレイに対して検索処理を行った後、ＮＯＰ（no  operation）状態となる期間をカウントし、ＮＯＰ状態の期間がインターバルとして設定された期間（Ｔinterval）を超えるか否かを判定する。ＮＯＰ状態の期間がインターバルとして設定された期間を超える場合、制御回路１００は、ＣＡＭセルアレイに対して分割して検索処理を行うための信号（信号ＢＥ）を出力する。
【０１２３】
なお、図２０の例では、インターバルとして設定された期間を超えた後にＣＡＭセルアレイに対する検索処理を行う場合に、分割数「３」として検索処理を行っているが、分割数は分割数「３」に限られない。また、図２０の例では、分割数を徐々に減少させている例を示しているが、この他にも、電源の安定性が確認できる場合は、分割動作を終了させてもよい。
【０１２４】
＜まとめ＞
本実施形態の制御回路１００は、ＣＡＭセルアレイの検索対象となる範囲を決定するために、制御回路１００に入力されるキューの滞留状態、キューの負荷状態を検知して、これらの検知結果に基づいて、ピーク電力を抑制するという観点でＣＡＭセルアレイに対して分割して検索処理を行う。
【０１２５】
機器がＣＡＭなどのメモリシステムを使用して高速でパターンマッチング処理を行う場合、高負荷時を想定してマージンをとって設計を行う場合が比較的多い。例えば、ネットワークシステムで使用される機器は、機器の保守が容易であること、機器の動作が安定することを考慮して、２０％〜１００％程度の性能マージンを設けて構成されることが多い。データセンター内、サービス拠点などでネットワークが構成される場合は、ネットワークが稼働停止状態となると大きな損失が発生するためである。そのため、機器は、ラインレート以上の処理性能で検索処理を行うことが多く、ピーク電力が大きくなる。このピーク電力が大きくなることにより、機器の電源電圧が低下し、誤動作の要因にもなりうるため、ボードのインピーダンスを低減させることが必要となる。また、ＣＡＭセルアレイに対する検索処理を、機器が汎用プロセッサーを使用してソフトウェア処理で分割して行う場合は、管理が複雑になるとともに、分割された検索処理の結果をマージする際の処理が汎用プロセッサーを使用したソフトウェア処理となるため、機器のパフォーマンスが低下する。特に、高速なトラフィック負荷を機器が処理する場合、ソフトウェア処理では、定められたラインレートで処理することが困難であることもある。
【０１２６】
これらの課題を解決するため、機器が上記の実施形態で説明したメモリシステムを使用することで、高速でパターンマッチング処理を行いつつ、ピーク電力を低減させることで電源電圧の低下を低減することができる。このように、機器がキューの残量を管理する等により、システムの検索処理の状態を自己診断する。機器は、設定された処理能力で処理できる場合は、ピーク電流を低減するために、検索処理を２つ以上の処理に分割して処理した後に、処理結果をマージする。こうすることで、メモリシステムの外部の回路からは、メモリシステムに対する検索処理を１つの処理として扱うことができる。
【０１２７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１２８】
今回開示された実施の形態はすべての点で例示であって制限的なものでないと考えられるべきである。この発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【０１２９】
１  メモリシステム、１０  キューモニター部、１１  コマンドデコーダ、１２  入力データＦＩＦＯ、１３  出力データＦＩＦＯ、１４  キュー管理部、１５  閾値設定レジスタ、１７  二分周クロック、１８  四分周クロック、１９  分周クロック制御回路、２０  検索制御部、２１  処理命令管理部、２２  検索エンジン制御部、２３  コマンド分割制御部、２４  検索対象エリア判定部、２５  設定管理部、２６  検索結果マージ部、２８  ブロック選択回路、２９  分割数履歴情報、３０  出力制御部、４１  分割動作制御レジスタ、１００  制御回路、１１０  検索命令、１２０  フロー制御情報、１３０  検索結果、２００  サーチラインドライバ、３００  ＴＣＡＭアレイブロック、４００  ロウデコーダ、５００  センスアンプ／ライトドライバ、６００  マッチアンプ、７００  プライオリティエンコーダ、９００  ＮＰＵ。
【図１】
2017097940.tif 000003
【図２】
2017097940.tif 000004
【図３】
2017097940.tif 000005
【図４】
2017097940.tif 000006
【図５】
2017097940.tif 000007
【図６】
2017097940.tif 000008
【図７】
2017097940.tif 000009
【図８】
2017097940.tif 000010
【図９】
2017097940.tif 000011
【図１０】
2017097940.tif 000012
【図１１】
2017097940.tif 000013
【図１２】
2017097940.tif 000014
【図１３】
2017097940.tif 000015
【図１４】
2017097940.tif 000016
【図１５】
2017097940.tif 000017
【図１６】
2017097940.tif 000018
【図１７】
2017097940.tif 000019
【図１８】
2017097940.tif 000020
【図１９】
2017097940.tif 000021
【図２０】
2017097940.tif 000022