(57)【特許請求の範囲】
【請求項１】
キャッシュメモリ内の有効インジケータにおけるビットフリップを検出するためのキャッシュメモリエラー検出回路であって、
前記キャッシュメモリに対して実行された無効化動作に基づいて無効化インターバルステートを進めるための手段と、
少なくとも1つのキャッシュエントリの確立に応じて、前記無効化インターバルステートに基づいて前記キャッシュメモリ内の前記少なくとも1つのキャッシュエントリの各々について冗長情報インジケータを生成するための手段と、
前記キャッシュメモリ内のアクセスされたキャッシュエントリのための有効インジケータが有効状態を示すことに応じて、
前記キャッシュメモリ内の前記アクセスされたキャッシュエントリのための前記冗長情報インジケータを受信し、
前記無効化インターバルステートを受信し、
前記無効化インターバルステートに基づいて現在の冗長情報インジケータを生成し、
前記アクセスされたキャッシュエントリのための前記冗長情報インジケータを前記現在の冗長情報インジケータと比較する
ための手段と
を備えるキャッシュメモリエラー検出回路。
【請求項２】
前記進めるための手段が、前記キャッシュメモリにおいて実行された前記無効化動作に基づいて前記無効化インターバルステートを進めるように構成された少なくとも1つの無効化インターバルインジケータであり、
前記生成するための手段が、前記キャッシュメモリ内の少なくとも1つのキャッシュエントリの確立に応じて、前記無効化インターバルステートに基づいて前記少なくとも1つのキャッシュエントリの各々について前記冗長情報インジケータを生成するように構成された冗長情報インジケータ生成回路であり、
前記有効インジケータに応じた手段が、前記キャッシュメモリ内の前記アクセスされたキャッシュエントリのための前記有効インジケータが前記有効状態を示すことに応じて、
前記キャッシュメモリ内の前記アクセスされたキャッシュエントリのための前記冗長情報インジケータを受信し、
前記少なくとも1つの無効化インターバルインジケータから前記無効化インターバルステートを受信し、
前記無効化インターバルステートに基づいて前記現在の冗長情報インジケータを生成し、
前記アクセスされたキャッシュエントリのための前記冗長情報インジケータを前記現在の冗長情報インジケータと比較する
ように構成された少なくとも1つの冗長情報インジケータ検証回路である、請求項1に記載のキャッシュメモリエラー検出回路。
【請求項３】
前記少なくとも1つの冗長情報インジケータ検証回路が、前記冗長情報インジケータと前記現在の冗長情報インジケータの前記比較に基づいて、前記アクセスされたキャッシュエントリにおいてビットフリップが発生したかどうかを示すキャッシュエントリエラーインジケータを生成するようにさらに構成される、請求項2に記載のキャッシュメモリエラー検出回路。
【請求項４】
前記少なくとも1つの無効化インターバルインジケータが、前記無効化インターバルステートを現在の無効化インターバルステートとして提供するようにさらに構成され、
前記冗長情報インジケータ生成回路が、前記キャッシュメモリ内の前記少なくとも1つのキャッシュエントリの確立に応じて、前記現在の無効化インターバルステートに基づいて前記少なくとも1つのキャッシュエントリの各々について前記冗長情報インジケータを生成するように構成され、
前記少なくとも1つの冗長情報インジケータ検証回路が、
前記少なくとも1つの無効化インターバルインジケータから前記無効化インターバルステートを前記現在の無効化インターバルステートとして受信し、
前記現在の無効化インターバルステートに基づいて前記現在の冗長情報インジケータを生成する
ように構成される、
請求項2に記載のキャッシュメモリエラー検出回路。
【請求項５】
前記少なくとも1つの無効化インターバルインジケータが、前記現在の無効化インターバルステートに基づかずに前記無効化インターバルステートを提供するようにさらに構成される、請求項4に記載のキャッシュメモリエラー検出回路。
【請求項６】
前記冗長情報インジケータ生成回路が、前記冗長情報インジケータを前記少なくとも1つのキャッシュエントリに記憶するようにさらに構成される、請求項2に記載のキャッシュメモリエラー検出回路。
【請求項７】
前記少なくとも1つの冗長情報インジケータ検証回路が、前記冗長情報インジケータと前記現在の冗長情報インジケータの前記比較に基づいて、前記アクセスされたキャッシュエントリにおいて前記ビットフリップが発生したかどうかを示す前記キャッシュエントリエラーインジケータを生成するように構成される、請求項3に記載のキャッシュメモリエラー検出回路。
【請求項８】
前記キャッシュエントリエラーインジケータを受信し、前記受信されたキャッシュエントリエラーインジケータに基づいてキャッシュヒット/ミスインジケータを生成するように構成されたキャッシュヒット/ミスインジケータ回路をさらに備える、請求項3に記載のキャッシュメモリエラー検出回路。
【請求項９】
前記キャッシュヒット/ミスインジケータ回路が、
前記受信されたキャッシュエントリエラーインジケータが、前記アクセスされたキャッシュエントリにおいて前記ビットフリップが発生したことを示す場合、前記キャッシュヒット/ミスインジケータをキャッシュミスとして生成し、
前記受信されたキャッシュエントリエラーインジケータが、前記アクセスされたキャッシュエントリにおいて前記ビットフリップが発生したことを示さない場合、前記キャッシュヒット/ミスインジケータをキャッシュヒットとして生成する
ように構成される、請求項8に記載のキャッシュメモリエラー検出回路。
【請求項１０】
前記少なくとも1つの無効化インターバルインジケータが、前記キャッシュメモリに対する前記無効化動作を示す無効化イネーブル入力上で無効化イネーブル信号を受信するようにさらに構成される、
前記冗長情報インジケータが、前記無効化インターバルステートから成る、
前記少なくとも1つの冗長情報インジケータ検証回路が、前記少なくとも1つのキャッシュエントリのために生成されるエラー検出コードにおいて、前記冗長情報インジケータを符号化冗長情報インジケータとして生成するようにさらに構成される、
前記冗長情報インジケータ生成回路が、エラー検出コード生成回路に含まれる、または、
前記少なくとも1つの無効化インターバルインジケータが、無効化インターバル構成設定に基づいた無効化インターバルステート範囲にわたって、前記無効化インターバルステートを進めるようにさらに構成される、請求項2に記載のキャッシュメモリエラー検出回路。
【請求項１１】
前記少なくとも1つのキャッシュエントリが、複数のキャッシュエントリから成り、前記少なくとも1つの無効化インターバルインジケータが、各々が関連する無効化インターバルステートを有する複数の無効化インターバルインジケータから成り、前記複数の無効化インターバルインジケータの各々が、前記複数のキャッシュエントリの中の前記少なくとも1つのキャッシュエントリの選択的な群に関連付けられ、
前記複数の無効化インターバルインジケータがそれぞれ、前記複数の無効化インターバルインジケータのうちの対応する無効化インターバルインジケータに関連付けられた前記少なくとも1つのキャッシュエントリの前記選択的な群に対して実行された前記無効化動作に基づいて、前記関連する無効化インターバルステートを進めるように構成される、
請求項2に記載のキャッシュメモリエラー検出回路。
【請求項１２】
前記複数の無効化インターバルインジケータの各々が、前記キャッシュメモリに対して実行されたフラッシュ無効化動作に基づいて、前記関連する無効化インターバルステートを進めるように構成され、
前記複数の無効化インターバルインジケータの中の無効化インターバルインジケータが、前記複数の無効化インターバルインジケータのうちの前記対応する無効化インターバルインジケータに関連付けられた前記少なくとも1つのキャッシュエントリの前記選択的な群に対する選択的な無効化動作に基づいて、前記関連する無効化インターバルステートを進めるように構成される、請求項11に記載のキャッシュメモリエラー検出回路。
【請求項１３】
前記少なくとも1つの冗長情報インジケータ検証回路が、複数の冗長情報インジケータ検証回路から成り、前記少なくとも1つの無効化インターバルインジケータが、前記無効化インターバルステートを前記複数の冗長情報インジケータ検証回路に提供するように構成される、または、
前記少なくとも1つの冗長情報インジケータ検証回路が、前記少なくとも1つのキャッシュエントリのために生成されるエラー検出コードにおいて、前記冗長情報インジケータを符号化冗長情報インジケータとして生成するようにさらに構成され、
前記少なくとも1つの冗長情報インジケータ検証回路が、
前記キャッシュメモリ内の前記アクセスされたキャッシュエントリのための前記符号化冗長情報インジケータを受信し、
前記少なくとも1つの無効化インターバルインジケータから前記無効化インターバルステートを受信し、
前記無効化インターバルステートに基づいて前記現在の冗長情報インジケータを生成する
ように構成された前記冗長情報インジケータ生成回路と、
前記アクセスされたキャッシュエントリのための前記符号化冗長情報インジケータを前記現在の冗長情報インジケータと比較し、
前記符号化冗長情報インジケータと前記現在の冗長情報インジケータの前記比較に基づいて、前記アクセスされたキャッシュエントリにおいて前記ビットフリップが発生したかどうかを示すキャッシュエントリエラーインジケータを生成する
ように構成された冗長情報インジケータ比較回路と
を備える、または、
前記少なくとも1つの無効化インターバルインジケータが、前記キャッシュメモリ内の対象とされるキャッシュエントリに対して実行された前記無効化動作に基づいて、前記無効化インターバルステートを進めないようにさらに構成され、
前記冗長情報インジケータ生成回路が、前記キャッシュメモリ内の前記対象とされるキャッシュエントリの確立に応じて、前記無効化インターバルステートではない状態に基づいて、前記対象とされるキャッシュエントリのための冗長情報インジケータを生成するようにさらに構成される、
請求項2に記載のキャッシュメモリエラー検出回路。
【請求項１４】
無効化動作後のキャッシュメモリ内の有効インジケータにおけるビットフリップからキャッシュメモリエラーを検出する方法であって、
前記キャッシュメモリに対して実行された無効化動作に基づいて少なくとも1つの無効化インターバルインジケータの無効化インターバルステートを進めるステップと、
少なくとも1つのキャッシュエントリを確立したことに応じて、前記キャッシュメモリ内の前記少なくとも1つのキャッシュエントリの各々について冗長情報インジケータを生成するステップと、
前記キャッシュメモリ内のアクセスされたキャッシュエントリのための有効インジケータが有効状態を示すことに応じて、
前記キャッシュメモリ内のアクセスされたキャッシュエントリのための前記冗長情報インジケータを受信するステップと、
前記少なくとも1つの無効化インターバルインジケータから前記無効化インターバルステートを受信するステップと、
前記無効化インターバルステートに基づいて現在の冗長情報インジケータを生成するステップと、
前記アクセスされたキャッシュエントリのための前記冗長情報インジケータを前記現在の冗長情報インジケータと比較するステップと
を含む方法。
【請求項１５】
プロセッサベースのキャッシュメモリエラー検出回路に、請求項14に記載の方法を実行させるコンピュータ実行可能命令を記憶したコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
優先権主張
本出願は、その全体が参照により本明細書に組み込まれる、2014年4月18日に出願された「CACHE MEMORY ERROR DETECTION CIRCUITS FOR DETECTING BIT FLIPS IN VALID INDICATORS IN CACHE MEMORY FOLLOWING INVALIDATE OPERATIONS, AND RELATED METHODS AND PROCESSOR-BASED SYSTEMS」という名称の米国特許出願第14/256,360号の優先権を主張する。
【０００２】
本開示の分野は、プロセッサベースのシステム内のキャッシュメモリにおけるビットフリップを検出することに関する。
【背景技術】
【０００３】
メモリセルは、「メモリ」としても知られるコンピュータデータストレージの基本ビルディングブロックである。コンピュータシステムは、メモリからデータを読み込むかまたはデータをメモリに書き込むことができる。メモリは、一例として、中央処理装置(CPU)システムにおいてキャッシュメモリを提供するために使用され得る。キャッシュメモリは、メモリアクセスレイテンシを低減するために、メインメモリまたは上位レベルキャッシュメモリ内の頻繁にアクセスされるメモリアドレスにおいて記憶されたデータのコピーを記憶する、より小型でより高速なメモリである。したがって、キャッシュメモリは、メモリアクセス時間を低減するためにCPUによって使用され得るメモリである。
【０００４】
キャッシュメモリは、タグアレイおよびデータアレイから成る。タグアレイは、「タグ」としても知られるアドレスを含む。タグは、データアレイ内のデータ記憶ロケーションへのインデックスを提供する。タグアレイ内のタグおよびデータアレイ内のタグのインデックスにおいて記憶されたデータは、「キャッシュライン」または「キャッシュエントリ」としても知られる。メモリアクセス要求の一部としてキャッシュメモリに提供されるメモリアドレスまたはその部分がタグアレイ内のタグと一致する場合、これは「キャッシュヒット」として知られる。キャッシュヒットは、一致するタグのインデックスにおいて含まれるデータアレイ内のデータが、メインメモリおよび/または上位レベルキャッシュメモリ内の要求されたメモリアドレスに対応するデータを含むことを意味する。一致するタグのインデックスにおけるデータアレイに含まれるデータは、より大きいメモリアクセスレイテンシを有するメインメモリまたは上位レベルキャッシュメモリにアクセスしなければならないことに対立するものとして、メモリアクセス要求に使用され得る。しかしながら、メモリアクセス要求のメモリアドレスまたはその部分がタグアレイ内のタグと一致しない場合、またはキャッシュエントリが他の点で無効である場合、これは「キャッシュミス」として知られる。キャッシュミスでは、データアレイは、メモリアクセス要求を満たすことができるデータを含まないと見なされる。
【０００５】
キャッシュヒットの場合、メモリアクセス要求のメモリアドレスまたはその部分がタグアレイ内のタグと一致しなければならないだけでなく、一致したタグに対応するキャッシュエントリも有効でなければならない。この点について、キャッシュエントリの有効性を示すために、有効インジケータ(たとえば、有効ビット)がキャッシュメモリ内のキャッシュエントリごとに提供される。したがって、有効インジケータはまた、キャッシュエラー論理の一部としてキャッシュメモリアクセスにおいて照会される。有効インジケータは、キャッシュエントリのためのデータアレイに記憶されたデータがもはや有効ではないとき、無効状態に設定され得る。有効インジケータはまた、キャッシュエントリを削除するための便利な方法を提供する。キャッシュエントリを削除するために、削除されるべきキャッシュエントリに対応する有効インジケータは、キャッシュエントリのためのデータアレイに記憶されたデータを上書きするのではなく、単に無効状態(たとえば、論理0「0」値、ここで、論理1「1」値は有効状態を示す)に設定され得る。したがって、有効データでフィルされる前に、削除されたキャッシュエントリが後でアクセスされた場合、アクセスされたキャッシュエントリのための有効インジケータは、キャッシュエントリの無効状態を表す。この事例では、有効インジケータは、キャッシュメモリにキャッシュエントリアクセスに対するキャッシュミスを生成させる。しかしながら、放射線または電力サージなどにより、有効インジケータにおいて偶発的なビットフリップが発生し、それによって、有効インジケータが無効キャッシュエントリの有効状態を不適切に示すことを引き起こしてしまう場合、キャッシュメモリは、本当はキャッシュミスとすべきところを、この無効キャッシュエントリにアクセスしたときに誤ったキャッシュヒットを生成する。その結果、有効インジケータのビットフリップの結果として、メモリアクセス要求に対して、無効データがキャッシュメモリから提供され得る。
【０００６】
したがって、キャッシュメモリ設計において、有効インジケータにおけるビットフリップの可能性を考慮することが望まれる。キャッシュメモリ内の有効インジケータにおけるビットフリップを考慮する1つの方法は、ビットフリップが発生しないようにすることである。たとえば、有効インジケータを、有効インジケータがビットフリップを受けにくくするために、耐放射性化してもよい。しかしながら、耐放射性化は、キャッシュメモリの性能を低下させる形でコストまたは回路の複雑性を増す場合がある。
【０００７】
キャッシュメモリ内の有効インジケータにおいてビットフリップが発生しないようにする代替方法は、有効インジケータにおけるビットフリップを検出することである。有効インジケータにおけるビットフリップを検出する1つの方法は、キャッシュメモリ内の各キャッシュエントリにおける有効インジケータを複製することである。キャッシュメモリは、アクセスされたキャッシュエントリのための両方の有効インジケータが有効である場合、キャッシュヒットのみを生成するように設計される。したがって、有効インジケータの一方においてビットフリップが発生した場合、複製の有効インジケータは一致しない。しかしながら、キャッシュメモリ内のキャッシュエントリにおける有効インジケータを複製することは、キャッシュメモリ内の追加の回路を必要とする。アクセスされたキャッシュエントリのための有効インジケータが一致するかどうかを判断するために必要とされる追加の論理に複製の有効インジケータを提供したことの結果として、キャッシュメモリに対するアクセスレイテンシおよびキャッシュアクセスによって消費されるエネルギーも増加する場合がある。また、所与のキャッシュエントリのための複製の有効インジケータにおいて同じビットフリップが発生した場合、有効インジケータは依然として一致し、場合によっては誤ったキャッシュヒットを生成する。
【０００８】
キャッシュメモリ内の有効インジケータにおけるビットフリップを検出する別の方法は、パリティ動作およびパリティ検査に有効インジケータを含めることである。パリティロジックが、キャッシュエントリのフィル(fill)についてのキャッシュエントリのための有効インジケータを含む、キャッシュエントリまたはその部分のためのパリティ(たとえば、パリティビットまたはワード)を生成するために、キャッシュメモリにおいて提供され得る。キャッシュメモリにおいてキャッシュエントリがアクセスされたとき、パリティが検査される。偶発的なビットフリップが発生した場合、生成されたパリティはキャッシュエントリのパリティまたはその部分と一致せず、結果としてキャッシュミスがキャッシュメモリによって生成される。したがって、キャッシュエントリの有効インジケータがパリティの生成に含まれる場合、有効インジケータにおけるビットフリップは、キャッシュミスを生成するかまたはエラーをシグナリングするために使用されるパリティ不一致をもたらす。しかしながら、パリティインジケータの一部として有効インジケータを提供することは、不利である可能性がある。有効インジケータがキャッシュエントリのためのパリティに含まれる場合、キャッシュメモリ内のキャッシュエントリが変更されたときにパリティが再生成されなければならない。したがって、キャッシュエントリが削除された場合、有効インジケータを単に無効状態に設定することができない。新しいパリティインジケータも生成され、キャッシュエントリに記憶されなければならず、それによって、レイテンシおよびキャッシュエントリ削除動作のエネルギーを増加させる。有効インジケータを単に無効化することによってキャッシュメモリ内の複数のキャッシュエントリが同時にかつ迅速に無効化されることを可能にする「フラッシュ無効化」動作または「選択的無効化」動作をキャッシュメモリがサポートする場合、この性能ペナルティおよびエネルギーの増加は相当なものとなる可能性がある。キャッシュメモリの有効インジケータがキャッシュエントリのためのパリティに含まれる場合、無効化されたキャッシュエントリごとのパリティもキャッシュフラッシュ無効化動作または選択的無効化動作ごとに再生成されなければならない。
【発明の概要】
【課題を解決するための手段】
【０００９】
本明細書で開示する態様は、無効化動作後のキャッシュメモリ内の有効インジケータ(たとえば、有効ビット)におけるビットフリップを検出するためのキャッシュメモリエラー検出回路を含む。関連する方法およびプロセッサベースのシステムも開示される。無効化動作後に、ただしキャッシュエントリが再確立される前に、キャッシュヒットがキャッシュエントリ(たとえば、タグ)へのアクセスの結果生じている場合、キャッシュエントリに関連付けられた有効インジケータにおいてビットフリップが発生している。これは、無効化動作後かつキャッシュエントリの再確立の前は、有効インジケータが、(キャッシュヒットに関する)有効状態ではなく、(キャッシュミスに関する)無効状態を示すはずであるからである。したがって、本明細書で開示する態様では、有効インジケータがキャッシュメモリ内のアクセスされたキャッシュエントリの有効状態を示すとき、キャッシュメモリエラー検出回路は、無効化動作がキャッシュエントリの再確立の前にキャッシュエントリに対して実行されたかどうかを判断するように構成される。無効化動作がキャッシュエントリに対して実行された場合、有効インジケータが無効状態を示し、キャッシュミスを生成させるはずであるので、有効インジケータにおいてビットフリップが発生している。有効インジケータは無効化動作後に無効状態に設定されるので、有効インジケータは無効状態を示すはずである。キャッシュメモリエラー検出回路は、キャッシュエントリのための有効インジケータがビットフリップのせいで有効状態を示していても、結果として、アクセスされたキャッシュエントリに対してキャッシュミスを生成させるかまたはエラーを示させることができる。
【００１０】
したがって、本明細書で開示する態様では、キャッシュエントリの再確立の前にいつ無効化動作が発生したかを判断するためのキャッシュメモリエラー検出回路に、無効化インターバルインジケータ(たとえば、カウンタ)が提供される。無効化インターバルインジケータは、キャッシュメモリに対して実行される無効化動作ごとに無効化インターバルステート(たとえば、カウント)を進める。無効化インターバルステート、またはその符号化されたバージョンは、キャッシュメモリにおいてキャッシュエントリが確立されたときにキャッシュエントリに記憶される。後でアクセスされたキャッシュエントリのための有効インジケータが有効状態を示す場合、キャッシュメモリエラー検出回路は無効化動作が発生しなかったことを確認する。キャッシュエントリが確立されたときにキャッシュエントリにおいて最初に記憶または符号化された無効化インターバルステートが、アクセスされたキャッシュエントリのための有効インジケータが有効状態を示すときの現在の無効化インターバルステートではない場合、これは、無効化動作後に、キャッシュエントリに関連付けられた有効インジケータにおいてビットフリップが発生したという指標である。これは、無効化動作が有効インジケータを強制的に無効状態にしたので、無効化動作後は、アクセスされたキャッシュエントリのための有効インジケータが、有効状態ではなく、無効状態を示すはずであるからである。したがって、この例では、キャッシュメモリエラー検出回路は、キャッシュエントリに対応するデータアレイに記憶されたデータを使用することを回避するために、検出された無効化動作後に、アクセスされたキャッシュエントリに関連付けられた有効インジケータにおいてビットフリップが検出されたときに、(キャッシュヒットではなく)キャッシュミスまたはエラー表示を生成させるように構成される。
【００１１】
無効化インターバルステートは、キャッシュエントリが確立されたときにキャッシュメモリ内のキャッシュエントリにおいて記憶または符号化されたので、キャッシュメモリエラー検出回路は、有効インジケータを耐放射性化を用いて保護することなく、またはキャッシュエントリのためのパリティに有効インジケータを含めることなしに、キャッシュメモリ内の有効インジケータにおけるビットフリップを検出することができる。有効インジケータのビットフリップを検出するために、有効インジケータをキャッシュエントリのためのパリティに含めた場合、有効インジケータを強制的に無効状態にすることに加えて、キャッシュメモリフラッシュ無効化動作において各キャッシュエントリのパリティが再計算されなければならず、したがって、レイテンシおよびフラッシュ無効化動作のエネルギーが大幅に増加する。しかしながら、無効化インターバルステートが確立時に各キャッシュエントリに記憶される場合、キャッシュメモリ内のキャッシュエントリごとに追加のビットが含まれなければならない。しかしながら、本明細書で開示する他の態様では、キャッシュエントリが確立されたときに無効化インターバルステートを記憶するためにこの追加のストレージをキャッシュメモリ内の各キャッシュエントリに含める必要性を回避するために、無効化インターバルステートは代替的に、キャッシュエントリに記憶された既存のキャッシュエントリパリティとともに符号化され得る。したがって、この後者の例では、無効化インターバルインジケータと、キャッシュエントリの確立およびアクセス時に、それぞれキャッシュエントリのためのパリティにおける現在の無効化インターバルステートを符号化および検査するための論理とのオーバーヘッドのみが、キャッシュメモリにおいて必要とされる。
【００１２】
この点について、一態様では、キャッシュメモリ内の有効インジケータにおけるビットフリップを検出するためのキャッシュメモリエラー検出回路が提供される。キャッシュメモリエラー検出回路は、キャッシュメモリにおいて実行された無効化動作に基づいて無効化インターバルステートを進める(たとえば、カウンタを増分する)ように構成された少なくとも1つの無効化インターバルインジケータを備える。キャッシュメモリエラー検出回路は、キャッシュメモリ内の少なくとも1つのキャッシュエントリの確立に応じて、無効化インターバルステートに基づいて少なくとも1つのキャッシュエントリの各々について冗長情報インジケータを生成するように構成された冗長情報インジケータ生成回路をさらに備える。キャッシュメモリエラー検出回路はまた、少なくとも1つの冗長情報インジケータ検証回路を備える。冗長情報インジケータ検証回路は、キャッシュメモリ内のアクセスされたキャッシュエントリのための有効インジケータが有効状態を示すことに応じて、キャッシュメモリ内のアクセスされたキャッシュエントリのための冗長情報インジケータを受信するように構成される。冗長情報インジケータ検証回路はまた、少なくとも1つの無効化インターバルインジケータから無効化インターバルステートを受信し、無効化インターバルステートに基づいて現在の冗長情報インジケータを生成するように構成される。冗長情報インジケータ検証回路は、アクセスされたキャッシュエントリのための冗長情報インジケータを現在の冗長情報インジケータと比較し、キャッシュエントリエラーインジケータを生成するようにさらに構成される。キャッシュエントリエラーインジケータは、冗長情報インジケータと現在の冗長情報インジケータの比較に基づいて、アクセスされたキャッシュエントリにおいてビットフリップが発生したかどうかを示すことができる。
【００１３】
別の態様では、キャッシュメモリ内の有効インジケータにおけるビットフリップを検出するためのキャッシュメモリエラー検出回路が提供される。キャッシュメモリエラー検出回路は、キャッシュメモリに対して実行された無効化動作に基づいて無効化インターバルステートを進めるための手段を備える。キャッシュメモリエラー検出回路は、少なくとも1つのキャッシュエントリの確立に応じて、無効化インターバルステートに基づいてキャッシュメモリ内の少なくとも1つのキャッシュエントリの各々について冗長情報インジケータを生成するための手段をさらに備える。キャッシュメモリエラー検出回路はまた、キャッシュメモリ内のアクセスされたキャッシュエントリのための有効インジケータが有効状態を示すことに応じて、キャッシュメモリ内のアクセスされたキャッシュエントリのための冗長情報インジケータを受信し、無効化インターバルステートを受信し、無効化インターバルステートに基づいて現在の冗長情報インジケータを生成し、アクセスされたキャッシュエントリのための冗長情報インジケータを現在の冗長情報インジケータと比較し、キャッシュエントリエラーインジケータを生成するための手段を備える。キャッシュエントリエラーインジケータは、冗長情報インジケータと現在の冗長情報インジケータの比較に基づいて、アクセスされたキャッシュエントリにおいてビットフリップが発生したかどうかを示すことができる。
【００１４】
別の態様では、無効化動作後のキャッシュメモリ内の有効インジケータにおけるビットフリップからキャッシュメモリエラーを検出する方法が提供される。方法は、キャッシュメモリに対して実行された無効化動作に基づいて少なくとも1つの無効化インターバルインジケータの無効化インターバルステートを進めるステップと、少なくとも1つのキャッシュエントリを確立したことに応じて、キャッシュメモリ内の少なくとも1つのキャッシュエントリの各々について冗長情報インジケータを生成するステップとを含む。方法は、キャッシュメモリ内のアクセスされたキャッシュエントリのための冗長情報インジケータを受信するステップと、少なくとも1つの無効化インターバルインジケータから無効化インターバルステートを受信するステップとをさらに含む。方法はまた、無効化インターバルステートに基づいて現在の冗長情報インジケータを生成するステップと、アクセスされたキャッシュエントリのための冗長情報インジケータを現在の冗長情報インジケータと比較するステップと、キャッシュエントリエラーインジケータを生成するステップとを含む。方法はまた、冗長情報インジケータと現在の冗長情報インジケータを比較することに基づいて、アクセスされたキャッシュエントリにおいてビットフリップが発生したかどうかを示すキャッシュエントリエラーインジケータを生成するステップを含むことができる。
【００１５】
別の態様では、プロセッサベースのキャッシュメモリエラー検出回路にキャッシュメモリ内の有効インジケータにおけるビットフリップを検出させるコンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体が提供される。コンピュータ実行可能命令を記憶した非一時的コンピュータ可読媒体は、プロセッサベースのキャッシュメモリエラー検出回路に、キャッシュメモリに対して実行された無効化動作に基づいて少なくとも1つの無効化インターバルインジケータの無効化インターバルステートを進めさせ、少なくとも1つのキャッシュエントリを確立したことに応じて、キャッシュメモリ内の少なくとも1つのキャッシュエントリの各々について冗長情報インジケータを生成させ、キャッシュメモリ内のアクセスされたキャッシュエントリのための冗長情報インジケータを受信させ、少なくとも1つの無効化インターバルインジケータから無効化インターバルステートを受信させ、無効化インターバルステートに基づいて現在の冗長情報インジケータを生成させ、アクセスされたキャッシュエントリのための冗長情報インジケータを現在の冗長情報インジケータと比較させる。
【図面の簡単な説明】
【００１６】
【図１】キャッシュメモリにおいて提供される例示的なキャッシュメモリエラー検出回路の概略図であり、キャッシュメモリエラー検出回路は、キャッシュメモリに対して実行された無効化動作後のキャッシュメモリ内の有効インジケータにおけるビットフリップを検出するように構成される。
【図２】無効化動作がキャッシュメモリに対して実行された後のキャッシュエントリのための有効インジケータにおけるビットフリップの発生と、符号化冗長情報インジケータを使用して有効インジケータのビットフリップを検出する図1のキャッシュメモリエラー検出回路の能力とを例示する、図1のキャッシュメモリ内の一連の例示的なキャッシュエントリイベントを示す表である。
【図３】キャッシュメモリに対して実行された無効化動作ごとに図1のキャッシュメモリエラー検出回路の無効化インターバルインジケータにおける無効化インターバルステートを進めるための例示的なプロセスを示すフローチャートである。
【図４】無効化インターバルインジケータから、キャッシュメモリの確立時にキャッシュエントリ内の冗長情報インジケータを符号化するために使用されるべき現在の無効化インターバルステートを受信する、図1のキャッシュメモリエラー検出回路内の冗長情報インジケータ生成回路の例示的なプロセスを示すフローチャートである。
【図５】アクセスされたキャッシュエントリの確立の間のアクセスされたキャッシュエントリとともに符号化された冗長情報インジケータと、無効化インターバルインジケータにおける現在の無効化インターバルステートとに基づいて、キャッシュメモリ内のアクセスされたキャッシュエントリの有効インジケータにおいてビットフリップが発生したかどうかを検出する、図1のキャッシュメモリエラー検出回路内の冗長情報インジケータ検証回路の例示的なプロセスを示すフローチャートである。
【図６】キャッシュメモリにおいて提供される別の例示的なキャッシュメモリエラー検出回路の概略図であり、キャッシュメモリエラー検出回路は、キャッシュメモリに対して実行された無効化動作後のキャッシュメモリ内の有効インジケータにおけるビットフリップを検出するように構成され、無効化インターバルインジケータは、アクセスされたキャッシュエントリに対応するエラー検出コード(たとえば、パリティ)で符号化される。
【図７】無効化動作がキャッシュメモリに対して実行された後のキャッシュエントリのための有効インジケータにおけるビットフリップの発生と、アクセスされたキャッシュエントリのエラー検出コードの一部として符号化冗長情報インジケータを使用して有効インジケータのビットフリップを検出する図6のキャッシュメモリエラー検出回路の能力とを例示する、図6のキャッシュメモリ内の一連の例示的なキャッシュエントリイベントを示す表である。
【図８】図6のキャッシュメモリエラー検出回路において提供され得る例示的な冗長情報インジケータ検証回路の概略図であり、冗長情報インジケータ検証回路は、キャッシュメモリ内のキャッシュエントリの確立時に無効化インターバルインジケータからの無効化インターバルステートとともに符号化された関連する冗長情報インジケータに基づいて、アクセスされたキャッシュエントリの有効インジケータにおけるビットフリップを検出するように構成される。
【図９】図6のキャッシュメモリエラー検出回路において提供され得る例示的な冗長情報インジケータ生成回路の概略図であり、冗長情報インジケータ生成回路は、確立されるべきアクセスされたキャッシュエントリに対応する符号化されたエラー検出コードと、アクセスされたキャッシュエントリの確立時の無効化インターバルインジケータからの無効化インターバルステートとに基づいて、冗長情報インジケータを生成するように構成される。
【図１０】無効化インターバルインジケータから、キャッシュメモリ内の確立されたキャッシュエントリのエラー検出コードの一部として符号化されるべき現在の無効化インターバルステートを受信する、図9の冗長情報インジケータ生成回路の例示的なプロセスを示すフローチャートである。
【図１１】確立されたキャッシュエントリの無効化インターバルステートとともに符号化された冗長情報インジケータと、無効化インターバルインジケータにおける現在の無効化インターバルステートとに基づいて、キャッシュメモリ内のアクセスされたキャッシュエントリの有効インジケータにおいてビットフリップが発生したかどうかを検出する、図8の冗長情報インジケータ検証回路の例示的なプロセスを示すフローチャートである。
【図１２】キャッシュメモリのキャッシュエントリに対して実行された無効化動作後のキャッシュメモリ内の有効インジケータにおけるビットフリップを検出するように構成された任意のキャッシュメモリエラー検出回路を含むキャッシュメモリを含むことができる、例示的なプロセッサベースのシステムのブロック図である。
【発明を実施するための形態】
【００１７】
本明細書で開示する態様は、無効化動作後のキャッシュメモリ内の有効インジケータ(たとえば、有効ビット)におけるビットフリップを検出するためのキャッシュメモリエラー検出回路を含む。関連する方法およびプロセッサベースのシステムも開示される。無効化動作後に、ただしキャッシュエントリが再確立される前に、キャッシュヒットがキャッシュエントリ(たとえば、タグ)へのアクセスの結果生じている場合、キャッシュエントリに関連付けられた有効インジケータにおいてビットフリップが発生している。これは、無効化動作後かつキャッシュエントリの再確立の前は、有効インジケータが、(キャッシュヒットに関する)有効状態ではなく、(キャッシュミスに関する)無効状態を示すはずであるからである。したがって、本明細書で開示する態様では、有効インジケータがキャッシュメモリ内のアクセスされたキャッシュエントリの有効状態を示すとき、キャッシュメモリエラー検出回路は、無効化動作がキャッシュエントリの再確立の前にキャッシュエントリに対して実行されたかどうかを判断するように構成される。無効化動作がキャッシュエントリに対して実行された場合、有効インジケータが無効状態を示し、キャッシュミスを生成させるかまたはエラーを示させるはずであるので、有効インジケータにおいてビットフリップが発生している。有効インジケータは無効化動作後に無効状態に設定されるので、有効インジケータは無効状態を示すはずである。キャッシュメモリエラー検出回路は、キャッシュエントリのための有効インジケータがビットフリップのせいで有効状態を示していても、結果として、アクセスされたキャッシュエントリに対してキャッシュミスを生成させるかまたはエラーを示させることができる。
【００１８】
この点について、図1は、キャッシュメモリ12において提供される例示的なキャッシュメモリエラー検出回路10の概略図である。キャッシュメモリ12は、タグアレイ14およびデータアレイ16を備える。キャッシュメモリ12は、タグアレイ14およびデータアレイ16においてキャッシュエントリ18(0)〜18(N)を確立することができ、「N+1」は、キャッシュメモリ12内のキャッシュエントリ18の数である。キャッシュエントリ18(0)〜18(N)は、関連するタグ20(0)〜20(N)をタグアレイ14に記憶することによって確立される。キャッシュエントリ18(0)〜18(N)の確立はまた、対応するデータエントリ22(0)〜22(N)をデータアレイ16に記憶することを含む。データエントリ22(0)〜22(N)は、上位レベルキャッシュメモリまたはメインメモリなどの、上位レベルメモリに記憶されたデータに対応し得る。キャッシュエントリ18(0)〜18(N)を確立すると、各キャッシュエントリ18(0)〜18(N)に関連付けられた有効インジケータ24(0)〜24(N)は、キャッシュエントリ18(0)〜18(N)の有効性を示す有効状態(たとえば、論理高「1」を記憶する)に設定される。キャッシュエントリ18(0)〜18(N)がもはや有効ではない場合、もはや有効ではないキャッシュエントリ18(0)〜18(N)のための対応する有効インジケータ24(0)〜24(N)は、キャッシュエントリ18(0)〜18(N)を無効化するために無効状態(たとえば、論理低「0」を記憶する)に変更され得る。有効インジケータ24(0)〜24(N)は、それぞれのキャッシュエントリ18(0)〜18(N)についてキャッシュミスまたは他のエラーが生成されるべきかどうかを判断するために使用され得る。
【００１９】
引き続き図1を参照すると、キャッシュエントリ18(0)〜18(N)内のキャッシュエントリ18を無効化することが望まれるとき、無効化動作が、無効化されるべきキャッシュエントリ18に対して実行され得る。無効化動作において1つのキャッシュエントリ18が無効化され得るか、またはキャッシュメモリ12に対して実行されるフラッシュ無効化動作の一部としてキャッシュメモリ12全体もしくはその複数のキャッシュエントリ18(0)〜18(N)が無効化され得る。図1のキャッシュメモリ12内のキャッシュエントリ18(0)〜18(N)のうちの1つまたは複数に対して実行される無効化動作は、無効化イネーブル入力28上で受信される無効化イネーブル信号26の受信時に開始される。それに応じて、キャッシュメモリ12は、無効化されたキャッシュエントリ18(0)〜18(N)に関連付けられた有効インジケータ24(0)〜24(N)を無効状態に設定する。フラッシュ無効化動作が、すべてのキャッシュエントリ18(0)〜18(N)を無効化するためにキャッシュメモリ12に対して実行された場合、キャッシュメモリ12は、すべてのキャッシュエントリ18(0)〜18(N)に対応するすべての有効インジケータ24(0)〜24(N)の状態を無効状態に設定する。
【００２０】
引き続き図1を参照すると、無効化動作後に、ただしキャッシュエントリ18(0)〜18(N)の再確立の前に、キャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)が有効状態を示す場合、キャッシュエントリ18(0)〜18(N)に関連付けられた有効インジケータ24(0)〜24(N)においてビットフリップが発生したことがわかる。これは、キャッシュエントリ18(0)〜18(N)の再確立の前の無効化動作後は、有効インジケータ24(0)〜24(N)が、(キャッシュヒットに関する)有効状態ではなく、(キャッシュミスに関する)無効状態を示すはずであるからである。したがって、以下でより詳細に説明するように、有効インジケータ24(0)〜24(N)がキャッシュメモリ12内のアクセスされたキャッシュエントリ18(0)〜18(N)の有効状態を示すとき、キャッシュメモリエラー検出回路10において提供される冗長情報インジケータ検証回路30は、キャッシュエントリ18(0)〜18(N)の再確立の前に無効化動作がキャッシュエントリ18(0)〜18(N)に対して実行されたかどうかを判断することができる。キャッシュエントリ18(0)〜18(N)の再確立の前に無効化動作がキャッシュエントリ18(0)〜18(N)に対して実行された場合、図1のキャッシュメモリエラー検出回路10は、キャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)が有効インジケータ24(0)〜24(N)におけるビットフリップのせいで有効状態を示していても、アクセスされたキャッシュエントリ18(0)〜18(N)に対するキャッシュミスを生成させるかまたはエラーを生成することができる。
【００２１】
引き続き図1を参照すると、アクセスされたキャッシュエントリ18(0)〜18(N)が、ビットフリップが発生するなどのエラーを生じたかどうかを示すために、キャッシュエントリエラーインジケータ34がキャッシュエントリエラーインジケータライン32上で提供される。図1に示す一例として、キャッシュエントリエラーインジケータ34は、非限定的な例としてキャッシュヒット/ミスインジケータライン42上でキャッシュヒット/ミスインジケータ40を生成するキャッシュヒット/ミスインジケータ回路38への入力として、キャッシュメモリエラー(たとえば、パリティエラー)を示す他の任意選択の入力36と組み合わせられ得る。別の例として、キャッシュエントリエラーインジケータ34は、キャッシュエラー生成および/または報告とは別に、アクセスされたキャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)におけるエラーを示すために提供される場合がある。また別の例として、キャッシュエントリエラーインジケータ34は、エラー訂正コード(ECC)を使用して前方誤り復元を生成するか、または所望のチェックポイントにリセットすることによって後方誤り復元を生成するために使用され得る。
【００２２】
図1のキャッシュメモリエラー検出回路10のさらなる例示的な詳細について説明する前に、図1のキャッシュメモリエラー検出回路10がどのようにして無効化動作後の有効インジケータ24(0)〜24(N)におけるビットフリップを検出し得るかを説明するために、本明細書では最初に図2について説明する。この点について、図2は、図1のキャッシュメモリ12内のキャッシュエントリ18(0)について実行される一連の例示的なイベントを示す表44を示している。しかしながら、この例はキャッシュエントリ18(1)〜18(N)にアクセスすることにも適用されることに留意されたい。表44は、無効化動作後のキャッシュエントリ18(0)のための有効インジケータ24(0)におけるビットフリップの発生と、ビットフリップを検出する図1のキャッシュメモリエラー検出回路10の能力とを例示するものである。
【００２３】
この点について、図1のキャッシュメモリ12内のキャッシュエントリ18(0)を例に取ると、キャッシュエントリ18(0)は、図2の確立イベント52によってキャッシュメモリ12において確立されるものとして示されている。有効インジケータ24(0)は、キャッシュエントリ18(0)の確立の間、有効状態(たとえば、「1」)に設定される。この例では無効化インターバルカウント48(たとえば、「10」)の形の現在の無効化インターバルステートは、確立時にキャッシュエントリ18(0)に記憶される冗長情報インジケータ46(0)として使用される。したがって、この実施形態では、冗長情報インジケータ46(0)は、実際の、符号化されていない形式の無効化インターバルカウント48を含む。キャッシュメモリエラー検出回路10は、各キャッシュエントリ18(0)〜18(N)に対応する冗長情報インジケータ46(0)〜46(N)と、図1のキャッシュメモリエラー検出回路10内の、この例では無効化インターバルカウンタ50の形の無効化インターバルインジケータによって提供される現在の無効化インターバルカウント48とを使用して、ビットフリップを検出する。キャッシュエントリ18(0)に対するタグ20(0)も確立される。無効化インターバルインジケータは、限定はしないが、無効化インターバルステートとは異なる状態または他のステータスなどの任意のタイプの所望のインジケータを記憶するために、カウンタ以外の他の形で提供される場合があることに留意されたい。
【００２４】
次に、引き続き図2を参照すると、無効化動作54がキャッシュエントリ18(0)に対して実行される。無効化動作54は、上記で説明したように、キャッシュエントリ18(0)を無効化するために、キャッシュエントリ18(0)のための有効インジケータ24(0)の有効性状態を無効状態(たとえば、「0」)に設定する。現在の無効化インターバルカウント48はまた、無効化動作54を記録するために、この例では増分されることによって進められる。現在の無効化インターバルカウント48は増分されているが、キャッシュエントリ18(0)内の冗長情報インジケータ46(0)は同じままであることに留意されたい。以下で説明するように、この情報は、キャッシュエントリ18(0)に対する前の確立イベント52の後に無効化動作54が発生したと判断するために、後で使用される。
【００２５】
引き続き図2を参照すると、例示のために、この例では有効インジケータ24(0)においてビットフリップ(たとえば、「0」から「1」へのビットフリップ)を発生させる放射線イベント56が発生すると次に仮定する。しかしながら、上記で説明したように、キャッシュエントリ18(0)内の冗長情報インジケータ46(0)は、現在の無効化インターバルカウント48に等しくない、すなわち、無効化動作54が発生しており、この場合、有効インジケータ24(0)が無効状態(たとえば、「0」)を含むと予想される。したがって、キャッシュエントリ18(0)が再確立される前にアクセスイベント58において後でアクセスされたとき、キャッシュエントリ18(0)のための有効インジケータ24(0)は有効状態を示す。しかしながら、上記で述べたように、キャッシュエントリ18(0)は、前の無効化動作54のせいで実際には有効ではない。現在の無効化インターバルカウント48が無効化動作54の結果として増分されたので、現在の無効化インターバルカウント48は、キャッシュエントリ18(0)が確立されたときにキャッシュエントリ18(0)に記憶された冗長情報インジケータ46(0)と一致しない。したがって、キャッシュメモリエラー検出回路10は、この不一致を、無効化動作54に続く有効インジケータ24(0)において発生したビットフリップを検出する方法として判断するように構成される場合がある。以下でより詳細に説明するように、キャッシュメモリエラー検出回路10は、有効インジケータ24(0)がビットフリップのせいで有効状態を示していても、誤ったキャッシュヒットが生成されないように、キャッシュエントリ18(0)に対するアクセスイベント58にキャッシュミスを生成させるかまたはエラーを生成することができる。
【００２６】
この点について、次に図1のキャッシュメモリエラー検出回路10の例示的なさらなる詳細について説明する。この点について、図1のキャッシュメモリエラー検出回路10内の冗長情報インジケータ検証回路30は、無効化インターバルカウンタ50に基づいて、キャッシュエントリ18(0)〜18(N)の再確立の前に無効化動作(図示せず)がいつ発生したかを判断する。無効化インターバルカウンタ50は、この例ではキャッシュメモリ12内のキャッシュエントリ18(0)〜18(N)に対して実行された無効化動作ごとに無効化インターバルカウント48を増分する。無効化インターバルカウント48は、キャッシュメモリ12においてキャッシュエントリ18(0)〜18(N)が確立されたときに、冗長情報インジケータ生成回路60によってキャッシュエントリ18(0)〜18(N)に冗長情報インジケータ46(0)〜46(N)として記憶される。
【００２７】
無効化インターバルカウンタ50は、1(1)だけ無効化インターバルカウント48を増分するように構成され得るか、または1(1)以外の値だけ無効化インターバルカウント48を増分することが望まれ得る。無効化インターバルカウンタ50は、無効化インターバルカウンタ50によって使用されるビット数に基づいて、様々な無効化インターバルカウント値にわたって無効化インターバルカウント48を増分するように構成され得る。たとえば、無効化インターバルカウンタ50によって2(2)ビットが使用される場合、図2で説明するように無効化インターバルカウント48について4つ(4)の考えられる値(たとえば、「00」、「01」、「10」、および「11」)があり、様々な8つ(8)の値に3(3)ビットが与えられる。無効化インターバル構成設定62に基づいて、無効化インターバルカウント48に対する無効化インターバルカウント値の範囲を構成するかまたは無効化インターバルカウンタ50を使用不可にすることさえも可能であり得る。無効化インターバルカウント48は、無効化インターバルカウンタ50によって冗長情報インジケータ生成回路60に提供され、冗長情報インジケータ検証回路30にも提供される。
【００２８】
引き続き図1を参照すると、後でアクセスされたキャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)が有効状態を示す場合、キャッシュメモリエラー検出回路10内の冗長情報インジケータ検証回路30は、アクセスされたキャッシュエントリ18(0)〜18(N)の最後の確立以降に無効化動作が発生したかどうかを確認する。冗長情報インジケータ検証回路30は、現在の無効化インターバルカウント48と、キャッシュエントリ18(0)〜18(N)が確立されたときに冗長情報インジケータ46(0)〜46(N)としてキャッシュエントリ18(0)〜18(N)に記憶された無効化インターバルカウントとに基づいて、無効化動作が発生したかどうかを確認する。キャッシュエントリ18(0)〜18(N)が確立されたときにキャッシュエントリ18(0)〜18(N)に記憶された無効化インターバルカウントが、アクセスされたキャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)に関連付けられた現在の無効化インターバルカウント48と一致しない場合、これは不一致をもたらす。この不一致は、無効化動作後にキャッシュエントリ18(0)〜18(N)に関連付けられた有効インジケータ24(0)〜24(N)においてビットフリップが発生したという指標である。これは、無効化動作が有効インジケータ24(0)〜24(N)を強制的に無効状態にしたので、無効化動作後は、アクセスされたキャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)が、有効状態ではなく、無効状態を示すはずであるからである。
【００２９】
したがって、図1のこの例では、キャッシュメモリエラー検出回路10内の冗長情報インジケータ検証回路30は、アクセスされたキャッシュエントリ18(0)〜18(N)に関連付けられた有効インジケータ24(0)〜24(N)においてビットフリップが検出されるときに(キャッシュヒットではなく)キャッシュミスを生成させるかまたはエラーを生成するように構成される。キャッシュエントリ18(0)〜18(N)に関連付けられた冗長情報インジケータ46(0)〜46(N)と一致しない、無効化インターバルカウンタ50によって提供された現在の無効化インターバルカウント48は、無効化動作後に有効インジケータ24(0)〜24(N)においてビットフリップが発生したという指標である。検出された無効化動作後にビットフリップが検出されたとき、キャッシュエントリ18(0)〜18(N)に対応するデータアレイ16に記憶されたデータエントリ22(0)〜22(N)を使用することを回避するために、キャッシュミスまたは他のエラーが生成される。アクセスされたキャッシュエントリ18(0)〜18(N)についての誤った有効インジケータ24(0)〜24(N)状態が検出されなかった場合、キャッシュメモリ12は、本当はキャッシュミスとすべきところを、誤ったキャッシュヒットを生成したであろう。
【００３０】
この点について、図3は、キャッシュメモリ12内のキャッシュエントリ18(0)〜18(N)に対して実行された無効化動作(図示せず)ごとに、図1のキャッシュメモリエラー検出回路10の無効化インターバルカウンタ50における無効化インターバルカウント48を増分するための例示的なプロセスを示すフローチャートである。図1および図3を参照すると、無効化インターバルカウンタ50は、無効化イネーブル信号26を受信する(ブロック64)。次いで、無効化インターバルカウンタ50は、無効化イネーブル信号26を受信したことに基づいて、無効化インターバルカウント48を増分する(ブロック66)。無効化インターバルカウンタ50は、無効化インターバル構成設定62によって設定された構成可能な増分量だけ無効化インターバルカウント48を増分し得る。無効化インターバルカウンタ50はまた、無効化インターバル構成設定62に基づいて、使用不可にされるかまたは固定の無効化インターバルカウント48値に設定され得る。
【００３１】
この点について、図4は、確立時にキャッシュエントリ18(0)〜18(N)に冗長情報インジケータ46(0)〜46(N)を記憶するために無効化インターバルカウンタ50から現在の無効化インターバルカウント48を受信する、図1のキャッシュメモリエラー検出回路10内の冗長情報インジケータ生成回路60の例示的なプロセスを示すフローチャートである。図1および図4を参照すると、冗長情報インジケータ生成回路60は、確立されるべきキャッシュエントリ18(0)〜18(N)において提供されたタグ20(0)〜20(N)を受信するように構成される(ブロック68)。冗長情報インジケータ生成回路60はまた、無効化インターバルカウンタ50によって提供された現在の無効化インターバルカウント48を受信するように構成される(ブロック70)。冗長情報インジケータ生成回路60は、無効化インターバルカウンタ50から受信された現在の無効化インターバルカウント48を確立されているキャッシュエントリ18(0)〜18(N)に記憶する(ブロック72)。この例では、冗長情報インジケータ46(0)〜46(N)は現在の無効化インターバルカウント48であり、冗長情報インジケータ46(0)〜46(N)としてキャッシュエントリ18(0)〜18(N)に記憶される。冗長情報インジケータ46(0)〜46(N)は、キャッシュエントリ18(0)〜18(N)に関連付けられた有効インジケータ24(0)〜24(N)を検証するために、キャッシュメモリエラー検出回路10の冗長情報インジケータ検証回路30によって使用される。
【００３２】
この点について、図5は、キャッシュメモリ12内のアクセスされたキャッシュエントリ18(0)〜18(N)の有効インジケータ24(0)〜24(N)においてビットフリップが発生したかどうかを検出する、図1のキャッシュメモリエラー検出回路10内の冗長情報インジケータ検証回路30の例示的なプロセスを示すフローチャートである。ビットフリップが発生したかどうかを検出することは、キャッシュエントリ18(0)〜18(N)の確立の間のキャッシュエントリ18(0)〜18(N)に関連付けられた冗長情報インジケータ46(0)〜46(N)と、無効化インターバルカウンタ50における現在の無効化インターバルカウント48を比較することに基づく。図1および図5を参照すると、冗長情報インジケータ検証回路30は、キャッシュエントリ18(0)〜18(N)に記憶された冗長情報インジケータ46(0)〜46(N)に基づいて、アクセスされているキャッシュエントリ18(0)〜18(N)に対応する有効インジケータ24(0)〜24(N)を検証する。冗長情報インジケータ検証回路30は、アクセスされたキャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)が有効状態を示すことに応じて、アクセスされたキャッシュエントリ18(0)〜18(N)のための冗長情報インジケータ46(0)〜46(N)を受信する(ブロック74)。冗長情報インジケータ検証回路30はまた、無効化インターバルカウンタ50から現在の無効化インターバルカウント48を受信する(ブロック76)。冗長情報インジケータ検証回路30は、アクセスされたキャッシュエントリ18(0)〜18(N)に関連付けられた冗長情報インジケータ46(0)〜46(N)を現在の無効化インターバルカウント48と比較する(ブロック78)。現在の無効化インターバルカウント48が、アクセスされたキャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)が有効状態を示したときに冗長情報インジケータ46(0)〜46(N)に記憶された無効化インターバルカウントと一致しない場合、これは、無効化動作後にキャッシュエントリ18(0)〜18(N)に関連付けられた有効インジケータ24(0)〜24(N)においてビットフリップが発生したという指標である。これは、無効化動作が有効インジケータ24(0)〜24(N)を強制的に無効状態にするので、無効化動作後は、アクセスされたキャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)が、有効状態ではなく、無効状態を示すはずであるからである。一致は、キャッシュエントリ18(0)〜18(N)の確立と確立されたキャッシュエントリ18(0)〜18(N)のアクセスの両方が同じ無効化インターバルにおいて発生したことを示す。キャッシュエントリエラーインジケータ34は、冗長情報インジケータ46(0)〜46(N)と現在の無効化インターバルカウント48を比較することに基づいて、この態様ではアクセスされたキャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)においてビットフリップが発生したかどうかを示す(ブロック80)。
【００３３】
図1のキャッシュメモリエラー検出回路10は、耐放射性化を用いて有効インジケータ24(0)〜24(N)を保護することなく、または有効インジケータ24(0)〜24(N)をキャッシュエントリ18(0)〜18(N)のためのパリティなどのエラー検出コードに含めることなしに、キャッシュメモリ12内の有効インジケータ24(0)〜24(N)におけるビットフリップを検出することができる。キャッシュメモリエラー検出回路10は、キャッシュエントリ18(0)〜18(N)が確立されたときにキャッシュメモリ12内のキャッシュエントリ18(0)〜18(N)に記憶される無効化インターバルカウント48によって、ビットフリップを検出することができる。有効インジケータ24(0)〜24(N)がキャッシュエントリ18(0)〜18(N)のためのエラー検出コードに含まれていた場合、有効インジケータ24(0)〜24(N)を強制的に無効状態にすることに加えて、各無効化されたキャッシュエントリ18(0)〜18(N)のエラー検出コードがキャッシュメモリフラッシュ無効化動作において再計算されなければならず、したがって、フラッシュ無効化動作のレイテンシを増加させる。しかしながら、無効化インターバルカウント48が確立時に各キャッシュエントリ18(0)〜18(N)に記憶される場合、キャッシュメモリ12内のキャッシュエントリ18(0)〜18(N)ごとに追加のビットが含まれなければならない。キャッシュエントリ18(0)〜18(N)が確立されたときに無効化インターバルカウント48を記憶するためにキャッシュメモリ12内の各キャッシュエントリ18(0)〜18(N)において追加のビットを提供する必要性を回避するために、無効化インターバルカウント48は代替的に、キャッシュエントリ18(0)〜18(N)に記憶された既存のキャッシュエントリエラー検出コード(たとえば、パリティ)とともに符号化され得る。
【００３４】
図6に関して、図1と同様のキャッシュエントリエラー検出を提供する例示的なキャッシュメモリエラー検出回路10(1)の概略図が提供される。図6のキャッシュメモリエラー検出回路10(1)は、共通の要素番号を共有する、図1のキャッシュメモリエラー検出回路10と共通のいくつかの要素を含む。したがって、ここでは、これらの共通の要素について改めて説明しない。図6のキャッシュメモリエラー検出回路10(1)はまた、キャッシュエントリ18(0)〜18(N)におけるビットフリップを検出する機能を提供する。キャッシュメモリエラー検出回路10(1)は、図1で前に説明した、少なくとも1つの無効化インターバルカウンタ50(0)〜50(M)から成る。キャッシュメモリエラー検出回路10(1)は、無効化インターバルカウント48(0)〜48(M)を冗長情報インジケータ生成回路60(1)と冗長情報インジケータ検証回路30(1)の両方に提供する。
【００３５】
引き続き図6を参照すると、選択的な無効化動作の追跡を容易にするための関連する無効化インターバルカウント48(0)〜48(M)を含む、複数の無効化インターバルカウンタ50(0)〜50(M)が提供され得る。選択的な無効化動作は、キャッシュメモリ12(1)内のキャッシュエントリ18(0)〜18(N)のすべてまたはサブセットに対して実行されるフラッシュ無効化動作ではなく、キャッシュメモリ12(1)内の連続していてもよく連続していなくてもよいキャッシュエントリ18(0)〜18(N)の一部分のみに対して実行される無効化動作である。選択的な無効化動作は、特定の無効化インターバルカウンタ50(0)〜50(M)および対応する無効化インターバルカウント48(0)〜48(M)に関連付けられるべき、連続していてもよく連続していなくてもよいキャッシュエントリ18(0)〜18(N)のサブセットを考慮する。選択的な無効化動作は、限定はしないが、権限、セキュリティ、例外レベル、異なる動作モード、エントリのタイプなどに基づいて決定され得る。このようにして、図6のキャッシュメモリエラー検出回路10(1)は、無効化イネーブル信号26に応答して、キャッシュエントリ18(0)〜18(N)の一部分のみに関連付けられた無効化インターバルカウント48(0)〜48(M)を増分するように構成され得る。
【００３６】
引き続き図6を参照すると、キャッシュメモリ12(1)は、この例では複数のデータアレイ16(0)〜16(X)を含み、データアレイ16の数は「X+1」に等しい。複数のデータアレイ16(0)〜16(X)の各々は、無効化インターバルカウンタ50(0)〜50(M)に関連付けられる。データアレイ16(0)〜16(X)はまた、権限、セキュリティ、例外レベル、異なる動作モード、エントリのタイプなどの、無効化動作が基づき得る共通のイベントリストを複数のデータアレイ16(0)〜16(X)が使用している場合、共通の無効化インターバルカウンタ50(0)〜50(M)を共有する。複数のキャッシュメモリ(図示せず)はそれぞれ、冗長情報インジケータ生成回路60(1)および冗長情報インジケータ検証回路30(1)を提供し得る。たとえば、複数のキャッシュメモリ(図示せず)によって提供された複数のキャッシュレベルは一緒に無効化する場合があり、したがって、キャッシュメモリ12(1)ごとまたはキャッシュメモリ12(1)のレベルごとの無効化インターバルカウンタ50(0)〜50(M)を不要にする。
【００３７】
引き続き図6を参照すると、冗長情報インジケータ生成回路60(1)は、アクセスされているキャッシュエントリ18(0)〜18(N)に関連付けられた無効化インターバルカウンタ50(0)〜50(M)によって提供された現在の無効化インターバルカウント48(0)〜48(M)を受信する。加えて、冗長情報インジケータ生成回路60(1)は、非限定的な例として、タグエラー検出コード生成回路84によって提供された第2の入力として、タグパリティ82の形でエラー検出コード81を受信する。タグエラー検出コード生成回路84は、キャッシュエントリ18(0)〜18(N)において受信されたタグ20(0)〜20(N)に基づいて、タグパリティ82を生成する。タグパリティ82は、タグ20(0)〜20(N)が破損したかどうかまたは他の点で予期せずに変化したかどうかをキャッシュメモリ12(1)が検出するのを可能にする、エラー検査の目的で使用される。この例では、冗長情報インジケータ生成回路60(1)は、タグパリティ82を受信し、受信された無効化インターバルカウント48(0)〜48(M)を符号化して、受信された無効化インターバルカウント48(0)〜48(M)の符号化されたバージョンをタグパリティ82の一部として提供する。この符号化の結果として、冗長情報インジケータ生成回路60(1)は、確立されるべきキャッシュエントリ18(0)〜18(N)に対応する、記憶されるべき冗長情報インジケータの符号化されたバージョン46'(1)(0)〜46'(1)(N)を出力する。
【００３８】
タグパリティ82において無効化インターバルカウント48(0)〜48(M)を符号化することは、パリティ記憶のための追加のビットを必要とせずに無効化インターバルカウント48(0)〜48(M)を符号化する利益を可能にする。この形の符号化はまた、有効インジケータ24(0)〜24(N)およびタグ20(0)〜20(N)のエラー検出コード(たとえば、パリティ)検査を冗長情報インジケータ検証回路30(1)における単一の動作に組み合わせる利益をもたらす。次いで、記憶された符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)は、後でアクセスされたキャッシュエントリ18(0)〜18(N)に対応する有効インジケータ24(0)〜24(N)を検証するために使用される。しかしながら、以下でより詳細に説明するように、図6のキャッシュメモリ12(1)内のキャッシュエントリ18(0)〜18(N)においてビットフリップが検出された場合、有効インジケータ24(0)〜24(N)のみにおける場合に対立するものとして、キャッシュエントリ18(0)〜18(N)のどこかでビットフリップが発生した可能性がある。図6のキャッシュメモリ12(1)についてさらに説明するために、図7は、図6のキャッシュメモリ12(1)における一連の例示的なキャッシュエントリ18(0)イベントを示す表86を提供する。一例として、表86は、無効化動作の後の有効インジケータ24(0)におけるビットフリップの発生と、符号化冗長情報インジケータ46'(1)(0)および現在の無効化インターバルカウント48(0)を使用してキャッシュエントリ18(0)〜18(N)におけるビットフリップを検出する能力とを例示している。図7を参照すると、図示した例示的なイベントは、一連のキャッシュエントリ18(0)イベントから成る。キャッシュエントリ18(0)は最初に、確立イベント90において確立される。キャッシュエントリ18(0)の確立イベント90の際に、タグ20(0)がタグアレイ14に記憶される。加えて、有効インジケータ24(0)がキャッシュメモリ12(1)によって有効状態(たとえば、論理高または「1」)に設定される。この例での冗長情報インジケータ46(1)(0)は、冗長情報インジケータ生成回路60(1)によって現在の無効化インターバルカウント48(0)(たとえば、「10」)とともに符号化されて、タグアレイ14内のキャッシュエントリ18(0)に記憶される符号化冗長情報インジケータ46'(1)(0)を提供する。この例では、冗長情報インジケータ生成回路60(1)は、「排他的論理和」関数を使用して、タグ20(0)(たとえば、「0111」)とともに現在の無効化インターバルカウント48(0)(たとえば、「10」)を符号化し、結果としてキャッシュエントリ18(0)に対応する「00」の値が記憶される。何らかの時点で、受信された無効化イネーブル信号26(図示せず)によって示される無効化動作92が、少なくとも1つのキャッシュエントリ18(0)を無効化する。無効化動作92が発生すると、キャッシュメモリ12(1)は有効インジケータ24(0)を無効状態(たとえば、論理低または「0」)に設定する。加えて、無効化動作92を示す無効化イネーブル信号26を受信したことに応じて、現在の無効化インターバルカウント48(0)が構成された間隔ごとに無効化インターバルカウンタ50(0)によって増分される(たとえば、「11」)。しかしながら、現在の無効化インターバルカウント48(0)は増分されるが、符号化された無効化インターバルカウント48(0)を有する記憶された符号化冗長情報インジケータ46'(1)(0)は変わらないままである。
【００３９】
引き続き図7を参照すると、キャッシュメモリエラー検出回路10(1)は、無効化動作92に続くキャッシュエントリ18(0)〜18(N)におけるビットフリップを検出するように構成される。後でアクセスされたキャッシュエントリ18(0)のための有効インジケータ24(0)が有効状態を示す場合、キャッシュメモリエラー検出回路10(1)は、無効化インターバルカウンタ50(0)によって提供された現在の無効化インターバルカウント48(0)の符号化されたバージョンが、キャッシュエントリ18(0)が確立されたときの冗長情報インジケータ46(1)(0)と一致することを確認する。現在の無効化インターバルカウント48(0)は、冗長情報インジケータ46(1)(0)の場合と同様の方法で符号化される。したがって、記憶された冗長情報インジケータ46(1)(0)と一致する現在の無効化インターバルカウント48(0)は、キャッシュエントリ18(0)を確立し、それにアクセスするために同じ無効化インターバルカウント48(0)が使用されたことを意味する。したがって、無効化動作92は、キャッシュエントリ18(0)へのアクセスの前に実行されなかった。しかしながら、キャッシュエントリ18(0)に対するアクセスイベント96の際に、現在の無効化インターバルカウント48(0)の符号化されたバージョンがキャッシュエントリ18(0)に関連付けられた無効化インターバルカウント48(0)と一致しない場合、これは、アクセスされたキャッシュエントリ18(0)のための有効インジケータ24(0)が有効状態を示していても、無効化動作92に続いてアクセスされたキャッシュエントリ18(0)においてビットフリップが発生したという指標である。このようにして、キャッシュメモリ12(1)は、本当はキャッシュミスとすべきところを、誤ったキャッシュヒットを生成する場合がある。
【００４０】
図8は、キャッシュエントリ18(0)〜18(N)におけるビットフリップを検出するために図6のキャッシュメモリ12(1)内のキャッシュメモリエラー検出回路10(1)において提供され得る例示的な冗長情報インジケータ検証回路30(1)の概略図のさらなる詳細を提供する。冗長情報インジケータ検証回路30(1)は、キャッシュエントリ18(0)〜18(N)の確立時に無効化インターバルカウンタ50(0)〜50(M)からの無効化インターバルカウント48(0)〜48(M)とともに符号化された、記憶された符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)に基づいて、キャッシュエントリ18(0)〜18(N)におけるビットフリップを検出するように構成される。図8を参照すると、冗長情報インジケータ検証回路30(1)は、有効インジケータ24(0)〜24(N)を適切に有効であると判断するために、記憶された符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)を現在の冗長情報インジケータ98と比較するように構成される。現在の冗長情報インジケータ98の生成について、以下で説明する。冗長情報インジケータ比較回路100は、キャッシュエントリ18(0)〜18(N)の確立時に符号化された符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)をキャッシュエントリ18(0)〜18(N)へのアクセス時に生成された現在の冗長情報インジケータ98と比較するために提供される。符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)と現在の冗長情報インジケータ98を比較することによって、冗長情報インジケータ検証回路30(1)は、キャッシュエントリ18(0)〜18(N)の確立の後かつキャッシュエントリ18(0)〜18(N)へのアクセスの前に無効化動作が発生したかどうかを判断することが可能である。符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)と現在の冗長情報インジケータ98が等しくない場合、これは、キャッシュエントリ18(0)〜18(N)の確立に続いて無効化動作が発生しており、関連する有効インジケータ24(0)〜24(N)が無効状態に設定されるべきであるという指標である。
【００４１】
引き続き図8を参照すると、現在の冗長情報インジケータ98は、冗長情報インジケータ検証回路30(1)において提供される第2の冗長情報インジケータ生成回路102によって生成される。第2の冗長情報インジケータ生成回路102は、非限定的な例として、図6のタグエラー検出コード回路106によって提供されたタグパリティ104の形で、現在生成されたエラー検出コード103を受信する。第2の冗長情報インジケータ生成回路102はまた、無効化インターバルカウンタ50(0)〜50(M)によって提供された現在の無効化インターバルカウント48(0)〜48(M)を受信する。無効化インターバルカウント48(0)〜48(M)は、キャッシュエントリ18(0)〜18(N)へのアクセス時の現在の無効化インターバルカウント48(0)〜48(M)を表す。現在の冗長情報インジケータ98は、符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)と同様の方式で第2の冗長情報インジケータ生成回路102によって生成される。
【００４２】
引き続き図8を参照すると、第2の冗長情報インジケータ生成回路102は、現在の冗長情報インジケータ98を生成するためにORベースの関数を実施する複数の論理ゲート108を使用する。たとえば、論理ゲート108はこの例ではXORゲートであるが、例としてORゲートおよび/またはNORゲートなどのORベースのゲートを含む他のゲートも利用され得る。非限定的な例として、無効化インターバルカウント48(0)〜48(M)が「10」であり、タグ20(0)〜20(N)が「0111」である場合、第1のパリティ生成回路110は、「10」+「0111」すなわち「100111」の結合または連結された値の奇数ビットに対して「排他的論理和」関数を実行する。結合または連結された値「100111」の第1の2(2)ビットは無効化インターバルカウント48(0)〜48(M)であり、第2の4(4)ビットはキャッシュエントリ18(0)〜18(N)内のタグ20(0)〜20(N)である。結合または連結された値「100111」の奇数ビットに対する「排他的論理和」関数の結果は「0」であり、これは符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)の第1のビットになる。第2のパリティ生成回路112では、タグパリティ104の偶数ビットおよび無効化インターバルカウント48(0)〜48(M)の偶数ビットは、偶数ビットの各々に適用される同じ「排他的論理和」関数を使用して符号化される。その結果は、符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)の第2のビットを形成する。得られた符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)は、奇数ビットおよび偶数ビットの各々に適用される「排他的論理和」関数を介して無効化インターバルカウント48(0)〜48(M)とともに符号化されたタグパリティ104になる。「排他的論理和」関数に加えて他のデジタル論理関数が使用され得ることに留意されたい。
【００４３】
引き続き図6および図8を参照すると、冗長情報インジケータ検証回路30(1)は、タグパリティ104を表す複数のビットを受信するように構成され得、その結果、タグパリティ[0]114は最初のビットまたは最下位ビットを表し、タグパリティ[Y]116は最後のビットまたは最上位ビットを表し、ここで、タグパリティ104内にY個のビットがある。冗長情報インジケータ検証回路30(1)はまた、無効化インターバルカウント48(0)〜48(M)を表す複数のビットを受信するように構成され得、その結果、無効化インターバルカウント[0]118は最初のビットまたは最下位ビットを表し、無効化インターバルカウント[Z]120は最後のビットまたは最上位ビットを表し、ここで、無効化インターバルカウント48(0)〜48(M)内にZ個のビットがある。キャッシュエントリ18(0)〜18(N)に対応する、得られた符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)は、タグアレイ14に記憶される。
【００４４】
生成されると、現在の冗長情報インジケータ98は、一致が存在するかどうかを判断するために、冗長情報インジケータ比較回路100によって、記憶された符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)と比較される。一致が存在する場合、これは、同じ無効化インターバルカウント48(0)〜48(M)によって表されるように、同じ無効化インターバルにおいてキャッシュエントリ18(0)〜18(N)の確立およびキャッシュエントリ18(0)〜18(N)へのアクセスが発生したので、有効インジケータ24(0)〜24(N)は有効であるはずであるという指標である。比較の結果として、冗長情報インジケータ比較回路100は、キャッシュエントリ18(0)〜18(N)においてビットフリップが発生したかどうかをシグナリングするキャッシュエントリエラーインジケータ122を生成する。
【００４５】
引き続き図6を参照すると、キャッシュメモリ12(1)内の例示的な冗長情報インジケータ生成回路60(1)の概略図のさらなる詳細が図9で提供される。冗長情報インジケータ生成回路60(1)は、確立されるべきキャッシュエントリ18(0)〜18(N)に対応する符号化エラー検出コード(たとえば、パリティ)およびキャッシュエントリ18(0)〜18(N)が確立されたときの無効化インターバルカウント48(0)〜48(M)に基づいて、符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)を生成するように構成される。図9の冗長情報インジケータ生成回路60(1)を参照すると、符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)を生成するためにタグパリティ82とともに無効化インターバルカウント48(0)〜48(M)を符号化する1つの方法が示されている。この例では、冗長情報インジケータ生成回路60(1)は、タグパリティ82において無効化インターバルカウント48(0)〜48(M)を符号化するために「排他的論理和」関数を実施する複数の論理ゲート108を使用する。冗長情報インジケータ生成回路60(1)は、冗長情報インジケータ検証回路30(1)と類似している。「排他的論理和」関数は、デジタル回路におけるエラー検出コードとしてのパリティ生成を実施するために使用され得る。この例では、冗長情報インジケータ生成回路60(1)は、「排他的論理和」を受信された入力の奇数ビットおよび偶数ビットの各々に適用することに基づいて、符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)を生成する。第1のパリティ生成回路110では、タグパリティ82の奇数ビットおよび無効化インターバルカウント48(0)〜48(M)の奇数ビットは、奇数ビットの各々に適用される「排他的論理和」関数を使用して符号化される。その結果は、符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)の第1のビットを形成する。
【００４６】
図6とともに引き続き図9を参照すると、非限定的な例として、無効化インターバルカウント48(0)〜48(M)が「10」であり、タグ20(0)〜20(N)が「0111」である場合、第1のパリティ生成回路110は、「10」+「0111」すなわち「100111」の結合または連結された値の奇数ビットに対して「排他的論理和」関数を実行する。結合または連結された値「100111」の第1の2(2)ビットは無効化インターバルカウント48(0)〜48(M)であり、第2の4(4)ビットはキャッシュエントリ18(0)〜18(N)内のタグ20(0)〜20(N)である。結合または連結された値「100111」の奇数ビットに対する「排他的論理和」関数の結果は「0」であり、これは符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)の第1のビットになる。第2のパリティ生成回路112では、タグパリティ82の偶数ビットおよび無効化インターバルカウント48(0)〜48(M)の偶数ビットは、偶数ビットの各々に適用される同じ「排他的論理和」関数を使用して符号化される。その結果は、符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)の第2のビットを形成する。得られた符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)は、奇数ビットおよび偶数ビットの各々に適用される「排他的論理和」関数を介して無効化インターバルカウント48(0)〜48(M)とともに符号化されたタグパリティ82になる。「排他的論理和」関数に加えて他のデジタル論理関数が使用され得ることに留意されたい。
【００４７】
引き続き図6および図9を参照すると、冗長情報インジケータ生成回路60(1)は、タグパリティ82を表す複数のビットを受信するように構成され得、その結果、タグパリティ[0]114は最初のビットまたは最下位ビットを表し、タグパリティ[Y]116は最後のビットまたは最上位ビットを表し、ここで、タグパリティ82内にY個のビットがある。冗長情報インジケータ生成回路60(1)はまた、無効化インターバルカウント48(0)〜48(M)を表す複数のビットを受信するように構成され得、その結果、無効化インターバルカウント[0]118は最初のビットまたは最下位ビットを表し、無効化インターバルカウント[Z]120は最後のビットまたは最上位ビットを表し、ここで、無効化インターバルカウント48(0)〜48(M)内にZ個のビットがある。キャッシュエントリ18(0)〜18(N)に対応する、得られた符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)は、タグアレイ14に記憶される。
【００４８】
引き続き図6を参照すると、冗長情報インジケータ検証回路30(1)は、キャッシュエントリ18(0)〜18(N)がアクセスされたことに応じて、現在の無効化インターバルカウント48(0)〜48(M)を受信するように構成される。冗長情報インジケータ検証回路30(1)はまた、アクセスされたキャッシュエントリ18(0)〜18(N)に対応する、記憶された符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)を受信するように構成される。加えて、冗長情報インジケータ検証回路30(1)は、タグパリティ回路106から現在生成されたタグパリティ104を受信するように構成される。現在生成されたタグパリティ104は、上記で説明したタグパリティ生成回路84から生成されたタグパリティ82と同様の方式で生成される。タグパリティ回路106は、タグパリティ回路106において提供された論理ゲート(図示せず)を使用して、現在生成されたタグパリティ104を生成する。しかしながら、この例では、タグパリティ104を検査することはタグパリティ回路106において実行されない。この例では、タグパリティ104は冗長情報インジケータ検証回路30(1)において検査される。タグパリティ104が依然として検査されている間、符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)に対する同数のビットが依然として使用されていても、今度はタグ20(0)〜20(N)と有効インジケータ24(0)〜24(N)の両方に対してタグパリティ104の検査が実行される。符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)に対する同数のビットは、タグ20(0)〜20(N)のみに対するタグパリティ104の検査が実行されるシナリオにおいて使用される数として使用される。このようにして、符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)は、有効インジケータ24(0)〜24(N)とタグ20(0)〜20(N)の両方のためのエラー検出コード(たとえば、パリティ)保護を実現する。加えて、無効化インターバルカウンタ50(0)〜50(M)はまた、無効化動作を追跡するために他のキャッシュメモリ(図示せず)によって使用され得る。
【００４９】
1つの非限定的な例として、図6のキャッシュメモリエラー検出回路10(1)内の各無効化インターバルカウント48(0)〜48(M)において提供されるビット数は、タグパリティ82におけるビット数以下になるように提供され得る。さもなければ、図8の冗長情報インジケータ検証回路30(1)がすべてのシナリオにおいてビットフリップを検出することが可能ではない場合がある。たとえば、無効化インターバルカウント48において提供された4(4)カウンタビットおよび現在のタグパリティ104において提供された2(2)パリティビットがあると想定する。また、無効化インターバルカウント48として「0111」および「1000」のカウンタ値を想定する。「0111」および「1000」のこれらの無効化インターバルカウントの偶数ビットおよび奇数ビットを考慮すると、両方とも、図9の冗長情報インジケータ生成回路60(1)によって生成される、1 XOR 1 = 0 XOR 0 = 0の同じ「偶数」の結果をもたらす。また、両方とも、図9の冗長情報インジケータ生成回路60(1)によって生成される、0 XOR 1 = 1 XOR 0 = 1の同じ「奇数」の結果をもたらす。したがって、無効化インターバルカウント48が無効化動作のせいで「0111」から「1000」に増分されるとき、冗長情報インジケータ生成回路60(1)は、「0111」および「1000」の両方の無効化インターバルカウントについて、符号化冗長情報インジケータ46'において新しい無効化インターバルカウント48と同じ値を符号化する。したがって、冗長情報インジケータ生成回路60(1)によって提供される冗長情報インジケータ46の符号化結果がこの事例では同じになるので、この例では、図8の冗長情報インジケータ検証回路30(1)が、無効化インターバルカウント48を「0111」から「1000」に増分する対応する無効化動作の後のビットフリップを検出することが可能ではない。
【００５０】
キャッシュエントリ18(0)〜18(N)を確立したとき、現在の無効化インターバルカウント48(0)〜48(M)とは異なる符号化冗長情報インジケータ46'を提供するために、冗長情報インジケータ46(1)(0)〜46(1)(N)が無効化インターバルカウントとともに符号化され得ることも可能であることに留意されたい。この技法は、フラッシュ無効化ではない、キャッシュメモリ12(1)に対して実行される他の動作に使用され得る。たとえば、特定のキャッシュエントリ18(0)〜18(N)を無効化の対象とすることが望まれ得る。この例では、対象とされるキャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)は、対応するキャッシュエントリ18(0)〜18(N)が無効であることを示す無効インジケータで上書きされ得る。対象とされるキャッシュエントリ18(0)〜18(N)のためのタグパリティ82も上書きされ得る。このようにして、有効インジケータ24(0)〜24(N)が有効状態にフリップバックした場合、そのことが検出され得る。また、現在の無効化インターバルカウント48(0)〜48(M)は増分されない。このようにして、他の確立されたキャッシュエントリ18(0)〜18(N)のためのタグパリティ82を符号化するために使用された現在の無効化インターバルカウント48(0)〜48(M)が変化しないので、無効化動作後の他の確立されたキャッシュエントリ18(0)〜18(N)におけるビットフリップを検出するキャッシュメモリ12(1)の能力は影響を受けない。
【００５１】
この例では、現在の無効化インターバルカウント48(0)〜48(M)とは異なる無効化インターバルカウントは、対象とされるキャッシュエントリ18(0)〜18(N)に対応する冗長情報インジケータ46(1)(0)〜46(1)(N)を符号化して、符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)を提供するために使用され得る。たとえば、現在の無効化インターバルカウント48用の構成されたカウント値の範囲外にある無効化インターバルカウントは、対象とされるキャッシュエントリ18(0)〜18(N)に対応する符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)を提供するために使用され得る。そうでなければ、無効化動作が無効化イネーブル信号26をシグナリングするタイプではない、したがって、現在の無効化インターバルカウント48(0)〜48(M)を進めない場合、無効化された対象とされるキャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)において発生するビットフリップは、冗長情報インジケータ検証回路30(1)によって検出されなくなる可能性がある。
【００５２】
図10に関して、確立されたキャッシュエントリ18(0)〜18(N)のタグパリティ82において符号化するために無効化インターバルカウンタ50(0)〜50(M)から現在の無効化インターバルカウント48(0)〜48(M)を受信する、図6の冗長情報インジケータ生成回路60(1)の例示的なプロセスを示すフローチャートが提供される。冗長情報インジケータ生成回路60(1)は、確立されるべきキャッシュエントリ18(0)〜18(N)に基づいて、タグパリティ82を受信するように構成される(ブロック124)。タグパリティ82は、タグエラー検出コード生成回路84によってエラー検出コード81として生成される。加えて、冗長情報インジケータ生成回路60(1)は、現在の無効化インターバルカウント48(0)〜48(M)を受信するように構成される(ブロック126)。冗長情報インジケータ生成回路60(1)は、キャッシュエントリ18(0)〜18(N)を確立したことに応じて、現在の無効化インターバルカウント48(0)〜48(M)に基づいて、キャッシュエントリ18(0)〜18(N)の各々のための符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)を提供するように構成される(ブロック128)。この例では、上記で説明したように、符号化は、「排他的論理和」関数を使用して、図6および図9で説明したようにタグパリティ82とともに無効化インターバルカウント48(0)〜48(M)を符号化することを含む。符号化されると、キャッシュエントリ18(0)〜18(N)の各々に対応する、キャッシュエントリ18(0)〜18(N)の各々のための符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)は、タグアレイ14に記憶される(ブロック130)。記憶された符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)は、有効インジケータ24(0)〜24(N)におけるビットフリップを検出するために冗長情報インジケータ検証回路30(1)によって使用される。
【００５３】
図11に関して、図6の冗長情報インジケータ検証回路30(1)の例示的なプロセスを示すフローチャートが提供される。冗長情報インジケータ検証回路30(1)は、キャッシュメモリ12(1)内のアクセスされたキャッシュエントリ18(0)〜18(N)の有効インジケータ24(0)〜24(N)においてビットフリップが発生したかどうかを検出する。冗長情報インジケータ検証回路30(1)は、キャッシュエントリ18(0)〜18(N)の確立の間に無効化インターバルカウント48(0)〜48(M)とともに符号化された符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)と、無効化インターバルカウンタ50(0)〜50(M)における現在の無効化インターバルカウント48(0)〜48(M)とに基づいて、ビットフリップを検出する。冗長情報インジケータ検証回路30(1)は、アクセスされたキャッシュエントリ18(0)〜18(N)のための符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)を受信する(ブロック132)。冗長情報インジケータ検証回路30(1)は加えて、無効化インターバルカウンタ50(0)〜50(M)から現在の無効化インターバルカウント48(0)〜48(M)を受信する(ブロック134)。次いで、冗長情報インジケータ検証回路30(1)は、現在の無効化インターバルカウント48(0)〜48(M)に基づいて、(図8に示すような)現在の冗長情報インジケータ98を生成する(ブロック136)。冗長情報インジケータ比較回路100は、アクセスされたキャッシュエントリ18(0)〜18(N)のための符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)を現在の冗長情報インジケータ98と比較する(ブロック138)。比較に基づいて、冗長情報インジケータ比較回路100は、アクセスされたキャッシュエントリ18(0)〜18(N)のための有効インジケータ24(0)〜24(N)においてビットフリップが発生した場合、符号化冗長情報インジケータ46'(1)(0)〜46'(1)(N)と現在の冗長情報インジケータ98を比較することに基づいて、キャッシュエントリエラーインジケータ122を生成する(ブロック140)。
【００５４】
本明細書で開示する態様による、無効化動作後のキャッシュメモリ内の有効インジケータにおけるビットフリップを検出するためのキャッシュメモリエラー検出回路、ならびに関連する方法およびプロセッサベースのシステムは、任意のプロセッサベースのデバイスにおいて提供されるか、またはそのデバイスに統合され得る。例として、限定はしないが、セットトップボックス、エンターテインメントユニット、ナビゲーションデバイス、通信デバイス、固定ロケーションデータユニット、モバイルロケーションデータユニット、モバイルフォン、セルラーフォン、コンピュータ、ポータブルコンピュータ、デスクトップコンピュータ、携帯情報端末(PDA)、モニタ、コンピュータモニタ、テレビジョン、チューナー、ラジオ、衛星ラジオ、音楽プレーヤ、デジタル音楽プレーヤ、ポータブル音楽プレーヤ、デジタルビデオプレーヤ、ビデオプレーヤ、デジタルビデオディスク(DVD)プレーヤ、およびポータブルデジタルビデオプレーヤが含まれる。
【００５５】
この点について、図12は、非限定的な例として、無効化動作後のキャッシュメモリ内の有効インジケータ(たとえば、有効ビット)におけるビットフリップを検出するための、それぞれ図1、図6、および図12のキャッシュメモリエラー検出回路10、10(1)、および10(2)のいずれかを含むことができるキャッシュメモリエラー検出回路147を利用することができるプロセッサベースのシステム146の一例を示す。この例では、プロセッサベースのシステム146は、各々が1つまたは複数のプロセッサ150を含む1つまたは複数のCPU148を含む。CPU148は、一時的に記憶されたデータへの高速アクセスのためにプロセッサ150に結合されたキャッシュメモリ152を有し得る。CPU148は、システムバス154に結合され、プロセッサベースのシステム146に含まれるマスタデバイスとスレーブデバイスとを相互結合することができる。よく知られているように、CPU148は、システムバス154を介してアドレス情報、制御情報、およびデータ情報を交換することによって、これらの他のデバイスと通信する。たとえば、CPU148は、スレーブデバイスの一例として、メモリコントローラ156にバストランザクション要求を通信することができる。図12には示されていないが、複数のシステムバス154が提供され得、各システムバス154は異なるファブリックを構成する。
【００５６】
他のマスタデバイスおよびスレーブデバイスが、システムバス154に接続され得る。図12に示すように、これらのデバイスは、例として、メモリシステム158、1つまたは複数の入力デバイス160、1つまたは複数の出力デバイス162、1つまたは複数のネットワークインターフェースデバイス164、および1つまたは複数のディスプレイコントローラ166を含むことができる。入力デバイス160は、限定はしないが、入力キー、スイッチ、音声プロセッサなどを含む、任意のタイプの入力デバイスを含むことができる。出力デバイス162は、限定はしないが、オーディオ、ビデオ、他の視覚インジケータなどを含む、任意のタイプの出力デバイスを含むことができる。ネットワークインターフェースデバイス164は、ネットワーク168とのデータの交換を可能にするように構成された任意のデバイスとすることができる。ネットワーク168は、限定はしないが、ワイヤードネットワークまたはワイヤレスネットワーク、プライベートネットワークまたは公衆ネットワーク、ローカルエリアネットワーク(LAN)、ワイドローカルエリアネットワーク(WLAN)、およびインターネットを含む、任意のタイプのネットワークとすることができる。ネットワークインターフェースデバイス164は、任意のタイプの所望の通信プロトコルをサポートするように構成され得る。メモリシステム158は、1つまたは複数のメモリユニット170(0〜N)を含むことができる。
【００５７】
CPU148はまた、1つまたは複数のディスプレイ172に送られる情報を制御するために、システムバス154を介してディスプレイコントローラ166にアクセスするように構成され得る。ディスプレイコントローラ166は、1つまたは複数のビデオプロセッサ174を介して表示されるべき情報をディスプレイ172に送り、ビデオプロセッサ174は、表示されるべき情報を、ディスプレイ172に適したフォーマットとなるように処理する。ディスプレイ172は、限定はしないが、陰極線管(CRT)、液晶ディスプレイ(LCD)、プラズマディスプレイなどを含む、任意のタイプのディスプレイを含むことができる。
【００５８】
本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、回路、およびアルゴリズムは、電子ハードウェア、メモリもしくは別のコンピュータ可読媒体に記憶され、プロセッサもしくは他の処理デバイスによって実行される命令、または両方の組合せとして実装され得ることを当業者はさらに諒解されよう。本明細書で説明するマスタデバイスおよびスレーブデバイスは、例として、任意の回路、ハードウェア構成要素、集積回路(IC)、またはICチップにおいて利用され得る。本明細書で開示するメモリは、任意のタイプおよびサイズのメモリであり得、任意のタイプの所望の情報を記憶するように構成され得る。この互換性を明確に示すために、様々な例示的な構成要素、ブロック、モジュール、回路、およびステップについて、概してそれらの機能に関して上記で説明した。そのような機能がどのように実装されるかは、特定の適用例、設計上の選択、および/またはシステム全体に課された設計制約に依存する。当業者は、説明した機能を特定の適用例ごとに様々な方法で実装し得るが、そのような実装の決定は、本開示の範囲からの逸脱を引き起こすものと解釈されるべきではない。
【００５９】
本明細書で開示する態様に関して説明する様々な例示的な論理ブロック、モジュール、および回路は、プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)もしくは他のプログラマブル論理デバイス、個別ゲートもしくはトランジスタ論理、個別ハードウェア構成要素、または本明細書で説明する機能を実行するように設計されたそれらの任意の組合せを用いて実装または実行され得る。プロセッサはマイクロプロセッサであり得るが、代替として、プロセッサは任意の従来のプロセッサ、コントローラ、マイクロコントローラ、または状態機械であり得る。プロセッサはまた、コンピューティングデバイスの組合せ、たとえば、DSPとマイクロプロセッサの組合せ、複数のマイクロプロセッサ、DSPコアと連携した1つもしくは複数のマイクロプロセッサ、または任意の他のそのような構成として実装され得る。
【００６０】
本明細書で開示する態様は、ハードウェアにおいて、また、ハードウェアに記憶された命令において具現化され得、たとえば、ランダムアクセスメモリ(RAM)、フラッシュメモリ、読取り専用メモリ(ROM)、電気的プログラマブルROM(EPROM)、電気的消去可能プログラマブルROM(EEPROM)、レジスタ、ハードディスク、リムーバブルディスク、CD-ROM、または当技術分野で知られている任意の他の形態のコンピュータ可読媒体に存在し得る。例示的な記憶媒体は、プロセッサが記憶媒体から情報を読み取り、記憶媒体に情報を書き込むことができるようにプロセッサに結合される。代替として、記憶媒体はプロセッサと一体であってもよい。プロセッサおよび記憶媒体は、ASICに存在し得る。ASICは、リモート局に存在し得る。代替として、プロセッサおよび記憶媒体は、個別構成要素として、リモート局、基地局、またはサーバに存在し得る。
【００６１】
本明細書の例示的な態様のいずれかで説明した動作ステップは、例および議論を提供するために説明されていることにも留意されたい。説明した動作は、図示した順序以外の多数の異なる順序で実行され得る。さらに、単一の動作ステップで説明した動作は、実際にはいくつかの異なるステップで実行され得る。加えて、例示的な態様において説明した1つまたは複数の動作ステップは、組み合わされ得る。当業者には容易に明らかになるように、フローチャート図に示す動作ステップは、多数の異なる修正を受ける場合があることを理解されたい。当業者はまた、情報および信号が様々な異なる技術および技法のいずれかを使用して表され得ることを理解されよう。たとえば、上記の説明全体にわたって言及され得るデータ、命令、コマンド、情報、信号、ビット、シンボル、およびチップは、電圧、電流、電磁波、磁場もしくは磁性粒子、光場または光学粒子、またはそれらの任意の組合せによって表され得る。
【００６２】
本開示の前述の説明は、いかなる当業者も本開示を作製または使用できるようにするために提供される。本開示に対する様々な修正は当業者には容易に明らかになり、本明細書で定義する一般原理は、本開示の趣旨または範囲から逸脱することなく、他の変形形態に適用され得る。したがって、本開示は、本明細書で説明する例および設計に限定されるものではなく、本明細書で開示する原理および新規の特徴と一致する最も広い範囲を与えられるべきである。
【符号の説明】
【００６３】
10、10(1)、10(2)  キャッシュメモリエラー検出回路
12、12(1)  キャッシュメモリ
14  タグアレイ
16、16(0)〜16(X)  データアレイ
18、18(0)〜18(N)  キャッシュエントリ
20(0)〜20(N)  タグ
22(0)〜22(N)  データエントリ
24(0)〜24(N)  有効インジケータ
26  無効化イネーブル信号
28  無効化イネーブル入力
30、30(1)  冗長情報インジケータ検証回路
32  キャッシュエントリエラーインジケータライン
34  キャッシュエントリエラーインジケータ
36  他の任意選択の入力
38  キャッシュヒット/ミスインジケータ回路
40  キャッシュヒット/ミスインジケータ
42  キャッシュヒット/ミスインジケータライン
44  表
46(0)〜46(N)  冗長情報インジケータ
46'(1)(0)〜46'(1)(N)  符号化冗長情報インジケータ
48、48(0)〜48(M)  現在の無効化インターバルカウント
50、50(0)〜50(M)  無効化インターバルカウンタ
52  確立イベント
54  無効化動作
56  放射線イベント
58  アクセスイベント
60、60(1)  冗長情報インジケータ生成回路
62  無効化インターバル構成設定
81  エラー検出コード
82  タグパリティ
84  タグエラー検出コード生成回路
86  表
90  確立イベント
92  無効化動作
96  アクセスイベント
98  現在の冗長情報インジケータ
100  冗長情報インジケータ比較回路
102  第2の冗長情報インジケータ生成回路
103  現在生成されたエラー検出コード
104  タグパリティ
106  タグエラー検出コード回路、タグパリティ回路
108  論理ゲート
110  第1のパリティ生成回路
112  第2のパリティ生成回路
114  タグパリティ[0]
116  タグパリティ[Y]
118  無効化インターバルカウント[0]
120  無効化インターバルカウント[Z]
122  キャッシュエントリエラーインジケータ
146  プロセッサベースのシステム
147  キャッシュメモリエラー検出回路
148  CPU
150  プロセッサ
152  キャッシュメモリ
154  システムバス
156  メモリコントローラ
158  メモリシステム
160  入力デバイス
162  出力デバイス
164  ネットワークインターフェースデバイス
166  ディスプレイコントローラ
168  ネットワーク
170(0〜N)  メモリユニット
172  ディスプレイ
174  ビデオプロセッサ
【図１】
0006339697.tif 000002
【図２】
0006339697.tif 000003
【図３】
0006339697.tif 000004
【図４】
0006339697.tif 000005
【図５】
0006339697.tif 000006
【図６】
0006339697.tif 000007
【図７】
0006339697.tif 000008
【図８】
0006339697.tif 000009
【図９】
0006339697.tif 000010
【図１０】
0006339697.tif 000011
【図１１】
0006339697.tif 000012
【図１２】
0006339697.tif 000013