(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-11
(45)【発行日】2024-01-19
(54)【発明の名称】コモンモード障害信号に応じたメモリスキャン動作
(51)【国際特許分類】
G06F 11/22 20060101AFI20240112BHJP
G06F 11/16 20060101ALI20240112BHJP
G11C 29/44 20060101ALI20240112BHJP
【FI】
G06F11/22 607Z
G06F11/16 629
G11C29/44
(21)【出願番号】P 2021500733
(86)(22)【出願日】2019-06-06
(86)【国際出願番号】 GB2019051570
(87)【国際公開番号】W WO2020016550
(87)【国際公開日】2020-01-23
【審査請求日】2022-05-30
(32)【優先日】2018-07-19
(33)【優先権主張国・地域又は機関】GB
(73)【特許権者】
【識別番号】500395107
【氏名又は名称】アーム・リミテッド
(74)【代理人】
【識別番号】110000855
【氏名又は名称】弁理士法人浅村特許事務所
(72)【発明者】
【氏名】メリアック、ミロセー
(72)【発明者】
【氏名】エーザー、エムレ
(72)【発明者】
【氏名】イターブ、グザビエ
(72)【発明者】
【氏名】ベヌ、バラジ
(72)【発明者】
【氏名】ダス、シッダールタ
【審査官】坂東 博司
(56)【参考文献】
【文献】米国特許出願公開第2016/0283314(US,A1)
【文献】米国特許出願公開第2004/0199813(US,A1)
【文献】特開2006-164277(JP,A)
【文献】特表2009-516277(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 11/22
G06F 11/16
G11C 29/44
(57)【特許請求の範囲】
【請求項1】
ロックステップ方式で冗長的にデータ処理を実行するための複数の冗長処理ユニットと、
前記複数の冗長処理ユニットのそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出するためのコモンモード障害検出回路と、
前記複数の冗長処理ユニット間で共有されるメモリと、
前記メモリの少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するためのメモリチェック回路であって、
前記メモリチェック回路が、前記コモンモード障害検出回路によって生成され、潜在的なコモンモード障害を示す前記イベントが検出されたことを示すコモンモード障害信号に応じて前記メモリスキャン動作を実行するように構成される、メモリチェック回路と
を備える、装置。
【請求項2】
前記メモリスキャン動作において、前記メモリチェック回路が、前記メモリの少なくとも一部のどのメモリロケーションがエラーのあるメモリロケーションであるかを示すエラーマップを生成するように構成される、請求項1に記載の装置。
【請求項3】
前記メモリチェック回路が、前記エラーマップによって示される前記エラーのあるメモリロケーションの数または分布に応じて、エラー処理応答をトリガするためのエラー報告信号を生成するか否かを判定するように構成される、請求項2に記載の装置。
【請求項4】
前記メモリチェック回路が、前記メモリ全体に対して前記メモリスキャン動作を実行するように構成される、請求項1から3のいずれか一項に記載の装置。
【請求項5】
前記メモリチェック回路が、前記メモリの限られた部分に対して前記メモリスキャン動作を実行するように構成される、請求項1から3のいずれか一項に記載の装置。
【請求項6】
前記メモリチェック回路が、前記メモリの非クリティカル部分に対して前記メモリスキャン動作を実行する前に、前記メモリのクリティカル部分に対して前記メモリスキャン動作を実行するように構成される、請求項1から3のいずれか一項に記載の装置。
【請求項7】
前記メモリチェック回路が、
前記メモリの前記クリティカル部分に対応するクリティカル部分エラー報告信号と、
前記メモリの前記非クリティカル部分に対応する非クリティカル部分エラー報告信号と
を生成するように構成される、請求項
6に記載の装置。
【請求項8】
前記メモリのメモリロケーションのどのブロックが使用中であるかを追跡するための使用状況追跡回路を備え、
前記メモリチェック回路が、前記使用状況追跡回路によって使用中であると示されるメモリロケーションの前記ブロックに対して前記メモリスキャン動作を実行するように構成される、請求項1から3のいずれか一項に記載の装置。
【請求項9】
前記イベントの検出に応じて、前記コモンモード障害検出回路が、障害応答アクションを実行するように前記冗長処理ユニットをトリガするように構成される、請求項1から8のいずれか一項に記載の装置。
【請求項10】
前記冗長処理ユニットが、前記コモンモード障害検出回路による前記イベントの検出後、前記メモリチェック回路による前記メモリスキャン動作の完了の前に処理を再開するように構成される、請求項1から9のいずれか一項に記載の装置。
【請求項11】
前記冗長処理ユニットのうちの1つが、前記メモリスキャン動作の残りの部分においてまだチェックされていないメモリロケーションのターゲットブロックへのメモリアクセスを要求することに応じて、前記メモリチェック回路が、メモリロケーションの前記ターゲットブロックでエラーがないかチェックされるまで、前記メモリアクセスを停止するように構成される、請求項10に記載の装置。
【請求項12】
前記メモリチェック回路が、メモリロケーションのどのブロックが前記メモリスキャン動作においてエラーがないかチェック済みであるかを示す進行状況指標を維持するように構成される、請求項11に記載の装置。
【請求項13】
前記コモンモード障害検出回路が、前記複数の冗長処理ユニットおよび前記メモリの間で共有される共通信号線に関連付けられた少なくとも1つの異常検出回路を備え、前記イベントが、前記少なくとも1つの異常検出回路によって検出された、前記共通信号線上の信号における異常を含む、請求項1から12のいずれか一項に記載の装置。
【請求項14】
前記複数の冗長処理ユニットが、前記冗長処理ユニットのうちの1つの冗長処理ユニットで実行される所与の処理動作と前記冗長処理ユニットのうちの別の冗長処理ユニットで実行される前記所与の処理動作との間に時間遅延を伴って動作するように構成され、
前記コモンモード障害検出回路が、前記冗長処理ユニットによって生成された処理結果において相違が検出されたときに、前記イベントを検出するための比較回路を備える、請求項1から13のいずれか一項に記載の装置。
【請求項15】
前記メモリスキャン動作が、エラーがないかチェックされる所与のメモリロケーションについて、前記所与のメモリロケーションに関連付けられた格納されたエラー検出符号を、前記所与のメモリロケーションに格納されたデータ値に基づいて計算された、計算されたエラー検出符号と比較することを含む、請求項1から14のいずれか一項に記載の装置。
【請求項16】
前記メモリがキャッシュを備える、請求項1から15のいずれか一項に記載の装置。
【請求項17】
前記メモリがスクラッチパッドメモリを備える、請求項1から16のいずれか一項に記載の装置。
【請求項18】
前記メモリがシステムメモリを備える、請求項1から17のいずれか一項に記載の装置。
【請求項19】
ロックステップ方式で冗長的にデータ処理を実行するための複数の手段と、
データ処理を実行するための前記複数の手段のそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出するための手段と、
データ処理を実行するための前記複数の手段間で共有され、データを格納するためのメモリ手段と、
前記メモリ手段の少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するためのメモリチェックのための手段であって、
メモリチェックのための前記手段が、検出するための前記手段によって生成され、潜在的なコモンモード障害を示す上記イベントが検出されたことを示すコモンモード障害信号に応じて前記メモリスキャン動作を実行するように構成される、メモリチェックのための手段と
を備える、装置。
【請求項20】
複数の冗長処理ユニットを使用してロックステップ方式で冗長的にデータ処理を実行することと、
前記複数の冗長処理ユニットのそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出することと、
前記イベントの検出に応じて、コモンモード障害信号を生成することと、
前記コモンモード障害信号に応じて、前記複数の冗長処理ユニット間で共有されるメモリの少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するようにメモリチェック回路をトリガすることと
を含む、データ処理方法。
【発明の詳細な説明】
【技術分野】
【0001】
本技法は、データ処理の分野に関する。
【背景技術】
【0002】
データ処理システムは、誤った動作につながり得る特定のランダムに発生する障害に対して脆弱性を有し得る。例えば、宇宙線または他の粒子がデータ処理装置のストレージ要素に衝突して格納されたデータのビットの状態を反転させると、処理のエラーにつながり得るシングル・イベント・アップセットが発生し得る。一部の応用分野では、このようなエラーを少なくとも一定の割合検出できることが重要な場合がある。機能安全規格が、特定のレベルの機能安全分類を満たすために保証されなければならない特定のレベルの機能安全を定義することができる。これは、セーフティクリティカルな(例えば、自動車分野における)用途や、障害によって莫大な経済的損失が発生する用途(例えば、宇宙ミッション)に特に役立つ。
【0003】
機能安全を達成するための1つの手法は、2つ以上の冗長処理ユニットを設けて、ロックステップ方式で冗長的にデータ処理を実行することであり得る。例えば、装置のプロセッサコアを二重化または三重化して、冗長ユニットのそれぞれに実質的に同じデータ処理を実行させることができる。コンパレータが、冗長ユニットのそれぞれで実行された対応する処理動作の出力を比較し、出力間に相違がある場合にエラーを検出できる。これは、例えば、冗長処理ユニットのうちの1つのストレージ要素における信号イベントアップセットによって引き起こされるエラーを検出するのに役立ち得る。
【発明の概要】
【0004】
少なくともいくつかの例は、ロックステップ方式で冗長的にデータ処理を実行するための複数の冗長処理ユニットと、複数の冗長処理ユニットのそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出するためのコモンモード障害検出回路と、複数の冗長処理ユニット間で共有されるメモリと、メモリの少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するためのメモリチェック回路であって、メモリチェック回路が、コモンモード障害検出回路によって生成され、潜在的なコモンモード障害を示す上記イベントが検出されたことを示すコモンモード障害信号に応じてメモリスキャン動作を実行するように構成される、メモリチェック回路とを備える、装置を提供する。
【0005】
少なくともいくつかの例は、ロックステップ方式で冗長的にデータ処理を実行するための複数の手段と、データ処理を実行するための複数の手段のそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出するための手段と、データ処理を実行するための複数の手段間で共有され、データを格納するためのメモリ手段と、メモリ手段の少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するためのメモリチェックのための手段であって、メモリチェックのための手段が、検出するための手段によって生成され、潜在的なコモンモード障害を示す上記イベントが検出されたことを示すコモンモード障害信号に応じてメモリスキャン動作を実行するように構成される、メモリチェックのための手段とを備える、装置を提供する。
【0006】
少なくともいくつかの例は、複数の冗長処理ユニットを使用してロックステップ方式で冗長的にデータ処理を実行することと、複数の冗長処理ユニットのそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出することと、イベントの検出に応じて、コモンモード障害信号を生成することと、コモンモード障害信号に応じて、複数の冗長処理ユニット間で共有されるメモリの少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するようにメモリチェック回路をトリガすることとを含む、データ処理方法を提供する。
【0007】
本技法のさらなる態様、特徴、および利点は、添付の図面と併せて読まれるべき以下の例の説明から明らかになるはずである。
【図面の簡単な説明】
【0008】
【
図1】いくつかの冗長処理ユニットと、メモリに対してメモリスキャン動作を実行するためのメモリチェック回路とを有する装置の例を示す概略図である。
【
図2】コモンモード障害検出信号に応じてメモリに対するメモリスキャンに追従するためのメモリチェック回路の第1の例を示す図である。
【
図3】メモリチェックがメモリのクリティカル領域および非クリティカル領域に関して別々のエラー報告信号を返す第2の例を示す図である。
【
図4】メモリブロックの使用状況を追跡し、メモリスキャン動作を使用中のブロックに適用する例を示す図である。
【
図5】メモリスキャン動作の進行状況が追跡され、メモリスキャン動作が完了する前に、冗長処理ユニットによってチェック済みであるメモリロケーションへのメモリアクセスを開始し得る例を示す図である。
【
図6】ロックステップシステムのためにエラーチェックを実行する方法を示す流れ図である。
【0009】
ロックステップ方式で複数の冗長処理ユニットを稼働させることは、冗長処理ユニットのうちの1つにのみ影響するシングル・イベント・アップセットおよび他のタイプのエラーを検出するのに効果的であり得るが、システムはまた、冗長処理ユニットのそれぞれに影響を与え得るタイプの障害であるコモンモード障害に対しても脆弱性を有し得る。例えば、処理ユニットは、電力ライン、クロックライン、リセットラインなどのいくつかの信号線を共有することができ、そのため、これらの共有信号線のうちの1つの信号でのグリッチは、すべての冗長処理ユニットでエラーとして現れる可能性が高くなり得、必ずしも出力の比較から検出できるとは限らない。自動車規格ISO26262などの機能安全規格は、コモンモード障害の適切な管理に関するガイドラインを提供し得る。例えば、電圧スパイクまたはクロックグリッチによって引き起こされるコモンモード障害に対処するために、時間的相違を使用して、処理ユニットのうちの1つの処理ユニットを冗長処理ユニットのうちの別の冗長処理ユニットよりも特定のサイクル数だけ先行して稼働させることができる。2番目の冗長処理ユニットへの入力を遅らせることにより、各冗長処理ユニットがグリッチの発生時間において異なる計算を実行し得るため、冗長処理ユニット間の出力の相違を引き起こす電圧供給またはクロックグリッチに関連するコモンモード障害の確率が高まり得る。あるいは、ロックステップシステムは、共有信号線上の実際のグリッチを検出する回路グリッチ検出器を装備することもできる。したがって、一般に、システムは、冗長処理ユニットのそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出し得るいくつかのコモンモード障害検出回路を有し得る。
【0010】
しかしながら、本発明者らは、システムが、通常、冗長処理ユニット間で共有されるメモリも備え、メモリもまたコモンモード障害によって影響を受ける可能性があり得ることを見出した。例えば、メモリは、冗長処理ユニット自体と同じ電力ライン、クロックライン、またはリセットラインのうちの少なくとも一部を共有するオンチップメモリであり得るため、これらのラインのグリッチは、処理ユニットのエラーだけでなく、共有メモリに格納されているデータの潜在的な破損を引き起こし得る。1つの手法は、検出されたコモンモード障害がメモリに影響を与える可能性があると仮定し、そして、コモンモード障害が検出されるたびに何らかの回復アクションを実行することであり得る。しかしながら、実際には、すべてのコモンモード障害がメモリ内のデータを破損させ得るわけではないため、コモンモード障害ごとに回復アクションをトリガすることにより、システムが不必要に長時間動作しなくなり得る。このことは、自動車のスイッチを最初にオンにしたときに、バッテリーからの電流のサージが、コモンモード障害として検出され得るグリッチを制御ラインに引き起こし得ることがわかっている自動車システムにとって特に重要であり、そのため、車両が始動されるたびに破損したメモリ状態から回復するための手段をトリガすることは望ましくない場合がある。
【0011】
本発明者らは、実際には、コモンモード障害として検出されたいくつかのイベントが実際にはデータの破損につながらない場合があることを見出した。メモリの少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するために、メモリチェック回路が設けられる。メモリチェック回路は、コモンモード障害検出回路によって生成され、潜在的なコモンモード障害を示すイベントが検出されたことを示すコモンモード障害信号に応じて、メモリスキャン動作を実行することができる。
【0012】
したがって、潜在的なコモンモード障害が検出されたことを示す信号を受信すると、メモリチェック回路は、メモリをスキャンして、エラーがないかチェックし、メモリ内のデータが破損しているか否かを判定する。次に、メモリチェック回路は、メモリで検出されたエラーのレベルに応じて、応答アクションをトリガする必要があるか否かを判定することができる。したがって、これにより、コモンモード障害後にメモリ内で破損した命令またはデータをシステムが処理し続けることを回避することにより機能安全性が向上するが、回復アクションを実行するパフォーマンスコストは、データが破損しているとスキャンにおいて実際に判定された場合に制限される。
【0013】
メモリスキャン動作では、メモリチェック回路は、メモリの少なくとも一部におけるどのメモリロケーションがエラーに遭遇したと検出されたエラーのあるメモリロケーションであるかを示すエラーマップを生成し得る。メモリチェック回路は、エラーマップによって示されるエラーのあるメモリロケーションの数または分布に応じて、エラー処理応答をトリガするためのエラー報告信号を生成するか否かを判定し得る。エラー報告信号を生成するか否かのこの決定は、ハードウェアで実行され得るため、ソフトウェアの介入を必要としない場合がある。エラー報告信号は、例えば、現在の処理を中断し、例外処理ルーチンの実行をトリガするために処理ユニットに送信される割り込み信号であり得、次に、例外処理ルーチンは、システムリセットもしくはシャットダウン、メモリの消去、またはバックアップデータストアから破損したデータをリロードするなどのどのエラー処理応答アクションを実行すべきかを判定し得る。
【0014】
エラーのあるメモリロケーションの数または分布によって、エラー報告信号を生成する必要があると見なされるか否かが判定され得る。処理ユニットと同じ電圧またはクロックドメインで提供されるメモリ構造に対するコモンモード障害の影響は、単一のロケーションでの反転のみを生じ得るシングル・イベント・アップセットによって引き起こされるエラーよりも多くのメモリロケーションに影響を与え得るとしばしば予期され得る。シングル・イベント・アップセットエラーはある期間にわたって蓄積される可能性があるため、例えば粒子の衝突によって引き起こされた少なくとも1ビットの状態がそれぞれ個別に反転されたメモリロケーションがいくつか存在し得るが、シングル・イベント・アップセットによって引き起こされるこのようなエラーのあるメモリロケーションの分布は比較的ランダムであると予期され得る一方、コモンモード障害は、メモリの特定の領域内のすべてのロケーションがエラーであり得る、より体系的なエラーパターンをもたらす可能性がある。したがって、エラーのあるメモリロケーションの数および/またはそれらのエラーのあるメモリロケーションの分布を解析することによって、メモリチェック回路は、エラー報告信号を生成するか否かを判定することができる。シングル・イベント・アップセットまたはマルチビットアップセットに起因し得る比較的低レベルのエラーは、エラー報告信号の送信を正当化しない場合があり、これは、このようなエラーが、エラー訂正符号を使用するなどの他の手段で処理可能であり得るためである。
【0015】
メモリスキャン動作は、様々な仕方で実装され得る。一例では、メモリスキャン動作は、メモリ全体に対して実行され得る。したがって、コモンモード障害信号が受信されると、メモリチェック回路は、エラーがないかチェックするためにメモリデバイスの各メモリロケーションをスキャンすることができる。
【0016】
あるいは、メモリスキャン動作のパフォーマンスへの影響を制限するために、メモリチェック回路は、メモリの限られた部分に対してメモリスキャン動作を実行することができる。例えば、メモリには、破損するとシステムの安全性を損なう可能性のあるセーフティクリティカルな符号またはデータを格納するクリティカル部分が含まれる場合があるが、エラーが許容され得る他のデータもメモリに格納される場合があり、これは、メモリのその部分に格納されているデータまたは符号がそれほどセーフティクリティカルではない場合があるためである。したがって、場合によっては、メモリのクリティカル部分のみをスキャンし、非クリティカル部分のスキャンを省略することによって、メモリスキャン動作の期間を短縮することができる。メモリをクリティカル部分と非クリティカル部分とに分割することは、固定(例えば、ハードワイヤード)されてもよいし、クリティカルまたは非クリティカルと見なされるアドレス範囲を定義するメモリチェック回路に関連付けられたプログラム可能なレジスタに基づいてプログラム可能であってもよい。
【0017】
別の手法は、メモリスキャン動作がクリティカル部分および非クリティカル部分の両方で実行される一方で、メモリチェック回路が、メモリの非クリティカル部分に対してメモリスキャン動作を実行する前に、メモリのクリティカル部分に対してメモリスキャン動作をまず実行し得るということであり得る。クリティカル部分を優先させることにより、セーフティクリティカルなデータに影響を与える可能性のあるエラーを早期に検出して、適切な応答をより迅速にトリガできるようになり得るが、非クリティカルデータに影響を与えるエラーは、迅速に検出するほど重要ではない場合がある。
【0018】
メモリチェック回路は、メモリのクリティカル部分および非クリティカル部分にそれぞれ対応する別個のクリティカル部分エラー報告信号および非クリティカル部分エラー報告信号を生成することができる。したがって、クリティカル部分エラー報告信号は、クリティカル部分におけるエラーのあるメモリロケーションの数または分布に基づいて生成される一方、非クリティカル部分エラー報告信号は、非クリティカル部分におけるエラーのあるメモリロケーションの数または分布に基づいて生成される。メモリのそれぞれの領域に別々のエラー報告信号を提供することにより、ソフトウェアは、クリティカル部分が破損しているか非クリティカル部分が破損しているかに基づいて、エラー処理応答が必要か否かについて様々な決定を下したり、様々な形式のエラー処理応答を適用したりできる。例えば、クリティカル部分が破損した場合、システムのリセット、メモリの内容の消去、またはバックアップメモリの使用への切り替えもしくは補助ストアからのデータの再フェッチなど、システムが検出されたエラーから回復している間にパフォーマンスに影響を与え得るより立ち入った応答アクションの形式を選択できる。他方で、ソフトウェアは、非クリティカル部分のみが破損している場合には、このような抜本的な対応アクションは不要であると判定でき、この場合、対応アクションは、例えば、メモリをスクラビングして、例えばエラー訂正符号を使用して破損したデータを訂正することである、または何のアクションも実行しないことである。
【0019】
別の手法は、メモリのメモリロケーションのどのブロックが使用中であるかを追跡するための使用状況追跡回路を提供することであり得る。例えば、使用状況追跡回路は、いくつかのフラグを維持することができ、各フラグは、メモリロケーションの対応するブロックに対応し、メモリロケーションの対応するブロックが使用されるときに設定される。ブロックが使用中であるか否かは、例えば、システムがリセットされてから、ブロック内のメモリロケーションのうちの1つへの書き込みが発生したか否かによって異なり得る。メモリチェック回路は、使用状況追跡回路によって使用中であると示されたメモリロケーションのブロックに対してメモリスキャン動作を実行し得る。したがって、使用中ではないメモリロケーションのブロックをスキャンする必要はない。これにより、メモリスキャン動作の実行にかかる時間が短縮され、パフォーマンスへの影響が軽減される。
【0020】
メモリチェック回路でメモリスキャン動作をトリガするだけでなく、潜在的なコモンモード障害を示すイベントの検出もまた、障害応答アクションを実行するように冗長処理ユニットをトリガすることができる。例えば、障害応答アクションは、例えば以前にキャプチャされたアーキテクチャ状態を復元し、そのアーキテクチャ状態によって表されるポイントから命令の実行を再開することによる、以前の実行ポイントに立ち返る処理であり得る。
【0021】
いくつかのシステムでは、コモンモード障害検出回路によるコモンモード障害イベントの検出後の冗長処理ユニットによる処理の再開は、メモリスキャン動作の完了後まで延期される可能性がある。しかしながら、これにより、処理ユニットが比較的長時間非アクティブになる可能性があり、これは、リアルタイムで動作する必要があり得る特定のセーフティ/クリティカルシステムで問題になり得る。
【0022】
したがって、いくつかの例では、冗長処理ユニットが、コモンモード障害検出回路によるイベントの検出後、メモリチェック回路によるメモリスキャン動作の完了の前に処理を再開し得る。例えば、メモリのクリティカル部分がメモリの非クリティカル部分の前にスキャンされるシステムでは、冗長処理ユニットは、メモリのクリティカル部分がチェックされたならばその処理を再開することができ、メモリの非クリティカル部分でのメモリスキャン動作の完了を待つ必要がない。非クリティカル部分のスキャンは、通常の処理のバックグラウンドで続行できる。
【0023】
別の手法は、冗長処理ユニットが、メモリスキャン動作が完了する前に処理を再開できるが、その後、冗長処理ユニットのうちの1つが、メモリスキャン動作の残りの部分でまだチェックされていないメモリロケーションのターゲットブロックへのメモリアクセスを要求すると、メモリロケーションのターゲットブロックがエラーがないかチェックされるまで、メモリチェック回路がメモリアクセスを停止し得るということであり得る。例えば、メモリチェック回路は、メモリロケーションのどのブロックがメモリスキャン動作においてエラーがないかチェック済みであるかを示す進行状況指標を維持し得る。いくつかの例では、進行状況指標は、例えば、ブロックのうちの1つにそれぞれ対応する一連のフラグであり、そのブロックがチェックされたか否かを示し得る。しかしながら、メモリスキャン動作の進行状況を追跡するより安価な手段は、メモリのチェックされた部分とメモリのまだチェックされていない部分との間の境界を表すウォーターマークポインタを使用することであり得る。より多くのロケーションがチェックされるとウォーターマークポインタが更新され、ウォーターマークポインタによって示されるチェックされた領域内のメモリロケーションへのデータアクセスがある場合、メモリアクセスが続行され、ウォーターマークポインタの先の残りの部分へのアクセスは停止され得る。したがって、メモリスキャン動作が完了していなくても進行中の処理を許可することにより、検出されたコモンモード障害の後に冗長処理ユニットが動作しなくなる期間を短縮することにより、パフォーマンスを向上させることができる。
【0024】
進行状況指標を使用するこの最後の手法では、場合によっては、進行状況指標をメモリ全体に適用できる。他の例では、進行状況指標はメモリのクリティカル部分内でのみ使用され、メモリアクセスは、スキャンの進行状況に関係なく、非クリティカル部分へのアクセスを許可され得る(これらの格納された値におけるエラーは、安全性にとって重要ではない場合があるため)。
【0025】
コモンモード障害検出回路は、様々な仕方で実装され得る。一例では、コモンモード障害検出回路は、複数の冗長処理ユニットおよびメモリの間で共有される共通信号線に関連付けられた少なくとも1つの異常検出回路を備え得る。コモンモード障害検出回路によって検出されたイベントは、少なくとも1つの異常検出回路によって検出された共通信号線上の信号における異常であり得る。例えば、異常は、共通信号線上の信号の信号レベル(電圧)のグリッチ、例えば、予期される値に対する信号線上の電圧の一時的な上昇または降下であり得る。異常はまた、共通信号線上の信号の遷移のタイミングの変動、例えばクロック信号またはリセット信号の遅いまたは早い遷移であり得る。
【0026】
別の手法は、冗長処理ユニットのうちの1つの冗長処理ユニットで実行される所与の処理動作と冗長処理ユニットのうちの別の冗長処理ユニットで実行される所与の処理動作との間に時間遅延を伴って冗長処理ユニットが動作し得ることであり得る。この場合、コモンモード障害検出回路は、冗長処理ユニットによって生成された処理結果の相違が検出されたときにコモンモード障害イベントを検出するための比較回路を備え得る。場合によっては、時間オフセットした冗長処理ユニットの処理出力における相違は、コモンモード障害ではなく単一のストレージロケーションに影響を与えるシングル・イベント・アップセットまたはマルチビットアップセットによって引き起こされる可能性があるが、予防策として、いくつかのシステムは、単に時間オフセットした冗長処理ユニットの処理結果の相違は潜在的なコモンモード障害である可能性があると仮定して、メモリチェック回路をトリガしてメモリスキャン動作を実行させるためにコモンモード障害検出信号を生成することができる。
【0027】
しかしながら、他のシステムでは、比較回路は、処理結果における相違の特性を検出して、相違がコモンモード障害を示す可能性が高いか否かを判定することができる。例えば、一次処理ユニットと冗長処理ユニットとの出力間の単一ビットの違い、または個々の命令の実行における単一のエラーは、シングル・イベント・アップセットによって引き起こされる可能性が高くなり得る。一方、コモンモード障害は、レジスタなどの多数のストレージ要素を破損させることがあり、それぞれの冗長処理ユニットの動作が大きく異なるほどアーキテクチャ状態に影響を与え得るため、コモンモード障害は処理結果間により大きな相違を引き起こすことが予期され得る。したがって、場合によっては、コモンモード障害検出回路は、相違が特定の閾値量よりも大きいか否かをチェックし、閾値量よりも大きければ、コモンモード障害信号を生成することができる。
【0028】
当然のことながら、いくつかのシステムはこれらの手法を組み合わせることができ、冗長処理ユニットの出力を比較する比較回路を使用することと、共通信号線に設けられる回路ベースの異常検出器を使用することとの両方により、コモンモード障害を検出することができる。
【0029】
メモリは、メモリにおける格納されたデータ値に関連付けられたエラー検出符号を供給することができ、これにより、格納されたデータ値のエラーを検出することができ、場合によっては、訂正することもできる。したがって、メモリスキャン動作は、エラーがないかチェックされる所与のメモリロケーションについて、所与のメモリロケーションに関連付けられた格納されたエラー検出符号を、所与のメモリロケーションに格納されたデータ値に基づいて計算された、計算されたエラー検出符号と比較することを含み得る。格納されたエラー検出符号は、データ自体と同じメモリにデータ値と一緒に格納されてもよいし、別個のデータストレージユニットに格納されてもよい(メインメモリストレージとエラー検出符号ストレージとを分離することにより、データと関連するエラー検出符号との両方に影響を与えるコモンモード障害の可能性を低減できる)。したがって、データがメモリに書き込まれるとき、対応するエラー検出符号が計算され、格納されたエラー検出符号として関連するロケーションに格納され得、その結果、データが後でメモリスキャン動作においてエラーがないかアクセスまたはスキャンされるときに、格納されたエラー検出符号は、格納されているエラー検出符号と同じ関数を使用するが、データが格納された時点でメモリに書き込まれたデータではなく、メモリロケーションからこの時に読み取られたデータ値に基づいて計算される、新しく計算されたエラー検出符号と比較され得る。したがって、データがメモリに書き込まれてから変更された場合には、そのことを検出できる。
【0030】
様々なタイプのエラー検出符号が使用され得る。本明細書で使用される場合、「エラー検出符号」という用語は、エラーのあるデータ値を検出することを可能にするタイプの符号だけではなく、格納されたデータ値と、エラー訂正符号に含まれる冗長情報とに基づいて少なくともいくつかの形式のエラーを訂正することも可能にするエラー訂正符号を含む。エラーの検出のみができるが、データの訂正はできないエラー検出符号は、破損したデータを使用して誤った処理を引き起こす前にエラーを検出できるようにすることで機能安全を保証するのに依然として十分であり得るが、エラー訂正符号を使用すると、システムがデータの破損からより迅速に回復できる。
【0031】
エラー検出符号の例としては、パリティ符号、チェックサム、または巡回冗長検査(CRC)符号が挙げられる。エラー訂正符号の例としては、例えば畳み込み符号またはブロック符号が挙げられる。場合によっては、エラー検出符号は、格納されたデータ値の2つ以上のビットが状態を反転させるマルチビットエラーを検出できるが、データがメモリに書き込まれてから、格納されたデータ値の単一のビットの状態が反転した場合にしかエラーを訂正することができないシングルエラー訂正ダブルエラー検出(SECDED)符号であり得る。他の形式のエラー訂正符号は、マルチビットエラーも訂正できるダブルエラー訂正ダブルエラー検出(DECDED)であり得る。したがって、任意の既知のタイプのエラー検出/訂正符号をエラー検出符号に使用できることが理解されよう。コモンモード障害イベントが検出されると、メモリスキャン動作は、メモリの少なくとも一部のエラー検出符号をチェックして、データ値が破損しているか否かを判定するために、メモリをスキャンすることができる。
【0032】
上記の技法は、冗長処理ユニットにも影響を与えるコモンモード障害に対して潜在的に脆弱性を有し得る、冗長処理ユニット間で共有される任意のメモリに適用できる。したがって、一般に、メモリは、冗長処理ユニット自体で使用されるのと同じ電圧および/またはクロックおよび/またはリセットドメインで実装されるオンチップメモリであり得る。例えば、メモリは、キャッシュ、スクラッチパッドメモリ、またはシステムメモリであり得る。メモリは、SRAM(スタティック・ランダム・アクセス・メモリ)とすることもできるし、混載DRAM(eDRAM)、DRAM(ダイナミックランダムアクセスメモリ)、不揮発性RAM(NVRAM)、または他の形態のメモリ技術を使用して実装することもできる。
【0033】
図1は、ロックステップ方式で冗長的に同じ処理ワークロードを実行するためのいくつかの冗長処理ユニット4(例えば、メインCPUおよび冗長CPU)を有するデータ処理システム2の例を概略的に示している。ロックステップコンパレータ6が、冗長処理ユニット4の出力を比較して、出力の相違を検出するために設けられ、出力の相違は、エラーが発生したこと、例えばシングル・イベント・アップセットまたは粒子の衝突によってトリガされたことを示し得る。
図1には、メインCPUと冗長CPUとの2つの冗長処理ユニット4があるが、他の例では、CPUを三重化することもでき、3つの冗長ユニットのそれぞれが実質的に同じ処理を実行し得る。トリプル・コア・ロックステップ・システムでは、ロックステップコンパレータ6が多数決を使用して、3つの処理ユニットの過半数によって提供される出力を正しい処理出力として選択することができる。
図1に示すデュアル・コア・ロックステップ・システムは、エラーを検出し、エラーが処理ユニット4のうちの1つの出力に影響を与える場合に適切な回復アクションをトリガするのに十分であり得るが、回復アクションでは、処理を以前の実行のポイントに立ち返し、影響を受けた命令を再実行する必要があり得る。対照的に、トリプル・コア・ロックステップ・システムでは検出されたエラーの後においてより速い前進が可能であり、これはなぜなら、コアのうちの多数の出力を正しいと見なすことができ、他の2つのコアとは異なる出力を持つエラーのあるコアのみをリセットでき、他の2つのコアの実行を以前のポイントに立ち返す必要なしに、処理は前進し続けることができるためである。デュアル・コア・ロックステップ・システムを使用するかトリプル・コア・ロックステップ・システムを使用するかは、パフォーマンスと、追加のコアを提供することによる回路領域のオーバーヘッドとの間のトレードオフになり得る。ロックステップコンパレータ6は、それ自体、冗長性を使用して実装されて、例えば、比較ロジックを三重化し、比較ロジック6の正しい出力を判定するために多数決を使用することにより実装されて、ロックステップコンパレータ6自体のストレージ要素または信号経路で発生し得る潜在的なエラーを防ぐことができる。
【0034】
冗長処理ユニット4のそれぞれは、共有メモリ10へのアクセスを共有し、共有メモリ10は、例えば、キャッシュ、スクラッチパッドメモリ、もしくはシステムメモリ、または冗長処理ユニットによって共有される任意のSRAMベースのデータ構造もしくはeDRAM/NVRAM、例えばトランスレーション・ルックアサイド・バッファなどであり得る。共有メモリ10に格納されたデータは、同じ共有メモリ10内または別個のデータ構造内に格納され得る対応するエラー検出符号(EDC)またはエラー訂正符号(ECC)12に関連付けられる。これらの符号により、メモリに書き込まれた後の格納されたデータ値に発生するエラーを、最初に書き込まれた値に基づいてメモリにデータを書き込むときに生成された格納されたEDCまたはECCと、後行符号のメモリに格納された値から計算される、計算されたEDCまたはECCとの間の差分から検出できる。簡潔にするために、エラー検出符号およびエラー訂正符号への言及は両方とも、以下、エラー検出符号またはEDCという用語を使用して行われるが、EDCはまた、ECCであり得ることを理解されたい。
【0035】
図1に示すように、冗長処理ユニット4および共有メモリ10は、冗長ユニットに電力を供給するための電源電圧を供給する電力ライン、冗長ユニット4もしくはメモリ10における動作のタイミングを制御するためのクロック信号を供給するためのクロックライン、および/または処理ユニット4もしくはメモリの何らかの既知のデフォルト状態へのリセットをトリガするリセット信号を供給するためのリセットラインなどの共通信号線14を共有することができる。
図1には単一の共通信号線14のみが示されているが、実際には、そのような共通信号線が複数存在してもよい。共有共通信号線14上のグリッチは、冗長処理ユニット4のそれぞれの動作に影響を与える可能性があるため、必ずしもロックステップコンパレータ6によって出力の相違から検出可能であるとは限らない。
【0036】
コモンモード障害に対するロバスト性を高める1つの仕方は、
図1に示すように遅延バッファ16を導入することにより、冗長CPU4のうちの一方への入力を遅延させ、他方のCPU4の出力を遅延させ、その結果、コモンモード障害がメインCPUと冗長CPUとの異なる計算に影響を与えて、冗長ユニットのそれぞれでの同じ計算の結果の相違がロックステップコンパレータ6によって検出され得る可能性を高めるようにすることであり得る。したがって、冗長ユニット間の時間オフセットを使用するシステムでは、ロックステップコンパレータ6はまた、そのようなコモンモード障害が検出されたときにコモンモード障害信号18を生成し得るコモンモード障害検出器としても機能し得る。場合によっては、ロックステップコンパレータ6は、単一のストレージ要素のみに影響を与えるシングル・イベント・アップセットエラーを、コモンモード障害と区別できる場合があり、これはなぜなら、コモンモード障害は、通常、コアの処理出力間の相違をより大きくし得るためである。他の手法では、シングル・イベント・アップセット信号20とコモンモード障害信号18とが組み合わされる場合があり、処理出力間の相違は、冗長コアのそれぞれに影響を与えるコモンモード障害が検出されたことを潜在的に示す可能性があるイベントとして扱われ得る。
【0037】
あるいは、コモンモード障害は、共通信号線14上に異常検出回路22を設けることによって検出することができる。異常検出回路は、共通信号線14上の電圧スパイクまたは電圧降下、または共通信号線上の遅れて到着または早くに到着する信号遷移をチェックするように設計された回路要素を備えることができ、こうしたグリッチは、異なる冗長ユニット4間でコモンモード障害をもたらし得る。
【0038】
共有メモリ10は、キャッシュ、密結合メモリ、スクラッチパッドメモリ、またはメインメモリなどのオンチップメモリであり、それら自体の冗長処理ユニットと同じ電力、クロック、またはリセットドメインに実装することができ、そのため共通信号線14を共有することができる。したがって、冗長ユニット4に影響を与えるコモンモード障害は、メモリ10にも影響を及ぼす可能性があり、メモリに格納されたデータを完全にまたは部分的に破損させる可能性がある。ただし、コモンモード障害がメモリ内のデータに影響を与える場合がある。慎重な手法は、コモンモード障害がデータを破損させた可能性があると仮定して、共有メモリ10内のデータを消去することであり得る。しかしながら、データがバックアップストレージオフチップからメモリに戻されるまでにかなりの待機時間が発生する可能性があるため、これはパフォーマンスに深刻な影響を与える可能性がある。
【0039】
代わりに、メモリチェック回路30は、コモンモード障害の可能性がシステムで検出されたことを知らせるイベントを示すコモンモード障害信号18をコモンモード障害検出回路6、22から受信すると、共有メモリ10の内容が破損しているか否かをチェックするために設けられる。コモンモード障害信号18を受信すると、メモリチェック回路30は、メモリスキャン動作を実行して、メモリ10にある格納されたデータに関連付けられたEDC12をチェックして、エラーがあるか否か、およびエラーがある場合、どのロケーションがエラーであるかを特定する。検出されたエラーの数および/または分布に基づいて、メモリチェック回路30は、共有メモリ10からのデータのクリアなど、より抜本的なアクションを取るようにソフトウェアをトリガし得るエラー報告信号32(例えば、割り込み)を知らせることを必要なものとするのに十分にメモリが破損しているか否かについて決定を行う。どのようにエラー報告信号32に応答するかに関する最終決定は、エラー報告信号を使用して中断されるソフトウェアの役割であり得るが、エラー報告信号をトリガするか否かを判定するためのメモリ内のエラーの数および分布の解析は、メモリチェック回路30によってハードウェアで実行され得る。したがって、メモリチェック回路30が、共有メモリ10のSRAMリソース内のデータが、システムの安全性を損なわないように、依然として正常であるか、または部分的にのみ破損していることを検出した場合、メモリ10内のデータを消去する必要はなく、このことにより、パフォーマンスが向上する。
【0040】
メモリスキャン動作は、格納されたデータに関連付けられたエラー検出符号またはエラー訂正符号をチェックして、メモリロケーションにエラーがあるか否かを判定することができる。エラー訂正符号が使用されているシステムでは、メモリスキャン動作で実際にエラーを訂正する必要はない。これにより、エラーのあるロケーションのそれぞれへの書き込みを実行する際に追加の処理時間を負担する必要がなくなる。コモンモード障害をどのように処理するかを判定する目的では、エラーを検出するだけで十分であり、エラーを訂正する必要はない。これにより、メモリスキャン動作の実行にかかる時間を短縮できる。あるいは、他の実装形態では、検出されたエラーは、可能であればエラー訂正符号を使用して訂正することもできるが、これは任意である。
【0041】
図2から
図5は、メモリスキャン動作を実装するためのいくつかの例を示している。
図2の例では、各メモリラインをそのEDC12とともに読み取ることによってメモリ10全体がスキャンされて、メモリ10全体のエラーマップが作成される。これはメモリスクラビングとは異なり得ることに注意されたい(メモリスクラビングでは、メモリスクラビングハードウェアが各メモリ行を読み取り、エラーが検出された場合にエラーを訂正し得る。メモリスキャンではエラーの訂正は必要とされない)。エラーマップが(不審なほどまたはランダムに)多数のエラーを示している場合、粒子の衝突によって引き起こされたシングル・イベント・アップセットやマルチビットアップセットではなく、ランダムまたは意図的なグリッチイベントに関連するコモンモード障害(CMF)が、これらのエラーを引き起こした可能性があり、この場合、CMFチェッカーロジック30は、メモリの内容が破損していることを示すエラー報告信号32をシステムに送信する。エラーマップが、シングル・イベント・アップセットまたはマルチビットアップセットに起因し得るエラーがないか、エラーの数が非常に少ないことを示している場合、CMFチェッカーロジックは、SRAMがCMFによって破損していないことを示す信号をシステムに送信する(例えば、エラー報告信号に対応する割り込みラインがデアサートされ得る)。
【0042】
図3は、メモリ10がクリティカル領域40および非クリティカル領域42に分割され得る第2の例を示している。各領域40、42のロケーションおよびサイズは、恒久的に固定または配線される場合もあるし、実行時に判定される場合もある(例えば、ソフトウェアによってプログラム可能であり得るチェッカーロジック30のレジスタに格納された領域定義データに基づいて)。クリティカル領域40は、セーフティ/クリティカルシステムが機能的に安全に動作するために重要であるセーフティクリティカル符号/データを含む。非クリティカル領域42は、システムの機能安全を損なうことなくエラーが許容され得る他の符号またはデータを格納することができる。CMFチェッカー30は、両方の領域を別々にエラーがないかチェックし(
図3と同様であるが、クリティカル領域40および非クリティカル領域42についてそれぞれ2つの別個のエラー報告信号44、46による)、それらのステータスをシステムに報告する。ソフトウェアは、クリティカル領域40が破損していないが非クリティカル領域42が破損している場合に、システムがメモリ10を使用し続けるべきか否かを判定することができる。
【0043】
他の例では、CMF検出信号14に応じてクリティカル領域40のみがエラーがないかスキャンされ、非クリティカル領域42のスキャンは完全に省略され得る。
【0044】
図4は、メモリ10がブロック50に分割されている別の例を示している。ブロックの使用状況は、ブロックごとに1ビットを含むレジスタを有するブロック使用状況追跡ロジック52と呼ばれる別のハードウェア構造で追跡される。最初に(システムのリセット時に)、レジスタはすべてゼロを含む。ブロック50が使用される(書き込まれる)と、その関連ビットは1に設定されて、ブロックを使用済みとしてマークする。CMF検出信号14が受信されると、CMFチェッカーロジックは、レジスタをチェックし、使用中のメモリブロック50のみをエラーがないかスキャンし、例えば、エラーがある使用中のブロックのロケーションを示すエラー・ステータス・マップ54を報告することによって、または
図2および
図3の以前の例のようにメモリ10全体が破損しているか否かを示すエラー報告信号を単に返すことによって、それらのステータスをシステムに送信する。メモリの使用済みブロック50のみをエラーがないかスキャンすることにより、メモリスキャン動作を実行することによるパフォーマンスへの影響を軽減する。
【0045】
図5は、メモリスキャン動作の進行状況を追跡するウォーターマークポインタ60を使用してメモリ10が分割される別の構成例を示している(他の形式の進行状況指標、例えば、スキャン済みであるロケーションを示すビットフィールドも使用できることが理解されよう)。(任意で進行状況におけるこれらのエラーの訂正を伴って)エラーがないかメモリがスキャンされると、ウォーターマークポインタが更新されて、検証済みであるメモリの部分が示される。
図3のように、メモリがクリティカル領域40および非クリティカル領域42に分割される場合、クリティカル領域40は、非クリティカル領域42の前にスキャンされる。プログラム実行は、メモリ・チェック・ロジック30がまだメモリをスキャンしている間に開始する(または冗長処理ユニット10、20におけるCMFに応じて実行される回復アクションの後に再開する)ことができる。エラーがないかまだチェックされていないウォーターマークポインタ60の先のデータが処理ユニット4によって参照されると、ウォーターマークが問題のロケーションを通過するまで処理が停止されることにより、処理ユニット4が必要な符号またはデータをフェッチし処理を続行することができる。ウォーターマークより下のデータもしくは符号を使用する割り込みが参照されない限り、またはウォーターマークが必要な符号/データを超えて移動しない限り、実行は停止され続ける。したがって、この手法では、他のメモリロケーションのスキャンがまだ進行中である場合でも、メモリ10からのチェック済みであるデータで処理を続行できるようにすることによって、パフォーマンスを改善することができる。
【0046】
上記の例は、ロックステップコンパレータ6または異常検出器18によって検出されたコモンモード障害イベントに応じてメモリスキャン動作が実行される場合を示している。しかしながら、加えて、コモンモード障害がない場合でも、通常の処理のバックグラウンドでメモリを定期的または継続的にスキャンまたはスクラブすることもできる。壊れたメモリブロックは、訂正可能なエラーを有する場合、実行を停止することなくバックグラウンドで修復され得る。訂正不可能なエラーのあるメモリブロックがアクセスされた場合にのみ実行が停止され、その後、プログラムの実行を停止する信号がシステムに送信される。しかしながら、データの重大な破損につながる可能性が高いコモンモード障害の検出に応じて特定のメモリスキャンを含めることにより、ロックステップ処理ユニット4と同じ電圧/クロック/リセットドメイン内の共有オンチップメモリ10にアクセスできるロックステップベースのシステムの機能安全を向上させることができる。
【0047】
図6は、ロックステップシステムでデータ処理を実行する方法を示す流れ図である。ステップ100において、処理は、冗長処理ユニット4上でロックステップ方式で実行される。したがって、同じ入力が、同じ計算をそれぞれ実行する処理ユニットのそれぞれに供給される。場合により、ユニットのうちの1つのユニットで実行される処理と、別のユニットで実行される対応する処理との間に時間オフセットが存在する場合がある。ステップ102において、ロックステップコンパレータ6は、それぞれの冗長ユニットに対する対応する動作の結果を比較して、相違があるか否かを検出する。潜在的なコモンモード障害を示さない相違が検出された場合、ステップ104において、シングルイベントエラーを処理するための回復アクションがトリガされる。例えば、デュアル・コア・ロックステップ・システムでは、以前のアーキテクチャ状態が冗長処理ユニット4のそれぞれに復元され得、処理は、そのアーキテクチャ状態によって表される実行の以前のポイントから再開され得る。一連の状態チェックポイントを時間間隔で維持して、以前の状態を復元できるようにすることができる。あるいは、トリプル・コア・ロックステップ・システムでは、同じ出力を生成した2つのコアから取得された正しいアーキテクチャ状態に基づいて、出力が他の2つのコアとは異なることが判明したコアを回復アクションでリセットし、その後、実行の前の瞬間に立ち返さずに処理を続行することができる。
【0048】
一方で、ステップ106においてコモンモード障害が検出された場合、本方法はステップ108に進む。コモンモード障害が検出されない場合、本方法はステップ102に戻って、単一エラーまたはコモンモード障害のいずれかをチェックし続ける。ステップ106におけるコモンモード障害は、出力においてより大きな相違が検出されたとき(例えば、それぞれのユニット4の出力が異なるより多くの命令)、ロックステップコンパレータ6によって検出され得る、または電圧または遅れた/早い信号遷移におけるグリッチについて共通信号線14上の信号を解析する回路ベースの異常検出ユニット22によって検出され得る。場合によっては、異常に高いレベルの放射または温度など、集積回路への悪意のある攻撃を表す可能性のあるイベントを検出するために、他の形態の異常検出回路を設けることもできる。
【0049】
コモンモード障害イベントが検出された場合、ステップ108において、潜在的なコモンモード障害から回復するために、冗長処理ユニットで障害応答アクションがトリガされる。例えば、シングル・イベント・アップセットの処理に使用されるのと同じ状態復元メカニズムを使用して、コモンモード障害を処理できる。あるいは、コモンモード障害が発生した場合に、システムのリセットをトリガするなど、より抜本的な対応アクションを使用することもできる。
【0050】
また、ステップ106で検出されたコモンモード障害イベントに応じて、ステップ110において、メモリチェック回路30は、共有メモリ10の少なくとも一部に対してメモリスキャン動作を実行して、どのメモリロケーションが破損しているかをチェックする。ステップ112において、メモリチェック回路は、エラーの数および/または分布がソフトウェアへの報告を必要なものとするか否かをチェックし、否である場合、なんらアクションは取られない。(例えば、時間の経過とともに蓄積されたシングル・イベント・アップセットエラーの数を表す)エラーの数が比較的少ない場合、そのようなエラーはアクセスされ次第、訂正され得るため、より抜本的な対応アクションは必要ない場合がある。一方で、非常に多数のエラーがある場合、または分布がコモンモード障害によるエラーの何らかのより体系的な原因を示している場合、ステップ114において、メモリチェック回路30は、エラー報告信号32(例えば、割り込み)を生成して、補助ストアから対応するデータをフェッチしているメモリの内容を消去するなどの応答アクションを実行するようにソフトウェアをトリガし得る。メモリを消去する場合、プロセッサユニット4もリセットする必要があり得る。
【0051】
本出願で使用される場合、「...ように構成された」という用語は、装置の要素が、定義された動作を実行することができる構成を有することを意味する。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の配置または方式を意味する。例えば、装置は定義された動作を提供する専用のハードウェアを有し得る、またはプロセッサまたは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成される」は、定義された動作を提供するために、装置要素を何らかの仕方で変更する必要があることを意味するものではない。
【0052】
本明細書では、添付の図面を参照しながら本発明の例示的な実施形態を詳細に説明してきたが、本発明はそれらの詳細な実施形態に限定されず、添付の特許請求の範囲によって定義される本発明の範囲および趣旨から逸脱することなく、様々な変更形態および修正形態が当業者によって実施され得ることを理解されたい。