(57)【特許請求の範囲】
【請求項１】
複数の値を記憶するメモリ手段と、前記メモリ手段のそれぞれのアドレスに関連付けられる１つ以上の値を記憶するキャッシュ手段を含む、プログラム命令を処理するプロセッサ手段と、前記プロセッサ手段を前記メモリ手段に相互接続する手段と、
前記プロセッサ手段を制御するオペレーティング・システムと、
前記キャッシュ手段内のキャッシュ・パリティ・エラーを処理する処理手段とを備え、
当該処理手段が、
関連データ記憶割込みハンドラを有するデータ記憶割込みサービスを定義する手段と、
関連ロード命令の実行に応答して、前記キャッシュ・パリティ・エラーを検出する手段と、
前記キャッシュ・パリティ・エラーが検出されたことに応答して、データ記憶割込みを生成する手段と、
データ記憶割込みステータス・レジスタにより、前記データ記憶割込みサービスに対し、前記データ記憶割込みが前記キャッシュ・パリティ・エラーの結果であることを示す手段と、
前記プロセッサ手段のコンテキストを同期させる同期手段とを含み、
前記同期手段が、前記キャッシュ・パリティ・エラーの結果として生成される前記データ記憶割込みに応答して、前記プロセッサ手段のマシン・ステータス・レジスタ内に、前記関連ロード命令を指し示すポインタをロードすることにより、前記関連ロード命令に先行する全ての命令が既に実行を完了し、前記関連ロード命令に続くいずれの命令も実行を開始していないようにするとともに、前記キャッシュ内の、前記キャッシュ・パリティ・エラーに関連付けられるキャッシュ・ブロックをフラッシュし、
前記関連データ記憶割込みハンドラによる前記データ記憶割込みの処理からの復帰の際に、前記関連ロード命令から前記プロセッサ手段のオペレーションが再開されるようにした、コンピュータ・システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般に、コンピュータ・システムに関し、より詳細には、マシン・チェックを要求することなく、すなわち、システムの"リブート"を要求することなく、パリティ・エラーなどの検出エラーからのソフトウェア回復を可能にするように、コンピュータ・システムを動作させる方法に関し、特に、第１レベル・データ・キャッシュにおいて発生するパリティ・エラーに適応化したこうした方法に関する。
【０００２】
【従来の技術】
従来のコンピュータ・システムは、システム・メモリ素子（ランダム・アクセス・メモリすなわちＲＡＭ）及び様々な周辺装置または入出力（Ｉ／Ｏ）装置に接続される１つ以上の処理ユニットを含む。こうした周辺またはＩ／Ｏ装置には、表示モニタ、キーボード、グラフィック・ポインタ（マウス）、及び永久記憶装置（ハード・ディスク）などが含まれる。システム・メモリ素子は、処理ユニットがプログラム命令を実行するために使用され、それらの命令の他にプログラムに供給される、またはプログラムにより生成されるデータ値を記憶する。処理ユニットは様々な手段により周辺装置と通信し、それらには、汎用相互接続またはバス、或いは直接メモリ・アクセス・チャネルが含まれる。コンピュータ・システムは、モデム、プリンタ及びネットワーク・アダプタへの接続のためのシリアル・ポート及びパラレル・ポートなどの、多くの追加の構成要素を有し得る。更に他の構成要素は、上述の装置と関連して使用され、例えば、表示アダプタがビデオ表示モニタを制御するために使用され、メモリ制御装置がシステム・メモリをアクセスするために使用され得る。
【０００３】
従来の処理ユニットは、命令を適切な実行ユニットに転送する分岐ユニット及びディスパッチ・ユニットの他に、様々な実行ユニット及びレジスタを有するプロセッサ・コアを含む。命令及びデータの両方のためのキャッシュが一般に提供され、プロセッサにより繰り返しアクセスされ得る値を一時的に記憶し、値をシステム・メモリ（ＲＡＭ）からロードする長いステップを回避することにより、処理をスピード・アップする。これらのキャッシュは、それらが単一の集積化チップ上にプロセッサ・コアと一体にパッケージ化される場合、"オンボード"と呼ばれる。各キャッシュは、プロセッサ・コアとキャッシュ・メモリとの間の値の転送を管理する、キャッシュ制御装置またはバス・インターフェイス・ユニットと関連付けられる。
【０００４】
処理ユニットは、オンボード（レベル１）・キャッシュをサポートするレベル２（Ｌ２）キャッシュなどの、追加のキャッシュを含み得る。換言すると、Ｌ２キャッシュはシステム・メモリとオンボード・キャッシュ間の媒介として作用し、オンボード・キャッシュよりもより多くの情報（命令及びデータの両方）を記憶できるが、より長いアクセス時間を要する欠点がある。相互接続されるキャッシュの多くのレベルが存在するマルチレベル・キャッシュ階層も提供され得る。
【０００５】
典型的なシステム・アーキテクチャが図１に示され、これはＩＢＭ（本出願人）により販売されるＰｏｗｅｒＰＣ（商標）マイクロプロセッサの模範例である。コンピュータ・システム１０は処理ユニット１２ａ、様々なＩ／Ｏ装置１４、ＲＡＭ１６、及びファームウェア１８を含み、ファームウェアの主な目的は、コンピュータが最初にオンされる度に、オペレーティング・システムを探索し、周辺装置の１つからそれをロードすることである。処理ユニット１２ａはシステム・バス２０を用いて周辺装置と通信する（ローカル周辺バス（例えばＰＣＩ）がシステム・バスと共に使用され得る）。処理ユニット１２ａはプロセッサ・コア２２、及び命令キャッシュ２４及びデータ・キャッシュ２６を含み、これらは高速メモリ素子を用いて実現され、単一の集積化チップ２８上に、プロセッサ・コアと一緒に一体的にパッケージ化される。
【０００６】
キャッシュ３０（Ｌ２）は、プロセッサ・バス３２を介して、キャッシュ２４及び２６をサポートする。例えばキャッシュ３０は２５６キロバイトまたは５１２キロバイトの記憶容量を有するチップであり、プロセッサは、総記憶容量６４キロバイトのオンボード・キャッシュを有するＰｏｗｅｒＰＣ（商標）６０４シリーズのプロセッサである。キャッシュ３０はバス２０に接続され、メモリ１６からプロセッサ・コア２２への情報の全てのローディングは、キャッシュ３０を介して実行されなければならない。処理ユニット１２ｂにより示されるように、２つ以上のプロセッサが提供され得る。
【０００７】
値は、０または１の値を有するビット（バイナリ・デジット）を用いて、コンピュータ内に記憶される。所与のキャッシュ・ブロック内のビットは、ソフト・エラー（例えば漂遊放射線または静電気の放電により引き起こされるランダムな過渡状態）またはハード・エラー（永久状態、例えば欠陥セル）のいずれかによる、不正な値を含み得る。エラーの１つの一般的な原因は、回路リードとのワイヤ・ボンドを形成するために使用されるはんだ（Ｃ４）バンプ内の鉛により発せられるアルファ線放射に起因するソフト・エラーである。ほとんどのエラーは単一ビット・エラー、すなわちフィールド内の１ビットだけが不正である。
【０００８】
データ・キャッシュ２６内などのキャッシュ・ブロックが（エラー訂正コードなどにより訂正され得ない）エラーを含む場合、データ・キャッシュ２６がプロセッサ・コア２２にパリティ・エラーを知らせる。パリティ・エラーは検出され得るが、コンピュータのオペレーティング・システムが問題となる命令を識別し、コンテキスト同期を提供するための機構が現在存在しない。その結果、多くのシステムでは、ソフトウェア回復機構が定義されておらず、全てのパリティ・エラーがマシン・チェック、すなわちシステムのリブートを生じる。
【０００９】
"リブート"は、その基本プログラム命令、すなわちオペレーティング・システムを再ロードすることによる、コンピュータ・システムの再始動を指し示し、従って非常に時間を消費する。この制限はこうしたシステムの重大な品質問題を生じる。なぜなら、それは不便を引き起こすだけでなく、ファイルまたはデータが紛失され得るからである。従って、例えばＬ１データ・キャッシュ・パリティ・エラーからのソフトウェア回復を可能にする方法を考案することが望まれる。また、この方法が全コンテキスト同期を可能にし、複数ソフトウェア回復機構を可能にすれば、更に有利である。
【００１０】
【発明が解決しようとする課題】
従って、本発明の目的は、キャッシュ・メモリを含むプロセッサを有する、改善されたコンピュータ・システムを提供することである。
【００１１】
本発明の別の目的は、パリティ・エラーなどのキャッシュ・エラーのソフトウェア回復を可能にする、こうした改善されたコンピュータ・システムを提供することである。
【００１２】
更に本発明の別の目的は、コンテキスト同期を可能にし、障害の悪影響を低減するキャッシュ・パリティ・エラーのためのこうした回復機構を提供することである。
【００１３】
【課題を解決するための手段】
上述の目的が、コンピュータ・システムにおいてキャッシュ・パリティ・エラーを処理する方法により達成される。この方法は一般に、キャッシュ・パリティ・エラー以外の定義条件の発生時に、割込みサービスを生成し、コンピュータ・システムのプロセッサの現オペレーションを延期するステップと、プロセッサに関連付けられるキャッシュ内のパリティ・エラーを検出するステップと、割込みサービスを用いて、パリティ・エラーをプロセッサに報告するステップとを含む。ここで述べる実施例は、ロード命令に起因するオンボード（Ｌ１）・キャッシュ・パリティ・エラーの処理に適応化されるが、本発明はストア命令に起因するキャッシュ・パリティ・エラーの処理にも適応化され得る。好適な実施例では、パリティ・エラーがデータ記憶割込みを生成し、データ記憶割込みステータス・レジスタ（ＤＳＩＳＲ）を用い、データ記憶割込みがパリティ・エラーの結果であることを示すことにより報告される。
【００１４】
本発明はプロセッサ・コンテキストの同期を有利に可能にする。プロセッサのマシン・ステータス・レジスタ（保管／再記憶レジスタの１つ）が、次に完了する命令に対するポインタを保持するために使用され、それにより、次に完了する命令に先行する全ての命令が、既に実行を完了済みであり、次に完了する命令に続くいずれの命令も実行を開始していない。データ記憶割込みに応答して、対応するキャッシュ・ブロックのフラッシュが実行される。
【００１５】
【発明の実施の形態】
本発明は、検出されたキャッシュ・エラーからのソフトウェア回復を可能にする方法に関する。後述の実施例では、本発明は、ロード命令から生じるＬ１データ・パリティ・エラーを、ＡＩＸオペレーティング・システムなどのこのオペレーティング・システムにとって、見えるようにする機構を提供する（ＡＩＸはＩＢＭの商標である）。ソフトウェア回復は、命令に対するＬ１パリティ・エラーに応答して、割込み、特にデータ記憶割込み（ＤＳＩ）をシミュレートすることにより可能になる。
【００１６】
割込みはコンピュータにおいて、様々な装置がサービスを要求するために、または問題を報告するために、コンピュータ・プロセッサの注意を獲得するために使用される。プロセッサが割込みを受信すると、それは通常、その現オペレーションを延期し、その作業のステータス（プロセッサ・"コンテキスト"）を保管し、制御を割込みハンドラとして知られる特殊ルーチンに移す。割込みハンドラは割込みを生じた特定の条件を処理する命令を含む。メモリに記憶されたテーブルが、割込みハンドラを構成する様々な命令のアドレスを提供するポインタ（ベクトル）を含む。周辺装置により生成される外部割込みに加え、プロセッサ自身がプログラム・エラー（０による除算演算の間の試行など）に応答して、またはオペレーティング・システム・サービスを要求するために、内部割込みを発行できる。同時割込み要求の処理を制御するために、異なる優先順位が異なる割込みに割当てられる。割込み要求線がコンピュータの内部ハードウェア内に組み込まれ、割込みをＣＰＵに送信するために使用される。
【００１７】
データ記憶割込み（ＤＳＩ）の使用は強制的ではなく、当業者であれば、他の資源（ソフトウェアによりアクセス可能なシステム・ビット）が、特定のコンピュータ・アーキテクチャに従い使用され得る。パリティ・エラーを報告するために、データ記憶割込みを使用することは便利である。なぜなら、データ記憶割込みステータス・レジスタ（ＤＳＩＳＲ）が、使用可能な余分のビットを有し、これが割込みが実際にパリティ・エラーの結果であることを示すために使用され得るからである（ＤＳＩＳＲのビット７及び８が予備であり、通常、０にセットされる）。
【００１８】
パリティ・エラーから割込みへの変換は、好適には、全コンテキスト同期を達成するための追加の論理無しに、全てのレジスタが適切にセットされるようにするステージにおいて達成される。同期はプロセッサ内で実行中の特定のプロセスに対して有効な、全ての命令及びデータ値の状態を指し示す（同期は、多くの命令が同時にディスパッチされ得るスーパスカラ・プロセッサでは、極めて重大である）。こうした同期が重要な訳は、それがソフトウェア回復機構の豊富なセットを可能にするからであるが、同期は本発明にとって不可欠ではない。他の機構はコンテキスト同期を提供しなくてもよい。
【００１９】
この点に関して、ＤＳＩの使用は特に便利である。なぜなら、本発明は、ＤＳＩ条件を検出後、完全なコンテキスト同期のために大域フラッシュを実行するシステム（ＰｏｗｅｒＰＣ（商標）６３０ｆｐプロセッサに類似する）内に埋め込まれ得るからである。正規のマシン・チェック経路が不能にされ、パリティ・エラーが代わりにＤＳＩに変換される場合、同一のコンテキスト同期が、何の不利益無しに、すなわち他の追加のハードウェア無しに、パリティ・エラーに対して達成される。一般に、パリティ・エラー事象は次の要求を満足する場合、コンテキスト同期である。すなわち、１）オペレーションが命令のディスパッチを停止する。２）既に実行中の全ての命令が、それらが引き起こすであろう全ての例外を報告するまで、ロード・オペレーションが完了されない。３）ロード・オペレーションに先行する命令が、それらが開始されたカテゴリ（特権、再配置、記憶保護など）において実行を完了する。４）投機フェッチ及び実行の全ての結果が廃棄され、犯人のロード・オペレーションに続く命令がフェッチされ、オペレーションにより確立されたコンテキストにおいて実行される。
【００２０】
好適な実施例によれば、割込みが発生するとき、保管／再記憶レジスタ・ゼロ（ＳＲＲ０）と呼ばれるマシン・ステータス・レジスタが、全ての先行する命令が実行を完了し、続くいずれの命令も実行を開始していないように、ある命令を指し示すようにセットされる。ＳＲＲ０によりアドレス指定される命令は、割込みタイプに応じて命令を完了済みであったり、そうでなかったりする。ＳＲＲ０が割込みを生じた命令を指し示すか、それとも次の命令を指し示すかは、ステータス・ビット及び割込みタイプにより決定される。従って、それらは正しくセットされなければならない。
【００２１】
図２を参照すると、Ｌ１データ・キャッシュ・パリティ・エラーをＤＳＩに変換するために使用され得るプロセッサ論理１００の１実施例のブロック図が示される。プロセッサ論理１００は分岐ユニット１０２を含み、これは既知のように、適切な命令シーケンスを決定する。分岐ユニット１０２は、順序付けされた命令をディスパッチ・ユニット１０４に転送し、ディスパッチ・ユニットが個々の命令を適切な論理ユニット（例えば、ロード／ストア・ユニット、固定小数点実行ユニット、または浮動小数点実行ユニット）に発行する。分岐ユニット１０２はまた、保管／リストア・レジスタ（ＳＲＲ０）１０６に接続され、ロード・オペレーションが開始されるとき、ロード・オペレーションを含む命令を指し示すポインタが、ＳＲＲ０  １０６に記憶される。
【００２２】
ロード・オペレーションはディスパッチ・ユニット１０４により、１つ以上のロード／ストア・ユニット１０８に転送され、これが要求値のアドレスを生成する。このアドレスがデータ・アドレス・パイプライン１１０、及びＬ１キャッシュ・ルックアップ（ディレクトリ）１１２に伝送される。データがルックアップ１１２から、バス・インターフェイス１１４を介して、マルチプレクサ１１６の入力に転送される。マルチプレクサ１１６は、"以前の（previous）"データ・アドレス・レジスタ（ＰＲＥＤＡＲ）１１８に接続される第３の入力を有する。マルチプレクサ１１６は、パリティ・チェック回路１２０により制御され、後者は、Ｌ１キャッシュ・ルックアップ１１２がパリティ・エラーを含むデータを出力する場合、ＰＲＥＤＡＲラインを選択する。エラーを生じた命令が次に完了する場合、ＰＲＥＤＡＲ１１８の内容がデータ・アドレス・レジスタ（ＤＡＲ）１２２に転送される。適切なステータス・ビット１２４が命令が完了したか否かを示すように更新され、同期マシン・チェック割込み（例えばＤＳＩ） が生成される。ＤＡＲ１２２の内容が読出され、フラッシュ（例えば"ｄｃｂｆ"ＰｏｗｅｒＰＣ（商標）命令）が、ＤＡＲ１２２内に含まれるアドレスに対応するキャッシュ・ブロックに対して実行される。データがシステム・メモリと一貫性があった（例えば"変更（modified）"キャッシュ・コヒーレンス状態でない）と仮定すると、対応するキャッシュ・ブロックが単に"無効"とマークされ、割込み処理からの復帰の際にプログラム実行が、ＳＲＲ０が指し示す命令を継続する。データが変更された場合、マシン・チェックが生成されなければならない。
【００２３】
ＤＳＩＳＲビットを使用しない別の実施例では、パリティ・エラーが非同期マシン・チェックから、"同期"の（すなわちエラーを生じた命令に結合された）回復可能なマシン・チェックに変換される。この実施例は、別の保管／リストア・レジスタＳＲＲ１内のビットをセットし、キャッシュ・パリティ・エラーが回復可能か否かを示す。不正なライン（割込みを生じた命令）のアドレスが、ＤＡＲ内で見い出される。
【００２４】
本発明は特定の実施例に関連して述べられてきたが、この説明は本発明を制限するものではない。当業者であれば、上述の説明を鑑み、開示された実施例の様々な変更、並びに本発明の別の実施例が明らかとなろう。例えば、上述の実施例は、ロード・オペレーションの間のＬ１データ・キャッシュ・パリティ・エラーを扱ったが（これはほとんどのＬ１パリティ・エラーがロードの間に発生するので一般に意味深い）、ストア・オペレーションから生じるパリティ・エラーについても複雑度は増すものの、同様に扱うことができる。従って、こうした変更も、本発明の趣旨または範囲から逸れることなく実現可能である。
【図面の簡単な説明】
【図１】従来のマルチプロセッサ・コンピュータ・システムのブロック図である。
【図２】本発明に従い、Ｌ１データ・キャッシュ・パリティ・エラーをデータ記憶割込み変換するために使用されるプロセッサ論理の１実施例のブロック図である。
【符号の説明】
１０  コンピュータ・システム
１２ａ、１２ｂ  処理ユニット
１４  Ｉ／Ｏ装置
１６  ＲＡＭ
１８  ファームウェア
２０  システム・バス
２２  プロセッサ・コア
２４  命令キャッシュ
２６  データ・キャッシュ
２８  単一の集積化チップ
３０  キャッシュ（Ｌ２）
３２  プロセッサ・バス
１００  プロセッサ論理
１０２  分岐ユニット
１０４  ディスパッチ・ユニット
１０６  保管／リストア・レジスタ（ＳＲＲ０）
１０８  ロード／ストア・ユニット
１１０  データ・アドレス・パイプライン
１１２  Ｌ１キャッシュ・ルックアップ
１１４  バス・インターフェイス
１１６  マルチプレクサ
１１８  "以前の"データ・アドレス・レジスタ（ＰＲＥＤＡＲ）
１２０  パリティ・チェック回路
１２２  データ・アドレス・レジスタ（ＤＡＲ）
１２４  ステータス・ビット
【図１】
0003663317.tif 000002
【図２】
0003663317.tif 000003