JP2005108222A - 破損データ値を処理するためのデータ処理装置と方法 - Google Patents

破損データ値を処理するためのデータ処理装置と方法 Download PDF

Info

Publication number
JP2005108222A
JP2005108222A JP2004276275A JP2004276275A JP2005108222A JP 2005108222 A JP2005108222 A JP 2005108222A JP 2004276275 A JP2004276275 A JP 2004276275A JP 2004276275 A JP2004276275 A JP 2004276275A JP 2005108222 A JP2005108222 A JP 2005108222A
Authority
JP
Japan
Prior art keywords
data
data value
corrupted
data processing
processing apparatus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2004276275A
Other languages
English (en)
Other versions
JP4395425B2 (ja
Inventor
Stuart David Biles
デーヴィッド ビレス スチュアート
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ARM Ltd
Original Assignee
ARM Ltd
Advanced Risc Machines Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ARM Ltd, Advanced Risc Machines Ltd filed Critical ARM Ltd
Publication of JP2005108222A publication Critical patent/JP2005108222A/ja
Application granted granted Critical
Publication of JP4395425B2 publication Critical patent/JP4395425B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/004Error avoidance
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches

Abstract

【課題】本発明は、データ処理装置の性能を低下させずに破損データ値を扱うためのデータ処理装置と方法を提供する。
【解決手段】本方法は、データ処理装置内のメモリのデータ値にアクセスするステップと、データ処理装置内でデータ値の処理を開始するステップと、アクセスされたデータ値の破損の有無を検出するステップと、データ値の破損が検出されたとき、破損データ値のデバイスへの伝達を防ぐために、データ処理装置とデバイスとの間のインタフェースを無効にするステップとを含む。データ値がアクセスされたとき、データ処理装置はそのデータ値の処理を開始することができ、データ処理装置の性能は低下しない。アクセスされたデータ値が破損しているか、エラーを含んでいる場合、インタフェースを無効化することにより、デバイスへの破損データ値の伝達が防止され、破損データ値に起因するデバイス内の状態変化が生じないことが保証される。
【選択図】図5

Description

(発明の分野)
本発明は破損(corrupt)データ値を処理するためのデータ処理装置と方法に関する。
(従来技術の説明)
図1Aに示すような周知のデータ処理装置1では、バス30を介してメモリ20から受け取った命令を処理するためにプロセッサコア10が設けられる。それら命令を処理するためにプロセッサコア10が必要とするデータは、バス30を介してメモリ20から検索される。バス30には周辺デバイスも接続される。
プロセッサコア10の詳細は図2Aに示され、インタフェースの詳細は図2Bに示される。通常、プロセッサコア10はプロセッサ12、キャッシュ14、バスインタフェースユニット(BIU)16を含む。キャッシュ14はメモリ20から検索されたデータ値(データおよび/または命令)を格納するために設けられ、プロセッサ12から直ちにデータ値にアクセスできる。メモリアドレスに関連するデータ値は、プロセッサ12から要求される新しいメモリアドレスに対するデータ値で上書きされるまでキャッシュ14に保持される。データ値は物理メモリアドレスまたは仮想メモリアドレスを用いてキャッシュ14に格納される。キャッシュ14のデータ値が変更された場合、データ変更時またはキャッシュ14のデータ値が上書きされたときに、通常は変更データ値によるメモリ20への再書き込みが保証される。
BIU16は、キャッシュ14、メモリ20、周辺デバイス40の相互間でのデータ値の検索、格納に使用される。例えば、キャッシュ14へのアクセス時にキャッシュミスがあると、BIU16はメモリ20からの読み出しを開始する。そして、メモリ20は指定されたアドレスのデータ値を出力する。次に、BIU16はデータ値をキャッシュ14に渡し、そこでデータ値を格納することが可能であり、また、プロセッサ12で読み出すことも可能である。次に、そのデータ値はプロセッサ12によって直ちにキャッシュ14から直接アクセスすることができる。プロセッサ12とキャッシュ14の間には、データ値に関わるアドレスを転送するためのアドレスバス(CACHE_ADD)と、キャッシュ14から読み出されたデータ値を転送するための読み出しデータバス(CACHE_Rdata)と、キャッシュ14に格納されるデータ値を転送するための書き込みデータバス(CACHE_Wdata)と、キャッシュ14に命令を転送するためのコマンドバス(CACHE_CMD)が設けられる。キャッシュ14とBIU16の間には、データ値に関わるアドレスを転送するためのアドレスバス(BIU_ADD)と、BIU16から読み出されたデータ値を転送するための読み出しデータバス(BIU_Rdata)と、キャッシュ14から読み出されたデータ値を転送するための書き込みデータバス(BIU_Wdata)と、BIUで実行される命令を転送するためのコマンドバス(BIU_CMD)が設けられる。
メモリ20とキャッシュ14は通常、データ値の各要素または各ビットをメモリセルに格納する。いわゆる「スタティック」メモリセルの構成例が図1Bに示され、これは通常キャッシュ14と共に使用される。図1Bに示す構成は一般的なものであり、実際には、このようなスタティックメモリ構成の細部は若干異なる場合もある。一般に、各メモリセルは2つのインバータ300、310とトライステートゲート320を含んでいる。セルにデータ値を書き込むとき、トライステートゲート320上でWRITE_ENABLE信号がアサートされ、WRITE_DATA信号の反転値がノード330に送出される。インバータ310による弱いフィードバックによって正のフィードバックループが形成されてノード330上の値が一定に保たれ、それによってセル内にWRITE_DATA信号の値を格納する。インバータ310による弱いフィードバックは、データ値の書き込み時にトライステートゲート320で無視される程度の弱いものである。つぎに、READ_DATA信号の値を検出することによって、WRITE_ENABLE信号の値を読むことができる。
ここで問題は、インバータ310によるフィードバックが外部環境要因に影響され、ノード330に格納された値に状態変化が起こり得ることである。そのような外部要素には、例えばインバータ310の能動部分へのガンマ線入射が含まれる。また、メモリデバイス近傍への電磁放射が状態変化を起こすこともある。同様に、メモリデバイスに供給される電圧の変動が状態変化を起こすこともある。ここに説明する各状況において、外部からの影響は、メモリに格納されているデータ値の破損につながることがある。このようなデータ値の破損は「ソフトエラー」と呼ばれることが多い。このようなソフトエラーの発生は統計的には低いものであるが、メモリ密度が増加するにしたがって、ソフトエラー発生の可能性は高まる。
ソフトエラーの問題に対処するために、エラー検出/訂正方法が知られている。エラー検出方法の一例がパリティチェックであり、エラー訂正方法の一例がエラー訂正符号化である。パリティチェック法では、例えば、「1」に設定されたデータ値のビット数が計算され、その結果が奇数であるなら、データ値に付加されるパリティビットが例えば「1」に設定される。逆に、計算結果が偶数であるなら、データ値に付加されるパリティビットが例えば「0」にクリアされる。この方法を使用することにより、データ値の破損検出の信頼度が増す。
パリティチェック法は破損検出の可能性を増加させるが、パリティチェックの実行には所定の時間を要する。エラー訂正符号化は通常、パリティチェックよりさらに長い時間を要する。典型的なデータ処理装置では、メモリアクセスはプロセッサ内のクリティカルパスになり、最終的にプロセッサの動作速度を制限する。したがって、パリティチェックを実行する場合など、データ値のアクセスに要する時間が増加すると、プロセッサの動作速度の低下を招く。
上記見地から、一般にキャッシュ12はメモリ20と比較して密度が低いので、ソフトエラーが発生する可能性も少ない。したがって、従来のキャッシュ12では、このようなパリティチェック法を採用していない。その理由は、統計的頻度の低いイベントを扱うためにキャッシュ12の通常能力に影響を与えるのが好ましくないからである。しかし、対照的に、一般にメモリ20の密度は比較的高く、ソフトエラーが発生する可能性が多い。したがって、メモリ20でのパリティチェックの採用は周知である。メモリ20におけるデータ値のアクセス速度は一般にキャッシュ12へのアクセスと比較して遅いので、パリティチェックの実行は可能である。したがって、メモリ20へのアクセスタイムは増加するが、パリティチェックを採用するメモリ20と採用しないメモリの間には、総合的な性能低下はほとんど、または全くない。
いわゆる「組込み型システム」等における応用では、プロセッサコア10はデータ値を周辺デバイス40に供給し、その周辺デバイス40は、エアバッグコントローラ、ブレーキデバイスコントローラなどのいわゆるセーフティークリティカル(safety-critical)またはフォールト・イントレラント(fault-intolerant)なデバイスである。セーフティークリティカルなデバイスの使用に適切な保証が得られるように、そのデバイスの動作をよく理解し、予測する必要がある。周辺デバイス40がセーフティークリティカルなデバイスである場合、周辺デバイス40の動作はプロセッサコア10からのデータ値に依存するので、破損データ値に起因して、周辺デバイス40の状態に持続性の変化が生じないような保証を高める必要がある。周辺デバイス40の状態に関するこのような変化は、例えばエアバッグアクチュエータやブレーキサーボの誤作動、あるいはクレジットカード取引関連情報などの秘密情報の誤送信の原因となり得る。
プロセッサコア10の世代ごとに、キャッシュ12の密度は一般に増えていく。したがって、キャッシュ12の中でソフトエラーが発生する可能性も増加するという問題がある。プロセッサコア10からセーフティークリティカルなデバイスにデータ値が供給されるようになっている場合、ソフトエラーに起因する破損データ値を原因として、デバイスの状態に持続性の変化が生じないような保証が必要である。しかし、上述のように、キャッシュ12へのアクセスはプロセッサコア10の性能におけるクリティカルパスである。したがって、キャッシュ12からデータ値へのアクセスに要する時間が増加すると、逆にプロセッサコア10の性能を低下させる。それで、キャッシュ12でパリティチェックを実行することが可能であるが、それはデスクトッププロセッサシステムのL1キャッシュで増加する。なぜなら、ソフトエラーが発生しない可能性と比較して、ソフトエラー発生の可能性がまだ低く、そのような発生頻度の低いイベントを扱うためにプロセッサコア10の総合性能に影響を与えるのは望ましくないからである。
したがって、通常動作におけるプロセッサコアの性能を維持すると共に、破損データ値が周辺装置の状態変化を引き起こさないという保証が得られるような、破損データ値を扱うための改良された方法が必要である。
第一のアスペクトとして、本発明は破損データ値を扱う方法を提供する。この方法は、a)データ処理装置内のメモリのデータ値にアクセスするステップと、b)データ処理装置内でデータ値の処理を開始するステップと、c)ステップa)、ステップb)の少なくとも一つが実行中にアクセスされたデータ値の破損の有無を検出するステップと、d)データ値の破損が検出されたとき、破損データ値のデバイスへの伝達を防ぐために、データ処理装置とデータ処理装置に接続されるデバイスとの間でデータ値を伝達するために使用されるインタフェースを無効にするステップとを含む。
データ値がアクセスされたとき、データ処理装置はそのデータ値の処理を開始することができるのでデータ処理装置の性能は低下しない。データ値の処理中には、その後の命令に関わるデータ値が使用されるが、その結果として新たなデータ値が発生することもあれば、発生しないこともある。アクセスされたデータ値が破損しているか、エラーを含んでいることが分かると、データ処理装置をデバイスと接続するインタフェースは無効化(disable)される。インタフェースを効果的に無効化すると、デバイスへのデータ値の伝達が阻止され、破損データ値は(最初にアクセスされたデータ値か、結果データ値(resultant data value)であるかを問わず)すべて隔離される。破損データ値のデバイスへの伝達を阻止することにより、デバイス内では破損データ値の結果に起因する状態変化が起こり得ないことが保証される。
アクセスされたデータ値の処理は、データ値破損の有無の判定を待たずに開始することができるので、データ処理装置は、データ値破損の有無を最初に確認することなく通常の処理動作を実行することができる。したがって、データ値を処理するとき、破損の有無を問わず、データ処理装置の総合的性能は低下しないので有利である。これはデータ値破損の有無に関する判定作業がクリティカルパスから排除されたからである。代わりに、データ値のアクセスおよび/または処理と並列に判定作業を行うことができる。データ値破損の有無の判定に要する時間とは関係なく、データ値へのアクセスに要する時間は不変である。
インタフェースの無効化により、破損データ値のデバイスへの伝達を阻止すると同時に、データ処理装置の動作は影響を受けない状態に維持される。インタフェースを無効化すると、デバイスへの破損データ値の伝達を阻止すると同時に、破損データ値の判定に必要なタイムフレームが広がるという利点が付加される。インタフェースを無効化するために利用されるタイムフレームは、破損データ値がインタフェース経由で送信可能な状態になる前であれば、いつでもよい。
実施例において、ステップd)は、データ処理装置に接続されたデバイスへの破損データ値の転送を防止するステップを含む。
データ処理装置からの破損データ値の転送防止は、データ値を隔離するためにデータ処理装置をデバイスから分離するための便利な方法である。
実施例において、データ処理装置はデバイスとの間でデータ値を転送するためのインタフェースユニットを含み、そして、ステップd)は破損データ値がデバイスに転送されないようにインタフェースユニットの動作を禁止するステップを含む。
したがって、単純にインタフェースユニットを無効化するだけで、破損データ値のデバイスへの転送が防止される。
代替実施例あるいは追加として、ステップd)は、データ処理装置に接続されるデバイスによる破損データ値の取り込みを防止するステップを含む。
デバイスによる破損データ値の取り込み防止は、データ値を隔離するためにデータ処理装置をデバイスから分離するための別の便利な方法である。
実施例において、デバイスはデータ処理装置からデータ値を取り込むためのインタフェースロジックを含み、そして、ステップd)は、デバイスによる破損データ値の取り込みを防止するためにインタフェースロジックの動作を禁止するステップを含む。
したがって、単純にインタフェースロジックを無効化するだけで、データ処理装置からの破損データ値の取り込みが防止される。
実施例において、破損データ値はアクセスされたデータ値を含む。
したがって、デバイスへの伝達が阻止される破損データ値は、アクセスされたデータ値自体であって、破損していると決定されたものである。
追加として、あるいは代替的に、ステップb)は、少なくとも一つの結果データ値を生成するためにデータ処理装置内におけるデータ値処理を開始するステップを含み、そして、破損データ値は少なくとも一つの結果データ値を含むことができる。
したがって、デバイスへの伝達が阻止される破損データ値は、アクセスされたデータ値を用いて生成されたデータ値である。破損データ値を用いて生成されたデータ値も、破損の可能性がある。
実施例において、ステップa)は、第一のプロセッササイクルでメモリ内のデータ値にアクセスするステップを含み、そして、ステップb)は、第一のプロセッササイクルに続くプロセッササイクルでデータ値の処理を開始するステップを含む。
実施例において、ステップc)での判定は、第一のプロセッササイクルに続くプロセッササイクルで完了する。
ステップb)とc)は、第一のプロセッササイクルに続く同一プロセッササイクルまたは異なるプロセッササイクルで実行される。
実施例はさらに、e)アクセスされたデータ値の破損がステップc)で確定された後、データ処理装置を再初期化するステップを含む。
したがって、破損データ値が検出されたとき、次にデータ処理装置がリセットされることがある。インタフェースが無効化されているので、破損データ値が伝達される危険を冒すことなく、あるいはデバイスに伝達されたかも知れないデータ値を破損することなく、データ処理装置を安全にリセットすることができる。
実施例はさらに、f)データ処理装置の再初期化処理に続いて、インタフェースを有効化(enabling)するステップを含む。
新たに検出された破損データ値がなければ、データ処理装置の再初期化処理に続いてインタフェースを安全に再有効化することができる。
デバイスとデータ処理装置は適切な任意の接続媒体によって接続することができる。しかし、一実施例において、デバイスはバスを介してデータ処理装置に接続される。
破損データ値をセーフティークリティカルなデバイスから隔離することは非常に有用であるから、一実施例において、デバイスはセーフティークリティカルなデバイスとする。
本発明のもう一つのアスペクトとして、破損データ値を扱うためのデータ処理装置を提供する。このデータ処理装置は、アクセス可能なデータ値を含むメモリと、データ値の処理を開始するためのプロセッサと、少なくとも一つのデータ値がアクセスされ、データ値が処理されているときに、アクセスされるデータ値の破損の有無を判定するための破損ロジックとを有し、データ値の破損が確定されたとき、デバイスへの破損データ値の伝達を防ぐために、データ処理装置とデータ処理装置に接続されるデバイスとの間でデータ値を伝達するインタフェースを無効化するための破損信号を破損ロジックによって生成する。
付図に示される好ましい実施例にしたがって、本発明をさらに詳細に説明する。
本発明の実施例によるキャッシュ14’を図3に示す。キャッシュ14’は、パリティビットチェックを採用した4ウェイセット連想キャッシュ(4-way set associative cache)である。4つのキャッシュウェイが図示されているが、キャッシュウェイの数は任意である。4つのキャッシュウェイは、それぞれ複数のキャッシュラインを含んでいる。4つのキャッシュウェイのうち、いずれか特定のキャッシュラインに、特定アドレスに関連するデータ値(例えばワード)を格納することができる(すなわち、各セットは4つのキャッシュラインを含む)。キャッシュ14’が16Kバイトキャッシュの場合、各キャッシュウェイは4Kバイト(16Kバイトキャッシュ/4キャッシュウェイ)を格納する。各キャッシュラインが8つの32ビットワードを格納する場合、各キャッシュウェイ((4Kバイト/キャッシュウェイ)/(32バイト/キャッシュライン))について、32バイト/キャッシュライン(8ワード×4バイト/ワード)と、128キャッシュラインになる。したがって、セットの総数は128に等しい。
各データ値に関連するメモリアドレス50の内容も、図3に示される。メモリアドレス50は、TAG部60と、SET部70、WORD部80、BYTE部90からなる。メモリアドレス50のSET部70は、キャッシュ14’の中の特定セットを識別するために使用される。WORD部80はキャッシュラインの中で特定のワードを識別する。そのワードはSET部70によって識別されたものであり、プロセッサ12によるアクセスの対象となるものである。もし要求されるなら、BYTE部90はワード内の特定バイトが指定されるようにする。
ワードのメモリアドレス50を指定し、ワードを格納するキャッシュウェイを選択することによって、キャッシュ14’に格納されているワードを読むことができる(TAG部60は、ワードがどのキャッシュウェイに格納されているかを判別するために使用されるが、詳細は後述する)。そして、論理アドレス100(SET部70とWORD部80からなる)は、そのキャッシュウェイ内におけるワードの論理アドレスを指定する。
プロセッサ12から要求されるアドレスの新規ワードを格納するために、キャッシュ14’に格納されたワードを上書きすることができる。通常、キャッシュ14’にワードを格納するとき、例えば8ワード(32バイト)のキャッシュライン全体をフェッチして格納する「ラインフィル(linefill)」と呼ばれる手法が使われる。
TAGメモリ130における各エントリー110は、データメモリ140の対応キャッシュライン120と関連付けられ、それぞれのキャッシュラインは複数のデータ値、この例では8つのデータワードを含んでいる。各エントリー110に関してTAGセクション155に格納されたTAG部60に加えて、TAGメモリ130の内部には複数のステータスビットが含まれる。これらのステータスビットは、バリッドビット(valid bit)160と、ダーティービット(dirty bit)170と、パリティビット150である。
バリッドビット160は、対応するキャッシュラインに格納されているデータ値がまだ有効であるか否かを示すために使用される。したがって、バリッドビット160をセットすることは、対応するデータ値が有効であることを示し、逆に、バリッドビット160をクリアすることは、少なくとも一つのデータ値が有効でなくなっていることを示す。
対応するキャッシュラインに格納されているデータ値のどれかが、メモリ20に格納されているデータ値より新しいか否かを示すために、ダーティービット170が使用される。ダーティービット170の値はメモリのライトバック領域に関連する。プロセッサコアから出力され、キャッシュ14’に格納されたデータ値は直ちにメモリ20に送られて格納されるわけではなく、特定キャッシュラインのキャッシュ14’からの上書き時、すなわち「排出(evict)」時に、そのデータ値をメモリ20に送るべきか否かを決定する。したがって、ダーティービット170がセットされていないときは、対応のキャッシュラインに格納されているデータ値がメモリ20に格納されているデータ値に対応することを示し、これに対して、ダーティービット170がセットされているときは、対応のキャッシュラインに格納されている少なくとも一つのデータ値が更新され、その更新データ値がまだメモリ20に送られていないことを示す。
キャッシュラインのデータ値がキャッシュ14’に上書きされるとき、バリッドビット160とダーティービット170がデータ値の有効性およびダーティー性を示していれば、データ値はメモリ20へ出力され、格納される。データ値が有効でないまたはダーティーでなければ、データ値はメモリ20に戻す必要がなく、上書きすることができる。
パリティビット150は、格納時にエラーが発生したか否かを判定するためにキャッシュ14’からデータ値を検索するときに使用される。パリティビット150はキャッシュ14’にデータ値を格納するときに生成される。パリティビット150はキャッシュ14’における各エントリー110のTAGセクション155のために生成される。対応するキャッシュライン120に格納されたデータ値に対しても、パリティビットが生成され、付加される。この例では、キャッシュ14’は各サイクルにつき64ビットのアクセスが可能である。したがって、64ビットデータ値のそれぞれに対してパリティビットが生成、付加される。しかし、データワードごと、あるいは1サイクルでキャッシュ14’からアクセスされる標準データ量に関係なく、パリティビットを生成、付加することが可能である。TAGセクション155において論理「1」に設定されたビット数が奇数であれば、パリティ生成ロジック180で生成されるパリティビット160は「1」である。TAGセクション155において論理「1」に設定されたビット数が偶数であれば、パリティ生成ロジック180で生成されるパリティビット160は「0」にクリアされる。同様に、64ビットデータ値のうち論理「1」に設定されたビット数が奇数であれば、パリティ生成ロジック190で生成されるパリティビット160は「1」である。64ビットデータ値のうち論理「1」に設定されたビット数が偶数であれば、パリティ生成ロジック190で生成されるパリティビットは「0」である。パリティビットの生成に適した一般的な論理構造を図6にしたがって以下に説明する。データ値にアクセスするときのパリティビットの使用法を以下で詳細に説明する。
プロセッサ12によって書き込み動作が始まると、書き込み用データ値のメモリアドレス50がプロセッサアドレスバス200に送られる。メモリアドレス50はプロセッサアドレスバス200からキャッシュ14’に入り、各キャッシュウェイ内のTAGメモリ130がメモリアドレス50を受け取る。キャッシュコントローラ(図示せず)は所定のキャッシュ割り付け方針に基づいて、データ値を書き込むべきキャッシュウェイを決定する。選択されたウェイのTAGメモリ130は有効化され、メモリアドレス50のSET部70に基づいてTAGエントリーが選択される。TAG部60は、TAG部60の値に基づいてパリティビットを生成するパリティビット発生器180に設けられる。TAG部60とパリティビット発生器180から発生するパリティビットはTAGエントリーに格納される。パリティビット発生器180はキャッシュ14’の中に示されているが、パリティビットはキャッシュアクセスの早期に生成されてもよく、それゆえ、コアの別の場所にパリティビット発生器を設け、それから付加されるパリティビットをキャッシュ14’に供給することができる。
一方、各キャッシュウェイのデータメモリ140も、メモリアドレス50を受け取る。選択されたキャッシュウェイのデータメモリ140は有効化され、メモリアドレス50のSET部70に基づいて、対応するキャッシュラインが選択される。データ値はパリティビット発生器190に供給され、そのデータ値の値に基づいてパリティビット発生器からパリティビットが発生する。データ値と、パリティビット発生器190から発生したパリティビットはキャッシュラインに格納される。
データ値が書き込まれると、TAGエントリーのバリッドビットがセットされ、ダーティービットがクリアされる。
図4に示すように、プロセッサ12による読み出し動作が始まると、第一のプロセッササイクルにおいて、アクセスされるデータ値のメモリアドレス50がプロセッサアドレスバス200に送られる。メモリアドレス50は、プロセッサアドレスバス200からキャッシュ14’に渡される。各キャッシュウェイのTAGメモリ130はメモリアドレス50を受け取る。また、各キャッシュウェイのデータメモリ140も、メモリアドレス50を受け取る。
次のプロセッササイクルにおいて、TAGメモリ130は、メモリアドレス50のSET部70によって指定される位置に格納されているTAG値を関連の比較器210に出力する。そして、各比較器210は、そのキャッシュウェイからの出力TAG値と、プロセッサアドレスバス200上のメモリアドレス50のTAG部60とを比較する。また、データメモリ140は、アドレス50のSET部70、WORD部80、BYTE部90によって指定される位置に格納されているデータ値をマルチプレクサ210に出力する。
TAGメモリ130のいずれかのウェイから出力されたTAG値とアドレス50のTAG部60が一致すれば、この次のプロセッササイクル中に、対応するヒット信号(例えば、論理「1」)がキャッシュウェイセレクタ220に送られる。キャッシュウェイセレクタ220は、キャッシュコントローラ(図示せず)に対して経路230上でキャッシュヒットを表示し、マルチプレクサ210にセレクト信号を出力する。マルチプレクサ210は対応するデータ値を選択して、それをプロセッサデータバス240に出力する。プロセッサ12は、そのデータ値をプロセッサデータバス240から読み、キャッシュ14’からの出力データ値を用いて処理を開始することができる。
一方、TAGメモリ130の各ウェイから出力されるTAG値は対応するパリティビット発生器250に供給される。パリティビット発生器250は、TAGメモリ130のそのウェイから出力されるTAG値を取り込んでパリティビットを生成する。パリティビット発生器250で生成されたパリティビットは、比較器260によってTAGメモリ130からの出力パリティビットと比較される。出力されたパリティビットと生成されたパリティビットが同じでなければ(TAGメモリ130に格納されているTAG値にエラーがあることを示す)、アクセスされたデータ値が破損していることを示す信号が比較器260から経路265に送出される。TAG値が破損していれば、データメモリ140からアクセスされるデータ値は、アクセスされるはずであったデータ値である可能性が低い。簡潔にするため、パリティビット発生器250と比較器260は、1個しか図示されていない。しかし、この構成は各キャッシュウェイで繰り返される。代替的に、各キャッシュウェイからのTAG値をセレクタに供給し、このセレクタでウェイセレクタ220からのセレクト信号を受け取って、単一のパリティビット発生器250と比較器260に供給するべき適切なTAG値を選択することも可能である。
同様に、データメモリ140の各ウェイから出力されるデータ値は、対応するパリティビット発生器270に供給される。パリティビット発生器270は、データメモリ140のそのウェイから出力されるデータ値を取り込んでパリティビットを生成する。パリティビット発生器270で生成されたパリティビットは、比較器280によってデータメモリ140からの出力パリティビットと比較される。出力されたパリティビットと生成されたパリティビットが同じでなければ(データメモリ140に格納されているデータ値エラーがあることを示す)、アクセスされたデータ値が破損していることを示す破損信号が比較器280から経路285に送出される。ここでも簡潔にするため、パリティビット発生器270と比較器280は1個しか示されていない。しかし、この構成は各キャッシュウェイで繰り返される。代替的に、各キャッシュウェイからのデータ値をセレクタに供給し、このセレクタでウェイセレクタ220からのセレクト信号を受け取って、単一のパリティビット発生器270と比較器280に供給するべき適切なデータ値を選択することも可能である。
経路265、285はORゲート290で論理的に接続され、セレクタ300への入力を供給する。他のキャッシュウェイのために、セレクタ300はパリティビット発生器と比較器構成から入力を受ける。セレクタ300は、制御信号としてウェイセレクト信号をウェイセレクタ220から受け取る。選択されたウェイのためにアクセスされたTAG値またはデータ値が破損していれば、破損発生を示す破損信号が経路305に送出される。
図4に示すように、データ値破損の有無の判定に要する時間は、そのデータ値のアクセスに要する時間より長い。一般的な状況において、判定が実行されるのは最も早くても、プロセッサデータバス240上にデータ値(RDATA)が現れた直後のプロセッササイクルにおいてである。しかし、他の論理構成、他のエラー検出/訂正方法を使用する場合は、さらに長い時間を要するかもしれない。したがって、プロセッサ12が破損データ値を用いて既に処理動作を終えている可能性が高い。したがって、図5A、5Bにしたがって以下に詳しく説明するように、データ処理装置内における破損データ値の更なる拡散を防止する目的でコアと他のデバイスとのインタフェースを無効化するために、破損信号が利用される。
TAG値とTAG部60が一致しない場合、ミス信号(例えば論理「0」)がキャッシュウェイセレクタ220に送られる。キャッシュウェイセレクタ220は経路230に適切な信号を供給することによってキャッシュミスを表示し、データ値はメモリ20から読み出され、対応する生成パリティビットと共にキャッシュ14’に格納される。したがって、データ値がメモリ20から読み出され、データ値とTAG値がキャッシュに14’に格納されて、以前にキャッシュ14’に格納されていたデータ値とTAG値が上書きされるまでの遅延の後、データバス240を介してプロセッサ12にデータ値が供給される。上述のように、アクセス要求で表されるデータ値を含めたキャッシュライン全体をメモリから読み出してキャッシュ14’に格納することにより、以前にキャッシュ14’に格納されたキャッシュライン全体を上書きするという、全キャッシュラインのラインフィルを実行することが一般的であろう。
図4に関して述べたように、TAGメモリ130からTAG値にアクセスし、パリティビットを生成し、そのパリティビットを出力パリティビットと比較するために要する時間は一般にプロセッササイクルより長い。これは、TAG値とメモリアドレス50のTAG部60とを比較器210によって比較するために要する時間がおよそXOR_delay+(log(2N)*AND_delay)になることに基づく(ただし、Nは比較対象ビット数である)。一方、パリティ生成ロジック250によってパリティビットを生成し、そのパリティビットをTAGメモリ130から読み出されたパリティビットと比較するために要する時間はおよそlog(N)*XOR_delayである。したがって、次のプロセッササイクルで経路305に破損信号が現れるというのが最も確からしい。破損信号が後続サイクルで現れるから、データ値はプロセッサ12に供給され、プロセッサ12は破損データ値を用いて既に動作を実行しているかもしれない。
破損データ値がデータ処理装置内で伝達されないように、一つ以上の破損データ値が検出された場合に備えて、破損信号はプロセッサ12およびキャッシュ14’をデータ処理装置の残部から分離するために利用される。プロセッサ12およびキャッシュ14’の分離は、データ処理装置内の他のデバイスから破損データ値を隔離するために役立つ。これは、プロセッサコア10とデータ処理装置の残部との間のインタフェースまたはバス30を実質的に無効化することによって達成される。
図5A、5Bは、データ処理装置内における他のデバイスへの破損データ値の伝達を防止する2つの実施例を示す。
図5Aにおいて、データ処理装置は、キャッシュ14’およびBIU16’に接続されるプロセッサ12を備えたコア10’を含む。BIU16’はデータ値を受け取ることが可能であり、その後、それをバス30経由で一つ以上のセーフティークリティカルなデバイス40を含む他のデバイスに転送する。キャッシュ14’は経路305を介して破損信号をBIU16’に供給する。
BIU16’は、キャッシュ14’から破損データ値がアクセスされたことを示す破損信号を受け取って、BIU16’に供給されたデータ値のバス30を介しての転送を無効化することができる。バス30を介したデータ値の転送を無効化することによって、どのセーフティークリティカルなデバイス40にも破損データ値が到達しないようにすることができる。
図6A、6BはBIU16’の動作を示しており、図6Aは、破損信号を条件としてBIU16’への入力が発生する構成、図6Bは、破損信号を条件としてBIU16’からの出力が発生する構成である。
図6Aでは、キャッシュ14’からBIU16’へのBIU_CMD信号を、経路305上に現れる破損信号に基づいて条件付けする条件ロジック400が設けられる。条件ロジック400は個別のものとしてBIU16’に設けられているが、この条件ロジック400はBIU16’の一部として、またはキャッシュ14’の一部として設けることも可能である。
条件ロジック400は、破損信号がキャッシュ14’からアクセスされるデータ値に破損がないことを示すとき、BIU_CMD信号をBIU_CMD_M信号として供給し、そして、破損信号が破損発生を示すとき、IDLE信号をBIU_CMD_Mとして供給する。
図6Aの動作を説明するために、コードシーケンスの一例として、LDR r0、[r1]; STR r0[r5](すなわち、レジスタr1で示されるアドレスに格納されたデータ値をレジスタr0に読み込んで、次に、レジスタr0に格納されたデータ値をレジスタr5で示されるメモリアドレスに書き込む)を考える。LDRとSTR命令は処理開始の命令の例であるが、それら自体は処理結果としてデータ値を発生させることはない。レジスタr1で示されるアドレスに格納されたデータ値の読み出しがキャッシュヒット中に行われたが結果的にパリティチェックエラーになり、レジスタr5で示されたメモリアドレスがセーフティークリティカルな周辺デバイスを指していると仮定する。
したがって、第一のアクセスまたはプロセッササイクルにおいて、LDR命令に呼応して、CACHE_CMDバスは「読み出し」コマンドを運び、CACHE_ADDバスはレジスタr1で示されるアドレスを運ぶ。
第二サイクルにおいて、キャッシュ14’はキャッシュヒットを示すキャッシュヒット信号を返送し、データ値がキャッシュ14’から読み出されてレジスタr0に格納される。第二サイクルにおいて更に、STR命令に呼応して、CACHE_CMDバスは「書き込み」コマンドを運び、CACHE_ADDバスはレジスタr5で示されるアドレスを運ぶ。
第三サイクルにおいて、パリティチェックができなかったため、キャッシュ14’はキャッシュ14’からアクセスされたデータ値の破損を示す破損信号を返送する。破損信号の発行により、BIU_CMD_M信号はBIU16’がアイドル状態を維持していることを示す。第三サイクルでは更に、キャッシュ14’はレジスタr5で示されるアドレスのレジスタr0の内容を格納しようとしたときに、このアドレスはセーフティークリティカルな周辺デバイスのために予約されているのでキャッシュミスが発生したことを示すキャッシュミス信号を返送する。
したがって、第四サイクルにおいて、BIU_CMDバスは「書き込み」コマンドを運び、BIU_ADDバスはレジスタr5で示されるアドレスを運ぶ。しかし、条件ロジック400がアクセスされたデータ値の破損を示す破損信号を受け取っているので、BIU_CMD_Mバスは「書き込み」コマンドの転送に失敗する。したがって、BIU_CMD_Mバスは、破損データ値のBIU16’への送出を防止する「アイドル」コマンドを運ぶ。
BIU16’による破損データ値の受け取りを防止することにより、セーフティークリティカルな周辺デバイスによる破損データ値の受け取りが確実に防止されるため、セーフティークリティカルな周辺デバイスにおいて破損データ値に起因する状態変化は起こり得ない。BIU_CMDバス上に送出される「書き込み」コマンドに先立って破損信号を生成することにより、破損データ値がBIU16’に伝達されないことが保証される。BIU16’による破損データ値の受け取りを防止する場合、BIU16’が破損データ値を受け取るサイクルより前の任意の時点で破損信号を生成することができる。
図6Bにおいて、BIU16’から発生してバス30に送出されるMEM_CMD信号を経路305経由の破損信号に基づいて条件付けする条件ロジック410が設けられる。条件ロジック410は個別のものとしてBIU16’に設けられているが、この条件ロジック400はBIU16’の一部として設けることも可能である。
条件ロジック410は、破損信号がキャッシュ14’からアクセスされるデータ値に破損がないことを示すとき、MEM_CMD信号をMEM_CMD_M信号として供給し、そして、破損信号が破損発生を示すとき、IDLE信号をMEM_CMD_Mとして供給する。
図6Bの動作を説明するために、図6Aの場合と同じコードシーケンスを考える。
第五サイクルにおいて、保留中のメモリ動作がないので(MEM_OP_DONE経路のステータスで示されるように)、BIU16’は、「書き込み」コマンドを運ぶようにMEM_CMDバスに命令するとともに、レジスタr5で示されるアドレスを運ぶようにMEM_ADDバスに命令し、メモリ動作が保留中であることを示す信号がMEM_OP_DONE経路上でアサートされる。バス30を介したアクセスはプロセッサ12、キャッシュ14’、BIU16’の相互間のアクセスよりかなり遅いので、メモリ動作またはアクセスが保留中であることを示す信号は何サイクルかの時間にわたってMEM_OP_DONE経路上に留まっていてもよい。メモリ動作が保留中であるなら、BIU16’は、上記に示す信号がアサートされる前にその動作が完了するまで待つ。
しかし、MEM_OP_DONE経路に現れる信号の遷移点で、条件ロジック410がアクセスされたデータ値の破損を示す破損信号を受け取っているので、MEM_CMD_Mバスは「書き込み」コマンドの転送を行なわない。MEM_OP_DONE経路を介して供給される信号の遷移上に破損信号があるかどうかをチェックすることは、メモリの動作やアクセスが行なわれている間、バス30が禁止されることを防止するのに助けになる。アクセス保留中にバス30を禁止することが可能であるが、それによってバス30がハングアップすることがあって望ましくない。
BIU16’の出力に条件ロジック410を設けると、破損信号の生成後の時間が更に長くなる。この例では、破損したデータ値の初期アクセスに続く第五サイクルの始めまで、破損信号の発生が可能となる。より一般にいえば、BIU16’からの破損データ値の出力を防止する場合、BIU16’により破損データ値が転送されることになるサイクルより早い任意の時点で破損信号を生成することができる。
BIU16’からの破損データ値の転送を防止することにより、セーフティークリティカルな周辺デバイスによる破損データ値の受け取りを確実に防止できるため、セーフティークリティカルな周辺デバイスにおいて破損データ値に起因する状態変化は起こり得ない。MEM_CMDバス上に送出される「書き込み」コマンドに先立って破損信号を生成することにより、破損データ値がセーフティークリティカルな周辺デバイスに伝達されないことが保証される。
破損信号は更に、経路305経由でシステムリセットコントローラ310に入力される。システムリセットコントローラ310は、キャッシュ14’から破損データ値がアクセスされたことを示す破損信号を受け取ると、図7で示されるようにコア10’を再初期化させる。この例ではコア10’だけが再初期化されるが、データ処理装置の全体または一部をリセットするようにシステムリセットコントローラ310を構成することが可能である。
システムリセットコントローラ310は、プロセッサ12から読み出し可能なステータスレジスタ(RESET_BY_Q_STATE)を備えている。システムリセットコントローラ310は、経路305経由で破損信号を受け取ると、次のサイクルから複数サイクル期間(この例では3サイクル)CORE_RESET信号をアサートし、ステータスレジスタをセットする。プロセッサ12は、CORE_RESET信号に応答して、リセットプロセスを開始する。第六サイクルの後、プロセッサ12はリセットプロセスを終了してリセットベクトルから命令を読み込む。この例では、リセットベクトルから読み込まれた命令により、プロセッサ12はステータスレジスタを読み出して、リセットがパリティエラーに起因するものか否かを判定する。
図5Bにおいて、データ処理装置は、キャッシュ14’およびBIU16に接続されるプロセッサ12を備えたコア10"を含む。BIU16はデータ値を受け取り、その後、それをバス30経由で一つ以上のセーフティークリティカルなデバイス40’を含む他のデバイスに転送することができる。キャッシュ14’は、それぞれのセーフティークリティカルなデバイス40’に破損信号を経路305経由で供給する。
セーフティークリティカルな各デバイス40’は、破損データ値がキャッシュ14’からアクセスされたことを示す破損信号を受け取ったとき、BIU16からバス30経由で供給されるデータ値を受け取るインタフェースを無効化することができる。図6A、6Bによる説明と同様の方法をセーフティークリティカルなデバイス40’に利用することが可能である。インタフェースを無効化することにより、破損データ値がバス30経由でセーフティークリティカルな各デバイス40’に入るのを防止することができる。
上述の構成では、破損信号は、経路305を介してシステムリセットコントローラ310にも入力される。システムリセットコントローラ310は、破損データ値がキャッシュ14からアクセスされたことを示す破損信号を受け取ると、コア10’を再初期化させる。
したがって、いずれの実施例でも、キャッシュ14’からデータ値にアクセスすることが可能である。そのアクセスされたデータ値は、プロセッサ12によって通常の方法で処理することができる。その処理と並列に、アクセスされたデータ値破損の有無をキャッシュ14’内のロジックで判定することで、クリティカルパスへの影響がなくなり、プロセッサ12の標準動作速度は低下しない。その判定が終わると、コアとセーフティークリティカルなデバイスとのインタフェースを分離することができる。インタフェースの分離により、セーフティークリティカルなデバイスへの破損データ値の伝達が防止され、破損データ値に起因するセーフティークリティカルなデバイスの状態変化が防止される。
図8は発生器180、190、250、270などのパリティビット発生器で使用されるロジック構成を示す。パリティビットを発生させるためには、そのパリティビットに関連する所要データ(例えば、TAG値、バイト、ワード、キャッシュライン)のビットがXOR演算される。この例では、データは8ビットを含むが、8ビット以上の場合には、さらに多くのXORゲート段を設けてパリティビットを発生することができる。所要データの連続ビットは2入力XORゲートの入力に供給される。これらのXORゲートの出力は2入力XORゲート等の入力に順次供給され、それらが結合されて単一のXORゲートから単一の出力が得られ、それがパリティビットになる。
この実施例は、破損データ値を検出するためのパリティビット法を用いて記述したが、他のエラー検出方法を利用することも可能である。
上の実施例では、TAG値およびデータ値に適用されるエラー検出方法について説明したが、これらの方法をTAG値とデータ値の両方に適用する必要はなく、単純にいずれか一方に適用することができる。
上の実施例は、BIUからのデータ値の転送防止、またはセーフティークリティカルなデバイスによるデータ値の受け取り防止のために破損信号の利用を想定しているが、データ値の転送を防止するようにBIUを構成し、データ値を受け取らないようにセーフティークリティカルなデバイスを構成することが可能である。
上の実施例では、破損データ値の検出時にシステムリセットコントローラによるコアのリセットを説明したが、代わりに、破損信号をプロセッサ12に渡し、それがプロセッサ12で認識されるまでホールドすることもできる。検出された後、プロセッサ12はハンドラルーチン(handler routine)を有効化する。そして、ハンドラルーチンは発生した破損の修正を試みる。明確に、パリティチェックなどのエラー検出情報より優先してエラー訂正情報が格納される場合には、ハンドラルーチンを用いた破損修正が増える傾向がある。破損を直ちに修正することができないときは、ハンドラルーチンはコアをリセットすることができる。
以上の説明から明らかなように、本発明の実施例は、破損データ値に起因する周辺デバイスの状態変化を確実に防止するとともに、通常動作におけるプロセッサコアの性能を維持することができるように、破損データ値を扱う改良された方法を提供する。
ここでは特定の実施例について説明したが、本発明はそれに限定されることなく、発明の範囲内において多くの変更、追加が可能である。例えば、発明の範囲から逸脱することなく、独立クレームの特徴と従属クレームの特徴の様々な組み合わせが可能である。
Aは、データ処理装置を示す図。Bは、スタティックメモリセルの構成を示す図。 図1のプロセッサコアとインタフェースを更に詳しく示す図。 本発明の実施例によるキャッシュを示す図。 図3のキャッシュの動作を示すタイムチャート。 Aは、本発明の実施例によるデータ処理装置を示す図。Bは、本発明の別の実施例によるデータ処理装置で示す図。 図5AのBIUの動作を示す図。 図5AのBIUの動作を示す図。 システムリセットコントローラの動作を示す図。 パリティビット発生器の論理構成を示す図。
符号の説明
10 コア
12 プロセッサ
14 L1キャッシュ
16 BIU
20 メモリ
30 バス
40 デバイス
50 メモリアドレス
60 TAG部
70 SET部
80 WORD部
90 BYTE部
130 TAGメモリ
140 DATAメモリ
180 パリティー発生器
190 パリティー発生器
200 プロセッサアドレスバス
220 ウェイセレクタ
250 パリティー発生器

