(57)【特許請求の範囲】
【請求項１】
キャッシュをもつ第１プロセッサと、キャッシュをもつ第２プロセッサと、前記第１プロセッサおよび前記第２プロセッサによって共有される共有メモリを含む共有リソースとを備えたシステムにおいて、
（ａ）前記第１プロセッサが、前記第１プロセッサのキャッシュのライン（以下「キャッシュ・ライン」と称する）を反復的に読み取るステップを有し、
前記キャッシュ・ラインが前記共有メモリのライン（以下「共有メモリ・ライン」と称する）からキャッシュされ、前記共有メモリ・ラインと前記キャッシュ・ラインとのコヒーレンシがキャッシュ・コヒーレンシ・プロトコルに従い維持され、前記反復的なキャッシュ・ラインの読み取りが前記第１プロセッサを占有して前記第１プロセッサが前記共有リソースにアクセスするのを禁止し、
（ｂ）前記第２プロセッサが、前記共有メモリ・ラインにデータを書き込んで、前記共有リソースに前記第１プロセッサからアクセスできることを前記第１プロセッサに知らせるステップと、
（ｃ）前記第１プロセッサが、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記共有メモリ・ラインへの前記データの書き込みに応答して、前記キャッシュ・ラインの状態を変更するステップとをさらに有する、方法。
【請求項２】
前記第１プロセッサが、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記共有メモリ・ラインに前記第２プロセッサにより書き込まれた前記データを前記キャッシュ・ラインに取り出すステップをさらに有する、請求項１に記載の方法。
【請求項３】
前記第１プロセッサが、前記キャッシュ・ラインの読み取り、前記キャッシュ・ラインの状態の変更、および前記共有メモリ・ラインの読み取りを含む第１エラー処理手続きを実行するステップをさらに有する、請求項２に記載の方法。
【請求項４】
前記第２プロセッサが、前記第１プロセッサが前記キャッシュ・ラインを読み取る間の前記共有リソースのリセット、および前記共有リソースのリセットの完了時の前記共有メモリ・ラインへの前記データの書き込みを含む第２エラー処理手続きを実行するステップをさらに有する、請求項３に記載の方法。
【請求項５】
前記共有リソースがエラー状態に入る場合に、前記共有リソースが前記第１および第２プロセッサにそれぞれ第１および第２割込みを発するステップをさらに有し、前記第１プロセッサは前記第１割込みに応答して前記第１エラー処理手続きを実行し、前記第２プロセッサは前記第２割込みに応答して前記第２エラー処理手続きを実行する、請求項４に記載の方法。
【請求項６】
前記第１プロセッサが、前記第２プロセッサが前記共有メモリ・ラインに前記データを書き込んだことを検知するようにスヌープするステップをさらに有する、請求項１に記載の方法。
【請求項７】
前記第１プロセッサが、前記キャッシュ・ラインを反復的に読み取る期間が終了したことを判定するステップと、
前記期間の終了時、前記第１プロセッサが前記共有リソースのリセットを含む第２エラー処理手続きを実行するステップとをさらに有する、請求項１に記載の方法。
【請求項８】
キャッシュをもつ第１プロセッサと、
キャッシュをもつ第２プロセッサと、
共有メモリを含む複数の共有リソースとを備え、
前記第１プロセッサが、前記共有メモリのライン（以下「共有メモリ・ライン」と称する）を前記第１プロセッサのキャッシュのライン（以下「キャッシュ・ライン」と称する）にキャッシュし且つ前記共有メモリ・ラインと前記キャッシュ・ラインのコヒーレンシをキャッシュ・コヒーレンシ・プロトコルに従い維持するようになされたロジックをもち、
前記第１プロセッサが、前記キャッシュ・ラインを反復的に読み取るようになされたロジックをもち、前記反復的なキャッシュ・ラインの読み取りが前記第１プロセッサを占有して前記第１プロセッサが前記共有リソースにアクセスするのを禁止し、
前記第２プロセッサが、前記共有メモリ・ラインにデータを書き込んで、前記共有リソースに前記第１プロセッサからアクセスできることを前記第１プロセッサに知らせるようになされたロジックをもち、
前記第１プロセッサが、前記キャッシュ・コヒーレンシ・プロトコルに従い、前記共有メモリ・ラインへの前記データの書き込みに応答して、前記キャッシュ・ラインの状態を変更するようになされたロジックをもつ、システム。
【請求項９】
コンピュータ・システムに、請求項１ないし請求項７の何れかの方法に記載された各ステップを実行させる、コンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マルチプロセッサの操作の管理に関する。
【背景技術】
【０００２】
あるコンピューティング環境では、マルチ・ホスト・システムが、要求を受け取るＩＢＭエンタープライズ・ストレージ・サーバ（ＥＳＳ）（Ｒ）などの制御装置によって管理される記憶デバイス内のデータについてＥＳＳと通信して、一または複数の論理パスで相互接続されたハードディスク・ドライブなどの記憶デバイスへのアクセスを提供する（ＩＢＭおよびＥＳＳは、インターナショナル・ビジネス・マシーンズ・コーポレーションの登録商標である）。相互接続されたドライブは、直接アクセス記憶デバイス（ＤＡＳＤ）、独立ディスク冗長アレイ（ＲＡＩＤ）、単なるディスクの束（ＪＢＯＤ）等として構成できる。制御装置は、マルチプロセッサ型のシステムでよい。例えば、制御装置は、クラスタとしても知られる重複かつ冗長なプロセッシング・コンプレックスを含むことができ、１つが障害を起こした場合に残りのクラスタへのフェイルオーバーに備える。
【０００３】
マルチプロセッサ・システムには多様なタイプがある。あるタイプでは、プロセッサは各々がそれ自体のメモリおよびキャッシュをもつことがある。プロセッサは並行してランしてディスクを共有してもよい。あるタイプのマルチプロセッサ・システムでは、各プロセッサがそれぞれオペレーティング・システムのコピーをランすることができ、プロセッサは、例えばローカル・エリア・ネットワーク（ＬＡＮ）で疎結合できる。プロセッサ間の通信はメッセージの受渡しで行える。
【０００４】
別のタイプのマルチプロセッサ・システムでは、プロセッサは、スイッチまたはブリッジにより接続するなど、もっと密に結合することがある。プロセッサ間の通信は、例えば共有メモリで行える。
【０００５】
さらに別のタイプのマルチプロセッサ・システムでは、すべてのプロセッサでオペレーティング・システムのコピーを１つだけランすることがある。これらのタイプのマルチプロセッサ・システムは高速バスまたはスイッチで同じ筐体内に密に結合される傾向にある。さらに、プロセッサは同じグローバル・メモリ、ディスク、および入出力（Ｉ／Ｏ）デバイスを共有できる。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
共有ディスクなどの共有リソースが障害を起こす場合、マルチプロセッサ・システムのプロセッサは単に障害の発生したディスクを使うのをやめることができる。システムのプロセッサ全体で１つのオペレーティング・システムのコピーをランするマルチプロセッサ・システムでは、回復操作は容易に調整できる。例えば、ブリッジなどの共有リソースを、プロセッサの１つがブリッジをリセットするなどの回復操作を行って復元する場合、該回復操作はプロセッサの共通のオペレーティング・システムにより様々なプロセッサ間で調整できる。
【０００７】
マルチプロセッサ・システム内の各プロセッサは、共有メモリの一または複数のラインをキャッシュできるキャッシュをもつこともある。このため、２つ以上のキャッシュが共有メモリの同じラインのコピーをもつことがある。あるプロセッサが他のプロセッサのキャッシュにキャッシュされる共有メモリのライン内のデータを変更する場合、様々なキャッシュが異なる不正確なバージョンの共有メモリのラインをもつかもしれない。その結果、キャッシュされたデータは他のキャッシュまたは共有メモリに対してもはや「コヒーレント」ではないことがある。
【０００８】
複数のキャッシュ間でデータを同期するために、様々なキャッシュ・コヒーレンシ・プロトコルを採用できる。あるキャッシュ・コヒーレンシ・プロトコルは各キャッシュ・ラインに変更、排他、共有、または無効（ＭＥＳＩ）という４つの状態のうちの１つをマークする。変更状態にあるとマークされるキャッシュ・ラインは、そのキャッシュ・ラインが変更されており、そのため共有メモリのラインにある元データはもはや有効ではないことを示す。排他状態にあるとマークされるキャッシュ・ラインは、そのキャッシュ・ラインがその特定のキャッシュにしか格納されておらず、まだ変更されていないことを示す。共有状態にあるとマークされるキャッシュ・ラインは、そのキャッシュ・ラインが他のプロセッサの他のキャッシュに格納できることを示す。無効状態にあるとマークされるキャッシュ・ラインは、そのキャッシュ・ラインが無効であることを示す。
【０００９】
キャッシュ・コヒーレンシをとるには特定のコヒーレンシ・プロトコルを利用するスヌープ論理が採用されるのが一般的である。プロセッサ内のスヌープ論理はメッセージを他のプロセッサと共有する共通のバス・ラインにブロードキャストでき、あるプロセッサがそのキャッシュ内のデータを変更するたびに他のプロセッサに通知する。スヌープ論理は他のプロセッサからの当該メッセージを探してバスをスヌープすることもできる。
【００１０】
あるプロセッサが、別のプロセッサがそれ自体のキャッシュに存在するアドレスで値を変更したことを検知すると、スヌープ論理はＭＥＳＩプロトコルなどの様々なプロトコルに従ってそのキャッシュへのそのエントリを無効にする。キャッシュ・ラインが無効状態のマークをされると、プロセッサにキャッシュの値が有効ではないことを知らせることができる。その結果、プロセッサは共有メモリ内または別のキャッシュ内の正しい値を探すことができる。
【課題を解決するための手段】
【００１１】
マルチプロセッサの操作を管理するにあたって、第１プロセッサは、キャッシュ・ラインを反復的に読み取る。このキャッシュ・ラインは、第１プロセッサおよび第２プロセッサの両方が共有するリソースの共有メモリのラインからキャッシュされる。共有メモリ・ラインとキャッシュ・ラインの間のコヒーレンシは、キャッシュ・コヒーレンシ・プロトコルに従って維持される。ある側面において、反復的なキャッシュ・ラインの読み取りは第１プロセッサを占有して、第１プロセッサが共有リソースにアクセスするのを禁止する。別の側面において、共有リソースに関わる第２プロセッサの操作の完了時、第２プロセッサは、データを共有メモリ・ラインに書き込んで、共有リソースに第１プロセッサからアクセスできることを第１プロセッサに知らせる。それに応答して、第１プロセッサは、キャッシュ・コヒーレンシ・プロトコルに従い、キャッシュ・ラインの状態を変更し、第２プロセッサが書き込んだデータを読み取る。
【発明を実施するための最良の形態】
【００１２】
図１は、本明細書に記載する説明の側面を採用できるコンピューティング環境の一例である。一または複数のホスト２は記憶システム４に出される入出力（Ｉ／Ｏ）要求を制御装置６に伝えて、制御装置６が記憶システム４へのアクセスを管理する。一実施例では、制御装置６は、各々がプロセッサ１０ａ、１０ｃとホスト・アダプタ２２ａ、２２ｂとを含む２つのプロセッシング・コンプレックス８ａ、８ｂから構成される。各ホスト・アダプタ２２ａ、２２ｂは対応のプロセッシング・コンプレックス８ａ、８ｂがホスト２と通信するのを可能にし、プロセッサ１０ｂ、１０ｄを含む。図示する実施例では、各プロセッサ１０ａ、１０ｂ、１０ｃ、１０ｄはそれぞれ対応のメモリ１２ａ、１２ｂ、１２ｃ、１２ｄをもち、それぞれオペレーティング・システム１８ａ、１８ｂ、１８ｃ、１８ｄ、およびそれぞれデバイス・ドライバ２０ａ、２０ｂ、２０ｃ、２０ｄを個別に実行する。オペレーティング・システム１８ａ、１８ｂ、１８ｃ、１８ｄは互いに同じタイプでも、または各々まったく異なるタイプのオペレーティング・システムでもよい。例えば、オペレーティング・システム１８ａ、１８ｃは各々、例えばＬＩＮＵＸ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓの商標）などの組み込み型マルチスレッドのオペレーティング・システムで、オペレーティング・システム１８ｂ、１８ｄは各々、例えばホスト・アダプタの実時間タスクを実行する組み込み型ハードウェア・アブストラクション・レイヤとすることができよう。ある特定のアプリケーション次第で、様々なタイプおよび組み合わせのオペレーティング・システムを採用できることは認識される。
【００１３】
各デバイス・ドライバ２０ａ、２０ｂ、２０ｃ、２０ｄは、デバイス・ドライバ２０ａ、２０ｂ、２０ｃ、２０ｄが実行するプロセッシング・コンプレックス８ａ、８ｂ内の対応のオペレーティング・システム１８ａ、１８ｂ、１８ｃ、１８ｄと、ホスト・アダプタ２２ａ、２２ｂおよび様々なデバイス・アダプタ２４ａ、２４ｂなどの内部もしくは外部デバイスとのインターフェースを提供する。デバイス・アダプタ２４ａ、２４ｂはプロセッシング・コンプレックス８ａ、８ｂが記憶システム４と通信するのを可能にする。図示する実施例は制御装置６が、プロセッシング・コンプレックス８ａ、８ｂ、デバイス・アダプタ２４ａ、２４ｂ等など、様々なコンポーネントのうちの２つをもつように示されているが、制御装置６はこれより多いもしくは少ない数の当該コンポーネントをもつことができることは認識される。
【００１４】
プロセッシング・コンプレックス８ａはバス３１ａに連結されて、そのプロセッシング・コンプレックス８ａのプロセッサ１０ａおよびプロセッサ１０ｂと共有する共有メモリ３０ａをもつことができる。各メモリ１２ａ、１２ｂはキャッシュ２８ａ、２８ｂをもつことができ、そこに共有メモリ３０ａの一または複数のラインをキャッシュできる。同様に、プロセッシング・コンプレックス８ｂはバス３１ｂに連結されて、そのプロセッシング・コンプレックス８ｂのプロセッサ１０ｃおよびプロセッサ１０ｄと共有する共有メモリ３０ｂをもつことができる。各メモリ１２ｃ、１２ｄはキャッシュ２８ｃ、２８ｄをもつことができ、そこに共有メモリ３０ｂの一または複数のラインをキャッシュできる。キャッシュ２８ａ、２８ｂ、２８ｃ、２８ｄは制御装置６の他のメモリのラインをキャッシュできる。
【００１５】
各プロセッシング・コンプレックス８ａ、８ｂは個別のパワー境界上にあってもよい。プロセッシング・コンプレックス８ａ、８ｂは、記憶システム４に構成される特定のボリュームに出されるＩ／Ｏ要求をハンドルするように割り当てることができる。プロセッシング・コンプレックス８ａ、８ｂは、ローカル・エリア・ネットワーク（ＬＡＮ）、ストレージ・エリア・ネットワーク（ＳＡＮ）、バス・インターフェース、シリアル・インターフェース等を含めることができるデバイス・ネットワーク（図示せず）で、デバイス・アダプタ２４ａ、２４ｂ、２４ｃ、２４ｄを介して記憶システム４と通信する。
【００１６】
さらに、プロセッシング・コンプレックス８ａ、８ｂはブリッジ３４を含む接続３２で通信し、プロセッサ間の相互通信が共有アダプタ２２ａ、２２ｂなどの共有デバイスに対して行う操作の構成を管理することを可能にする。同様に、各プロセッシング・コンプレックス８ａ、８ｂはブリッジ３６ａ、３６ｂをもつ。ブリッジ３６ａはプロセッサ１０ａ、１０ｂが共有するリソースである。同様に、ブリッジ３６ｂはプロセッサ１０ｃ、１０ｄが共有するリソースである。
【００１７】
以下詳しく説明するように、プロセッサの活動の調整もプロセッサ・キャッシュ２８ａ、２８ｂ、２８ｃ、２８ｄおよびキャッシュ・コヒーレンシ・プロトコルを使って達成できる。例えば、ブリッジ３６ａなどの共有リソースが誤作動を起こすこともあり、正規の機能に復元するようリセットする必要があることがある。この回復操作は一または複数のプロセッサ・キャッシュ２８ａ、２８ｂ、およびキャッシュ・コヒーレンシ・プロトコルを使ってプロセッサ１０ａ、１０ｂ間で調整できる。同様に、ブリッジ３６ｂなどの共有リソースが誤作動を起こすことがあり、正規の機能に復元するようにリセットする必要があることがある。この回復操作は一または複数のプロセッサ・キャッシュ２８ｃ、２８ｄ、およびキャッシュ・コヒーレンシ・プロトコルを使ってプロセッサ１０ｃ、１０ｄ間で調整できる。
【００１８】
制御装置６は、エンタープライズ・ストレージ・サーバ、ストレージ・コントローラー等のあらゆるタイプのサーバ、あるいは付加記憶システム４へのＩ／Ｏ要求を管理するために使う他のデバイスを有することができ、記憶システムは相互接続されたハードディスク・ドライブ（例、ＤＡＳＤ、ＲＡＩＤ、ＪＢＯＤ等として構成される）、磁気テープ、電子メモリ等など、当分野で周知の一または複数の記憶デバイスを有することができる。ホスト２は、ローカル・エリア・ネットワーク（ＬＡＮ）、ストレージ・エリア・ネットワーク（ＳＡＮ）、広域ネットワーク（ＷＡＮ）、無線ネットワーク等などのネットワーク（図示せず）でアダプタ２２ａ、２２ｂを介して、制御装置６と通信できる。代わりに、ホスト２は周辺装置相互接続（ＰＣＩ）バスまたはシリアル・インターフェースなど、バス・インターフェースで制御装置６と通信できる。
【００１９】
共有アダプタ２２ａ、２２ｂなどの共有デバイスで障害が発生するとプロセッシング・コンプレックス８ａ、８ｂ内のオペレーティング・システム１８ａ、１８ｂ、１８ｃ、１８ｄにマシン・チェック状態を引き起こすことがあり、共有ハードウェアが１種の致命的エラーをもつ場合、両プロセッシング・コンプレックスのクラッシュを引き起こす可能性がある。一実施例では、これら回復操作はブリッジ３４などの共有デバイスから調整できる。
【００２０】
図２は、マルチプロセッサ・システムのプロセッサの操作をプロセッサ・キャッシュ、共有メモリ、およびキャッシュ・コヒーレンシ・プロトコルを使って調整できる実施例を図示する。例えば、プロセッシング・コンプレックス８ａのブリッジ３６ａに障害が発生することがある。プロセッサ１０ａ、１０ｂ間の回復操作を調整するために、キャッシュ２８ａ、２８ｂのうちの一方を共有メモリ３０ａおよびキャッシュ・コヒーレンシ・プロトコルとともに利用できる。
【００２１】
この例では、ブリッジ３６ａなどの共有リソースはエラー状態に入ると、プロセッサ１０ａ、１０ｂの各々に割込みを発することができる。このような割込みの受信に応答して、プロセッサ１０ａなどの第１プロセッサはエラー処理手続きを開始できる（ブロック２００）。同様に、プロセッサ１０ｂなどの第２プロセッサは第２エラー処理手続きを開始できる（ブロック２０２）。プロセッサ１０ａ、１０ｂはエラー処理手続きを開始するために他のイベントを利用できることは認識される。例えば、プロセッサ１０ａ、１０ｂは様々な共有デバイスの状態を監視して、エラー状態を検出したらエラー処理手続きを開始してもよい。
【００２２】
第１プロセッサ１０ａのエラー処理手続きに従い、第１プロセッサ１０ａはキャッシュ２８ａのラインなどのキャッシュ・ラインを反復的に読み取る（ブロック２０４）。この例では、反復的なキャッシュ・ラインの読み取りは第１プロセッサ１０ａを占有し、第１プロセッサ１０ａがブリッジ３６ａなどの共有リソースにアクセスするのを禁止する。この反復的な読み取りは、例えばループ・プロセスを使って達成できる。
【００２３】
さらに、第１プロセッサ１０ａに反復的に読み取られるキャッシュ・ラインは、第１プロセッサ１０ａおよび第２プロセッサ１０ｂが共有するリソースの共有メモリのラインからキャッシュされる。この例では、キャッシュ・ラインは共有メモリ３０ａのラインからキャッシュできる。加えて、例えば、ＭＥＳＩプロトコルなどのキャッシュ・コヒーレンシ・プロトコルに従い、共有メモリ・ラインとキャッシュ・ラインとのコヒーレンシが維持される。ＭＥＳＩプロトコルでは、読み取られるキャッシュ・ラインの状態は、第１プロセッサ１０ａの排他となる。同様に、他のキャッシュ・コヒーレンシ・プロトコルも利用できることは認識される。このプロトコルに従い、第１プロセッサ１０ａは共有バス３１ａを介して共有メモリ３０ａをスヌープして（ブロック２０４）、共有メモリ３０ａからキャッシュされたメモリ・ラインの変更を識別する。
【００２４】
第１プロセッサ１０ａがブリッジ３６ａなどの共有リソースへのアクセスを禁止されるため、第２プロセッサ１０ｂは、そのエラー処理手続きの実行時、第１プロセッサ１０ａからの干渉なく、ブリッジ３６ａなどの共有リソースを安全にリセットできる（ブロック２０６）。第１プロセッサ１０ａが共有リソースへのアクセスを禁止されるときに、第２プロセッサ１０ｂが引き受けることのできるエラー処理手続きは、障害の発生したリソースの隔離、または障害の発生したリソースを復元する他の措置をとるなどの他の措置を含むことができることは認識される。
【００２５】
適切な時点で、第２プロセッサ１０ｂは、共有メモリ・ラインが第１プロセッサ・キャッシュ２８ａによってキャッシュされている共有メモリ３０ａの共有メモリ・ラインにデータを書き込むことができる（ブロック２０８）。以下に述べるように、第２プロセッサ１０ｂが書き込むこのデータを使用して、第１プロセッサが共有リソースへのアクセスを再開しても安全であるという信号を第１プロセッサ１０ａに送る。このため、例えば、第２プロセッサ１０ｂが共有メモリ３０ａの共有メモリ・ラインにデータを書き込むのに適切なある時点とは、第２プロセッサ１０ｂがブリッジ３６ａのリセット操作を完了して、共有リソースまたは共有リソースもしくは複数の共有リソースの少なくとも一部の復元が成功した時点であろう。こうして、第２プロセッサ１０ｂはそのエラー処理手続きを完了できる（ブロック２１０）。第２プロセッサ１０ｂによる共有メモリ３０ａのキャッシュされたメモリ・ラインへの書き込みは、特定のアプリケーション次第で、他方のプロセッサ１０ａに他の情報を知らせるために行ってもよく、他の時点で行ってもよいことは認識される。
【００２６】
図示する実施例では、共有バス３１ａを介して共有メモリ３０ａをスヌープする第１プロセッサ１０ａは、第２プロセッサ１０ｂによる共有メモリ３０ａのキャッシュされたメモリ・ラインへのこの書き込みを検知する。この例ではＭＥＳＩキャッシュ・コヒーレンシ・プロトコルであるキャッシュ・コヒーレンシ・プロトコルに従い、第１プロセッサ１０ａは、第２プロセッサ１０ｂによる共有メモリ３０ａの共有メモリ・ラインへのデータの書き込みに応答して、キャッシュ２８ａのキャッシュ・ラインの状態を変更する（ブロック２１２）。ＭＥＳＩキャッシュ・コヒーレンシ・プロトコルに従うと、第１プロセッサ・キャッシュ２８ａのキャッシュ・メモリ・ラインの状態は無効状態に変更される。加えて、第１プロセッサ１０ａはキャッシュ２８ａのメモリ・ラインを反復的に読み取るループ・プロセスから出て、共有メモリ３０ａのキャッシュされたメモリ・ラインに書き込まれた更新データを取り出せる（ブロック２１４）。障害の発生したリソースが例えば共有メモリ３０ａへのブリッジである場合、共有リソースは第１プロセッサ１０ａが復元された共有リソースに安全にアクセスできるように第２プロセッサ１０ｂが復元していることになろう。
【００２７】
別の操作において、第１プロセッサはそのエラー処理手続きを完了する（ブロック２１６）。第２プロセッサ１０ｂがすべてのエラー状態からシステムを完全に復元していたら、第１プロセッサはその通常の処理を再開できる。別の例では、第２プロセッサの復元操作が未完了のことがある。この例では、プロセッサ１０ａおよび１０ｂは役割を交替して、復元プロセスを再開できる。こうなると、プロセッサ１０ｂは図２の「第１プロセッサ」と呼べ、またプロセッサ１０ａは図２の「第２プロセッサ」と呼べるであろう。
【００２８】
第１プロセッサ１０ｂのエラー処理手続きに従い、第１プロセッサ１０ｂはキャッシュ２８ｂのラインなどのキャッシュ・ラインを反復的に読み取る（ブロック２０４）。この例では、反復的なキャッシュ・ラインの読み取りは第１プロセッサ１０ｂを占有し、第１プロセッサ１０ｂがブリッジ３６ａなどの共有リソースにアクセスするのを禁止する。第１プロセッサ１０ｂがブリッジ３６ａなどの共有リソースにアクセスするのを禁止されるため、第２プロセッサ１０ａは、そのエラー処理手続きの実行時、第１プロセッサ１０ｂからの干渉なく、ブリッジ３６ａなどの共有リソースを安全にリセットできる（ブロック２０６）。適切な時点で、第２プロセッサ１０ａは、共有メモリ・ラインが第１プロセッサ・キャッシュ２８ｂにキャッシュされている共有メモリ３０ａの共有メモリ・ラインにデータを書き込んで（ブロック２０８）、他方のプロセッサ１０ｂに共有リソースに安全にアクセスできることを知らせることができ、第２プロセッサ１０ａはそのエラー処理手続きを完了できる（ブロック２１０）。
【００２９】
共有バス３１ａを介して共有メモリ３０ａをスヌープする第１プロセッサ１０ｂは、第２プロセッサ１０ａによる共有メモリ３０ａのキャッシュされたメモリ・ラインへのこの書き込みを検知する。キャッシュ・コヒーレンシ・プロトコルに従い、第１プロセッサ１０ｂは、第２プロセッサ１０ａによる共有メモリ３０ａの共有メモリ・ラインへのデータの書き込みに応答して、キャッシュ２８ｂのキャッシュ・ラインの状態を無効状態に変更する（ブロック２１２）。加えて、第１プロセッサ１０ｂはキャッシュ２８ｂのメモリ・ラインを反復的に読み取るループ・プロセスを出て、共有メモリ３０ａのキャッシュされたメモリ・ラインに書き込まれた更新データを取り出せる（ブロック２１４）。障害の発生したリソースが例えば共有メモリ３０ａへのブリッジである場合、共有リソースは第１プロセッサ１０ｂが復元された共有リソースに安全にアクセスできるように第２プロセッサ１０ａが復元していることになろう。
【００３０】
別の操作において、第１プロセッサ１０ｂはそのエラー処理手続きを完了する（ブロック２１６）。第２プロセッサ１０ａがすべてのエラー状態からシステムを完全に復元していたら、第１プロセッサ１０ｂはその通常の処理を再開できる。別の例では、第２プロセッサ１０ａの復元操作がまだ未完了のことがある。この例では、プロセッサ１０ａおよび１０ｂは役割を交替して、復元プロセスまたは他のプロセスを再開できる。
【００３１】
また、各プロセッサがキャッシュ・ラインを反復的に読み取る（ブロック２０４）制限時間を設定してもよい。例えば、制限時間がキャッシュ・ラインの状態が排他状態から無効状態に変わる前に終了すると、一実施例では、第１プロセッサは他方の第２プロセッサが動作していないと想定できる。その場合、第１プロセッサは第２プロセッサの役割を引き継いで、共有リソースのリセット（ブロック２０６）など第２プロセッサの回復手続きを実行できる。
【００３２】
プロセッシング・コンプレックス８ｂのブリッジ３６ｂなどの共有リソースに障害が発生することもあることは認識される。プロセッサ１０ｃ、１０ｄ間の回復操作を調整するために、キャッシュ２８ｃ、２８ｄの一方を共有メモリ３０ｂおよびキャッシュ・コヒーレンシ・プロトコルとともに利用できる。
【００３３】
説明する実施例は、標準的なプログラミング技術およびエンジニアリング技術もしくは標準的なプログラミング技術またはエンジニアリング技術を使ってソフトウェア、ファームウェア、ハードウェア、またはそのあらゆる組み合わせを製造する方法、装置、または製造物として実施できる。本明細書で使用する「製造物」という用語は、ハードウェア・ロジック（例、集積回路チップ、プログラマブル・ゲート・アレイ（ＰＧＡ）、特定用途向け集積回路（ＡＳＩＣ）等）、または磁気記憶媒体（例、ハードディスク・ドライブ、フレキシブルディスク、テープ等）、光ストレージ（ＣＤ−ＲＯＭ、光ディスク等）、揮発性および不揮発性のメモリ・デバイス（例、ＥＥＰＲＯＭ、ＲＯＭ、ＰＲＯＭ、ＲＡＭ、ＤＲＡＭ、ＳＲＡＭ、ファームウェア、プログラム可能ロジック等）などのコンピュータ読み取り可能媒体に実装できるコードまたはロジックをいう。コンピュータ読み取り可能媒体に実装されるコードはプロセッサからアクセスおよび実行する。好適な実施例を実施するコードは、伝送媒体を経由して、またはネットワークでファイル・サーバからもアクセス可能でもよい。この場合、コードが実施される製造物は、ネットワーク伝送路、無線伝送媒体、空間伝搬信号、電波、赤外線信号等の伝送媒体を有してもよい。このように、「製造物」は、コードを具体化する媒体を有することができる。加えて、「製造物」はコードを具体化、処理、および実行するハードウェア・コンポーネントとソフトウェア・コンポーネントの組み合わせを有してもよい。
【００３４】
一定の実施例は、人またはコンピュータ読み取り可能コードをコンピューティング・システムに統合する自動化プロセスによって演算命令を配備する方法に向けられ、コードはコンピューティング・システムと組み合わせて説明する実施例の操作を行える。
【００３５】
プロセッシング・コンプレックスが複数の論理区画をもつ実施例では、スーパーバイザーが多様な論理区画の実行を管理する。プロセッシング・コンプレックスが論理区画をもたない実施例では、スーパーバイザー・モジュールは、特定のアプリケーション次第で、中間デバイス・ドライバと、他方のプロセッシング・コンプレックスのオペレーティング・システムとは異なるタイプまたは同じタイプのオペレーティング・システムを有することができる。
【００３６】
説明する実施例では、制御装置６は２つのプロセッシング・コンプレックス８ａ、８ｂを含んだ。追加の実施例では、共有デバイスにアクセスするシステムが２つより多くてもよい。当該実施例では、割込みを受信するデバイス・ドライバ２０ａは複数のプロセッシング・コンプレックスと通信して、復元または他の操作を調整することができる。
【００３７】
図２の図示する操作はある順番で発生する一定のイベントを示している。代替実施例では、一定の操作は異なる順番で行ってもよく、修正または省略してもよい。また、前述のロジックにステップを追加してもよく、それでも説明する実施例に準拠する。さらに、本明細書に説明する操作は逐次的に起こしてもよく、または一定の操作を並行して処理してもよい。さらに、操作は単一プロセッシング・ユニットまたは分散プロセッシング・ユニットで行ってもよい。
【００３８】
様々な実施例の前述の説明は、例示および説明のために提示してきた。これはすべてを網羅するものでも、または開示したそのままの形態に制限するものでもない。上記教唆に鑑みて数多くの修正および変型が可能である。
【図面の簡単な説明】
【００３９】
本発明の好適な実施例を以下の図面を参照しながら単なる例として詳しく説明する。
【００４０】
【図１】実施例を実装するコンピューティング環境を図示する。
【図２】マルチプロセッサの操作を管理する操作を図示する。
【図１】
0004641545.tif 000002
【図２】
0004641545.tif 000003