内容参照メモリ
【課題】未使用の記憶領域の発生を低減することができる内容参照メモリを提供する。
【解決手段】メモリアレイ2は、複数のバンク1〜Nを含み、検索対象のIPアドレスを格納する。メモリアレイ2は、可変数のバンクからなる複数のブロックを含む。同一のブロックのバンクにはプリフィックスが同一のIPアドレスが格納される。プリサーチ回路5は、IPアドレスを検索データとして受けて、検索データと同一のIPアドレスがいずれのブロックに格納されているかをプリサーチする。検索判定部14は、プリサーチによって特定されたブロックから読み出されたIPアドレスと検索データとを比較する。
【解決手段】メモリアレイ2は、複数のバンク1〜Nを含み、検索対象のIPアドレスを格納する。メモリアレイ2は、可変数のバンクからなる複数のブロックを含む。同一のブロックのバンクにはプリフィックスが同一のIPアドレスが格納される。プリサーチ回路5は、IPアドレスを検索データとして受けて、検索データと同一のIPアドレスがいずれのブロックに格納されているかをプリサーチする。検索判定部14は、プリサーチによって特定されたブロックから読み出されたIPアドレスと検索データとを比較する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、内容参照メモリに関する。
【背景技術】
【0002】
近年ルータやスイッチなどのネットワーク機器において、IPアドレスの経路検索用途またはフィルタリングのアクセスコントロールリスト(ACL)制御用途として、内容参照メモリ(CAM:Content Addressable Memory)が広く用いられるようになってきている。たとえば一例として、IPアドレスのルーティングにおいては、以下の処理が実行される。インターネット環境に設置されたルータまたはスイッチにパケットが到着すると、このルータ/スイッチ内に設けられた内部のネットワークパケットプロセシングユニット(NPU)は、到着したパケットのヘッダを解析し、次のホップ先(経路)を見つけるために、アドレス検索を開始する。アドレス検索において、CAMは、ハードウェアベースでアドレス検索を提供するLSI(大規模集積回路装置)である。パケットのヘッダに記述される宛先IPアドレスを、次ホップ先アドレス検索のためのサーチ要求データとしてCAMに入力する。CAMは、内部に予め書込まれて記憶されたIPアドレスのデータ列一覧と、この入力されたサーチ要求データとの一斉並列比較を行なう。一致したアドレスが存在する場合、CAMは、その一致したアドレスのインデックスを出力する。NPUは、CAMからの一致アドレスインデックスから、次ホップ先アドレスを参照する。具体的なホップ先アドレスは、CAM自身ではなく、別のメモリLSI、たとえばSRAM(スタティック・ランダム・アクセス・メモリ)に書込まれていることが多い。
【0003】
一方、CAM内部に記憶されているデータ列との一致がなかった場合には、到着パケットの次のホップ先アドレスは、CAMハードウェア検索ではない別の方法、たとえばCAMには記憶されていないが、別の大容量メモリに書込まれている場合には、この大容量メモリへアクセスしてソフトウェアベースでの検索を行なうか、またはそのままパケット廃棄として処理される。CAM内部に一致するアドレスが存在せず、ソフトウェアベースの長い検索時間が必要な場合においても、この宛先アドレス(次ホップ先アドレス)は、次回以降同じヘッダを持つパケットが来たときのための学習として、CAMへの書込および記憶内容の更新が実行されるのが一般的である。この操作により、ソフトウェアによる処理時間の長い検索は1度だけであり、次回からは、再びCAMハードウェアベースでの高速検索が可能となり、アプリケーション上CAMの長所が拡大される。
【0004】
上述のように、CAMのハードウェアベースによるアドレス検索の長所は、その実効サーチ性能の高さである。また、このサーチ性能は、保持するデータ列の大きさ(ビット幅)に拘らず一定である。一般的なメモリを用いたソフトウェアベースでの検索の場合には、これまでツリーを始めさまざまな研究報告がなされている。しかしながら、このようなソフトウェアベースでの検索の場合、一般的には、保持データ量が大きくなるにつれて外部へすべてのデータを読出す時間が長くかかってしまう。すなわち、一般的なメモリを用いる場合、アドレス検索に要する時間は、データベースの容量に比例して大きくなるという特徴があり、これが、近年のインターネット人口の増加を考慮すると、大きな問題となる。したがって、CAMハードウェアベースのアドレス検索は、そのサーチ性能がデータベースの大きさに依存しないという点においても、このようなパケット転送制御用途向けに高く評価されている。
【0005】
このようなCAMの構成の一例が、特許文献1(特開2003−123482号公報)に示されている。この特許文献1においては、SRAMセルが、CAMセルおよびTCAM(3値CAM:Ternary CAM)セルに適用される。この特許文献1に示される構成においては、各メモリセルに、一致検出回路(XOR回路)が設けられ、記憶データビットと検索データビットとの一致/不一致の判定が各ビット単位で実行される。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2003−123482号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、CAMは、IPアドレスのプリフィックスごとにブロック化されることがある。プリフィックスが8ビットの場合、CAMは、256個のブロックに分割される。各ブロックには、同一のメモリ容量が与えられる。
【0008】
しかしながら、インターネット内を伝送するIPアドレスのプリフィックスは等しく平均化されるものではない。あるプリフィックスのIPアドレスについては、多種類が伝送されるが、別のプリフィックスのIPアドレスについては、少ない種類しか伝送されない場合がある。
【0009】
図14(a)は、IPアドレスの有効ビット長が24ビットの場合に、各プリフィックス(上位8ビット)ごとに、インターネット上に伝送されるIPアドレスのビットパターンの種類を表わす図である。
【0010】
図14(b)は、IPアドレスの有効ビット長が23ビットの場合に、各プリフィックス(上位8ビット)ごとに、インターネット上に伝送されるIPアドレスのビットパターンの種類を表わす図である。
【0011】
図14(c)は、IPアドレスの有効ビット長が18ビットの場合に、各プリフィックス(上位8ビット)ごとに、インターネット上に伝送されるIPアドレスのビットパターンの種類を表わす図である。
【0012】
図14(a)〜(c)に示すように、伝送されるIPアドレスのビットパターンの種類が多いプリフィックスもあれば、伝送されるIPアドレスのビットパターンの種類が少ないプリフィックスもあることがわかる。
【0013】
上述のような場合には、ブロックのメモリ容量が同一であるにもかかわらず、あるプリフィックスに対応するブロックには、多量のIPアドレスが書込まれるが、別のプリフィックスに対応するブロックには、少量のIPアドレスしか書込まれない状態となり、メモリの使用効率が低くなる。その結果、無駄に電力が消費されることになる。
【0014】
それゆえに、本発明の一実施形態の目的は、未使用の記憶領域の発生を低減することができる内容参照メモリを提供することである。
【課題を解決するための手段】
【0015】
本発明の一実施形態の内容参照メモリは、複数のバンクを含み、検索対象のIPアドレスを格納するメモリアレイを備え、メモリアレイは、可変数のバンクからなる複数のブロックを含み、同一のブロックのバンクにはプリフィックスが同一のIPアドレスが格納される。内容参照メモリは、IPアドレスを検索データとして受けて、検索データと同一のIPアドレスがいずれのブロックに格納されているかをプリサーチするプリ検索部と、プリサーチによって特定されたブロックから読み出されたIPアドレスと検索データとを比較する検索判定部とをさらに備える。
【発明の効果】
【0016】
本発明の一実施形態によれば、未使用の記憶領域の発生を低減することができる。
【図面の簡単な説明】
【0017】
【図1】本発明の実施の形態の半導体装置を表わす図である。
【図2】(a)は、バンク内のエントリを表わす図である。(b)は、エントリに格納されるデータを表わす図である。
【図3】ブロック1〜256に属するバンクを表わす図である。
【図4】図3に示すように複数のバンクがブロック化されている場合に、ブロックi用制御回路ごとのブロック化支援回路13のバンクアドレスレジスタ群に記憶されるデータの例を表わす図である。
【図5】図3に示すように複数のバンクがブロック化されている場合に、ブロックi用制御回路のアドレスカウンタ101に記憶されるデータの例を表わす図である。
【図6】(a)〜(c)は、FIFOメモリ91に格納されるデータの例を表わす図である。
【図7】検索判定部14の概略構成を説明するための図である。
【図8】検索判定部14の詳細を表わす図である。
【図9】ブロック化支援回路13の構成を表わす図である。
【図10】エントリ消去回路12の構成を表わす図である。
【図11】エントリ消去動作を説明するための図である。
【図12】エントリ消去動作を説明するための図である。
【図13】第2の実施形態の検索判定部14の例を表わす図である。
【図14】(a)〜(c)は、各プリフィックス(上位8ビット)ごとに、インターネット上に伝送されるIPアドレスのビットパターンの種類を表わす図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態について、図面を用いて説明する。
[第1の実施形態]
図1は、本発明の実施の形態の半導体装置1を表わす図である。
【0019】
図1を参照して、この半導体装置1は、メモリアレイ2と、制御回路3とを備える。
メモリアレイ2は、内部参照メモリセル(CAMセル)であるユニットセルUCが行列状に配列される。
【0020】
メモリアレイ2は、行を単位として複数のエントリに分割される。各エントリに対しては、対応のエントリ内のユニットセルUCが並列に結合されるマッチラインが設けられる。また、メモリアレイ2の列方向に、検索データを伝達するサーチライン対が設けられる。このサーチライン対とマッチラインの交差部に対応してユニットセルが設けられる。
【0021】
メモリアレイ2は、バンク1〜バンクNのN個のバンクに分割される。各バンクは、図2(a)に示すように、エントリ1〜エントリKのK個のエントリを有する。各エントリには、図2(b)に示すように、サーチ対象である32ビットのIPアドレス(情報データ)と、32ビットのホップ先アドレスとが記憶される。
【0022】
各ブロックのバンクの数は可変であり、最大L個である。同一のブロックのバンクにはプリフィックス(先頭の8ビットのネットワークアドレス部分)が同一のネットワークアドレスが格納される。
【0023】
制御回路3は、ブロックi用制御回路10−i(i=1〜256)と、バンク管理部4と、プリサーチ回路5と、検索判定部14と、ブロック管理部93、書込部95と、消去部94とを備える。
【0024】
各ブロックi用制御回路10−iは、ブロック化支援回路13と、アドレスカウンタ101とを備える。
【0025】
ブロック化支援回路13は、対応するブロックに属するバンクのアドレスを記憶するバンクアドレスレジスタ群を含む。
【0026】
アドレスカウンタ101は、対応のブロックに属する書込対象のバンクのエントリの位置を指示する。
【0027】
プリサーチ回路5は、外部から与えられる検索データ(32ビットのIPアドレス)のプリフィックス部分である先頭の8ビットに基づいて、検索データがブロック1〜ブロック256のいずれに属するかを判定する。
【0028】
検索判定部14は、プリサーチによって特定されたブロックの各エントリからデータを読み出して、読み出したデータに含まれるIPアドレスと検索データとを比較して、一致した場合に、そのIPアドレスとともに読み出されたホップ先アドレスを出力する。
【0029】
バンク管理部4は、未使用バンクを表わす情報を保持するバンクFIFO(First In First Out)メモリ91を含む。バンク管理部4は、初期状態では、メモリアレイ2に含まれるすべてのバンクのアドレスをFIFOメモリ91に格納する。バンク管理部4は、IPアドレスをメモリアレイ2の未使用のバンクに書込み必要が生じた際には、FIFOメモリ91から未使用バンクのアドレスを読み出して、読み出した情報に基づいて、未使用バンクをIPアドレスを書込むバンクとして割り当てる。ここで、IPアドレスをメモリアレイ2の未使用のバンクに書込み必要が生じる場合とは、IPアドレスの書込みを指示された場合において、書込み中(使用中)のバンクの未使用領域がなくなった場合(すなわち、全エントリが使用されているとき)である。また、バンク管理部4は、バンク内のすべてのエントリが消去された際に、消去されたバンクのアドレスをFIFOメモリ91に格納する。
【0030】
ブロック管理部93は、バンク管理部4によって新たに割り当てられたバンクをIPアドレスのプリフィックスに基づいて、いずれのブロックに属するかを特定する。ブロック管理部93は、特定されたブロックに対応するブロック化支援回路13に含まれるバンクアドレスレジスタ群に新たに割り当てられたバンクのアドレスを格納する。
【0031】
書込部95は、書込み時に、書込対象のバンクが属するブロックのアドレスカウンタ101で示されるエントリの位置にIPアドレスを書込み、その後、そのアドレスカウンタ101の値を1だけ増加させる。
【0032】
消去部94は、バンク内のエントリを消去する際に、バンクの使用領域の末尾のエントリに格納されているデータで、消去するエントリを上書きし、その後、バンクが属するブロックのアドレスカウンタ101の値を1だけ減少させる。
【0033】
図3〜図6は、ブロック化の例を説明するための図である。
図3は、ブロック1〜256に属するバンクを表わす図である。
【0034】
図3に示すように、バンク1、7はブロック1に属する。バンク2、5、6、8、10は、ブロック2に属する。バンク3は、ブロック3に属する。バンク4は、ブロック4に属する。バンク9は、ブロック5に属する。バンク687、743は、ブロック256に属する。
【0035】
図4は、図3に示すように複数のバンクがブロック化されている場合に、ブロックi用制御回路ごとのブロック化支援回路13のバンクアドレスレジスタ群に記憶されるデータの例を表わす図である。
【0036】
ブロック1用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク1のアドレスと、バンク7のアドレスを記憶する。ブロック2用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク2のアドレスと、バンク5のアドレスと、バンク6のアドレスと、バンク8のアドレスと、バンク10のアドレスとを記憶する。ブロック3用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク3のアドレスを記憶する。ブロック4用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク4のアドレスを記憶する。ブロック5用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク9のアドレスを記憶する。ブロック256用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク687のアドレスと、バンク743のアドレスとを記憶する。
【0037】
図5は、図3に示すように複数のバンクがブロック化されている場合に、ブロックi用制御回路のアドレスカウンタ101に記憶されるデータの例を表わす図である。
【0038】
図5に示すように、ブロック1用制御回路のアドレスカウンタ101は、エントリ5のアドレスを記憶する。したがって、図4と図5によって、バンク7のエントリ5が現在又は次の書込対象のエントリとなる。ブロック2用制御回路のアドレスカウンタ101は、エントリ7のアドレスを記憶する。したがって、図4と図5によって、バンク10のエントリ7が現在又は次の書込対象のエントリとなる。ブロック3用制御回路のアドレスカウンタ101は、エントリ5のアドレスを記憶する。したがって、図4と図5によって、バンク3のエントリ5が現在又は次の書込対象のエントリとなる。ブロック4用制御回路のアドレスカウンタ101は、エントリ1のアドレスを記憶する。したがって、図4と図5によって、バンク4のエントリ1が現在又は次の書込対象のエントリとなる。ブロック5用制御回路のアドレスカウンタ101は、エントリ12のアドレスを記憶する。したがって、図4と図5によって、バンク9のエントリ12が現在又は次の書込対象のエントリとなる。ブロック256用制御回路のアドレスカウンタ101は、エントリ43のアドレスを記憶する。したがって、図4と図5によって、バンク743のエントリ43が現在又は次の書込対象のエントリとなる。
【0039】
図6(a)は、FIFOメモリ91に初期状態(ブロック化前)に格納されるデータの例を表わす図である。
【0040】
初期状態では、FIFOには、バンク1〜バンクNのアドレスが格納される。エントリへの書込み時に、新たなバンクを割当る時には、バンク1のアドレスから順次取り出される。取り出されたアドレスで指定されるバンクのエントリに図2(b)に示すようなデータが書込まれる。
【0041】
図6(b)は、バンク1〜バンク7が利用されて、データが書込まれた状態を表わす図である。
【0042】
バンクに含まれる全エントリのデータが消去された場合には、バンクは解放され、再割当可能となる。たとえば、バンク5が解放された場合に、図6(c)に示すように、消去部94によって解放されたバンクのアドレスがFIFOメモリ91の末尾に格納される。
【0043】
(検索判定部14)
図7は、検索判定部14の概略構成を説明するための図である。
【0044】
プリサーチによって、検索データがブロック1に属することがわかった場合に、バンク1の各エントリの情報データ(IPアドレス)が順次比較器60_1に出力される。比較器60_1は、検索データと、各エントリの情報データとが一致するか否かを比較して、比較結果を出力する。同時に、バンク7の各エントリのデータ各エントリの情報データ(IPアドレス)が順次比較器60_2に出力される。比較器60_2は、検索データと、各エントリの情報データとが一致するか否かを比較して、比較結果を出力する。論理回路Rは、比較器60_1の出力と比較器60_2の出力とを論理演算して、演算結果を出力する。
【0045】
図8は、検索判定部14の詳細を表わす図である。
図8を参照してプリサーチ回路5で特定されたブロックに属するバンクからエントリのデータ(IPアドレスとホップ先アドレス)が出力される。
【0046】
各バンクと接続する比較器60は、外部から与えられる検索データとIPアドレスとを比較して、比較結果を論理回路R1、および論理回路RR1〜RRNのうち、特定されたブロックに属するバンクと接続される論理回路へ出力する。論理回路RR1〜RRNのうち、特定されたブロックに属するバンクと接続される論理回路には、接続されるバンクのエントリのホップ先アドレスが入力される。
【0047】
論理回路R1は、比較器60_1〜60_Nでの比較のうち一致したものがある場合には、Hitを示す信号を出力する。
【0048】
論理回路RR1〜RRNのうち、特定されたブロックに属するバンクと接続する論理回路は、そのバンクでHitしたとき(つまり、接続される比較器が一致を示す信号を出力したとき)には、入力されたホップ先アドレスを出力し、そのバンクでMissしたときには、全ビットが0の信号を出力する。
【0049】
論理回路R3は、Hitしたバンクのエントリのホップ先アドレスを出力する。論理回路R2およびラッチ回路RA1によって、HitまたはMissの結果を更新されるまで維持し、出力する。論理回路R3、セレクタSL1およびラッチ回路RA2によって、ホップ先アドレスを更新されるまで維持し、出力する。
【0050】
(ブロック化支援回路13)
図9は、ブロック化支援回路13の構成を表わす図である。
【0051】
図9を参照して、カウンタ134は、バンクアドレスレジスタ36_1〜36_Nのうちバンクアドレスが格納されているレジスタの個数をカウントする。
【0052】
セレクタ32は、バンクアドレスレジスタ36_1〜36_Nのいずれかを指定するアドレス、またはカウンタ134のカウンタ値を受けて、どちらかを出力する。バンクアドレスレジスタ36_1〜36_Nのいずれかを指定するアドレスは、メモリアレイ2への書込み時に、このグループ支援回路が対応するブロックへのバンクの割当があった場合に、入力される。
【0053】
デコーダ30は、セレクタ32の出力信号をデコードする。デコーダ30の出力によって、論理回路RL1〜RL_Lのいずれかが選択される。またALL_select信号が入力されるときには、論理回路RL_1〜RL_Lのすべてが選択される。
【0054】
メモリアレイ2への書込み時には、選択された論理回路RL_iと接続されているバンクアドレスレジスタ36_iに、ライトデータ(バンクアドレス)が書込まれる。
【0055】
また、メンテナンス時には、選択された論理回路RL_iと接続されているバンクアドレスレジスタ36_iからリードデータ(バンクアドレス)が読み出される。
【0056】
(エントリ消去)
消去部94は、ブロックごとにエントリ消去回路12を含む。
【0057】
図10は、エントリ消去回路12の構成を表わす図である。
メモリA102は、メモリアレイ2内のバンクを表わす。
【0058】
メモリB104は、検索のために使用するデータを格納するものである。
アドレスカウンタ101は、メモリA(バンク内)で使用されている末尾のエントリの番号をセレクタ103へ出力する。
【0059】
セレクタ103は、命令が入力されて、この命令をメモリAへの命令(A_命令)またはメモリBへの命令(B_命令)として出力する。
【0060】
セレクタ103は、アドレスが入力されて、このアドレスをメモリAへのアドレス(A_アドレス)、メモリBへのアドレス(B_アドレス)として出力する。
【0061】
セレクタ103は、ライトデータ、メモリAからのリードデータ(A_リードデータ)、メモリBからのリードデータ(B_リードデータ)とが入力されて、これらをメモリAへのライトデータ(A_ライトデータ)、メモリBへのライトデータ(B_ライトデータ)として出力する。
【0062】
図11は、エントリ消去動作を説明するための図である。
1つのバンクに0〜n番目のエントリが使用され、アドレス順に0〜n番目のエントリが存在する場合に、エントリ消去回路は、k番目のエントリを消去する場合に、末尾に存在するn番目のエントリのデータを読み出して、k番目のエントリに上書きする。そして、n番目のエントリを未使用領域として解放し、使用領域を0〜(n−1)番目のエントリとする。これによって、消去したエントリを再利用することができる。
【0063】
図12は、エントリ消去動作を説明するための図である。
n番目のエントリ(アドレスがnとする)から読み出したデータをKey1+メモリBのiアドレスとする。Key1は、IPアドレスで、メモリBのiアドレスは、ホップ先アドレスである。
【0064】
一方、k番目のエントリ(アドレスがkとする)に格納されているデータがKey2+メモリBのjアドレスであるとする。Key2は、IPアドレスで、メモリBのjアドレスは、ホップ先アドレスである。k番目のエントリは、n番目のエントリのデータで上書きされるので、k番目のエントリのデータは、Key1+メモリBのiアドレスとなる。
【0065】
一方、メモリBのiアドレスには、メモリAのnアドレスが格納され、メモリBのjアドレスには、メモリAのkアドレスが格納されている。
【0066】
以上のように、本実施の形態によれば、プリフィックス毎の使用状況に偏りが発生した場合にも状況に応じてメモリを使用するため、未使用領域を発生させることなく効率よくメモリを使い切ることができる。
【0067】
[第2の実施形態]
図13は、第2の実施形態の検索判定部14の例を表わす図である。
【0068】
この検索判定部14は、ブロック1〜ブロック256において、同時に並行して検索処理が実行できる。
【0069】
セレクタ50−iは、バンク1〜バンクNのうち、ブロックiに属するバンクのエントリと検索データとを比較する比較器と接続する。
【0070】
ブロック1に属するバンク1の各エントリの情報データ(IPアドレス)と検索データとを比較する比較器60_1の比較結果と、ブロック1に属するバンク7の各エントリの情報データ(IPアドレス)を比較する比較器60_7の比較結果がセレクタ50−1に送られる。セレクタ50−1は、これらの2つの比較器60_1,60_7からの信号を論理回路52−1に出力する。論理回路52−1で2つの比較器60_1,60_7からの出力される信号を論理演算して、演算結果を出力する。
【0071】
同時に、ブロック2に属するバンク2,5,6,8,10の各エントリの情報データ(IPアドレス)と検索データとを比較する比較器60_2,60_5,60_6,60_8,60_10の比較結果がセレクタ50−2に送られる。セレクタ50−2は、これらの比較器60_2,60_5,60_6,60_8,60_10からの信号を論理回路52−2に出力する。論理回路52−2で4つの比較器60_2,60_5,60_6,60_8,60_10からの出力される信号を論理演算して、演算結果を出力する。
【0072】
同様に、同時にブロック3〜ブロック256についても、上述と同様にして検索データとの一致/不一致が判定される。
【0073】
並列処理方法の場合は、同時に各プリフィックスで使用されるブロックを動作させ検索を行い、検索結果をプライオリティエンコーダによって選別する。
【0074】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0075】
1 半導体装置、2 メモリアレイ、3 制御回路、4 バンク管理部、5 プリサーチ回路、14 検索判定部、10−1〜10−256 ブロック制御回路、13 ブロック化支援回路、30 デコーダ、36_1〜36_N バンクアドレスレジスタ、60_1〜60_N 比較器、91 FIFOメモリ、93 ブロック管理部、94 消去部、95 書込部、101 アドレスカウンタ、102 メモリA、104 メモリB、134 カウンタ、R,R1,R2,RR1〜RRN,R3 論理回路、32,SL1,103 セレクタ回路、RL_1〜RL_N,RA1,RA2 ラッチ回路。
【技術分野】
【0001】
本発明は、内容参照メモリに関する。
【背景技術】
【0002】
近年ルータやスイッチなどのネットワーク機器において、IPアドレスの経路検索用途またはフィルタリングのアクセスコントロールリスト(ACL)制御用途として、内容参照メモリ(CAM:Content Addressable Memory)が広く用いられるようになってきている。たとえば一例として、IPアドレスのルーティングにおいては、以下の処理が実行される。インターネット環境に設置されたルータまたはスイッチにパケットが到着すると、このルータ/スイッチ内に設けられた内部のネットワークパケットプロセシングユニット(NPU)は、到着したパケットのヘッダを解析し、次のホップ先(経路)を見つけるために、アドレス検索を開始する。アドレス検索において、CAMは、ハードウェアベースでアドレス検索を提供するLSI(大規模集積回路装置)である。パケットのヘッダに記述される宛先IPアドレスを、次ホップ先アドレス検索のためのサーチ要求データとしてCAMに入力する。CAMは、内部に予め書込まれて記憶されたIPアドレスのデータ列一覧と、この入力されたサーチ要求データとの一斉並列比較を行なう。一致したアドレスが存在する場合、CAMは、その一致したアドレスのインデックスを出力する。NPUは、CAMからの一致アドレスインデックスから、次ホップ先アドレスを参照する。具体的なホップ先アドレスは、CAM自身ではなく、別のメモリLSI、たとえばSRAM(スタティック・ランダム・アクセス・メモリ)に書込まれていることが多い。
【0003】
一方、CAM内部に記憶されているデータ列との一致がなかった場合には、到着パケットの次のホップ先アドレスは、CAMハードウェア検索ではない別の方法、たとえばCAMには記憶されていないが、別の大容量メモリに書込まれている場合には、この大容量メモリへアクセスしてソフトウェアベースでの検索を行なうか、またはそのままパケット廃棄として処理される。CAM内部に一致するアドレスが存在せず、ソフトウェアベースの長い検索時間が必要な場合においても、この宛先アドレス(次ホップ先アドレス)は、次回以降同じヘッダを持つパケットが来たときのための学習として、CAMへの書込および記憶内容の更新が実行されるのが一般的である。この操作により、ソフトウェアによる処理時間の長い検索は1度だけであり、次回からは、再びCAMハードウェアベースでの高速検索が可能となり、アプリケーション上CAMの長所が拡大される。
【0004】
上述のように、CAMのハードウェアベースによるアドレス検索の長所は、その実効サーチ性能の高さである。また、このサーチ性能は、保持するデータ列の大きさ(ビット幅)に拘らず一定である。一般的なメモリを用いたソフトウェアベースでの検索の場合には、これまでツリーを始めさまざまな研究報告がなされている。しかしながら、このようなソフトウェアベースでの検索の場合、一般的には、保持データ量が大きくなるにつれて外部へすべてのデータを読出す時間が長くかかってしまう。すなわち、一般的なメモリを用いる場合、アドレス検索に要する時間は、データベースの容量に比例して大きくなるという特徴があり、これが、近年のインターネット人口の増加を考慮すると、大きな問題となる。したがって、CAMハードウェアベースのアドレス検索は、そのサーチ性能がデータベースの大きさに依存しないという点においても、このようなパケット転送制御用途向けに高く評価されている。
【0005】
このようなCAMの構成の一例が、特許文献1(特開2003−123482号公報)に示されている。この特許文献1においては、SRAMセルが、CAMセルおよびTCAM(3値CAM:Ternary CAM)セルに適用される。この特許文献1に示される構成においては、各メモリセルに、一致検出回路(XOR回路)が設けられ、記憶データビットと検索データビットとの一致/不一致の判定が各ビット単位で実行される。
【先行技術文献】
【特許文献】
【0006】
【特許文献1】特開2003−123482号公報
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、CAMは、IPアドレスのプリフィックスごとにブロック化されることがある。プリフィックスが8ビットの場合、CAMは、256個のブロックに分割される。各ブロックには、同一のメモリ容量が与えられる。
【0008】
しかしながら、インターネット内を伝送するIPアドレスのプリフィックスは等しく平均化されるものではない。あるプリフィックスのIPアドレスについては、多種類が伝送されるが、別のプリフィックスのIPアドレスについては、少ない種類しか伝送されない場合がある。
【0009】
図14(a)は、IPアドレスの有効ビット長が24ビットの場合に、各プリフィックス(上位8ビット)ごとに、インターネット上に伝送されるIPアドレスのビットパターンの種類を表わす図である。
【0010】
図14(b)は、IPアドレスの有効ビット長が23ビットの場合に、各プリフィックス(上位8ビット)ごとに、インターネット上に伝送されるIPアドレスのビットパターンの種類を表わす図である。
【0011】
図14(c)は、IPアドレスの有効ビット長が18ビットの場合に、各プリフィックス(上位8ビット)ごとに、インターネット上に伝送されるIPアドレスのビットパターンの種類を表わす図である。
【0012】
図14(a)〜(c)に示すように、伝送されるIPアドレスのビットパターンの種類が多いプリフィックスもあれば、伝送されるIPアドレスのビットパターンの種類が少ないプリフィックスもあることがわかる。
【0013】
上述のような場合には、ブロックのメモリ容量が同一であるにもかかわらず、あるプリフィックスに対応するブロックには、多量のIPアドレスが書込まれるが、別のプリフィックスに対応するブロックには、少量のIPアドレスしか書込まれない状態となり、メモリの使用効率が低くなる。その結果、無駄に電力が消費されることになる。
【0014】
それゆえに、本発明の一実施形態の目的は、未使用の記憶領域の発生を低減することができる内容参照メモリを提供することである。
【課題を解決するための手段】
【0015】
本発明の一実施形態の内容参照メモリは、複数のバンクを含み、検索対象のIPアドレスを格納するメモリアレイを備え、メモリアレイは、可変数のバンクからなる複数のブロックを含み、同一のブロックのバンクにはプリフィックスが同一のIPアドレスが格納される。内容参照メモリは、IPアドレスを検索データとして受けて、検索データと同一のIPアドレスがいずれのブロックに格納されているかをプリサーチするプリ検索部と、プリサーチによって特定されたブロックから読み出されたIPアドレスと検索データとを比較する検索判定部とをさらに備える。
【発明の効果】
【0016】
本発明の一実施形態によれば、未使用の記憶領域の発生を低減することができる。
【図面の簡単な説明】
【0017】
【図1】本発明の実施の形態の半導体装置を表わす図である。
【図2】(a)は、バンク内のエントリを表わす図である。(b)は、エントリに格納されるデータを表わす図である。
【図3】ブロック1〜256に属するバンクを表わす図である。
【図4】図3に示すように複数のバンクがブロック化されている場合に、ブロックi用制御回路ごとのブロック化支援回路13のバンクアドレスレジスタ群に記憶されるデータの例を表わす図である。
【図5】図3に示すように複数のバンクがブロック化されている場合に、ブロックi用制御回路のアドレスカウンタ101に記憶されるデータの例を表わす図である。
【図6】(a)〜(c)は、FIFOメモリ91に格納されるデータの例を表わす図である。
【図7】検索判定部14の概略構成を説明するための図である。
【図8】検索判定部14の詳細を表わす図である。
【図9】ブロック化支援回路13の構成を表わす図である。
【図10】エントリ消去回路12の構成を表わす図である。
【図11】エントリ消去動作を説明するための図である。
【図12】エントリ消去動作を説明するための図である。
【図13】第2の実施形態の検索判定部14の例を表わす図である。
【図14】(a)〜(c)は、各プリフィックス(上位8ビット)ごとに、インターネット上に伝送されるIPアドレスのビットパターンの種類を表わす図である。
【発明を実施するための形態】
【0018】
以下、本発明の実施形態について、図面を用いて説明する。
[第1の実施形態]
図1は、本発明の実施の形態の半導体装置1を表わす図である。
【0019】
図1を参照して、この半導体装置1は、メモリアレイ2と、制御回路3とを備える。
メモリアレイ2は、内部参照メモリセル(CAMセル)であるユニットセルUCが行列状に配列される。
【0020】
メモリアレイ2は、行を単位として複数のエントリに分割される。各エントリに対しては、対応のエントリ内のユニットセルUCが並列に結合されるマッチラインが設けられる。また、メモリアレイ2の列方向に、検索データを伝達するサーチライン対が設けられる。このサーチライン対とマッチラインの交差部に対応してユニットセルが設けられる。
【0021】
メモリアレイ2は、バンク1〜バンクNのN個のバンクに分割される。各バンクは、図2(a)に示すように、エントリ1〜エントリKのK個のエントリを有する。各エントリには、図2(b)に示すように、サーチ対象である32ビットのIPアドレス(情報データ)と、32ビットのホップ先アドレスとが記憶される。
【0022】
各ブロックのバンクの数は可変であり、最大L個である。同一のブロックのバンクにはプリフィックス(先頭の8ビットのネットワークアドレス部分)が同一のネットワークアドレスが格納される。
【0023】
制御回路3は、ブロックi用制御回路10−i(i=1〜256)と、バンク管理部4と、プリサーチ回路5と、検索判定部14と、ブロック管理部93、書込部95と、消去部94とを備える。
【0024】
各ブロックi用制御回路10−iは、ブロック化支援回路13と、アドレスカウンタ101とを備える。
【0025】
ブロック化支援回路13は、対応するブロックに属するバンクのアドレスを記憶するバンクアドレスレジスタ群を含む。
【0026】
アドレスカウンタ101は、対応のブロックに属する書込対象のバンクのエントリの位置を指示する。
【0027】
プリサーチ回路5は、外部から与えられる検索データ(32ビットのIPアドレス)のプリフィックス部分である先頭の8ビットに基づいて、検索データがブロック1〜ブロック256のいずれに属するかを判定する。
【0028】
検索判定部14は、プリサーチによって特定されたブロックの各エントリからデータを読み出して、読み出したデータに含まれるIPアドレスと検索データとを比較して、一致した場合に、そのIPアドレスとともに読み出されたホップ先アドレスを出力する。
【0029】
バンク管理部4は、未使用バンクを表わす情報を保持するバンクFIFO(First In First Out)メモリ91を含む。バンク管理部4は、初期状態では、メモリアレイ2に含まれるすべてのバンクのアドレスをFIFOメモリ91に格納する。バンク管理部4は、IPアドレスをメモリアレイ2の未使用のバンクに書込み必要が生じた際には、FIFOメモリ91から未使用バンクのアドレスを読み出して、読み出した情報に基づいて、未使用バンクをIPアドレスを書込むバンクとして割り当てる。ここで、IPアドレスをメモリアレイ2の未使用のバンクに書込み必要が生じる場合とは、IPアドレスの書込みを指示された場合において、書込み中(使用中)のバンクの未使用領域がなくなった場合(すなわち、全エントリが使用されているとき)である。また、バンク管理部4は、バンク内のすべてのエントリが消去された際に、消去されたバンクのアドレスをFIFOメモリ91に格納する。
【0030】
ブロック管理部93は、バンク管理部4によって新たに割り当てられたバンクをIPアドレスのプリフィックスに基づいて、いずれのブロックに属するかを特定する。ブロック管理部93は、特定されたブロックに対応するブロック化支援回路13に含まれるバンクアドレスレジスタ群に新たに割り当てられたバンクのアドレスを格納する。
【0031】
書込部95は、書込み時に、書込対象のバンクが属するブロックのアドレスカウンタ101で示されるエントリの位置にIPアドレスを書込み、その後、そのアドレスカウンタ101の値を1だけ増加させる。
【0032】
消去部94は、バンク内のエントリを消去する際に、バンクの使用領域の末尾のエントリに格納されているデータで、消去するエントリを上書きし、その後、バンクが属するブロックのアドレスカウンタ101の値を1だけ減少させる。
【0033】
図3〜図6は、ブロック化の例を説明するための図である。
図3は、ブロック1〜256に属するバンクを表わす図である。
【0034】
図3に示すように、バンク1、7はブロック1に属する。バンク2、5、6、8、10は、ブロック2に属する。バンク3は、ブロック3に属する。バンク4は、ブロック4に属する。バンク9は、ブロック5に属する。バンク687、743は、ブロック256に属する。
【0035】
図4は、図3に示すように複数のバンクがブロック化されている場合に、ブロックi用制御回路ごとのブロック化支援回路13のバンクアドレスレジスタ群に記憶されるデータの例を表わす図である。
【0036】
ブロック1用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク1のアドレスと、バンク7のアドレスを記憶する。ブロック2用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク2のアドレスと、バンク5のアドレスと、バンク6のアドレスと、バンク8のアドレスと、バンク10のアドレスとを記憶する。ブロック3用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク3のアドレスを記憶する。ブロック4用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク4のアドレスを記憶する。ブロック5用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク9のアドレスを記憶する。ブロック256用制御回路のブロック化支援回路13に含まれるバンクアドレスレジスタ群は、バンク687のアドレスと、バンク743のアドレスとを記憶する。
【0037】
図5は、図3に示すように複数のバンクがブロック化されている場合に、ブロックi用制御回路のアドレスカウンタ101に記憶されるデータの例を表わす図である。
【0038】
図5に示すように、ブロック1用制御回路のアドレスカウンタ101は、エントリ5のアドレスを記憶する。したがって、図4と図5によって、バンク7のエントリ5が現在又は次の書込対象のエントリとなる。ブロック2用制御回路のアドレスカウンタ101は、エントリ7のアドレスを記憶する。したがって、図4と図5によって、バンク10のエントリ7が現在又は次の書込対象のエントリとなる。ブロック3用制御回路のアドレスカウンタ101は、エントリ5のアドレスを記憶する。したがって、図4と図5によって、バンク3のエントリ5が現在又は次の書込対象のエントリとなる。ブロック4用制御回路のアドレスカウンタ101は、エントリ1のアドレスを記憶する。したがって、図4と図5によって、バンク4のエントリ1が現在又は次の書込対象のエントリとなる。ブロック5用制御回路のアドレスカウンタ101は、エントリ12のアドレスを記憶する。したがって、図4と図5によって、バンク9のエントリ12が現在又は次の書込対象のエントリとなる。ブロック256用制御回路のアドレスカウンタ101は、エントリ43のアドレスを記憶する。したがって、図4と図5によって、バンク743のエントリ43が現在又は次の書込対象のエントリとなる。
【0039】
図6(a)は、FIFOメモリ91に初期状態(ブロック化前)に格納されるデータの例を表わす図である。
【0040】
初期状態では、FIFOには、バンク1〜バンクNのアドレスが格納される。エントリへの書込み時に、新たなバンクを割当る時には、バンク1のアドレスから順次取り出される。取り出されたアドレスで指定されるバンクのエントリに図2(b)に示すようなデータが書込まれる。
【0041】
図6(b)は、バンク1〜バンク7が利用されて、データが書込まれた状態を表わす図である。
【0042】
バンクに含まれる全エントリのデータが消去された場合には、バンクは解放され、再割当可能となる。たとえば、バンク5が解放された場合に、図6(c)に示すように、消去部94によって解放されたバンクのアドレスがFIFOメモリ91の末尾に格納される。
【0043】
(検索判定部14)
図7は、検索判定部14の概略構成を説明するための図である。
【0044】
プリサーチによって、検索データがブロック1に属することがわかった場合に、バンク1の各エントリの情報データ(IPアドレス)が順次比較器60_1に出力される。比較器60_1は、検索データと、各エントリの情報データとが一致するか否かを比較して、比較結果を出力する。同時に、バンク7の各エントリのデータ各エントリの情報データ(IPアドレス)が順次比較器60_2に出力される。比較器60_2は、検索データと、各エントリの情報データとが一致するか否かを比較して、比較結果を出力する。論理回路Rは、比較器60_1の出力と比較器60_2の出力とを論理演算して、演算結果を出力する。
【0045】
図8は、検索判定部14の詳細を表わす図である。
図8を参照してプリサーチ回路5で特定されたブロックに属するバンクからエントリのデータ(IPアドレスとホップ先アドレス)が出力される。
【0046】
各バンクと接続する比較器60は、外部から与えられる検索データとIPアドレスとを比較して、比較結果を論理回路R1、および論理回路RR1〜RRNのうち、特定されたブロックに属するバンクと接続される論理回路へ出力する。論理回路RR1〜RRNのうち、特定されたブロックに属するバンクと接続される論理回路には、接続されるバンクのエントリのホップ先アドレスが入力される。
【0047】
論理回路R1は、比較器60_1〜60_Nでの比較のうち一致したものがある場合には、Hitを示す信号を出力する。
【0048】
論理回路RR1〜RRNのうち、特定されたブロックに属するバンクと接続する論理回路は、そのバンクでHitしたとき(つまり、接続される比較器が一致を示す信号を出力したとき)には、入力されたホップ先アドレスを出力し、そのバンクでMissしたときには、全ビットが0の信号を出力する。
【0049】
論理回路R3は、Hitしたバンクのエントリのホップ先アドレスを出力する。論理回路R2およびラッチ回路RA1によって、HitまたはMissの結果を更新されるまで維持し、出力する。論理回路R3、セレクタSL1およびラッチ回路RA2によって、ホップ先アドレスを更新されるまで維持し、出力する。
【0050】
(ブロック化支援回路13)
図9は、ブロック化支援回路13の構成を表わす図である。
【0051】
図9を参照して、カウンタ134は、バンクアドレスレジスタ36_1〜36_Nのうちバンクアドレスが格納されているレジスタの個数をカウントする。
【0052】
セレクタ32は、バンクアドレスレジスタ36_1〜36_Nのいずれかを指定するアドレス、またはカウンタ134のカウンタ値を受けて、どちらかを出力する。バンクアドレスレジスタ36_1〜36_Nのいずれかを指定するアドレスは、メモリアレイ2への書込み時に、このグループ支援回路が対応するブロックへのバンクの割当があった場合に、入力される。
【0053】
デコーダ30は、セレクタ32の出力信号をデコードする。デコーダ30の出力によって、論理回路RL1〜RL_Lのいずれかが選択される。またALL_select信号が入力されるときには、論理回路RL_1〜RL_Lのすべてが選択される。
【0054】
メモリアレイ2への書込み時には、選択された論理回路RL_iと接続されているバンクアドレスレジスタ36_iに、ライトデータ(バンクアドレス)が書込まれる。
【0055】
また、メンテナンス時には、選択された論理回路RL_iと接続されているバンクアドレスレジスタ36_iからリードデータ(バンクアドレス)が読み出される。
【0056】
(エントリ消去)
消去部94は、ブロックごとにエントリ消去回路12を含む。
【0057】
図10は、エントリ消去回路12の構成を表わす図である。
メモリA102は、メモリアレイ2内のバンクを表わす。
【0058】
メモリB104は、検索のために使用するデータを格納するものである。
アドレスカウンタ101は、メモリA(バンク内)で使用されている末尾のエントリの番号をセレクタ103へ出力する。
【0059】
セレクタ103は、命令が入力されて、この命令をメモリAへの命令(A_命令)またはメモリBへの命令(B_命令)として出力する。
【0060】
セレクタ103は、アドレスが入力されて、このアドレスをメモリAへのアドレス(A_アドレス)、メモリBへのアドレス(B_アドレス)として出力する。
【0061】
セレクタ103は、ライトデータ、メモリAからのリードデータ(A_リードデータ)、メモリBからのリードデータ(B_リードデータ)とが入力されて、これらをメモリAへのライトデータ(A_ライトデータ)、メモリBへのライトデータ(B_ライトデータ)として出力する。
【0062】
図11は、エントリ消去動作を説明するための図である。
1つのバンクに0〜n番目のエントリが使用され、アドレス順に0〜n番目のエントリが存在する場合に、エントリ消去回路は、k番目のエントリを消去する場合に、末尾に存在するn番目のエントリのデータを読み出して、k番目のエントリに上書きする。そして、n番目のエントリを未使用領域として解放し、使用領域を0〜(n−1)番目のエントリとする。これによって、消去したエントリを再利用することができる。
【0063】
図12は、エントリ消去動作を説明するための図である。
n番目のエントリ(アドレスがnとする)から読み出したデータをKey1+メモリBのiアドレスとする。Key1は、IPアドレスで、メモリBのiアドレスは、ホップ先アドレスである。
【0064】
一方、k番目のエントリ(アドレスがkとする)に格納されているデータがKey2+メモリBのjアドレスであるとする。Key2は、IPアドレスで、メモリBのjアドレスは、ホップ先アドレスである。k番目のエントリは、n番目のエントリのデータで上書きされるので、k番目のエントリのデータは、Key1+メモリBのiアドレスとなる。
【0065】
一方、メモリBのiアドレスには、メモリAのnアドレスが格納され、メモリBのjアドレスには、メモリAのkアドレスが格納されている。
【0066】
以上のように、本実施の形態によれば、プリフィックス毎の使用状況に偏りが発生した場合にも状況に応じてメモリを使用するため、未使用領域を発生させることなく効率よくメモリを使い切ることができる。
【0067】
[第2の実施形態]
図13は、第2の実施形態の検索判定部14の例を表わす図である。
【0068】
この検索判定部14は、ブロック1〜ブロック256において、同時に並行して検索処理が実行できる。
【0069】
セレクタ50−iは、バンク1〜バンクNのうち、ブロックiに属するバンクのエントリと検索データとを比較する比較器と接続する。
【0070】
ブロック1に属するバンク1の各エントリの情報データ(IPアドレス)と検索データとを比較する比較器60_1の比較結果と、ブロック1に属するバンク7の各エントリの情報データ(IPアドレス)を比較する比較器60_7の比較結果がセレクタ50−1に送られる。セレクタ50−1は、これらの2つの比較器60_1,60_7からの信号を論理回路52−1に出力する。論理回路52−1で2つの比較器60_1,60_7からの出力される信号を論理演算して、演算結果を出力する。
【0071】
同時に、ブロック2に属するバンク2,5,6,8,10の各エントリの情報データ(IPアドレス)と検索データとを比較する比較器60_2,60_5,60_6,60_8,60_10の比較結果がセレクタ50−2に送られる。セレクタ50−2は、これらの比較器60_2,60_5,60_6,60_8,60_10からの信号を論理回路52−2に出力する。論理回路52−2で4つの比較器60_2,60_5,60_6,60_8,60_10からの出力される信号を論理演算して、演算結果を出力する。
【0072】
同様に、同時にブロック3〜ブロック256についても、上述と同様にして検索データとの一致/不一致が判定される。
【0073】
並列処理方法の場合は、同時に各プリフィックスで使用されるブロックを動作させ検索を行い、検索結果をプライオリティエンコーダによって選別する。
【0074】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【0075】
1 半導体装置、2 メモリアレイ、3 制御回路、4 バンク管理部、5 プリサーチ回路、14 検索判定部、10−1〜10−256 ブロック制御回路、13 ブロック化支援回路、30 デコーダ、36_1〜36_N バンクアドレスレジスタ、60_1〜60_N 比較器、91 FIFOメモリ、93 ブロック管理部、94 消去部、95 書込部、101 アドレスカウンタ、102 メモリA、104 メモリB、134 カウンタ、R,R1,R2,RR1〜RRN,R3 論理回路、32,SL1,103 セレクタ回路、RL_1〜RL_N,RA1,RA2 ラッチ回路。
【特許請求の範囲】
【請求項1】
複数のバンクを含み、検索対象のIPアドレスを格納するメモリアレイを備え、前記メモリアレイは、可変数のバンクからなる複数のブロックを含み、同一のブロックのバンクにはプリフィックスが同一のIPアドレスが格納され、
IPアドレスを検索データとして受けて、前記検索データと同一のIPアドレスがいずれのブロックに格納されているかをプリサーチするプリ検索部と、
前記プリサーチによって特定されたブロックから読み出されたIPアドレスと前記検索データとを比較する検索判定部とをさらに備えた、内容参照メモリ。
【請求項2】
未使用バンクを表わす情報を保持するFIFOメモリを含みバンク管理部をさらに備え、
前記バンク管理部は、初期状態では、前記メモリアレイに含まれるすべてのバンクを表わす情報を前記FIFOメモリに格納し、前記IPアドレスをメモリアレイの未使用のバンクに書込み必要が生じた際には、前記FIFOメモリから未使用バンクを表わす情報を読み出して、読み出した情報に基づいて、前記未使用バンクを前記IPアドレスを書込むバンクとして割り当てる、請求項1記載の内容参照メモリ。
【請求項3】
ブロックに対応して、属するバンクを表わす情報を記憶するレジスタ群と、
前記バンク管理部によって新たに割り当てられたバンクを前記IPアドレスのプリフィックスに基づいて、いずれのブロックに属するかを特定して、特定されたブロックに対応する前記レジスタ群に前記新たに割り当てられたバンクを表わす情報を格納するブロック管理部とをさらに備えた、請求項2記載の内容参照メモリ。
【請求項4】
各バンクは、複数のエントリを含み、
ブロックごとに、前記ブロックに属する書込対象のバンクのエントリの位置を示すアドレスカウンタと、
書込み時に、前記書込対象のバンクが属するブロックの前記アドレスカウンタで示されるエントリの位置に前記IPアドレスを書込み、その後前記アドレスカウンタの値を1だけ増加させる書込部とをさらに備えた、請求項3記載の内容参照メモリ。
【請求項5】
前記バンク内のエントリを消去する際に、前記バンクの使用領域の末尾のエントリに格納されているデータで、前記消去するエントリを上書きし、その後、前記バンクが属するブロックの前記アドレスカウンタの値を1だけ減少させる消去部をさらに備え、
前記バンク管理部は、バンク内のすべてのエントリが消去された際に、前記消去されたバンクを表わす情報を前記FIFOメモリに格納する、請求項4記載の内容参照メモリ。
【請求項1】
複数のバンクを含み、検索対象のIPアドレスを格納するメモリアレイを備え、前記メモリアレイは、可変数のバンクからなる複数のブロックを含み、同一のブロックのバンクにはプリフィックスが同一のIPアドレスが格納され、
IPアドレスを検索データとして受けて、前記検索データと同一のIPアドレスがいずれのブロックに格納されているかをプリサーチするプリ検索部と、
前記プリサーチによって特定されたブロックから読み出されたIPアドレスと前記検索データとを比較する検索判定部とをさらに備えた、内容参照メモリ。
【請求項2】
未使用バンクを表わす情報を保持するFIFOメモリを含みバンク管理部をさらに備え、
前記バンク管理部は、初期状態では、前記メモリアレイに含まれるすべてのバンクを表わす情報を前記FIFOメモリに格納し、前記IPアドレスをメモリアレイの未使用のバンクに書込み必要が生じた際には、前記FIFOメモリから未使用バンクを表わす情報を読み出して、読み出した情報に基づいて、前記未使用バンクを前記IPアドレスを書込むバンクとして割り当てる、請求項1記載の内容参照メモリ。
【請求項3】
ブロックに対応して、属するバンクを表わす情報を記憶するレジスタ群と、
前記バンク管理部によって新たに割り当てられたバンクを前記IPアドレスのプリフィックスに基づいて、いずれのブロックに属するかを特定して、特定されたブロックに対応する前記レジスタ群に前記新たに割り当てられたバンクを表わす情報を格納するブロック管理部とをさらに備えた、請求項2記載の内容参照メモリ。
【請求項4】
各バンクは、複数のエントリを含み、
ブロックごとに、前記ブロックに属する書込対象のバンクのエントリの位置を示すアドレスカウンタと、
書込み時に、前記書込対象のバンクが属するブロックの前記アドレスカウンタで示されるエントリの位置に前記IPアドレスを書込み、その後前記アドレスカウンタの値を1だけ増加させる書込部とをさらに備えた、請求項3記載の内容参照メモリ。
【請求項5】
前記バンク内のエントリを消去する際に、前記バンクの使用領域の末尾のエントリに格納されているデータで、前記消去するエントリを上書きし、その後、前記バンクが属するブロックの前記アドレスカウンタの値を1だけ減少させる消去部をさらに備え、
前記バンク管理部は、バンク内のすべてのエントリが消去された際に、前記消去されたバンクを表わす情報を前記FIFOメモリに格納する、請求項4記載の内容参照メモリ。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2013−37750(P2013−37750A)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願番号】特願2011−174873(P2011−174873)
【出願日】平成23年8月10日(2011.8.10)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成22年度、独立行政法人情報通信研究機構「高度通信・放送研究開発委託研究/光統合ネットワークの管理制御およびノード構成技術に関する研究開発、副題:光統合ネットワークの制御技術と光パケット安定性処理技術の研究開発」、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
【公開日】平成25年2月21日(2013.2.21)
【国際特許分類】
【出願日】平成23年8月10日(2011.8.10)
【国等の委託研究の成果に係る記載事項】(出願人による申告)平成22年度、独立行政法人情報通信研究機構「高度通信・放送研究開発委託研究/光統合ネットワークの管理制御およびノード構成技術に関する研究開発、副題:光統合ネットワークの制御技術と光パケット安定性処理技術の研究開発」、産業技術力強化法第19条の適用を受ける特許出願
【出願人】(302062931)ルネサスエレクトロニクス株式会社 (8,021)
[ Back to top ]