Claims (26)

  1. 破損データ値を扱う方法であって、
    a)データ処理装置内のメモリのデータ値にアクセスするステップと、
    b)データ処理装置内でデータ値の処理を開始するステップと、
    c)ステップa)、ステップb)の少なくとも一つが実行中にアクセスされたデータ値が破損しているか否かを判定するステップと、
    d)データ値が破損していると判定されたとき、デバイスへの破損データ値の伝達を防止するために、データ処理装置とデータ処理装置に接続されるデバイスとの間でデータ値を伝達するために使用されるインタフェースを無効にするステップとを含む方法。
  2. 請求項1において、ステップd)がデータ処理装置に接続されるデバイスへの破損データ値の転送を防止するステップを含む方法。
  3. 請求項2において、データ処理装置がデータ処理装置とデバイスの間でデータ値を転送するためのインタフェースユニットを含み、そして、ステップd)がデバイスへの破損データ値の転送を防止するためにインタフェースユニットの動作を禁止するステップを含む方法。
  4. 請求項1において、ステップd)がデータ処理装置に接続されるデバイスによる破損データ値の受け取りを防止するステップを含む方法。
  5. 請求項4において、デバイスがデータ処理装置からデータ値を取り込むためのインタフェースロジックを含み、そして、ステップc)が、デバイスへの破損データ値の取り込みを防止するためにインタフェースロジックの動作を禁止するステップを含む方法。
  6. 請求項1において、破損データ値がアクセスされたデータ値を含む方法。
  7. 請求項1において、ステップb)が少なくとも一つの結果データ値を生成するためにデータ処理装置内におけるデータ値処理を開始するステップを含み、そして、破損データ値が少なくとも一つの結果データ値を含む方法。
  8. 請求項1において、ステップa)が第一のプロセッササイクルでメモリ内のデータ値にアクセスするステップを含み、そして、ステップb)が第一のプロセッササイクルに続くプロセッササイクルでデータ値の処理を開始するステップを含む方法。
  9. 請求項1において、ステップc)での判定が第一のプロセッササイクルに続くプロセッササイクルで完了する方法。
  10. 請求項1において更に、
    e)アクセスされたデータ値の破損がステップc)で確定された後、データ処理装置を再初期化するステップを含む方法。
  11. 請求項10において更に、
    f)データ処理装置の再初期化処理に続いて、インタフェースを有効化するステップを含む方法。
  12. 請求項1において、デバイスがバスを介してデータ処理装置に接続される方法。
  13. 請求項1において、デバイスがセーフティークリティカルなデバイスである方法。
  14. 破損データ値を扱うためのデータ処理装置であって、
    アクセス可能なデータ値を含むメモリと、
    データ値の処理を開始するためのプロセッサと、
    少なくとも一つのデータ値がアクセスされ、データ値が処理されているときに、アクセスされるデータ値の破損の有無を判定するための破損ロジックとを有し、データ値の破損が確定されたとき、デバイスへの破損データ値の伝達を防ぐために、データ処理装置とデータ処理装置に接続されるデバイスとの間でデータ値を伝達するインタフェースを無効化するための破損信号を破損ロジックによって生成するデータ処理装置。
  15. 請求項14において、デバイスへの破損データ値の転送を破損ロジックによって防止することができるデータ処理装置。
  16. 請求項15において、データ処理装置とデバイス間でデータ値を転送するためのインタフェースユニットを含み、デバイスへの破損データ値の転送を防止するために破損信号によってインタフェースユニットの動作を禁止するデータ処理装置。
  17. 請求項14において、データ処理装置に接続されるデバイスによる破損データ値の受け取りを破損ロジックによって防止することができるデータ処理装置。
  18. 請求項17において、デバイスを有し、デバイスがデータ処理装置からのデータ値を受け取るためのインタフェースロジックを含み、デバイスによる破損データ値の受け取りを防止するために破損信号によってインタフェースロジックの動作を禁止するデータ処理装置。
  19. 請求項14において、破損データ値がアクセスされたデータ値を含むデータ処理装置。
  20. 請求項14において、少なくとも一つの結果データ値を生成するためにプロセッサによってデータ値の処理を開始することが可能であり、そして、破損データ値が少なくとも一つの結果データ値を含むデータ処理装置。
  21. 請求項14において、第一のプロセッササイクルでメモリ内のデータ値にアクセスし、第一のプロセッササイクルに続くプロセッササイクルでデータ値の処理を開始するデータ処理装置。
  22. 請求項14において、アクセスされたデータ値が破損しているか否かを、第一のプロセッササイクルに続くプロセッササイクルで破損ロジックによって判定することができるデータ処理装置。
  23. 請求項14において更に、
    破損信号に応答してデータ処理装置を再初期化するための再初期化ロジックを有するデータ処理装置。
  24. 請求項23において、データ処理装置の再初期化に続いて、再初期化ロジックによってインタフェースを有効化することができるデータ処理装置。
  25. 請求項14において、バスを介してデバイスと接続されるデータ処理装置。
  26. 請求項14において、デバイスがセーフティークリティカルなデバイスであるデータ処理装置。
