(57)【要約】【課題】内容照合メモリにおけるビットエラーを検出する方法を提供する。【解決手段】パリティビットが、ＣＡＭに接続されたＲＡＭに格納される。ＣＡＭ照会が整合すると、ＣＡＭによって出力されるアドレスに格納されている参照パリティビットが、ＲＡＭから出力される。これら参照パリティビットが、照会データ値から生成されるパリティビットと比較される。ＣＡＭまたはＲＡＭにビットエラーがない場合、ＲＡＭからの参照パリティビットが整合する。ＣＡＭまたはＲＡＭにビットエラーが発生する場合、これら２つのパリティビットセットは整合しないため、エラーが検出されることになる。【選択図】図１
2004054936.tif 000002
【特許請求の範囲】
【請求項１】
ＣＡＭビットエラーを検出する方法であって、
ＣＡＭの照会に使用されている照会データに対して照会パリティを生成するステップと、
ＲＡＭから格納パリティを検索するステップと、
前記格納パリティと前記照会パリティとを比較するステップと、
を含む方法。
【請求項２】
前記ＲＡＭから格納パリティを検索するステップは、前記ＣＡＭの照会に使用されている前記照会データに応答して、該ＣＡＭによって出力されているＣＡＭ出力アドレスに対応するＲＡＭアドレスから該格納パリティを検索するステップを含む請求項１記載の方法。
【請求項３】
前記ＣＡＭに格納されている入力データに対して入力パリティを生成するステップと、
前記入力パリティを前記ＲＡＭに格納するステップと、
をさらに含む請求項２記載の方法。
【請求項４】
前記ＣＡＭはＴＬＢの一部である請求項３記載の方法。
【請求項５】
ＣＡＭビットエラーを検出する方法であって、
第１のデータセットを使用してＣＡＭを照会するステップと、
前記第１のデータセットを使用しての照会に応答して、前記ＣＡＭによって提供されるアドレスに対応するロケーションから第２のデータセットを検索するステップと、
前記第１のデータセットおよび前記第２のデータセットから生成されるパリティを比較するステップと、
を含む方法。
【請求項６】
第３のデータセットを含むＣＡＭエントリを、前記ＣＡＭ中のＣＡＭエントリアドレスに格納するステップと、
前記ＣＡＭエントリアドレスに対応するロケーションにパリティエントリを格納するステップと、
を含む請求項５記載の方法。
【請求項７】
前記パリティエントリはＲＡＭに格納される請求項６記載の方法。
【請求項８】
前記ＲＡＭに追加データが格納される請求項７記載の方法。
【請求項９】
前記追加データはＴＬＢエントリの一部である請求項８記載の方法。
【請求項１０】
第１のデータビットセットに応答してアドレスをＲＡＭに供給するＣＡＭであって、該ＲＡＭは、第１のパリティビットセットを含む第２のデータビットセットを出力する、ＣＡＭと、
前記ＣＡＭを照会している前記第１のデータビットセットに対して第２のパリティビットセットを生成するパリティジェネレータと、
前記第１のパリティビットセットと前記第２のパリティビットセットとを比較するパリティコンパレータと、
を有する装置。
【発明の詳細な説明】
【０００１】
この出願は、２００２年７月１６日付で提出された米国特許出願第１０／１９６，７６３号に関連する。
【０００２】
【発明の属する技術分野】
本発明は、一般に内容照合メモリ（Ｃｏｎｔｅｎｔ　Ａｄｄｒｅｓｓａｂｌｅ　Ｍｅｍｏｒｙ　：　ＣＡＭ）に関し、特に、ＣＡＭに格納されるデータに生じる可能性のあるビットエラーの検出に関する。
【０００３】
【従来の技術】
ＣＡＭ構造は、照会データ値とＣＡＭのエントリに予め格納されているデータとの間でパターン照合を行う。整合する場合、整合したエントリのアドレスが出力される。外部エネルギが回路に与えられることにより、ビット値エラーがＣＡＭエントリにいつでも発生する可能性がある。たとえば、α粒子が衝突すると、ＣＡＭ内の記憶素子の１つの状態が変化することがある。これが発生する場合、誤った照会整合により、回路から誤ったアドレスが出力されることになる可能性がある。ＲＡＭの駆動にＣＡＭアドレスが使用される場合、このエラーは、ＲＡＭから誤ったデータが出力されることにもつながる。ＣＡＭエントリのコンテンツは通常、ＣＡＭ外部にはわからないため、この誤った（すなわち偽の）照会整合を検出することはできない。
【０００４】
【発明が解決しようとする課題】
本発明の目的は、マスク可能な内容照合メモリにおけるビットエラーを検出する方法を提供することである。
【０００５】
【課題を解決するための手段】
パリティビットおよびマスクビットが、ＣＡＭに接続されたランダムアクセスメモリ（ＲＡＭ）に格納される。パリティビットおよびマスクビットは、ＣＡＭエントリ書き込みと併せて格納される。ＣＡＭ照会が整合すると、ＣＡＭによって出力されるアドレスに格納されている参照パリティビットおよびマスクビットが、ＲＡＭから出力される。これら参照パリティビットが、検索されたマスクビットによってマスクされた照会データ値から生成されるパリティビットと比較される。ＣＡＭまたはＲＡＭにビットエラーがない場合、ＲＡＭからの参照パリティビットおよびマスクされた照会データから生成されるパリティビットが整合する。ＣＡＭまたはＲＡＭにビットエラーが発生する場合、これら２つのパリティビットセットは整合しないため、エラーが検出されることになる。このエラーは、偽のＣＡＭ整合が発生したことの指示として使用することができる。
【０００６】
【発明の実施の形態】
図１は、ＣＡＭビットエラー検出を示すブロック図である。図１では、矢印１０２が、ＣＡＭ１２０の矢印１０９によって表されるアドレスに書き込まれているデータを表す。データ１０２は、パリティジェネレータ１２２にも供給される。パリティジェネレータ１２２は、１つまたは複数の入力パリティビット１０５をデータ１０２から生成する。パリティジェネレータ１２２によって生成された入力パリティ１０５は、奇数パリティまたは偶数パリティ等の単純なシングルビットパリティであっても、またはエラー修正コード（ＥＣＣ）等のより複雑なマルチビットパリティであってもよい。パリティジェネレータ１２２によって生成される入力パリティビットは、矢印１０５で表される。入力パリティ１０５は、矢印１０９として示されるアドレスに対応するアドレスにおいてＲＡＭ１２１に書き込まれる。したがって、エントリがＣＡＭ１２０の特定アドレスに書き込まれた後、対応する入力パリティエントリが、ＲＡＭ１２１の対応するアドレスに格納されることになる。
【０００７】
照会データがＣＡＭ１２０に供給されると、ＣＡＭ１２０は、照会データを含むアドレスを出力するか、またはその照会データがＣＡＭにないことを示すことができる。図１では、照会データは矢印１０１で表される。この照会データは、パリティジェネレータ１２３にも供給される。照会が整合する場合、ＣＡＭ１２０によって出力されるアドレスは矢印１０３で表される。照会が整合するアドレス１０３は、ＲＡＭ１２１に転送され、ＲＡＭの対応するアドレスに格納されている（少なくとも）パリティを検索する。ＲＡＭによって出力される格納パリティは、矢印１０７で表される。ＲＡＭ１２１の対応するアドレスに格納されている任意の追加データも出力することができる。この追加データは、矢印１０４で表される。
【０００８】
パリティジェネレータ１２３は、矢印１０６で表される照会パリティビットを出力する。パリティジェネレータ１２３によって生成された照会パリティビット１０６は、通常、パリティジェネレータ１２２によって生成されるものと同じ符号化である。しかし、パリティコンパレータ１２４およびＲＡＭ１２１の機能に応じて、特定の反転、または他の変換等によりパリティジェネレータ１２２によって生成される符号化とは異なってもよい。パリティビット１０６と格納パリティ出力１０７とは、コンパレータ１２４によって比較される。この比較の結果１０８は、ＣＡＭにおいて照会されたエントリに、またはそのエントリに対応する格納パリティにビットエラーがあるか否かを示す。
【０００９】
図２は、マスク可能ビットを使用してのＣＡＭビットエラー検出を示すブロック図である。図２では、矢印２０２が、ＣＡＭ２２０の矢印２０９によって表されるアドレスに書き込まれているデータを表す。データ２０２は、マスクブロック２２５にも供給される。矢印２１０は入力マスクビットを表す。入力マスクビット２１０は、ＣＡＭ２２０、マスクブロック２２５、およびＲＡＭ２２１に供給される。入力マスクビット２１０は、データ２０２と同じアドレス２０９においてＣＡＭ２２０に格納され、アドレス２０９におけるエントリに照会が整合するかどうかを判断する際に考慮するビットおよび考慮しないビットをＣＡＭ２２０に教える。
【００１０】
マスクブロック２２５は、データ２０２およびマスクビット２１０を受け取り、データ２０２中の特定のビットを所定の値（すなわち、論理１または０）にセットする。この所定の値にセットされたビットは、マスクビット２１０の値によって与えられる。たとえば、データ２０２が４ビット幅（かつあらゆる任意の長さであることができる）であり、二進値が「１１００」であり、マスクビット２１０の二進値が「１０１０」である（かつ、１がパスを意味し、０がマスクを意味するように選ばれた）場合、マスクブロック２２５は「１０００」を出力することができ、データ２０２のビット０およびビット２（ビット０が一番右に、ビット３が一番左になるように右から左にビットに付番）を効率的に論理０にマスクする。データ２０２は論理１にマスクして、マスクブロック出力２１１「１１０１」にすることもできる。マスクブロック出力２１１は、パリティジェネレータ２２２に供給される。
【００１１】
パリティジェネレータ２２２は、マスクブロック出力２１１から１つまたは複数の入力パリティビット２０５を生成する。パリティジェネレータ２２２によって生成される入力パリティ２０５は、奇数パリティまたは偶数パリティ等の単純なシングルビットパリティであっても、またはエラー修正コード（ＥＣＣ）等のより複雑なマルチビットパリティであってもよい。パリティ計算は、照会整合に影響を及ぼす、または照会整合を制御するビットに限定されることに留意されたい。これは、マスクされたビットは、整合があるかどうかを判断する際に無視されることから、マスクされたビットにおけるエラーは誤った整合につながらないためである。たとえば、データビット１３がＣＡＭエントリにおいてマスクされる場合、そのエントリのパリティは、照会データのビット１３の値に関係なく同じであるべきである。したがって、ビット１３は、そのエントリに関連するパリティ計算前にマスクされるべきである。パリティジェネレータ２２２によって生成される入力パリティビットは、矢印２０５で表される。入力パリティ２０５は、マスクビット２１０と共に、矢印２０９で示されるアドレスに対応するアドレスにおいてＲＡＭ２２１に書き込まれる。したがって、エントリがＣＡＭ２２０の特定のアドレスに書き込まれた後、対応する入力パリティエントリおよびマスクビットエントリが、ＲＡＭ２２１の対応するアドレスに格納されることになる。
【００１２】
照会データがＣＡＭ２２０に供給されると、ＣＡＭ２２０は、その照会データ２０１を含むアドレスを出力するか、またはその照会データ２０１がＣＡＭにないことを示すことができる。図２では、照会データが矢印２０１で表される。この照会データは、マスクブロック２２６にも供給される。照会が整合する場合に、ＣＡＭ２２０によって出力されるアドレスは、矢印２０３で表される。照会が整合するアドレス２０３はＲＡＭ２２１に転送され、ＲＡＭ２２１の対応するアドレスに格納されている（少なくとも）パリティおよびマスクビットを検索する。ＲＡＭによって出力される格納パリティは、矢印２０７で表される。格納マスクビットは、矢印２１２で表される。ＲＡＭ２２１の対応するアドレスに格納されている任意の追加データも出力することができる。この追加データは、矢印２０４で表される。
【００１３】
マスクブロック２２６は、照会データ２０１および格納マスクビット２１２を受け取り、照会データ２０１中の特定のビットを所定の値（すなわち、論理１または０）にセットする。マスクブロック２２６の機能は、マスクブロック２２５と同様である。マスクブロック２２６の出力は矢印２１３で表され、パリティジェネレータ２２３に供給される。
【００１４】
パリティジェネレータ２２３は、矢印２０６によって表される照会パリティビットを出力する。パリティジェネレータ２２３によって生成される照会パリティビット２０６は、通常、パリティジェネレータ２２２によって生成されるものと同じ符号化である。しかし、パリティコンパレータ２２４、マスクブロック２２５および２２６、パリティジェネレータ２２２および２２３、ならびにＲＡＭ２２１の機能に応じて、特定の反転、または他の変換等によりパリティジェネレータ２２２によって生成される符号化とは異なってもよい。パリティビット２０６と格納パリティ出力２０７とが、コンパレータ２２４によって比較される。この比較の結果２０８は、ＣＡＭ２２１において照会されたエントリ、ＣＡＭ２２１または格納パリティのいずれか一方におけるマスクビット、あるいはそのエントリに対応するマスクビットにビットエラーがあったか否かを示す。
【００１５】
図３は、ＣＡＭのビットエラーを検出するステップを示すフローチャートである。これらステップは、図１のブロック図に適用することができるが、そのブロック構成のみを有する適用に限定されない。他の構成のブロックも、これらステップの完了に使用することができる。図３では、ステップ３０２において、ＣＡＭに書き込まれている入力データに対して入力パリティが生成される。生成された入力パリティは、奇数パリティまたは偶数パリティ等の単純なシングルビットパリティであっても、またはエラー修正コード（ＥＣＣ）等のより複雑なマルチビットパリティであってもよい。ステップ３０４において、入力データがＣＡＭの入力アドレスに格納される。ステップ３０６において、入力パリティが、入力データがＣＡＭに格納されたアドレスに対応するアドレスにおいてＲＡＭに格納される。言い換えれば、入力パリティは、照会がＣＡＭにおいて整合し、ＣＡＭがアドレスを出力する場合に、ＣＡＭが出力するアドレスがアドレスとして直接使用されるか、あるいはＲＡＭのアドレス入力に適用されるアドレスへのインデックスとして使用されるときにＲＡＭが入力パリティを出力するアドレスに格納される。
【００１６】
ステップ３０８において、ＣＡＭの適切な入力に照会データを供給することによってＣＡＭが照会される。ステップ３１０において、ＣＡＭに与えられている照会データに対して、照会パリティが生成される。このパリティアルゴリズムは、ステップ３０２において使用されたアルゴリズムに整合する結果を生成するか、または反転や他の重要ではない変換等の重要ではない要因によってのみ異なるはずである。ステップ３１２において、ステップ３０８において照会された際にＣＡＭによって供給されるアドレスに対応するＲＡＭロケーションにアクセスすることにより、格納パリティがＲＡＭから検索される。ステップ３１４において、生成された照会パリティおよびＲＡＭからの格納パリティが比較される。整合する場合、ＣＡＭコンテンツあるいはＲＡＭ格納パリティコンテンツにビットエラーがないことが検出される。整合しない場合、ＣＡＭコンテンツあるいはＲＡＭ格納パリティコンテンツにビットエラーが検出される。
【００１７】
図４は、マスク可能ビットを使用してＣＡＭにおけるＣＡＭビットエラーを検出するステップを示すフローチャートである。これらステップは図２のブロック図に適用することができるが、そのブロック構成のみを有する適用に限定されない。他の構成のブロックも、これらステップの完了に使用することができる。図４では、ステップ４０１において、入力データが、マスクビットセットに従ってマスクされる。ステップ４０２において、入力パリティが、ステップ４０１からのマスクされた入力データに対して生成される。生成された入力パリティは、奇数パリティまたは偶数パリティ等の単純なシングルビットパリティであっても、またはエラー修正コード（ＥＣＣ）等のより複雑なマルチビットパリティであってもよい。パリティ計算は、照会整合に影響を及ぼす、または照会整合を制御するビットに限定されることに留意されたい。たとえば、データビット１３がＣＡＭエントリにおいてマスクされる場合、そのエントリのパリティは、照会データのビット１３の値に関係なく同じであるべきである。したがって、ビット１３は、そのエントリに関連するパリティ計算前にマスクされるべきである。ステップ４０４において、入力データおよびマスクビットセットが、ＣＡＭの入力アドレスに格納される。ステップ４０６において、入力パリティおよびマスクビットセットが、入力データがＣＡＭに格納されたアドレスに対応するＲＡＭのアドレスに格納される。言い換えれば、入力パリティおよびマスクビットは、照会がＣＡＭにおいて整合し、ＣＡＭがアドレスを出力する場合に、ＣＡＭが出力するアドレスがアドレスとして直接使用されるか、あるいはＲＡＭのアドレス入力に適用されるアドレスへのインデックスとして使用されるときにＲＡＭが入力パリティを出力するアドレスに格納される。
【００１８】
ステップ４０８において、ＣＡＭの適切な入力に照会データを供給することによってＣＡＭが照会される。ステップ４１２において、ステップ４０８において照会された際にＣＡＭによって供給されたアドレスに対応するＲＡＭロケーションにアクセスすることによって、格納パリティおよび格納マスクビットがＲＡＭから検索される。ステップ４１３において、照会データが、ステップ４１２において検索された格納マスクビットに従ってマスクされる。ステップ４１０において、照会パリティが、ステップ４１３からのマスクされた照会データに対して生成される。このパリティアルゴリズムは、ステップ４０２において使用されたアルゴリズムに整合する結果を生成するか、または反転や他の重要ではない変換等の重要ではない要因によってのみ異なるはずである。ステップ４１４において、生成された照会パリティおよびＲＡＭからの格納パリティが比較される。整合する場合、ＣＡＭコンテンツあるいはＲＡＭ格納パリティコンテンツ、またはＲＡＭ格納マスクビットにおけるビットエラーは検出されない。整合しない場合、ＣＡＭコンテンツ、ＲＡＭ格納パリティコンテンツ、または格納マスクビットにビットエラーが検出される。
【００１９】
マスクビットを使用した、または使用しないＣＡＭの一用法は、ＴＬＢ（Ｔｒａｎｓｌａｔｉｏｎ　Ｌｏｏｋ−ａｓｉｄｅ　Ｂｕｆｆｅｒ，　アドレス変換バッファ）においてである。本願では、仮想アドレス（またはその一部）がＣＡＭに送られる。ヒットが発生する場合、ＣＡＭが、物理アドレスの少なくとも一部をＲＡＭに出力させる。ＴＬＢのＣＡＭにおけるビットエラーは、以下の２つのうちの一方が発生する可能性がある。第１には、ビットエラーにより、普通なら有効なＴＬＢエントリがヒットを得ることが妨げられる（すなわち、ビットエラーにより、整合すべきＴＬＢエントリが整合しなくなる）。この場合、ＴＬＢ中のエントリの置換が、最低使用頻度ベースでしばしば行われるため、エラーのあるエントリが、決して整合しないことから最終的に置換される。このタイプのビットエラーは検出されない。しかし、違反するエントリは最終的に置換されるか、または書き換えされるため、このタイプのビットエラーは深刻な問題につながらない傾向がある。第２は、整合すべきではない場合にＴＬＢエントリを整合させるビットエラーである。このタイプのビットエラーは、コンピュータオペレーションに深刻な問題を引き起こす可能性があり、整合させてしまうため、使用されないために最終的に置換されないことがある。しかし、上述した方法および装置は、このエントリを無効化する、書き換える、またはビットエラーにより問題が発生する前に処理することができるため、このタイプのビットエラーの検出に役立つ。
【図面の簡単な説明】
【図１】ＣＡＭビットエラーの検出を示すブロック図。
【図２】マスク可能ビットを使用してのＣＡＭビットエラーの検出を示すブロック図。
【図３】ＣＡＭビットエラーを検出するステップを示すフローチャートを示す図。
【図４】マスク可能ビットを使用してＣＡＭにおけるＣＡＭビットエラーを検出するステップを示すフローチャートを示す図。
【符号の説明】
３１０　照会データに対して照会パリティを生成
３１２　ＣＡＭによって供給されるアドレスに対応する、ＲＡＭのアドレスから格納パリティを検索
３１４　照会パリティと格納パリティとを比較
【図１】
2004054936.tif 000003
【図２】
2004054936.tif 000004
【図３】
2004054936.tif 000005
【図４】
2004054936.tif 000006