(57)【要約】  装置が、ロックステップ方式で冗長的にデータ処理を実行するための複数の冗長処理ユニット（４）と、複数の冗長処理ユニットのそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出するためのコモンモード障害検出回路＊６、２２）と、複数の冗長処理ユニット間で共有されるメモリ（１０）と、メモリの少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するためのメモリチェック回路（３０）であって、メモリチェック回路（３０）が、コモンモード障害検出回路（６、２２）によって生成され、潜在的なコモンモード障害を示す前記イベントが検出されたことを示すコモンモード障害信号に応じてメモリスキャン動作を実行する、メモリチェック回路（３０）とを備える。
2021531568.tif 000002
【特許請求の範囲】
【請求項１】
ロックステップ方式で冗長的にデータ処理を実行するための複数の冗長処理ユニットと、
前記複数の冗長処理ユニットのそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出するためのコモンモード障害検出回路と、
前記複数の冗長処理ユニット間で共有されるメモリと、
前記メモリの少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するためのメモリチェック回路であって、
前記メモリチェック回路が、前記コモンモード障害検出回路によって生成され、潜在的なコモンモード障害を示す前記イベントが検出されたことを示すコモンモード障害信号に応じて前記メモリスキャン動作を実行するように構成される、メモリチェック回路と
を備える、装置。
【請求項２】
前記メモリスキャン動作において、前記メモリチェック回路が、前記メモリの少なくとも一部のどのメモリロケーションがエラーのあるメモリロケーションであるかを示すエラーマップを生成するように構成される、請求項１に記載の装置。
【請求項３】
前記メモリチェック回路が、前記エラーマップによって示される前記エラーのあるメモリロケーションの数または分布に応じて、エラー処理応答をトリガするためのエラー報告信号を生成するか否かを判定するように構成される、請求項２に記載の装置。
【請求項４】
前記メモリチェック回路が、前記メモリ全体に対して前記メモリスキャン動作を実行するように構成される、請求項１から３のいずれか一項に記載の装置。
【請求項５】
前記メモリチェック回路が、前記メモリの限られた部分に対して前記メモリスキャン動作を実行するように構成される、請求項１から３のいずれか一項に記載の装置。
【請求項６】
前記メモリチェック回路が、前記メモリの非クリティカル部分に対して前記メモリスキャン動作を実行する前に、前記メモリのクリティカル部分に対して前記メモリスキャン動作を実行するように構成される、請求項１から３のいずれか一項に記載の装置。
【請求項７】
前記メモリチェック回路が、
前記メモリの前記クリティカル部分に対応するクリティカル部分エラー報告信号と、
前記メモリの前記非クリティカル部分に対応する非クリティカル部分エラー報告信号と
を生成するように構成される、請求項１から３および請求項６のいずれか一項に記載の装置。
【請求項８】
前記メモリのメモリロケーションのどのブロックが使用中であるかを追跡するための使用状況追跡回路を備え、
前記メモリチェック回路が、前記使用状況追跡回路によって使用中であると示されるメモリロケーションの前記ブロックに対して前記メモリスキャン動作を実行するように構成される、請求項１から３のいずれか一項に記載の装置。
【請求項９】
前記イベントの検出に応じて、前記コモンモード障害検出回路が、障害応答アクションを実行するように前記冗長処理ユニットをトリガするように構成される、請求項１から８のいずれか一項に記載の装置。
【請求項１０】
前記冗長処理ユニットが、前記コモンモード障害検出回路による前記イベントの検出後、前記メモリチェック回路による前記メモリスキャン動作の完了の前に処理を再開するように構成される、請求項１から９のいずれか一項に記載の装置。
【請求項１１】
前記冗長処理ユニットのうちの１つが、前記メモリスキャン動作の残りの部分においてまだチェックされていないメモリロケーションのターゲットブロックへのメモリアクセスを要求することに応じて、前記メモリチェック回路が、メモリロケーションの前記ターゲットブロックでエラーがないかチェックされるまで、前記メモリアクセスを停止するように構成される、請求項１０に記載の装置。
【請求項１２】
前記メモリチェック回路が、メモリロケーションのどのブロックが前記メモリスキャン動作においてエラーがないかチェック済みであるかを示す進行状況指標を維持するように構成される、請求項１１に記載の装置。
【請求項１３】
前記コモンモード障害検出回路が、前記複数の冗長処理ユニットおよび前記メモリの間で共有される共通信号線に関連付けられた少なくとも１つの異常検出回路を備え、前記イベントが、前記少なくとも１つの異常検出回路によって検出された、前記共通信号線上の信号における異常を含む、請求項１から１２のいずれか一項に記載の装置。
【請求項１４】
前記複数の冗長処理ユニットが、前記冗長処理ユニットのうちの１つの冗長処理ユニットで実行される所与の処理動作と前記冗長処理ユニットのうちの別の冗長処理ユニットで実行される前記所与の処理動作との間に時間遅延を伴って動作するように構成され、
前記コモンモード障害検出回路が、前記冗長処理ユニットによって生成された処理結果において相違が検出されたときに、前記イベントを検出するための比較回路を備える、請求項１から１３のいずれか一項に記載の装置。
【請求項１５】
前記メモリスキャン動作が、エラーがないかチェックされる所与のメモリロケーションについて、前記所与のメモリロケーションに関連付けられた格納されたエラー検出符号を、前記所与のメモリロケーションに格納されたデータ値に基づいて計算された、計算されたエラー検出符号と比較することを含む、請求項１から１４のいずれか一項に記載の装置。
【請求項１６】
前記メモリがキャッシュを備える、請求項１から１５のいずれか一項に記載の装置。
【請求項１７】
前記メモリがスクラッチパッドメモリを備える、請求項１から１６のいずれか一項に記載の装置。
【請求項１８】
前記メモリがシステムメモリを備える、請求項１から１７のいずれか一項に記載の装置。
【請求項１９】
ロックステップ方式で冗長的にデータ処理を実行するための複数の手段と、
データ処理を実行するための前記複数の手段のそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出するための手段と、
データ処理を実行するための前記複数の手段間で共有され、データを格納するためのメモリ手段と、
前記メモリ手段の少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するためのメモリチェックのための手段であって、
メモリチェックのための前記手段が、検出するための前記手段によって生成され、潜在的なコモンモード障害を示す上記イベントが検出されたことを示すコモンモード障害信号に応じて前記メモリスキャン動作を実行するように構成される、メモリチェックのための手段と
を備える、装置。
【請求項２０】
複数の冗長処理ユニットを使用してロックステップ方式で冗長的にデータ処理を実行することと、
前記複数の冗長処理ユニットのそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出することと、
前記イベントの検出に応じて、コモンモード障害信号を生成することと、
前記コモンモード障害信号に応じて、前記複数の冗長処理ユニット間で共有されるメモリの少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するようにメモリチェック回路をトリガすることと
を含む、データ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技法は、データ処理の分野に関する。
【背景技術】
【０００２】
データ処理システムは、誤った動作につながり得る特定のランダムに発生する障害に対して脆弱性を有し得る。例えば、宇宙線または他の粒子がデータ処理装置のストレージ要素に衝突して格納されたデータのビットの状態を反転させると、処理のエラーにつながり得るシングル・イベント・アップセットが発生し得る。一部の応用分野では、このようなエラーを少なくとも一定の割合検出できることが重要な場合がある。機能安全規格が、特定のレベルの機能安全分類を満たすために保証されなければならない特定のレベルの機能安全を定義することができる。これは、セーフティクリティカルな（例えば、自動車分野における）用途や、障害によって莫大な経済的損失が発生する用途（例えば、宇宙ミッション）に特に役立つ。
【０００３】
機能安全を達成するための１つの手法は、２つ以上の冗長処理ユニットを設けて、ロックステップ方式で冗長的にデータ処理を実行することであり得る。例えば、装置のプロセッサコアを二重化または三重化して、冗長ユニットのそれぞれに実質的に同じデータ処理を実行させることができる。コンパレータが、冗長ユニットのそれぞれで実行された対応する処理動作の出力を比較し、出力間に相違がある場合にエラーを検出できる。これは、例えば、冗長処理ユニットのうちの１つのストレージ要素における信号イベントアップセットによって引き起こされるエラーを検出するのに役立ち得る。
【発明の概要】
【０００４】
少なくともいくつかの例は、ロックステップ方式で冗長的にデータ処理を実行するための複数の冗長処理ユニットと、複数の冗長処理ユニットのそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出するためのコモンモード障害検出回路と、複数の冗長処理ユニット間で共有されるメモリと、メモリの少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するためのメモリチェック回路であって、メモリチェック回路が、コモンモード障害検出回路によって生成され、潜在的なコモンモード障害を示す上記イベントが検出されたことを示すコモンモード障害信号に応じてメモリスキャン動作を実行するように構成される、メモリチェック回路とを備える、装置を提供する。
【０００５】
少なくともいくつかの例は、ロックステップ方式で冗長的にデータ処理を実行するための複数の手段と、データ処理を実行するための複数の手段のそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出するための手段と、データ処理を実行するための複数の手段間で共有され、データを格納するためのメモリ手段と、メモリ手段の少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するためのメモリチェックのための手段であって、メモリチェックのための手段が、検出するための手段によって生成され、潜在的なコモンモード障害を示す上記イベントが検出されたことを示すコモンモード障害信号に応じてメモリスキャン動作を実行するように構成される、メモリチェックのための手段とを備える、装置を提供する。
【０００６】
少なくともいくつかの例は、複数の冗長処理ユニットを使用してロックステップ方式で冗長的にデータ処理を実行することと、複数の冗長処理ユニットのそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出することと、イベントの検出に応じて、コモンモード障害信号を生成することと、コモンモード障害信号に応じて、複数の冗長処理ユニット間で共有されるメモリの少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するようにメモリチェック回路をトリガすることとを含む、データ処理方法を提供する。
【０００７】
本技法のさらなる態様、特徴、および利点は、添付の図面と併せて読まれるべき以下の例の説明から明らかになるはずである。
【図面の簡単な説明】
【０００８】
【図１】いくつかの冗長処理ユニットと、メモリに対してメモリスキャン動作を実行するためのメモリチェック回路とを有する装置の例を示す概略図である。
【図２】コモンモード障害検出信号に応じてメモリに対するメモリスキャンに追従するためのメモリチェック回路の第１の例を示す図である。
【図３】メモリチェックがメモリのクリティカル領域および非クリティカル領域に関して別々のエラー報告信号を返す第２の例を示す図である。
【図４】メモリブロックの使用状況を追跡し、メモリスキャン動作を使用中のブロックに適用する例を示す図である。
【図５】メモリスキャン動作の進行状況が追跡され、メモリスキャン動作が完了する前に、冗長処理ユニットによってチェック済みであるメモリロケーションへのメモリアクセスを開始し得る例を示す図である。
【図６】ロックステップシステムのためにエラーチェックを実行する方法を示す流れ図である。
【０００９】
ロックステップ方式で複数の冗長処理ユニットを稼働させることは、冗長処理ユニットのうちの１つにのみ影響するシングル・イベント・アップセットおよび他のタイプのエラーを検出するのに効果的であり得るが、システムはまた、冗長処理ユニットのそれぞれに影響を与え得るタイプの障害であるコモンモード障害に対しても脆弱性を有し得る。例えば、処理ユニットは、電力ライン、クロックライン、リセットラインなどのいくつかの信号線を共有することができ、そのため、これらの共有信号線のうちの１つの信号でのグリッチは、すべての冗長処理ユニットでエラーとして現れる可能性が高くなり得、必ずしも出力の比較から検出できるとは限らない。自動車規格ＩＳＯ２６２６２などの機能安全規格は、コモンモード障害の適切な管理に関するガイドラインを提供し得る。例えば、電圧スパイクまたはクロックグリッチによって引き起こされるコモンモード障害に対処するために、時間的相違を使用して、処理ユニットのうちの１つの処理ユニットを冗長処理ユニットのうちの別の冗長処理ユニットよりも特定のサイクル数だけ先行して稼働させることができる。２番目の冗長処理ユニットへの入力を遅らせることにより、各冗長処理ユニットがグリッチの発生時間において異なる計算を実行し得るため、冗長処理ユニット間の出力の相違を引き起こす電圧供給またはクロックグリッチに関連するコモンモード障害の確率が高まり得る。あるいは、ロックステップシステムは、共有信号線上の実際のグリッチを検出する回路グリッチ検出器を装備することもできる。したがって、一般に、システムは、冗長処理ユニットのそれぞれに影響を与える潜在的なコモンモード障害を示すイベントを検出し得るいくつかのコモンモード障害検出回路を有し得る。
【００１０】
しかしながら、本発明者らは、システムが、通常、冗長処理ユニット間で共有されるメモリも備え、メモリもまたコモンモード障害によって影響を受ける可能性があり得ることを見出した。例えば、メモリは、冗長処理ユニット自体と同じ電力ライン、クロックライン、またはリセットラインのうちの少なくとも一部を共有するオンチップメモリであり得るため、これらのラインのグリッチは、処理ユニットのエラーだけでなく、共有メモリに格納されているデータの潜在的な破損を引き起こし得る。１つの手法は、検出されたコモンモード障害がメモリに影響を与える可能性があると仮定し、そして、コモンモード障害が検出されるたびに何らかの回復アクションを実行することであり得る。しかしながら、実際には、すべてのコモンモード障害がメモリ内のデータを破損させ得るわけではないため、コモンモード障害ごとに回復アクションをトリガすることにより、システムが不必要に長時間動作しなくなり得る。このことは、自動車のスイッチを最初にオンにしたときに、バッテリーからの電流のサージが、コモンモード障害として検出され得るグリッチを制御ラインに引き起こし得ることがわかっている自動車システムにとって特に重要であり、そのため、車両が始動されるたびに破損したメモリ状態から回復するための手段をトリガすることは望ましくない場合がある。
【００１１】
本発明者らは、実際には、コモンモード障害として検出されたいくつかのイベントが実際にはデータの破損につながらない場合があることを見出した。メモリの少なくとも一部をエラーがないかスキャンするためのメモリスキャン動作を実行するために、メモリチェック回路が設けられる。メモリチェック回路は、コモンモード障害検出回路によって生成され、潜在的なコモンモード障害を示すイベントが検出されたことを示すコモンモード障害信号に応じて、メモリスキャン動作を実行することができる。
【００１２】
したがって、潜在的なコモンモード障害が検出されたことを示す信号を受信すると、メモリチェック回路は、メモリをスキャンして、エラーがないかチェックし、メモリ内のデータが破損しているか否かを判定する。次に、メモリチェック回路は、メモリで検出されたエラーのレベルに応じて、応答アクションをトリガする必要があるか否かを判定することができる。したがって、これにより、コモンモード障害後にメモリ内で破損した命令またはデータをシステムが処理し続けることを回避することにより機能安全性が向上するが、回復アクションを実行するパフォーマンスコストは、データが破損しているとスキャンにおいて実際に判定された場合に制限される。
【００１３】
メモリスキャン動作では、メモリチェック回路は、メモリの少なくとも一部におけるどのメモリロケーションがエラーに遭遇したと検出されたエラーのあるメモリロケーションであるかを示すエラーマップを生成し得る。メモリチェック回路は、エラーマップによって示されるエラーのあるメモリロケーションの数または分布に応じて、エラー処理応答をトリガするためのエラー報告信号を生成するか否かを判定し得る。エラー報告信号を生成するか否かのこの決定は、ハードウェアで実行され得るため、ソフトウェアの介入を必要としない場合がある。エラー報告信号は、例えば、現在の処理を中断し、例外処理ルーチンの実行をトリガするために処理ユニットに送信される割り込み信号であり得、次に、例外処理ルーチンは、システムリセットもしくはシャットダウン、メモリの消去、またはバックアップデータストアから破損したデータをリロードするなどのどのエラー処理応答アクションを実行すべきかを判定し得る。
【００１４】
エラーのあるメモリロケーションの数または分布によって、エラー報告信号を生成する必要があると見なされるか否かが判定され得る。処理ユニットと同じ電圧またはクロックドメインで提供されるメモリ構造に対するコモンモード障害の影響は、単一のロケーションでの反転のみを生じ得るシングル・イベント・アップセットによって引き起こされるエラーよりも多くのメモリロケーションに影響を与え得るとしばしば予期され得る。シングル・イベント・アップセットエラーはある期間にわたって蓄積される可能性があるため、例えば粒子の衝突によって引き起こされた少なくとも１ビットの状態がそれぞれ個別に反転されたメモリロケーションがいくつか存在し得るが、シングル・イベント・アップセットによって引き起こされるこのようなエラーのあるメモリロケーションの分布は比較的ランダムであると予期され得る一方、コモンモード障害は、メモリの特定の領域内のすべてのロケーションがエラーであり得る、より体系的なエラーパターンをもたらす可能性がある。したがって、エラーのあるメモリロケーションの数および／またはそれらのエラーのあるメモリロケーションの分布を解析することによって、メモリチェック回路は、エラー報告信号を生成するか否かを判定することができる。シングル・イベント・アップセットまたはマルチビットアップセットに起因し得る比較的低レベルのエラーは、エラー報告信号の送信を正当化しない場合があり、これは、このようなエラーが、エラー訂正符号を使用するなどの他の手段で処理可能であり得るためである。
【００１５】
メモリスキャン動作は、様々な仕方で実装され得る。一例では、メモリスキャン動作は、メモリ全体に対して実行され得る。したがって、コモンモード障害信号が受信されると、メモリチェック回路は、エラーがないかチェックするためにメモリデバイスの各メモリロケーションをスキャンすることができる。
【００１６】
あるいは、メモリスキャン動作のパフォーマンスへの影響を制限するために、メモリチェック回路は、メモリの限られた部分に対してメモリスキャン動作を実行することができる。例えば、メモリには、破損するとシステムの安全性を損なう可能性のあるセーフティクリティカルな符号またはデータを格納するクリティカル部分が含まれる場合があるが、エラーが許容され得る他のデータもメモリに格納される場合があり、これは、メモリのその部分に格納されているデータまたは符号がそれほどセーフティクリティカルではない場合があるためである。したがって、場合によっては、メモリのクリティカル部分のみをスキャンし、非クリティカル部分のスキャンを省略することによって、メモリスキャン動作の期間を短縮することができる。メモリをクリティカル部分と非クリティカル部分とに分割することは、固定（例えば、ハードワイヤード）されてもよいし、クリティカルまたは非クリティカルと見なされるアドレス範囲を定義するメモリチェック回路に関連付けられたプログラム可能なレジスタに基づいてプログラム可能であってもよい。
【００１７】
別の手法は、メモリスキャン動作がクリティカル部分および非クリティカル部分の両方で実行される一方で、メモリチェック回路が、メモリの非クリティカル部分に対してメモリスキャン動作を実行する前に、メモリのクリティカル部分に対してメモリスキャン動作をまず実行し得るということであり得る。クリティカル部分を優先させることにより、セーフティクリティカルなデータに影響を与える可能性のあるエラーを早期に検出して、適切な応答をより迅速にトリガできるようになり得るが、非クリティカルデータに影響を与えるエラーは、迅速に検出するほど重要ではない場合がある。
【００１８】
メモリチェック回路は、メモリのクリティカル部分および非クリティカル部分にそれぞれ対応する別個のクリティカル部分エラー報告信号および非クリティカル部分エラー報告信号を生成することができる。したがって、クリティカル部分エラー報告信号は、クリティカル部分におけるエラーのあるメモリロケーションの数または分布に基づいて生成される一方、非クリティカル部分エラー報告信号は、非クリティカル部分におけるエラーのあるメモリロケーションの数または分布に基づいて生成される。メモリのそれぞれの領域に別々のエラー報告信号を提供することにより、ソフトウェアは、クリティカル部分が破損しているか非クリティカル部分が破損しているかに基づいて、エラー処理応答が必要か否かについて様々な決定を下したり、様々な形式のエラー処理応答を適用したりできる。例えば、クリティカル部分が破損した場合、システムのリセット、メモリの内容の消去、またはバックアップメモリの使用への切り替えもしくは補助ストアからのデータの再フェッチなど、システムが検出されたエラーから回復している間にパフォーマンスに影響を与え得るより立ち入った応答アクションの形式を選択できる。他方で、ソフトウェアは、非クリティカル部分のみが破損している場合には、このような抜本的な対応アクションは不要であると判定でき、この場合、対応アクションは、例えば、メモリをスクラビングして、例えばエラー訂正符号を使用して破損したデータを訂正することである、または何のアクションも実行しないことである。
【００１９】
別の手法は、メモリのメモリロケーションのどのブロックが使用中であるかを追跡するための使用状況追跡回路を提供することであり得る。例えば、使用状況追跡回路は、いくつかのフラグを維持することができ、各フラグは、メモリロケーションの対応するブロックに対応し、メモリロケーションの対応するブロックが使用されるときに設定される。ブロックが使用中であるか否かは、例えば、システムがリセットされてから、ブロック内のメモリロケーションのうちの１つへの書き込みが発生したか否かによって異なり得る。メモリチェック回路は、使用状況追跡回路によって使用中であると示されたメモリロケーションのブロックに対してメモリスキャン動作を実行し得る。したがって、使用中ではないメモリロケーションのブロックをスキャンする必要はない。これにより、メモリスキャン動作の実行にかかる時間が短縮され、パフォーマンスへの影響が軽減される。
【００２０】
メモリチェック回路でメモリスキャン動作をトリガするだけでなく、潜在的なコモンモード障害を示すイベントの検出もまた、障害応答アクションを実行するように冗長処理ユニットをトリガすることができる。例えば、障害応答アクションは、例えば以前にキャプチャされたアーキテクチャ状態を復元し、そのアーキテクチャ状態によって表されるポイントから命令の実行を再開することによる、以前の実行ポイントに立ち返る処理であり得る。
【００２１】
いくつかのシステムでは、コモンモード障害検出回路によるコモンモード障害イベントの検出後の冗長処理ユニットによる処理の再開は、メモリスキャン動作の完了後まで延期される可能性がある。しかしながら、これにより、処理ユニットが比較的長時間非アクティブになる可能性があり、これは、リアルタイムで動作する必要があり得る特定のセーフティ／クリティカルシステムで問題になり得る。
【００２２】
したがって、いくつかの例では、冗長処理ユニットが、コモンモード障害検出回路によるイベントの検出後、メモリチェック回路によるメモリスキャン動作の完了の前に処理を再開し得る。例えば、メモリのクリティカル部分がメモリの非クリティカル部分の前にスキャンされるシステムでは、冗長処理ユニットは、メモリのクリティカル部分がチェックされたならばその処理を再開することができ、メモリの非クリティカル部分でのメモリスキャン動作の完了を待つ必要がない。非クリティカル部分のスキャンは、通常の処理のバックグラウンドで続行できる。
【００２３】
別の手法は、冗長処理ユニットが、メモリスキャン動作が完了する前に処理を再開できるが、その後、冗長処理ユニットのうちの１つが、メモリスキャン動作の残りの部分でまだチェックされていないメモリロケーションのターゲットブロックへのメモリアクセスを要求すると、メモリロケーションのターゲットブロックがエラーがないかチェックされるまで、メモリチェック回路がメモリアクセスを停止し得るということであり得る。例えば、メモリチェック回路は、メモリロケーションのどのブロックがメモリスキャン動作においてエラーがないかチェック済みであるかを示す進行状況指標を維持し得る。いくつかの例では、進行状況指標は、例えば、ブロックのうちの１つにそれぞれ対応する一連のフラグであり、そのブロックがチェックされたか否かを示し得る。しかしながら、メモリスキャン動作の進行状況を追跡するより安価な手段は、メモリのチェックされた部分とメモリのまだチェックされていない部分との間の境界を表すウォーターマークポインタを使用することであり得る。より多くのロケーションがチェックされるとウォーターマークポインタが更新され、ウォーターマークポインタによって示されるチェックされた領域内のメモリロケーションへのデータアクセスがある場合、メモリアクセスが続行され、ウォーターマークポインタの先の残りの部分へのアクセスは停止され得る。したがって、メモリスキャン動作が完了していなくても進行中の処理を許可することにより、検出されたコモンモード障害の後に冗長処理ユニットが動作しなくなる期間を短縮することにより、パフォーマンスを向上させることができる。
【００２４】
進行状況指標を使用するこの最後の手法では、場合によっては、進行状況指標をメモリ全体に適用できる。他の例では、進行状況指標はメモリのクリティカル部分内でのみ使用され、メモリアクセスは、スキャンの進行状況に関係なく、非クリティカル部分へのアクセスを許可され得る（これらの格納された値におけるエラーは、安全性にとって重要ではない場合があるため）。
【００２５】
コモンモード障害検出回路は、様々な仕方で実装され得る。一例では、コモンモード障害検出回路は、複数の冗長処理ユニットおよびメモリの間で共有される共通信号線に関連付けられた少なくとも１つの異常検出回路を備え得る。コモンモード障害検出回路によって検出されたイベントは、少なくとも１つの異常検出回路によって検出された共通信号線上の信号における異常であり得る。例えば、異常は、共通信号線上の信号の信号レベル（電圧）のグリッチ、例えば、予期される値に対する信号線上の電圧の一時的な上昇または降下であり得る。異常はまた、共通信号線上の信号の遷移のタイミングの変動、例えばクロック信号またはリセット信号の遅いまたは早い遷移であり得る。
【００２６】
別の手法は、冗長処理ユニットのうちの１つの冗長処理ユニットで実行される所与の処理動作と冗長処理ユニットのうちの別の冗長処理ユニットで実行される所与の処理動作との間に時間遅延を伴って冗長処理ユニットが動作し得ることであり得る。この場合、コモンモード障害検出回路は、冗長処理ユニットによって生成された処理結果の相違が検出されたときにコモンモード障害イベントを検出するための比較回路を備え得る。場合によっては、時間オフセットした冗長処理ユニットの処理出力における相違は、コモンモード障害ではなく単一のストレージロケーションに影響を与えるシングル・イベント・アップセットまたはマルチビットアップセットによって引き起こされる可能性があるが、予防策として、いくつかのシステムは、単に時間オフセットした冗長処理ユニットの処理結果の相違は潜在的なコモンモード障害である可能性があると仮定して、メモリチェック回路をトリガしてメモリスキャン動作を実行させるためにコモンモード障害検出信号を生成することができる。
【００２７】
しかしながら、他のシステムでは、比較回路は、処理結果における相違の特性を検出して、相違がコモンモード障害を示す可能性が高いか否かを判定することができる。例えば、一次処理ユニットと冗長処理ユニットとの出力間の単一ビットの違い、または個々の命令の実行における単一のエラーは、シングル・イベント・アップセットによって引き起こされる可能性が高くなり得る。一方、コモンモード障害は、レジスタなどの多数のストレージ要素を破損させることがあり、それぞれの冗長処理ユニットの動作が大きく異なるほどアーキテクチャ状態に影響を与え得るため、コモンモード障害は処理結果間により大きな相違を引き起こすことが予期され得る。したがって、場合によっては、コモンモード障害検出回路は、相違が特定の閾値量よりも大きいか否かをチェックし、閾値量よりも大きければ、コモンモード障害信号を生成することができる。
【００２８】
当然のことながら、いくつかのシステムはこれらの手法を組み合わせることができ、冗長処理ユニットの出力を比較する比較回路を使用することと、共通信号線に設けられる回路ベースの異常検出器を使用することとの両方により、コモンモード障害を検出することができる。
【００２９】
メモリは、メモリにおける格納されたデータ値に関連付けられたエラー検出符号を供給することができ、これにより、格納されたデータ値のエラーを検出することができ、場合によっては、訂正することもできる。したがって、メモリスキャン動作は、エラーがないかチェックされる所与のメモリロケーションについて、所与のメモリロケーションに関連付けられた格納されたエラー検出符号を、所与のメモリロケーションに格納されたデータ値に基づいて計算された、計算されたエラー検出符号と比較することを含み得る。格納されたエラー検出符号は、データ自体と同じメモリにデータ値と一緒に格納されてもよいし、別個のデータストレージユニットに格納されてもよい（メインメモリストレージとエラー検出符号ストレージとを分離することにより、データと関連するエラー検出符号との両方に影響を与えるコモンモード障害の可能性を低減できる）。したがって、データがメモリに書き込まれるとき、対応するエラー検出符号が計算され、格納されたエラー検出符号として関連するロケーションに格納され得、その結果、データが後でメモリスキャン動作においてエラーがないかアクセスまたはスキャンされるときに、格納されたエラー検出符号は、格納されているエラー検出符号と同じ関数を使用するが、データが格納された時点でメモリに書き込まれたデータではなく、メモリロケーションからこの時に読み取られたデータ値に基づいて計算される、新しく計算されたエラー検出符号と比較され得る。したがって、データがメモリに書き込まれてから変更された場合には、そのことを検出できる。
【００３０】
様々なタイプのエラー検出符号が使用され得る。本明細書で使用される場合、「エラー検出符号」という用語は、エラーのあるデータ値を検出することを可能にするタイプの符号だけではなく、格納されたデータ値と、エラー訂正符号に含まれる冗長情報とに基づいて少なくともいくつかの形式のエラーを訂正することも可能にするエラー訂正符号を含む。エラーの検出のみができるが、データの訂正はできないエラー検出符号は、破損したデータを使用して誤った処理を引き起こす前にエラーを検出できるようにすることで機能安全を保証するのに依然として十分であり得るが、エラー訂正符号を使用すると、システムがデータの破損からより迅速に回復できる。
【００３１】
エラー検出符号の例としては、パリティ符号、チェックサム、または巡回冗長検査（ＣＲＣ）符号が挙げられる。エラー訂正符号の例としては、例えば畳み込み符号またはブロック符号が挙げられる。場合によっては、エラー検出符号は、格納されたデータ値の２つ以上のビットが状態を反転させるマルチビットエラーを検出できるが、データがメモリに書き込まれてから、格納されたデータ値の単一のビットの状態が反転した場合にしかエラーを訂正することができないシングルエラー訂正ダブルエラー検出（ＳＥＣＤＥＤ）符号であり得る。他の形式のエラー訂正符号は、マルチビットエラーも訂正できるダブルエラー訂正ダブルエラー検出（ＤＥＣＤＥＤ）であり得る。したがって、任意の既知のタイプのエラー検出／訂正符号をエラー検出符号に使用できることが理解されよう。コモンモード障害イベントが検出されると、メモリスキャン動作は、メモリの少なくとも一部のエラー検出符号をチェックして、データ値が破損しているか否かを判定するために、メモリをスキャンすることができる。
【００３２】
上記の技法は、冗長処理ユニットにも影響を与えるコモンモード障害に対して潜在的に脆弱性を有し得る、冗長処理ユニット間で共有される任意のメモリに適用できる。したがって、一般に、メモリは、冗長処理ユニット自体で使用されるのと同じ電圧および／またはクロックおよび／またはリセットドメインで実装されるオンチップメモリであり得る。例えば、メモリは、キャッシュ、スクラッチパッドメモリ、またはシステムメモリであり得る。メモリは、ＳＲＡＭ（スタティック・ランダム・アクセス・メモリ）とすることもできるし、混載ＤＲＡＭ（ｅＤＲＡＭ）、ＤＲＡＭ（ダイナミックランダムアクセスメモリ）、不揮発性ＲＡＭ（ＮＶＲＡＭ）、または他の形態のメモリ技術を使用して実装することもできる。
【００３３】
図１は、ロックステップ方式で冗長的に同じ処理ワークロードを実行するためのいくつかの冗長処理ユニット４（例えば、メインＣＰＵおよび冗長ＣＰＵ）を有するデータ処理システム２の例を概略的に示している。ロックステップコンパレータ６が、冗長処理ユニット４の出力を比較して、出力の相違を検出するために設けられ、出力の相違は、エラーが発生したこと、例えばシングル・イベント・アップセットまたは粒子の衝突によってトリガされたことを示し得る。図１には、メインＣＰＵと冗長ＣＰＵとの２つの冗長処理ユニット４があるが、他の例では、ＣＰＵを三重化することもでき、３つの冗長ユニットのそれぞれが実質的に同じ処理を実行し得る。トリプル・コア・ロックステップ・システムでは、ロックステップコンパレータ６が多数決を使用して、３つの処理ユニットの過半数によって提供される出力を正しい処理出力として選択することができる。図１に示すデュアル・コア・ロックステップ・システムは、エラーを検出し、エラーが処理ユニット４のうちの１つの出力に影響を与える場合に適切な回復アクションをトリガするのに十分であり得るが、回復アクションでは、処理を以前の実行のポイントに立ち返し、影響を受けた命令を再実行する必要があり得る。対照的に、トリプル・コア・ロックステップ・システムでは検出されたエラーの後においてより速い前進が可能であり、これはなぜなら、コアのうちの多数の出力を正しいと見なすことができ、他の２つのコアとは異なる出力を持つエラーのあるコアのみをリセットでき、他の２つのコアの実行を以前のポイントに立ち返す必要なしに、処理は前進し続けることができるためである。デュアル・コア・ロックステップ・システムを使用するかトリプル・コア・ロックステップ・システムを使用するかは、パフォーマンスと、追加のコアを提供することによる回路領域のオーバーヘッドとの間のトレードオフになり得る。ロックステップコンパレータ６は、それ自体、冗長性を使用して実装されて、例えば、比較ロジックを三重化し、比較ロジック６の正しい出力を判定するために多数決を使用することにより実装されて、ロックステップコンパレータ６自体のストレージ要素または信号経路で発生し得る潜在的なエラーを防ぐことができる。
【００３４】
冗長処理ユニット４のそれぞれは、共有メモリ１０へのアクセスを共有し、共有メモリ１０は、例えば、キャッシュ、スクラッチパッドメモリ、もしくはシステムメモリ、または冗長処理ユニットによって共有される任意のＳＲＡＭベースのデータ構造もしくはｅＤＲＡＭ／ＮＶＲＡＭ、例えばトランスレーション・ルックアサイド・バッファなどであり得る。共有メモリ１０に格納されたデータは、同じ共有メモリ１０内または別個のデータ構造内に格納され得る対応するエラー検出符号（ＥＤＣ）またはエラー訂正符号（ＥＣＣ）１２に関連付けられる。これらの符号により、メモリに書き込まれた後の格納されたデータ値に発生するエラーを、最初に書き込まれた値に基づいてメモリにデータを書き込むときに生成された格納されたＥＤＣまたはＥＣＣと、後行符号のメモリに格納された値から計算される、計算されたＥＤＣまたはＥＣＣとの間の差分から検出できる。簡潔にするために、エラー検出符号およびエラー訂正符号への言及は両方とも、以下、エラー検出符号またはＥＤＣという用語を使用して行われるが、ＥＤＣはまた、ＥＣＣであり得ることを理解されたい。
【００３５】
図１に示すように、冗長処理ユニット４および共有メモリ１０は、冗長ユニットに電力を供給するための電源電圧を供給する電力ライン、冗長ユニット４もしくはメモリ１０における動作のタイミングを制御するためのクロック信号を供給するためのクロックライン、および／または処理ユニット４もしくはメモリの何らかの既知のデフォルト状態へのリセットをトリガするリセット信号を供給するためのリセットラインなどの共通信号線１４を共有することができる。図１には単一の共通信号線１４のみが示されているが、実際には、そのような共通信号線が複数存在してもよい。共有共通信号線１４上のグリッチは、冗長処理ユニット４のそれぞれの動作に影響を与える可能性があるため、必ずしもロックステップコンパレータ６によって出力の相違から検出可能であるとは限らない。
【００３６】
コモンモード障害に対するロバスト性を高める１つの仕方は、図１に示すように遅延バッファ１６を導入することにより、冗長ＣＰＵ４のうちの一方への入力を遅延させ、他方のＣＰＵ４の出力を遅延させ、その結果、コモンモード障害がメインＣＰＵと冗長ＣＰＵとの異なる計算に影響を与えて、冗長ユニットのそれぞれでの同じ計算の結果の相違がロックステップコンパレータ６によって検出され得る可能性を高めるようにすることであり得る。したがって、冗長ユニット間の時間オフセットを使用するシステムでは、ロックステップコンパレータ６はまた、そのようなコモンモード障害が検出されたときにコモンモード障害信号１８を生成し得るコモンモード障害検出器としても機能し得る。場合によっては、ロックステップコンパレータ６は、単一のストレージ要素のみに影響を与えるシングル・イベント・アップセットエラーを、コモンモード障害と区別できる場合があり、これはなぜなら、コモンモード障害は、通常、コアの処理出力間の相違をより大きくし得るためである。他の手法では、シングル・イベント・アップセット信号２０とコモンモード障害信号１８とが組み合わされる場合があり、処理出力間の相違は、冗長コアのそれぞれに影響を与えるコモンモード障害が検出されたことを潜在的に示す可能性があるイベントとして扱われ得る。
【００３７】
あるいは、コモンモード障害は、共通信号線１４上に異常検出回路２２を設けることによって検出することができる。異常検出回路は、共通信号線１４上の電圧スパイクまたは電圧降下、または共通信号線上の遅れて到着または早くに到着する信号遷移をチェックするように設計された回路要素を備えることができ、こうしたグリッチは、異なる冗長ユニット４間でコモンモード障害をもたらし得る。
【００３８】
共有メモリ１０は、キャッシュ、密結合メモリ、スクラッチパッドメモリ、またはメインメモリなどのオンチップメモリであり、それら自体の冗長処理ユニットと同じ電力、クロック、またはリセットドメインに実装することができ、そのため共通信号線１４を共有することができる。したがって、冗長ユニット４に影響を与えるコモンモード障害は、メモリ１０にも影響を及ぼす可能性があり、メモリに格納されたデータを完全にまたは部分的に破損させる可能性がある。ただし、コモンモード障害がメモリ内のデータに影響を与える場合がある。慎重な手法は、コモンモード障害がデータを破損させた可能性があると仮定して、共有メモリ１０内のデータを消去することであり得る。しかしながら、データがバックアップストレージオフチップからメモリに戻されるまでにかなりの待機時間が発生する可能性があるため、これはパフォーマンスに深刻な影響を与える可能性がある。
【００３９】
代わりに、メモリチェック回路３０は、コモンモード障害の可能性がシステムで検出されたことを知らせるイベントを示すコモンモード障害信号１８をコモンモード障害検出回路６、２２から受信すると、共有メモリ１０の内容が破損しているか否かをチェックするために設けられる。コモンモード障害信号１８を受信すると、メモリチェック回路３０は、メモリスキャン動作を実行して、メモリ１０にある格納されたデータに関連付けられたＥＤＣ１２をチェックして、エラーがあるか否か、およびエラーがある場合、どのロケーションがエラーであるかを特定する。検出されたエラーの数および／または分布に基づいて、メモリチェック回路３０は、共有メモリ１０からのデータのクリアなど、より抜本的なアクションを取るようにソフトウェアをトリガし得るエラー報告信号３２（例えば、割り込み）を知らせることを必要なものとするのに十分にメモリが破損しているか否かについて決定を行う。どのようにエラー報告信号３２に応答するかに関する最終決定は、エラー報告信号を使用して中断されるソフトウェアの役割であり得るが、エラー報告信号をトリガするか否かを判定するためのメモリ内のエラーの数および分布の解析は、メモリチェック回路３０によってハードウェアで実行され得る。したがって、メモリチェック回路３０が、共有メモリ１０のＳＲＡＭリソース内のデータが、システムの安全性を損なわないように、依然として正常であるか、または部分的にのみ破損していることを検出した場合、メモリ１０内のデータを消去する必要はなく、このことにより、パフォーマンスが向上する。
【００４０】
メモリスキャン動作は、格納されたデータに関連付けられたエラー検出符号またはエラー訂正符号をチェックして、メモリロケーションにエラーがあるか否かを判定することができる。エラー訂正符号が使用されているシステムでは、メモリスキャン動作で実際にエラーを訂正する必要はない。これにより、エラーのあるロケーションのそれぞれへの書き込みを実行する際に追加の処理時間を負担する必要がなくなる。コモンモード障害をどのように処理するかを判定する目的では、エラーを検出するだけで十分であり、エラーを訂正する必要はない。これにより、メモリスキャン動作の実行にかかる時間を短縮できる。あるいは、他の実装形態では、検出されたエラーは、可能であればエラー訂正符号を使用して訂正することもできるが、これは任意である。
【００４１】
図２から図５は、メモリスキャン動作を実装するためのいくつかの例を示している。図２の例では、各メモリラインをそのＥＤＣ１２とともに読み取ることによってメモリ１０全体がスキャンされて、メモリ１０全体のエラーマップが作成される。これはメモリスクラビングとは異なり得ることに注意されたい（メモリスクラビングでは、メモリスクラビングハードウェアが各メモリ行を読み取り、エラーが検出された場合にエラーを訂正し得る。メモリスキャンではエラーの訂正は必要とされない）。エラーマップが（不審なほどまたはランダムに）多数のエラーを示している場合、粒子の衝突によって引き起こされたシングル・イベント・アップセットやマルチビットアップセットではなく、ランダムまたは意図的なグリッチイベントに関連するコモンモード障害（ＣＭＦ）が、これらのエラーを引き起こした可能性があり、この場合、ＣＭＦチェッカーロジック３０は、メモリの内容が破損していることを示すエラー報告信号３２をシステムに送信する。エラーマップが、シングル・イベント・アップセットまたはマルチビットアップセットに起因し得るエラーがないか、エラーの数が非常に少ないことを示している場合、ＣＭＦチェッカーロジックは、ＳＲＡＭがＣＭＦによって破損していないことを示す信号をシステムに送信する（例えば、エラー報告信号に対応する割り込みラインがデアサートされ得る）。
【００４２】
図３は、メモリ１０がクリティカル領域４０および非クリティカル領域４２に分割され得る第２の例を示している。各領域４０、４２のロケーションおよびサイズは、恒久的に固定または配線される場合もあるし、実行時に判定される場合もある（例えば、ソフトウェアによってプログラム可能であり得るチェッカーロジック３０のレジスタに格納された領域定義データに基づいて）。クリティカル領域４０は、セーフティ／クリティカルシステムが機能的に安全に動作するために重要であるセーフティクリティカル符号／データを含む。非クリティカル領域４２は、システムの機能安全を損なうことなくエラーが許容され得る他の符号またはデータを格納することができる。ＣＭＦチェッカー３０は、両方の領域を別々にエラーがないかチェックし（図３と同様であるが、クリティカル領域４０および非クリティカル領域４２についてそれぞれ２つの別個のエラー報告信号４４、４６による）、それらのステータスをシステムに報告する。ソフトウェアは、クリティカル領域４０が破損していないが非クリティカル領域４２が破損している場合に、システムがメモリ１０を使用し続けるべきか否かを判定することができる。
【００４３】
他の例では、ＣＭＦ検出信号１４に応じてクリティカル領域４０のみがエラーがないかスキャンされ、非クリティカル領域４２のスキャンは完全に省略され得る。
【００４４】
図４は、メモリ１０がブロック５０に分割されている別の例を示している。ブロックの使用状況は、ブロックごとに１ビットを含むレジスタを有するブロック使用状況追跡ロジック５２と呼ばれる別のハードウェア構造で追跡される。最初に（システムのリセット時に）、レジスタはすべてゼロを含む。ブロック５０が使用される（書き込まれる）と、その関連ビットは１に設定されて、ブロックを使用済みとしてマークする。ＣＭＦ検出信号１４が受信されると、ＣＭＦチェッカーロジックは、レジスタをチェックし、使用中のメモリブロック５０のみをエラーがないかスキャンし、例えば、エラーがある使用中のブロックのロケーションを示すエラー・ステータス・マップ５４を報告することによって、または図２および図３の以前の例のようにメモリ１０全体が破損しているか否かを示すエラー報告信号を単に返すことによって、それらのステータスをシステムに送信する。メモリの使用済みブロック５０のみをエラーがないかスキャンすることにより、メモリスキャン動作を実行することによるパフォーマンスへの影響を軽減する。
【００４５】
図５は、メモリスキャン動作の進行状況を追跡するウォーターマークポインタ６０を使用してメモリ１０が分割される別の構成例を示している（他の形式の進行状況指標、例えば、スキャン済みであるロケーションを示すビットフィールドも使用できることが理解されよう）。（任意で進行状況におけるこれらのエラーの訂正を伴って）エラーがないかメモリがスキャンされると、ウォーターマークポインタが更新されて、検証済みであるメモリの部分が示される。図３のように、メモリがクリティカル領域４０および非クリティカル領域４２に分割される場合、クリティカル領域４０は、非クリティカル領域４２の前にスキャンされる。プログラム実行は、メモリ・チェック・ロジック３０がまだメモリをスキャンしている間に開始する（または冗長処理ユニット１０、２０におけるＣＭＦに応じて実行される回復アクションの後に再開する）ことができる。エラーがないかまだチェックされていないウォーターマークポインタ６０の先のデータが処理ユニット４によって参照されると、ウォーターマークが問題のロケーションを通過するまで処理が停止されることにより、処理ユニット４が必要な符号またはデータをフェッチし処理を続行することができる。ウォーターマークより下のデータもしくは符号を使用する割り込みが参照されない限り、またはウォーターマークが必要な符号／データを超えて移動しない限り、実行は停止され続ける。したがって、この手法では、他のメモリロケーションのスキャンがまだ進行中である場合でも、メモリ１０からのチェック済みであるデータで処理を続行できるようにすることによって、パフォーマンスを改善することができる。
【００４６】
上記の例は、ロックステップコンパレータ６または異常検出器１８によって検出されたコモンモード障害イベントに応じてメモリスキャン動作が実行される場合を示している。しかしながら、加えて、コモンモード障害がない場合でも、通常の処理のバックグラウンドでメモリを定期的または継続的にスキャンまたはスクラブすることもできる。壊れたメモリブロックは、訂正可能なエラーを有する場合、実行を停止することなくバックグラウンドで修復され得る。訂正不可能なエラーのあるメモリブロックがアクセスされた場合にのみ実行が停止され、その後、プログラムの実行を停止する信号がシステムに送信される。しかしながら、データの重大な破損につながる可能性が高いコモンモード障害の検出に応じて特定のメモリスキャンを含めることにより、ロックステップ処理ユニット４と同じ電圧／クロック／リセットドメイン内の共有オンチップメモリ１０にアクセスできるロックステップベースのシステムの機能安全を向上させることができる。
【００４７】
図６は、ロックステップシステムでデータ処理を実行する方法を示す流れ図である。ステップ１００において、処理は、冗長処理ユニット４上でロックステップ方式で実行される。したがって、同じ入力が、同じ計算をそれぞれ実行する処理ユニットのそれぞれに供給される。場合により、ユニットのうちの１つのユニットで実行される処理と、別のユニットで実行される対応する処理との間に時間オフセットが存在する場合がある。ステップ１０２において、ロックステップコンパレータ６は、それぞれの冗長ユニットに対する対応する動作の結果を比較して、相違があるか否かを検出する。潜在的なコモンモード障害を示さない相違が検出された場合、ステップ１０４において、シングルイベントエラーを処理するための回復アクションがトリガされる。例えば、デュアル・コア・ロックステップ・システムでは、以前のアーキテクチャ状態が冗長処理ユニット４のそれぞれに復元され得、処理は、そのアーキテクチャ状態によって表される実行の以前のポイントから再開され得る。一連の状態チェックポイントを時間間隔で維持して、以前の状態を復元できるようにすることができる。あるいは、トリプル・コア・ロックステップ・システムでは、同じ出力を生成した２つのコアから取得された正しいアーキテクチャ状態に基づいて、出力が他の２つのコアとは異なることが判明したコアを回復アクションでリセットし、その後、実行の前の瞬間に立ち返さずに処理を続行することができる。
【００４８】
一方で、ステップ１０６においてコモンモード障害が検出された場合、本方法はステップ１０８に進む。コモンモード障害が検出されない場合、本方法はステップ１０２に戻って、単一エラーまたはコモンモード障害のいずれかをチェックし続ける。ステップ１０６におけるコモンモード障害は、出力においてより大きな相違が検出されたとき（例えば、それぞれのユニット４の出力が異なるより多くの命令）、ロックステップコンパレータ６によって検出され得る、または電圧または遅れた／早い信号遷移におけるグリッチについて共通信号線１４上の信号を解析する回路ベースの異常検出ユニット２２によって検出され得る。場合によっては、異常に高いレベルの放射または温度など、集積回路への悪意のある攻撃を表す可能性のあるイベントを検出するために、他の形態の異常検出回路を設けることもできる。
【００４９】
コモンモード障害イベントが検出された場合、ステップ１０８において、潜在的なコモンモード障害から回復するために、冗長処理ユニットで障害応答アクションがトリガされる。例えば、シングル・イベント・アップセットの処理に使用されるのと同じ状態復元メカニズムを使用して、コモンモード障害を処理できる。あるいは、コモンモード障害が発生した場合に、システムのリセットをトリガするなど、より抜本的な対応アクションを使用することもできる。
【００５０】
また、ステップ１０６で検出されたコモンモード障害イベントに応じて、ステップ１１０において、メモリチェック回路３０は、共有メモリ１０の少なくとも一部に対してメモリスキャン動作を実行して、どのメモリロケーションが破損しているかをチェックする。ステップ１１２において、メモリチェック回路は、エラーの数および／または分布がソフトウェアへの報告を必要なものとするか否かをチェックし、否である場合、なんらアクションは取られない。（例えば、時間の経過とともに蓄積されたシングル・イベント・アップセットエラーの数を表す）エラーの数が比較的少ない場合、そのようなエラーはアクセスされ次第、訂正され得るため、より抜本的な対応アクションは必要ない場合がある。一方で、非常に多数のエラーがある場合、または分布がコモンモード障害によるエラーの何らかのより体系的な原因を示している場合、ステップ１１４において、メモリチェック回路３０は、エラー報告信号３２（例えば、割り込み）を生成して、補助ストアから対応するデータをフェッチしているメモリの内容を消去するなどの応答アクションを実行するようにソフトウェアをトリガし得る。メモリを消去する場合、プロセッサユニット４もリセットする必要があり得る。
【００５１】
本出願で使用される場合、「．．．ように構成された」という用語は、装置の要素が、定義された動作を実行することができる構成を有することを意味する。この文脈において、「構成」は、ハードウェアまたはソフトウェアの相互接続の配置または方式を意味する。例えば、装置は定義された動作を提供する専用のハードウェアを有し得る、またはプロセッサまたは他の処理デバイスが、機能を実行するようにプログラムされ得る。「ように構成される」は、定義された動作を提供するために、装置要素を何らかの仕方で変更する必要があることを意味するものではない。
【００５２】
本明細書では、添付の図面を参照しながら本発明の例示的な実施形態を詳細に説明してきたが、本発明はそれらの詳細な実施形態に限定されず、添付の特許請求の範囲によって定義される本発明の範囲および趣旨から逸脱することなく、様々な変更形態および修正形態が当業者によって実施され得ることを理解されたい。
【図１】
2021531568.tif 000003
【図２】
2021531568.tif 000004
【図３】
2021531568.tif 000005
【図４】
2021531568.tif 000006
【図５】
2021531568.tif 000007
【図６】
2021531568.tif 000008
【国際調査報告】
2021531568.tif 000009
2021531568.tif 000010
2021531568.tif 000011