JP4717617B2 - 連想メモリ制御装置及び方法 - Google Patents

連想メモリ制御装置及び方法 Download PDF

Info

Publication number
JP4717617B2
JP4717617B2 JP2005354562A JP2005354562A JP4717617B2 JP 4717617 B2 JP4717617 B2 JP 4717617B2 JP 2005354562 A JP2005354562 A JP 2005354562A JP 2005354562 A JP2005354562 A JP 2005354562A JP 4717617 B2 JP4717617 B2 JP 4717617B2
Authority
JP
Japan
Prior art keywords
search
data
command
predetermined number
associative memory
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2005354562A
Other languages
English (en)
Other versions
JP2007157031A (ja
Inventor
正樹 新谷
哲雄 石原
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2005354562A priority Critical patent/JP4717617B2/ja
Publication of JP2007157031A publication Critical patent/JP2007157031A/ja
Application granted granted Critical
Publication of JP4717617B2 publication Critical patent/JP4717617B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Techniques For Improving Reliability Of Storages (AREA)
  • Debugging And Monitoring (AREA)

Description

本発明は、連想メモリ(CAM:Contents Addressable Memory)に関し、より詳しくは連想メモリにおける処理の信頼性を確保するための連想メモリを制御する技術に関する。
エントリデータ領域のビット破壊やソフトエラー等の要因により、CAM内のエントリデータに誤りが生じた場合、本来一致するべきでないエントリデータが一致したり、複数のエントリデータが一致するという問題が発生する。
このような問題を防止するために、エントリデータにパリティやECC等の検査ビットを付与してCAMのエントリデータ領域に格納し、検索時に検査データに検査ビットを付与し、検査ビットも検索対象として検索を実施するというような手段が考えられる。
例えば、特開2002−279785号公報には、エントリデータにパリティを付与してCAMのエントリデータ領域に格納し、検索時に検索データにパリティを付与し、パリティも検索対象として検索する技術が開示されている。
ところで、CAMには、エントリデータ及び検索データの各ビットの有効/無効を指定するためのマスク機能がある。マスク機能にはエントリデータ登録時にエントリデータの各ビットの有効/無効を指定するためのエントリマスク、検索時に検索データの有効/無効を指定するための検索マスクの2通りがあり、検索時、検索マスクでマスクされていない検索データのビットと、エントリマスクでマスクされていない各エントリデータのビットとを比較し、一致したエントリデータのアドレスを出力する。図23にエントリ幅が64ビットの場合のマスクつき検索の例を示す。本例では、マスクビットが1でエントリデータのビットが有効、0でエントリデータのビットが無効になるものとする。エントリマスクのビット53〜46、20が0(無効)であり、検索マスクのビット40〜39、11〜4が0(無効)である。従ってCAMは、検索データとエントリデータのビット63〜54、45〜41、38〜21、19〜12、3〜0が一致することで、一致応答と一致アドレスを出力する。
また、図23の例に対して8ビットにつき1ビットのパリティビットを付与した例を図24に示す。エントリデータのビット63〜56に関連付けられたパリティビットをP7、ビット55〜48に関連付けられたパリティビットをP6、ビット47〜40に関連付けられたパリティビットをP5、ビット39〜32に関連付けられたパリティビットをP4、ビット31〜24に関連付けられたパリティビットをP3、ビット23〜16に関連付けられたパリティビットをP2、ビット15〜8に関連付けられたパリティビットをP1、ビット7〜0に関連付けられたパリティビットをP0とする。エントリデータ登録時、エントリデータのビット53〜46及びビット20がマスクされているため、関連するパリティビットP6〜P5及びP2もマスクして登録する必要がある。同様に検索データにも8ビット毎に関連付けられたパリティビットをP7〜P0を付与する。検索時、検索データのビット40〜39、及びビット11〜4がマスクされているため、関連するパリティビットP5〜P4及びP1〜0もマスクして検索を実行する必要がある。その結果、検索時に比較しているパリティビットはP7及びP3の2ビットのみになる。
さらに、例えば、特開2004−362315号公報には、エントリデータにECCを付与する技術が開示されている。但し、エントリデータが1ビットでもマスクされるとECCの演算が不可能となるため、ECCの全ビットをマスクして登録する必要がある。同様に検査データが1ビットでもマスクされるとECCの演算が不可能となるため、ECCの全ビットをマスクして検索する必要がある。また、この公報には、CAM内のエントリデータを一旦読み出し、ECCに基づいて誤り訂正を行う技術が開示されている。
特開2002−279785号公報 特開2004−362315号公報
上で述べたように、CAMのマスク機能を使用すると、検査ビットの1部又は全部が無効になるため、ビット破壊やソフトエラー等の要因でエントリデータに誤りが生じた場合に、本来一致するべきでないエントリデータが一致したり、複数のエントリデータが一致するおそれがあり、検索結果の信頼性が十分に向上しているとはいえない。
従って、本発明の目的は、CAMのマスク機能を使用する場合でも、CAM内のエントリデータの信頼性を向上させるための技術を提供することである。
また、本発明の他の目的は、CAM内のエントリデータの信頼性を高め、CAMに対する検索結果の信頼性を向上させるための技術を提供することである。
さらに、本発明の他の目的は、CAM内の未使用領域を有効活用し、CAM内のエントリデータの信頼性を向上させる技術を提供することである。
本発明に係る連想メモリ制御装置は、特定の処理対象データに対して、重複せず且つマスクされない2以上の所定数のフラグパターンを1フラグパターンずつ組み合わせ、同一の特定の処理対象データに対して異なるフラグパターンが組み合わされた所定数のビットパターンを生成する生成手段と、各々異なる1の上記ビットパターンを含む所定数のコマンドを連想メモリに出力するコマンド出力手段とを有する。
このようにすれば、例えば登録時には同一の特定の処理対象データが互いに異なるビットパターンとして連想メモリ内の複数領域に登録され、また検索時には複数箇所に登録された同一の特定の処理対象データをそれぞれ異なるビットパターンとして検索することができるため、CAM内のエントリデータの信頼性が向上しており、さらに検索箇所が増えることで検索結果の信頼性も向上している。
また、本発明に係る連想メモリ制御装置は、上記特定の処理対象データの処理要求を受信した場合に、処理要求に含まれる所定の情報から所定数を決定する手段をさらに有するようにしてもよい。
上記所定の情報は、例えば、アプリケーション種別、検索マスク、検索重要度、要求検索性能等である。このようにすれば、例えば上記所定の情報が検索重要度である場合、重要度が高い検索については、検索回数を多くすることで検索箇所が増加して検索結果の信頼性が向上する。
さらに、本発明に係る連想メモリ制御装置は、上記特定の処理対象データの登録要求を受信した場合に、所定数のビットパターンのうちの1ビットパターンを登録要求で指定された連想メモリ内の領域に登録し、残りのビットパターンを登録要求の送信元が指定することのない連想メモリ内の領域に登録するよう、上記コマンド出力手段に指示する手段をさらに有するようにしてもよい。このようにすれば、登録要求の送信元は従来のままで、CAM内の未使用領域を活用し、CAM内のエントリデータの信頼性を向上させることができる。
さらに、本発明に係る連想メモリ制御装置は、所定数の検索コマンドに対する所定数の検索結果を連想メモリから受信した場合、所定数の検索結果が全て単一の一致又は全て不一致という条件を満たしているか判断し、条件が満たされていれば一致応答又は不一致応答を上記特定の処理対象データの検索要求の送信元に返信し、条件が満たされていなければ異常応答を上記送信元に返信する結果判定手段をさらに有するようにしてもよい。このようにすれば、例えばソフトエラーにより、本来一致すべき複数のエントリデータの1つに誤りが生じた場合、複数の検索結果うちの1つが不一致となり、エントリデータに異常が生じていることを検出することができる。
なお、本発明に係る連想メモリ制御装置をコンピュータに実行させるためのプログラムを作成することができ、このプログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等の記憶媒体又は記憶装置に格納される。また、ネットワークなどを介してデジタル信号として配信される場合もある。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
本発明によれば、CAMのマスク機能を使用する場合でも、CAM内のエントリデータの信頼性を向上することができるようになる。
また本発明の他の側面によれば、CAM内のエントリデータの信頼性を高めることができ、CAMに対する検索結果の信頼性を向上することができるようになる。
本発明のさらに他の側面によれば、CAM内の未使用領域を有効活用でき、CAM内のエントリデータの信頼性を向上することができるようになる。
図1に本発明の一実施の形態に係るデータ検索装置の機能ブロック図を示す。本実施の形態のデータ検索装置は、処理要求を発行するシステム管理部1とCAM3を制御するCAM制御部2とを有するCAM制御装置と、従来通りのCAMの機能を備えたCAM3とを有する。
さらに、CAM制御部2は、システム管理部1からの登録/検索要求101(以下、登録要求1010、検索要求1011とする)を受信してCAM3にライト/サーチコマンドセット102(以下、ライトコマンドセット1020、サーチコマンドセット1021とする)を発行するコマンド発行部21と、システム管理部1からの登録/検索要求101を受信してコマンドの回数を決定する回数決定部22と、CAM3からのサーチ応答103を受信してシステム管理部1に検索応答104を発行する判定部23とを有する。コマンド発行部21は、システム管理部1とCAM3とに接続されている。また、回数決定部22は、システム管理部1とコマンド発行部21と判定部23とに接続されている。また、判定部23は、システム管理部1とCAM3とに接続されている。
次に、図2乃至図9を用いて図1に示したデータ検索装置の登録時の処理について説明する。まず、システム管理部1は、登録要求1010をCAM制御部2に出力する。図2に、登録要求1010のコマンド・フォーマットの一例を示す。図2の例では、登録を示す処理種別101a、アプリケーション種別101b、エントリデータ101c、エントリマスク101dが含まれている。本実施の形態では、CAM3内のどの領域に登録するかを指定するアドレスを処理種別101aに含んでいるものとする。
登録要求1010を受信した回数決定部22は、登録要求1010に含まれる情報と、図3で示すようなテーブルとを用いてエントリ登録数を決定する。登録要求1010に含まれる情報とは、例えば、アプリケーション種別101bである。また、図3は、エントリ登録数を決定するためのテーブルの一例であり、アプリケーション種別の列とエントリ登録数の列とから構成され、内部に予め用意されているものとする。回数決定部22は、アプリケーション種別101bと図3のテーブルとからエントリ登録数を決定し、コマンド発行部21にエントリ登録数を通知する。
そして、コマンド発行部21は、図4に示すような処理を行う。まず、コマンド発行部21は、システム管理部1から登録要求1010を、回数決定部22からエントリ登録数Nを受信すると、コマンド発行回数を示す変数xを1で初期化し、残コマンド発行回数を示す変数yをエントリ登録数Nで初期化する(ステップS1及びS3)。
次に、コマンド発行部21は、変数xの値(すなわちコマンド発行回数)から有効フラグパターンを生成する(ステップS5)。図5及び図6に有効フラグパターンの生成例を示す。図5は、変数xの8ビットのバイナリ表現を有効フラグパターンとする例である。また、図6は、アプリケーション種別と変数xの値とを組み合わせて有効フラグパターンを生成する例を示しており、上位4ビットがアプリケーション種別、下位4ビットが変数xの値である。本実施の形態では、コマンド発行回数から有効フラグパターンを生成するので、重複しないN個(エントリ登録数)の有効フラグパターンを生成することができる。なお、他の方法で有効フラグパターンを生成する場合、各有効フラグパターンが重複しないように生成する必要がある。
次に、コマンド発行部21は、CAM3内の登録先アドレスを決定する(ステップS7)。本実施の形態では、1回目のコマンド発行時(x=1の場合)は登録要求1010の処理種別101aに含まれるアドレスを登録先アドレスとする。また、2回目以降のコマンド発行時(x>1の場合)はシステム管理部1が指定することのない領域を示すアドレスを登録先アドレスとする。システム管理部1が指定することのない領域とは、システム管理部1がアクセスできない(すなわち見えない)領域の場合もあれば、システム管理部1がアクセスすることのない(すなわち、見えてはいるが使用しない)領域の場合もある。
また、コマンド発行部21は、1回目のコマンド発行時の登録先アドレス(すなわち、処理種別101aに含まれるアドレス)と関連付けるように、2回目以降のコマンド発行時の登録先アドレスを決定する。例えば、システム管理部1がアドレス0〜99を指定する可能性があり、アドレス0が処理種別101aに含まれていた場合、このアドレス0に100を足したアドレス100を2回目のコマンド発行時の登録先アドレスとする。また、3回目であれば、アドレス0に200を足したアドレス200を登録先アドレスとする。
このように関連付けることで、別の登録要求1010でアドレス1が指定された場合にはアドレス1とアドレス101とが登録先アドレスとなり、アドレス0とアドレス100とは別の領域に登録することができる。
次に、コマンド発行部21は、ライトコマンドの生成及び発行を行う(ステップS9)。図7に、エントリ登録数が2の場合のライトコマンドセット1020のコマンド・フォーマットの一例を示す。図7では、上段が1回目(x=1の場合)のライトコマンドであり、下段が2回目(x=2の場合)のライトコマンドである。
1回目(x=1の場合)のライトコマンドには、ライトコマンドA102a、ライトデータA102c、ライトマスク102eが含まれる。本実施の形態では、ライトコマンドA102aに、システム管理部1が指定した領域を示すアドレス(アドレス0とする)が含まれている。
また、ライトデータA102cには、エントリデータ101cと有効フラグパターンAとが含まれている。ライトデータA102cをバイナリ表現した一例を図9(a)の上段に示す。63〜0の64ビットがエントリデータ101cであり、右側の8ビットが有効フラグパターンAである。
さらに、ライトマスク102eには、エントリマスク101dと、有効フラグパターンの全ビットが有効になるように、例えば、全ビットが1で構成される有効マスクとが含まれる。ライトマスク102eをバイナリ表現した一例を図9(a)の下段に示す。63〜0の64ビットがエントリマスク101dであり、右側の8ビットが有効マスク(all1)である。
2回目(x=2の場合)のライトコマンドには、ライトコマンドB102b、ライトデータB102d、ライトマスク102eが含まれる。本実施の形態では、ライトコマンドB102bに、システム管理部1が指定することのない領域を示すアドレス(アドレス100とする)が含まれている。ライトマスク102eは、1回目と同様となる。
また、ライトデータB102dには、エントリデータ101cと有効フラグパターンBとが含まれている。ライトデータB102dをバイナリ表現した一例を図9(b)の上段に示す。63〜0の64ビットがエントリデータ101cであり、右側の8ビットが有効フラグパターンBである。図9(b)の下段はライトマスク102eをバイナリ表現した一例を示しているが、図9(a)の下段と同様であるため、説明は省略する。
コマンド発行部21は、ライトコマンドを1回発行した後、変数xを1インクリメント、変数yを1デクリメントする(ステップS11)。そして、変数yが0になったか判定し、0でない場合は、ステップS5の処理に戻る(ステップS13:Noルート)。変数yが0になった場合、エントリ登録数のライトコマンドを発行したことになる(ステップS13:Yesルート)。
ライトコマンドを受信したCAM3は、ライトコマンドで指定された領域にデータを登録する。CAM3は、汎用的なCAMを想定しているため、CAMの基本的な処理については、ここでは省略する。
図8にCAM3内に登録されたデータの一例を示す。図8の例では、アドレス0からN(Nは99までとする)までをシステム管理部1が指定する領域とし、アドレス100から100+Nまでをシステム管理部1が指定することのない領域としている。
また、図8の例では、アドレス0〜Nの領域には有効フラグパターンAが組み合わされたエントリデータ#0〜N(すなわち、1回目のライトコマンドの内容)が登録され、アドレス100〜100+Nの領域には有効フラグパターンBが組み合わされたエントリデータ#0〜N(すなわち、2回目のライトコマンドの内容)が登録される。アドレス0〜Nと、アドレス0〜Nに100を足したアドレス100〜100+Nとが対応しており(例えば、アドレス0とアドレス100とが対応、アドレス1とアドレス101とが対応している)、対応しているアドレスのそれぞれの領域には、同一のエントリデータが含まれている。
図8において図示していないが、例えば、エントリ登録数が3の場合、エントリデータ#0、有効フラグパターンC、エントリマスク#0、有効マスク(all1)を組み合わせたものがアドレス200に登録される。アドレス200〜200+Nには、有効フラグパターンCが組み合わされたエントリデータ#0〜N(すなわち、3回目のライトコマンドの内容)が登録される。
なお、図9の例では、図6で示したアプリケーション種別とコマンド発行回数とから有効フラグパターンを生成している。また、マスクビットが1の場合に有効、マスクビットが0の場合に無効になるものとし、マスクビットで無効になるビットを網掛けで図示している。
また、回数決定部22は、回数を決定する際にCAMの残容量からエントリ登録数を決定してもよい。
次に、図10乃至図18を用いて図1に示したデータ検索装置の検索時の処理について説明する。まず、システム管理部1は、検索要求1011をCAM制御部2に出力する。図10に、検索要求1011のコマンド・フォーマットの一例を示す。図10の例では、検索を示す処理種別101e、アプリケーション種別101b、検索データ101f、検索マスク101gが含まれている。
検索要求1011を受信した回数決定部22は、検索要求1011に含まれる情報と、図11に示すようなテーブルとを用いて検索回数を決定する。検索要求1011に含まれる情報とは、例えば、アプリケーション種別101bである。また、図11は、検索回数を決定するためのテーブルの一例であり、アプリケーション種別の列と、エントリ登録数の列と、検索回数の列とから構成され、内部に予め用意されているものとする。さらに、検索回数の列は、無効ビット数で段階分けされている。図11では、検索回数の列は、無効ビット数が63〜48ビット、47〜32ビット、31〜16ビット、15〜0ビットの4段階に分けられている。
無効ビット数とは、検索データ101fを検索マスク101gでマスクしたときに、無効と見なされ、検索対象から外されるビットの個数である。図12(a)のビット列を用いて無効ビット数について説明する。まず、図12(a)の上段の63〜0の64ビットは検索データ101fを示し、下段の63〜0の64ビットは検索マスク101gを示している。また、図12(a)では、検索マスクのビットが1の場合に、対応する検索データのビットが有効、検索マスクのビットが0の場合に、対応する検索データのビットが無効になるものとし、無効となるビットを網掛けで図示している。図12(a)では、検索マスクの中に0を示すビットが10ビットあり、無効ビット数も10ビットとなる。よって、図11で示したテーブルの無効ビット数が15〜0ビットの列と、アプリケーション種別101bとから検索回数を決定する。
なお、図11のテーブルでは、無効ビット数が多くなるにつれて検索回数も多くなっている。これは、無効ビット数が多い場合は、無効ビット数が少ない場合に比べ、有効ビット(すなわち、検索対象となるビット)のビット数が少なくなり、1の検索結果の信頼性が低下するのに対し、検索回数を増やすことで検索結果の信頼性を確保するためである。
検索回数決定後、回数決定部22はコマンド発行部21と判定部23とに検索回数を通知する。なお、検索回数はエントリ登録数以下になるものとし、検索回数が登録数を超えた場合は、エントリ登録数を検索回数として通知する。
そして、コマンド発行部21は、図13に示すような処理を行う。まず、コマンド発行部21は、システム管理部1から検索要求1011を、回数決定部22から検索回数Nを受信すると、コマンド発行回数を示す変数xを1で初期化し、残コマンド発行回数を示す変数yを検索回数Nで初期化する(ステップS21及びS23)。
次に、コマンド発行部21は、変数xの値(すなわちコマンド発行回数)から有効フラグパターンを生成する(ステップS25)。ここでは、登録時(図4のステップS5)と同一の方法で有効フラグパターンを生成する。
次に、コマンド発行部21は、サーチコマンドの生成及び発行を行う(ステップ27)。図14に、検索回数が2の場合のサーチコマンドセット1021のコマンド・フォーマットの一例を示す。図14では、上段が1回目(x=1の場合)のサーチコマンドであり、下段が2回目(x=2の場合)のサーチコマンドである。
1回目(x=1の場合)のサーチコマンドには、サーチコマンド102f、サーチデータA102g、サーチマスク102iが含まれている。
また、サーチデータA102gには、検索データ101fと有効フラグパターンAとが含まれている。サーチデータA102gをバイナリ表現した一例を図12(a)の上段に示す。63〜0の64ビットは上で述べたように検索データ101fであり、右側の8ビットが有効フラグパターンAである。なお、有効フラグパターンAは登録時と同一の方法で生成されるため、図9(a)の登録時の有効フラグパターンAと等しい。
さらに、サーチマスク102iには、検索マスク101gと、有効フラグパターンの全ビットが有効になるように、例えば、全ビットが1で構成される有効マスクとが含まれる。サーチマスク102iをバイナリ表現した一例を図12(a)の下段に示す。63〜0の64ビットは上で述べたように検索マスク101gであり、右側の8ビットが有効マスク(all1)である。
2回目(x=2の場合)のサーチコマンドには、サーチコマンド102f、サーチデータB102h、サーチマスク102iが含まれている。サーチコマンド102f、サーチマスク102iは1回目のサーチコマンドと同一である。
サーチデータB102hには、検索データ101fと有効フラグパターンBとが含まれている。サーチデータB102hをバイナリ表現した一例を図12(b)の上段に示す。63〜0の64ビットは検索データ101fであり、右側の8ビットが有効フラグパターンBである。なお、有効フラグパターンBは登録時と同一の方法で生成されるため、図9(b)の登録時の有効フラグパターンBと等しい。図12(b)の下段はサーチマスク102iをバイナリ表現した一例を示しているが、図12(a)の下段と同一であるため、説明は省略する。
コマンド発行部21は、サーチコマンドを1回発行した後、変数xを1インクリメント、変数yを1デクリメントする(ステップS29)。そして、変数yが0になったか判定し、0でない場合は、ステップS25の処理に戻る(ステップS31:Noルート)。変数yが0になった場合、検索回数のサーチコマンドを発行したことになる(ステップS31:Yesルート)。
サーチコマンドを受信したCAM3は、CAM3内に登録されているデータの中から、サーチコマンドの内容と一致するデータの検索を行い、サーチ応答103をCAM制御部2に出力する。CAM3は、汎用的なCAMを想定しているため、検索の基本的な処理については、ここでは省略する。
図15に、サーチ応答103のコマンド・フォーマットの一例を示す。図15の例では、上段が1回目のサーチコマンドに対する応答であり、下段が2回目のサーチコマンドに対する応答である。1回目のサーチコマンドに対する応答には、サーチ結果A103aと、ヒットアドレスA103cとが含まれている。また、2回目のサーチコマンドに対する応答には、サーチ結果B103bと、ヒットアドレスB103dとが含まれている。
また、サーチ結果A103a及びサーチ結果B103bには、サーチコマンドの内容と一致するデータがCAM3内に1つ存在することを示す「ヒット」、サーチコマンドの内容と一致するデータがCAM3内に存在しないことを示す「ミス」、サーチコマンドの内容と一致するデータがCAM3内に複数存在することを示す「マルチヒット」のいずれか1つが含まれる。
また、サーチ結果A103a、サーチ結果B103bが「ヒット」又は「マルチヒット」の場合、サーチ結果A103a、サーチ結果B103bにそれぞれ対応するヒットアドレスA103c、ヒットアドレスB103dには、一致したデータの登録先アドレスが含まれる。
検索回数とサーチ応答103とを受信する判定部23は、図16に示すような処理を行う。まず、判定部23は、回数決定部22から検索回数Nを受信すると、サーチコマンドに対する応答のうち未受信の回数を示す変数yを検索回数Nで初期化する(ステップS41)。
判定部23は、CAM3からサーチコマンドに対する応答を受信すると、一旦、内部に格納する(ステップS43)。次に、判定部23は、サーチ結果が「マルチヒット」であるか判定する(ステップS45)。
サーチ結果が「マルチヒット」以外の場合は(ステップS45:Noルート)、変数yを1デクリメントする(ステップS47)。そして、変数yが0になったか判定し、0でない場合は、ステップS43の処理に戻る(ステップS49:Noルート)。変数yが0になった場合は(ステップS49:Yesルート)、内部に格納してあるN個の応答に基づき、検索応答104を生成してシステム管理部1に送信する(ステップS51)。ステップS51の詳細については、後で述べる。
また、サーチ結果が「マルチヒット」の場合は(ステップS45:Yesルート)、検索結果を異常と判断し、異常を示す検索応答104をシステム管理部1に送信する(ステップS51)。なお、図16では図示していないが、CAM3からN個の応答を全て受信した後に、検索応答104の送信を行ってもよい。
図17(a)乃至(d)、図18を用いてステップS51の処理について説明する。図17(a)乃至(d)は、内部に格納されているサーチ応答103の例を示す。図17(a)乃至(d)では、それぞれ上段が1回目のサーチコマンドに対する応答を示し、下段が2回目のサーチコマンドに対する応答を示す。また、図18は、システム管理部1に送信する検索応答104のコマンド・フォーマットの一例を示す。図18では、検索結果104aと一致アドレス104bとが含まれている。
図17(a)の例は、サーチ結果A及びサーチ結果Bが「ヒット」、アドレス0及びアドレス100がヒットアドレスである場合を示す。この例のように、サーチ結果が全て「ヒット」の場合は、検索結果が正常で、検索データ101fと一致するデータが存在すると判断する。この場合、検索結果104aを「一致」とし、検索応答104をシステム管理部1に送信する。また、複数のヒットアドレス(すなわち、アドレス0及びアドレス100)のうち、登録時にシステム管理部1が指定したアドレスを一致アドレス104bとしなければならない。本実施の形態では、有効フラグパターンAを含むデータ(すなわち、1回目に発行するライトコマンド内のデータ)が、システム管理部1の指定する領域に登録され、検索時の有効フラグパターンが、登録時と同一の方法で生成されるため、有効フラグパターンAを含むサーチコマンド(すなわち、1回目に発行するサーチコマンド)に対する応答のヒットアドレスが一致アドレス104bとなる。よって、図17(a)の例では、アドレス0を一致アドレス104bとする。
また、図17(b)の例は、サーチ結果A及びサーチ結果Bが「ミス」である場合を示す。この例のように、サーチ結果が全て「ミス」の場合は、検索結果が正常で、検索データ101fと一致するデータが存在しないと判断する。この場合、検索結果104aを「不一致」とし、検索応答104をシステム管理部1に送信する。
また、図17(c)の例は、サーチ結果Aが「ヒット」、サーチ結果Bが「ミス」である場合を示す。この例のように、サーチ結果に「ヒット」と「ミス」とが混在する場合は、検索結果を異常と判断する。CAM3内が正常であれば、サーチ結果は全て同一(すなわち、全て「ヒット」又は全て「ミス」)になるはずである。よって、サーチ結果に「ヒット」と「ミス」とが混在するというのは、CAM3内になんらかの問題(例えば、ビット破壊やソフトエラー等の要因でアドレス0のデータに誤りが生じ、本来であれば一致しないのに一致してしまった等)があることを示す。この場合、検索結果104aを「異常」とし、検索応答104をシステム管理部1に送信する。
なお、図16では図示していないが、受信したサーチ結果が、前回受信したサーチ結果と異なる場合、全ての応答を受信する前に検索結果を異常と判断し、残りの応答を待たずにループから抜け、検索応答104を送信してもよい。
また、図17(d)の例は、サーチ結果Aが「マルチヒット」の場合を示す。この例のように、サーチ結果の少なくとも1つが「マルチヒット」の場合は、検索結果を異常と判断する。CAM3内が正常であれば、1検索データに対して一致するのは1エントリデータのはずである。よって、サーチ結果が「マルチヒット」になるのは、CAM3内になんらかの問題(例えば、ビット破壊やソフトエラー等の要因でアドレス100のデータに誤りが生じ、本来であればアドレス0のデータのみ一致するはずが、アドレス100のデータも一致してしまった等)があることを示す。この場合、検索結果104aを「異常」とし、検索応答104をシステム管理部1に送信する。
また、回数決定部22は、検索重要度に基づき検索回数を決定する場合もある。例えば、システム管理部1は、図19で示すような検索要求1011を出力する。図19には、検索を示す処理種別101e、アプリケーション種別101b、検索データ101f、検索マスク101g、検索重要度101hが含まれる。また、検索重要度101hは、例えば、重要度3、重要度2、重要度1のいずれか1つを示す。
検索重要度を含む検索要求1011を受信した回数決定部22は、アプリケーション種別と検索重要度と図20で示すようなテーブルとを用いて検索回数を決定する。図20のテーブルは、アプリケーション種別の列と、エントリ登録数の列と、検索回数の列とから構成され、内部で予め用意されているものとする。さらに、検索回数の列は、検索重要度により段階分けされている。図20では、重要度3(高)、重要度2(中)、重要度1(低)の3段階に分けられている。
例えば、アプリケーション種別の列により、アプリケーション種別ごとに検索重要度を変化させることができるが、このようにすれば、さらに同一のアプリケーション内において、検索結果の信頼性を重要視する場合は検索回数を増やし、検索結果の信頼性をあまり重要視しない場合は検索回数を減らすことができる。
また、回数決定部22は、要求検索性能に基づき検索回数を決定する場合もある。例えば、システム管理部1は、図21で示すような検索要求1011を出力する。図21には、検索を示す処理種別101e、アプリケーション種別101b、検索データ101f、検索マスク101g、要求検索性能101iが含まれる。検索性能は、例えば、検索速度を示し、数値が大きい程、検索性能が高い(すなわち、検索速度が速い)ことを示す。
要求検索性能を含む検索要求1011を受信した回数決定部22は、システム全体の検索性能と要求検索性能とを用いて検索回数を決定する。システム全体の検索性能は、予めシステムによって決められた固定の値とする。システム全体の検索性能をL、検索回数をN、N回の検索を実行したときの検索性能をXとするとそれぞれの関係は、X=L/Nで表される。従って、検索回数Nが増えると、Xの値が小さくなるため、検索性能は低くなる。さらに、要求検索性能をYとすると、Yを上回る検索性能が要求されているので、Y<X(=L/N)となり、この式を満たす、Nの最大値が検索回数となる。なお、Nは、2以上且つエントリ登録数以下の範囲内の値になるものとし、2未満の場合は2、エントリ登録数を超える場合はエントリ登録数をNの値に再設定する。エントリ登録数は、例えば、図3のテーブルを参照して取得する。
このようにすれば、例えば、検索性能をあまり重要視しない検索については検索回数を増やし、検索性能を重要視する検索については検索回数を減らすことができる。
なお、要求検索性能101iを、上で述べたような数値ではなく、速度の段階(例えば、低速、中速、高速)を示すようにし、この速度の段階と図22に示すようなテーブルとから検索回数を決定してもよい。図22のテーブルは、アプリケーション種別の列と、エントリ登録数の列と、検索回数の列とから構成され、さらに、検索回数の列は、要求検索性能(低速)の列、要求検索性能(中速)の列、要求検索性能(高速)の3段階に分けられている。
以上述べたように、本実施の形態によれば、マスク機能を使用する場合でも、同一のエントリデータが互いに異なるビットパターンとしてCAM内の複数領域に登録されるので、エントリデータの信頼性が向上し、さらに検索箇所が複数になるので、検索結果の信頼性も向上する。
また、検索結果の信頼性を向上するための方法として、検査ビットを含むエントリデータをマスク機能を使用して検索した後に、一致したエントリデータを一旦読み出し、検査ビットからエントリデータの正常性を確認する方法が考えられるが、検索の実行後にエントリデータの読み出しを行うと、パイプライン処理を停止してしまうCAMがあり、このようなCAMを使用した場合に検索性能が低下するおそれがある。しかしながら、本実施の形態の処理であれば、このようなCAMを使用した場合でも、パイプライン処理を停止することなく、検索結果の信頼性を向上することができる。
以上本発明の一実施の形態について説明したが、本発明はこれに限定されるものではない。例えば、図1に示したブロック図のシステム管理部1とCAM制御部2の少なくとも1部分をソフトウェアにより実現してもよい。
また、エントリ登録数及び検索回数を決定する際に、必ずアプリケーション種別を用いているが、アプリケーション種別を用いることなく、エントリ登録数及び検索回数を決定してもよい。また、登録時に、図11、図20、図22に示したテーブルのエントリ登録数の列からエントリ登録数を決定してもよい。
また、エントリ登録数及び検索回数は、登録/検索要求に含まれる情報と、図3、図11、図20、図22に示すテーブルとによって変化するが、エントリ登録数及び検索回数を予めシステムで決めておき、常に固定としてもよい。
(付記1)
特定の処理対象データに対して、重複せず且つマスクされない2以上の所定数のフラグパターンを1フラグパターンずつ組み合わせ、同一の前記特定の処理対象データに対して異なるフラグパターンが組み合わされた前記所定数のビットパターンを生成する生成手段と、
各々異なる1の前記ビットパターンを含む前記所定数のコマンドを連想メモリに出力するコマンド出力手段と、
を有する連想メモリ制御装置。
(付記2)
前記特定の処理対象データの処理要求を受信した場合に、前記処理要求に含まれる所定の情報から前記所定数を決定する手段と、
をさらに有する付記1記載の連想メモリ制御装置。
(付記3)
前記特定の処理対象データが、特定のビット列と当該特定のビット列の各ビットを処理対象とするかどうかを指定する処理マスクとから構成され、
前記生成手段が、前記特定の処理対象データと、前記フラグパターンと、前記フラグパターンの全ビットを有効にする有効マスクとを含む、前記所定数のビットパターンを生成する、
ことを特徴とする付記1記載の連想メモリ制御装置。
(付記4)
アプリケーション種別を含む、前記特定の処理対象データの登録要求を受信した場合に、前記アプリケーション種別に基づき前記所定数を決定する手段と、
をさらに有する付記1記載の連想メモリ制御装置。
(付記5)
前記特定の処理対象データの登録要求を受信した場合に、前記所定数のビットパターンのうちの1ビットパターンを前記登録要求で指定された連想メモリ内の領域に登録し、残りのビットパターンを前記登録要求の送信元が指定することのない連想メモリ内の領域に登録するよう、前記コマンド出力手段に指示する手段と、
をさらに有する付記1記載の連想メモリ制御装置。
(付記6)
前記所定数の検索コマンドに対する前記所定数の検索結果を前記連想メモリから受信した場合、前記所定数の検索結果が全て単一の一致又は全て不一致という条件を満たしているか判断し、前記条件が満たされていれば一致応答又は不一致応答を前記特定の処理対象データの検索要求の送信元に返信し、前記条件が満たされていなければ異常応答を前記送信元に返信する結果判定手段と、
をさらに有する付記1記載の連想メモリ制御装置。
(付記7)
アプリケーション種別を含む、前記特定の処理対象データの検索要求を受信した場合に、少なくとも前記アプリケーション種別に基づき前記所定数を決定する手段と、
をさらに有する付記6記載の連想メモリ制御装置。
(付記8)
前記特定の処理対象データの検索要求を受信した場合に、前記特定の処理対象データに含まれ且つ前記特定の処理対象データの各ビットを検索対象とするかどうかを指定する検索マスクから無効ビット数を算出し、少なくとも前記無効ビット数に基づき前記所定数を決定する手段と、
をさらに有する付記6記載の連想メモリ制御装置。
(付記9)
検索重要度を含む、前記特定の処理対象データの検索要求を受信した場合に、少なくとも前記検索重要度に基づき前記所定数を決定する手段と、
をさらに有する付記6記載の連想メモリ制御装置。
(付記10)
要求検索性能を含む、前記特定の処理対象データの検索要求を受信した場合に、少なくとも前記要求検索性能に基づき前記所定数を決定する手段と、
をさらに有する付記6記載の連想メモリ制御装置。
(付記11)
前記結果判定手段が、
前記所定数の検索結果が全て単一の一致である場合、前記所定数の検索結果に含まれる前記所定数の一致アドレスの中から、前記特定の処理対象データの登録要求で指定された前記一致アドレスを1つ含む前記一致応答を前記送信元に返信する、
ことを特徴とする付記6記載の連想メモリ制御装置。
(付記12)
特定の処理対象データに対して、重複せず且つマスクされない2以上の所定数のフラグパターンを1フラグパターンずつ組み合わせ、同一の前記特定の処理対象データに対して異なるフラグパターンが組み合わされた前記所定数のビットパターンを生成するステップと、
各々異なる1の前記ビットパターンを含む前記所定数のコマンドを連想メモリに出力するコマンド出力ステップと、
を含む連想メモリ制御方法。
(付記13)
前記特定の処理対象データの処理要求を受信した場合に、前記処理要求に含まれる所定の情報から前記所定数を決定するステップと、
をさらに含む付記12記載の連想メモリ制御方法。
(付記14)
前記特定の処理対象データの登録要求を受信した場合に、前記所定数のビットパターンのうちの1ビットパターンを前記登録要求で指定された連想メモリ内の領域に登録し、残りのビットパターンを前記登録要求の送信元が指定することのない連想メモリ内の領域に登録するよう、前記コマンド出力ステップに指示するステップと、
をさらに含む付記12記載の連想メモリ制御方法。
(付記15)
前記所定数の検索コマンドに対する前記所定数の検索結果を前記連想メモリから受信した場合、前記所定数の検索結果が全て単一の一致又は全て不一致という条件を満たしているか判断し、前記条件が満たされていれば一致応答又は不一致応答を前記特定の処理対象データの検索要求の送信元に返信し、前記条件が満たされていなければ異常応答を前記送信元に返信するステップと、
をさらに含む付記12記載の連想メモリ制御方法。
(付記16)
付記12乃至15のいずれか1つ記載の連想メモリ制御方法をコンピュータに実行させるためのプログラム。
本発明の実施の形態の機能ブロック図である。 登録要求のコマンド・フォーマットの一例を示す図である。 エントリ登録数を決定するテーブルの一例を示す図である。 ライトコマンド発行処理の処理フローを示す図である。 有効フラグパターンの生成方法の一例を示す図である。 有効フラグパターンの生成方法の一例を示す図である。 ライトコマンドセットのコマンド・フォーマットの一例を示す図である。 CAMの内部状態の一例を示す図である。 (a)及び(b)は、有効フラグパターンを付与したエントリデータとエントリマスクとをバイナリ表現した一例を示す図である。 検索要求のコマンド・フォーマットの一例を示す図である。 検索回数を決定するテーブルの一例を示す図である。 (a)及び(b)は、有効フラグパターンを付与したサーチデータとサーチマスクとをバイナリ表現した一例を示す図である。 サーチコマンド発行処理の処理フローを示す図である。 サーチコマンドセットのコマンド・フォーマットの一例を示す図である。 サーチ応答のコマンド・フォーマットの一例を示す図である。 判定処理の処理フローを示す図である。 (a)乃至(d)は、内部に格納されているサーチ応答の一例を示す。 検索応答のコマンド・フォーマットの一例を示す図である。 検索要求のコマンド・フォーマットの一例を示す図である。 検索回数を決定するテーブルの一例を示す図である。 検索要求のコマンド・フォーマットの一例を示す図である。 検索回数を決定するテーブルの一例を示す図である。 マスク機能を使用した場合のデータのバイナリ表現の一例を示す図である。 パリティビットを付与したデータのバイナリ表現の一例を示す図である。
符号の説明
1 システム管理部 2 CAM制御部
3 CAM 21 コマンド発行部
22 回数決定部 23 判定部

Claims (5)

  1. 特定の処理対象データに対して、重複せず且つマスクされない2以上の所定数のフラグパターンを1フラグパターンずつ組み合わせ、同一の前記特定の処理対象データに対して異なるフラグパターンが組み合わされた前記所定数のビットパターンを生成する生成手段と、
    各々異なる1の前記ビットパターンを含む前記所定数のコマンドを連想メモリに出力するコマンド出力手段と、
    を有する連想メモリ制御装置。
  2. 前記特定の処理対象データの処理要求を受信した場合に、前記処理要求に含まれる所定の情報から前記所定数を決定する手段と、
    をさらに有する請求項1記載の連想メモリ制御装置。
  3. 前記特定の処理対象データの登録要求を受信した場合に、前記所定数のビットパターンのうちの1ビットパターンを前記登録要求で指定された連想メモリ内の領域に登録し、残りのビットパターンを前記登録要求の送信元が指定することのない連想メモリ内の領域に登録するよう、前記コマンド出力手段に指示する手段と、
    をさらに有する請求項1記載の連想メモリ制御装置。
  4. 前記所定数の検索コマンドに対する前記所定数の検索結果を前記連想メモリから受信した場合、前記所定数の検索結果が全て単一の一致又は全て不一致という条件を満たしているか判断し、前記条件が満たされていれば一致応答又は不一致応答を前記特定の処理対象データの検索要求の送信元に返信し、前記条件が満たされていなければ異常応答を前記送信元に返信する結果判定手段と、
    をさらに有する請求項1記載の連想メモリ制御装置。
  5. 特定の処理対象データに対して、重複せず且つマスクされない2以上の所定数のフラグパターンを1フラグパターンずつ組み合わせ、同一の前記特定の処理対象データに対して異なるフラグパターンが組み合わされた前記所定数のビットパターンを生成するステップと、
    各々異なる1の前記ビットパターンを含む前記所定数のコマンドを連想メモリに出力するステップと、
    を含む連想メモリ制御方法。
JP2005354562A 2005-12-08 2005-12-08 連想メモリ制御装置及び方法 Expired - Fee Related JP4717617B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005354562A JP4717617B2 (ja) 2005-12-08 2005-12-08 連想メモリ制御装置及び方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005354562A JP4717617B2 (ja) 2005-12-08 2005-12-08 連想メモリ制御装置及び方法

Publications (2)

Publication Number Publication Date
JP2007157031A JP2007157031A (ja) 2007-06-21
JP4717617B2 true JP4717617B2 (ja) 2011-07-06

Family

ID=38241288

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005354562A Expired - Fee Related JP4717617B2 (ja) 2005-12-08 2005-12-08 連想メモリ制御装置及び方法

Country Status (1)

Country Link
JP (1) JP4717617B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI421562B (zh) 2010-12-03 2014-01-01 Largan Precision Co 攝像用光學鏡頭組
JP2013030254A (ja) 2011-07-29 2013-02-07 Toshiba Corp 半導体記憶装置、情報処理装置

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB1265013A (ja) * 1969-04-24 1972-03-01
GB1265014A (ja) * 1969-10-22 1972-03-01
JP3646276B2 (ja) * 1996-11-01 2005-05-11 株式会社ルネサステクノロジ 連想メモリ
JP2003281894A (ja) * 2002-03-22 2003-10-03 Kawasaki Microelectronics Kk 連想メモリ

Also Published As

Publication number Publication date
JP2007157031A (ja) 2007-06-21

Similar Documents

Publication Publication Date Title
TWI730004B (zh) 用於操作虛擬索引化之實體帶標快取記憶體的裝置及方法
TWI342492B (en) Method of providing extended memory protection
US7840874B2 (en) Speculative cache tag evaluation
JP2008234490A (ja) 情報処理装置および情報処理方法
KR100972807B1 (ko) 에러 정정 코드 생성 방법 및 메모리 관리 장치
JP2013196393A (ja) 演算処理装置及び演算処理装置の制御方法
JP2008234491A (ja) 情報処理装置および情報処理方法
JPH03225542A (ja) データ記憶方法及びビットエンコードデータの処理回路
TW200412491A (en) Method and apparatus for providing error correction within a register file of a CPU
JP4717617B2 (ja) 連想メモリ制御装置及び方法
US8549232B2 (en) Information processing device and cache memory control device
CN112181712B (zh) 一种提高处理器核可靠性的方法及装置
US6678638B2 (en) Processor having execution result prediction function for instruction
US9489255B2 (en) Dynamic array masking
JP3953903B2 (ja) キャッシュメモリ装置、及び、参照履歴のビット誤り検出方法
JP2008009857A (ja) キャッシュ制御回路およびプロセッサシステム
CN101419543B (zh) 预测高速寄存器的存取位置的方法及系统
JP4260805B2 (ja) Cam装置およびcam制御方法
JP2010049722A (ja) 連想メモリデータエラー検出装置及び連想メモリデータエラー検出方法並びにプログラム
US20210149813A1 (en) Data write system and method
JP2002279785A (ja) Cam検索システム及びそれに用いるcam検索方法並びにそのプログラム
JP2011150486A (ja) データ処理装置
US11537522B2 (en) Determining a tag value for use in a tag-guarded memory
JP2011054221A (ja) 記憶装置及び電子機器
JP2629613B2 (ja) 分岐予測装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080416

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20110329

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110330

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140408

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees