(57)【特許請求の範囲】
【請求項１】
プロセッサと、
前記プロセッサに結合されたキャッシュと、
前記キャッシュに結合されたキャッシュ制御回路と
を有するデータ処理システムであって、前記キャッシュ制御回路は誤り検出を実行し、前記キャッシュ制御回路は、キャッシュエラーが検出された場合に行われる複数のエラー処理の内の1つを選択するための制御値が格納されているユーザによりプログラム可能なエラー処理制御レジスタを更に有し、ユーザにより選択される前記制御値の第1の値は、前記キャッシュエラーを含むキャッシュラインを、該キャッシュラインがダーティであるか又はクリーンであるかによらず例外処理を行うことなく自動的に無効化するのに使用され、ユーザにより選択される前記制御値の第2の値は、前記キャッシュエラーを含むキャッシュラインを、該キャッシュラインがダーティであるか又はクリーンであるかによらず例外処理と共に自動的に無効化するのに使用され、行われるエラー処理が透明な処理であるか又は透明でない処理であるかを決める前記制御値は、前記ユーザにより動的にプログラムされる、データ処理システム。
【請求項２】
前記ユーザによりプログラム可能なエラー処理制御レジスタにおける前記制御値の第3の値は、検出したエラーに関する情報を無効化することなくかつ例外を生成することなく、前記検出したエラーの訂正を自動的に行うのに使用される、請求項1記載のデータ処理システム。
【請求項３】
前記ユーザによりプログラム可能なエラー処理制御レジスタにおける前記制御値の第3の値は、検出したエラーを自動的に訂正しかつ例外を生成するのに使用され、キャッシュエラーを含むキャッシュラインについて該キャッシュエラーを訂正するためにエラー訂正コード(ECC)処理を実行し、訂正されたキャッシュラインをキャッシュから出力する、請求項1記載のデータ処理システム。
【請求項４】
前記制御値が前記第1の値に設定されていた場合、時間インターバルの第1部分の間にアプリケーションの第1部分が実行される際に前記プロセッサにとってキャッシュエラーが透明であり、前記制御値が前記第2の値に設定されていた場合、時間インターバルの第2部分の間にアプリケーションの第2部分が実行される際に前記プロセッサにとってキャッシュエラーが可視的である、請求項1記載のデータ処理システム。
【請求項５】
前記キャッシュラインがクリーンキャッシュラインであった場合、前記ユーザによりプログラム可能なエラー処理制御レジスタにおける前記制御値の第3の値は、前記キャッシュエラーを含む前記キャッシュラインの自動的な無効化を行うのに使用され、前記キャッシュラインがダーティキャッシュラインであった場合、例外が生成され、該キャッシュラインが無効化されないように前記キャッシュラインが不変のまま残される、請求項1記載のデータ処理システム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示される発明は一般にデータ処理システムに関連し、特にキャッシュのためのエラー処理に関連する。
【背景技術】
【０００２】
キャッシュにおけるソフトエラーは、寸法が縮小して行くにつれて及びメモリ容量が増大するにつれて、益々深刻な問題となりつつある。これらのソフトエラーは、例えばイオン化放射(ionizing  radiation)の影響等により、キャッシュに保存されたデータが変化することを含む。これらの変化はキャッシュの信頼性を低下させ、アンチロックブレーキシステム、運転者支援システム等のようなセーフティクリティカルシステムにおいて特に問題となる。従って、そのようなシステムにおいて信頼性を向上させることが望まれている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の課題は、ソフトエラーに対するキャッシュの信頼性を向上させることである。
【課題を解決するための手段】
【０００４】
一実施例によるデータ処理システムは、
プロセッサと、
前記プロセッサに結合されたキャッシュと、
前記キャッシュに結合されたキャッシュ制御回路と
を有するデータ処理システムであって、前記キャッシュ制御回路は誤り検出を実行し、前記キャッシュ制御回路は、キャッシュエラーが検出された場合に行われる複数のエラー処理の内の1つを選択するための制御値が格納されているユーザによりプログラム可能なエラー処理制御レジスタを更に有し、ユーザにより選択される前記制御値の第1の値は、前記キャッシュエラーを含むキャッシュラインを、該キャッシュラインがダーティであるか又はクリーンであるかによらず例外処理を行うことなく自動的に無効化するのに使用され、ユーザにより選択される前記制御値の第2の値は、前記キャッシュエラーを含むキャッシュラインを、該キャッシュラインがダーティであるか又はクリーンであるかによらず例外処理と共に自動的に無効化するのに使用され、行われるエラー処理が透明な処理であるか又は透明でない処理であるかを決める前記制御値は、前記ユーザにより動的にプログラムされる、データ処理システムである。
【図面の簡単な説明】
【０００５】
【図１】本発明の一実施例によるデータ処理システムに関するブロック図。
【図２】本発明の一実施例による図1に示されるデータ処理システムにおけるキャッシュの部分を示すブロック図。
【図３】本発明の一実施例による図2に示されるキャッシュと共に使用するエラー処理制御レジスタを示す図。
【図４】本発明の一実施例による図3に示すエラー処理制御レジスタの様々なフィールドの説明をテーブル形式で示す図。
【図５】本発明の一実施例による図3に示すエラー処理制御レジスタの様々なフィールドの説明をテーブル形式で示す図。
【図６】本発明の一実施例による図2に示されるキャッシュの一部を示すブロック図。
【図７】本発明の一実施例による図1に示されるデータ処理システムにおける動作例を示すフローチャート。
【発明を実施するための形態】
【０００６】
以下、本発明を添付図面と共に実施例により説明するが、本発明はこれらに限定されない。図中、同様な参照符号は同様な要素を示す。図中の要素は簡略化され簡明化の観点から描かれており、必ずしも寸法を描いたものではない。
【０００７】
データ処理システムにおいて、キャッシュ内でソフトエラーを検出した場合、異なるエラー処理が行われる。一実施例において、キャッシュ制御回路は、制御値を格納するためのキャッシュエラー処理(cache  error  action:  CEA)が含まれているユーザプログラマブルエラー処理制御レジスタを含み、その制御値により、検出されたキャッシュソフトエラーに応じてエラー処理が動的に選択可能になる。例えば、一実施例において、透過な処理又は透過でない処理が検出されたエラーに応じて実行されるように、ユーザはCEAフィールドの制御値をプログラムしてもよい。ユーザによりプログラム可能な制御レジスタを利用して、検出されたエラーに応じて行う様々なエラー処理を選択できるようにすることで、これらのソフトエラーを評価及び克服するための柔軟な仕組みを提供できる。例えば、セーフティクリティカル製品の動作中のようなクリティカルな実現環境では、ソフトエラーの透過的な又は透明な修復が(transparent  repair)望まれるであろうし、他のタイプの製品や他のモードでの動作の際には、改善された監視の観点からソフトエラーを検出及び報告することが望ましいかもしれない。このようにユーザプログラマブル制御レジスタは、データ処理システムの動作中に、プロセッサに対するキャッシュエラーの透明性を動的に変更することを可能にする。
【０００８】
本願において使用されているように、「バス」という用語は、データ、アドレス、制御値又はステータス等のような1つ以上の様々なタイプの情報を伝送するのに使用される複数の信号や導体を示すために使用されている。本願において議論されている導体は、単独の導体、複数の導体、単一方向の導体又は双方向の導体を示すように提示又は説明されている。しかしながら異なる実施形態においては異なる形態の導体を使用してもよい。例えば、双方向導体の代わりに単一方向導体が使用されてもよいし、その逆でもよい。また、複数の信号を順番に又は時間多重方式で伝送する1つの導体が、複数の導体で置換されてもよい。同様に、複数の信号を伝送する1つの導体群が、それらの信号を部分的に伝送する様々な個々の導体に分離されてもよい。このように、信号を伝送することに関して多くの選択肢がある。
【０００９】
信号、ステータスビット又は同様な装置の状態を論理的に真又は論理的に偽にする場合に、「アサート(assert)」、「セット又は設定」及び「ネゲート(negate)」(又はデサート(deassert)又はクリア(clear))という用語が使用される。論理的に真である状態が論理レベル1である場合、論理的に偽である状態は論理レベル0である。論理的に真である状態が論理レベル0である場合、論理的に偽である状態は論理レベル1である。
【実施例１】
【００１０】
図1は、本発明の一実施例によるデータ処理システム10をブロック図で示している。データ処理システム10は、処理モジュール12、システムバス14、メモリ16及び複数の周辺処理部(ペリフェラル18、ペリフェラル20等)を含み、一実施例においては図1のペリフェラル18ないしペリフェラル20の間の点々で示されている追加的なペリフェラルがシステムに含まれていてもよい。メモリ16は、一形態においては複数の導体である双方向導体によりシステムバス14に結合されたシステムメモリである。図示の形態の場合、ペリフェラル18及び20の各々は、処理モジュール12と同様に、複数の双方向性の導体によりシステムバス14に結合されている。処理モジュール12は、複数の導体を有する双方向性バスを介してシステムバス14に結合されるバスインタフェース22を含む。バスインタフェース22は、双方向性導体を介して内部バス24に結合されている。内部バスは複数の導体による通信バスである。双方向導体各々により内部バス24に結合されているものは、キャッシュ26、メモリ28及びプロセッサ30である。プロセッサ30はデータ処理を実行する。キャッシュ26、メモリ28及びプロセッサ30の各々は、双方向性の導体を通じて内部バスに結合されている。一実施例において、プロセッサ30は、内部バス24ではなくキャッシュ26に直接結合されていてもよい。更に別の実施例において、プロセッサ30は、内部バスを介して結合されることに加えて、個別的な(専用の)インタフェースを通じて直接的に結合していてもよい。他の実施例において、プロセッサ30、キャッシュ26及びメモリ28を結合する他の方法が使用されてもよい。あるいは、メモリ28が処理モジュール12内に存在していなくてもよい。メモリ28及びメモリ16は任意のタイプのメモリとすることが可能であり、ペリフェラル18及び20の各々は任意のタイプのペリフェラル又は装置とすることが可能であることに留意を要する。一実施例において、データ処理システム10の全てが1つの集積回路上にあってもよい。あるいは、データ処理システム10は1つより多い数の集積回路を用いて実現されてもよい。一実施例では、少なくとも処理モジュール12の全部が1つの集積回路上にある。
【００１１】
動作を行う際、処理モジュール12は、複数のデータ処理命令を実行することで、様々なデータ処理機能を実現するように機能する。キャッシュ26は、プロセッサ30が必要とする頻繁に使用される情報のための一時的なデータ保存部である。一実施例において、キャッシュ26はセットアソシエーティブキャッシュ(set-associative  cache)である。一実施例において、キャッシュ26は、命令情報を保存するデータキャッシュでもよい。別の実施例において、キャッシュ26はデータ情報(例えば、オペランド情報)を保存するデータキャッシュでもよい。更に別の実施例において、キャッシュ26は、例えば命令情報及びデータ情報(例えば、オペランド情報)の双方のような複数のタイプの情報を保存することが可能な統合キャッシュである。キャッシュ26の中にないプロセッサ30が必要とする情報は、メモリ28又はメモリ16に保存される。一実施例において、メモリ28は処理モジュール12の内部にある内部メモリとして言及され、メモリ16は処理モジュール12の外部にある外部メモリとして言及されてもよい。バスインタフェースユニット22は、処理モジュール12及びシステムバス14の間にあるいくつものインタフェースの内の1つに過ぎない。バスインタフェース22は、プロセッサ30による命令の実行に関する情報の流れを整えるように機能する。命令の実行結果によるデータ及び制御情報は、バスインタフェースユニット22を介してプロセッサ30及びシステムバス14の間でやり取りされる。
【００１２】
処理モジュール12及びデータ処理システム10は、データキャッシュ、命令キャッシュ、レベル1キャッシュ、レベル2キャッシュ等のような任意のタイプのキャッシュを幾つでも含んでよいことに、留意を要する。エラー処理制御レジスタ及びその利用に関して本願でなされる説明は、データ処理システム10内の如何なるキャッシュに適用されてもよい。一実施例において、キャッシュの各々又はキャッシュの部分の各々は、検出されたソフトエラーについて行われるエラー処理を選択するための各自自身のCEA(cache  error  action)フィールド又は各自自身のエラー処理制御レジスタを有する。別の実施例において、1つ以上のキャッシュが、エラー処理制御レジスタ又はエラー処理制御レジスタ内のCEAフィールドを共有してもよい。
【００１３】
図2は、一実施例による図1に示されるキャッシュ26の一部分を示す。図2に示すものと異なる構造がキャッシュ26の代替例として使用されてもよい。図2に示されているキャッシュ26の部分は、「N」セット(set)及び8ウェイ(way)を有し、マルチウェイキャッシュ又はマルチウェイセットアソシエーティブキャッシュと言及されてもよい。従って、キャッシュ26はN個のセットを有し、そのセットの各々が8個のウェイを有する。代替例において、キャッシュ26は任意の数のセット及び任意の数のウェイを有する。本願において使用されているように、キャッシュラインは、キャッシュのウェイ及びセットの交わりを指していることに、留意を要する。例えば、ウェイ0はN個のキャッシュラインを含み、その各々はセット0ないしセットN-1の内の何れかに対応する。従って、置換のためにウェイが選択されると、1つ以上のキャッシュラインにおける情報(以下に説明するように、インデックスの部分29により選択される)が実際に置換される。すなわち、ウェイ全体が置換されるのではなく、1つ以上の特定のラインのみが置換される。
【００１４】
図示の例の場合、キャッシュ回路21は、複数のキャッシュライン又はエントリの各々において情報を格納する格納回路である。例えば、キャッシュ回路21は、タグ、ステータス、キャッシュデータ及びプロテクションのフィールドを、キャッシュライン又はエントリ毎に含んでいる。アドレス25はプロセッサ30から与えられる。アドレス25は、タグの部分27、インデックスの部分29及びオフセットの部分32を含んでいる。特定のキャッシュラインを示すインデックスの部分29がキャッシュ回路21に与えられる。比較回路23は、タグの部分27を受信するように結合されており、かつタグ及びステータス情報を受信するようにキャッシュ回路21に結合されている。この受信した情報に基づいて、比較回路23は、キャッシュヒットが生じているか否か又はキャッシュミスが生じているか否かを判定する。図示の例の場合、HIT_WAY[0:7]34により示される複数のヒット/ミス信号がキャッシュ制御回路38に与えられる。HIT_WAY[0:7]信号34の各々は、キャッシュ回路21における対応するウェイに関してキャッシュヒットが生じているか否かを示す。代替例において、キャッシュヒット信号に追加的に又は代替的にキャッシュミス信号が使用されてもよい。
【００１５】
キャッシュ制御回路38は、導体により又は信号36、39によりキャシュ回路21に結合されている。インデックスの部分29を示すプロセッサ30からのアドレス25は、キャッシュ制御回路38にも与えられ、そのアドレスは、特定のキャッシュライン(すなわち、セット0ないしN-1の内の何れか)を示すことに加えて、他の制御処理のためのタグ27及びオフセットの部分32を与える。キャッシュ制御回路38は、エラー処理制御レジスタ(error  action  control  register)48、出力選択論理部37及びエラー制御回路66を含む。エラー処理制御レジスタ48はエラー制御回路66に結合され、エラー制御回路は出力選択論理部37に結合されている。エラー制御回路66は1つ以上のエラーインジケータをバス24に与える。出力選択論理部は情報をバス24に与える。キャッシュ制御回路38はバス24から情報を受信するようにも結合されている。
【００１６】
エラー制御回路66は、キャッシュ回路21のウェイ各々についてエラー回路部を有し、これらはウェイ0エラー制御回路部ないしウェイ7エラー制御回路部である。以下において詳細に説明されるように、エラー制御回路66は、キャッシュ26に関するエラー検出  (又は誤り検出)及び選択的な誤り訂正を実行する。キャッシュ制御回路38は、当該技術分野で理解されているような他の機能を実行する他の回路を含んでいてもよいが、そのような他の回路については詳細には説明しない。
【００１７】
図2を更に参照するに、インデックスの部分29はキャッシュ回路21のセットを選択するために使用される。キャッシュ回路21からのタグ情報は、タグ27と比較され、キャッシュ回路21からのステータス情報(例えば、有効ビット)により適格性が判断される(有効にされる、資格が与えられる)。比較及び適確判断の結果(例えば、合致(match)及び有効(valid))により、キャッシュヒットが生じているか否かを判断する。上述したように、HIT_WAY[0:7]信号34の各々は、キャッシュ回路21における対応するウェイについて、キャッシュヒットが生じているか否かを示す。
【００１８】
キャッシュ26への読み取りアクセスにおいてキャッシュヒットが生じた場合、キャッシュデータとキャッシュヒットが生じているキャッシュラインのプロテクションフィールドとが、導体39を介して制御回路38に提供される。キャッシュヒットが生じているウェイに関し、エラー制御回路66内の対応するエラー制御回路部は、受信したプロテクションの情報を用いて、受信したキャッシュデータについて誤り検出及び/又は誤り訂正の処理を実行する。使用される誤り検出及び/又は誤り訂正の方法は、エラー処理制御レジスタ48内の設定値を用いて選択され、これについては図6を参照しながら詳細に説明される。また、エラーが検出された場合、以下において詳細に説明するように、キャッシュヒットが生じているウェイについて、エラー制御回路66内の対応するエラー制御回路部は、エラー処理制御レジスタ48内の設定値を用いて、検出されたエラーに応じて行われるエラー処理を決定する。その後、キャッシュデータは、出力選択論理部を介してバス24に与えられ、HIT_WAY[0:7]信号34を用いて、キャッシュヒットが生じているウェイに関し、エラー制御回路66内の対応するエラー制御回路部の出力を選択する。誤り訂正が実行される場合、キャッシュ回路21から提供されるデータではなく、訂正されたキャッシュデータが出力選択論理部37を通じて出力されることに、留意を要する。また、エラーが生じているか否かを示すために、1つ以上のエラーインジケータが、出力選択論理部37を通じてバス24に与えられることに留意を要する。更に、訂正されたキャッシュデータが提供される場合、1つ以上のエラーインジケータがネゲート(否定、無効化)され、提供されるキャッシュデータについて如何なるエラーも生じていないことを示すようにする(エラーは訂正されているからである)。この場合、検出されたエラーはプロセッサ30にとって透過的又は透明(transparent)である。
【００１９】
キャッシュ26への書き込みアクセスにおいてキャッシュヒットが生じた場合、キャッシュ制御回路38は情報(例えば、キャッシュ回路21に保存するためのキャッシュデータ)をバス24を介して受信する。保存用のキャッシュデータは、導体39を介して新たなデータをキャッシュ回路21の適切なキャッシュラインに併合(merging)することで、キャッシュ制御回路38により提供できる。また、キャッシュ制御回路38は、キャッシュラインのステータスフィールドを適切に更新することができる。ステータス情報は、キャッシュラインが有効であることを示す有効(V:  Valid)フラグと、メモリ16又はメモリ18内にあるコピーに対してキャッシュラインが修正されていることを示すダーティ(D:  Dirty)フラグとを含む。当該技術分野において知られているような他のステータスフラグが使用されてもよい(キャッシュデータを受信し、ヒットが生じているキャッシュ回路21内のラインにそれをルーティングし、ステータス情報を更新するのに使用される具体的な回路は、当該技術分野において良く知られているので図示されていないことに留意を要する)。受信したキャッシュデータはエラー制御回路66にも提供され、エラー制御回路66内の対応するエラー制御回路部が適切に更新されたプロテクション情報を生成できるようにする(この点については、図6を参照しながら詳細に説明される)。対応するプロテクション情報は、キャッシュラインヒットが生じているキャッシュ回路21の適切なキャッシュラインに保存するために、キャッシュ制御回路38により、受信したキャッシュデータと共に提供される。誤り訂正が実行される場合、(誤りが検出された場合)受信され訂正されたキャッシュデータは、書き込みアクセス用の併合された保存データと共にキャッシュ回路21に保存され直すように提供されることに留意を要する。
【００２０】
キャッシュミスの場合、キャッシュ制御回路38内のアロケーション論理部(図示せず)が、置換するキャッシュラインを特定し、そのキャッシュラインを更新する。キャッシュアロケーションを行う任意の方法が、置換するキャッシュラインを選択するのに使用可能であり、例えばラウンドロビン法、擬似LRU法(pseudo  least  recently  used)等を使用することができる。キャッシュミスの場合、新たに指定されたキャッシュラインに保存する新たなキャッシュデータが、バス2によりキャッシュ制御回路38に提供される。そして、新たなキャッシュデータは、導体39を通じてキャッシュ回路21の新たに指定されたキャッシュラインに保存されるように提供される。また、キャッシュ制御回路38は、新たに指定されたキャッシュラインのステータスフィールドに保存する際のステータス情報を適切に生成することができる。(キャッシュデータを受信し、回路21内で新たに指定されているキャッシュラインにそれをルーティングし、その新たに指定されたキャッシュラインについてステータス情報を生成するのに使用される具体的な回路は、当該技術分野において良く知られているので図示されていないことに留意を要する)新たなキャッシュデータはエラー制御回路66にも提供され、エラー制御回路66内の対応するエラー制御回路部(新たに指定されたキャッシュラインを含む置換論理部49により選択されたウェイに対応するもの)は、適切なプロテクション情報を生成することができ、この点については図6を参照しながら詳細に説明される。この対応するプロテクション情報は、キャッシュ回路21の新たに指定されたキャッシュに保存する際にキャッシュ制御回路38により受信したキャッシュデータと共に提供される。
【００２１】
図示の例の場合、キャッシュ制御回路38は(例えば、読み取り制御/書き込み制御のために)制御信号36をキャッシュ回路21にも提供する。例えば、キャッシュ制御回路38はプロセッサ30による制御の下でキャッシュ回路21を更新する。例えば、プロセッサ30は、特殊なキャッシュ命令を実行してステータス情報を更新してもよい。また、一実施例において、キャッシュ制御回路38は、プロセッサ30による制御の下で、例えば特殊なキャッシュ命令により又は特殊な目的のレジスタ命令への移動により(via  move  to  special  purpose  register  instruction)、エラー処理制御レジスタ48を更新し、例えばエラーを検出した場合に実行されるべきエラー処理を動的に変更する。図2は図1のキャッシュ26の一部分を実現するのに使用される特殊な回路を示しているが、代替実施例において所望の任意の回路を使用することができる。多種多様な回路実現例が使用可能である。図2に示されている回路は、可能な1つの実施形態を示しているに過ぎない。
【００２２】
図3は、エラー処理制御レジスタ48の一例を示す図であり、3ビットのキャッシュエラー処理(CEA)フィールド、1ビットのキャッシュエラー検査イネーブル(CECE)フィールド、2ビットのキャッシュ誤り検出タイプ(CEDT)フィールド、1ビットのキャッシュ無効(CINV)フィールド及び1ビットのキャッシュイネーブル(CE)フィールドを含んでいる。図4及び図5は、図3に示すエラー処理制御レジスタ48のフィールドの説明をテーブル形式で示している。
【００２３】
例えば、CEAは3ビットフィールドであり、エラー制御回路66によりキャッシュエラーが検出された場合に、如何なるエラー処理が行われるべきかを示す。図4はCEAフィールドに関する様々なコード(encoding)の一例を示す。一実施例において、CEAフィールドが000の値を有していた場合、誤り検出はマシンチェック例外(machine  check  exception)を引き起こし、これはソフトウェア割り込みハンドラにより処理される。例えば、利用可能なキャッシュアレイアクセス手段を利用して、キャッシュ26の中身がソフトウェアにより検査される。例えば、一実施例において、キャッシュアレイへのアクセスは、エラーを含むキャッシュラインのデータ部分、プロテクション、ステータス及びキャッシュタグの内容に対応するメモリマップアクセスと共になされてもよい。あるいは、キャッシュアレイへのアクセスは、キャッシュラインのステータスを取得するために、1つ以上のテストアレイレジスタ又はダイレクトキャッシュアクセスレジスタ及びデータレジスタを通じて行われてもよい。この方法の場合、エラーの検出がプロセッサ30に報告され、プロセッサによるマシンチェック例外処理又はソフトウェア処理のための割り込みを生じさせる(これはプロセッサ30にとって透明ではない)。一実施例において、マシンチェック例外はキャッシュの内容を修正することなく生成され、その例外は、検出したエラーの記録(logging)及びキャッシュに保存されている情報の検査を行い、検出されたエラーに関する情報を収集することを可能にする。ソフトウェアは、エラーに関する所望の任意の統計情報又はその他の情報、或いはデータ処理システム10の他の状態に対する検出したエラーの関係の記録を取ってもよい。一実施例において、この後に、ソフトウェアは1つ以上の訂正処理を実行し、割り込まれた(中断した)プログラムをプロセッサが続けて実行することを可能にする。
【００２４】
一実施例において、CEAフィールドが001の値を有する場合、誤り検出は自動無効化処理(auto-invalidation  operation)を引き起こし、例えば、キャッシュエラーとなったキャッシュラインが無効にされる。一実施例において、キャッシュエラーとなったキャッシュラインは、そのキャッシュエラーとなったキャッシュラインがキャッシュヒットとならなかった場合でさえ、無効にされる。これは、キャッシュエラーとなったキャッシュラインのステータスフィールドの有効ビットをネゲート(否定)することで行われる。また、マシンチェック例外は一切生成されず、エラー処理がプロセッサ30にとって透過的又は透明であるように透過的な処理をもたらす。この場合において、一実施例では、キャッシュラインの無効化が、ソフトウェア例外が通知されるのではなく、キャッシュミスの発生を引き起こし、キャッシュラインはメモリ16又はメモリ18により再充填され、ソフトウェアエラーを解消し、例外なしに通常の処理を進めるようにし、透明な処理をもたらす。
【００２５】
一実施例において、CEAフィールドが010の値を有していた場合、誤り検出はマシンチェック例外及び自動無効化の双方を引き起こす。このエラー処理は、マシンチェック例外を通じてエラーの発生の記録を取り、キャッシュエラーとなっているキャッシュラインを無効化することで、そのエラーの再発防止を可能にする。エラーの再発防止は、マシンチェック例外ハンドラがそのエラーの被害を被り、ループ内で動作できなくなってしまうことを防止する。一実施例において、CEAフィールドを設定すること(マシンチェック例外及び自動無効化の双方を引き起こすこと)は、問題を起こしているライン(エラーを含んでいるキャッシュライン)が無効にされた後で、エラーを検出した命令を「再実行(re-execute)」する手段として使用されてもよい。すなわち、一実施例において、マシンチェック例外を行うことで、実行される命令を抑制し、マシンチェック例外からの通常のソフトウェア復帰手段は、無効にされた後で命令が再実行されるようにする。これは、誤り検出のデータキャッシュに対するアクセス等のためにパイプラインの構築を簡易化し、エラーが検出された後に、ハードウェアが命令を再実行する具体的な方法を見出す必要がないようにする。
【００２６】
一実施例において、CEAフィールドが011の値を有していた場合において、キャッシュラインがクリーンキャッシュラインであった場合、誤り検出は自動無効化を引き起こす(クリーンキャッシュラインとは、メモリ28又は16のようなメモリと首尾一貫しており（コヒーレントであり）、メモリ内の対応する場所に同じデータを含んでいるキャッシュラインである)。しかしながら、キャッシュラインがダーティキャッシュライン(すなわち、キャッシュラインがメモリとコヒーレントではなく、メモリ28又は16内の対応する場所に保存されているデータに関して修正がなされているデータを含んでいる修正されたキャッシュライン)であった場合、誤り検出はマシンチェック例外を引き起こし、ラインを不変のままにする。この場合において、ダーティキャッシュラインが無効化される場合、メモリ28又は16内の対応するメモリロケーションはダーティキャッシュラインに保存されている最も最新のデータを含んでいないので、メモリのコヒーレント性が失われることに、留意を要する。一実施例において、ダーティラインの無効化を避けることは、ソフトウェアエラーハンドラが、その場合の復元可能な状態に到達しようと試みることを可能にし、ダーティラインはソフトエラーに遭遇しているが、ソフトエラーの通常の場合、クリーンラインにおいて生じ、処理は透明な形式でなされる。
【００２７】
一実施例において、CEAフィールドが100の値を有していた場合、誤り検出は(誤り訂正法のような)自動訂正を引き起こす。この例の場合、誤り検出は、キャッシュラインの無効化を一切含まず、マシンチェック例外も一切生成されない。このエラー処理はエラーの発生に関して最大の透明性を提供する。すなわち、このエラー処理はキャッシュエラーについての最大の透明性をプロセッサ30に提供する。
【００２８】
一実施例において、CEAフィールドが101の値を有していた場合、誤り検出は(誤り訂正法のような)自動訂正を引き起こし、マシンチェック例外を引き起こす。この方法の場合、エラーが透明に訂正可能である場合でさえ、マシンチェック例外を通じてエラーの可視化がプロセッサ30に対して行われる。
【００２９】
図示の例の場合において、110及び111の値のCEAフィールドは将来使用する可能性に備えて予約されている。このように、CEAフィールドがプロセッサ30に対するキャッシュエラーの様々な透明性レベルをどのように提供できるかが分かる。例えば、図4に示す例において、最大の透明性をもたらすエラー処理はCEAが001及び110の値であるものに関連し、これらは自動的な無効化又は自動的な訂正を行う。これらの何れの状況においても、キャッシュエラーが生じたことによってはプロセッサ30の動作が妨害されない又は乱されない場合には、誤り検出もプロセッサ30にとって透明である。しかしながら、マシンチェック例外を生成することを含むエラー処理は透明なものではない。透明でない処理は、エラーの発生に関して実行される記録又はその他のソフトウェア処理を可能にする。
【００３０】
図4を引き続き参照するに、CECEは、キャッシュエラー検査をイネーブル又はディセーブルにする1ビットフィールドである。例えば、CECEフィールドが0の値を有する場合、エラー検査はディセーブルである。この場合、例えば、エラー制御回路66の全体が、如何なる誤り検出も及び/又は訂正も実行しないようにディセーブルにされている。例えば、CECEフィールドが1の値を有する場合、エラー検査はイネーブルである。この場合、エラー制御回路66はイネーブルにされ、CEA及びCEDTフィールドのようなエラー処理制御レジスタ48の他の設定値に従って動作する。CEDTは、実行されるべきキャッシュ誤り検出のタイプ又は形式を示す2ビットフィールドである。例えば、CEDTフィールドが00の値を有する場合、パリティ誤り検出(例えば、シングルビット誤り検出)が選択され、CEDTフィールドが01の値を有する場合、誤り検出コード(EDC)誤り検出(例えば、マルチビット誤り検出)が選択される。EDCの場合、エラー訂正コード(ECC)の処理は実行されてもされなくてもよいことに、留意を要する。例えば、CEAフィールドの設定値は、誤り訂正が実行されるか否かの判断の助けとなる。
【００３１】
図5において、CINVは、キャッシュ無効化の処理が実行されるか否かを示す1ビットフィールドである。例えば、CINVフィールドが0の値を有していた場合、キャッシュ無効化は一切実行されず、CINVフィールドが1の値を有していた場合、キャッシュ無効化の処理が実行される。例えば、「1」に設定されていた場合、キャッシュ無効化の処理がハードウェアによって開始される。それが完了すると、このビットは「0」にリセットされる。一実施例において、無効化の処理が進行中であるときに「1」を書き込むと、定義されていない動作となり、無効化の処理が進行中であるときにそのビットに「0」を書き込むと無視される。一実施例において、キャッシュ無効化の処理は、CEフィールドの値によらずに生じる。
【００３２】
図5を引き続き参照するに、CEフィールドは、キャッシュがイネーブルにされるか否かを示す1ビットフィールドである。例えば、CEフィールドが「0」の値を有していた場合、キャッシュはディセーブルにされ、プロセッサのアクセスに関してキャッシュの参照又は検索(cache  lookup)実行されない。しかしながらそれでも他のキャッシュ制御処理は利用可能である。CEフィールドが1の値を有していた場合、キャッシュはイネーブルにされる。
【００３３】
代替実施例において、エラー処理制御レジスタ48はより多い又はより少ない数のフィールドを含んでいてもよく、各フィールドは必要に応じてより多い又は少ない数のビットを含んでいてもよい。図2においてキャッシュ26の或るタイプのアーキテクチャが示されているが、代替例のキャッシュ26は所望の又は適切な如何なるアーキテクチャを使用してもよい。図2に示されているアーキテクチャは、1つの可能性のあるアーキテクチャを代表しているに過ぎない。所望のキャッシュエラー処理を可能にする如何なるキャッシュアーキテクチャが使用されてもよい。
【００３４】
図6は、本発明の一実施例による図2に示されるキャッシュ26の一部分を表す回路31を示す。回路31は、キャッシュ回路21のウェイ0の部分を表現するメモリストレージ回路40を含む。メモリストレージ回路40はいくつものメモリバンクとプトテクションストレージ45を含む。図示の例の場合、メモリストレージ回路40は8つのバンク(バンク0_42、バンク0_43、．．．バンク7_44)を含む。代替例は任意の数のバンクを含んでよい。図示の例の場合、バンク0-7はウェイ0のキャッシュデータの部分を表現し、各バンクは1バイト幅であり、プロテクションストレージ45はウェイ0のプロテクションの部分を表わす。バンク0-7の各々はNバイトを格納し、1バイトはセット0ないしN-1の内の1つに対応する。従って、図示の例の場合、8つのバンクがあり、ウェイ0のキャッシュデータフィールドの各々はダブルワードを格納する。ウェイ0のキャッシュデータフィールドの各々がダブルワードよりも多くを保存する場合、回路40は、必要に応じてより多いバンク又はより広いバンクを含み、かつ必要に応じてより大きなプロテクションストレージを含む。図3に関して行った説明がウェイ0-7の各々に同様に適用されることに留意を要する。
【００３５】
回路31は、エラー制御回路66の一部分であるウェイ0エラー制御回路部を含む。ウェイ0エラー制御回路部は、メモリストレージ回路40(キャッシュ回路21のウェイ0の部分)に双方向に結合され、ウェイ0選択論理部60、モード論理部50(エラー処理制御レジスタ48からの情報を受信するようにそれに結合されている)、共有排他的OR(XOR)ツリー52、及び誤り検出訂正論理部54(これもエラー処理制御レジスタ48からの情報を受信するようにそれに結合されている)を含む。モード論理部50は、エラー処理制御レジスタ48のCEDTフィールドの値に基づいて、モードインジケータをウェイ0選択論理部60の制御入力に出力する。一実施例において、モード(モード信号)62は、誤り検出モード回路31がどのように動作しているかを示す。例えば、図示の例の場合、制御レジスタ48のCEDT制御フィールドの値に基づいて、モード62は回路31がEDCモード(マルチビット誤り検出モード)又はパリティモード(シングルビット誤り検出モード)で動作しているか否かを示す。一実施例において、キャッシュエラー検査がイネーブルにされている場合(CECEフィールドが1の値を有する場合)、モードインジケータ62がCEDTフィールドの値に基づいて出力されることに、留意を要する。しかしながら、一実施例において、CECE制御フィールドが、キャッシュエラー検査はイネーブルにされていないことを示していた場合(CECEフィールドが0の値を有する場合)、ウェイ0選択論理部60が誤り検出訂正論理部54ではなく回路40からの出力を選択するように、モード62が設定され、誤り検出訂正論理部54はディセーブルにされてもよい。
【００３６】
EDCモードの場合、プロテクションストレージ45の各エントリは、バンク0-7における対応するエントリの対応する検査ビットを格納する。例えば、プロテクションストレージ45の第1のエントリは、バンク0-7各々の第1のエントリに保存されているデータに対応する検査ビットを格納する。しかしながら、パリティモードの場合、プロテクションストレージ45の各エントリは、バンク0-7各々のエントリに対応するパリティビットを格納する。例えば、パリティモードの場合、プロテクションストレージ45の第1のエントリは、バンク0-7各々の第1のエントリに関するパリティビッットを格納する。従って、8つのバンクがある図示の例の場合、プロテクションストレージ45の各エントリは、バンク0-7各々について1つの全部で8つのパリティビットを格納する。一実施例において、この同じ8ビットが、EDCモードの場合のバンク0-7の64ビットデータの集合に対するチェックビット56を格納するために使用される。
【００３７】
EDCモードの場合、バンク0ないしバンク7からの情報及びプロテクションストレージ45からの情報を受信するように、共有XORツリー52がそれらに結合されている。EDCモードの場合、キャッシュ制御回路38の他の部分から受信した情報(バス24から到来する情報)、バンク0-7各々の特定のエントリからの情報又はそれら双方の組み合わせに基づいて、共有XORツリー52は、対応するエントリに保存するためにプロテクションストレージ45に提供される検査ビット56を生成する。また、EDCモードの場合、バンク0-7各々んお特定のエントリから受信した情報及びプロテクションストレージ45からの対応する検査ビットに基づいて、共有XORツリー52は、訂正論理部54に与えられるシンドロームビット58を生成する。EDCモードにおいて、誤り検出訂正論理部54は、バンク0-7各々の特定のエントリから情報を受信し、対応するシンドロームビット58を用いてマルチビット誤り検出を実行する。エラーが検出された場合、制御回路66は、エラー処理制御レジスタ48のCEAフィールドが示しているエラー処理を実行する。CEAフィールドが、自動訂正を示していた場合(CEAフィールドが100又は101の値を有していた場合)、誤り検出訂正論理部54は、受信した情報を訂正又は修正し、バンク0-7の特定のエントリからウェイ0選択論理部60へ、訂正された情報を提供する。従って、ウェイ0選択論理部60は、モード62の値に基づいて、(EDCモードにおいて自動訂正が実行される場合)訂正論理部54の出力を出力選択論理部37へ提供する、又は(EDCモードにおいて自動訂正が実行されない場合、又はパリティモードの場合)バンク0-7の1つ以上の出力を直接的に出力選択論理部37へ提供する。
【００３８】
ウェイ0においてキャッシュヒットが生じた場合、出力選択論理部37は、ウェイ0の出力をバス24に提供するように選択する。パリティモードの場合、対応するパリティビットも出力選択論理部37へプロテクションストレージ45から提供されることに、留意を要する。また、誤り検出訂正論理部54はエラーが生じたか否かを示すエラーインジケータをバス24に提供してもよい。一実施例において、CEAフィールドの値により示されるエラー処理の他の部分は、エラー制御回路66、キャッシュ制御回路38、プロセッサ30又はそれらの組み合わせの他の部分により実行されてもよい。例えば、エラーインジケータに基づいて又はエラーインジケータに応答して、マシンチェック例外が生成されてもよいし、あるいは自動無効化が実行されてもよい(それぞれCEAフィールドにより示される)。
【００３９】
従って、パリティモードにおけるキャッシュヒット読み取り処理の場合、又はEDCにより動作する場合、選択論理部60は、バンク0-7の1つ以上のアクセスエントリの出力に加えて対応するパリティビットを、出力選択論理部37へ提供する。ECCモードにおけるキャッシュヒット読み取り処理の場合、選択論理部60は、誤り検出訂正論理部54の出力を出力選択論理部37へ提供する。パリティモードにおけるキャッシュヒット書込処理の場合、又はパリティモードにおけるキャッシュミスで実行されるキャッシュ指定処理の場合、書き込みデータは、書込処理アクセスアドレスによりアドレス指定される1つ以上のバンク0-7のエントリに直接的に与えられる。すなわち、書き込みはバンク0-7の内の幾つのバンクに対して実行されてもよく、プロテクションストレージ45の対応するエントリにおける対応するパリティビットは、共有XORツリー52における生成後にビット毎に更新される。この方法の場合において、書込処理の結果として唯1つのバンクが書き込まれた場合、プロテクションストレージ45の対応するエントリにおける1ビットのみが更新される。パリティモードにおけるパリティビットの更新は、従来の方法により制御論理回路66内の論理部(図示せず)により実行されてもよい。
【００４０】
EDCモードにおいてバンク0-7の全てが書き込まれるフルライト処理の場合(すなわち、フルキャッシュデータフィールドが書き込まれる場合)、読み取り修正書き込み(Read-Modify-Write:  RMW)処理が実行される必要はない。この方法の場合、フルライト処理(メモリストレージ回路40の全てのバンクに対する書き込み)は、1回の又は単独のアクセスとともに(1つのプロセッササイクルで又は1つのクロックサイクルで)実行可能である。この場合、書き込みデータは、フルライト処理アクセスアドレスでアドレス指定されるバンク0-7の各エントリに提供される。書き込みデータは共有XORツリー52にも提供され、共有XORツリー52は、対応するチェックビットを生成し、かつ対応するエントリに保存するためにそれらをチェックビット56を通じてプロテクションストレージ45に提供する。一実施例において、チェックビットの生成及び書込が、バンク0-7に書き込みデータを書き込むのと同じプロセッサ又はクロックサイクルで完了できる場合、共有XORツリー52は組み合わせ論理回路でもよい。
【００４１】
EDCモードにおいてバンク0-7の一部に書き込みが行われる部分的書込処理の場合、読み取り修正書き込み(RMW)処理が必要になる。従って、バンク0-7の全てより少ないものに対する書込処理  (すなわち、キャッシュデータフィールド全体の内の一部分に対する書込処理)を実行するには、多重アクセス(例えば、複数のプロセッササイクル又はクロックサイクル)を必要として、フルライト処理の場合のように1回のアクセスで実行することはできない。読み取り修正書き込み処理の複雑さに起因して、実施例によっては、バンク0-7の全てより少ないものに対する書込処理がサポートされていなくてもよい(使用できないようになっていてもよい)。
【００４２】
図7は、本発明の一実施例による図1に示されるデータ処理システムにおける動作方法例をフローチャート形式で示す。本方法はブロック70から始まり、自動訂正を実行し報告をしないようにエラー処理が設定される(図4に関して説明したCEAフィールドの例の場合、ブロック70においてCEAフィールドは100の制御値に設定されてもよい)。フローはブロック72に進み、クリティカルアプリケーションの一部が実行される。エラーは一切報告されず(例えば、マシンチェック例外は生成されない)、エラーの記録も一切必要とされないので、クリティカルアプリケーションの部分は最大の透明性と共に実行される。この場合、誤り検出及び訂正の機能はプロセッサ30にとって透明である。フローはブロック74に進み、報告を伴う自動訂正を実行するようにエラー処理が設定される(図4に関して説明したCEAフィールドの例の場合、ブロック74においてCEAフィールドは101の制御値に設定されてもよい)。フローはブロック76に進み、最大の可視性(visibility)(すなわち、最小の透明性)と共に診断アプリケーションが実行される。この場合、エラーは修正されるが、透明性は最小であるので、エラーが生じた場合、例えばマシンチェック例外を生成することを通じてプロセッサ30に通知される。例えば、一実施例において、診断アプリケーションは、供給電源(VDD)、周波数、アクセスパターン等を変化させることで動作マージンパラメータに負担を加える。すなわち、CEAフィールドの値を動的に変化させることで、様々なタイプの適用例に対して様々なレベルの透明性(すなわち、プロセッサ30にとっての様々な可視性のレベル)を使用することができる。例えば、一実施例において、図7のフローチャートの左側に併記されているように、第1部分(時間0から中間時間まで)及び第2部分(中間時間から時間Xまで)を含む時間インターバルが規定されてもよい。一実施例において、この時間インターバルが反覆され、時間インターバルが反覆される毎に、時間インターバルの第1部分では、最小の可視性及び最大の透明性とともにクリティカルアプリケーションの部分が実行され、時間インターバルの第2部分では、最大の可視性及び最小の透明性とともに診断アプリケーションが実行される。従って、CEAフィールドの設定を変更することで、反覆される特定の時間インターバルの中で異なるタイプのアプリケーションに関して透明性及びエラー処理を変更することができる。
【００４３】
以上により、キャッシュのソフトエラーを検出したことに応答して、実行されるエラー処理を動的に変更することで、プロセッサ30に対する透明性のレベル(透明度)を変える方法が提供されたことが理解される。これは、例えば、CEAフィールドのようなレジスタの中でユーザがプログラム可能な制御フィールド(実行されるエラー処理を変更するために必要に応じて修正されてよい)を利用することで達成可能である。エラー処理は、例えば異なるタイプのアプリケーションが実行される前に変更され、異なるタイプのアプリケーションが、キャッシュ内でソフトエラーを検出した際の様々な透明性レベル(透明度)を有するようにする。従って、CEAフィールドのような制御フィールドを利用することで、ソフトエラーを評価及び克服する柔軟な仕組みを提供できる。
【００４４】
本発明を実現する装置は、多くの場合、当該技術分野において既知の回路及び電子部品により構成されるが、本発明の前提となる概念を理解及び説明する観点から、及び本発明の教示を曖昧に又は逸脱しないようにする等の観点から、回路の詳細は必要と認められる以上には説明されていない。
【００４５】
上記の実施例は、多種多様な情報処理システムを用いて適切に実現される。例えば、図1及びその説明は情報処理システムアーキテクチャの例を示しているが、このアーキテクチャ例は本発明の様々な形態を議論する際に有用に参照するためのものであるに過ぎない。当然に、アーキテクチャの記述は説明の便宜上簡略化されており、本発明おいて使用されてよい適切な多くの様々なタイプのアーキテクチャの内の1つに過ぎない。論理ブロックの境界は説明の便宜上のものであるに過ぎないこと、及び、代替例は複数の論理ブロック又は回路要素を統合してもよいし、様々な論理ブロック又は回路要素に機能を分散してもよいことを、当業者は認めるであろう。
【００４６】
従って、本願で説明されたアーキテクチャは例示的なものであるに過ぎず、同じ機能を発揮する多くの他のアーキテクチャが実現可能であることが、理解されるべきである。抽象的ではあるが明確なこととして、同じ機能を発揮する構成要素の任意の集まりは、所望の機能が達成されるように効果的に「関連付けられる」ことが可能である。従って、特定の機能を達成するように本願で組み合わせられている任意の2つの要素は、アーキテクチャ又は中間の構成要素によらず、所望の機能を発揮するように互いに「関連付けられている」ものと解釈できる。同様に、そのように関連する任意の2つの要素は、所望の機能を発揮できるように「動作可能に接続」又は「動作可能に結合」されているものと解釈できる。
【００４７】
具体的な一実施例において、データ処理システム10の図示の要素は、1つの集積回路又は同じ装置に存在する回路をなす。あるいは、データ処理システム10は、互いに相互接続された任意の数の集積回路又は個別装置を含んでいてもよい。例えば、メモリ16は、処理モジュール12と同じ集積回路上にあってもよいし、別個の集積回路上にあってもよいし、データ処理システム10の他の要素とは別個に分離した他の周辺装置又はスレーブ装置内にあってもよい。ペリフェラル18、20は別個の集積回路又は装置に設けられていてもよい。例えば、データ処理システム10又はその一部が、物理的な回路のソフトウェア又はコード表現でもよいし、あるいは物理的な回路にすることが可能な論理表現物でもよい。従って、データ処理システム10は適切な任意のタイプのハードウェア記述言語で組み込まれてもよい。
【００４８】
更に、上記の処理の機能同士の間の境界は単なる例示的なものに過ぎないことを、当業者は認めるであろう。複数の処理の機能が1つの処理に統合されてもよいし、及び/又は1つの処理の機能が追加的な複数の処理に分散されてもよい。更に代替例は特定の処理の複数のインスタンスを含んでいてもよく、異なる実施例においては処理の順番が異なってもよい。
【００４９】
本願で説明されるソフトウェアの全部又は一部は、例えば、メモリ16又は他のコンピュータシステムにおける他の媒体のようなコンピュータ読取可能な媒体から受け取られるデータ処理システム10の要素であってもよい。そのようなコンピュータ読取可能な媒体は、データ処理システム10のような情報処理システムに永続的に、着脱可能に又は遠隔的に結合される。コンピュータ読取可能な媒体は例えば以下の任意のものを含むがこれらに限定されない：ディスク及びテープ記憶媒体を含む磁気記憶媒体；コンパクトディスクメディア(例えば、CD-ROM、CD-R等)及びディジタルビデオディスク記憶媒体のような光記憶媒体；フラッシュメモリ、EEPROM、EPROM、ROM等のような半導体メモリを含む不揮発性記憶媒体；フェロ磁性ディジタルメモリ；MRAM；レジスタ、バッファ、キャッシュ、メインメモリ、RAM等を含む揮発性記憶媒体；及びコンピュータネットワーク、ポイントトゥポイント電気通信手段、搬送波伝送媒体等を含むデータ伝送媒体。
【００５０】
一実施例において、データ処理システム10はパーソナルコンピュータシステムのようなコンピュータシステムである。他の実施例は異なるタイプのコンピュータシステムを使用してもよい。コンピュータシステムは、1人以上のユーザに独立した演算処理能力を与えるように設計可能な情報処理システムである。コンピュータシステムは、例えば、メインフレーム、ミニコンピュータ、サーバ、ワークステーション、パーソナルコンピュータ、ノートパッド、パーソナルディジタルアシスタント、電子ゲーム機、車両その他の内蔵システム、セルラ電話、及びその他の無線装置等の様々な形態におけるものであるがこれらに限定されない。典型的なコンピュータシステムは、少なくとも1つの処理ユニット、関連するメモリ及び多数の入力/出力(I/O)装置を含む。
【００５１】
コンピュータシステムはプログラムに従って情報を処理し、I/O装置を介して出力する結果の情報を生成する。プログラムは特定のアプリケーションプログラム及び/又はオペレーティングシステムのような命令のリストである。通常、コンピュータプログラムはコンピュータ読取可能な記憶媒体に内的に保存され、コンピュータ読取可能な伝送媒体を通じてコンピュータシステムに送信される。一般に、コンピュータプロセスは、実行(動作)プログラム又はプログラムの一部、現在のプログラム値及びステータス情報、プロセスの実行を管理するためにオペレーティングシステムが使用するリソースを含む。親プロセスは子プロセスを発生させ、親プロセスの機能全体の実行を促す。親プロセスは親プロセスの機能全体の一部を実行するように子プロセスを個々に生成するので、子プロセスで実行される機能がしばしば親プロセスにより実行されるものとして説明される場合が間々ある(孫プロセス等)。
【００５２】
本発明は具体的な実施例を参照しながら説明されたが、添付の特許請求の範囲で規定されている本発明の範囲から逸脱することなく、様々な修正及び変形が可能である。例えば、アドレスフィールドに使用されるビット数はシステムの要求に応じて変更されてもよい。従って、明細書及び図面は限定的なものではなく例示的なものであり、そのような全ての修正は特許請求の範囲内に包含される。特定の実施例に関して本願で説明された課題を解決する手段、利点及び効果は、特許請求の範囲における全部又は一部の重要な、必須の又は本質的な特徴又は要素として解釈されてはならない。
【００５３】
本願で使用されている「結合」という用語は、直接的な結合や機械的な結合に限定されないように意図されている。
【００５４】
更に、本願で使用されている「或る」又は「ある」という用語は1つ又は1つより多い複数として規定される。また、請求項において「少なくとも」及び「1つ以上」のような前置きを使用していることは、たとえ同じ請求項が「1つ以上の」又は「少なくとも1つ」のような前置き及び「或る」又は「ある」のような非限定要素を含んでいたとしても、「或る」又は「ある」という限定されていない他の構成要件の前置きが、そのような前置きのある構成要素を含む何らかの特定の請求項を、そのような要素を1つしか含んでいない発明に限定することを意図するように解釈してはならない。同様なことは限定要素を利用する際にもなりたる。
【００５５】
別段の断りがない限り、「第1」及び「第2」という用語はそのような用語で説明する要素同士を区別するために使用されている。すなわち、これらの用語はそのような要素の時間的な又はその他の優先順位を必ずしも意図してはいない。
【００５６】
以下、本発明の実施形態を例示的に列挙する。
【００５７】
第1形態は、プロセッサと、前記プロセッサに結合されたキャッシュと、前記キャッシュに結合されたキャッシュ制御回路とを有するデータ処理システムである。前記キャッシュ制御回路は誤り検出を実行し、前記キャッシュ制御回路は、キャッシュエラーが検出された場合に行われる複数のエラー処理の内の1つを選択する制御値が格納されているユーザプログラム可能なエラー処理制御レジスタを更に有し、ユーザにより選択される前記制御値の第1の値は、前記キャッシュエラーを含むキャッシュラインを例外処理を行うことなく自動的に無効化するのに使用され、ユーザにより選択される前記制御値の第2の値は、前記キャッシュエラーを含むキャッシュラインを例外処理と共に自動的に無効化するのに使用され、前記ユーザは、行われる処理が透明な処理であるか又は透明でない処理であるかを決める前記制御値を動的にプログラムする。
【００５８】
第2形態は第1形態のデータ処理システムにおいて、前記ユーザプログラム可能なエラー処理制御レジスタの前記制御値の第3の値は、キャッシュの内容を修正することなく例外を生成するのに使用され、該例外は、検出したエラーの記録を取ること、及び検出されたエラーに関する情報を収集するために前記キャッシュ内に保存された情報を検査することを可能にするものである。
【００５９】
第3形態は第1形態のデータ処理システムにおいて、前記ユーザプログラム可能なエラー処理制御レジスタにおける前記制御値の第3の値は、前記検出したエラーに関する情報を無効化することなく、かつ例外を生成することなく、前記検出したエラーの訂正を自動的に行うのに使用されるものである。
【００６０】
第４形態は第1形態のデータ処理システムにおいて、前記ユーザプログラム可能なエラー処理制御レジスタにおける前記制御値の第3の値は、前記検出したエラーを自動的に訂正し、かつ例外を生成するのに使用されるものである。
【００６１】
第５形態は第1形態のデータ処理システムにおいて、前記制御値が前記第1の値に設定されていた場合、時間インターバルの第1部分の間にアプリケーションの第1部分が実行される際に前記プロセッサにとってキャッシュエラーが透明であり、前記制御値が前記第2の値に設定されていた場合、時間インターバルの第2部分の間にアプリケーションの第2部分が実行される際に前記プロセッサにとってキャッシュエラーが可視的なものである。
【００６２】
第6形態は第1形態のデータ処理システムにおいて、前記キャッシュラインがクリーンキャッシュラインであった場合、前記ユーザプログラム可能なエラー処理制御レジスタの前記制御値の第3の値は、前記キャッシュエラーを含む前記キャッシュラインの自動的な無効化を行うのに使用され、前記キャッシュラインがダーティキャッシュラインであった場合、例外が生成され、前記キャッシュラインが不変のまま残されるものである。
【００６３】
第7形態は第1形態のデータ処理システムにおいて、前記ユーザプログラム可能なエラー処理制御レジスタが、前記キャッシュ制御回路の前記誤り検出の動作を制御する別の制御値を更に含むものである。
【００６４】
第8形態の方法は、
プロセッサをキャッシュに結合し、
前記キャッシュ内の情報の誤り検出を実行するためにキャッシュ制御回路を前記キャッシュに結合し、
ユーザプログラム可能なエラー処理制御レジスタを前記キャッシュ制御回路に結合するステップを有する方法であって、
前記ユーザプログラム可能なエラー処理制御レジスタは、キャッシュエラーが検出された場合に行われる複数のエラー処理の内の1つを選択する制御値を格納し、ユーザにより選択される前記制御値の第1の値は、前記キャッシュエラーを含むキャッシュラインを例外処理を行うことなく自動的に無効化するのに使用され、ユーザにより選択される前記制御値の第2の値は、前記キャッシュエラーを含むキャッシュラインを例外処理と共に自動的に無効化するのに使用され、前記ユーザは、行われる処理が透明な処理であるか又は透明でない処理であるかを決める前記制御値を動的にプログラムするものである。
【００６５】
第9形態は第8形態の方法において、前記ユーザプログラム可能なエラー処理制御レジスタの前記制御値の第3の値を、キャッシュの内容を修正することなく例外を生成するように指定するステップを更に有し、該例外は、検出したエラーの記録を取ること、及び検出されたエラーに関する情報を収集するために前記キャッシュ内に保存された情報を検査することを可能にするものである。
【００６６】
第10形態は第8形態の方法において、前記ユーザプログラム可能なエラー処理制御レジスタにおける前記制御値の第3の値を、前記検出したエラーに関する情報を無効化することなく、かつ例外を生成することなく、前記検出したエラーの訂正を自動的に行うように指定するステップを更に有するものである。
【００６７】
第11形態は第8形態の方法において、前記ユーザプログラム可能なエラー処理制御レジスタにおける前記制御値の第3の値を、前記検出したエラーを自動的に訂正し、かつ例外を生成するように指定するステップを更に有するものである。
【００６８】
第12形態は第8形態の方法において、前記制御値を前記第1の値に設定するステップであって、時間インターバルの第1部分の間にアプリケーションの第1部分が実行される際に前記プロセッサにとってキャッシュエラーが透明である、ステップと、
前記制御値を前記第2の値に設定するステップであって、時間インターバルの第2部分の間にアプリケーションの第2部分が実行される際に前記プロセッサにとってキャッシュエラーが可視的である、ステップと
を更に有するものである。
【００６９】
第13形態は第8形態の方法において、前記ユーザプログラム可能なエラー処理制御レジスタにおいて、前記キャッシュ制御回路の前記誤り検出の動作を制御する別の制御値を設定するものである。
【００７０】
第14形態は第8形態の方法において、前記キャッシュラインがクリーンキャッシュラインであった場合、前記ユーザプログラム可能なエラー処理制御レジスタの前記制御値の第3の値を、前記キャッシュエラーを含む前記キャッシュラインの自動的な無効化を行うように指定するステップを更に有し、前記キャッシュラインがダーティキャッシュラインであった場合、例外が生成され、前記キャッシュラインが不変のまま残されるものである。
【００７１】
第15形態のデータ処理システムは、
プロセッサと、
前記プロセッサに結合されたキャッシュと、
前記キャッシュに結合されたキャッシュ制御回路と
を有するデータ処理システムであって、前記キャッシュ制御回路は誤り検出を実行し、前記キャッシュ制御回路は、キャッシュエラーが検出された場合に行われるエラー処理のタイプを選択する制御値が格納されているユーザプログラム可能なエラー処理制御レジスタを更に有するものである。
【００７２】
第16形態は第15形態のデータ処理システムにおいて、前記ユーザプログラム可能なエラー処理制御レジスタの前記制御値は、前記プロセッサにとって透明なキャッシュエラーの処理を行うのに使用される第1の値と、前記プロセッサにとって可視的である例外処理によるキャッシュエラーの処理を行うのに使用される第2の値とを含むものである。
【００７３】
第17形態は第15形態のデータ処理システムにおいて、前記ユーザプログラム可能なエラー処理制御レジスタの前記制御値の第3の値は、キャッシュの内容を修正することなく例外を生成するのに使用され、該例外は、検出したエラーの記録を取ること、及び検出されたエラーに関する情報を収集するために前記キャッシュ内に保存された情報を検査することを可能にするものである。
【００７４】
第18形態は第15形態のデータ処理システムにおいて、前記ユーザプログラム可能なエラー処理制御レジスタにおける前記制御値の第3の値は、前記検出したエラーに関する情報を無効化することなく、かつ例外を生成することなく、前記検出したエラーの訂正を自動的に行うのに使用されるものである。
【００７５】
第19形態は第15形態のデータ処理システムにおいて、前記ユーザプログラム可能なエラー処理制御レジスタにおける前記制御値の第3の値は、前記検出したエラーを自動的に訂正し、かつ例外を生成するのに使用されるものである。
【００７６】
第20形態は第15形態のデータ処理システムにおいて、前記制御値が前記第1の値に設定されていた場合、時間インターバルの第1部分の間にアプリケーションの第1部分が実行される際に前記プロセッサにとってキャッシュエラーが透明であり、前記制御値が前記第2の値に設定されていた場合、時間インターバルの第2部分の間にアプリケーションの第2部分が実行される際に前記プロセッサにとってキャッシュエラーが可視的なものである。
【図１】
0005476391.tif 000002
【図２】
0005476391.tif 000003
【図３】
0005476391.tif 000004
【図４】
0005476391.tif 000005
【図５】
0005476391.tif 000006
【図６】
0005476391.tif 000007
【図７】
0005476391.tif 000008