(57)【要約】  プロセッサのエラー処理ルーチンであって、プロセッサの第１の検出された回復不可能なエラー（ＤＵＥ）に応じて実行し、また、第２のＤＵＥが発生したという指示に対し、エラー処理ルーチンの正確さに対する第２のＤＵＥの影響を評価することにより対応する、プロセッサのエラー処理ルーチン。【選択図】図４
2008523513.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサのエラー処理ルーチンにおいて、該プロセッサの第１の検出された回復不可能なエラー（ＤＵＥ：detected unrecoverable error）に応じて実行すること、及び第２のＤＵＥが発生したという指示に対し、前記エラー処理ルーチンの正確さに対する該第２のＤＵＥの１つ又は複数の影響を評価することにより対応すること
を含む、方法。
【請求項２】
前記第２のＤＵＥが、前記エラー処理ルーチンによって使用される資源において発生したか否かと、前記第２のＤＵＥが発生したという前記指示が、前記エラー処理ルーチンの終了の前に生成されたか否かとを確定することをさらに含む、請求項１に記載の方法。
【請求項３】
前記エラー処理ルーチンによって使用される資源において前記第２のＤＵＥが発生したということを示す前記指示は、前記プロセッサの立てられたエラーステータスフラグを含む、請求項２に記載の方法。
【請求項４】
前記プロセッサの前記エラーステータスフラグ及び前記エラー処理ルーチンの起動を示すフラグが両方とも立てられる状態を検出することをさらに含む、請求項３に記載の方法。
【請求項５】
前記エラー処理ルーチンによって使用される前記資源は、前記プロセッサの汎用レジスタを含む、請求項４に記載の方法。
【請求項６】
前記エラー処理ルーチンが、前記プロセッサの汎用レジスタのセットの内容を一時記憶域に保存すること、及び
前記汎用レジスタのセットの前記内容を保存した後、前記エラー処理ルーチンが、前記プロセッサの前記汎用レジスタにおけるＤＵＥを記録する汎用レジスタエラーログをクリアすること
をさらに含む、請求項１に記載の方法。
【請求項７】
前記評価により、前記第２のＤＵＥが前記エラー処理ルーチンの前記正確さに対して影響を与えたと判断された場合、システム終了例外を引き起こし、そうでない場合、プロセス終了例外を引き起こすことをさらに含む、請求項１に記載の方法。
【請求項８】
前記プロセッサの前記エラーステータスフラグと前記エラー処理ルーチンの起動を示すフラグとがともに立てられている状態が検出された場合、システム終了例外を引き起こし、そうでない場合、プロセス終了例外を引き起こすことをさらに含む、請求項４に記載の方法。
【請求項９】
前記エラー処理ルーチンの残りの動作中に前記汎用レジスタエラーフラグが立てられた場合、システム終了例外を引き起こし、そうでない場合、プロセス終了例外を引き起こすことをさらに含む、請求項６に記載の方法。
【請求項１０】
プロセッサであって、
前記プロセッサの資源において第１の検出された回復不可能なエラー（ＤＵＥ）を検出するエラー検出システムと、
前記第１のＤＵＥに応じてエラー処理ルーチンを実行すると共に、第２のＤＵＥが発生したという前記エラー検出システムからの指示に対し、前記エラー処理ルーチンの正確さに対する前記第２のＤＵＥの影響を評価することにより応答するロジックと
を具備する、プロセッサ。
【請求項１１】
前記エラー処理ルーチンは、前記第２のＤＵＥが該エラー処理ルーチンによって使用されるプロセッサ資源において発生したか否かと、前記第２のＤＵＥが発生したという前記指示が、前記エラー処理ルーチンの終了の前に生成されたか否かとをさらに確定する、請求項１０に記載のプロセッサ。
【請求項１２】
前記エラー処理ルーチンによって使用される資源において前記第２のＤＵＥが発生したということを示す前記指示は、前記プロセッサの立てられたエラーステータスフラグを含む、請求項１１に記載のプロセッサ。
【請求項１３】
前記プロセッサの前記エラーステータスフラグ及び前記エラー処理ルーチンの起動を示すフラグが両方とも立てられる状態を検出するロジックをさらに具備する、請求項１２に記載のプロセッサ。
【請求項１４】
前記エラー処理ルーチンによって使用される前記資源は、前記プロセッサの汎用レジスタを含む、請求項１４に記載のプロセッサ。
【請求項１５】
前記エラー処理ルーチンが、前記プロセッサの汎用レジスタのセットの内容を一時記憶域にさらに保存し、
前記汎用レジスタのセットの前記内容を保存した後、前記エラー処理ルーチンが、前記プロセッサの前記汎用レジスタにおけるＤＵＥを記録する汎用レジスタエラーログをさらにクリアする、請求項１０に記載のプロセッサ。
【請求項１６】
前記エラー処理ルーチンは、前記評価により、前記第２のＤＵＥが該エラー処理ルーチンの前記正確さに対して影響を与えたと判断された場合、システム終了例外をさらに引き起こし、そうでない場合、プロセス終了例外を引き起こす、請求項１０に記載のプロセッサ。
【請求項１７】
前記エラー処理ルーチンは、前記プロセッサの前記エラーステータスフラグと前記エラー処理ルーチンの起動を示すフラグとがともに立てられている状態が検出された場合、システム終了例外をさらに引き起こし、そうでない場合、プロセス終了例外を引き起こす、請求項１３に記載のプロセッサ。
【請求項１８】
前記エラー処理ルーチンの残りの動作中に前記汎用レジスタエラーフラグが立てられた場合、システム終了例外を引き起こし、そうでない場合、プロセス終了例外を引き起こすロジックをさらに具備する、請求項１５に記載のプロセッサ。
【請求項１９】
機械によってアクセスされると、該機械に対し方法を実行させるデータが格納された、機械可読媒体であって、前記方法は、プロセッサのエラー処理ルーチンが、該プロセッサの第１の検出された回復不可能なエラー（ＤＵＥ）に応じて実行すること、及び第２のＤＵＥが発生したという指示に対し、前記エラー処理ルーチンの正確さに対する前記第２のＤＵＥの影響を評価することにより応答することを含む、機械可読媒体。
【請求項２０】
前記方法は、
前記エラー処理ルーチンが、前記プロセッサの汎用レジスタのセットの内容を一時記憶域に保存すること、及び
前記汎用レジスタのセットの前記内容を保存した後、前記エラー処理ルーチンが、前記プロセッサの前記汎用レジスタにおけるＤＵＥを記録する汎用レジスタエラーログをクリアすること
をさらに含む、請求項１９に記載の機械可読媒体。
【請求項２１】
前記方法は、
前記エラー処理ルーチンの残りの動作中に前記汎用レジスタエラーフラグが立てられた場合、システム終了例外を引き起こし、そうでない場合、プロセス終了例外を引き起こすことをさらに含む、請求項２０に記載の機械可読媒体。
【請求項２２】
プロセッサを具備するシステムであって、該プロセッサは、
前記プロセッサの資源において第１の検出された回復不可能なエラー（ＤＵＥ）を検出するエラー検出システムと、
前記第１のＤＵＥに応じてエラー処理ルーチンを実行すると共に、第２のＤＵＥが発生したという前記エラー検出システムからの指示に対し、前記エラー処理ルーチンの正確さに対する前記第２のＤＵＥの影響を評価することにより応答するロジックと
を具備する、システム。
【請求項２３】
前記エラー処理ルーチンは、前記第２のＤＵＥが該エラー処理ルーチンによって使用されるプロセッサ資源において発生したか否かと、前記第２のＤＵＥが発生したという前記指示が、前記エラー処理ルーチンの終了の前に生成されたか否かとをさらに確定する、請求項２２に記載のシステム。
【請求項２４】
前記エラー処理ルーチンによって使用される資源において前記第２のＤＵＥが発生したということを示す前記指示は、前記プロセッサの立てられたエラーステータスフラグを含む、請求項２３に記載のシステム。
【請求項２５】
前記プロセッサは、該プロセッサの前記エラーステータスフラグ及び前記エラー処理ルーチンの起動を示すフラグが両方とも立てられる状態を検出するロジックをさらに具備する、請求項２４に記載のシステム。
【請求項２６】
前記エラー処理ルーチンによって使用される前記資源は、前記プロセッサの汎用レジスタである、請求項２５に記載のシステム。
【請求項２７】
前記エラー処理ルーチンは、前記プロセッサの前記エラーステータスフラグと前記エラー処理ルーチンの起動を示すフラグとがともに立てられている状態が検出された場合、システム終了例外をさらに引き起こし、そうでない場合、プロセス終了例外を引き起こす、請求項２５に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
宇宙線からの中性子等の活発な亜原子粒子と、半導体デバイスのパッケージングにおける放射線トレース部品からのα粒子とは、こうしたデバイスを通過する際に電子・ホール対を生成する場合がある。デバイスのトランジスタのソース端子及びドレイン端子は、これら電荷を収集する可能性があり、最終的に、電荷がかなり蓄積することにより、こうしたトランジスタを組み込んだ論理デバイスが状態を反転させる、すなわちフリップさせる可能性があり、回路の動作にロジック障害をもたらす。これら障害は、デバイスの永久的な故障ではないため一過性であり、したがって、ソフトエラー又は一時エラーと呼ばれる。ソフトエラーの一般的な形態は、キャッシュセル又はレジスタセル等のメモリセルの一部を形成するトランジスタのエラーであり、こうしたセルによって表されるビットはその意図された値からフリップされることになる。
【０００２】
プロセッサ又は他の半導体デバイスに影響を与えるソフトエラーの可能性は、オンチップトランジスタの数によって決まる。特にプロセッサの場合、オンチップトランジスタの数は非常に急速に増加しており、したがって、ソフトエラーによるエラー率は比例して増大している。したがって、プロセッサ動作に対するソフトエラーの影響を低減する重要性が増している。
【０００３】
図１は、明確にするためにフローチャートとして示すレジスタ又はキャッシュ等のプロセッサメモリユニットのソフトエラーの分類を示す。ソフトエラーが発生した時（１１０）、影響を受けたビットが読み出されていなかった場合、その障害は良性であるとみなしてもよい（１２０及び１４０）。ビットが読み出されたが、キャッシュライン又はレジスタバンク等の影響を受けたユニットにエラー保護機能（error protection）が組み込まれている場合（１３０）、エラーは回復可能であるか又は少なくとも検出可能であり得る。こうしたエラー訂正は既知であり、たとえばパリティ及びＥＣＣ方式が含まれる。ビットがエラー保護機構を有しておらず、且つプロセッサにおいて進行中のいずれかの計算の正確さに影響を与える状況では、サイレントデータ破損（silent data corruption）１８０が発生したと言われる。これは、プロセッサ設計者がその可能性に関して最小限にしようと試みる、望ましくない状態である。
【０００４】
エラーが検出され且つそれを訂正することができる場合（１５０）、ビットはその元の値にセットされるか又はリセットされ、プロセッサ動作は正常に続行する（１９０）。エラーが、訂正することはできないが検出された場合、プロセッサは、こうしたエラーが回復不可能であるとみなされる（１７０）ため、さらなる措置を講じることができる。この種のエラーは、検出された回復不可能なエラーすなわちＤＵＥと呼ばれる。
【０００５】
一般に、ＤＵＥにより、少なくとも間違ったビットを読み出そうと試みた実行中のプロセスがエラーによって終了し、時に、プロセッサで実行しているオペレーティングシステム全体がエラーによって終了し、マシンが停止するか又は再始動することになる。当然ながら、ＤＵＥの影響全体を最小限にするように、システム全体とは対照的に１つのプロセスを終了させることが好ましい。クリティカルユースサーバ等、高信頼性システムでは、設計者は、システムを終了させるＤＵＥ間の平均時間が非常に長い、たとえば２５年間であることを保証するように試みる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＤＵＥが検出されると、プロセッサは一般に、ソフトウェアエラー処理ルーチンに入る。レジスタエラーログを使用して、ルーチンは、ＤＵＥがプロセス又はシステムの終了の根拠となるか否かと、いかに続行すべきかとを確定する。１つのシナリオでは、第１のＤＵＥに対するエラー処理ルーチンの実行中に第２のＤＵＥが発生する可能性がある。こうした発生は比較的可能性が低いが、高信頼性プロセッサの設計者は、このシナリオを考慮する必要のある場合がある。
【発明を実施するための最良の形態】
【０００７】
図２は、一実施形態におけるプロセッサベースシステムを示す。こうしたシステムは、バスシステム２６０によって相互接続され且つシステム入出力（Ｉ／Ｏ）デバイス及び周辺機器２５０を通して外部ネットワーク又はユーザとインタフェースする、プロセッサ２１０と、プロセッサによって実行可能なデータ及びプログラムを格納する読出し／書込みランダムアクセスメモリ（ＲＡＭメモリ）２７０及びリードオンリメモリ（ＲＯＭメモリ）２９０と、ディスクシステム２８０等の不揮発性記憶ユニットとを含む。プロセッサは、頻繁に使用されるデータを格納する、プロセッサで実行しているプロセスのための汎用レジスタ２２０のセットと、プロセッサ動作のさまざまな態様のステータスを示すステータスフラグ又はビットのセット２４０と、ステータスフラグ間の相互作用を可能にする信号ロジック２３０とを含んでもよい。既知であるように、キャッシュ、ロジックユニット、パイプライン等の他の多くのコンポーネントもまた、プロセッサのコンポーネントとして存在してもよく、同様に、プロセッサベースシステムには他のコンポーネントが存在してもよいが、明確にするためにここには示さない。
【０００８】
図２に示すもの等のプロセッサは、通常、パリティ検査又はＥＣＣ等のエラー検出機構の動作によって、検出可能な回復不可能エラーすなわちＤＵＥを検出すると、一般に目下実行中のプロセスを中断し、ソフトウェアエラー処理ルーチンの実行を開始する。一実施形態では、エラー処理ルーチンは、エラー処理ルーチン自体の実行中に発生する可能性のある第２のＤＵＥ又は後続するＤＵＥによる影響されやすさが最小限であるように設計される。たとえば、ルーチンは、それ自体をキャッシュメモリのあり得るエラーに晒さないように、キャッシュをオフにして実行してもよい。それを、キャッシュ又はシステムメモリのＲＡＭセルよりＤＵＥに影響されにくいＲＯＭ２９０に格納してもよい。ルーチンは、キャッシュ又はレジスタのもの等のＲＡＭセルを使用する必要がない場合であっても、それを変更する前に格納するために使用するエリアの内容をフラッシュしてもよい。しかしながら、一般に、エラー処理ルーチンが、レジスタ、キャッシュ又はシステムメモリのいずれか、ＤＵＥに影響されやすいいくつかのメモリセルを読み出すことなく実行することは非常に困難であり、したがって、ルーチンの正確さに影響を与えるＤＵＥが、その実行中に、ルーチンがメモリセルに書込みをする時点とそれがメモリセルから読出しをする時点との間に発生する可能性は、小さくはあるが、残っている。特に、エラーハンドラは、そのタスクを実行するために、その実行のいずれかの時点においてプロセッサの汎用レジスタ（汎用レジスタ２２０）のうちの少なくともいくつかに書込みをし、その後読出しをする必要がある可能性が非常に高い。
【０００９】
第２のＤＵＥは、第１のＤＵＥが処理される前に検出される場合、エラーハンドラ起動の後に発生する場合もあれば発生しない場合もある。それは、エラーハンドラに関連しない多くのメモリ読出しが、第１のＤＵＥが報告された時点とエラーハンドラが実際に起動される時点との間で発生する可能性があるためである。ＤＵＥが、ルーチンが起動される前に発生したか又は起動された後に発生したかを判断することは、ルーチンの起動の後にＤＵＥが実際に発生した場合に必要なシステム終了を引き起こす必要性を制限するために有用である。これは、ルーチン自体のあり得る破損を意味する可能性があるためである。
【００１０】
図３は、この問題に関連するシステムのあり得る状態を示す。エラーハンドラが開始すると、エラーハンドラ又はその呼出し機構は、通常、それが実行を開始するとすぐにエラーステータスフラグをクリアする。さらに、実施形態によっては、エラーハンドラがアクティブであることを示すためにフラグをセットしてもよい。この状態、すなわちエラーステータスフラグがクリアされ、ハンドラ起動フラグが立てられる状態を、３１０に示す。この状態から、プロセッサは、エラーハンドラ起動ステータス及びエラーステータスに関して２つのあり得る状態のうちの１つに移動してもよい。１つの代替案では、エラーハンドラは別のＤＵＥが発生することなく終了し（エラーステータスフラグは依然としてクリアされており、ハンドラ起動フラグもまたクリアされる（３３０））、プロセス終了を使用して第１のＤＵＥを処理することができる。別の代替案では、エラーステータスフラグが立てられている間にエラーハンドラがアクティブである状態が発生し、それは３２０における第２のＤＵＥを示す。この状態は、ＤＵＥの実行におけるエラーを示してもよく、それ以上の情報なしに、この状態が検出された時にエラーを処理する保守的な手法は、システムを終了させることである。
【００１１】
一実施形態では、図２を参照して上述した信号ロジック２３０を使用して、図３に示す状態３２０を検出する。たとえば、Ｉｎｔｅｌ（登録商標）Ｉｔａｎｉｕｍプロセッサでは、「マシンチェック」（ｍｃ）エラー処理ルーチンの起動と、ＰＳＲ．ｍｃフラグが立てられている間にハードウェア汎用レジスタエラーログのフラグが同時に立っていることとを示すＰＳＲ．ｍｃビットの状態を、信号ロジックによって検出してマシンチェックルーチンの正確さが危うくされる可能性があった状態を示すことができる。
【００１２】
上述した解決策は効果があるが、第２のＤＵＥがエラーハンドラには影響を与えないが中断されたプロセスにのみ影響を与えたという状況を過度に含む可能性がある。一実施形態では、エラー処理ルーチンは、汎用レジスタの少なくとも一部を、使用する前に一時記憶領域に保存する。ルーチンの実行中に汎用レジスタに影響を与えるＤＵＥが報告される場合、ＤＵＥが、ルーチンが汎用レジスタを使用し始める前に発生したか又は使用し始めた後に発生したかを判断することは、システム終了を引き起こす必要性を、ルーチンがレジスタを使用し始めた後にのみ汎用レジスタが影響を受けた状況に制限するために有用である。
【００１３】
図４は、目下処理されているＤＵＥエラーの後に発生した第２のＤＵＥエラーを検出し、さらにそのエラーがルーチンの実行に影響を与える可能性があるか否かを判断するように設計されたエラー処理ルーチン内の処理を示す。図において、ルーチンは、第１のＤＵＥ４０５に応答して呼び出された後に、ルーチンによって使用される可能性のある任意の汎用レジスタ（ＧＲ）を保存するステップ（４１０）で開始する。そして、ルーチンは、汎用レジスタハードウェアエラーログをチェックすることにより（４１５）、第１のＤＵＥに続いていずれかのＤＵＥに対しハードウェアによってフラグが立てられたか否かを判断する。ハードウェアが、ＤＵＥに対してフラグが立てられたことを示す場合（４２０）、それは、中断されたプロセスに影響を与えるＤＵＥである。ルーチンは、後の処理のために汎用レジスタＤＵＥ情報を格納し（４２５）、ＧＲエラーログをクリアし（４３０）、その後汎用レジスタをクリアして使用する（４４５）。汎用レジスタを使用し第１のＤＵＥの処理を完了した後、ルーチンは、汎用レジスタエラーログを再びチェックする（４５０）。この状態でエラーが見つかる場合（４５５）、エラー処理ルーチンの正確さを危うくするエラーが発生している可能性が非常に高く、システム終了プロセスを開始してもよい（４３５）。そうでない場合、ハンドラは正常に終了してもよい（４４０）。
【００１４】
いくつかの例示的な実施形態について上述し添付図面に示したが、こうした実施形態は、本発明のさまざまな実施形態の広範な態様を単に例示するものであってそれらに限定するものではなく、これら実施形態は、さまざまな他の変更が可能であるため、図示し説明した特定の構成及び配置に限定されない、ということが理解されるべきである。実施形態又はそれらの特徴のいくつかを、ハードウェア、プログラマブルデバイス、ファームウェア、ソフトウェア又はそれらの組合せで実装することが可能であり得る。
【００１５】
実施形態を、機械によってアクセスアクセスされると、機械に対して、特許請求の範囲に記載されている主題に従ってプロセスを実行させることができるデータが格納された、機械可読媒体を含んでもよい、コンピュータプログラム製品として提供してもよい。機械可読媒体は、限定されないが、フロッピーディスケット、光ディスク、ＤＶＤ−ＲＯＭディスク、ＤＶＤ−ＲＡＭディスク、ＤＶＤ−ＲＷディスク、ＤＶＤ＋ＲＷディスク、ＣＤ−Ｒディスク、ＣＤ−ＲＷディスク、ＣＤ−ＲＯＭディスク、及び光磁気ディスク、ＲＯＭ、ＲＡＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、磁気又は光カード、フラッシュメモリ、又は電子命令を格納するために適した他のタイプの媒体／機械可読媒体を含んでもよい。さらに、実施形態をコンピュータプログラム製品としてダウンロードしてもよく、その場合、プログラムを、通信リンク（たとえばモデム又はネットワーク接続）を介して搬送波又は他の伝播媒体に具現化されるデータ信号によりリモートコンピュータから要求側コンピュータに転送してもよい。
【００１６】
本方法の多くを、それらの最も基本的な形態で説明しているが、特許請求の範囲に記載されている主題の基本的な範囲から逸脱することなく、方法のうちの任意のものにステップを追加するか又はそこからステップを削除することができ、説明した内容のうちの任意のものに情報を追加するか又はそこから情報を減じることができる。当業者には、多くのさらなる変更及び適応を行うことができるということが明らかとなろう。特定の実施形態は、発明を限定するためではなく例示するために提供される。特許請求の範囲に記載されている主題の範囲は、上述した特定の例によってではなく添付の特許請求の範囲によってのみ確定されるべきである。
【図面の簡単な説明】
【００１７】
【図１】ソフトエラーの影響と検出、影響及び緩和によって決まるさまざまな結果とをフローチャートとして示す図である（従来技術）。
【図２】一実施形態のプロセッサベースシステムを示す図である。
【図３】一実施形態において第１のＤＵＥに応じてエラー処理ルーチンの起動に続く、あり得る状態の状態図である。
【図４】一実施形態において第１のＤＵＥのエラー処理中に発生する第２のＤＵＥの影響を緩和する、ソフトウェアベースソリューションのフローチャートである。
【図１】
2008523513.tif 000003
【図２】
2008523513.tif 000004
【図３】
2008523513.tif 000005
【図４】
2008523513.tif 000006
【国際調査報告】
2008523513.tif 000007
2008523513.tif 000008
2008523513.tif 000009