(57)【特許請求の範囲】
【請求項１】
特定の処理対象データに対して、重複せず且つマスクされない２以上の所定数のフラグパターンを１フラグパターンずつ組み合わせ、同一の前記特定の処理対象データに対して異なるフラグパターンが組み合わされた前記所定数のビットパターンを生成する生成手段と、
各々異なる１の前記ビットパターンを含む前記所定数のコマンドを連想メモリに出力するコマンド出力手段と、
を有する連想メモリ制御装置。
【請求項２】
前記特定の処理対象データの処理要求を受信した場合に、前記処理要求に含まれる所定の情報から前記所定数を決定する手段と、
をさらに有する請求項１記載の連想メモリ制御装置。
【請求項３】
前記特定の処理対象データの登録要求を受信した場合に、前記所定数のビットパターンのうちの１ビットパターンを前記登録要求で指定された連想メモリ内の領域に登録し、残りのビットパターンを前記登録要求の送信元が指定することのない連想メモリ内の領域に登録するよう、前記コマンド出力手段に指示する手段と、
をさらに有する請求項１記載の連想メモリ制御装置。
【請求項４】
前記所定数の検索コマンドに対する前記所定数の検索結果を前記連想メモリから受信した場合、前記所定数の検索結果が全て単一の一致又は全て不一致という条件を満たしているか判断し、前記条件が満たされていれば一致応答又は不一致応答を前記特定の処理対象データの検索要求の送信元に返信し、前記条件が満たされていなければ異常応答を前記送信元に返信する結果判定手段と、
をさらに有する請求項１記載の連想メモリ制御装置。
【請求項５】
特定の処理対象データに対して、重複せず且つマスクされない２以上の所定数のフラグパターンを１フラグパターンずつ組み合わせ、同一の前記特定の処理対象データに対して異なるフラグパターンが組み合わされた前記所定数のビットパターンを生成するステップと、
各々異なる１の前記ビットパターンを含む前記所定数のコマンドを連想メモリに出力するステップと、
を含む連想メモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連想メモリ（ＣＡＭ：Contents Addressable Memory）に関し、より詳しくは連想メモリにおける処理の信頼性を確保するための連想メモリを制御する技術に関する。
【背景技術】
【０００２】
エントリデータ領域のビット破壊やソフトエラー等の要因により、ＣＡＭ内のエントリデータに誤りが生じた場合、本来一致するべきでないエントリデータが一致したり、複数のエントリデータが一致するという問題が発生する。
【０００３】
このような問題を防止するために、エントリデータにパリティやＥＣＣ等の検査ビットを付与してＣＡＭのエントリデータ領域に格納し、検索時に検査データに検査ビットを付与し、検査ビットも検索対象として検索を実施するというような手段が考えられる。
【０００４】
例えば、特開２００２−２７９７８５号公報には、エントリデータにパリティを付与してＣＡＭのエントリデータ領域に格納し、検索時に検索データにパリティを付与し、パリティも検索対象として検索する技術が開示されている。
【０００５】
ところで、ＣＡＭには、エントリデータ及び検索データの各ビットの有効／無効を指定するためのマスク機能がある。マスク機能にはエントリデータ登録時にエントリデータの各ビットの有効／無効を指定するためのエントリマスク、検索時に検索データの有効／無効を指定するための検索マスクの２通りがあり、検索時、検索マスクでマスクされていない検索データのビットと、エントリマスクでマスクされていない各エントリデータのビットとを比較し、一致したエントリデータのアドレスを出力する。図２３にエントリ幅が６４ビットの場合のマスクつき検索の例を示す。本例では、マスクビットが１でエントリデータのビットが有効、０でエントリデータのビットが無効になるものとする。エントリマスクのビット５３〜４６、２０が０（無効）であり、検索マスクのビット４０〜３９、１１〜４が０（無効）である。従ってＣＡＭは、検索データとエントリデータのビット６３〜５４、４５〜４１、３８〜２１、１９〜１２、３〜０が一致することで、一致応答と一致アドレスを出力する。
【０００６】
また、図２３の例に対して８ビットにつき１ビットのパリティビットを付与した例を図２４に示す。エントリデータのビット６３〜５６に関連付けられたパリティビットをＰ７、ビット５５〜４８に関連付けられたパリティビットをＰ６、ビット４７〜４０に関連付けられたパリティビットをＰ５、ビット３９〜３２に関連付けられたパリティビットをＰ４、ビット３１〜２４に関連付けられたパリティビットをＰ３、ビット２３〜１６に関連付けられたパリティビットをＰ２、ビット１５〜８に関連付けられたパリティビットをＰ１、ビット７〜０に関連付けられたパリティビットをＰ０とする。エントリデータ登録時、エントリデータのビット５３〜４６及びビット２０がマスクされているため、関連するパリティビットＰ６〜Ｐ５及びＰ２もマスクして登録する必要がある。同様に検索データにも８ビット毎に関連付けられたパリティビットをＰ７〜Ｐ０を付与する。検索時、検索データのビット４０〜３９、及びビット１１〜４がマスクされているため、関連するパリティビットＰ５〜Ｐ４及びＰ１〜０もマスクして検索を実行する必要がある。その結果、検索時に比較しているパリティビットはＰ７及びＰ３の２ビットのみになる。
【０００７】
さらに、例えば、特開２００４−３６２３１５号公報には、エントリデータにＥＣＣを付与する技術が開示されている。但し、エントリデータが１ビットでもマスクされるとＥＣＣの演算が不可能となるため、ＥＣＣの全ビットをマスクして登録する必要がある。同様に検査データが１ビットでもマスクされるとＥＣＣの演算が不可能となるため、ＥＣＣの全ビットをマスクして検索する必要がある。また、この公報には、ＣＡＭ内のエントリデータを一旦読み出し、ＥＣＣに基づいて誤り訂正を行う技術が開示されている。
【特許文献１】特開２００２−２７９７８５号公報
【特許文献２】特開２００４−３６２３１５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上で述べたように、ＣＡＭのマスク機能を使用すると、検査ビットの１部又は全部が無効になるため、ビット破壊やソフトエラー等の要因でエントリデータに誤りが生じた場合に、本来一致するべきでないエントリデータが一致したり、複数のエントリデータが一致するおそれがあり、検索結果の信頼性が十分に向上しているとはいえない。
【０００９】
従って、本発明の目的は、ＣＡＭのマスク機能を使用する場合でも、ＣＡＭ内のエントリデータの信頼性を向上させるための技術を提供することである。
【００１０】
また、本発明の他の目的は、ＣＡＭ内のエントリデータの信頼性を高め、ＣＡＭに対する検索結果の信頼性を向上させるための技術を提供することである。
【００１１】
さらに、本発明の他の目的は、ＣＡＭ内の未使用領域を有効活用し、ＣＡＭ内のエントリデータの信頼性を向上させる技術を提供することである。
【課題を解決するための手段】
【００１２】
本発明に係る連想メモリ制御装置は、特定の処理対象データに対して、重複せず且つマスクされない２以上の所定数のフラグパターンを１フラグパターンずつ組み合わせ、同一の特定の処理対象データに対して異なるフラグパターンが組み合わされた所定数のビットパターンを生成する生成手段と、各々異なる１の上記ビットパターンを含む所定数のコマンドを連想メモリに出力するコマンド出力手段とを有する。
【００１３】
このようにすれば、例えば登録時には同一の特定の処理対象データが互いに異なるビットパターンとして連想メモリ内の複数領域に登録され、また検索時には複数箇所に登録された同一の特定の処理対象データをそれぞれ異なるビットパターンとして検索することができるため、ＣＡＭ内のエントリデータの信頼性が向上しており、さらに検索箇所が増えることで検索結果の信頼性も向上している。
【００１４】
また、本発明に係る連想メモリ制御装置は、上記特定の処理対象データの処理要求を受信した場合に、処理要求に含まれる所定の情報から所定数を決定する手段をさらに有するようにしてもよい。
【００１５】
上記所定の情報は、例えば、アプリケーション種別、検索マスク、検索重要度、要求検索性能等である。このようにすれば、例えば上記所定の情報が検索重要度である場合、重要度が高い検索については、検索回数を多くすることで検索箇所が増加して検索結果の信頼性が向上する。
【００１６】
さらに、本発明に係る連想メモリ制御装置は、上記特定の処理対象データの登録要求を受信した場合に、所定数のビットパターンのうちの１ビットパターンを登録要求で指定された連想メモリ内の領域に登録し、残りのビットパターンを登録要求の送信元が指定することのない連想メモリ内の領域に登録するよう、上記コマンド出力手段に指示する手段をさらに有するようにしてもよい。このようにすれば、登録要求の送信元は従来のままで、ＣＡＭ内の未使用領域を活用し、ＣＡＭ内のエントリデータの信頼性を向上させることができる。
【００１７】
さらに、本発明に係る連想メモリ制御装置は、所定数の検索コマンドに対する所定数の検索結果を連想メモリから受信した場合、所定数の検索結果が全て単一の一致又は全て不一致という条件を満たしているか判断し、条件が満たされていれば一致応答又は不一致応答を上記特定の処理対象データの検索要求の送信元に返信し、条件が満たされていなければ異常応答を上記送信元に返信する結果判定手段をさらに有するようにしてもよい。このようにすれば、例えばソフトエラーにより、本来一致すべき複数のエントリデータの１つに誤りが生じた場合、複数の検索結果うちの１つが不一致となり、エントリデータに異常が生じていることを検出することができる。
【００１８】
なお、本発明に係る連想メモリ制御装置をコンピュータに実行させるためのプログラムを作成することができ、このプログラムは、例えばフレキシブルディスク、ＣＤ−ＲＯＭ、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
【発明の効果】
【００１９】
本発明によれば、ＣＡＭのマスク機能を使用する場合でも、ＣＡＭ内のエントリデータの信頼性を向上することができるようになる。
【００２０】
また本発明の他の側面によれば、ＣＡＭ内のエントリデータの信頼性を高めることができ、ＣＡＭに対する検索結果の信頼性を向上することができるようになる。
【００２１】
本発明のさらに他の側面によれば、ＣＡＭ内の未使用領域を有効活用でき、ＣＡＭ内のエントリデータの信頼性を向上することができるようになる。
【発明を実施するための最良の形態】
【００２２】
図１に本発明の一実施の形態に係るデータ検索装置の機能ブロック図を示す。本実施の形態のデータ検索装置は、処理要求を発行するシステム管理部１とＣＡＭ３を制御するＣＡＭ制御部２とを有するＣＡＭ制御装置と、従来通りのＣＡＭの機能を備えたＣＡＭ３とを有する。
【００２３】
さらに、ＣＡＭ制御部２は、システム管理部１からの登録／検索要求１０１（以下、登録要求１０１０、検索要求１０１１とする）を受信してＣＡＭ３にライト／サーチコマンドセット１０２（以下、ライトコマンドセット１０２０、サーチコマンドセット１０２１とする）を発行するコマンド発行部２１と、システム管理部１からの登録／検索要求１０１を受信してコマンドの回数を決定する回数決定部２２と、ＣＡＭ３からのサーチ応答１０３を受信してシステム管理部１に検索応答１０４を発行する判定部２３とを有する。コマンド発行部２１は、システム管理部１とＣＡＭ３とに接続されている。また、回数決定部２２は、システム管理部１とコマンド発行部２１と判定部２３とに接続されている。また、判定部２３は、システム管理部１とＣＡＭ３とに接続されている。
【００２４】
次に、図２乃至図９を用いて図１に示したデータ検索装置の登録時の処理について説明する。まず、システム管理部１は、登録要求１０１０をＣＡＭ制御部２に出力する。図２に、登録要求１０１０のコマンド・フォーマットの一例を示す。図２の例では、登録を示す処理種別１０１ａ、アプリケーション種別１０１ｂ、エントリデータ１０１ｃ、エントリマスク１０１ｄが含まれている。本実施の形態では、ＣＡＭ３内のどの領域に登録するかを指定するアドレスを処理種別１０１ａに含んでいるものとする。
【００２５】
登録要求１０１０を受信した回数決定部２２は、登録要求１０１０に含まれる情報と、図３で示すようなテーブルとを用いてエントリ登録数を決定する。登録要求１０１０に含まれる情報とは、例えば、アプリケーション種別１０１ｂである。また、図３は、エントリ登録数を決定するためのテーブルの一例であり、アプリケーション種別の列とエントリ登録数の列とから構成され、内部に予め用意されているものとする。回数決定部２２は、アプリケーション種別１０１ｂと図３のテーブルとからエントリ登録数を決定し、コマンド発行部２１にエントリ登録数を通知する。
【００２６】
そして、コマンド発行部２１は、図４に示すような処理を行う。まず、コマンド発行部２１は、システム管理部１から登録要求１０１０を、回数決定部２２からエントリ登録数Ｎを受信すると、コマンド発行回数を示す変数ｘを１で初期化し、残コマンド発行回数を示す変数ｙをエントリ登録数Ｎで初期化する（ステップＳ１及びＳ３）。
【００２７】
次に、コマンド発行部２１は、変数ｘの値（すなわちコマンド発行回数）から有効フラグパターンを生成する（ステップＳ５）。図５及び図６に有効フラグパターンの生成例を示す。図５は、変数ｘの８ビットのバイナリ表現を有効フラグパターンとする例である。また、図６は、アプリケーション種別と変数ｘの値とを組み合わせて有効フラグパターンを生成する例を示しており、上位４ビットがアプリケーション種別、下位４ビットが変数ｘの値である。本実施の形態では、コマンド発行回数から有効フラグパターンを生成するので、重複しないＮ個（エントリ登録数）の有効フラグパターンを生成することができる。なお、他の方法で有効フラグパターンを生成する場合、各有効フラグパターンが重複しないように生成する必要がある。
【００２８】
次に、コマンド発行部２１は、ＣＡＭ３内の登録先アドレスを決定する（ステップＳ７）。本実施の形態では、１回目のコマンド発行時（ｘ＝１の場合）は登録要求１０１０の処理種別１０１ａに含まれるアドレスを登録先アドレスとする。また、２回目以降のコマンド発行時（ｘ＞１の場合）はシステム管理部１が指定することのない領域を示すアドレスを登録先アドレスとする。システム管理部１が指定することのない領域とは、システム管理部１がアクセスできない（すなわち見えない）領域の場合もあれば、システム管理部１がアクセスすることのない（すなわち、見えてはいるが使用しない）領域の場合もある。
【００２９】
また、コマンド発行部２１は、１回目のコマンド発行時の登録先アドレス（すなわち、処理種別１０１ａに含まれるアドレス）と関連付けるように、２回目以降のコマンド発行時の登録先アドレスを決定する。例えば、システム管理部１がアドレス０〜９９を指定する可能性があり、アドレス０が処理種別１０１ａに含まれていた場合、このアドレス０に１００を足したアドレス１００を２回目のコマンド発行時の登録先アドレスとする。また、３回目であれば、アドレス０に２００を足したアドレス２００を登録先アドレスとする。
【００３０】
このように関連付けることで、別の登録要求１０１０でアドレス１が指定された場合にはアドレス１とアドレス１０１とが登録先アドレスとなり、アドレス０とアドレス１００とは別の領域に登録することができる。
【００３１】
次に、コマンド発行部２１は、ライトコマンドの生成及び発行を行う（ステップＳ９）。図７に、エントリ登録数が２の場合のライトコマンドセット１０２０のコマンド・フォーマットの一例を示す。図７では、上段が１回目（ｘ＝１の場合）のライトコマンドであり、下段が２回目（ｘ＝２の場合）のライトコマンドである。
【００３２】
１回目（ｘ＝１の場合）のライトコマンドには、ライトコマンドＡ１０２ａ、ライトデータＡ１０２ｃ、ライトマスク１０２ｅが含まれる。本実施の形態では、ライトコマンドＡ１０２ａに、システム管理部１が指定した領域を示すアドレス（アドレス０とする）が含まれている。
【００３３】
また、ライトデータＡ１０２ｃには、エントリデータ１０１ｃと有効フラグパターンＡとが含まれている。ライトデータＡ１０２ｃをバイナリ表現した一例を図９（ａ）の上段に示す。６３〜０の６４ビットがエントリデータ１０１ｃであり、右側の８ビットが有効フラグパターンＡである。
【００３４】
さらに、ライトマスク１０２ｅには、エントリマスク１０１ｄと、有効フラグパターンの全ビットが有効になるように、例えば、全ビットが１で構成される有効マスクとが含まれる。ライトマスク１０２ｅをバイナリ表現した一例を図９（ａ）の下段に示す。６３〜０の６４ビットがエントリマスク１０１ｄであり、右側の８ビットが有効マスク（ａｌｌ１）である。
【００３５】
２回目（ｘ＝２の場合）のライトコマンドには、ライトコマンドＢ１０２ｂ、ライトデータＢ１０２ｄ、ライトマスク１０２ｅが含まれる。本実施の形態では、ライトコマンドＢ１０２ｂに、システム管理部１が指定することのない領域を示すアドレス（アドレス１００とする）が含まれている。ライトマスク１０２ｅは、１回目と同様となる。
【００３６】
また、ライトデータＢ１０２ｄには、エントリデータ１０１ｃと有効フラグパターンＢとが含まれている。ライトデータＢ１０２ｄをバイナリ表現した一例を図９（ｂ）の上段に示す。６３〜０の６４ビットがエントリデータ１０１ｃであり、右側の８ビットが有効フラグパターンＢである。図９（ｂ）の下段はライトマスク１０２ｅをバイナリ表現した一例を示しているが、図９（ａ）の下段と同様であるため、説明は省略する。
【００３７】
コマンド発行部２１は、ライトコマンドを１回発行した後、変数ｘを１インクリメント、変数ｙを１デクリメントする（ステップＳ１１）。そして、変数ｙが０になったか判定し、０でない場合は、ステップＳ５の処理に戻る（ステップＳ１３：Ｎｏルート）。変数ｙが０になった場合、エントリ登録数のライトコマンドを発行したことになる（ステップＳ１３：Ｙｅｓルート）。
【００３８】
ライトコマンドを受信したＣＡＭ３は、ライトコマンドで指定された領域にデータを登録する。ＣＡＭ３は、汎用的なＣＡＭを想定しているため、ＣＡＭの基本的な処理については、ここでは省略する。
【００３９】
図８にＣＡＭ３内に登録されたデータの一例を示す。図８の例では、アドレス０からＮ（Ｎは９９までとする）までをシステム管理部１が指定する領域とし、アドレス１００から１００＋Ｎまでをシステム管理部１が指定することのない領域としている。
【００４０】
また、図８の例では、アドレス０〜Ｎの領域には有効フラグパターンＡが組み合わされたエントリデータ＃０〜Ｎ（すなわち、１回目のライトコマンドの内容）が登録され、アドレス１００〜１００＋Ｎの領域には有効フラグパターンＢが組み合わされたエントリデータ＃０〜Ｎ（すなわち、２回目のライトコマンドの内容）が登録される。アドレス０〜Ｎと、アドレス０〜Ｎに１００を足したアドレス１００〜１００＋Ｎとが対応しており（例えば、アドレス０とアドレス１００とが対応、アドレス１とアドレス１０１とが対応している）、対応しているアドレスのそれぞれの領域には、同一のエントリデータが含まれている。
【００４１】
図８において図示していないが、例えば、エントリ登録数が３の場合、エントリデータ＃０、有効フラグパターンＣ、エントリマスク＃０、有効マスク（ａｌｌ１）を組み合わせたものがアドレス２００に登録される。アドレス２００〜２００＋Ｎには、有効フラグパターンＣが組み合わされたエントリデータ＃０〜Ｎ（すなわち、３回目のライトコマンドの内容）が登録される。
【００４２】
なお、図９の例では、図６で示したアプリケーション種別とコマンド発行回数とから有効フラグパターンを生成している。また、マスクビットが１の場合に有効、マスクビットが０の場合に無効になるものとし、マスクビットで無効になるビットを網掛けで図示している。
【００４３】
また、回数決定部２２は、回数を決定する際にＣＡＭの残容量からエントリ登録数を決定してもよい。
【００４４】
次に、図１０乃至図１８を用いて図１に示したデータ検索装置の検索時の処理について説明する。まず、システム管理部１は、検索要求１０１１をＣＡＭ制御部２に出力する。図１０に、検索要求１０１１のコマンド・フォーマットの一例を示す。図１０の例では、検索を示す処理種別１０１ｅ、アプリケーション種別１０１ｂ、検索データ１０１ｆ、検索マスク１０１ｇが含まれている。
【００４５】
検索要求１０１１を受信した回数決定部２２は、検索要求１０１１に含まれる情報と、図１１に示すようなテーブルとを用いて検索回数を決定する。検索要求１０１１に含まれる情報とは、例えば、アプリケーション種別１０１ｂである。また、図１１は、検索回数を決定するためのテーブルの一例であり、アプリケーション種別の列と、エントリ登録数の列と、検索回数の列とから構成され、内部に予め用意されているものとする。さらに、検索回数の列は、無効ビット数で段階分けされている。図１１では、検索回数の列は、無効ビット数が６３〜４８ビット、４７〜３２ビット、３１〜１６ビット、１５〜０ビットの４段階に分けられている。
【００４６】
無効ビット数とは、検索データ１０１ｆを検索マスク１０１ｇでマスクしたときに、無効と見なされ、検索対象から外されるビットの個数である。図１２（ａ）のビット列を用いて無効ビット数について説明する。まず、図１２（ａ）の上段の６３〜０の６４ビットは検索データ１０１ｆを示し、下段の６３〜０の６４ビットは検索マスク１０１ｇを示している。また、図１２（ａ）では、検索マスクのビットが１の場合に、対応する検索データのビットが有効、検索マスクのビットが０の場合に、対応する検索データのビットが無効になるものとし、無効となるビットを網掛けで図示している。図１２（ａ）では、検索マスクの中に０を示すビットが１０ビットあり、無効ビット数も１０ビットとなる。よって、図１１で示したテーブルの無効ビット数が１５〜０ビットの列と、アプリケーション種別１０１ｂとから検索回数を決定する。
【００４７】
なお、図１１のテーブルでは、無効ビット数が多くなるにつれて検索回数も多くなっている。これは、無効ビット数が多い場合は、無効ビット数が少ない場合に比べ、有効ビット（すなわち、検索対象となるビット）のビット数が少なくなり、１の検索結果の信頼性が低下するのに対し、検索回数を増やすことで検索結果の信頼性を確保するためである。
【００４８】
検索回数決定後、回数決定部２２はコマンド発行部２１と判定部２３とに検索回数を通知する。なお、検索回数はエントリ登録数以下になるものとし、検索回数が登録数を超えた場合は、エントリ登録数を検索回数として通知する。
【００４９】
そして、コマンド発行部２１は、図１３に示すような処理を行う。まず、コマンド発行部２１は、システム管理部１から検索要求１０１１を、回数決定部２２から検索回数Ｎを受信すると、コマンド発行回数を示す変数ｘを１で初期化し、残コマンド発行回数を示す変数ｙを検索回数Ｎで初期化する（ステップＳ２１及びＳ２３）。
【００５０】
次に、コマンド発行部２１は、変数ｘの値（すなわちコマンド発行回数）から有効フラグパターンを生成する（ステップＳ２５）。ここでは、登録時（図４のステップＳ５）と同一の方法で有効フラグパターンを生成する。
【００５１】
次に、コマンド発行部２１は、サーチコマンドの生成及び発行を行う（ステップ２７）。図１４に、検索回数が２の場合のサーチコマンドセット１０２１のコマンド・フォーマットの一例を示す。図１４では、上段が１回目（ｘ＝１の場合）のサーチコマンドであり、下段が２回目（ｘ＝２の場合）のサーチコマンドである。
【００５２】
１回目（ｘ＝１の場合）のサーチコマンドには、サーチコマンド１０２ｆ、サーチデータＡ１０２ｇ、サーチマスク１０２ｉが含まれている。
【００５３】
また、サーチデータＡ１０２ｇには、検索データ１０１ｆと有効フラグパターンＡとが含まれている。サーチデータＡ１０２ｇをバイナリ表現した一例を図１２（ａ）の上段に示す。６３〜０の６４ビットは上で述べたように検索データ１０１ｆであり、右側の８ビットが有効フラグパターンＡである。なお、有効フラグパターンＡは登録時と同一の方法で生成されるため、図９（ａ）の登録時の有効フラグパターンＡと等しい。
【００５４】
さらに、サーチマスク１０２ｉには、検索マスク１０１ｇと、有効フラグパターンの全ビットが有効になるように、例えば、全ビットが１で構成される有効マスクとが含まれる。サーチマスク１０２ｉをバイナリ表現した一例を図１２（ａ）の下段に示す。６３〜０の６４ビットは上で述べたように検索マスク１０１ｇであり、右側の８ビットが有効マスク（ａｌｌ１）である。
【００５５】
２回目（ｘ＝２の場合）のサーチコマンドには、サーチコマンド１０２ｆ、サーチデータＢ１０２ｈ、サーチマスク１０２ｉが含まれている。サーチコマンド１０２ｆ、サーチマスク１０２ｉは１回目のサーチコマンドと同一である。
【００５６】
サーチデータＢ１０２ｈには、検索データ１０１ｆと有効フラグパターンＢとが含まれている。サーチデータＢ１０２ｈをバイナリ表現した一例を図１２（ｂ）の上段に示す。６３〜０の６４ビットは検索データ１０１ｆであり、右側の８ビットが有効フラグパターンＢである。なお、有効フラグパターンＢは登録時と同一の方法で生成されるため、図９（ｂ）の登録時の有効フラグパターンＢと等しい。図１２（ｂ）の下段はサーチマスク１０２ｉをバイナリ表現した一例を示しているが、図１２（ａ）の下段と同一であるため、説明は省略する。
【００５７】
コマンド発行部２１は、サーチコマンドを１回発行した後、変数ｘを１インクリメント、変数ｙを１デクリメントする（ステップＳ２９）。そして、変数ｙが０になったか判定し、０でない場合は、ステップＳ２５の処理に戻る（ステップＳ３１：Ｎｏルート）。変数ｙが０になった場合、検索回数のサーチコマンドを発行したことになる（ステップＳ３１：Ｙｅｓルート）。
【００５８】
サーチコマンドを受信したＣＡＭ３は、ＣＡＭ３内に登録されているデータの中から、サーチコマンドの内容と一致するデータの検索を行い、サーチ応答１０３をＣＡＭ制御部２に出力する。ＣＡＭ３は、汎用的なＣＡＭを想定しているため、検索の基本的な処理については、ここでは省略する。
【００５９】
図１５に、サーチ応答１０３のコマンド・フォーマットの一例を示す。図１５の例では、上段が１回目のサーチコマンドに対する応答であり、下段が２回目のサーチコマンドに対する応答である。１回目のサーチコマンドに対する応答には、サーチ結果Ａ１０３ａと、ヒットアドレスＡ１０３ｃとが含まれている。また、２回目のサーチコマンドに対する応答には、サーチ結果Ｂ１０３ｂと、ヒットアドレスＢ１０３ｄとが含まれている。
【００６０】
また、サーチ結果Ａ１０３ａ及びサーチ結果Ｂ１０３ｂには、サーチコマンドの内容と一致するデータがＣＡＭ３内に１つ存在することを示す「ヒット」、サーチコマンドの内容と一致するデータがＣＡＭ３内に存在しないことを示す「ミス」、サーチコマンドの内容と一致するデータがＣＡＭ３内に複数存在することを示す「マルチヒット」のいずれか１つが含まれる。
【００６１】
また、サーチ結果Ａ１０３ａ、サーチ結果Ｂ１０３ｂが「ヒット」又は「マルチヒット」の場合、サーチ結果Ａ１０３ａ、サーチ結果Ｂ１０３ｂにそれぞれ対応するヒットアドレスＡ１０３ｃ、ヒットアドレスＢ１０３ｄには、一致したデータの登録先アドレスが含まれる。
【００６２】
検索回数とサーチ応答１０３とを受信する判定部２３は、図１６に示すような処理を行う。まず、判定部２３は、回数決定部２２から検索回数Ｎを受信すると、サーチコマンドに対する応答のうち未受信の回数を示す変数ｙを検索回数Ｎで初期化する（ステップＳ４１）。
【００６３】
判定部２３は、ＣＡＭ３からサーチコマンドに対する応答を受信すると、一旦、内部に格納する（ステップＳ４３）。次に、判定部２３は、サーチ結果が「マルチヒット」であるか判定する（ステップＳ４５）。
【００６４】
サーチ結果が「マルチヒット」以外の場合は（ステップＳ４５：Ｎｏルート）、変数ｙを１デクリメントする（ステップＳ４７）。そして、変数ｙが０になったか判定し、０でない場合は、ステップＳ４３の処理に戻る（ステップＳ４９：Ｎｏルート）。変数ｙが０になった場合は（ステップＳ４９：Ｙｅｓルート）、内部に格納してあるＮ個の応答に基づき、検索応答１０４を生成してシステム管理部１に送信する（ステップＳ５１）。ステップＳ５１の詳細については、後で述べる。
【００６５】
また、サーチ結果が「マルチヒット」の場合は（ステップＳ４５：Ｙｅｓルート）、検索結果を異常と判断し、異常を示す検索応答１０４をシステム管理部１に送信する（ステップＳ５１）。なお、図１６では図示していないが、ＣＡＭ３からＮ個の応答を全て受信した後に、検索応答１０４の送信を行ってもよい。
【００６６】
図１７（ａ）乃至（ｄ）、図１８を用いてステップＳ５１の処理について説明する。図１７（ａ）乃至（ｄ）は、内部に格納されているサーチ応答１０３の例を示す。図１７（ａ）乃至（ｄ）では、それぞれ上段が１回目のサーチコマンドに対する応答を示し、下段が２回目のサーチコマンドに対する応答を示す。また、図１８は、システム管理部１に送信する検索応答１０４のコマンド・フォーマットの一例を示す。図１８では、検索結果１０４ａと一致アドレス１０４ｂとが含まれている。
【００６７】
図１７（ａ）の例は、サーチ結果Ａ及びサーチ結果Ｂが「ヒット」、アドレス０及びアドレス１００がヒットアドレスである場合を示す。この例のように、サーチ結果が全て「ヒット」の場合は、検索結果が正常で、検索データ１０１ｆと一致するデータが存在すると判断する。この場合、検索結果１０４ａを「一致」とし、検索応答１０４をシステム管理部１に送信する。また、複数のヒットアドレス（すなわち、アドレス０及びアドレス１００）のうち、登録時にシステム管理部１が指定したアドレスを一致アドレス１０４ｂとしなければならない。本実施の形態では、有効フラグパターンＡを含むデータ（すなわち、１回目に発行するライトコマンド内のデータ）が、システム管理部１の指定する領域に登録され、検索時の有効フラグパターンが、登録時と同一の方法で生成されるため、有効フラグパターンＡを含むサーチコマンド（すなわち、１回目に発行するサーチコマンド）に対する応答のヒットアドレスが一致アドレス１０４ｂとなる。よって、図１７（ａ）の例では、アドレス０を一致アドレス１０４ｂとする。
【００６８】
また、図１７（ｂ）の例は、サーチ結果Ａ及びサーチ結果Ｂが「ミス」である場合を示す。この例のように、サーチ結果が全て「ミス」の場合は、検索結果が正常で、検索データ１０１ｆと一致するデータが存在しないと判断する。この場合、検索結果１０４ａを「不一致」とし、検索応答１０４をシステム管理部１に送信する。
【００６９】
また、図１７（ｃ）の例は、サーチ結果Ａが「ヒット」、サーチ結果Ｂが「ミス」である場合を示す。この例のように、サーチ結果に「ヒット」と「ミス」とが混在する場合は、検索結果を異常と判断する。ＣＡＭ３内が正常であれば、サーチ結果は全て同一（すなわち、全て「ヒット」又は全て「ミス」）になるはずである。よって、サーチ結果に「ヒット」と「ミス」とが混在するというのは、ＣＡＭ３内になんらかの問題（例えば、ビット破壊やソフトエラー等の要因でアドレス０のデータに誤りが生じ、本来であれば一致しないのに一致してしまった等）があることを示す。この場合、検索結果１０４ａを「異常」とし、検索応答１０４をシステム管理部１に送信する。
【００７０】
なお、図１６では図示していないが、受信したサーチ結果が、前回受信したサーチ結果と異なる場合、全ての応答を受信する前に検索結果を異常と判断し、残りの応答を待たずにループから抜け、検索応答１０４を送信してもよい。
【００７１】
また、図１７（ｄ）の例は、サーチ結果Ａが「マルチヒット」の場合を示す。この例のように、サーチ結果の少なくとも１つが「マルチヒット」の場合は、検索結果を異常と判断する。ＣＡＭ３内が正常であれば、１検索データに対して一致するのは１エントリデータのはずである。よって、サーチ結果が「マルチヒット」になるのは、ＣＡＭ３内になんらかの問題（例えば、ビット破壊やソフトエラー等の要因でアドレス１００のデータに誤りが生じ、本来であればアドレス０のデータのみ一致するはずが、アドレス１００のデータも一致してしまった等）があることを示す。この場合、検索結果１０４ａを「異常」とし、検索応答１０４をシステム管理部１に送信する。
【００７２】
また、回数決定部２２は、検索重要度に基づき検索回数を決定する場合もある。例えば、システム管理部１は、図１９で示すような検索要求１０１１を出力する。図１９には、検索を示す処理種別１０１ｅ、アプリケーション種別１０１ｂ、検索データ１０１ｆ、検索マスク１０１ｇ、検索重要度１０１ｈが含まれる。また、検索重要度１０１ｈは、例えば、重要度３、重要度２、重要度１のいずれか１つを示す。
【００７３】
検索重要度を含む検索要求１０１１を受信した回数決定部２２は、アプリケーション種別と検索重要度と図２０で示すようなテーブルとを用いて検索回数を決定する。図２０のテーブルは、アプリケーション種別の列と、エントリ登録数の列と、検索回数の列とから構成され、内部で予め用意されているものとする。さらに、検索回数の列は、検索重要度により段階分けされている。図２０では、重要度３（高）、重要度２（中）、重要度１（低）の３段階に分けられている。
【００７４】
例えば、アプリケーション種別の列により、アプリケーション種別ごとに検索重要度を変化させることができるが、このようにすれば、さらに同一のアプリケーション内において、検索結果の信頼性を重要視する場合は検索回数を増やし、検索結果の信頼性をあまり重要視しない場合は検索回数を減らすことができる。
【００７５】
また、回数決定部２２は、要求検索性能に基づき検索回数を決定する場合もある。例えば、システム管理部１は、図２１で示すような検索要求１０１１を出力する。図２１には、検索を示す処理種別１０１ｅ、アプリケーション種別１０１ｂ、検索データ１０１ｆ、検索マスク１０１ｇ、要求検索性能１０１ｉが含まれる。検索性能は、例えば、検索速度を示し、数値が大きい程、検索性能が高い（すなわち、検索速度が速い）ことを示す。
【００７６】
要求検索性能を含む検索要求１０１１を受信した回数決定部２２は、システム全体の検索性能と要求検索性能とを用いて検索回数を決定する。システム全体の検索性能は、予めシステムによって決められた固定の値とする。システム全体の検索性能をＬ、検索回数をＮ、Ｎ回の検索を実行したときの検索性能をＸとするとそれぞれの関係は、Ｘ＝Ｌ／Ｎで表される。従って、検索回数Ｎが増えると、Ｘの値が小さくなるため、検索性能は低くなる。さらに、要求検索性能をＹとすると、Ｙを上回る検索性能が要求されているので、Ｙ＜Ｘ（＝Ｌ／Ｎ）となり、この式を満たす、Ｎの最大値が検索回数となる。なお、Ｎは、２以上且つエントリ登録数以下の範囲内の値になるものとし、２未満の場合は２、エントリ登録数を超える場合はエントリ登録数をＮの値に再設定する。エントリ登録数は、例えば、図３のテーブルを参照して取得する。
【００７７】
このようにすれば、例えば、検索性能をあまり重要視しない検索については検索回数を増やし、検索性能を重要視する検索については検索回数を減らすことができる。
【００７８】
なお、要求検索性能１０１ｉを、上で述べたような数値ではなく、速度の段階（例えば、低速、中速、高速）を示すようにし、この速度の段階と図２２に示すようなテーブルとから検索回数を決定してもよい。図２２のテーブルは、アプリケーション種別の列と、エントリ登録数の列と、検索回数の列とから構成され、さらに、検索回数の列は、要求検索性能（低速）の列、要求検索性能（中速）の列、要求検索性能（高速）の３段階に分けられている。
【００７９】
以上述べたように、本実施の形態によれば、マスク機能を使用する場合でも、同一のエントリデータが互いに異なるビットパターンとしてＣＡＭ内の複数領域に登録されるので、エントリデータの信頼性が向上し、さらに検索箇所が複数になるので、検索結果の信頼性も向上する。
【００８０】
また、検索結果の信頼性を向上するための方法として、検査ビットを含むエントリデータをマスク機能を使用して検索した後に、一致したエントリデータを一旦読み出し、検査ビットからエントリデータの正常性を確認する方法が考えられるが、検索の実行後にエントリデータの読み出しを行うと、パイプライン処理を停止してしまうＣＡＭがあり、このようなＣＡＭを使用した場合に検索性能が低下するおそれがある。しかしながら、本実施の形態の処理であれば、このようなＣＡＭを使用した場合でも、パイプライン処理を停止することなく、検索結果の信頼性を向上することができる。
【００８１】
以上本発明の一実施の形態について説明したが、本発明はこれに限定されるものではない。例えば、図１に示したブロック図のシステム管理部１とＣＡＭ制御部２の少なくとも１部分をソフトウェアにより実現してもよい。
【００８２】
また、エントリ登録数及び検索回数を決定する際に、必ずアプリケーション種別を用いているが、アプリケーション種別を用いることなく、エントリ登録数及び検索回数を決定してもよい。また、登録時に、図１１、図２０、図２２に示したテーブルのエントリ登録数の列からエントリ登録数を決定してもよい。
【００８３】
また、エントリ登録数及び検索回数は、登録／検索要求に含まれる情報と、図３、図１１、図２０、図２２に示すテーブルとによって変化するが、エントリ登録数及び検索回数を予めシステムで決めておき、常に固定としてもよい。
【００８４】
（付記１）
特定の処理対象データに対して、重複せず且つマスクされない２以上の所定数のフラグパターンを１フラグパターンずつ組み合わせ、同一の前記特定の処理対象データに対して異なるフラグパターンが組み合わされた前記所定数のビットパターンを生成する生成手段と、
各々異なる１の前記ビットパターンを含む前記所定数のコマンドを連想メモリに出力するコマンド出力手段と、
を有する連想メモリ制御装置。
【００８５】
（付記２）
前記特定の処理対象データの処理要求を受信した場合に、前記処理要求に含まれる所定の情報から前記所定数を決定する手段と、
をさらに有する付記１記載の連想メモリ制御装置。
【００８６】
（付記３）
前記特定の処理対象データが、特定のビット列と当該特定のビット列の各ビットを処理対象とするかどうかを指定する処理マスクとから構成され、
前記生成手段が、前記特定の処理対象データと、前記フラグパターンと、前記フラグパターンの全ビットを有効にする有効マスクとを含む、前記所定数のビットパターンを生成する、
ことを特徴とする付記１記載の連想メモリ制御装置。
【００８７】
（付記４）
アプリケーション種別を含む、前記特定の処理対象データの登録要求を受信した場合に、前記アプリケーション種別に基づき前記所定数を決定する手段と、
をさらに有する付記１記載の連想メモリ制御装置。
【００８８】
（付記５）
前記特定の処理対象データの登録要求を受信した場合に、前記所定数のビットパターンのうちの１ビットパターンを前記登録要求で指定された連想メモリ内の領域に登録し、残りのビットパターンを前記登録要求の送信元が指定することのない連想メモリ内の領域に登録するよう、前記コマンド出力手段に指示する手段と、
をさらに有する付記１記載の連想メモリ制御装置。
【００８９】
（付記６）
前記所定数の検索コマンドに対する前記所定数の検索結果を前記連想メモリから受信した場合、前記所定数の検索結果が全て単一の一致又は全て不一致という条件を満たしているか判断し、前記条件が満たされていれば一致応答又は不一致応答を前記特定の処理対象データの検索要求の送信元に返信し、前記条件が満たされていなければ異常応答を前記送信元に返信する結果判定手段と、
をさらに有する付記１記載の連想メモリ制御装置。
【００９０】
（付記７）
アプリケーション種別を含む、前記特定の処理対象データの検索要求を受信した場合に、少なくとも前記アプリケーション種別に基づき前記所定数を決定する手段と、
をさらに有する付記６記載の連想メモリ制御装置。
【００９１】
（付記８）
前記特定の処理対象データの検索要求を受信した場合に、前記特定の処理対象データに含まれ且つ前記特定の処理対象データの各ビットを検索対象とするかどうかを指定する検索マスクから無効ビット数を算出し、少なくとも前記無効ビット数に基づき前記所定数を決定する手段と、
をさらに有する付記６記載の連想メモリ制御装置。
【００９２】
（付記９）
検索重要度を含む、前記特定の処理対象データの検索要求を受信した場合に、少なくとも前記検索重要度に基づき前記所定数を決定する手段と、
をさらに有する付記６記載の連想メモリ制御装置。
【００９３】
（付記１０）
要求検索性能を含む、前記特定の処理対象データの検索要求を受信した場合に、少なくとも前記要求検索性能に基づき前記所定数を決定する手段と、
をさらに有する付記６記載の連想メモリ制御装置。
【００９４】
（付記１１）
前記結果判定手段が、
前記所定数の検索結果が全て単一の一致である場合、前記所定数の検索結果に含まれる前記所定数の一致アドレスの中から、前記特定の処理対象データの登録要求で指定された前記一致アドレスを１つ含む前記一致応答を前記送信元に返信する、
ことを特徴とする付記６記載の連想メモリ制御装置。
【００９５】
（付記１２）
特定の処理対象データに対して、重複せず且つマスクされない２以上の所定数のフラグパターンを１フラグパターンずつ組み合わせ、同一の前記特定の処理対象データに対して異なるフラグパターンが組み合わされた前記所定数のビットパターンを生成するステップと、
各々異なる１の前記ビットパターンを含む前記所定数のコマンドを連想メモリに出力するコマンド出力ステップと、
を含む連想メモリ制御方法。
【００９６】
（付記１３）
前記特定の処理対象データの処理要求を受信した場合に、前記処理要求に含まれる所定の情報から前記所定数を決定するステップと、
をさらに含む付記１２記載の連想メモリ制御方法。
【００９７】
（付記１４）
前記特定の処理対象データの登録要求を受信した場合に、前記所定数のビットパターンのうちの１ビットパターンを前記登録要求で指定された連想メモリ内の領域に登録し、残りのビットパターンを前記登録要求の送信元が指定することのない連想メモリ内の領域に登録するよう、前記コマンド出力ステップに指示するステップと、
をさらに含む付記１２記載の連想メモリ制御方法。
【００９８】
（付記１５）
前記所定数の検索コマンドに対する前記所定数の検索結果を前記連想メモリから受信した場合、前記所定数の検索結果が全て単一の一致又は全て不一致という条件を満たしているか判断し、前記条件が満たされていれば一致応答又は不一致応答を前記特定の処理対象データの検索要求の送信元に返信し、前記条件が満たされていなければ異常応答を前記送信元に返信するステップと、
をさらに含む付記１２記載の連想メモリ制御方法。
【００９９】
（付記１６）
付記１２乃至１５のいずれか１つ記載の連想メモリ制御方法をコンピュータに実行させるためのプログラム。
【図面の簡単な説明】
【０１００】
【図１】本発明の実施の形態の機能ブロック図である。
【図２】登録要求のコマンド・フォーマットの一例を示す図である。
【図３】エントリ登録数を決定するテーブルの一例を示す図である。
【図４】ライトコマンド発行処理の処理フローを示す図である。
【図５】有効フラグパターンの生成方法の一例を示す図である。
【図６】有効フラグパターンの生成方法の一例を示す図である。
【図７】ライトコマンドセットのコマンド・フォーマットの一例を示す図である。
【図８】ＣＡＭの内部状態の一例を示す図である。
【図９】（ａ）及び（ｂ）は、有効フラグパターンを付与したエントリデータとエントリマスクとをバイナリ表現した一例を示す図である。
【図１０】検索要求のコマンド・フォーマットの一例を示す図である。
【図１１】検索回数を決定するテーブルの一例を示す図である。
【図１２】（ａ）及び（ｂ）は、有効フラグパターンを付与したサーチデータとサーチマスクとをバイナリ表現した一例を示す図である。
【図１３】サーチコマンド発行処理の処理フローを示す図である。
【図１４】サーチコマンドセットのコマンド・フォーマットの一例を示す図である。
【図１５】サーチ応答のコマンド・フォーマットの一例を示す図である。
【図１６】判定処理の処理フローを示す図である。
【図１７】（ａ）乃至（ｄ）は、内部に格納されているサーチ応答の一例を示す。
【図１８】検索応答のコマンド・フォーマットの一例を示す図である。
【図１９】検索要求のコマンド・フォーマットの一例を示す図である。
【図２０】検索回数を決定するテーブルの一例を示す図である。
【図２１】検索要求のコマンド・フォーマットの一例を示す図である。
【図２２】検索回数を決定するテーブルの一例を示す図である。
【図２３】マスク機能を使用した場合のデータのバイナリ表現の一例を示す図である。
【図２４】パリティビットを付与したデータのバイナリ表現の一例を示す図である。
【符号の説明】
【０１０１】
１  システム管理部    ２  ＣＡＭ制御部
３  ＣＡＭ    ２１  コマンド発行部
２２  回数決定部    ２３  判定部
【図１】
0004717617.tif 000002
【図２】
0004717617.tif 000003
【図３】
0004717617.tif 000004
【図４】
0004717617.tif 000005
【図５】
0004717617.tif 000006
【図６】
0004717617.tif 000007
【図７】
0004717617.tif 000008
【図８】
0004717617.tif 000009
【図９】
0004717617.tif 000010
【図１０】
0004717617.tif 000011
【図１１】
0004717617.tif 000012
【図１２】
0004717617.tif 000013
【図１３】
0004717617.tif 000014
【図１４】
0004717617.tif 000015
【図１５】
0004717617.tif 000016
【図１６】
0004717617.tif 000017
【図１７】
0004717617.tif 000018
【図１８】
0004717617.tif 000019
【図１９】
0004717617.tif 000020
【図２０】
0004717617.tif 000021
【図２１】
0004717617.tif 000022
【図２２】
0004717617.tif 000023
【図２３】
0004717617.tif 000024
【図２４】
0004717617.tif 000025