(57)【要約】【課題】本発明は、高速性を実現できると共に簡単に実装可能な連想メモリ装置及びそれを用いた中継装置を提供することを目的とする。【解決手段】論理的に複数のグループに分割されたエントリを持つメモリを有し、メモリに格納されているデータをキーとして入力し、キーが格納されているアドレスを返却する連想メモリ装置であって、１回の検索命令で、前記複数のグループの一または複数を検索対象として指定され、検索対象となった各グループの検索結果を順次返却することにより、１回の検索命令入力で、複数のグループの検索結果を順次返却することができ、高速検索が可能となる。【選択図】　　　　図４
2004046988.tif 000002
【特許請求の範囲】
【請求項１】
論理的に複数のグループに分割されたエントリを持つメモリを有し、前記メモリに格納されているデータをキーとして入力し、前記キーが格納されているアドレスを返却する連想メモリ装置であって、
１回で前記複数のグループの一または複数を検索対象として指定する検索命令をデコードし、検索対象となった各グループを指定するグループ信号とイネーブル信号を発生する命令デコード部を有し、
前記グループ信号とイネーブル信号及び前記キーを入力して、前記グループ信号で指定された各グループを検索し、検索結果を順次返却することを特徴とする連想メモリ装置。
【請求項２】
請求項１記載の連想メモリ装置において、
前記検索入力は、検索対象の一または複数のグループを指定する検索対象グループ指定部を有することを特徴とする連想メモリ装置。
【請求項３】
請求項１または２記載の連想メモリ装置において、
検索対象とする一または複数のグループを予め設定される検索対象グループ格納部を有することを特徴とする連想メモリ装置。
【請求項４】
請求項３記載の連想メモリ装置において、
前記検索対象グループ格納部に検索対象とするグループが予め設定されていても、前記検索入力の検索対象グループ指定部で検索対象のグループが指定されると、前記検索入力の検索対象グループを検索対象とすることを特徴とする連想メモリ装置。
【請求項５】
請求項２記載の連想メモリ装置において、
前記検索入力は、複数回続けて行われ、検索対象とするグループの検索結果の返却順序を指定することを特徴とする連想メモリ装置。
【請求項６】
請求項３記載の連想メモリ装置において、
前記検索対象グループ格納部は、検索対象とするグループの検索結果の返却順序を予め設定されることを特徴とする連想メモリ装置。
【請求項７】
請求項６記載の連想メモリ装置において、
前記検索対象グループ格納部に検索対象とするグループの検索結果の返却順序が予め設定されていても、前記検索入力で検索対象のグループの検索結果の返却順序が指定されると、前記検索入力の検索対象グループの検索結果の返却順序で返却を検索対象とすることを特徴とする連想メモリ装置。
【請求項８】
請求項１記載の連想メモリ装置において、
前記エントリは、自エントリが属するグループを格納するグループ格納部を有することを特徴とする連想メモリ装置。
【請求項９】
請求項１記載の連想メモリ装置において、
前記エントリは、自エントリのキーを格納するエントリ格納部を有することを特徴とする連想メモリ装置。
【請求項１０】
請求項１乃至９のいずれかに記載の連想メモリ装置を用いて構成したことを特徴とする中継装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、連想メモリ装置及びそれを用いた中継装置に関し、メモリに格納されているデータを検索するためにキーが入力され、そのキーが格納されているアドレスを返却する連想メモリ装置及びそれを用いた中継装置に関する。
【０００２】
【従来の技術】
宛先検索や優先度検索、フィルタリング検索といったさまざまな検索をする必要のあるネットワークの中継装置でＣＡＭが利用されている。ＣＡＭ（Ｃｏｎｔｅｎｔ　Ａｄｄｒｅｓｓａｂｌｅ　Ｍｅｍｏｒｙ）即ち連想メモリ装置は、メモリ（ＣＡＭエントリ）に格納されているデータをキーとして入力し、そのキーが格納されているＣＡＭエントリのアドレスを返却する機能を実現する。
【０００３】
従来のＣＡＭにおいて実現されている機能は、検索キーを入力として、そのキーに合致するＣＡＭエントリのアドレスを１つ返却するというものである。また、検索キーに複数のＣＡＭエントリが合致した場合は、複数のＣＡＭエントリに合致したことは通知されるものの、返却される検索結果は、通常最も若いアドレスだけである。
【０００４】
これに対し、ネットワークの中継装置、特にＩＰ（Ｉｎｔｅｒｎｅｔ　Ｐｒｏｔｏｃｏｌ）パケットを中継するルータや、ＬＡＮ（Ｌｏｃａｌ　Ａｒｅａ　Ｎｅｔｗｏｒｋ）におけるイーサネット（登録商標）のＭＡＣ（Ｍｅｄｉａ　Ａｃｃｅｓｓ　Ｃｏｎｔｒｏｌ）フレームをスイッチングするレイヤ２スイッチ等において、宛先検索や優先制御、フィルタリング等の検索において、ＣＡＭの使用が多くなって来ており、これら全ての検索処理を現在あるＣＡＭで行う場合は、１回の検索操作に対して１つの結果のみしか返すことができないため、それぞれの検索を別々に行っている。すなわち１つのフレームもしくはパケットに対し、複数回の検索を行っている。
【０００５】
【発明が解決しようとする課題】
従来は検索キー長も短かったため、１回の検索操作を入力するのに１τ（τは１クロックサイクル）の時間で入力できできたが、近年ネットワークの中継装置も多機能となったことからＣＡＭの検索キー長も増大しており、その結果、検索キーを複数に分割して入力することが必要となり、１回の検索操作を入力するのに数τの時間が必要となった。図１は、検索キーを４つに分割したため、検索入力に４τを必要とする例の信号タイミングチャートを示す。
【０００６】
そのため、複数回の検索を同じＣＡＭに行う場合は、１回の検索操作を入力するのに必要な時間×検索回数となり、その結果、超高速回線を扱う中継装置においては、その検索時間がネックとなるため、単一のＣＡＭで複数の検索を行うことは現実的ではない。図２は、１回の検索入力に４τ必要である場合に３回の検索を行った例の信号タイミングチャートを示す。
【０００７】
また、複数回の検索のそれぞれにおいて専用のＣＡＭを持たせ、それぞれのＣＡＭでは１度の検索を行い、複数のＣＡＭを並列で実行すれば、性能の面では改善可能である。
【０００８】
しかしながら、複数のＣＡＭを実装することから、それぞれのＣＡＭと、それぞれのＣＡＭを制御する制御チップをそれぞれ実装しなければならず、実装面積が大きくなってしまう。また、複数のＣＡＭを単一の制御チップで制御した場合、制御チップに必要とするピン数が増大し、また制御チップでの制御が複雑になるとい問題が生じる。また、何れの方式も実装チップ数が増えることから、実装する装置の価格面で非常に不利であるという問題があった。
【０００９】
本発明は、上記の点に鑑みなされたものであり、高速性を実現できると共に簡単に実装可能な連想メモリ装置及びそれを用いた中継装置を提供することを目的とする。
【００１０】
【課題を解決するための手段】
請求項１に記載の発明は、１回で前記複数のグループの一または複数を検索対象として指定する検索命令をデコードし、検索対象となった各グループを指定するグループ信号とイネーブル信号を発生する命令デコード部を有し、グループ信号とイネーブル信号及びキーを入力して、グループ信号で指定された各グループを検索し、検索結果を順次返却することにより、１回の検索命令入力で、複数のグループの検索結果を順次返却することができ、高速検索が可能となる。
【００１１】
請求項２に記載の発明では、検索入力は、一または複数の検索対象のグループを指定する検索対象グループ指定部を有することにより、各検索入力毎に検索対象を指定することが可能となる。
【００１２】
請求項３に記載の発明は、検索対象とする一または複数のグループを予め設定される検索対象グループ格納部を有することにより、予め設定されたグループを検索対象として検索を行うことができる。
【００１３】
請求項４に記載の発明は、検索対象グループ格納部に検索対象とするグループが予め設定されていても、検索入力の検索対象グループ指定部で検索対象のグループが指定されると、検索入力の検索対象グループを検索対象とすることにより、検索入力の検索対象グループを優先させて検索を行うことができる。
【００１４】
請求項５に記載の発明では、検索入力は、複数回続けて行われ、検索対象とするグループの検索結果の返却順序を指定することにより、グループの検索結果の返却順序を各種指定することができる。
【００１５】
請求項６に記載の発明では、検索対象グループ格納部は、検索対象とするグループの検索結果の返却順序を予め設定されることにより、グループの検索結果の返却順序を各種指定することができる。
【００１６】
請求項７に記載の発明では、検索対象グループ格納部に検索対象とするグループの検索結果の返却順序が予め設定されていても、検索入力で検索対象のグループの検索結果の返却順序が指定されると、検索入力の検索対象グループの検索結果の返却順序で返却を検索対象とすることにより、検索入力の検索対象グループの検索結果の返却順序を優先させることができる。
【００１７】
請求項８に記載の発明では、エントリは、自エントリが属するグループを格納するグループ格納部を有することにより、グループのグループ数や各グループのエントリ数や各エントリの属するグループを自由に変更することができる。
【００１８】
請求項９に記載の発明では、エントリは、自エントリのキーを格納するエントリ格納部を有することにより、各エントリのキーを自由に変更することができる。
【００１９】
【発明の実施の形態】
本発明では、１回の検索操作で、指定した複数のメモリグループに対する検索結果を順に全て返却するＣＡＭを実現する。例えば、１回の検索入力において検索キーを入力するのに４τの時間がかかるとし、かつ１回の検索入力で宛先検索、優先度検索、フィルタリング検索を行うとした場合、宛先検索のためのエントリデータをメモリグループ１、優先度検索のためのエントリデータをメモリグループ２、フィルタリング検索のためのエントリデータをメモリグループ３と定義されているとする。このとき、図３に信号タイミングチャートを示すように、メモリグループ１、２、３に対する検索を行うように、つまり、１回の検索入力でメモリグループ１、２、３の結果が順に返却されるように指定することで、上記３つの検索が１フレーム毎に４τの時間で終了することとなる。
【００２０】
なお、従来のＣＡＭで同一のことをした場合、図２で示したように、検索操作入力時間×検索回数の時間がかかるため、１２τの時間が必要となる。この時間の差は、検索を行う対象が増えれば増えるほど大きくなる。
【００２１】
図４は、上記機能を実現する本発明の連想メモリ装置の一実施例の全体構成図を示す。ここでは、ＣＡＭのエントリ数をｎ（＝２ｋ）、メモリグループ数をｇ、検索キーのキー長をｐとした時の例で示している。
【００２２】
同図中、命令デコード部１１では、入力された命令（命令コード）を基に、検索の命令であった時は、出力のイネーブル信号Ｓ＿ＥＮをイネーブル（‘１’でイネーブル）にする。ここで、従来のＣＡＭであれば、１回の検索命令でＳ＿ＥＮは１τだけイネーブルとなる、もしくは一度の検索に該当する長さ分だけイネーブルとなるが、本発明装置においては、検索対象とするメモリグループ数の時間だけイネーブルとする。また、それぞれのイネーブルに対応するグループ信号ｇｒｐに、それぞれのイネーブルに対して検索を行うメモリグループを指定することで、指定した複数メモリグループそれぞれの結果を順に検索対象とする機構を実現している。
【００２３】
図４の下部に一度の検索命令でメモリグループ１、２、３を検索対象とした場合の信号タイミングチャートを示している。この場合、検索対象とするメモリグループ数は３つなので、イネーブル信号Ｓ＿ＥＮは３τ分だけ‘１’とし、その３τの中に、順にメモリグループ１、メモリグループ２、メモリグループ３を指定している。
【００２４】
これによって、後段には検索が複数回行われることとなる。すなわち一度の検索入力によって指定メモリグループを順に検索し、それぞれの結果が順に返却する機構が実現可能となる。
【００２５】
ここで、命令デコード部１１の出力する信号ｇｒｐは、ｇビットの信号として検索対象とするメモリグループに対応するビットを‘１’にすることで、検索対象を指定している。これ以外にも、メモリグループの番号を数字で指定する方法、例えばグループ数が１６まで設定可能である場合、信号ｇｒｐは４ビットとし、メモリグループ番号３を指定する場合は信号ｇｒｐを０ｂ００１１（０ｂは２進表示を表す）となるような指定方法であっても構わない。なお、検索入力時のメモリグループ指定や、信号Ｓ＿ＥＮ、信号ｇｒｐの出力を行うための詳細構成に関しては、後述の詳細構成図を基に説明する。
【００２６】
次に、メモリであるＣＡＭエントリ部１２には、各エントリのデータが入っており、検索時つまり、信号Ｓ＿ＥＮがイネーブルとなった時に、信号ｇｒｐで指定されたメモリグループに属する各エントリと、入力されたキーＫｅｙとの比較を行い、ヒット信号ｈｉｔを出力する。
【００２７】
命令デコード部１１において、複数の検索指定が行われていることから、検索時における比較に関しては、従来のＣＡＭと同一の方式でよい。信号ｇｒｐで指定されたメモリグループに属するエントリの検出方式及び、当該エントリのみを検索対象とする方式に関しては、後述の詳細構成図を基に説明する。
【００２８】
結果選択部１３では、イネーブル信号ＥＮでのイネーブル指定時に各エントリから出て来た合計ｎ本のヒット信号ｈｉｔから、１つの結果を選択し、そのエントリのアドレスを出力する。結果選択部１３は従来のＣＡＭにおいて実現されている方式と同一の構成で実現可能である。検索指示が命令デコード部１１にて複数回出力される構成となっているため、それぞれのイネーブル信号においては、１つの結果を返す従来の方式でよいため、詳細な説明は省略する。
【００２９】
次に、本発明の各部分における詳細な構成を示す。
【００３０】
図５は、命令デコード部１１の第１実施例のブロック図を示す。同図中、命令識別部２１は、命令入力を受け付け、後段に適切な指示を行う。ここで、この命令入力の一実施例を図６に示す。図６に示すように、命令入力には命令コード部と検索対象メモリグループ指定部（検索対象グループ指定部）が設けられている。命令コード部には、検索やエントリ格納といった各種コマンドのコード番号が入る。本発明は検索に関するものであるため、以後、検索の命令コードに関する部分のみ説明する。検索に関する命令コードは以下の２つを用意する。
【００３１】
検索指示１：命令入力の検索対象メモリグループ指定部に指定されたメモリグループを検索対象に指定する検索命令。
【００３２】
検索指示２：図５に示す検索対象メモリグループ格納部（検索対象グループ格納部）２２の内容を検索対象に指定する検索命令。
【００３３】
命令入力の検索対象メモリグループ指定部は、検索命令の対象とするメモリグループを指定する部分である。ここで、このメモリグループ指定方法は、各メモリグループが検索対象メモリグループ指定部の各ビットにマッピングされており、検索対象としたいメモリグループに対応するビットを‘１’とすることで指定を行う。例えば、メモリグループ１、２、３を検索対象としたい場合は、これらに対応するビット（３ビット分）を‘１’とする。
【００３４】
このような命令コードは図５に示す命令識別部２１で受け付けられる。命令識別部２１では、命令入力の命令コード部が検索を指示している時、サーチ開始信号を１τだけ‘１’とする。また、検索対象メモリグループ指定部の中で‘１’となっているビット数−１を計算し、カウント信号Ｃｏｕｎｔにその値を出力する。例えば、メモリグループの指定が４つで検索結果を４回返す場合は、カウント信号の値は３となる。
【００３５】
なお、命令入力の命令コード部に、検索指示と検索結果を返す数を入力してもらい、命令識別部２１では、その数−１をカウント信号で出力するといった形態でもよい。ここで、命令入力Ｉｎｓｔｒｕｃｔｉｏｎが上記の検索指示１であった場合はセル信号ｓｅｌは‘０’とし、検索指示２であった場合はセル信号を‘１’としてセレクタ部２３に供給し、検索対象メモリグループの選択を行うために判別させる。
【００３６】
最後に、命令入力内の検索対象メモリグループ指定部の内容を信号ｇｒｐ＿ｉｎ０［ｇ−１：０］にそのまま出力してセレクタ部２３に供給する。
【００３７】
検索対象メモリグループ格納部２２は、検索対象メモリグループを命令入力内に設定しなかった場合（検索支持２を指示した時）に使用する検索対象メモリグループの内容を格納しており、このメモリグループの内容はユーザから指定可能である。また、その内容が常にｇｒｐ＿ｉｎ１［ｇ−１：０］信号としてセレクタ２３に対して出力される。
【００３８】
セレクタ部２３では、イネーブル信号ＥＮが‘１’である時、信号ｓｅｌが‘０’なら信号ｇｒｐ＿ｉｎ０［ｇ−１：０］を信号ｇｒｐ＿ｏｕｔとして出力し、信号ｓｅｌが‘１’なら信号ｇｒｐ＿ｉｎ１［ｇ−１：０］を信号ｇｒｐ＿ｏｕｔとして出力する。またイネーブル信号が‘０’である時は、最後にイネーブル信号が‘１’であった時の出力内容を保持する。これにより、検索命令の種類に応じて、命令入力内の検索対象メモリグループか、検索対象メモリグループ格納部２２に格納されている検索対象メモリグループのどちらを使用するか指定することが可能となる。
【００３９】
検索開始トリガ指定部（つまり検索開始指定手段）２４は、前回の検索指示がまだ終わっていない内に次の検索命令がやって来た時、例えば、前回の検索指示で、検索対象グループを１０グループ指定したが、５τ後に次の検索指示があった場合等に、それを受け付けるかどうかを判別する。
【００４０】
検索入力割り込み指定格納部（つまり検索入力割り込み指定手段）２４１は、前回の検索指示がまだ終わっていない内に次の検索指示を受けて割り込ませるかどうかをユーザから指定され格納する。受けて良い設定がなされた時は、イネーブル信号Ｉ＿ＥＮを‘１’とし、受け付けないようにする設定がなされた時は、信号Ｉ＿ＥＮを‘０’とする。
【００４１】
また、ＳＳカウンタ部２４２は、イネーブル信号ＥＮが‘１’の時、命令識別部２１からのＣｏｕｎｔ入力を内部に格納し、１τ後から格納したＣｏｕｎｔ入力が０になるまＣｏｕｔ出力を‘１’とする。これは、入力内容を格納するのに１τ必要であるため、Ｃｏｕｔ出力は１τ遅れるからであり、Ｃｏｕｎｔ入力の入力時とＣｏｕｔ出力の出力開始時が１τずれるので、Ｃｏｕｎｔ入力は検索結果を返す数−１を入力して、ずれを補っている。
【００４２】
ここで、イネーブル信号ＥＮは、信号Ｉ＿ＥＮとＣｏｕｔ出力のＮＯＴ（否定）をＯＲ（論理和）し、その結果を命令識別部２１からのサーチスタート信号とＡＮＤ（論理積）している。まず、信号Ｉ＿ＥＮとＣｏｕｔ出力のＮＯＴをＯＲする部分は、Ｃｏｕｔ出力が‘１’（すなわち前回の検索結果返却に要する時刻がまだ経過していない状態）で、かつ信号Ｉ＿ＥＮが‘０’（前回の検索指示が終わっていないうちは次の検索指示を受け付けてはいけない場合）の時のみ、結果が‘０’となる。
【００４３】
この時は、サーチスタート信号とのＡＮＤの結果が‘０’となる。すなわち、次の検索指示を受け付けてはいけない場合はサーチスタート指示が来ても信号ＥＮ（＝サーチスタートアウト信号）は‘０’となるため、次の検索指示が無視され、サーチスタート指示の受け付けを拒否することが可能となる。
【００４４】
また、サーチスタート信号とカウント信号のＯＲをイネーブル信号Ｓ＿ＥＮとして出力しているが、これはサーチスタート指示があってから、検索結果を返す個数分のクロック数だけ‘１’を出力して後段の検索指示を行うためである。また、ＳＳカウンタ２４２のＣｏｕｔ出力はサーチスタート信号の入力時には‘１’とならない（前回の内容が出力されている）ので、サーチスタート信号入力があった時点においても信号Ｓ＿ＥＮに‘１’を出力させるため、ＯＲを取っている。
【００４５】
遅延部２５は、検索キーは１τで入力できないため、検索キーの入力が完了するまでの間、各信号に遅延を与える。また、遅延部２６は、命令入力から、サーチスタート信号が出るまでの間分、検索キー入力に遅延を与える。
【００４６】
検索キー生成部２７は、検索キーの部分入力をそれぞれ保持し、全て入って来た後に得られた検索キーを全て後段に伝える。図５では、キー長ｐビットの検索キー入力に４τ必要とする場合を示している。検索キー生成部２７では、信号ＳＳ＿１（＝サーチスタートアウト）が‘１’となる時に、検索キー入力の１τ目が来るように遅延部２６において遅延処理がなされているため、最初の検索キー入力（最初のｐ／４ビット分）は、フリップフロップ２７１に格納される。フリップフロップ２７１〜２７４はイネーブル入力付きのｐ／４ビット分のフリップフロップであり、イネーブルが‘１’の時、データＤ＿ｉｎの内容をラッチするものである。
【００４７】
次に、検索キーの２τ目の入力時は、信号ＳＳ＿１が１τ遅延されてフリップフロップ２７２でイネーブルとなるため、検索キー入力はフリップフロップ２７２に格納される。同様に３τ目、４τ目の検索キー入力は、順にフリップフロップ２７３、２７４に格納される。
【００４８】
全て格納が終わった後にサーチスタート信号（＝ＳＳ＿２）が
‘１’となるように遅延部２５で遅延処理がなされているため、信号ＳＳ＿２が‘１’となった時は、フリップフロップ２７１〜２７４に検索キーの内容が全て入っている状態である。これらがフリップフロップ２７５に供給され、フリップフロップ２７５においてｐビットの検索キーが全て格納されることとなる。また、その内容は次にＳＳ２が‘１’となるまでＫｅｙ［ｐ−１：０］に出力される。
【００４９】
グループ選択部２８では、信号ｇｒｐ＿ｉｎにて入力された検索対象メモリグループを、サイクル毎に検索対象とするグループに分ける。例えば、検索対象メモリグループがメモリグループ１、２、３であった場合、１τ目はメモリグループ１に対応する信号ｇｒｐのみ‘１’とし、２τ目はメモリグループ２に対応する信号ｇｒｐのみ‘１’、３τ目はメモリグループ３に対応する信号ｇｒｐのみ‘１’となるように分ける。これは、複数個の検索結果を返す必要があるためである。
【００５０】
ここで、回路部２８１では、信号ｇｒｐ＿ｉｎ［０］と、それの１τ遅延（ＦＦ出力部分）とのＸＯＲ（排他的論理和）を取っているため、もしも信号ｇｒｐ＿ｉｎ［０］が‘１’であった場合は、１τだけ‘１’となる。また、信号ｇｒｐ＿ｉｎ［０］の１τ遅延信号（フリップフロップ出力部分）は、サーチスタート信号のＮＯＴとＡＮＤを取っていることから、サーチスタート信号が‘１’の時（すなわち新規検索開始時）は、ＡＮＤ結果が‘０’となり、信号ｇｒｐ＿ｉｎ［０］とのＸＯＲ結果（信号ｇｒｐ［０］）は、ｇｒｐ＿ｉｎ［０］の値そのものが出力されることとなる。すなわち、サーチスタート信号によってリセットがかかる意味合いとなる。これによって、信号ｇｒｐ＿ｉｎ［０］が‘１’である時は、サーチスタート信号が‘１’となる１τだけ信号ｇｒｐ［０］が‘１’となる。
【００５１】
回路部２８２では回路部２８１と基本的に同じ回路だが、回路部２８１の出力の１τ遅延がサーチスタート信号とＯＲがけされている。これは、信号ｇｒｐ［０］が‘１’である時はリセットがかかり、信号ｇｒｐ［１］がそのまま出力されるようになる。従って、信号ｇｒｐ［１］が‘１’であるとき、信号ｇｒｐ［０］が‘１’であれば、回路部２８２の出力は２τ分‘１’となる。信号ｇｒｐ［０］が‘０’のときは１τのみ‘１’となる。
【００５２】
同様に、回路部２８３では上部の出力（回路部２８１，２８２の出力を含め）全てをＯＲがけした内容の１τ遅延がリセット入力となっている。すなわち、信号ｇｒｐ＿ｉｎ［ｇ−１］が‘１’ならば、信号ｇｒｐ［０］〜ｇｒｐ［ｇ−２］のどれかが‘１’である場合、かならず回路部２８３の出力が‘１’となり、さらにもう１τ分‘１’の出力が続くこととなる。
【００５３】
例えば、信号ｇｒｐ＿ｉｎ［０］，ｇｒｐ＿ｉｎ［１］，ｇｒｐ＿ｉｎ［ｇ−１］の３つが‘１’である時、つまり、これらに対応する３つのメモリグループを検索対象とした時は、最初の１τ目では回路部２８１，２８２，２８３の出力が‘１’となり、２τ目は回路部２８２，２８３の出力が‘１’となり、３τ目は回路部２８３の出力のみ‘１’となる。
【００５４】
ここで、回路部２８２、２８３の出力は上部の出力のＮＯＴとＡＮＤを取っていることから、上部の出力が‘１’となっている場合は、‘０’に落とされることとなる。これにより、最初の１τは信号ｇｒｐ［０］のみ‘１’となり、次の２τ目では信号ｇｒｐ［１］のみ‘１’となり、３τ目では信号ｇｒｐ［ｇ−１］のみ‘１’となる結果が得られ、検索対象とするメモリグループが順に１つずつ出力される結果が得られる。
【００５５】
最後に、遅延部２９では、遅延部２５と遅延部２８で必要とする時間分の遅延を与える。これによって、ｇｒｐ出力とＳ＿ＥＮ出力を合わせるための調節を行っている。以上により、検索対象とするメモリグループ数分だけイネーブル信号Ｓ＿ＥＮが‘１’となり、かつ検索指定をしたメモリグループが順に１つずつ信号ｇｒｐとして出力されるため、１回の検索入力で検索指定の対象グループを、順に後段に指定することが可能となる。
【００５６】
図７は、命令デコード部１１の第２実施例のブロック図を示す。図７では、例えば検索結果の１τ目はグループ番号２、２τ目はグループ番号３、３τ目はグループ番号１を返すというようにグループ順を変更したい場合や、検索結果の１τ目はグループ番号１／２／３、２τ目はグループ番号２／３／４、３τ目はグループ番号３／４／５を返すというように、各結果を返すグループを複数指定したい場合の指定も行うことが可能である。
【００５７】
図７においては、命令入力の内容が図５の実施例で示した場合と多少変更となる。図７では、検索に関する命令コードは以下の４つを用意する。
【００５８】
検索指示１：命令入力の検索対象メモリグループ指定部に指定されたメモリグループを検索対象に指定する検索命令。
【００５９】
メモリグループ入力指示２：検索対象メモリグループ指定部に指定されたメモリグループを検索対象に指定するが、メモリグループの指定のみを行う命令（検索指示１の命令に続いて入力される）。
【００６０】
検索指示３：図７に示す検索対象メモリグループ格納部３２の内容を検索対象に指定する検索命令。
【００６１】
メモリグループ入力指示４：図７に示す検索対象メモリグループ格納部３２の内容を検索対象に指定するが、メモリグループの指定のみを行う命令（検索指示３の命令に続いて入力される）。
【００６２】
また、命令入力は例えば、図８に示すように、各τ毎に検索対象メモリグループを指定する。図８では、メモリグループ３を指定する検索指示１、メモリグループ１を指定するメモリグループ入力指示２、メモリグループ２を指定するメモリグループ入力指示２、メモリグループ４／５／６を指定するメモリグループ入力指示２、メモリグループ７／８を指定するメモリグループ入力指示２の順に命令入力が行われる。
【００６３】
ここで、各τ毎のメモリグループ指定は、図６に示す命令入力中の検索対象メモリグループ指定部にて指定する。なお、複数グループの指定は、それぞれのグループに該当するビット（複数）を‘１’とすることで指定する。
【００６４】
命令識別部３１は、上記４つの命令を認識し、検索指示であった時は信号Ｓ＿ＥＮ及びサーチスタート信号を‘１’とする。また、メモリグループ入力指示２，４の時は、信号Ｓ＿ＥＮのみを‘１’とする。また、検索対象メモリグループ指定部を使用する検索指示１，３の時はセル信号ｓｅｌを‘０’とし、検索対象メモリグループ格納部（検索対象グループ格納部）３２を使用するメモリグループ入力指示２，４の時はセル信号を‘１’とする。これによって、各グループ入力それぞれにおいて入力した検索対象メモリグループか、格納されたメモリグループのどちらかを逐一選択することが可能となる。
【００６５】
検索対象メモリグループ格納部３２は、検索結果を返却するτ毎の検索対象メモリグループをそれぞれ指定する領域を持つ。例えば最大ｍ個の結果が返却できるとした場合、ｍ個の検索対象メモリグループを格納する領域を持つ。イネーブル信号ＥＮが‘１’となった時から順に、それぞれに対応する検索対象メモリグループの内容をｇｒｐ＿ｉｎ１［ｇ−１：０］に出力する。
【００６６】
例えば、検索対象メモリグループ格納部３２に、格納領域が０〜ｍ−１のｍ個ある場合、信号ＥＮが‘１’となった時は、格納領域０の検索対象メモリグループ内容をｇｒｐ＿ｉｎ１［ｇ−１：０］に出力し、次は格納領域１の検索対象メモリグループ内容をｇｒｐ＿ｉｎ１［ｇ−１：０］に出力する。同様に、（ｍ−１）τ後に格納領域ｍ−１の検索対象メモリグループ内容が、ｇｒｐ＿ｉｎ１［ｇ−１：０］に出力される。
【００６７】
セレクタ部３３は、セレクタ部２３と同一の構成である。また、遅延部３４は遅延部２５と同一であり、遅延部３５は遅延部２６と同一の構成である。また、検索キー生成部３６は検索キー生成部２７と同一の構成であるため、説明を省略する。
【００６８】
遅延部３７も、遅延部２９と同じ意味合いの遅延を発生するが、遅延の発生量は遅延部３４で発生させる遅延量と同一とする。これは信号Ｓ＿ＥＮと信号ｇｒｐの出力開始タイミングを一致させるためである。ここで、遅延部３４出力がそのまま信号ｇｒｐとなって出力されているが、これは、命令入力Ｉｎｓｔｒｕｃｔｉｏｎ内の検索対象メモリグループ、または検索対象メモリグループ格納部３２の出力が、τ毎に直接指定されているためである。すなわち各τ毎の検索結果出力対象に複数のメモリグループを指定することが可能となっている。
【００６９】
また、図５の実施例では、前回の検索結果返却に必要な時刻より短いインターバルで次の検索入力があった場合は、それを受け付けるかどうかといった処理があったが、図７の実施例では、入力時に各τ毎の検索結果出力対象を順次入力する構成としたことから、次の検索を行いたい場合は、隣接するチップが、命令入力の命令コードを検索指示に指定するだけで実現が可能である。
【００７０】
上記２つの実施例以外にも、命令デコード部１１内部に別途検索対象メモリグループテーブルを用意し、命令入力内の検索対象メモリグループ指定部の代わりに、検索対象メモリグループテーブルアドレスの指定部を設ける構成としてもよい。このテーブルには、それぞれ検索対象メモリグループが格納されており、この場合には、図５のセレクタ部２３出力や図７のセレクタ部３３の出力はメモリグループではなく検索対象メモリグループテーブルアドレスとなり、その出力を検索対象メモリグループテーブルの入力として、そのアドレスが格納されている検索対象メモリグループを出力する。これら出力が遅延部２５や３４の入力となることで、同一の機能を実現できる。
【００７１】
図９は、ＣＡＭエントリ部１２の第１実施例のブロック図を示す。ＣＡＭエントリ部１２は信号Ｓ＿ＥＮが‘１’の時、ｇｒｐ［ｇ−１：０］で指定されたメモリグループ番号に一致するエントリに対し、Ｋｅｙ［ｐ−１：０］で指定された検索キーとの比較を行い、一致すればヒット信号ｈｉｔを出力する。
【００７２】
図９において、ｎ個のエントリ４１−１〜４１−ｎが設けられている。エントリ４１−ｉに、ｉ番目のエントリに対する詳細構成を示している。入力される信号Ｓ＿ＥＮ，ｇｒｐ［ｇ−１：０］，Ｋｅｙ［ｐ−１：０］は、全てのエントリ４１−１〜４１−ｎに供給され、検索指示や対象メモリグループや検索キーを全エントリに対して行う指定がなされている。
【００７３】
次に、エントリ４１−ｉの内部構成の説明を行う。メモリグループ格納部（グループ格納部）４２は、各エントリの属するメモリグループが格納される場所であり、ユーザから自由に設定可能とされている。また、設定されたメモリグループの内容を、常に信号ｇｒｐ＿ｏｕｔ信号としてメモリグループ比較部（グループ比較部）４４に供給する。
【００７４】
エントリ格納部４３には入力された検索キーと実際に比較を行う対象であるキーが格納される。このエントリ格納部４３もユーザから自由に設定可能とされている。また、格納されているキーの内容は、常に信号ｋｅｙ＿ｏｕｔとしてエントリ比較部４６に供給する。
【００７５】
メモリグループ比較部４４は、イネーブル信号ＥＮが‘１’である時、信号ｇｒｐ０［ｇ−１：０］と信号ｇｒｐ０［ｇ−１：０］の２入力の各ビットを比較し、１ビットでも双方‘１’となる場合、即ちメモリグループ格納部４２に格納されているメモリグループ指定が、検索対象メモリグループに指定されている場合には、信号ｈｉｔを１τのみ‘１’とする。これは、２入力を各ビット毎にＡＮＤを取り、それら出力全てをＯＲすることで実現できる。
【００７６】
これにより、自エントリの属するメモリグループが検索対象メモリグループに入っている場合のみ、信号ｈｉｔが‘１’となる。
【００７７】
遅延部４５は、メモリグループ比較部４４の処理に必要な時間だけ遅延を発生させる。これは、メモリグループ比較部４４の信号ｈｉｔの出力タイミングと、信号Ｋｅｙ［ｐ−１：０］の出力タイミングを一致させるためである。
【００７８】
ＭＡＳＫレジスタ番号格納部４７には、自エントリ４１−ｉが使用するマスクレジスタのレジスタ番号が格納されており、ユーザから自由に設定可能とされている。また、ＭＡＳＫレジスタテーブル４８には、レジスタ番号に対応して検索時に使用するマスク情報が格納されており、ユーザから自由に設定可能とされている。
【００７９】
ＭＡＳＫレジスタ番号格納部４７では、設定されたレジスタ番号に応じたマスク情報を４８から取り出しエントリ比較部４６に供給する。エントリ比較部４６では、イネーブル信号ＥＮが‘１’である時、入力キーＫｅｙ０［ｐ−１：０］と、エントリ格納部４３の格納キーＫｅｙ１［ｐ−１：０］を比較し、全ビット一致した場合、信号ｈｉｔを１τの間‘１’とする。
【００８０】
ただし、ＭＡＳＫレジスタ番号格納部４７からのＭＡＳＫ情報（ＭＡＳＫ［ｐ−１：０］）を読み込み、マスク指定がなされているビット（例えば、‘１’をマスク指定とする）は検索対象から外す。例えば、ＭＡＳＫ［ａ］が‘１’となっていた場合は、Ｋｅｙ０［ａ］とＫｅｙ１［ａ］の比較を行わない、もしくは、比較の一致／不一致に拘わらず、ビットａに対する比較結果は一致とする。
【００８１】
なお、本実施例においては、各エントリにマスク情報の入ったレジスタ番号を格納する形態を示しているが、各エントリ毎にマスク情報そのものを格納する領域を設け、その情報をそのままエントリ比較部４６に出力するといった形態であってもよい。
【００８２】
ここで、遅延部４５の出力する信号ｈｉｔがエントリ比較部４６のＥＮ入力になっていることから、検索指示を行った時、検索対象メモリグループに属していないメモリグループのエントリは、エントリ比較部４６のＥＮ入力がイネーブルとならない。すなわち、検索対象メモリグループに属していないエントリは、検索キーの比較処理が行われない。これにより、ｇｒｐ［ｇ−１：０］で指定された検索対象メモリグループに属するエントリのみを比較対象とすることが可能となる。
【００８３】
図１０は、ＣＡＭエントリ部１２の第２実施例のブロック図を示す。この実施例では、ｇ・ｍ個のエントリをｇ個のメモリグループエントリ群に分割する。そして、Ｓ＿ＥＮ信号と、信号ｇｒｐの各ビット（それぞれ１つのメモリグループに対応している）をそれぞれＡＮＤし、その出力を対応するメモリグループエントリ群を構成する各エントリのイネーブル信号に入力することで、検索対象メモリグループに属するエントリ群のイネーブル信号のみ‘１’となる。すなわち、指定した検索対象メモリグループのみを検索対象とすることができる。
【００８４】
各エントリの内部構成は、図９のエントリ格納部４３とエントリ比較部４６のみで構成されているイメージである。これは、検索対象の指定は既に出来ているので、検索キーの比較のみを行うからであり、従来のＣＡＭで適用されている部分と同じ構成である。
【００８５】
次に、本発明の連想メモリ装置を用いた中継装置について説明する。
【００８６】
まず、比較対照としての従来の中継装置について、図１１を用いて説明する。この中継装置では、宛先／フロー種別／フィルタリング処理の３つを検索を行う対象としている。まず、ポートから入って来た各フレームに対し、ヘッダ解析部５１においてヘッダ情報を抽出し、このヘッダ情報をフレームに付加する。
【００８７】
次の宛先決定部５２では、ヘッダ情報の内容を付属するＣＡＭ５３に渡し、宛先情報を獲得し、フレームに付加する。次のフロー種別決定部５４では、ヘッダ情報の内容を付属するＣＡＭ５５に渡し、フロー種別を獲得し、フレームに付加する。次のフィルタリング処理部５６では、同様にヘッダ情報をＣＡＭ５７に渡し、フィルタリング情報を獲得する。フィルタリング処理部５６では、この結果フィルタリング対象であった場合はフレームを廃棄し、後段に中継させない処理を併せて行う。
【００８８】
さらにその後段にあるキュー制御部５８では、フレームに付加されたフロー種別に示された優先度情報により優先制御を行う。また、装置内スイッチ５９は、フレームに付加された宛先情報に示された宛先より、該当する宛先ヘフレームをスイッチングする。また、スイッチ後の内部ヘッダ取り外し部６０において、付加されたヘッダ情報／宛先情報／フロー種別を取り外し、ポートを経由して送信する。
【００８９】
従来の中継装置は、宛先データ格納用ＣＡＭ５３、フロー種別格納用ＣＡＭ５５、フィルタリング情報格納用ＣＡＭ５７を実装し、それぞれを制御する宛先決定処理部５２、フロー種別決定処理部５４、フィルタリング処理部５６の制御チップも実装する必要があるため、実装面積が大きくなってしまう。また、これらの制御チップを１つにまとめた場合でも、それぞれのＣＡＭとのインタフェースは別々に持たなければならないため、ピン数が増大することから、コスト面でも不利となる上、それぞれの検索処理は内部で別々に行うので、チップ面積が減ることはない。
【００９０】
これに対し、本発明の連想メモリ装置を用いた中継装置は図１２に示す構成となる。この中継装置も、宛先／フロー種別／フィルタリング処理の３つを検索を行う対象としている。ポートから入って来た各フレームに対し、ヘッダ解析部５１においてヘッダ情報を抽出し、このヘッダ情報をフレームに付加する。
【００９１】
検索処理部６２では、ヘッダ情報の内容を付属するＣＡＭ６３に渡し、宛先情報とフロー種別とフィルタリング情報を獲得する。検索処理部６２では、この結果フィルタリング対象であった場合はフレームを廃棄し、後段に中継させない処理を併せて行う。
【００９２】
さらにその後段にあるキュー制御部５８では、フレームに付加されたフロー種別に示された優先度情報により優先制御を行う。また、装置内スイッチ５９は、フレームに付加された宛先情報に示された宛先より、該当する宛先ヘフレームをスイッチングする。また、スイッチ後の内部ヘッダ取り外し部６０において、付加されたヘッダ情報／宛先情報／フロー種別を取り外し、ポートを経由して送信する。
【００９３】
このように、１つのＣＡＭ６３に対する１回の検索入力で複数の検索結果を獲得できるため、実装面積やコストの面で有利となる。また、物理的に検索数分のＣＡＭを用意する実現方法の場合では、機能拡張を行う場合に装置自体の構成を作り直す必要があり、機能拡張に柔軟に対応できない。これに対して本発明の連想メモリ装置では、検索結果を返す回数や、それぞれの検索結果返却対象となるメモリグループを自由に指定可能であるため、既にある装置自体の構成はそのままでよい。
【００９４】
このように、本発明の連想メモリ装置は、単一の検索キーで複数の結果が欲しい場合、例えばネットワークの中継装置で、あるフレームから抜き出した各種ヘッダ情報を検索キーとして、宛先検索、フロー検索、フィルタリング検索といった３種類の検索を行いたい場合でも、一度、検索入力を行えば全ての検索結果を返却することが可能であり、非常に長い検索キーを時間をかけて何度も入力する必要がなくなる。
【００９５】
これにより、１フレームに対する検索時間の短縮が図られ、超高速回線への適用もｌつの連想メモリ装置で対応が可能となる。また、検索結果を返す個数の設定も各検索毎に自由に行えるので、さまざまな機能拡張に対しても柔軟に対応可能である。
【００９６】
（付記１）　論理的に複数のグループに分割されたエントリを持つメモリを有し、前記メモリに格納されているデータをキーとして入力し、前記キーが格納されているアドレスを返却する連想メモリ装置であって、
１回で前記複数のグループの一または複数を検索対象として指定する検索命令をデコードし、検索対象となった各グループを指定するグループ信号とイネーブル信号を発生する命令デコード部を有し、
前記グループ信号とイネーブル信号及び前記キーを入力して、前記グループ信号で指定された各グループを検索し、検索結果を順次返却することを特徴とする連想メモリ装置。
【００９７】
（付記２）　付記１記載の連想メモリ装置において、
前記検索入力は、検索対象の一または複数のグループを指定する検索対象グループ指定部を有することを特徴とする連想メモリ装置。
【００９８】
（付記３）　付記１または２記載の連想メモリ装置において、
検索対象とする一または複数のグループを予め設定される検索対象グループ格納部を有することを特徴とする連想メモリ装置。
【００９９】
（付記４）　付記３記載の連想メモリ装置において、
前記検索対象グループ格納部に検索対象とするグループが予め設定されていても、前記検索入力の検索対象グループ指定部で検索対象のグループが指定されると、前記検索入力の検索対象グループを検索対象とすることを特徴とする連想メモリ装置。
【０１００】
（付記５）　付記２記載の連想メモリ装置において、
前記検索入力は、複数回続けて行われ、検索対象とするグループの検索結果の返却順序を指定することを特徴とする連想メモリ装置。
【０１０１】
（付記６）　付記３記載の連想メモリ装置において、
前記検索対象グループ格納部は、検索対象とするグループの検索結果の返却順序を予め設定されることを特徴とする連想メモリ装置。
【０１０２】
（付記７）　付記６記載の連想メモリ装置において、
前記検索対象グループ格納部に検索対象とするグループの検索結果の返却順序が予め設定されていても、前記検索入力で検索対象のグループの検索結果の返却順序が指定されると、前記検索入力の検索対象グループの検索結果の返却順序で返却を検索対象とすることを特徴とする連想メモリ装置。
【０１０３】
（付記８）　付記１記載の連想メモリ装置において、
前記エントリは、自エントリが属するグループを格納するグループ格納部を有することを特徴とする連想メモリ装置。
【０１０４】
（付記９）　付記１記載の連想メモリ装置において、
前記エントリは、自エントリのキーを格納するエントリ格納部を有することを特徴とする連想メモリ装置。
【０１０５】
（付記１０）　付記１乃至９のいずれかに記載の連想メモリ装置を用いて構成したことを特徴とする中継装置。
【０１０６】
（付記１１）　付記１記載の連想メモリ装置において、
前記検索対象となった各グループに対する検索結果の全てを返却するのに必要な期間は、次の検索指示の受け付けを禁止する検索開始指定手段を
有することを特徴とする連想メモリ装置。
【０１０７】
（付記１２）　付記１１記載の連想メモリ装置において、
前記検索開始トリガ指定部は、検索対象となった各グループに対する検索結果の全てを返却するのに必要な期間内に、次の検索指示を受け付けて割り込ませる設定を行う検索入力割り込み指定手段を
有することを特徴とする連想メモリ装置。
【０１０８】
【発明の効果】
上述の如く、請求項１に記載の発明は、１回で前記複数のグループの一または複数を検索対象として指定する検索命令をデコードし、検索対象となった各グループを指定するグループ信号とイネーブル信号を発生する命令デコード部を有し、グループ信号とイネーブル信号及びキーを入力して、グループ信号で指定された各グループを検索し、検索結果を順次返却することにより、１回の検索命令入力で、複数のグループの検索結果を順次返却することができ、高速検索が可能となる。
【０１０９】
請求項２に記載の発明では、検索入力は、一または複数の検索対象のグループを指定する検索対象グループ指定部を有することにより、各検索入力毎に検索対象を指定することが可能となる。
【０１１０】
請求項３に記載の発明は、検索対象とする一または複数のグループを予め設定される検索対象グループ格納部を有することにより、予め設定されたグループを検索対象として検索を行うことができる。
【０１１１】
請求項４に記載の発明は、検索対象グループ格納部に検索対象とするグループが予め設定されていても、検索入力の検索対象グループ指定部で検索対象のグループが指定されると、検索入力の検索対象グループを検索対象とすることにより、検索入力の検索対象グループを優先させて検索を行うことができる。
【０１１２】
請求項５に記載の発明では、検索入力は、複数回続けて行われ、検索対象とするグループの検索結果の返却順序を指定することにより、グループの検索結果の返却順序を各種指定することができる。
【０１１３】
請求項６に記載の発明では、検索対象グループ格納部は、検索対象とするグループの検索結果の返却順序を予め設定されることにより、グループの検索結果の返却順序を各種指定することができる。
【０１１４】
請求項７に記載の発明では、検索対象グループ格納部に検索対象とするグループの検索結果の返却順序が予め設定されていても、検索入力で検索対象のグループの検索結果の返却順序が指定されると、検索入力の検索対象グループの検索結果の返却順序で返却を検索対象とすることにより、検索入力の検索対象グループの検索結果の返却順序を優先させることができる。
【０１１５】
請求項８に記載の発明では、エントリは、自エントリが属するグループを格納するグループ格納部を有することにより、グループのグループ数や各グループのエントリ数や各エントリの属するグループを自由に変更することができる。
【０１１６】
請求項９に記載の発明では、エントリは、自エントリのキーを格納するエントリ格納部を有することにより、各エントリのキーを自由に変更することができる。
【図面の簡単な説明】
【図１】検索キーを４つに分割した例の信号タイミングチャートである。
【図２】回の検索入力に４τ必要である場合に３回の検索を行った例の信号タイミングチャートである。
【図３】本発明の連想メモリ装置の信号タイミングチャートである。
【図４】本発明の連想メモリ装置の一実施例の全体構成図である。
【図５】命令デコード部の第１実施例のブロック図である。
【図６】命令入力の一実施例を示す図である。
【図７】命令デコード部の第２実施例のブロック図である。
【図８】命令入力の一実施例の信号タイミングチャートである。
【図９】ＣＡＭエントリ部の第１実施例のブロック図である。
【図１０】ＣＡＭエントリ部の第２実施例のブロック図である。
【図１１】従来の中継装置の一例のブロック図である。
【図１２】本発明の連想メモリ装置を用いた中継装置の一実施例のブロック図である。
【符号の説明】
１１　命令デコード部
１２　ＣＡＭエントリ部
１３　結果選択部
２１，３１　命令識別部
２２，３２　検索対象メモリグループ格納部
２３，３３　セレクタ部
２４　検索開始トリガ指定部
２５，２６，２９，３４，３５，３７　遅延部
２７，３６　検索キー生成部
２８　グループ選択部
４１−１〜４１−ｎ　エントリ
４２　メモリグループ格納部
４３　エントリ格納部
４４　メモリグループ比較部
４５　遅延部
４６　エントリ比較部
４７　ＭＡＳＫレジスタ番号格納部
４８　ＭＡＳＫレジスタテーブル
５１　ヘッダ解析部
５２　宛先決定部
５３，６３，５５，５７　ＣＡＭ
５４　フロー種別決定部
５６　フィルタリング処理部
５８　キュー制御部
５９　装置内スイッチ
６０　内部ヘッダ取り外し部
６２　検索処理部
【図１】
2004046988.tif 000003
【図２】
2004046988.tif 000004
【図３】
2004046988.tif 000005
【図４】
2004046988.tif 000006
【図５】
2004046988.tif 000007
【図６】
2004046988.tif 000008
【図７】
2004046988.tif 000009
【図８】
2004046988.tif 000010
【図９】
2004046988.tif 000011
【図１０】
2004046988.tif 000012
【図１１】
2004046988.tif 000013
【図１２】
2004046988.tif 000014