JP2004276275A 2003-09-26 2004-09-24 破損データ値を処理するためのデータ処理装置と方法 Active JP4395425B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
GB0322635A GB2406404C (en) 2003-09-26 2003-09-26 Data processing apparatus and method for handling corrupted data values

Publications (2)

Publication Number Publication Date
JP2005108222A true JP2005108222A (ja) 2005-04-21
JP4395425B2 JP4395425B2 (ja) 2010-01-06

Family

ID=29286940

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004276275A Active JP4395425B2 (ja) 2003-09-26 2004-09-24 破損データ値を処理するためのデータ処理装置と方法

Country Status (3)

Country Link
US (1) US7269759B2 (ja)
JP (1) JP4395425B2 (ja)
GB (1) GB2406404C (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8209565B2 (en) 2007-12-27 2012-06-26 Renesas Electronics Corporation Data processing device and bus access control method therein

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7672222B2 (en) 2004-01-12 2010-03-02 Hewlett-Packard Development Company, L.P. Link failures
US7613958B2 (en) * 2004-01-12 2009-11-03 Hewlett-Packard Development Company, L.P. Error detection in a system having coupled channels
US7606253B2 (en) * 2004-01-12 2009-10-20 Hewlett-Packard Development Company, L.P. Successful transactions
US8427490B1 (en) 2004-05-14 2013-04-23 Nvidia Corporation Validating a graphics pipeline using pre-determined schedules
US7721159B2 (en) * 2005-02-11 2010-05-18 Hewlett-Packard Development Company, L.P. Passing debug information
US7461321B2 (en) * 2004-05-25 2008-12-02 Hewlett-Packard Development Company, L.P. Error detection
US7624213B2 (en) * 2005-02-11 2009-11-24 Hewlett-Packard Development Company, L.P. Passing identification information
US8624906B2 (en) * 2004-09-29 2014-01-07 Nvidia Corporation Method and system for non stalling pipeline instruction fetching from memory
US8424012B1 (en) * 2004-11-15 2013-04-16 Nvidia Corporation Context switching on a video processor having a scalar execution unit and a vector execution unit
US7757282B2 (en) * 2005-05-20 2010-07-13 Microsoft Corporation System and method for distinguishing safe and potentially unsafe data during runtime processing
US9092170B1 (en) 2005-10-18 2015-07-28 Nvidia Corporation Method and system for implementing fragment operation processing across a graphics bus interconnect
US8683126B2 (en) 2007-07-30 2014-03-25 Nvidia Corporation Optimal use of buffer space by a storage controller which writes retrieved data directly to a memory
US8659601B1 (en) 2007-08-15 2014-02-25 Nvidia Corporation Program sequencer for generating indeterminant length shader programs for a graphics processor
US8411096B1 (en) 2007-08-15 2013-04-02 Nvidia Corporation Shader program instruction fetch
US9024957B1 (en) 2007-08-15 2015-05-05 Nvidia Corporation Address independent shader program loading
US8698819B1 (en) 2007-08-15 2014-04-15 Nvidia Corporation Software assisted shader merging
US20090089510A1 (en) * 2007-09-28 2009-04-02 Mips Technologies, Inc. Speculative read in a cache coherent microprocessor
US8392663B2 (en) * 2007-12-12 2013-03-05 Mips Technologies, Inc. Coherent instruction cache utilizing cache-op execution resources
US9064333B2 (en) * 2007-12-17 2015-06-23 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US8780123B2 (en) 2007-12-17 2014-07-15 Nvidia Corporation Interrupt handling techniques in the rasterizer of a GPU
US20090248988A1 (en) * 2008-03-28 2009-10-01 Mips Technologies, Inc. Mechanism for maintaining consistency of data written by io devices
US8923385B2 (en) 2008-05-01 2014-12-30 Nvidia Corporation Rewind-enabled hardware encoder
US8681861B2 (en) 2008-05-01 2014-03-25 Nvidia Corporation Multistandard hardware video encoder
US20100017670A1 (en) * 2008-07-21 2010-01-21 International Business Machines Corporation Automatic Data Recovery System
US8489851B2 (en) 2008-12-11 2013-07-16 Nvidia Corporation Processing of read requests in a memory controller using pre-fetch mechanism
US10241856B2 (en) * 2016-09-09 2019-03-26 Oracle International Corporation Memory quarantine
JP7235591B2 (ja) * 2019-05-28 2023-03-08 株式会社東芝 情報処理回路及び情報処理方法

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS56145434A (en) * 1980-04-11 1981-11-12 Panafacom Ltd Error processing system of microcomputer
US4456996A (en) * 1981-12-02 1984-06-26 Bell Telephone Laboratories, Incorporated Parallel/series error correction circuit
US4625273A (en) * 1983-08-30 1986-11-25 Amdahl Corporation Apparatus for fast data storage with deferred error reporting
US6272651B1 (en) * 1998-08-17 2001-08-07 Compaq Computer Corp. System and method for improving processor read latency in a system employing error checking and correction
US6622267B1 (en) * 1999-12-08 2003-09-16 Intel Corporation Method and apparatus for detecting multi-hit errors in cache
US6647516B1 (en) * 2000-04-19 2003-11-11 Hewlett-Packard Development Company, L.P. Fault tolerant data storage systems and methods of operating a fault tolerant data storage system
US6594785B1 (en) * 2000-04-28 2003-07-15 Unisys Corporation System and method for fault handling and recovery in a multi-processing system having hardware resources shared between multiple partitions
US6968427B1 (en) * 2002-12-02 2005-11-22 Advanced Micro Devices, Inc. Built-in self test circuit for testing cache tag array and compare logic
US7080288B2 (en) * 2003-04-28 2006-07-18 International Business Machines Corporation Method and apparatus for interface failure survivability using error correction
US20050091383A1 (en) * 2003-10-14 2005-04-28 International Business Machines Corporation Efficient zero copy transfer of messages between nodes in a data processing system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8209565B2 (en) 2007-12-27 2012-06-26 Renesas Electronics Corporation Data processing device and bus access control method therein

Also Published As

Publication number Publication date
US20050071722A1 (en) 2005-03-31
JP4395425B2 (ja) 2010-01-06
GB2406404C (en) 2011-11-02
GB2406404A (en) 2005-03-30
US7269759B2 (en) 2007-09-11
GB0322635D0 (en) 2003-10-29
GB2406404B (en) 2006-07-12

Similar Documents

Publication Publication Date Title
JP4395425B2 (ja) 破損データ値を処理するためのデータ処理装置と方法
EP0706128B1 (en) Fast comparison method and apparatus for errors corrected cache tags
US6772383B1 (en) Combined tag and data ECC for enhanced soft error recovery from cache tag errors
KR101319670B1 (ko) 캐시 메모리 시스템 및 캐시 메모리 시스템의 제어 방법
US5778171A (en) Processor interface chip for dual-microprocessor processor system
US6802039B1 (en) Using hardware or firmware for cache tag and data ECC soft error correction
US7987384B2 (en) Method, system, and computer program product for handling errors in a cache without processor core recovery
US8621336B2 (en) Error correction in a set associative storage device
US8190973B2 (en) Apparatus and method for error correction of data values in a storage device
US7447844B2 (en) Data processing system, processor and method of data processing in which local memory access requests are serviced on a fixed schedule
US8650437B2 (en) Computer system and method of protection for the system's marking store
US20070240021A1 (en) Method, system and program product for autonomous error recovery for memory devices
US5381544A (en) Copyback memory system and cache memory controller which permits access while error recovery operations are performed
US7395489B2 (en) Control system and memory control method executing a detection of an error in a formation in parallel with reading operation
EP1444580B1 (en) Method and apparatus for fixing bit errors encountered during cache references without blocking
JPH09146836A (ja) キャッシュ索引の障害訂正装置
JPS6342294B2 (ja)
EP0596144A1 (en) Hierarchical memory system for microcode and means for correcting errors in the microcode
JP3494072B2 (ja) キャッシュメモリ及びその障害検出方法
US20020188810A1 (en) Cache memory control apparaus and processor
JPH06149685A (ja) メモリエラー回復装置
JP3168489B2 (ja) Tlb制御方法及び装置
JPH02297235A (ja) メモリデータ保護回路
JPH09325912A (ja) 情報処理装置
JPH04233052A (ja) 二重化メモリ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20061110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090529

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090826

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20091006

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20091019

R150 Certificate of patent or registration of utility model

Ref document number: 4395425

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121023

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131023

Year of fee payment: 4

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250