(57)【要約】【課題】本発明は、データ処理装置の性能を低下させずに破損データ値を扱うためのデータ処理装置と方法を提供する。【解決手段】本方法は、データ処理装置内のメモリのデータ値にアクセスするステップと、データ処理装置内でデータ値の処理を開始するステップと、アクセスされたデータ値の破損の有無を検出するステップと、データ値の破損が検出されたとき、破損データ値のデバイスへの伝達を防ぐために、データ処理装置とデバイスとの間のインタフェースを無効にするステップとを含む。データ値がアクセスされたとき、データ処理装置はそのデータ値の処理を開始することができ、データ処理装置の性能は低下しない。アクセスされたデータ値が破損しているか、エラーを含んでいる場合、インタフェースを無効化することにより、デバイスへの破損データ値の伝達が防止され、破損データ値に起因するデバイス内の状態変化が生じないことが保証される。【選択図】図５
2005108222.tif 000002
【特許請求の範囲】
【請求項１】
破損データ値を扱う方法であって、
ａ）データ処理装置内のメモリのデータ値にアクセスするステップと、
ｂ）データ処理装置内でデータ値の処理を開始するステップと、
ｃ）ステップａ）、ステップｂ）の少なくとも一つが実行中にアクセスされたデータ値が破損しているか否かを判定するステップと、
ｄ）データ値が破損していると判定されたとき、デバイスへの破損データ値の伝達を防止するために、データ処理装置とデータ処理装置に接続されるデバイスとの間でデータ値を伝達するために使用されるインタフェースを無効にするステップとを含む方法。
【請求項２】
請求項１において、ステップｄ）がデータ処理装置に接続されるデバイスへの破損データ値の転送を防止するステップを含む方法。
【請求項３】
請求項２において、データ処理装置がデータ処理装置とデバイスの間でデータ値を転送するためのインタフェースユニットを含み、そして、ステップｄ）がデバイスへの破損データ値の転送を防止するためにインタフェースユニットの動作を禁止するステップを含む方法。
【請求項４】
請求項１において、ステップｄ）がデータ処理装置に接続されるデバイスによる破損データ値の受け取りを防止するステップを含む方法。
【請求項５】
請求項４において、デバイスがデータ処理装置からデータ値を取り込むためのインタフェースロジックを含み、そして、ステップｃ）が、デバイスへの破損データ値の取り込みを防止するためにインタフェースロジックの動作を禁止するステップを含む方法。
【請求項６】
請求項１において、破損データ値がアクセスされたデータ値を含む方法。
【請求項７】
請求項１において、ステップｂ）が少なくとも一つの結果データ値を生成するためにデータ処理装置内におけるデータ値処理を開始するステップを含み、そして、破損データ値が少なくとも一つの結果データ値を含む方法。
【請求項８】
請求項１において、ステップａ）が第一のプロセッササイクルでメモリ内のデータ値にアクセスするステップを含み、そして、ステップｂ）が第一のプロセッササイクルに続くプロセッササイクルでデータ値の処理を開始するステップを含む方法。
【請求項９】
請求項１において、ステップｃ）での判定が第一のプロセッササイクルに続くプロセッササイクルで完了する方法。
【請求項１０】
請求項１において更に、
ｅ）アクセスされたデータ値の破損がステップｃ）で確定された後、データ処理装置を再初期化するステップを含む方法。
【請求項１１】
請求項１０において更に、
ｆ）データ処理装置の再初期化処理に続いて、インタフェースを有効化するステップを含む方法。
【請求項１２】
請求項１において、デバイスがバスを介してデータ処理装置に接続される方法。
【請求項１３】
請求項１において、デバイスがセーフティークリティカルなデバイスである方法。
【請求項１４】
破損データ値を扱うためのデータ処理装置であって、
アクセス可能なデータ値を含むメモリと、
データ値の処理を開始するためのプロセッサと、
少なくとも一つのデータ値がアクセスされ、データ値が処理されているときに、アクセスされるデータ値の破損の有無を判定するための破損ロジックとを有し、データ値の破損が確定されたとき、デバイスへの破損データ値の伝達を防ぐために、データ処理装置とデータ処理装置に接続されるデバイスとの間でデータ値を伝達するインタフェースを無効化するための破損信号を破損ロジックによって生成するデータ処理装置。
【請求項１５】
請求項１４において、デバイスへの破損データ値の転送を破損ロジックによって防止することができるデータ処理装置。
【請求項１６】
請求項１５において、データ処理装置とデバイス間でデータ値を転送するためのインタフェースユニットを含み、デバイスへの破損データ値の転送を防止するために破損信号によってインタフェースユニットの動作を禁止するデータ処理装置。
【請求項１７】
請求項１４において、データ処理装置に接続されるデバイスによる破損データ値の受け取りを破損ロジックによって防止することができるデータ処理装置。
【請求項１８】
請求項１７において、デバイスを有し、デバイスがデータ処理装置からのデータ値を受け取るためのインタフェースロジックを含み、デバイスによる破損データ値の受け取りを防止するために破損信号によってインタフェースロジックの動作を禁止するデータ処理装置。
【請求項１９】
請求項１４において、破損データ値がアクセスされたデータ値を含むデータ処理装置。
【請求項２０】
請求項１４において、少なくとも一つの結果データ値を生成するためにプロセッサによってデータ値の処理を開始することが可能であり、そして、破損データ値が少なくとも一つの結果データ値を含むデータ処理装置。
【請求項２１】
請求項１４において、第一のプロセッササイクルでメモリ内のデータ値にアクセスし、第一のプロセッササイクルに続くプロセッササイクルでデータ値の処理を開始するデータ処理装置。
【請求項２２】
請求項１４において、アクセスされたデータ値が破損しているか否かを、第一のプロセッササイクルに続くプロセッササイクルで破損ロジックによって判定することができるデータ処理装置。
【請求項２３】
請求項１４において更に、
破損信号に応答してデータ処理装置を再初期化するための再初期化ロジックを有するデータ処理装置。
【請求項２４】
請求項２３において、データ処理装置の再初期化に続いて、再初期化ロジックによってインタフェースを有効化することができるデータ処理装置。
【請求項２５】
請求項１４において、バスを介してデバイスと接続されるデータ処理装置。
【請求項２６】
請求項１４において、デバイスがセーフティークリティカルなデバイスであるデータ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明は破損（corrupt）データ値を処理するためのデータ処理装置と方法に関する。
【背景技術】
【０００２】
（従来技術の説明）
図１Ａに示すような周知のデータ処理装置１では、バス３０を介してメモリ２０から受け取った命令を処理するためにプロセッサコア１０が設けられる。それら命令を処理するためにプロセッサコア１０が必要とするデータは、バス３０を介してメモリ２０から検索される。バス３０には周辺デバイスも接続される。
【０００３】
プロセッサコア１０の詳細は図２Ａに示され、インタフェースの詳細は図２Ｂに示される。通常、プロセッサコア１０はプロセッサ１２、キャッシュ１４、バスインタフェースユニット（ＢＩＵ）１６を含む。キャッシュ１４はメモリ２０から検索されたデータ値（データおよび／または命令）を格納するために設けられ、プロセッサ１２から直ちにデータ値にアクセスできる。メモリアドレスに関連するデータ値は、プロセッサ１２から要求される新しいメモリアドレスに対するデータ値で上書きされるまでキャッシュ１４に保持される。データ値は物理メモリアドレスまたは仮想メモリアドレスを用いてキャッシュ１４に格納される。キャッシュ１４のデータ値が変更された場合、データ変更時またはキャッシュ１４のデータ値が上書きされたときに、通常は変更データ値によるメモリ２０への再書き込みが保証される。
【０００４】
ＢＩＵ１６は、キャッシュ１４、メモリ２０、周辺デバイス４０の相互間でのデータ値の検索、格納に使用される。例えば、キャッシュ１４へのアクセス時にキャッシュミスがあると、ＢＩＵ１６はメモリ２０からの読み出しを開始する。そして、メモリ２０は指定されたアドレスのデータ値を出力する。次に、ＢＩＵ１６はデータ値をキャッシュ１４に渡し、そこでデータ値を格納することが可能であり、また、プロセッサ１２で読み出すことも可能である。次に、そのデータ値はプロセッサ１２によって直ちにキャッシュ１４から直接アクセスすることができる。プロセッサ１２とキャッシュ１４の間には、データ値に関わるアドレスを転送するためのアドレスバス（ＣＡＣＨＥ＿ＡＤＤ）と、キャッシュ１４から読み出されたデータ値を転送するための読み出しデータバス（ＣＡＣＨＥ＿Ｒｄａｔａ）と、キャッシュ１４に格納されるデータ値を転送するための書き込みデータバス（ＣＡＣＨＥ＿Ｗｄａｔａ）と、キャッシュ１４に命令を転送するためのコマンドバス（ＣＡＣＨＥ＿ＣＭＤ）が設けられる。キャッシュ１４とＢＩＵ１６の間には、データ値に関わるアドレスを転送するためのアドレスバス（ＢＩＵ＿ＡＤＤ）と、ＢＩＵ１６から読み出されたデータ値を転送するための読み出しデータバス（ＢＩＵ＿Ｒｄａｔａ）と、キャッシュ１４から読み出されたデータ値を転送するための書き込みデータバス（ＢＩＵ＿Ｗｄａｔａ）と、ＢＩＵで実行される命令を転送するためのコマンドバス（ＢＩＵ＿ＣＭＤ）が設けられる。
【０００５】
メモリ２０とキャッシュ１４は通常、データ値の各要素または各ビットをメモリセルに格納する。いわゆる「スタティック」メモリセルの構成例が図１Ｂに示され、これは通常キャッシュ１４と共に使用される。図１Ｂに示す構成は一般的なものであり、実際には、このようなスタティックメモリ構成の細部は若干異なる場合もある。一般に、各メモリセルは２つのインバータ３００、３１０とトライステートゲート３２０を含んでいる。セルにデータ値を書き込むとき、トライステートゲート３２０上でＷＲＩＴＥ＿ＥＮＡＢＬＥ信号がアサートされ、ＷＲＩＴＥ＿ＤＡＴＡ信号の反転値がノード３３０に送出される。インバータ３１０による弱いフィードバックによって正のフィードバックループが形成されてノード３３０上の値が一定に保たれ、それによってセル内にＷＲＩＴＥ＿ＤＡＴＡ信号の値を格納する。インバータ３１０による弱いフィードバックは、データ値の書き込み時にトライステートゲート３２０で無視される程度の弱いものである。つぎに、ＲＥＡＤ＿ＤＡＴＡ信号の値を検出することによって、ＷＲＩＴＥ＿ＥＮＡＢＬＥ信号の値を読むことができる。
【０００６】
ここで問題は、インバータ３１０によるフィードバックが外部環境要因に影響され、ノード３３０に格納された値に状態変化が起こり得ることである。そのような外部要素には、例えばインバータ３１０の能動部分へのガンマ線入射が含まれる。また、メモリデバイス近傍への電磁放射が状態変化を起こすこともある。同様に、メモリデバイスに供給される電圧の変動が状態変化を起こすこともある。ここに説明する各状況において、外部からの影響は、メモリに格納されているデータ値の破損につながることがある。このようなデータ値の破損は「ソフトエラー」と呼ばれることが多い。このようなソフトエラーの発生は統計的には低いものであるが、メモリ密度が増加するにしたがって、ソフトエラー発生の可能性は高まる。
【０００７】
ソフトエラーの問題に対処するために、エラー検出／訂正方法が知られている。エラー検出方法の一例がパリティチェックであり、エラー訂正方法の一例がエラー訂正符号化である。パリティチェック法では、例えば、「１」に設定されたデータ値のビット数が計算され、その結果が奇数であるなら、データ値に付加されるパリティビットが例えば「１」に設定される。逆に、計算結果が偶数であるなら、データ値に付加されるパリティビットが例えば「０」にクリアされる。この方法を使用することにより、データ値の破損検出の信頼度が増す。
【０００８】
パリティチェック法は破損検出の可能性を増加させるが、パリティチェックの実行には所定の時間を要する。エラー訂正符号化は通常、パリティチェックよりさらに長い時間を要する。典型的なデータ処理装置では、メモリアクセスはプロセッサ内のクリティカルパスになり、最終的にプロセッサの動作速度を制限する。したがって、パリティチェックを実行する場合など、データ値のアクセスに要する時間が増加すると、プロセッサの動作速度の低下を招く。
【０００９】
上記見地から、一般にキャッシュ１２はメモリ２０と比較して密度が低いので、ソフトエラーが発生する可能性も少ない。したがって、従来のキャッシュ１２では、このようなパリティチェック法を採用していない。その理由は、統計的頻度の低いイベントを扱うためにキャッシュ１２の通常能力に影響を与えるのが好ましくないからである。しかし、対照的に、一般にメモリ２０の密度は比較的高く、ソフトエラーが発生する可能性が多い。したがって、メモリ２０でのパリティチェックの採用は周知である。メモリ２０におけるデータ値のアクセス速度は一般にキャッシュ１２へのアクセスと比較して遅いので、パリティチェックの実行は可能である。したがって、メモリ２０へのアクセスタイムは増加するが、パリティチェックを採用するメモリ２０と採用しないメモリの間には、総合的な性能低下はほとんど、または全くない。
【００１０】
いわゆる「組込み型システム」等における応用では、プロセッサコア１０はデータ値を周辺デバイス４０に供給し、その周辺デバイス４０は、エアバッグコントローラ、ブレーキデバイスコントローラなどのいわゆるセーフティークリティカル（safety-critical）またはフォールト・イントレラント（fault-intolerant）なデバイスである。セーフティークリティカルなデバイスの使用に適切な保証が得られるように、そのデバイスの動作をよく理解し、予測する必要がある。周辺デバイス４０がセーフティークリティカルなデバイスである場合、周辺デバイス４０の動作はプロセッサコア１０からのデータ値に依存するので、破損データ値に起因して、周辺デバイス４０の状態に持続性の変化が生じないような保証を高める必要がある。周辺デバイス４０の状態に関するこのような変化は、例えばエアバッグアクチュエータやブレーキサーボの誤作動、あるいはクレジットカード取引関連情報などの秘密情報の誤送信の原因となり得る。
【００１１】
プロセッサコア１０の世代ごとに、キャッシュ１２の密度は一般に増えていく。したがって、キャッシュ１２の中でソフトエラーが発生する可能性も増加するという問題がある。プロセッサコア１０からセーフティークリティカルなデバイスにデータ値が供給されるようになっている場合、ソフトエラーに起因する破損データ値を原因として、デバイスの状態に持続性の変化が生じないような保証が必要である。しかし、上述のように、キャッシュ１２へのアクセスはプロセッサコア１０の性能におけるクリティカルパスである。したがって、キャッシュ１２からデータ値へのアクセスに要する時間が増加すると、逆にプロセッサコア１０の性能を低下させる。それで、キャッシュ１２でパリティチェックを実行することが可能であるが、それはデスクトッププロセッサシステムのＬ１キャッシュで増加する。なぜなら、ソフトエラーが発生しない可能性と比較して、ソフトエラー発生の可能性がまだ低く、そのような発生頻度の低いイベントを扱うためにプロセッサコア１０の総合性能に影響を与えるのは望ましくないからである。
【００１２】
したがって、通常動作におけるプロセッサコアの性能を維持すると共に、破損データ値が周辺装置の状態変化を引き起こさないという保証が得られるような、破損データ値を扱うための改良された方法が必要である。
【００１３】
第一のアスペクトとして、本発明は破損データ値を扱う方法を提供する。この方法は、ａ）データ処理装置内のメモリのデータ値にアクセスするステップと、ｂ）データ処理装置内でデータ値の処理を開始するステップと、ｃ）ステップａ）、ステップｂ）の少なくとも一つが実行中にアクセスされたデータ値の破損の有無を検出するステップと、ｄ）データ値の破損が検出されたとき、破損データ値のデバイスへの伝達を防ぐために、データ処理装置とデータ処理装置に接続されるデバイスとの間でデータ値を伝達するために使用されるインタフェースを無効にするステップとを含む。
【００１４】
データ値がアクセスされたとき、データ処理装置はそのデータ値の処理を開始することができるのでデータ処理装置の性能は低下しない。データ値の処理中には、その後の命令に関わるデータ値が使用されるが、その結果として新たなデータ値が発生することもあれば、発生しないこともある。アクセスされたデータ値が破損しているか、エラーを含んでいることが分かると、データ処理装置をデバイスと接続するインタフェースは無効化（disable）される。インタフェースを効果的に無効化すると、デバイスへのデータ値の伝達が阻止され、破損データ値は（最初にアクセスされたデータ値か、結果データ値（resultant data value）であるかを問わず）すべて隔離される。破損データ値のデバイスへの伝達を阻止することにより、デバイス内では破損データ値の結果に起因する状態変化が起こり得ないことが保証される。
【００１５】
アクセスされたデータ値の処理は、データ値破損の有無の判定を待たずに開始することができるので、データ処理装置は、データ値破損の有無を最初に確認することなく通常の処理動作を実行することができる。したがって、データ値を処理するとき、破損の有無を問わず、データ処理装置の総合的性能は低下しないので有利である。これはデータ値破損の有無に関する判定作業がクリティカルパスから排除されたからである。代わりに、データ値のアクセスおよび／または処理と並列に判定作業を行うことができる。データ値破損の有無の判定に要する時間とは関係なく、データ値へのアクセスに要する時間は不変である。
【００１６】
インタフェースの無効化により、破損データ値のデバイスへの伝達を阻止すると同時に、データ処理装置の動作は影響を受けない状態に維持される。インタフェースを無効化すると、デバイスへの破損データ値の伝達を阻止すると同時に、破損データ値の判定に必要なタイムフレームが広がるという利点が付加される。インタフェースを無効化するために利用されるタイムフレームは、破損データ値がインタフェース経由で送信可能な状態になる前であれば、いつでもよい。
【００１７】
実施例において、ステップｄ）は、データ処理装置に接続されたデバイスへの破損データ値の転送を防止するステップを含む。
【００１８】
データ処理装置からの破損データ値の転送防止は、データ値を隔離するためにデータ処理装置をデバイスから分離するための便利な方法である。
【００１９】
実施例において、データ処理装置はデバイスとの間でデータ値を転送するためのインタフェースユニットを含み、そして、ステップｄ）は破損データ値がデバイスに転送されないようにインタフェースユニットの動作を禁止するステップを含む。
【００２０】
したがって、単純にインタフェースユニットを無効化するだけで、破損データ値のデバイスへの転送が防止される。
【００２１】
代替実施例あるいは追加として、ステップｄ）は、データ処理装置に接続されるデバイスによる破損データ値の取り込みを防止するステップを含む。
【００２２】
デバイスによる破損データ値の取り込み防止は、データ値を隔離するためにデータ処理装置をデバイスから分離するための別の便利な方法である。
【００２３】
実施例において、デバイスはデータ処理装置からデータ値を取り込むためのインタフェースロジックを含み、そして、ステップｄ）は、デバイスによる破損データ値の取り込みを防止するためにインタフェースロジックの動作を禁止するステップを含む。
【００２４】
したがって、単純にインタフェースロジックを無効化するだけで、データ処理装置からの破損データ値の取り込みが防止される。
【００２５】
実施例において、破損データ値はアクセスされたデータ値を含む。
【００２６】
したがって、デバイスへの伝達が阻止される破損データ値は、アクセスされたデータ値自体であって、破損していると決定されたものである。
【００２７】
追加として、あるいは代替的に、ステップｂ）は、少なくとも一つの結果データ値を生成するためにデータ処理装置内におけるデータ値処理を開始するステップを含み、そして、破損データ値は少なくとも一つの結果データ値を含むことができる。
【００２８】
したがって、デバイスへの伝達が阻止される破損データ値は、アクセスされたデータ値を用いて生成されたデータ値である。破損データ値を用いて生成されたデータ値も、破損の可能性がある。
【００２９】
実施例において、ステップａ）は、第一のプロセッササイクルでメモリ内のデータ値にアクセスするステップを含み、そして、ステップｂ）は、第一のプロセッササイクルに続くプロセッササイクルでデータ値の処理を開始するステップを含む。
【００３０】
実施例において、ステップｃ）での判定は、第一のプロセッササイクルに続くプロセッササイクルで完了する。
【００３１】
ステップｂ）とｃ）は、第一のプロセッササイクルに続く同一プロセッササイクルまたは異なるプロセッササイクルで実行される。
【００３２】
実施例はさらに、ｅ）アクセスされたデータ値の破損がステップｃ）で確定された後、データ処理装置を再初期化するステップを含む。
【００３３】
したがって、破損データ値が検出されたとき、次にデータ処理装置がリセットされることがある。インタフェースが無効化されているので、破損データ値が伝達される危険を冒すことなく、あるいはデバイスに伝達されたかも知れないデータ値を破損することなく、データ処理装置を安全にリセットすることができる。
【００３４】
実施例はさらに、ｆ）データ処理装置の再初期化処理に続いて、インタフェースを有効化（enabling）するステップを含む。
【００３５】
新たに検出された破損データ値がなければ、データ処理装置の再初期化処理に続いてインタフェースを安全に再有効化することができる。
【００３６】
デバイスとデータ処理装置は適切な任意の接続媒体によって接続することができる。しかし、一実施例において、デバイスはバスを介してデータ処理装置に接続される。
【００３７】
破損データ値をセーフティークリティカルなデバイスから隔離することは非常に有用であるから、一実施例において、デバイスはセーフティークリティカルなデバイスとする。
【００３８】
本発明のもう一つのアスペクトとして、破損データ値を扱うためのデータ処理装置を提供する。このデータ処理装置は、アクセス可能なデータ値を含むメモリと、データ値の処理を開始するためのプロセッサと、少なくとも一つのデータ値がアクセスされ、データ値が処理されているときに、アクセスされるデータ値の破損の有無を判定するための破損ロジックとを有し、データ値の破損が確定されたとき、デバイスへの破損データ値の伝達を防ぐために、データ処理装置とデータ処理装置に接続されるデバイスとの間でデータ値を伝達するインタフェースを無効化するための破損信号を破損ロジックによって生成する。
【実施例】
【００３９】
付図に示される好ましい実施例にしたがって、本発明をさらに詳細に説明する。
【００４０】
本発明の実施例によるキャッシュ１４’を図３に示す。キャッシュ１４’は、パリティビットチェックを採用した４ウェイセット連想キャッシュ（4-way set associative cache）である。４つのキャッシュウェイが図示されているが、キャッシュウェイの数は任意である。４つのキャッシュウェイは、それぞれ複数のキャッシュラインを含んでいる。４つのキャッシュウェイのうち、いずれか特定のキャッシュラインに、特定アドレスに関連するデータ値（例えばワード）を格納することができる（すなわち、各セットは４つのキャッシュラインを含む）。キャッシュ１４’が１６Ｋバイトキャッシュの場合、各キャッシュウェイは４Ｋバイト（１６Ｋバイトキャッシュ／４キャッシュウェイ）を格納する。各キャッシュラインが８つの３２ビットワードを格納する場合、各キャッシュウェイ（（４Ｋバイト／キャッシュウェイ）／（３２バイト／キャッシュライン））について、３２バイト／キャッシュライン（８ワード×４バイト／ワード）と、１２８キャッシュラインになる。したがって、セットの総数は１２８に等しい。
【００４１】
各データ値に関連するメモリアドレス５０の内容も、図３に示される。メモリアドレス５０は、ＴＡＧ部６０と、ＳＥＴ部７０、ＷＯＲＤ部８０、ＢＹＴＥ部９０からなる。メモリアドレス５０のＳＥＴ部７０は、キャッシュ１４’の中の特定セットを識別するために使用される。ＷＯＲＤ部８０はキャッシュラインの中で特定のワードを識別する。そのワードはＳＥＴ部７０によって識別されたものであり、プロセッサ１２によるアクセスの対象となるものである。もし要求されるなら、ＢＹＴＥ部９０はワード内の特定バイトが指定されるようにする。
【００４２】
ワードのメモリアドレス５０を指定し、ワードを格納するキャッシュウェイを選択することによって、キャッシュ１４’に格納されているワードを読むことができる（ＴＡＧ部６０は、ワードがどのキャッシュウェイに格納されているかを判別するために使用されるが、詳細は後述する）。そして、論理アドレス１００（ＳＥＴ部７０とＷＯＲＤ部８０からなる）は、そのキャッシュウェイ内におけるワードの論理アドレスを指定する。
【００４３】
プロセッサ１２から要求されるアドレスの新規ワードを格納するために、キャッシュ１４’に格納されたワードを上書きすることができる。通常、キャッシュ１４’にワードを格納するとき、例えば８ワード（３２バイト）のキャッシュライン全体をフェッチして格納する「ラインフィル（linefill）」と呼ばれる手法が使われる。
【００４４】
ＴＡＧメモリ１３０における各エントリー１１０は、データメモリ１４０の対応キャッシュライン１２０と関連付けられ、それぞれのキャッシュラインは複数のデータ値、この例では８つのデータワードを含んでいる。各エントリー１１０に関してＴＡＧセクション１５５に格納されたＴＡＧ部６０に加えて、ＴＡＧメモリ１３０の内部には複数のステータスビットが含まれる。これらのステータスビットは、バリッドビット（valid bit）１６０と、ダーティービット（dirty bit）１７０と、パリティビット１５０である。
【００４５】
バリッドビット１６０は、対応するキャッシュラインに格納されているデータ値がまだ有効であるか否かを示すために使用される。したがって、バリッドビット１６０をセットすることは、対応するデータ値が有効であることを示し、逆に、バリッドビット１６０をクリアすることは、少なくとも一つのデータ値が有効でなくなっていることを示す。
【００４６】
対応するキャッシュラインに格納されているデータ値のどれかが、メモリ２０に格納されているデータ値より新しいか否かを示すために、ダーティービット１７０が使用される。ダーティービット１７０の値はメモリのライトバック領域に関連する。プロセッサコアから出力され、キャッシュ１４’に格納されたデータ値は直ちにメモリ２０に送られて格納されるわけではなく、特定キャッシュラインのキャッシュ１４’からの上書き時、すなわち「排出（evict）」時に、そのデータ値をメモリ２０に送るべきか否かを決定する。したがって、ダーティービット１７０がセットされていないときは、対応のキャッシュラインに格納されているデータ値がメモリ２０に格納されているデータ値に対応することを示し、これに対して、ダーティービット１７０がセットされているときは、対応のキャッシュラインに格納されている少なくとも一つのデータ値が更新され、その更新データ値がまだメモリ２０に送られていないことを示す。
【００４７】
キャッシュラインのデータ値がキャッシュ１４’に上書きされるとき、バリッドビット１６０とダーティービット１７０がデータ値の有効性およびダーティー性を示していれば、データ値はメモリ２０へ出力され、格納される。データ値が有効でないまたはダーティーでなければ、データ値はメモリ２０に戻す必要がなく、上書きすることができる。
【００４８】
パリティビット１５０は、格納時にエラーが発生したか否かを判定するためにキャッシュ１４’からデータ値を検索するときに使用される。パリティビット１５０はキャッシュ１４’にデータ値を格納するときに生成される。パリティビット１５０はキャッシュ１４’における各エントリー１１０のＴＡＧセクション１５５のために生成される。対応するキャッシュライン１２０に格納されたデータ値に対しても、パリティビットが生成され、付加される。この例では、キャッシュ１４’は各サイクルにつき６４ビットのアクセスが可能である。したがって、６４ビットデータ値のそれぞれに対してパリティビットが生成、付加される。しかし、データワードごと、あるいは１サイクルでキャッシュ１４’からアクセスされる標準データ量に関係なく、パリティビットを生成、付加することが可能である。ＴＡＧセクション１５５において論理「１」に設定されたビット数が奇数であれば、パリティ生成ロジック１８０で生成されるパリティビット１６０は「１」である。ＴＡＧセクション１５５において論理「１」に設定されたビット数が偶数であれば、パリティ生成ロジック１８０で生成されるパリティビット１６０は「０」にクリアされる。同様に、６４ビットデータ値のうち論理「１」に設定されたビット数が奇数であれば、パリティ生成ロジック１９０で生成されるパリティビット１６０は「１」である。６４ビットデータ値のうち論理「１」に設定されたビット数が偶数であれば、パリティ生成ロジック１９０で生成されるパリティビットは「０」である。パリティビットの生成に適した一般的な論理構造を図６にしたがって以下に説明する。データ値にアクセスするときのパリティビットの使用法を以下で詳細に説明する。
【００４９】
プロセッサ１２によって書き込み動作が始まると、書き込み用データ値のメモリアドレス５０がプロセッサアドレスバス２００に送られる。メモリアドレス５０はプロセッサアドレスバス２００からキャッシュ１４’に入り、各キャッシュウェイ内のＴＡＧメモリ１３０がメモリアドレス５０を受け取る。キャッシュコントローラ（図示せず）は所定のキャッシュ割り付け方針に基づいて、データ値を書き込むべきキャッシュウェイを決定する。選択されたウェイのＴＡＧメモリ１３０は有効化され、メモリアドレス５０のＳＥＴ部７０に基づいてＴＡＧエントリーが選択される。ＴＡＧ部６０は、ＴＡＧ部６０の値に基づいてパリティビットを生成するパリティビット発生器１８０に設けられる。ＴＡＧ部６０とパリティビット発生器１８０から発生するパリティビットはＴＡＧエントリーに格納される。パリティビット発生器１８０はキャッシュ１４’の中に示されているが、パリティビットはキャッシュアクセスの早期に生成されてもよく、それゆえ、コアの別の場所にパリティビット発生器を設け、それから付加されるパリティビットをキャッシュ１４’に供給することができる。
【００５０】
一方、各キャッシュウェイのデータメモリ１４０も、メモリアドレス５０を受け取る。選択されたキャッシュウェイのデータメモリ１４０は有効化され、メモリアドレス５０のＳＥＴ部７０に基づいて、対応するキャッシュラインが選択される。データ値はパリティビット発生器１９０に供給され、そのデータ値の値に基づいてパリティビット発生器からパリティビットが発生する。データ値と、パリティビット発生器１９０から発生したパリティビットはキャッシュラインに格納される。
【００５１】
データ値が書き込まれると、ＴＡＧエントリーのバリッドビットがセットされ、ダーティービットがクリアされる。
【００５２】
図４に示すように、プロセッサ１２による読み出し動作が始まると、第一のプロセッササイクルにおいて、アクセスされるデータ値のメモリアドレス５０がプロセッサアドレスバス２００に送られる。メモリアドレス５０は、プロセッサアドレスバス２００からキャッシュ１４’に渡される。各キャッシュウェイのＴＡＧメモリ１３０はメモリアドレス５０を受け取る。また、各キャッシュウェイのデータメモリ１４０も、メモリアドレス５０を受け取る。
【００５３】
次のプロセッササイクルにおいて、ＴＡＧメモリ１３０は、メモリアドレス５０のＳＥＴ部７０によって指定される位置に格納されているＴＡＧ値を関連の比較器２１０に出力する。そして、各比較器２１０は、そのキャッシュウェイからの出力ＴＡＧ値と、プロセッサアドレスバス２００上のメモリアドレス５０のＴＡＧ部６０とを比較する。また、データメモリ１４０は、アドレス５０のＳＥＴ部７０、ＷＯＲＤ部８０、ＢＹＴＥ部９０によって指定される位置に格納されているデータ値をマルチプレクサ２１０に出力する。
【００５４】
ＴＡＧメモリ１３０のいずれかのウェイから出力されたＴＡＧ値とアドレス５０のＴＡＧ部６０が一致すれば、この次のプロセッササイクル中に、対応するヒット信号（例えば、論理「１」）がキャッシュウェイセレクタ２２０に送られる。キャッシュウェイセレクタ２２０は、キャッシュコントローラ（図示せず）に対して経路２３０上でキャッシュヒットを表示し、マルチプレクサ２１０にセレクト信号を出力する。マルチプレクサ２１０は対応するデータ値を選択して、それをプロセッサデータバス２４０に出力する。プロセッサ１２は、そのデータ値をプロセッサデータバス２４０から読み、キャッシュ１４’からの出力データ値を用いて処理を開始することができる。
【００５５】
一方、ＴＡＧメモリ１３０の各ウェイから出力されるＴＡＧ値は対応するパリティビット発生器２５０に供給される。パリティビット発生器２５０は、ＴＡＧメモリ１３０のそのウェイから出力されるＴＡＧ値を取り込んでパリティビットを生成する。パリティビット発生器２５０で生成されたパリティビットは、比較器２６０によってＴＡＧメモリ１３０からの出力パリティビットと比較される。出力されたパリティビットと生成されたパリティビットが同じでなければ（ＴＡＧメモリ１３０に格納されているＴＡＧ値にエラーがあることを示す）、アクセスされたデータ値が破損していることを示す信号が比較器２６０から経路２６５に送出される。ＴＡＧ値が破損していれば、データメモリ１４０からアクセスされるデータ値は、アクセスされるはずであったデータ値である可能性が低い。簡潔にするため、パリティビット発生器２５０と比較器２６０は、１個しか図示されていない。しかし、この構成は各キャッシュウェイで繰り返される。代替的に、各キャッシュウェイからのＴＡＧ値をセレクタに供給し、このセレクタでウェイセレクタ２２０からのセレクト信号を受け取って、単一のパリティビット発生器２５０と比較器２６０に供給するべき適切なＴＡＧ値を選択することも可能である。
【００５６】
同様に、データメモリ１４０の各ウェイから出力されるデータ値は、対応するパリティビット発生器２７０に供給される。パリティビット発生器２７０は、データメモリ１４０のそのウェイから出力されるデータ値を取り込んでパリティビットを生成する。パリティビット発生器２７０で生成されたパリティビットは、比較器２８０によってデータメモリ１４０からの出力パリティビットと比較される。出力されたパリティビットと生成されたパリティビットが同じでなければ（データメモリ１４０に格納されているデータ値エラーがあることを示す）、アクセスされたデータ値が破損していることを示す破損信号が比較器２８０から経路２８５に送出される。ここでも簡潔にするため、パリティビット発生器２７０と比較器２８０は１個しか示されていない。しかし、この構成は各キャッシュウェイで繰り返される。代替的に、各キャッシュウェイからのデータ値をセレクタに供給し、このセレクタでウェイセレクタ２２０からのセレクト信号を受け取って、単一のパリティビット発生器２７０と比較器２８０に供給するべき適切なデータ値を選択することも可能である。
【００５７】
経路２６５、２８５はＯＲゲート２９０で論理的に接続され、セレクタ３００への入力を供給する。他のキャッシュウェイのために、セレクタ３００はパリティビット発生器と比較器構成から入力を受ける。セレクタ３００は、制御信号としてウェイセレクト信号をウェイセレクタ２２０から受け取る。選択されたウェイのためにアクセスされたＴＡＧ値またはデータ値が破損していれば、破損発生を示す破損信号が経路３０５に送出される。
【００５８】
図４に示すように、データ値破損の有無の判定に要する時間は、そのデータ値のアクセスに要する時間より長い。一般的な状況において、判定が実行されるのは最も早くても、プロセッサデータバス２４０上にデータ値（ＲＤＡＴＡ）が現れた直後のプロセッササイクルにおいてである。しかし、他の論理構成、他のエラー検出／訂正方法を使用する場合は、さらに長い時間を要するかもしれない。したがって、プロセッサ１２が破損データ値を用いて既に処理動作を終えている可能性が高い。したがって、図５Ａ、５Ｂにしたがって以下に詳しく説明するように、データ処理装置内における破損データ値の更なる拡散を防止する目的でコアと他のデバイスとのインタフェースを無効化するために、破損信号が利用される。
【００５９】
ＴＡＧ値とＴＡＧ部６０が一致しない場合、ミス信号（例えば論理「０」）がキャッシュウェイセレクタ２２０に送られる。キャッシュウェイセレクタ２２０は経路２３０に適切な信号を供給することによってキャッシュミスを表示し、データ値はメモリ２０から読み出され、対応する生成パリティビットと共にキャッシュ１４’に格納される。したがって、データ値がメモリ２０から読み出され、データ値とＴＡＧ値がキャッシュに１４’に格納されて、以前にキャッシュ１４’に格納されていたデータ値とＴＡＧ値が上書きされるまでの遅延の後、データバス２４０を介してプロセッサ１２にデータ値が供給される。上述のように、アクセス要求で表されるデータ値を含めたキャッシュライン全体をメモリから読み出してキャッシュ１４’に格納することにより、以前にキャッシュ１４’に格納されたキャッシュライン全体を上書きするという、全キャッシュラインのラインフィルを実行することが一般的であろう。
【００６０】
図４に関して述べたように、ＴＡＧメモリ１３０からＴＡＧ値にアクセスし、パリティビットを生成し、そのパリティビットを出力パリティビットと比較するために要する時間は一般にプロセッササイクルより長い。これは、ＴＡＧ値とメモリアドレス５０のＴＡＧ部６０とを比較器２１０によって比較するために要する時間がおよそＸＯＲ＿ｄｅｌａｙ＋（ｌｏｇ２（２Ｎ）＊ＡＮＤ＿ｄｅｌａｙ）になることに基づく（ただし、Ｎは比較対象ビット数である）。一方、パリティ生成ロジック２５０によってパリティビットを生成し、そのパリティビットをＴＡＧメモリ１３０から読み出されたパリティビットと比較するために要する時間はおよそｌｏｇ２（Ｎ）＊ＸＯＲ＿ｄｅｌａｙである。したがって、次のプロセッササイクルで経路３０５に破損信号が現れるというのが最も確からしい。破損信号が後続サイクルで現れるから、データ値はプロセッサ１２に供給され、プロセッサ１２は破損データ値を用いて既に動作を実行しているかもしれない。
【００６１】
破損データ値がデータ処理装置内で伝達されないように、一つ以上の破損データ値が検出された場合に備えて、破損信号はプロセッサ１２およびキャッシュ１４’をデータ処理装置の残部から分離するために利用される。プロセッサ１２およびキャッシュ１４’の分離は、データ処理装置内の他のデバイスから破損データ値を隔離するために役立つ。これは、プロセッサコア１０とデータ処理装置の残部との間のインタフェースまたはバス３０を実質的に無効化することによって達成される。
【００６２】
図５Ａ、５Ｂは、データ処理装置内における他のデバイスへの破損データ値の伝達を防止する２つの実施例を示す。
【００６３】
図５Ａにおいて、データ処理装置は、キャッシュ１４’およびＢＩＵ１６’に接続されるプロセッサ１２を備えたコア１０’を含む。ＢＩＵ１６’はデータ値を受け取ることが可能であり、その後、それをバス３０経由で一つ以上のセーフティークリティカルなデバイス４０を含む他のデバイスに転送する。キャッシュ１４’は経路３０５を介して破損信号をＢＩＵ１６’に供給する。
【００６４】
ＢＩＵ１６’は、キャッシュ１４’から破損データ値がアクセスされたことを示す破損信号を受け取って、ＢＩＵ１６’に供給されたデータ値のバス３０を介しての転送を無効化することができる。バス３０を介したデータ値の転送を無効化することによって、どのセーフティークリティカルなデバイス４０にも破損データ値が到達しないようにすることができる。
【００６５】
図６Ａ、６ＢはＢＩＵ１６’の動作を示しており、図６Ａは、破損信号を条件としてＢＩＵ１６’への入力が発生する構成、図６Ｂは、破損信号を条件としてＢＩＵ１６’からの出力が発生する構成である。
【００６６】
図６Ａでは、キャッシュ１４’からＢＩＵ１６’へのＢＩＵ＿ＣＭＤ信号を、経路３０５上に現れる破損信号に基づいて条件付けする条件ロジック４００が設けられる。条件ロジック４００は個別のものとしてＢＩＵ１６’に設けられているが、この条件ロジック４００はＢＩＵ１６’の一部として、またはキャッシュ１４’の一部として設けることも可能である。
【００６７】
条件ロジック４００は、破損信号がキャッシュ１４’からアクセスされるデータ値に破損がないことを示すとき、ＢＩＵ＿ＣＭＤ信号をＢＩＵ＿ＣＭＤ＿Ｍ信号として供給し、そして、破損信号が破損発生を示すとき、ＩＤＬＥ信号をＢＩＵ＿ＣＭＤ＿Ｍとして供給する。
【００６８】
図６Ａの動作を説明するために、コードシーケンスの一例として、ＬＤＲ  ｒ０、［ｒ1］；  ＳＴＲ  ｒ０［ｒ５］（すなわち、レジスタｒ１で示されるアドレスに格納されたデータ値をレジスタｒ０に読み込んで、次に、レジスタｒ０に格納されたデータ値をレジスタｒ５で示されるメモリアドレスに書き込む）を考える。ＬＤＲとＳＴＲ命令は処理開始の命令の例であるが、それら自体は処理結果としてデータ値を発生させることはない。レジスタｒ１で示されるアドレスに格納されたデータ値の読み出しがキャッシュヒット中に行われたが結果的にパリティチェックエラーになり、レジスタｒ５で示されたメモリアドレスがセーフティークリティカルな周辺デバイスを指していると仮定する。
【００６９】
したがって、第一のアクセスまたはプロセッササイクルにおいて、ＬＤＲ命令に呼応して、ＣＡＣＨＥ＿ＣＭＤバスは「読み出し」コマンドを運び、ＣＡＣＨＥ＿ＡＤＤバスはレジスタｒ1で示されるアドレスを運ぶ。
【００７０】
第二サイクルにおいて、キャッシュ１４’はキャッシュヒットを示すキャッシュヒット信号を返送し、データ値がキャッシュ１４’から読み出されてレジスタｒ０に格納される。第二サイクルにおいて更に、ＳＴＲ命令に呼応して、ＣＡＣＨＥ＿ＣＭＤバスは「書き込み」コマンドを運び、ＣＡＣＨＥ＿ＡＤＤバスはレジスタｒ５で示されるアドレスを運ぶ。
【００７１】
第三サイクルにおいて、パリティチェックができなかったため、キャッシュ１４’はキャッシュ１４’からアクセスされたデータ値の破損を示す破損信号を返送する。破損信号の発行により、ＢＩＵ＿ＣＭＤ＿Ｍ信号はＢＩＵ１６’がアイドル状態を維持していることを示す。第三サイクルでは更に、キャッシュ１４’はレジスタｒ５で示されるアドレスのレジスタｒ０の内容を格納しようとしたときに、このアドレスはセーフティークリティカルな周辺デバイスのために予約されているのでキャッシュミスが発生したことを示すキャッシュミス信号を返送する。
【００７２】
したがって、第四サイクルにおいて、ＢＩＵ＿ＣＭＤバスは「書き込み」コマンドを運び、ＢＩＵ＿ＡＤＤバスはレジスタｒ５で示されるアドレスを運ぶ。しかし、条件ロジック４００がアクセスされたデータ値の破損を示す破損信号を受け取っているので、ＢＩＵ＿ＣＭＤ＿Ｍバスは「書き込み」コマンドの転送に失敗する。したがって、ＢＩＵ＿ＣＭＤ＿Ｍバスは、破損データ値のＢＩＵ１６’への送出を防止する「アイドル」コマンドを運ぶ。
【００７３】
ＢＩＵ１６’による破損データ値の受け取りを防止することにより、セーフティークリティカルな周辺デバイスによる破損データ値の受け取りが確実に防止されるため、セーフティークリティカルな周辺デバイスにおいて破損データ値に起因する状態変化は起こり得ない。ＢＩＵ＿ＣＭＤバス上に送出される「書き込み」コマンドに先立って破損信号を生成することにより、破損データ値がＢＩＵ１６’に伝達されないことが保証される。ＢＩＵ１６’による破損データ値の受け取りを防止する場合、ＢＩＵ１６’が破損データ値を受け取るサイクルより前の任意の時点で破損信号を生成することができる。
【００７４】
図６Ｂにおいて、ＢＩＵ１６’から発生してバス３０に送出されるＭＥＭ＿ＣＭＤ信号を経路３０５経由の破損信号に基づいて条件付けする条件ロジック４１０が設けられる。条件ロジック４１０は個別のものとしてＢＩＵ１６’に設けられているが、この条件ロジック４００はＢＩＵ１６’の一部として設けることも可能である。
【００７５】
条件ロジック４１０は、破損信号がキャッシュ１４’からアクセスされるデータ値に破損がないことを示すとき、ＭＥＭ＿ＣＭＤ信号をＭＥＭ＿ＣＭＤ＿Ｍ信号として供給し、そして、破損信号が破損発生を示すとき、ＩＤＬＥ信号をＭＥＭ＿ＣＭＤ＿Ｍとして供給する。
【００７６】
図６Ｂの動作を説明するために、図６Ａの場合と同じコードシーケンスを考える。
【００７７】
第五サイクルにおいて、保留中のメモリ動作がないので（ＭＥＭ＿ＯＰ＿ＤＯＮＥ経路のステータスで示されるように）、ＢＩＵ１６’は、「書き込み」コマンドを運ぶようにＭＥＭ＿ＣＭＤバスに命令するとともに、レジスタｒ５で示されるアドレスを運ぶようにＭＥＭ＿ＡＤＤバスに命令し、メモリ動作が保留中であることを示す信号がＭＥＭ＿ＯＰ＿ＤＯＮＥ経路上でアサートされる。バス３０を介したアクセスはプロセッサ１２、キャッシュ１４’、ＢＩＵ１６’の相互間のアクセスよりかなり遅いので、メモリ動作またはアクセスが保留中であることを示す信号は何サイクルかの時間にわたってＭＥＭ＿ＯＰ＿ＤＯＮＥ経路上に留まっていてもよい。メモリ動作が保留中であるなら、ＢＩＵ１６’は、上記に示す信号がアサートされる前にその動作が完了するまで待つ。
【００７８】
しかし、ＭＥＭ＿ＯＰ＿ＤＯＮＥ経路に現れる信号の遷移点で、条件ロジック４１０がアクセスされたデータ値の破損を示す破損信号を受け取っているので、ＭＥＭ＿ＣＭＤ＿Ｍバスは「書き込み」コマンドの転送を行なわない。ＭＥＭ＿ＯＰ＿ＤＯＮＥ経路を介して供給される信号の遷移上に破損信号があるかどうかをチェックすることは、メモリの動作やアクセスが行なわれている間、バス３０が禁止されることを防止するのに助けになる。アクセス保留中にバス３０を禁止することが可能であるが、それによってバス３０がハングアップすることがあって望ましくない。
【００７９】
ＢＩＵ１６’の出力に条件ロジック４１０を設けると、破損信号の生成後の時間が更に長くなる。この例では、破損したデータ値の初期アクセスに続く第五サイクルの始めまで、破損信号の発生が可能となる。より一般にいえば、ＢＩＵ１６’からの破損データ値の出力を防止する場合、ＢＩＵ１６’により破損データ値が転送されることになるサイクルより早い任意の時点で破損信号を生成することができる。
【００８０】
ＢＩＵ１６’からの破損データ値の転送を防止することにより、セーフティークリティカルな周辺デバイスによる破損データ値の受け取りを確実に防止できるため、セーフティークリティカルな周辺デバイスにおいて破損データ値に起因する状態変化は起こり得ない。ＭＥＭ＿ＣＭＤバス上に送出される「書き込み」コマンドに先立って破損信号を生成することにより、破損データ値がセーフティークリティカルな周辺デバイスに伝達されないことが保証される。
【００８１】
破損信号は更に、経路３０５経由でシステムリセットコントローラ３１０に入力される。システムリセットコントローラ３１０は、キャッシュ１４’から破損データ値がアクセスされたことを示す破損信号を受け取ると、図７で示されるようにコア１０’を再初期化させる。この例ではコア１０’だけが再初期化されるが、データ処理装置の全体または一部をリセットするようにシステムリセットコントローラ３１０を構成することが可能である。
【００８２】
システムリセットコントローラ３１０は、プロセッサ１２から読み出し可能なステータスレジスタ（ＲＥＳＥＴ＿ＢＹ＿Ｑ＿ＳＴＡＴＥ）を備えている。システムリセットコントローラ３１０は、経路３０５経由で破損信号を受け取ると、次のサイクルから複数サイクル期間（この例では３サイクル）ＣＯＲＥ＿ＲＥＳＥＴ信号をアサートし、ステータスレジスタをセットする。プロセッサ１２は、ＣＯＲＥ＿ＲＥＳＥＴ信号に応答して、リセットプロセスを開始する。第六サイクルの後、プロセッサ１２はリセットプロセスを終了してリセットベクトルから命令を読み込む。この例では、リセットベクトルから読み込まれた命令により、プロセッサ１２はステータスレジスタを読み出して、リセットがパリティエラーに起因するものか否かを判定する。
【００８３】
図５Ｂにおいて、データ処理装置は、キャッシュ１４’およびＢＩＵ１６に接続されるプロセッサ１２を備えたコア１０"を含む。ＢＩＵ１６はデータ値を受け取り、その後、それをバス３０経由で一つ以上のセーフティークリティカルなデバイス４０’を含む他のデバイスに転送することができる。キャッシュ１４’は、それぞれのセーフティークリティカルなデバイス４０’に破損信号を経路３０５経由で供給する。
【００８４】
セーフティークリティカルな各デバイス４０’は、破損データ値がキャッシュ１４’からアクセスされたことを示す破損信号を受け取ったとき、ＢＩＵ１６からバス３０経由で供給されるデータ値を受け取るインタフェースを無効化することができる。図６Ａ、６Ｂによる説明と同様の方法をセーフティークリティカルなデバイス４０’に利用することが可能である。インタフェースを無効化することにより、破損データ値がバス３０経由でセーフティークリティカルな各デバイス４０’に入るのを防止することができる。
【００８５】
上述の構成では、破損信号は、経路３０５を介してシステムリセットコントローラ３１０にも入力される。システムリセットコントローラ３１０は、破損データ値がキャッシュ１４からアクセスされたことを示す破損信号を受け取ると、コア１０’を再初期化させる。
【００８６】
したがって、いずれの実施例でも、キャッシュ１４’からデータ値にアクセスすることが可能である。そのアクセスされたデータ値は、プロセッサ１２によって通常の方法で処理することができる。その処理と並列に、アクセスされたデータ値破損の有無をキャッシュ１４’内のロジックで判定することで、クリティカルパスへの影響がなくなり、プロセッサ１２の標準動作速度は低下しない。その判定が終わると、コアとセーフティークリティカルなデバイスとのインタフェースを分離することができる。インタフェースの分離により、セーフティークリティカルなデバイスへの破損データ値の伝達が防止され、破損データ値に起因するセーフティークリティカルなデバイスの状態変化が防止される。
【００８７】
図８は発生器１８０、１９０、２５０、２７０などのパリティビット発生器で使用されるロジック構成を示す。パリティビットを発生させるためには、そのパリティビットに関連する所要データ（例えば、ＴＡＧ値、バイト、ワード、キャッシュライン）のビットがＸＯＲ演算される。この例では、データは８ビットを含むが、８ビット以上の場合には、さらに多くのＸＯＲゲート段を設けてパリティビットを発生することができる。所要データの連続ビットは２入力ＸＯＲゲートの入力に供給される。これらのＸＯＲゲートの出力は２入力ＸＯＲゲート等の入力に順次供給され、それらが結合されて単一のＸＯＲゲートから単一の出力が得られ、それがパリティビットになる。
【００８８】
この実施例は、破損データ値を検出するためのパリティビット法を用いて記述したが、他のエラー検出方法を利用することも可能である。
【００８９】
上の実施例では、ＴＡＧ値およびデータ値に適用されるエラー検出方法について説明したが、これらの方法をＴＡＧ値とデータ値の両方に適用する必要はなく、単純にいずれか一方に適用することができる。
【００９０】
上の実施例は、ＢＩＵからのデータ値の転送防止、またはセーフティークリティカルなデバイスによるデータ値の受け取り防止のために破損信号の利用を想定しているが、データ値の転送を防止するようにＢＩＵを構成し、データ値を受け取らないようにセーフティークリティカルなデバイスを構成することが可能である。
【００９１】
上の実施例では、破損データ値の検出時にシステムリセットコントローラによるコアのリセットを説明したが、代わりに、破損信号をプロセッサ１２に渡し、それがプロセッサ１２で認識されるまでホールドすることもできる。検出された後、プロセッサ１２はハンドラルーチン（handler routine）を有効化する。そして、ハンドラルーチンは発生した破損の修正を試みる。明確に、パリティチェックなどのエラー検出情報より優先してエラー訂正情報が格納される場合には、ハンドラルーチンを用いた破損修正が増える傾向がある。破損を直ちに修正することができないときは、ハンドラルーチンはコアをリセットすることができる。
【００９２】
以上の説明から明らかなように、本発明の実施例は、破損データ値に起因する周辺デバイスの状態変化を確実に防止するとともに、通常動作におけるプロセッサコアの性能を維持することができるように、破損データ値を扱う改良された方法を提供する。
【００９３】
ここでは特定の実施例について説明したが、本発明はそれに限定されることなく、発明の範囲内において多くの変更、追加が可能である。例えば、発明の範囲から逸脱することなく、独立クレームの特徴と従属クレームの特徴の様々な組み合わせが可能である。
【図面の簡単な説明】
【００９４】
【図１】Ａは、データ処理装置を示す図。Ｂは、スタティックメモリセルの構成を示す図。
【図２】図１のプロセッサコアとインタフェースを更に詳しく示す図。
【図３】本発明の実施例によるキャッシュを示す図。
【図４】図３のキャッシュの動作を示すタイムチャート。
【図５】Ａは、本発明の実施例によるデータ処理装置を示す図。Ｂは、本発明の別の実施例によるデータ処理装置で示す図。
【図６Ａ】図５ＡのＢＩＵの動作を示す図。
【図６Ｂ】図５ＡのＢＩＵの動作を示す図。
【図７】システムリセットコントローラの動作を示す図。
【図８】パリティビット発生器の論理構成を示す図。
【符号の説明】
【００９５】
１０  コア
１２  プロセッサ
１４  Ｌ１キャッシュ
１６  ＢＩＵ
２０  メモリ
３０  バス
４０  デバイス
５０  メモリアドレス
６０  ＴＡＧ部
７０  ＳＥＴ部
８０  ＷＯＲＤ部
９０  ＢＹＴＥ部
１３０  ＴＡＧメモリ
１４０  ＤＡＴＡメモリ
１８０  パリティー発生器
１９０  パリティー発生器
２００  プロセッサアドレスバス
２２０  ウェイセレクタ
２５０  パリティー発生器
【図１】
2005108222.tif 000003
【図２】
2005108222.tif 000004
【図３】
2005108222.tif 000005
【図４】
2005108222.tif 000006
【図５】
2005108222.tif 000007
【図６Ａ】
2005108222.tif 000008
【図６Ｂ】
2005108222.tif 000009
【図７】
2005108222.tif 000010
【図８】
2005108222.tif 000011