(57)【要約】本発明のある実施形態は、キャッシュメモリへの参照の間に直面するビットエラーを修正するシステムを提供する。アプリケーションの実行の間に、システムは、データアイテムおよび関連するエラー訂正コードをキャッシュメモリから取り出すことによって、キャッシュメモリへの参照を実行する。次に、システムは、エラー訂正コードを取り出されたデータアイテムから計算し、計算されたエラー訂正コード関連するエラー訂正コードと比較する。計算されたエラー訂正コードが関連するエラー訂正コードと整合しない場合、ビットエラーが生じる。この場合、システムは、ビットエラーが後の時間に修正され得るように、キャッシュメモリと関連する１つ以上のレジスタのセット内のあるレジスタに参照の識別子を格納する。このシステムはまた、アプリケーションが実行し続けることを可能にする。
2006502460.tif 000002
【特許請求の範囲】
【請求項１】
キャッシュメモリへの参照の間に直面するビットエラーを修正する方法であって、
アプリケーションの実行中に、該キャッシュメモリへの参照を実行するステップであって、該参照を実行するステップは、該キャッシュメモリからデータアイテムおよび関連するエラー訂正コードを取り出すステップを含む、ステップと、
該取り出されたデータアイテムからエラー訂正コードを計算するステップと、
該計算されたエラー訂正コードを該関連するエラー訂正コードと比較するステップと
を包含し、
該計算されたエラー訂正コードが、該関連するエラー訂正コードと整合せず、ビットエラーが生じたことを示す場合、該方法は、
該ビットエラーが後の時間に修正され得るように、該キャッシュメモリと関連する１つ以上のレジスタのセットのあるレジスタに該参照の識別子を格納するステップと、
該アプリケーションの実行を続けるステップと
をさらに包含する、方法。
【請求項２】
前記後の時間に前記キャッシュメモリの前記ビットエラーを修正するステップをさらに包含するステップであって、
前記レジスタから前記参照の識別子を読み出すステップと、
該識別子を利用して、前記データアイテムおよび前記関連するエラー訂正コードを取り出すステップと、
該関連するエラー訂正コードを利用して、訂正されたデータアイテムおよびエラー訂正コードを生成するステップと、
該キャッシュメモリに該訂正されたデータアイテムおよびエラー訂正コードを格納するステップと
により行われるステップをさらに包含する、請求項１に記載の方法。
【請求項３】
前記ビットエラーを修正するステップは、オペレーティングシステムのチックタイマーによって決定される周期的な間隔で該ビットエラーを修正するステップを含む、請求項２に記載の方法。
【請求項４】
前記関連するエラー訂正コードとともに前記データアイテムを取り出すステップは、
前記キャッシュメモリから前記参照のタグを該タグの関連するエラー訂正コードとともに取り出すステップと、
前記参照のデータラインを該データラインの関連するエラー訂正コードとともに取り出すステップと
を含む、請求項１に記載の方法。
【請求項５】
前記ビットエラーが前記タグ内で検出された場合、前記方法は、前記キャッシュのミスバッファに前記参照を格納させるように、キャッシュミスを導き、それにより、該ビットエラーが修正された後の時間に、該参照がリトライされ得るステップをさらに包含し、
前記アプリケーションの実行を続けるステップは、該参照を行ったスレッドが、該参照が完了することを待ちつつ、該アプリケーションのほかのスレッドの実行を続けるステップを含む、請求項４に記載の方法。
【請求項６】
前記参照が前記ミスバッファに格納された場合、前記方法は、前記ビットエラーが修正された後に、該参照を該ミスバッファから起動させるようにキャッシュフィル動作を導くステップをさらに包含する、請求項５に記載の方法。
【請求項７】
前記ビットエラーが前記データライン内で検出された場合、前記方法は、前記キャッシュメモリとプロセッサとの間のデータパスに配置された回路を介して該ビットエラーを訂正するステップをさらに包含する、請求項４に記載の方法。
【請求項８】
１つ以上のレジスタの前記セットのレジスタは、エントリが上書きされることを可能にする環状バッファとして組織化される、請求項１に記載の方法。
【請求項９】
前記キャッシュメモリは、メモリ階層内のレベル２（Ｌ２）キャッシュまたはより下位のキャッシュである、請求項１に記載の方法。
【請求項１０】
前記エラー訂正コードは、シングルビットエラーを訂正し、ダブルビットエラーを検出する、請求項１に記載の方法。
【請求項１１】
キャッシュメモリへの参照の間に直面するビットエラーを修正する装置であって、
該キャッシュメモリと、
アプリケーションから参照を受け取るように構成された該キャッシュメモリの入力と、
該キャッシュメモリから該参照のデータアイテムおよび関連するエラー訂正コードを取り出すように構成された取り出しメカニズムと、
該取り出されたデータアイテムからエラー訂正コードを計算するように構成されたエラー訂正コード回路と、
該計算されたエラー訂正コードを該関連するエラー訂正コードと比較することによってビットエラーを検出するように構成された比較器と、
キャッシュ参照の間に検出されたエラーの識別子を格納する１つ以上のレジスタのセットと、
エラーロギングメカニズムであって、ビットエラーが生じた場合、該ビットエラーが後の時間に修正され得るように、該参照の識別子を該１つ以上のレジスタのセットのあるレジスタに格納するように構成される、エラーロギングメカニズムと
を備える、装置。
【請求項１２】
前記レジスタから前記参照の識別子を読み出し、
該識別子を利用して、前記データアイテムおよび前記関連するエラー訂正コードを取り出し、
該関連するエラー訂正コードを利用して、訂正されたデータアイテムおよびエラー訂正コードを生成し、
前記キャッシュメモリに該訂正されたデータアイテムおよびエラー訂正コードを格納する
ように構成されたビットエラー修正メカニズムをさらに備える、請求項１１に記載の装置。
【請求項１３】
前記ビットエラー修正メカニズムは、オペレーティングシステムのチックタイマーによって決定される周期的な間隔でビットエラーを修正するように構成された、請求項１２に記載の装置。
【請求項１４】
前記取り出しメカニズムは、
前記キャッシュメモリから前記参照のタグを該タグの関連するエラー訂正コードとともに取り出し、
前記参照のデータラインを該データラインの関連するエラー訂正コードとともに取り出す
ように構成された、請求項１１に記載の装置。
【請求項１５】
前記ビットエラーが前記タグ内で検出された場合、前記エラーロギングメカニズムは、前記参照を前記キャッシュメモリのミスバッファに格納させるようにキャッシュミスをトリガーすることにより、該ビットエラー修正された後の時間に該参照が
取り出され得、それにより、該参照を行ったスレッドが、該参照が完了することを待ちつつ、前記アプリケーションのほかのスレッドの実行の継続を可能にする、請求項１４に記載の装置。
【請求項１６】
前記参照が前記ミスバッファに格納された場合、前記装置は、前記タグの前記ビットエラーが修正された後に、該参照を該ミスバッファから起動させるようにキャッシュフィル動作を導くようにさらに構成される、請求項１５に記載の装置。
【請求項１７】
データラインのビットエラーを訂正する、前記キャッシュメモリとプロセッサとの間のデータパスに配置された回路をさらに備える、請求項１４に記載の装置。
【請求項１８】
１つ以上のレジスタのセットのレジスタは、エントリが上書きされることを可能にする環状バッファとして組織化される、請求項１１に記載の装置。
【請求項１９】
前記キャッシュメモリは、メモリ階層内のレベル２（Ｌ２）キャッシュまたはより下位のキャッシュである、請求項１１に記載の装置。
【請求項２０】
前記エラー訂正コードは、シングルビットエラーを訂正し、ダブルビットエラーを検出する、請求項１１に記載の装置。
【請求項２１】
キャッシュメモリへの参照の間に直面するビットエラーを修正する装置であって、
該キャッシュメモリと、
アプリケーションから参照を受け取るように構成された該キャッシュメモリの入力と、
該キャッシュメモリから該参照のデータアイテムおよび関連するエラー訂正コードを取り出すように構成された取り出しメカニズムであって、該取り出しメカニズムは、
該キャッシュメモリから該参照のタグを該タグの関連するエラー訂正コードとともに取り出し、
該参照のデータラインを該データラインの関連するエラー訂正コードとともに取り出す
ように構成された、取り出しメカニズムと、
該取り出されたデータアイテムからエラー訂正コードを計算するように構成されたエラー訂正コード回路と、
該計算されたエラー訂正コードを該関連するエラー訂正コードと比較することによってビットエラーを検出するように構成された比較器と、
キャッシュ参照の間に検出されたエラーの識別子を格納する１つ以上のレジスタのセットと、
エラーロギングメカニズムであって、ビットエラーが生じた場合、該ビットエラーが後の時間に修正され得るように、該参照の識別子を該１つ以上のレジスタのセットのあるレジスタに格納するように構成される、エラーロギングメカニズムと、
ビットエラー訂正メカニズムであって、
該レジスタから該参照の識別子を読み出し、
該識別子を利用して、該データアイテムおよび該関連するエラー訂正コードを取り出し、
該関連するエラー訂正コードを利用して、訂正されたデータアイテムおよびエラー訂正コードを生成し、
該キャッシュメモリに該訂正されたデータアイテムおよびエラー訂正コードを格納する
ように構成されたビットエラー修正メカニズムと
を備える、装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明は、コンピューティングシステム内のフォルトトレランスを提供するメカニズムに関する。より詳細には、本発明は、スレッドおよび／またはプロセスを実行すると同時にブロッキングなく、キャッシュ参照間に直面するビットエラーを修正する方法および装置に関する。
【背景技術】
【０００２】
（関連技術）
現在の半導体技術の急速な発展は、マイクロプロセッサチップ上に多量のキャッシュを組み込むことを可能にする。例えば、いくつかのマイクロプロセッサは、複数のプロセッサと、多量のレベル２（Ｌ２）キャッシュにアクセスする関連するレベル１（Ｌ１）キャッシュとを含む。ここで、これらの構造の全ては、同一のマイクロプロセッサチップ上に常駐する。マイクロプロセッサチップ上にＬ２キャッシュを位置付けることは、劇的に、Ｌ２キャッシュにアクセスするために必要となる時間を減少させ、それにより、マイクロプロセッサシステムの性能を増大させ得る。
【０００３】
しかし、大量のオンチップキャッシュは、ランダムなビットエラーを生じやすい。この問題に対する１つのソリューションは、これらのエラーを検出かつ訂正するエラー訂正コードを利用することである。マイクロプロセッサチップの外部に位置する半導体メモリは、多くの場合、各データワードのエラー訂正コードを格納する付加的なスペースを含む。データワードが最初にメモリに格納されるときに、そのデータワードからエラー訂正コードが計算され、このエラー訂正コードは、メモリ内のデータワードに沿って格納される。データワードがその後メモリから取り出されるときに、エラー訂正コードもまた取り出される。同時に、新しいエラー訂正コードが、取り出されたデータワードに対して計算される。新しいエラー訂正コードが取り出されたエラー訂正コードと異なる場合、ビットエラーが、エラー訂正コードのデータワードのどちらかに生じる。この場合、エラー訂正コードを利用して、ビットエラーを訂正することができる。
【０００４】
データを読み出し、エラーを検出し、かつエラーを訂正するこのプロセスは、読み出し−修正−書き込み（ＲＭＷ）動作に関する。ＲＭＷ動作を実装してエラーを訂正することは、キャッシュアクセスに、コンピュータシステム性能を大幅に低下させ得るさらなる遅延を導き、貴重なオンチップのリアルエステートを消費するさらなる回路を必要とし得る。結果的に、大量のオンチップキャッシュは、現在、ビットエラーを検出および訂正するＲＭＷ動作をサポートしていない。既存のオンチップキャッシュは、単に、読み出し動作中のデータエラーをチェックし、かつ、データエラーが検出された場合、システム全体が停止し、それにより、他のリクエストがキャッシュにアクセスすることを妨げる。もしくは、トラップが発生し得、オーバーフローバッファを利用して、未処理のトランザクションを積み上げる。
【０００５】
シングルチップマルチプロセッサシステムでは、複数のプロセッサおよびスレッドからの大量のトランザクションが、与えられたいくらかの時間で未処理となり得る。したがって、全てのトランザクションを停止させるメカニズム、または未処理のリクエストを積み上げるメカニズムを提供することは、著しい量の複雑性を導き、かつ、貴重なオンチップのリアルエステートを消費する。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
したがって、必要とされるものは、オンチップキャッシュの設計を著しく複雑にし、メモリサブシステムを介する処理からの未処理のトランザクションを停止させることなく、オンチップキャッシュへの参照の間に直面するビットエラーを修正する方法および装置である。
【課題を解決するための手段】
【０００７】
（要旨）
本発明のある実施形態は、キャッシュメモリへの参照の間に直面するビットエラーを修正するシステムを提供する。アプリケーションの実行の間に、システムは、キャッシュメモリからデータアイテムおよび関連するエラー訂正コードを取り出すことによって、キャッシュメモリへの参照を実行する。次に、システムは、取り出されたデータアイテムからエラー訂正コードを計算し、計算されたエラー訂正コードを関連するエラー訂正コードと比較する。計算されたエラー訂正コードが関連するエラー訂正コードと整合しない場合、ビットエラーが生じる。この場合、システムは、ビットエラーが後の時間に修正され得るように、キャッシュメモリに関連する１つ以上のレジスタのセット内のレジスタに参照の識別子を格納する。システムはまた、アプリケーションが実行し続けることを可能にする。
【０００８】
この実施形態のある変形では、システムは、続いて、キャッシュメモリ内のビットエラーを修正する。このことは、レジスタから参照の識別子を読み出すこと、および、識別子を利用して、キャッシュからデータアイテムおよび関連するエラー訂正コードを取り出すことを含む。さらに、このことは、関連するエラー訂正コードを利用して、訂正されたデータアイテムおよびエラー訂正コードを生成すること、および、その後、キャッシュメモリへ訂正されたデータアイテムおよびエラー訂正コードを格納することを含む。
【０００９】
この実施形態のある変形では、ビットエラーを修正することは、オペレーティングシステムのチックタイマーによって決定される周期的な間隔でビットエラーを修正することを含む。
【００１０】
この実施形態のある変形では、関連するエラー訂正コードとともにデータアイテムを取り出すことは、キャッシュメモリから、参照のタグをタグの関連するエラー訂正コードとともに取り出すことを含む。このことは、さらに、参照のデータラインをデータラインの関連するエラー訂正コードとともに取り出すことを含む。
【００１１】
この変形のある変形では、ビットエラーがタグ内で検出された場合、システムは、キャッシュのミスバッファに参照を格納させるようにキャッシュミスを導き、それにより、参照は、ビットエラーが修正された後に取り出され得る。このことは、参照を行ったスレッドが、参照が完了することを待ちつつ、システムがアプリケーションのほかのスレッドの実行を続けることを可能にする。さらなる変形では、参照がミスバッファ内に格納される場合、システムは、ビットエラーが修正された後に、ミスバッファから参照を起動させるようにキャッシュフィル動作を導く。
【００１２】
この実施形態のある変形では、ビットエラーがデータライン内で検出された場合、システムは、キャッシュメモリとプロセッサとの間のデータパスに配置された回路を介してビットエラーを訂正する。
【００１３】
この実施形態のある変形では、１つ以上のレジスタのセットは、エントリが上書きされることを可能にする環状バッファとして組織化される。
【００１４】
この実施形態のある変形では、キャッシュメモリは、メモリ階層のレベル２（Ｌ２）キャッシュまたはより下位のキャッシュである。
【００１５】
この実施形態のある変形では、エラー訂正コードは、シングルビットエラーを訂正し、ダブルビットエラーを検出する。
【発明を実施するための最良の形態】
【００１６】
以下の説明は、任意の当業者が本発明を製作および利用することを可能にし、かつ、特定の用途およびその要件の文脈で提供される。開示される実施形態に対するさまざまな改変が、当業者には容易に明らかであり、本明細書中で規定される一般原理は、本発明の意図および範囲から逸脱することなく、ほかの実施形態および用途に適用され得る。したがって、本発明は、示される実施形態に限定されず、本明細書中に開示される原理および特徴と一致する最大範囲で許容され得る。
（マルチプロセッサシステム）
図１は、本発明の実施形態によるエラー訂正を提供するレベル２（Ｌ２）キャッシュ１０６を含むマルチプロセッサシステム１００を示す。なお、多くのマルチプロセッサシステム１００が、単一の半導体チップ１０１内に位置付けられる。より詳細には、半導体チップ１０１は、多くのプロセッサ１１０、１２０、１３０、および１４０を含み、これらは、それぞれレベル１（Ｌ１）キャッシュ１１２、１２２、１３２、および１４２を含む。なお、Ｌ１キャッシュ１１２、１２２、１３２、および１４２は、別個の命令およびデータキャッシュであってもよく、あるいは、統一された命令／データキャッシュであってもよい。Ｌ１キャッシュ１１２、１２２、１３２、および１４２は、Ｌ２キャッシュ１０６に接続され、Ｌ２キャッシュ１０６は、以下の図２〜４を参照してより詳細に説明されるエラー訂正コードを利用する。Ｌ２キャッシュ１０６は、メモリコントローラ１０４を介してオフチップメモリ１０２に接続される。
【００１７】
本発明の１つの実施形態では、Ｌ１キャッシュ１１２、１２２、１３２、および１４２は、ライトスルーキャッシュである。ライトスルーキャッシュは、Ｌ１キャッシュ１１２、１２２、１３２、および１４２に対する全ての更新が、Ｌ２キャッシュ１０６に自動的に伝達されることを意味する。このことは、コヒーレンスプロトコルを単純化する。なぜなら、プロセッサ１１０は、Ｌ１キャッシュ１１２に存在するデータアイテムを必要とし、プロセッサ１１０が、Ｌ１キャッシュ１１２がデータのソースにたどり着くことを待つ必要なく、Ｌ２キャッシュ１０６からデータを取り出すことができるからである。
【００１８】
本発明は、Ｌ２キャッシュ１０６の文脈で記載されるが、本発明は、概して、Ｌ３キャッシュ、または可能であればＬ１キャッシュでさえ含む、任意のタイプのキャッシュに適用され得る。さらに、本発明は、セットアソシアティブキャッシュの文脈で説明されるが、本発明はまた、ダイレクトマッピングキャッシュに適用され得る。
（キャッシュ構造）
図２は、本発明の実施形態による図１からのＬ２キャッシュ１０６の構造を示す。従来のキャッシュメモリのように、Ｌ２キャッシュ１０６は、タグおよびステータス情報２０４を格納するメモリアレイ、ならびにデータライン２１８を格納するメモリアレイを含む。なお、Ｌ２キャッシュ１０６がセットアソシアティブである場合は、タグおよびステータスアレイ２０４ならびにデータアレイ２１８は、各セットに対する複数のエントリを含む。
【００１９】
Ｌ２キャッシュ１０６はまた、ミスバッファ２３０を含む。ミスバッファ２３０は、Ｌ２キャッシュ１０６にアクセスしている間にミスをしたメモリリクエストを格納し、かつ、キャッシュラインがメモリ１０２から戻るのを待つ。なお、ミスバッファ２３０の各エントリは、キャッシュラインがメモリ１０２からリクエストされたかどうかを示すビットを含む。
【００２０】
簡単のために、所与の参照がキャッシュヒットであるかを判定するコンパレータのような、多くの通常のキャッシュ構造体は、図２には示されない。
【００２１】
Ｌ２キャッシュ１０６はまた、エラーレジスタ２３２、タグ２０２用のエラー訂正コード（ＥＣＣ）、データ２１６用のＥＣＣ、ＥＣＣ回路２０６および２２０、コンパレータ２０８および２２６、ならびにマルチプレクサ（ＭＵＸ）２１２および２２２を含む、エラー訂正コードに関する多くの新しい構造体を含む。
【００２２】
エラーレジスタ２３２は、エラーが検出されたキャッシュ参照用のアドレスを含む。本発明のある実施形態では、エラーレジスタ２３２は、ヘッドポインタおよびテールポインタを有する環状バッファとして組織化される。しかし、従来の環状バッファと異なり、この環状バッファが満杯にある場合、環状バッファのより古いエントリが、単純にも上書きされる。つまり、訂正されないエラーがいくつか生じ得る。しかし、このシステムは、依然として機能を保持し、エラーは、次回にこのアドレスがアクセスされたときに訂正される可能性が高いことに留意されたい。
【００２３】
タグ２０２用のＥＣＣは、タグおよびステータスアレイ２０４の各エントリ用のＥＣＣを含む。同様に、データ２１６用のＥＣＣは、データアレイ２１８の各エントリ用のＥＣＣを含む。
【００２４】
タグおよびステータスアレイ２０４から所与のセットにアクセスされる１つ以上のタグは、ＥＣＣ回路３０６を通過し、ＥＣＣ回路３０６は、各タグ／ステータスワード用の新しいＥＣＣを生成する。コンパレータ２０８は、新しいＥＣＣをタグ２０２用のＥＣＣから取り出されたＥＣＣと比較する。これらのＥＣＣが整合しなければ、ＥＣＣ信号２１０がアサートされる。
【００２５】
回路は、訂正されたタグ／ステータスワード２１４を生成するマルチプレクサ２１２を任意に含み得る。この回路は、本発明のいくつかの実施形態では、タグ／ステータスワードを訂正するために利用される。
【００２６】
データアレイ２１８から所与のセットにアクセスされた１つ以上のデータラインは、ＥＣＣ回路２２０を通過し、ＥＣＣ回路２２０は、各データライン用の新しいＥＣＣを生成する。コンパレータ２２６は、それぞれの新しいＥＣＣをタグ２０２用のＥＣＣから取り出されたＥＣＣと比較する。これらのＥＣＣが整合しない場合、エラー信号２２８はアサートされる。
【００２７】
この回路はまた、訂正されたデータライン２２４を生成するマルチプレクサ２２２を含む。
（エラーを取り扱うプロセス）
図３は、本発明の実施形態によるキャッシュ参照の間のエラーを取り扱うプロセスを示すフローチャートである。Ｌ２キャッシュ１０６にアクセスするリクエストを受け取ると、システムは、リクエストのアドレスによって指定されたセットのタグを読む（ステップ３０２）。このシステムは、その後、このタグを比較して、リクエストがキャッシュヒットを生成するかどうかを判定する。同時に、図２に示される回路はまた、エラーが存在する場合のタグエラーを検出する（ステップ３０４）。
【００２８】
タグエラーが検出される場合、システムは、エラーレジスタ２３２にリクエストのアドレスのログを取り（ステップ３０８）、キャッシュをミスさせて、キャッシュラインがメモリ１０２から取り出されることを待つリクエストに沿って、リクエストをミスバッファ２３０に格納させる（ステップ３１０）。なお、サイクル時間またはロードレイテンシが増大しない限り、タグがリクエストのアドレスと比較される前に、タグを訂正する時間はない。
【００２９】
次に、このシステムは、リクエストを作成したスレッドがリクエストが完了することを待つ間に、他のプロセス／スレッドが実行し続けることを可能にする（ステップ３２２）。このように、マルチプロセッサシステム１００は、単一のスレッドがタグエラーに直面したために、実行を完全に停止させる必要はない。
【００３０】
エラーが、ステップ３０４で検出されなかった場合、システムは、キャッシュヒットが存在するかどうかを判定する（ステップ３１２）。キャッシュヒットが存在しなければ、システムは、キャッシュミスを生成し、キャッシュラインをメモリ１０２からリクエストさせる（ステップ３１４）。システムは、その後、キャッシュミスが戻ることを待たない他のスレッド／プロセスを実行させ続けることを可能にする（ステップ３２２）。
【００３１】
ステップ３１２においてキャッシュヒットが存在する場合、システムは、データアレイから対応するデータラインを読み（ステップ３１６）、図２に示される回路を用いてデータエラーを検出することを試みる（ステップ３１８）。
【００３２】
データエラーが存在する場合は、システムは、エラーレジスタ２３２にエラーを生じさせたリクエストのアドレスのログを取り、プロセッサまでのデータパス上の下流の回路のデータエラーを訂正する（ステップ３２０）。
【００３３】
次に、システムは、実行を続ける（ステップ３２２）。
（エラーを修正するプロセス）
図４は、本発明の実施形態によるエラーを修正する方法を示すフローチャートである。このシステムは、オペレーティングシステムのチックタイマーから妨害を受け取ることによって開始する（ステップ４０２）。
【００３４】
チックタイマーに関連する通常のプロセッサ管理タスクを実行させることに加えて、システムは、エラーレジスタ２３２が空であるかどうかを判定する（ステップ４０４）。空であれば、エラーは発生しておらず、システムは、通常のプログラムの実行に戻る。
【００３５】
エラーレジスタ２３２が空でなければ、システムは、エラーレジスタからアドレスを読み出す（ステップ４０６）。次に、システムは、そのアドレスによって指定されたセットの全ての方法のタグおよびデータを読み出す（ステップ４０８）。システムは、その後、訂正されたタグおよびデータをＬ２キャッシュ１０６へ格納して戻す前（ステップ４１０）に、必要なときにタグおよびデータを訂正する（ステップ４１２）。
【００３６】
タグエラーおよびキャッシュヒットが存在する場合、システムは、フェイクキャッシュフィル動作を実行して、ミスバッファ２３０に待機し得る任意のリクエストを起動する（ステップ４１４）。なお、ミスバッファ２３０は、ミスバッファ２３０がそのリクエストされたデータのキャッシュフィルが実行されたと考えるまで、キャッシュへアクセスすることを試みない。
【００３７】
タグエラーおよびキャッシュミスが存在する場合、システムは、メモリ階層の下位レベルからキャッシュラインをリクエストする（ステップ４１６）。システムは、アドレス情報により満たされたすべてのエラーレジスタに対して、ステップ４０６、４０８、４１０、４１２、４１４、および４１６を繰り返す。
【００３８】
なお、エラーレジスタ２３２が過度に満杯になり、レジスタが上書きされた場合、システムは、ミスバッファ２３０のエラーをチェックする。ミスバッファ２３０は、上書きされたタグエラーが修正されることを待ち得る（ステップ４１８）。この方法で上書きされた任意のタグエラーは、ステップ４０６、４０８、４１０、４１２、４１４、および４１６を繰り返すことによって訂正され得る。
【００３９】
本発明の１つの実施形態では、エラーを修正する多くのプロセスは、ソフトウェアでインプリメントされる一方で、多くのエラーを検出しかつログを取るプロセスは、ハードウェアでインプリメントされる。
【００４０】
本発明の実施形態の以上の説明は、例示および説明のためにのみ示された。これらは、包括的である、または、開示される形式に本発明を制限することを意図していない。したがって、多くの改変および変形が、当業者には明らかである。さらに、上述の開示は、本発明を制限することを意図しない。本発明の範囲は、添付の特許請求の範囲によって規定される。
【図面の簡単な説明】
【００４１】
【図１】図１は、本発明の実施形態によるエラー訂正を提供するＬ２キャッシュを含むマルチプロセッサシステムを示す。
【図２】図２は、本発明の実施形態による図１からのＬ２キャッシュの構造を示す。
【図３】図３は、本発明の実施形態によるキャッシュ参照の間のエラーを取り扱うプロセスを示すフローチャートである。
【図４】図４は、本発明の実施形態によるエラーを修正する方法を示すフローチャートである。
【図１】
2006502460.tif 000003
【図２】
2006502460.tif 000004
【図３】
2006502460.tif 000005
【図４】
2006502460.tif 000006
【国際調査報告】
2006502460.tif 000007
2006502460.tif 000008