(57)【要約】  マイクロプロセッサにおける偽のエラー検出を低減する技術。ＰＩビットが、命令フローパスを介し命令と共に伝搬される。パリティエラーが検出されると、マシーンチェック例外処理を提起する代わりに、ＰＩビットが設定される。コミットポイントに達すると、プロセッサは、命令が誤ったパス上にあったか判断することが可能である。
2008501191.tif 000002
【特許請求の範囲】
【請求項１】
命令を受け付ける復号化モジュールと、
前記命令と関連付けされ、前記命令を破壊するのに生じたビット状態の変更が前記命令と共に移動するか特定するビットであって、エラービットがパリティと関連付けされるビットと、
前記復号化モジュールに接続され、前記命令を格納する格納構成と、
前記格納構成に接続され、前記命令を処理する複数の段階から構成される命令処理ユニットと、
から構成されるプロセッサであって、
当該プロセッサは、命令がコミットポイントにおいて誤ったパスの命令であるか判断することを特徴とするプロセッサ。
【請求項２】
請求項１記載のプロセッサであって、
前記ビットは、前記命令にエラーが存在しないことを示す第１の値に初期化されることを特徴とするプロセッサ。
【請求項３】
請求項１記載のプロセッサであって、
前記格納構成は、命令キューであることを特徴とするプロセッサ。
【請求項４】
請求項２記載のプロセッサであって、
前記格納構成は、エラーの検出により、前記命令のエラービットを第２の値に設定することを特徴とするプロセッサ。
【請求項５】
請求項４記載のプロセッサであって、
前記命令と前記ビットは、前記複数の段階を介し移動することを特徴とするプロセッサ。
【請求項６】
請求項５記載のプロセッサであって、
前記命令は、それの第２の値のビットによりコミットすることを特徴とするプロセッサ。
【請求項７】
請求項６記載のプロセッサであって、
当該プロセッサは、前記命令が誤ったパスの命令である場合、前記ビットを無視することを特徴とするプロセッサ。
【請求項８】
請求項６記載のプロセッサであって、
当該プロセッサは、前記命令が誤ったパス命令でない場合、マシーンチェックエラーを提起することを特徴とするプロセッサ。
【請求項９】
請求項１記載のプロセッサであって、
前記命令は、チャンクとすることが可能であり、
各ビットは、各フェッチチャンクに添付される、
ことを特徴とするプロセッサ。
【請求項１０】
請求項９記載のプロセッサであって、
前記チャンクは、複数の命令に復号され、
当該プロセッサは、前記複数の命令のそれぞれに前記チャンクのビット値をコピーする、
ことを特徴とするプロセッサ。
【請求項１１】
請求項１記載のプロセッサであって、
当該プロセッサは、前記命令のビットをデスティネーションレジスタに転送することを特徴とするプロセッサ。
【請求項１２】
請求項１１記載のプロセッサであって、
以降の命令の何れも前記デスティネーションレジスタを読まない場合、前記レジスタのビットは調べられないことを特徴とするプロセッサ。
【請求項１３】
請求項１１記載のプロセッサであって、
前記命令のすべてのソースレジスタのビットは、シングルビットを提供するため、前記命令自体のビットと論理的にＯＲ演算されることを特徴とするプロセッサ。
【請求項１４】
請求項１記載のプロセッサであって、
当該プロセッサは、命令からメモリモジュールに前記ビットを転送することを特徴とするプロセッサ。
【請求項１５】
請求項１４記載のプロセッサであって、
当該プロセッサは、各キャッシュブロックにビットを添付し、アドレスを書き込むストア命令により、前記ストア命令のビットを前記キャッシュブロックに転送することを特徴とするプロセッサ。
【請求項１６】
請求項１４記載のプロセッサであって、
ロードは、前記ビットを調べるため、又はそれがロードしている前記レジスタに前記ビットを転送するため、前記キャッシュブロックを読み込むことを特徴とするプロセッサ。
【請求項１７】
請求項１記載のプロセッサであって、
前記ビットは、ＰＩビットであることを特徴とするプロセッサ。
【請求項１８】
命令を復号化するステップと、
前記命令のパリティに係るビットを前記命令と共にロードするステップと、
前記命令をキュー処理するステップと、
前記命令を処理するため、パイプラインの段階に前記命令を伝搬するステップと、
前記命令がコミットポイントにおいて誤ったパスの命令であるか判断するステップと、
とから構成されることを特徴とする方法。
【請求項１９】
請求項１８記載の方法であって、さらに、
前記命令が誤ったパス命令である場合、前記ビットを無視するステップを有することを特徴とする方法。
【請求項２０】
請求項１９記載の方法であって、さらに、
前記命令が誤ったパス命令でなかった場合、マシーンチェックエラーを提起するステップを有することを特徴とする方法。
【請求項２１】
エントリを受け付ける復号化モジュールと、
前記エントリと関連付けされ、前記エントリを破壊するビット状態の変更が生じたか特定する検出ビットを格納する格納要素と、
前記エントリを処理する命令キューと、
エントリのフローを複数の段階に伝搬する命令フローパスと、
エントリが誤ったパス上にあるか判断するコミットモジュールと、
から構成されることを特徴とする装置。
【請求項２２】
請求項２１記載の装置であって、
前記検出ビットは、ＰＩビットであることを特徴とする装置。
【請求項２３】
請求項２２記載の装置であって、
前記検出ビットは、前記命令のパリティに関連付けされることを特徴とする装置。
【請求項２４】
請求項２１記載の装置であって、
前記検出ビットは、前記エントリにエラーが存在しないことを示す第１の値に初期化されることを特徴とする装置。
【請求項２５】
請求項２４記載の装置であって、
前記命令キューは、エラーを検出すると、前記エントリの検出ビットを第２の値に設定することを特徴とする装置。
【請求項２６】
請求項２５記載の装置であって、
前記エントリは、前記命令フローパスの複数の段階に発信及び移動することを特徴とする装置。
【請求項２７】
請求項２５記載の装置であって、
前記エントリは、それの第２の値における前記検出ビットによりコミットすることを特徴とする装置。
【請求項２８】
請求項２７記載の装置であって、
当該装置は、前記エントリが誤ったパスのエントリであると前記コミットモジュールが判断する場合、前記検出ビットを無視することを特徴とする装置。
【請求項２９】
請求項２８記載の装置であって、
当該装置は、前記エントリが誤ったパスエントリでないと前記コミットモジュールが判断する場合、マシーンチェックエラーを提起することを特徴とする装置。
【請求項３０】
フェッチ処理前にエントリを格納するオフチップメモリと、
前記オフチップメモリに接続され、エントリを受け付ける復号化モジュールと、前記エントリと関連付けされるビットを格納する格納要素と、前記エントリを処理する命令キューと、エントリのフローを複数の段階に伝搬する命令フローパスと、エントリが誤ったパス上にあるか判断するコミットモジュールとを有するプロセッサと、
から構成されることを特徴とするシステム。
【請求項３１】
請求項３０記載のシステムであって、さらに、
前記オフチップメモリに接続される音声インタフェースを有することを特徴とするシステム。
【請求項３２】
請求項３０記載のシステムであって、
前記ビットは、ＰＩビットであることを特徴とするシステム。
【請求項３３】
請求項３０記載のシステムであって、
前記ビットは、前記エントリを破壊するビット状態の変更が生じたか特定することを特徴とするシステム。
【請求項３４】
請求項３３記載のシステムであって、
前記ビット状態の変更は、パリティであることを特徴とするシステム。
【請求項３５】
請求項３０記載のシステムであって、
前記ビットは、前記エントリにエラーが存在しないことを示す第１の値に初期化されることを特徴とするシステム。
【請求項３６】
請求項３５記載のシステムであって、
前記命令キューは、エラーを検出すると、前記エントリのビットを第２の値に設定することを特徴とするシステム。
【請求項３７】
請求項３６記載のシステムであって、
前記エントリは、前記命令フローパスの複数の段階に発信及び移動することを特徴とするシステム。
【請求項３８】
請求項３６記載のシステムであって、
前記エントリは、それの第２の値のビットによりコミットすることを特徴とするシステム。
【請求項３９】
請求項３８記載のシステムであって、
当該システムは、前記エントリが誤ったパスエントリであると前記コミットモジュールが判断する場合、前記ビットを無視することを特徴とするシステム。
【請求項４０】
請求項３９記載のシステムであって、
当該システムは、前記エントリが誤ったパスエントリでないと前記コミットモジュールが判断する場合、マシーンチェックエラーを提起することを特徴とするシステム。
【請求項４１】
請求項３０記載のシステムであって、さらに、
オンチップメモリを有することを特徴とするシステム。
【請求項４２】
請求項４１記載のシステムであって、さらに、
前記オンチップメモリに接続される音声インタフェースデバイスを有することを特徴とするシステム。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
［関連出願］
本出願は、同日（２００４年６月１７日）に出願された以下の同一出願人による同時係属中の出願である“Ｒｅｄｕｃｉｎｇ  Ｆａｌｓｅ  Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ  Ｉｎ  Ａ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｂｙ  Ｔｒａｃｋｉｎｇ  Ｉｎｓｔｒｕｃｔｉｏｎｓ  Ｎｅｕｔｒａｌ  Ｔｏ  Ｅｒｒｏｓ”及び“Ｒｅｄｕｃｉｎｇ  Ｆａｌｓｅ  Ｅｒｒｏｒ  Ｄｅｔｅｃｔｉｏｎ  Ｉｎ  Ａ  Ｍｉｃｒｏｐｒｏｃｅｓｓｏｒ  Ｂｙ  Ｔｒａｃｋｉｎｇ  Ｄｙｎａｍｉｃａｌｌｙ  Ｄｅａｄ  Ｉｎｓｔｒｕｃｔｉｏｎｓ”に関連する。
【０００２】
［背景情報］
中性子やα粒子の衝突によるトランジェントフォルト（ｔｒａｎｓｉｅｎｔ  ｆａｕｌｔ）は、将来のプロセス技術におけるプロセッサトランジスタの数量の増大に対する重大な障害として出現してきている。各トランジスタのフォルトレートは大きくは増加していないかもしれないが、デバイスにより多くのトランジスタを搭載することは、当該デバイスにフォルトが発生する確率をより大きくする。この結果、プロセッサエラーレートを許容できるレベルに維持することは、設計作業の増大が必要となることが予想される。
【０００３】
トランジェントフォルトからのシングルビットアップセット（ｓｉｎｇｌｅ  ｂｉｔ  ｕｐｓｅｔ）は、現在のマイクロプロセッサ設計における主要なチャレンジの１つとして現れてきた。これらのフォルトは、宇宙線からの中性子やパッケージング物質からのα粒子など、エネルギー粒子から生じるものである。トランジスタソース及び拡散ノードが、これらの電荷を収集することができる。十分な量の蓄積された電荷が、ＳＲＡＭセル、ラッチ、ゲートなどのロジックデバイスの状態を反転させる可能性があり、これにより、回路の動作に論理的フォルトをもたらす。このタイプのフォルトはデバイスの永続的不具合を反映したものではないため、ソフト又はトランジェントエラーとして知られる。
【０００４】
ソフトエラーは、チップに搭載されたトランジスタの個数が指数的に増大し続けるとき、マイクロプロセッサ設計者に対する負担を増大させる。ラッチ又はＳＲＡＭビット毎のエラー発生率は、次世代技術に対してほぼ一定又はやや減少することが予測される。従って、さらなるエラープロテクション機構又はよりロウバストな技術の利用（完全空乏型（ｆｕｌｌｙ−ｄｅｐｌｅｔｅｄ）ＳＯＩなど）がなければ、マイクロプロセッサのエラーレートは、以降の各世代のプロセッサに追加されるデバイス数に直接的に比例して増大するかもしれない。
【０００５】
［詳細な説明］
以下の説明では、限定するためでなく説明のため、本発明の様々な特徴の完全なる理解を提供するため、特定の構造、アーキテクチャ、インタフェース、技術などの具体的詳細が与えられる。しかしながら、本発明の各種特徴がこれらの具体的詳細から逸脱した他の具体例により実施可能であるということは、本開示の利益を有する当業者にとって明らかであろう。ある例では、周知のデバイス、回路及び方法の説明は、本発明の説明を不要な詳細さにより不明りょうにしないように省略される。
【０００６】
図１は、マイクロプロセッサのシングルビットフォルトの可能な結果を示す。まず、マイクロプロセッサは、フォルトビットが読まれたか判断する（１００）。フォルトビットが読まれていない場合（１１０）、それを良性のフォルトとみなし、エラーとはみなさない。フォルトビットが読まれると、次にプロセッサは、当該ビットがエラープロテクションを有するか判断する（１１５）。フォルトビットが読まれるときについては少なくとも３つの可能性のある結果がある。第１に、エラープロテクションが当該ビットに対して検出され、訂正されると、当該フォルトは訂正されたとみなされる（１２０）。
【０００７】
第２に、当該ビットがエラープロテクションを有していない場合、プロセッサは、命令がプログラムの結果に影響を及ぼすか判断する（１２５）。命令がプログラムの結果に影響を及ぼすものではない場合、フォルトビットは良性フォルトとみなされる（１３０）。フォルト１１０、１２０及び１３０のすべては、当該フォルトが影響を有さず、又は検出及び訂正されたものであるため、非エラー状態を示す。
【０００８】
命令がプログラムの結果に影響を与える場合、それはＳＤＣ（Ｓｉｌｅｎｔ  Ｄａｔａ  Ｃｏｒｒｕｐｔｉｏｎ）とみなされる（１３５）。ＳＤＣ１３５は、最も油断のできないエラーの形式であり、フォルトはシステムに誤った出力を生成させる。ＳＤＣ１３５を回避するため、設計者は、パリティなどの基本的な誤り検出機構を利用するかもしれない。
【０００９】
ビットがエラープロテクションを有する場合に対する第３の可能性のある結果は、このエラーが検出される状況に適用される（１４０）。フォルトを検出はするが、訂正することはできない場合、システムは、有効でない出力を生成することを回避するが、エラー発生時に復元することはできない。従って、シンプルなエラー検出は、エラーレートを低減せず、失敗を停止する動作を提供し、これにより、データ破壊は低減する。これらのタイプのエラーは、ＤＵＥ（Ｄｅｔｅｃｔｅｄ  Ｕｎｒｅｃｏｖｅｒａｂｌｅ  Ｅｒｒｏｒ）として知られている。
【００１０】
ＤＵＥイベントはさらに、検出されたエラーが当該実行の最終的な結果に影響を及ぼすか否かに従って細分される。良性の検出エラーは、偽のＤＵＥイベント１４５として知られ、他のものは、真のＤＵＥイベント１５０として知られる。マイクロプロセッサでは、偽のＤＵＥイベントは、誤ったパスの命令、誤って予測された命令、及びｎｏ−ｏｐｓ、プリフェッチ及びダイナミカリーデッド（ｄｙｎａｍｉｃａｌｌｙ  ｄｅａｄ）命令を含む最終的なプログラム状態に影響を与えない正しいパスの命令に対する衝突から生じうる。
【００１１】
本発明の一実施例は、トランジェントフォルトがプロセッサにエラー状態を宣言させる可能性を低減することによって、エラーレートを低下させる機構を利用する。偽のＤＵＥイベントを追跡するため、マイクロプロセッサは、ＰＩ（Ｐｏｓｓｉｂｌｙ  Ｉｎｃｏｒｒｅｃｔ）ビットとして知られるビットを、すべての命令及び潜在的には各種ハードウェア構成に添付する。エラーが検出されると、ハードウェアは、エラーを通知する代わりに、影響を受けた命令のＰＩビットを設定する。その後、ＰＩビットを調べ、命令の性質を特定することによって、ハードウェアは、実際に目に見えるエラーが発生したか決定することができる。
【００１２】
偽のエラーと真のエラーを区別することは複雑である。プロセッサは、それがエラーを検出した時点においてこの区別をするのに十分な情報を有していないかもしれない。例えば、命令キューがある命令にエラーを検出したとき、それは、当該命令が誤ったパスの命令であるのか否か判断することはできないかもしれない。この結果、プロセッサは、パイプラインの下流にエラー情報を伝搬する必要があり、それが上記区別をするのに十分な情報を有しているときには、当該エラーを提起する必要がある。
【００１３】
マイクロプロセッサハードウェアの各部の間にエラー情報を伝搬するため、システムは、ＰＩビットを利用する。ＰＩビットは、それが復号からリタイアメント（ｒｅｔｉｒｅｍｅｎｔ）まで下流に移動するとき、各命令に論理的に関連付けされる。
【００１４】
図２ａ〜２ｄは、命令にソフトエラーが出現したことを検出するため、ＰＩビットが命令フローパスに沿って使用されるときの一実施例を示す。ある命令について、当該命令が復号されると（２００）、ＰＩビットが命令に添付され、ゼロに初期化される。ＰＩビットは、命令にエラーがないことを示すようクリアされる。命令がパイプラインを移動すると（２０５）、それはマシーンに適応するよう複数回変換され、命令キューなどの多数の各種ストレージ構成に対して読み書きされるであろう。
【００１５】
命令キュー２１０が当該命令を受信すると、それは、命令と共にＰＩビットを格納する。命令がシングルビットアップセットを蓄積する場合、パリティエラーがフラグされる。エラーを検出すると、命令キュー２１０は、マシーンチェック例外処理を行う代わりに、影響を受けた命令のＰＩビットを１に設定する。その後、当該命令は発信され、パイプライン２０５を下流に移動する。
【００１６】
エラーチェック及びＰＩビットの更新はまた、命令実行過程における各種構成のいくつか及び／又はパイプラインにおける複数の段階において利用されるかもしれない。エラーチェックロジックは、既知の又はそうでない場合には利用可能な他の各種エラー検出技術又はパリティチェッカーの形態をとるかもしれない。さらに、エラー検出及び訂正技術は、ＰＩビットが復元不可能なエラーである場合に設定されることによって、各種段階又は各種構成において利用されるかもしれない。
【００１７】
最終的に、当該命令はコミットする（２１５）。コミット段階において、コミットハードウェアは、命令が誤ったパスの命令であったか判断するのに十分な情報を有している。そうである場合、プロセッサはＰＩビットを無視し、当該ビットが設定されていたとしても、偽のＤＵＥイベントを回避することが可能となる。そうでない場合、プロセッサは、命令のコミットポイント２１５においてマシーンチェックエラーを提起する選択肢を有する。
【００１８】
ＰＩビット機構はまた、ＰＩビットがオブジェクトからオブジェクトに正確に伝搬される限り、パイプライン２０５を移動する各オブジェクトにＰＩビットを添付することによって、一般化することが可能である。例えば、多くのマイクロプロセッサは、典型的には、ときどきチャンク（ｃｈｕｎｋ）と呼ばれる複数命令をフェッチする。チャンクは、それらが復号されるまで、パイプラインのフロントエンドを通過する。ＰＩビットは、各フェッチチャンクに添付することが可能である。チャンクがエラーに直面した場合、プロセッサは、当該チャンクのＰＩビットを設定することが可能である。その後、チャンクが複数の命令に復号されると、プロセッサは、各命令のＰＩビットを初期化するため、チャンクのＰＩビット値をコピーすることが可能である。従って、プロセッサは、ＰＩビットを使用して、各命令が復号される前に、パイプラインのフロントエンドの構成に対する偽のＤＵＥイベントを回避することが可能となる。
【００１９】
他の実施例では、プロセッサは、命令からレジスタにＰＩビット情報を転送することが可能であり、これにより、レジスタファイル上のダイナミカリーデッド命令から生じる偽のＤＵＥイベントを回避することが可能となる。命令のＰＩビットが設定される場合、エラーを提起する代わりに、プロセッサは、それが書き込むデスティネーションレジスタに当該命令のＰＩビットを転送することが可能である。以降の何れの命令もこのレジスタを読まない場合、レジスタのＰＩビットは調べられることはなく、プロセッサは、レジスタに書き込んだ第１レベルダイナミカリーデッド（ＦＤＤ）命令に対するエラーを回避するようにしてもよい。しかしながら、以降の命令が設定されているＰＩビットによりレジスタを読むとき、プロセッサはエラーを通知するようにしてもよい。
【００２０】
あるいは、レジスタのＰＩビットが設定される場合、エラーを提起する代わりに、レジスタを読み込む命令は、それのすべてのソースレジスタのＰＩビットと自らのＰＩビットとをＯＲ演算し、それをパイプラインを介し搬送することが可能である。この実施例は、従属チェーンを介しＰＩビットを伝搬し、プロセッサがＴＤＤ（Ｔｒａｎｓｉｔｉｖｅｌｙ  Ｄｙｎａｍｉｃａｌｌｙ  Ｄｅａｄ）命令を追跡することを可能にする。ＴＤＤ命令を追跡する１つの方法は、プロセッサがメモリシステム又はＩ／Ｏデバイスとやりとりするときに限ってエラーを宣言するというものである。従って、キャッシュとメインメモリを除くプロセッサのすべての構成にＰＩビットが存在し、上述したように、ＰＩビットに対する同一の継承ルールに従う場合、ＴＤＤ命令の偽のエラーもまた回避することが可能である。これが実行されるため、システムは、ストア命令２２０又はＩ／Ｏアクセスがそれのデータをキャッシュ、メモリシステム又はＩ／Ｏデバイスにコミットしようとするときに限って、エラーをフラグする。この伝搬は、レジスタファイルのＴＤＤ命令に対する偽のＤＵＥを回避するだけでなく、これらの命令及び値のフローによりパイプラインを介し他の構成を回避する。
【００２１】
他の実施例では、プロセッサは、ストアバッファやキャッシュ２２０などのメモリ構成における偽のＤＵＥイベントを追跡するため、命令又はレジスタからメモリ値にＰＩビットを転送するようにしてもよい。プロセッサは、各キャッシュブロックにＰＩビットを添付し、ストア命令がアドレスを書き込むとき、プロセッサは、ストア命令のＰＩビットをキャッシュブロックに転送することが可能である。その後、ロード２２５がキャッシュブロックを読むとき、それは、ＰＩビットを調べるか、又はそれがロードしているレジスタ２１３にＰＩビットを転送することが可能である。ＰＩビットがレジスタ２１３に転送される場合、プロセッサはまた、ダイナミカリーデッドメモリ値から生じる偽のＤＵＥイベントの通知を回避することが可能である。
【００２２】
あるいは、プロセッサチップ全体及びメモリシステム上にＰＩビットを有する場合、プロセッサは、メモリを介しＦＤＤとＴＤＤ命令の両方について偽のエラーを追跡することが可能である。このような例では、プロセッサがそれのＰＩビットセットを有するＩ／Ｏアクセス（非キャッシュロード又はストアなど）を行うときに限ってエラーが生じる。これは、設計者が共有メモリマルチプロセッサシステムの複数のプロセッサにおいてエラーを追跡することを可能にするかもしれない。
【００２３】
従って、一般にはＰＩビットは、パイプラインを介し移動するオブジェクト又は何れかのハードウェア構成に添付されてもよいが、ＰＩビットの粒度はその実現形態に依存する。例えば、ＰＩビットが６４ビットレジスタ値に添付される場合、１つのＰＩビットのみが、６４ビットの１つにおいてエラーが存在したかもしれないということを通知することが可能である。あるいは、各バイトに対してＰＩビットが存在する場合、プロセッサは、６４ビットの何れのバイトがエラーを有していたか特定するようにしてもよい。
【００２４】
図３は、ソフトエラー検出方法の一実施例を示すフロー図である。本実施例では、フローチャート３００は、命令が誤ったパスの命令であるかプロセッサが判断するケースを示す。まず、命令が復号されると（３０５）、ＰＩビットが当該命令に関連付けされ（３１０）、ゼロに初期化される。ＰＩビットをゼロに初期化することによって、これは当該命令にエラーが存在しないことを示す。次に、それのＰＩビットと共に命令が、パイプラインにキュー処理される（３１５）。命令がパイプラインを移動するとき、それはマシーンに適応するよう複数回変換され、多数の各種ストレージ要素に読み書きされるであろう。
【００２５】
命令がパイプラインを移動している間、当該命令はシングルビットアップセットを蓄積し、パリティエラーが当該命令に対してフラグされてもよい（３２０）。当該命令に対してエラーが検出される場合、パイプラインは、マシーンチェック例外処理を提起する代わりに、影響を受けた命令のＰＩビットを１に設定し（３２５）、最終的に、当該命令はコミットする（３３０）。エラーが検出されない場合、当該命令は最終的にコミットするようにしてもよい（３３０）。その後、コミットハードウェアは、当該命令が誤ったパスの命令であったか判断することが可能である（３３５）。当該命令が誤ったパスの命令であると判断されると、ＰＩビットは無視され、そうでない場合、プロセッサは、マシーンチェックエラーなどのエラーを提起する選択肢を有する（３４５）。
【００２６】
図４は、ソフトエラーを検出する１つの典型的なシステムの実現形態を示す。プロセッサ４０５が、中央処理ユニット（ＣＰＵ）やコンピュータ４００の各ユニットを有する複数のプロセッサの１つとして機能するコンピュータ４００が示される。典型的には、プロセッサ４０５は、単一の集積回路チップにより実現される。プロセッサ４０５は、１以上の実行ユニットを有する実行（処理）コア４１０を有するようにしてもよい。プロセッサ４０５のあるセクションは、命令処理装置４１５を有するよう専用のものとされている。命令処理装置４１５は、コア４１０に接続されて示されている。
【００２７】
本発明は、コア４１０の命令を実行するよう上記説明に従って実現される。メモリは、オンチップ（オンチップメモリ４２０により示されるように）又はオフチップ（オフチップメモリ４２５により示されるように）に配置することが可能である。典型的には、オンチップメモリは、キャッシュメモリ又はメインメモリ（ＲＡＭ）の一部とすることが可能である。オフチップメモリは、典型的には、メインメモリ（存在する場合には、オフチップキャッシュもまた）と、ディスク記憶媒体などの他の記憶装置から構成される。オンチップメモリ４２０とオフチップメモリ４２５は共に、個別に又は独立して、音声インタフェースデバイス４３０などの各種デバイスに接続されていてもよい。しかしながら、本発明はコア４１０による実行のため命令を処理する他の方法により構成可能であるということに留意されたい。
【００２８】
ＰＩビット機構は、偽のエラーを低減することによって偽のＤＵＥイベントを低減する。フォルト検出機能がない場合、このようなエラーは、プログラムの最終的な結果に影響を及ぼすことはないであろう。例えば、ダイナミカリーデッド命令の結果に影響を与えるフォルトは、最終的なプログラム出力を変更せず、依然としてエラーとしてハードウェアによりフラグすることが可能である。このような偽のエラーの通知を回避するため、ＰＩビット機構は、即座にエラーを通知するのでなく、ＰＩビットを介しＰＩとして影響を受けた命令及びデータをマークするようパイプラインのエラー検出ロジックを変更する。その後、プロセッサは、ＰＩ値がプログラムの出力に影響を及ぼした可能性があると以降において判断した場合に限って、エラーを通知する。
【００２９】
いくつかの実施例では、ＰＩビットは、エラーが実施に偽のエラーから真のエラーであったかプロセッサが判断可能になると、当該エラーが以降に提起することが可能となるように、エラー情報を伝搬する。従って、ＰＩビット機構は、エラーのフラグ処理からエラーの検出を分離するようにしてもよい。このことは、マイクロプロセッサの設計者に値の利用又は値に対するＰＩビットが範囲外になったとき、エラーを提起する選択肢を可能にする。
【００３０】
いくつかの実施例における他の効果は、フォルトを検出するパリティチェッカーが、マシーンチェック例外処理を提起するすべての位置に追加的なハードウェアを有する必要がないということである。代わりに、エラーがＰＩビットに示される。コミットハードウェアは、ハードウェアがマシーンチェック例外処理を提起することを求める唯一の位置となるであろう。
【００３１】
以下の説明では、限定することなく説明のために、本発明の各種特徴の完全なる理解を提供するため、特定の構成、アーキテクチャ、インタフェース、技術などの具体的な詳細が与えられた。しかしながら、本発明の各種特徴がこれらの具体的詳細から逸脱した他の具体例により実施可能であるということは、本開示の利益を有する当業者にとって明らかであろう。ある例では、周知のデバイス、回路及び方法の説明は、本発明の説明を不要な詳細さにより不明りょうにしないように省略された。
【図面の簡単な説明】
【００３２】
【図１】図１は、マイクロプロセッサのフォルトビットの可能な結果のブロック図である。
【図２ａ】ソフトエラーが命令に発生したことを検出するため、ＰＩビットが命令フローパス上で使用されるときの本発明の一実施例を示すブロック図である。
【図２ｂ】ソフトエラーが命令に発生したことを検出するため、ＰＩビットが命令フローパス上で使用されるときの本発明の一実施例を示すブロック図である。
【図２ｃ】ソフトエラーが命令に発生したことを検出するため、ＰＩビットが命令フローパス上で使用されるときの本発明の一実施例を示すブロック図である。
【図２ｄ】ソフトエラーが命令に発生したことを検出するため、ＰＩビットが命令フローパス上で使用されるときの本発明の一実施例を示すブロック図である。
【図３】図３は、本発明の一実施例による処理を示すフロー図である。
【図４】図４は、ソフトエラーを検出するため本発明を実現する一例となるコンピュータシステムを示すブロック図である。
【図１】
2008501191.tif 000003
【図２ａ】
2008501191.tif 000004
【図２ｂ】
2008501191.tif 000005
【図２ｃ】
2008501191.tif 000006
【図２ｄ】
2008501191.tif 000007
【図３】
2008501191.tif 000008
【図４】
2008501191.tif 000009
【国際調査報告】
2008501191.tif 000010
2008501191.tif 000011