(57)【特許請求の範囲】
【請求項１】
ディレクトリベースのデータ処理システムにおけるデータを転送する方法であって、
ａ）要求装置により、前記要求装置に対応する局所メモリに含まれるデータにアクセスするステップと、
ｂ）前記データ中にエラー状態が存在するかどうかを判定するステップと、
ｃ）エラー状態が存在するならば、ディレクトリにアクセスして、遠隔メモリ中に前記データが利用可能であるかどうかを判定するステップと、
ｄ）前記データが前記遠隔メモリで利用可能であるならば、前記遠隔メモリからデータを要求するステップと、
ｅ）前記局所メモリのアドレスに位置する前記データを前記遠隔メモリからのデータで上書きするステップと、
ｆ）前記アドレスから読み出すステップと、
ｇ）ステップｆ）で前記アドレスから読み出したデータ中にエラー状態が存在するかどうかを判定するステップと、
ｈ）ステップｇ）でエラー状態が存在するならば、ステップｂ）で前記データに含まれていた１個以上の故障ビットがステップｆ）で前記データに含まれていた１個以上の故障ビットにマッチするかどうかを判定するステップと、
ｉ）ステップｈ）で故障ビットにマッチするならば、故障ビットをハードエラーで置き換えるステップと
を含む方法。
【請求項２】
ステップｄ）が、前記要求装置と前記遠隔メモリとを結合する相互接続部に要求を発することを含む、請求項１記載の方法。
【請求項３】
ステップｂ）がエラー状態が存在しないと判定するならば、前記データを前記要求装置に提供するステップをさらに含む、請求項１記載の方法。
【請求項４】
前記要求装置が、メモリ制御装置、プロセッサおよびそれらの組み合わせから選択されるいずれか一つである、請求項１記載の方法。
【請求項５】
エラー状態が存在すると判定したのち、データ・エラーを記録するステップをさらに含む、請求項１記載の方法。
【請求項６】
ステップａ）の前に前記データの状態を判定するステップをさらに含む、請求項１記載の方法。
【請求項７】
前記データの状態の判定が、前記ディレクトリにアクセスすることを含む、請求項６記載の方法。
【請求項８】
ステップｃ）が、前記データの状態を判定することを含む、請求項１記載の方法。
【請求項９】
前記データの状態を判定するステップが、前記データが共用状態にあるかどうかを判定することを含む、請求項８記載の方法。
【請求項１０】
第一の処理装置、第一のメモリおよびディレクトリを有する第一のノードと、第二の処理装置および第二のメモリを有する第二のノードと、前記第一のノードと前記第二のノードとを結合する相互接続部とを含むデータ処理システムであって、
前記第一の処理装置が、
ａ）前記第一のメモリに含まれるデータにアクセスするステップと、
ｂ）前記データ中にエラー状態が存在するかどうかを判定するステップと、
ｃ）エラー状態が存在するならば、前記ディレクトリにアクセスして、前記データが前記システム上の別の場所に常駐するかどうかを判定するステップと、
ｄ）前記システム上の別の場所に前記データが常駐するならば、前記第二のノードから前記データを要求するステップと、
ｅ）前記第二のノードから前記データを受け取るステップと、
ｆ）前記第二のノードから受け取った前記データを前記第一の処理装置に供給するステップと、
ｇ）前記第二のノードから受け取った前記データで前記第一のメモリを更新するステップと、
ｈ）前記第一のメモリから読み出すステップと、
ｉ）ステップｈ）で前記第一のメモリから読み出したデータ中にエラー状態が存在するかどうかを判定するステップと、
ｊ）ステップｉ）でエラー状態が存在するならば、ステップｂ）で前記データに含まれていた該当する故障ビットがステップｈ）で前記データに含まれていた故障ビットにマッチするかどうかを判定するステップと、
ｋ）ステップｊ）で故障ビットにマッチするならば、故障ビットをハードエラーで置き換えるステップと
を実行するように構成されているデータ処理システム。
【請求項１１】
前記第一の処理装置が、ステップａ）〜ｃ）を実行するように構成されたメモリ制御装置を含む、請求項１０記載のデータ処理システム。
【請求項１２】
前記第一のノードおよび前記第二のノードが、ＮＵＭＡ（不均一メモリ・アクセス）アーキテクチャおよびＣＯＭＡ（キャッシュ専用メモリ・アーキテクチャ）から選択されるいずれか一つのアーキテクチャの構成部分である、請求項１０記載のデータ処理システム。
【請求項１３】
前記第一の処理装置が、ステップｃ）で前記データの状態を判定するように構成されている、請求項１０記載のデータ処理システム。
【請求項１４】
前記第一の処理装置が、ステップａ）の前に前記ディレクトリにアクセスして、前記データが前記第一のメモリ中に位置するかどうかを判定するように構成されている、請求項１０記載のデータ処理システム。
【請求項１５】
前記第一の処理装置が、ステップｂ）がエラー状態が存在しないと判断するならば、前記データをプロセッサに提供するステップを実行するように構成されている、請求項１０記載のデータ処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は一般に、コンピュータ・システムの分野に関する。
【０００２】
【従来の技術】
多重処理コンピュータ・システムは一般に、コンピューティング・タスクを実行するために用いることができる２個以上のプロセッサを含む。ある特定のコンピューティング・タスクを一つのプロセッサに実行させ、その間、他のプロセッサが無関係な処理タスクを実行することができる。あるいはまた、特定のタスクの構成部を多数のプロセッサの間で分散させて、コンピューティング・タスクを実行するのに要する時間を減らすこともできる。概して、プロセッサとは、１個以上のオペランドに対して演算を実行して結果を出すように構成された装置である。演算は、プロセッサによって実行される命令に応答して実行される。
【０００３】
単一アドレスベースおよびコヒーレント・キャッシュを有するマルチプロセッサ・コンピュータ・システムは、汎用性で強力なコンピューティング環境を提供する。単一アドレスベースとコヒーレント・キャッシュとがいっしょになって、データ分割および動的ロード平衡化の問題を緩和する。単一アドレスベースおよびコヒーレント・キャッシュはまた、コンパイラ、標準オペレーティング・システムおよび多重プログラミングを並列化するためのよりよいサポートを提供し、それにより、より汎用性で効果的な機械の利用を可能にする。
【０００４】
多重処理コンピュータ・システムのための一つの構造は、分散メモリ・アーキテクチャである。分散メモリ・アーキテクチャは通常、それぞれが１個以上のプロセッサおよびメモリを有する多数のノードを含む。ノードは、ノード間の通信を可能にするネットワークに結合されている。全体としてとらえると、全ノードの合わせたメモリが、各ノードがアクセスすることができる「共用メモリ」を形成している。通常、ディレクトリを使用して、どのノードが特定のアドレスに対応するデータのコピーを有するかを識別する。データのコヒーレンシーは、ディレクトリを審査してデータの状態を判定することによって維持される。
【０００５】
出現した代表的なディレクトリベースのキャッシュ・コヒーレンシー・アーキテクチャは、たとえば、ＣＣ−ＮＵＭＡ（キャッシュ・コヒーレント不均一メモリ・アクセス）およびＣＯＭＡ（キャッシュ専用メモリ・アーキテクチャ）を含む。ＣＣ−ＮＵＭＡおよびＣＯＭＡの両アーキテクチャは、分散メモリ、スケーラブル相互接続ネットワークおよびディレクトリベースのキャッシュ・コヒーレンスを有している。分散メモリおよびスケーラブル相互接続ネットワークは、必要なスケーラブル・メモリ帯域幅を提供し、ディレクトリベースの方式は、キャッシュ・コヒーレンスを提供する。ＣＣ−ＮＵＭＡアーキテクチャとは対照的に、ＣＯＭＡアーキテクチャは、ノードごとのメイン・メモリを、アトラクション・メモリ（ＡＭ）とも呼ばれる大きな二次または三次キャッシュに変換する。変換は、メイン・メモリ中のデータのキャッシュライン・サイズ区分にタグを付加することによって実施される。その結果、システム中のデータ項目の場所がデータ項目の物理アドレスと切り離され、そのデータ項目は、メモリ参照パターンに依存して、メイン・メモリ中で自動的に移送または複製される。
【０００６】
残念ながら、ＣＯＭＡおよびＮＵＭＡアーキテクチャでは、データが破損し、メモリのエラーを生じさせるおそれがある。そのようなエラーは、電子的記憶装置としてのメモリが、元々記憶されていたものとは異なる情報を戻すことがあるために生じる。一般に、メモリ・システム中では通常、２種類のエラー―反復性（ハード）エラーおよび一過性（ソフト）エラー―が生じる。ハード・エラーは、ハードウェア障害の結果であることが多く、一貫性かつ反復性であるため、診断し、訂正することは比較的やさしい。ソフト・エラーは、ビットが一度は誤った値を読み出すが、その後は正しく機能するときに生じる。
【０００７】
メモリ・エラーからの唯一の保護は、メモリ・エラー検出または訂正プロトコルを使用することである。一部のプロトコルは、８ビットのデータ・バイトの１ビットでしかエラーを検出することができないが、他のものは、２個以上のビットでエラーを自動的に検出することができる。他のプロトコルは、単一および／または多ビット・メモリ障害を検出し、訂正することができる。
【０００８】
一般的なエラー検出／訂正機構は、パリティ、エラー訂正符号（ＥＣＣ）などを含む。パリティおよびエラー訂正符号（ＥＣＣ）を使用して、中央処理装置（ＣＰＵ）と、メモリ、プログラム入出力（ＰＩＯ）装置などとの間で転送されるデータの信頼性を立証することは当該技術で周知である。さらには、ＥＣＣは、メモリ中の特定のデータ・エラーから回復するために使用される。
【０００９】
パリティ検査が使用可能になると、バイトがメモリに書き込まれるたび、パリティ生成／検査機構と呼ばれる論理回路がそのバイトを審査し、データ・バイトが偶数個の１を有するのか、奇数個の１を有するのかを判定する。偶数個の１を有するならば、９番目の（パリティ）ビットが１にセットされ、そうでなければ、０にセットされる。このように、元の８個のデータ・ビット中で何個のビットが１にセットされていようと、９個のビットがいっしょになって奇数個の１を構成する。この機構は奇数パリティと呼ばれている。データがメモリから読み出されるとき、パリティ回路はエラー検査機構として働く。この機構は、９ビットすべてを読み出し、奇数個の１があるのか、偶数個の１があるのかを再び判定する。偶数個の１があるならば、おそらくはビットの１個にエラーがある。パリティ・エラーが検出されると、パリティ回路は割り込みを生成し、この割り込みが、プロセッサに停止を命令して、誤ったメモリが実行中または実行可能なプロセスを崩壊させないようにする。
【００１０】
パリティ検査は、単ビットのエラー検出を提供するが、メモリ・エラーを訂正しない。さらには、パリティ検査は、エラーの存在を判定するだけで、エラーを訂正することはない。ＥＣＣは、単ビットおよび多ビットの両エラーを検出するだけでなく、単ビットまたは多ビットのエラーを訂正することもできる。ＥＣＣは、特殊なアルゴリズムを使用して、情報を、保護されたデータにおける単ビットまたは多ビットのエラーの回復を可能にするのに十分な詳細を含むビット・ブロックに符号化する。単ビットまたは多ビットのエラーの訂正は、使用されるＥＣＣアルゴリズムに依存する。ＥＣＣは、訂正不可能なエラーを検出すると、システムにシャットダウンを命令してデータ破損を回避させる割り込みを生成する。
【００１１】
【発明が解決しようとする課題】
従来のエラー検出／訂正機構に伴う一つの問題は、システム割り込みの頻度が望まれるよりも高いことである。割り込みは、障害の性質およびシステムのソフトウェア能力に依存して、システムまたはプロセッサのリセットを生じさせるおそれがある。割り込みは、それによって生じるシステム休止時間、データ損失および生産性損失のため、望ましいものではない。
【００１２】
したがって、システム割り込みを最小限にしながらエラーを検出するための構造および技術の必要性が残る。システムは、単ビットまたは多ビットのエラーを検出することができ、なおもシステム割り込みを回避するべきである。
【００１３】
【課題を解決するための手段】
本発明は一般に、エラーがないかデータを検査し、エラーが検出されるならば、そのデータの有効コピーがシステム中で利用可能であるかどうかを判定する方法およびシステムを提供する。
【００１４】
本発明の一つの態様では、ディレクトリベースのデータ処理システムにおいてデータを転送する方法が提供される。方法は、要求装置により、要求装置に対応する局所メモリに含まれるデータにアクセスするステップと、データ中にエラー状態が存在するかどうかを判定するステップと、エラー状態が存在するならば、遠隔メモリからデータを要求するステップとを含む。一つの実施態様では、遠隔メモリからデータを要求するステップは、まずディレクトリにアクセスしてデータの状態を判定することを含む。状態が、データが遠隔メモリで利用可能であることを示すならば、要求装置と遠隔メモリとを結合する相互接続部に要求を発する。
【００１５】
本発明のもう一つの態様では、データ処理システムは、第一のプロセッサ、第一のメモリおよびディレクトリを有する第一のノードと、第二のプロセッサおよび第二のメモリを有する第二のノードと、第一のノードと第二のノードとを結合する相互接続部とを含む。データ処理システムは、第一のプロセッサにより、第一のメモリに含まれるデータにアクセスすることと、データ中にエラー状態が存在するかどうかを判定することと、エラー状態が存在するならば、第二のメモリからデータを要求することとを含むプロセスを実行するように設計されている。
【００１６】
本発明のさらに別の態様では、分散共用メモリを有するディレクトリベースのデータ処理システムが提供される。データ処理システムは、第一のプロセッサ、第一のメモリ、第一のメモリ制御装置および第一のメモリの１個以上のメモリ・ブロックの状態データを含む第一のディレクトリを少なくとも含む第一のノードと、第二のプロセッサ、第二のメモリ、第二のメモリ制御装置および第二のメモリの１個以上のメモリ・ブロックの状態データを含む第二のディレクトリを少なくとも含む第二のノードと、第一のノードと第二のノードとを結合する相互接続部とを含む。第一のメモリ制御装置は、第一のメモリに含まれるデータにアクセスし、データ中にエラー状態が存在するかどうかを判定し、エラー状態が存在するならば、データの要求を相互接続部に発するように構成されている。
【００１７】
本発明のこれらおよび他の特徴および目的は、以下の詳細な説明および添付図面を参照することによって当業者に明らかになるであろう。
【００１８】
【発明の実施の形態】
本発明は一般に、多重処理環境においてエラーがないかデータを検査し、エラーが検出されるならば、そのデータの有効コピーがシステム中で利用可能であるかどうかを判定する方法およびシステムを提供する。データの有効コピーが利用可能であるならば、割り込みを生成することなく、データを、そのデータを要求した装置（たとえばプロセッサおよび／またはメモリ制御装置）に提供する。本発明は、有利にも、要求されたメモリ・ブロックの遠隔コピーが存在しない場合にだけシステム割り込みを生成することにより、システム利用性を増大させる。
【００１９】
一つの実施態様では、要求装置（たとえばメモリ制御装置）がメモリ読み出し要求を発して、特定の記憶場所に記憶されたデータが望まれることを示す。メモリ制御装置は、要求されたメモリ・ブロックの有効コピーが対応するメモリ中に常駐するかどうかを判定する。対応するメモリは、キャッシュ・メモリであってもよいし、非キャッシュ・メモリ（たとえばメイン・メモリ）であってもよい。メモリ・ブロックが常駐し、有効であるならば、メモリ制御装置は、応答して、要求されたデータ・ブロックのコピーを要求プロセッサに提供する。そうでなければ、メモリ・ブロックの遠隔コピーが要求される。
【００２０】
要求メモリ制御装置は、メモリ・ブロックを受け取り、必要なエラー検出および訂正ルーチンを実行することができる。受け取ったメモリ・ブロック内に回復不可能なエラーがある場合、要求メモリ制御装置は、そのメモリ・ブロックの遠隔コピーを要求する。一つの実施態様では、そのとき、対応する要求プロセッサは、回復不可能なエラー状態が存在するかどうかの判定の前に、遠隔メモリ・ブロックを処理し始める。
【００２１】
本明細書では特定のシステム・アーキテクチャ、たとえばＮＵＭＡおよびＣＯＭＡを参照するが、本発明は特定のアーキテクチャに限定されない。特定のアーキテクチャの参照は例示にすぎない。一般に、本発明は、いかなるマルチプロセッサ・ディレクトリベースのシステムにも応用することができる。
【００２２】
図１は、本発明を適用することができる一般的なマルチプロセッサ・システム１０、たとえばＮＵＭＡシステムの略ブロック図である。システム相互接続１２が、それぞれが少なくとも１個のプロセッサ、たとえばＰ０〜Ｐｉを有する複数のノード１４、たとえばノード０〜ノードｉを結合している。各プロセッサＰ０〜Ｐｉは、それに対応して、いかなる数のキャッシュ階層を含んでもよいキャッシュ・メモリ２４を有している。システム１０はさらに、入出力アダプタ１８および種々の入出力装置２０を含む。種々のキャッシュ・コヒーレンシー方式（当該技術で公知であるかないかを問わない）を使用して、データの最新有効バージョンがプロセッサＰ０〜Ｐｉのいずれによっても使用されることを保証してもよい。
【００２３】
図２は、システム相互接続１２に結合されたノード１４のさらなる詳細を提供する。ネットワーク・インタフェース２１が、ノード１４を相互接続１２に接続するのに必要な回路を提供する。ノード１４はまた、少なくとも１個のプロセッサ２２（図１のプロセッサＰｉに対応）を、一次またはオンボード・キャッシュおよび１個以上のオフチップまたは低レベルのキャッシュを含むことができるキャッシュ２４とともに含む。特定のキャッシュ・アーキテクチャが本発明を限定することはない。ノード１４はさらに、たとえば、ＮＵＭＡシステムにおけるようなメイン・メモリであってもよいし、ＣＯＭＡシステムにおけるようなアトラクション・メモリであってもよいメモリ２６を含む。メモリ制御装置２８が、ノード１４の通信キャッシュ・コヒーレンシー機能およびエラー検査をサポートする。別個に示すが、他の実施態様では、メモリ制御装置２８とプロセッサ２２とを、メモリ制御機能およびデータ処理を実行するように構成された統合処理装置とみなしてもよい。
【００２４】
メモリ２６は、メモリ・ブロック３０によって例示されるメモリ・ブロック中に配設されている。各ノード１４は、相互接続１２に結合されたノード１４ごとのメモリ２６のメモリ・ブロックへのエントリを含むディレクトリ２９を含む。ＮＵＭＡ型アーキテクチャの場合、ディレクトリ２９は、状態フィールド３２およびデータ・フィールド３４を含む。データ・フィールド３４は、メモリ２６内の一意アドレス・ブロック（たとえばメモリ・ブロック３０）に対応する。状態フィールド３２は、データ・フィールド３４中のデータが最新であるかどうか、データが、データを要求する特定のノード１４中に常駐する（すなわち、局所コピーである）のか、他のノード１４の他の場所に常駐する（すなわち、遠隔コピーである）のかに関する情報を含む。本明細書に使用する「遠隔コピー」とは、データを要求するノード以外のノード１４のメモリ中に位置するデータをいう。遠隔データは、データを要求する局所メモリ装置にアクセス可能であるいかなる形態のメモリ装置中に常駐することもできる。たとえば、遠隔データは、相互接続１２に接続された別のノード１４のプロセッサのキャッシュ・メモリまたはメイン・メモリ中に常駐することもできる。
【００２５】
ＣＯＭＡ型アーキテクチャの場合、ディレクトリ２９はまた、アドレス・フィールド３５を含む。アドレス・フィールド３５は、いかなるときでも多数のデータ・ピースを特定のメモリ・ブロック３０にマッピングすることができるアーキテクチャのために設けられている。その結果、データの場所を追跡するために、ディレクトリ２９中にアドレス・フィールド３５を維持することが必要である。
【００２６】
一つの実施態様では、キャッシュの「状態」は、ＭＥＳＩプロトコルによって判定することができる。ＭＥＳＩプロトコル中のキャッシュ・データ・ブロックは、４種の状態―「Ｍ」（変更）、「Ｅ」（独占）、「Ｓ」（共用）または「Ｉ」（無効）―のいずれかである。ＭＥＳＩプロトコルの下では、各キャッシュ・エントリ（たとえば３２バイトのセクタ）は、エントリの状態を４種の可能な状態のうちから示す２個の追加ビットを有している。状態は、エントリの初期状態および要求プロセッサによって求められるアクセスのタイプに依存して変化することができ、要求プロセッサのキャッシュのエントリごとに特定の状態がセットされる。たとえば、セクタが「変更」状態にあるとき、アドレス指定されたセクタは、変更されたセクタを有するキャッシュ中でのみ有効であり、変更された値は、システム・メモリに書き戻されてはいない。セクタが「独占」であるとき、そのセクタは、記されたセクタだけに存在し、システム・メモリとで整合している。セクタが「共用」であるならば、そのセクタは、そのキャッシュおよび少なくとも一つの他のキャッシュで有効であり、共用セクタのすべてがシステム・メモリとで整合している。最後に、セクタが「無効」であるとき、そのセクタは、アドレス指定されたセクタがキャッシュ中に常駐しないことを示す。セクタが「変更」状態、「共用」状態または「無効」状態のいずれかにあるならば、そのセクタは、特定のバス・トランザクションに依存して状態間を移動することができる。「独占」状態にあるセクタは他のどの状態に移ることもできるが、セクタは、それが最初に「無効」であるならば、「独占」になることしかできない。ＭＥＳＩプロトコルは周知であるが、米国特許第５，９４６，７０９号明細書を参照することにより、さらに理解を深めることができる。さらには、本発明は、具体的なプロトコルに特定的ではなく、ＭＥＳＩは、利用することができる一つのプロトコルを例示するだけである。
【００２７】
図３は、本発明によって使用されるプロセス３００を示す流れ図である。ステップ３０２でプロセス３００が始まり、対象のプロセッサ２２がメモリ要求（すなわち、読み出しまたは取り出し）命令を発する。ステップ３０６で、メモリ制御装置２８が、メモリ２６中の各メモリ・ブロック３０の状態を追跡するために使用されるディレクトリ２９にアクセスし、審査する。ステップ３０８で、メモリ制御装置が、要求されたデータが局所的に有効であるかどうかを判定する。すなわち、局所データ（すなわち、要求プロセッサに対応するメモリに含まれるデータ）が有効であるかどうかの判定を下す。「有効」とは、データが異なるノード１４上の別のプロセッサによって変更されていないことをいう。要求されたデータが局所的に有効であり、利用可能であるならば、方法はステップ３１２に進み、局所データにアクセスする。
【００２８】
要求されたデータが局所的に有効または利用可能でないならば、プロセスはステップ３１０に進む。ステップ３１０で、遠隔取り出し要求をメモリ制御装置２８によって発して、データの遠隔コピーを取得する。ステップ３１４で、方法３００は、データが受け取られたかどうかを問い合わせる。プロセス３００は、遠隔データが受け取られるまでステップ３１４をループし続ける。ひとたびステップ３１４で遠隔データが受け取られると、方法３００は、論理ライン３２８に沿って進み、ステップ３２０で、データがプロセッサ２２０に送られることを示す。この処理はステップ３２４で完了する。
【００２９】
場合によっては、ステップ３１４でデータを受け取ったのち、ステップ３１６で局所メモリ・ディレクトリを更新する（データをメイン・メモリまたはアトラクション・メモリに書き込んでもよい）。そして、プロセス３００はステップ３１８で完了する。すると、その後は、同じメモリ制御装置／プロセッサによるデータの要求は、局所的にデータにアクセスすることができる（ステップ３１２）。
【００３０】
一つの実施態様では、ステップ３２０で遠隔コピーをプロセッサに送ったのち、エラー検査を実行してもよい。したがって、ステップ３１４でデータが受け取られたと判定されるならば、ステップ３２０でデータをプロセッサに送り、プロセッサが処理を始め、方法３００が継続する。パリティ検査機構が、受け取られたデータにパリティ・エラーがあると判定するならば、データ訂正アルゴリズムを実行することができる。受け取ったデータにエラーがないならば、データはプロセッサ中の実行ユニットに転送される。したがって、メモリ制御装置によって提供されて受け取られたデータは有効であると判定され、そのデータは、公知のシステムのメモリ制御装置中で起こるパリティおよびＥＣＣ処理に通常伴う待ち時間を被らずに、実行ユニットに転送される。
【００３１】
ステップ３１２で局所メモリアクセスを実行したならば、ステップ３２２でエラー判定を実施する。エラー状態が存在しない（または、従来の手段、たとえばＥＣＣによって訂正可能である）ならば、ステップ３２０でデータをプロセッサ２２に提供し、処理はステップ３２４で完了する。
【００３２】
局所データが、従来の方法によって訂正することができないエラー状態を含むならば、方法３００はステップ３３０に進み、データの遠隔コピーが利用可能であるかどうかを問い合わせる。たとえばＭＥＳＩプロトコルを使用する実施態様ならば、方法３００は、データの状態が共有であるかどうかを判定するであろう。データが遠隔場所で利用可能であるならば、方法３００はステップ３１０に進み、そこで、取り出し要求を発してデータの遠隔コピーを検索する。データが遠隔場所に常駐しないならば（ステップ３３０）、ステップ３３２で機械チェック割り込みを発し、診断ルーチンなどが実行される間、データ処理を停止する。したがって、本発明は、データ・エラーが生じたかどうかを判定し、訂正不可能なデータ・エラーがある場合、データのコピーを、利用可能であるならば、どこかよそから取得する。
【００３３】
本発明はまた、図４および５に関して以下に説明する、データ・エラー識別のさらなる特徴を含むことができる。図４および５それぞれの方法４００および５００は、図３のブロック３３４の中で実施することができる。ブロック３３４は、ひとたび要求されたデータが受け取られると、ステップ３１４から論理ライン３３８に沿って進み、共用状態を有する局所データのエラー状態である場合、ステップ３３０から論理ライン３３６に沿って進む。一つの実施態様では、方法３００は、論理ライン３２８から進むステップと並列に、論理ライン３３６および３３８に沿って進む。したがって、上述したように、エラー判定を下す前に、ステップ３１０で発された遠隔取り出しから得られたデータを処理することができる。さらに、方法４００および５００におけるパリティおよびＥＣＣの使用は例示にすぎない。本発明は、パリティ、ＥＣＣまたは他の特定の検出機構の使用を必要とするわけではないことを理解すべきである。データ・エラーの何らかの表示が必要とされるすべてである。
【００３４】
まず図４を参照すると、論理ライン３３６（ステップ３３０から）がステップ４０２に進み、システムが、ＮＵＭＡ型または他のシステムではなく、ＣＯＭＡ型システムであるかどうかを問い合わせる。システムがＣＯＭＡ型であるならば、ステップ４０４で、メモリ・ブロックを、局所プロセッサにとって使用不能または無効としてマークする。ステップ４０４は、データを動的に割り当てし直すことができるハードウェアを有するキャッシュ専用システムで実施してもよい任意のステップである。ステップ４０４は、より高速のハードウェア部品が無効データをモニタするための機構を提供する。いずれの場合でも、方法はステップ４０６に進み、そこでシステムが、障害のあるＦＲＵ（フィールド交換可能ユニット）を判定するためにサービス・プロセッサが使用することができるよう、エラーを記録する。システムは、たとえばどのビットが故障したのかを知ることにより、故障カードまたはＤＩＭＭを判定することができる。一つの実施態様では、故障ビットは、障害のある局所データ（全データ・ビットおよびパリティもしくはＥＣＣビット）を、ステップ３１０で任意の経路３３８を介して遠隔取り出し要求から受け取った正常なデータとで比較することによって判定される。遠隔取り出しからのおそらくは正常なデータにマッチさせることができない局所データに含まれるビットは、故障ビットと見なされる。訂正不可能なエラー（ＵＥ）による故障ビットは通常、認知されない。したがって、公知のシステムは通常、データが多数のカードまたはメモリ・モジュールに分散している場合、故障カード／メモリ・モジュールを隔離することはできない。
【００３５】
ひとたびステップ４０６でこのエラー・データが記録されると、ステップ４０８で、オペレーティング・システムは、オペレーティング・システムがそのエラーを処理するよう通知される。たとえば、オペレーティング・システムは、致命的なエラーが起こる前に、メモリの故障区域にアクセスする現在のタスクを終わらせることができるかもしれない。
【００３６】
図５の方法は、ブロック３３４の他の方法を提供する。ステップ５０２で、要求ノードが、ステップ３１２でアクセスされたどのビットが不良であるのかを具体的に判定する。一つの実施態様では、ステップ５０２は、図４のステップ４０６に関して上述した方法で達成される。すなわち、プロセッサ／メモリ制御装置が、ステップ３１２で受け取った障害のある局所データ（全データ・ビットおよびエラー検出ビット、たとえばパリティもしくはＥＣＣビット）を、ステップ３１０で遠隔取り出し要求から受け取った正常なデータとで比較する。遠隔取り出しからのおそらくは正常なデータにマッチさせることができない局所データに含まれるビットは、故障ビットと見なされる。ステップ５０４で、メモリ制御装置は、不良データを有していたアドレスに、ステップ３１０の遠隔取り出しから得られたおそらくは正常なデータを書き込む。次にステップ５０６で、メモリ制御装置は、書き込まれたばかりのアドレスから読み出しを行い、ステップ５０８で、エラー検出を実行する。エラーが検出されないならば、方法はステップ５１０に進み、エラーが訂正されているという指示を出し、ステップ５１２で、訂正可能なエラーが生じたことを記録する。
【００３７】
ステップ５０８でエラーが検出されると、メモリ制御装置は、ステップ５１４で、そのエラーが訂正不可能であるかどうかを判定する。訂正不可能なエラーは、データに含まれるエラーが変化していないか、悪化していることを示す。エラーが訂正不可能であるならば、プロセスは、図４に関して記載したように継続する。したがって、ステップ４０２で、システムがＣＯＭＡ型システムであるかどうかを判定し、そうであるならば、ステップ４０４でメモリ・ブロックをマークする。システム・アーキテクチャにかかわらず、方法５００は、ステップ４０６でエラー・データを記録し、ステップ４０８でオペレーティング・システムに通知し、ステップ４１０で処理を完了する。
【００３８】
ステップ５１４での訂正可能なエラーは、故障ビットの少なくとも一部がステップ５０２〜５０６によって訂正されており、ステップ５０８で検出された残りの故障ビットが、メモリ制御装置の訂正機構によって訂正可能であるビットの数に等しいか、それ未満であることを示す。したがって、残りの故障ビットを訂正したのち、方法５００から抜けることができる。
【００３９】
しかし、図５に示す実施態様では、次に方法５００は、ステップ５０８での故障ビットのいずれかの部分がハード・エラーによるかどうか、すなわち、同じビットが繰り返し障害を起こすかどうかを判定する。ステップ５１６で、方法５００は、どのビットが不良であるかを判定する。すなわち、ステップ５０６から受け取ったデータを、ステップ３１０で発された遠隔データ取り出しから受け取ったデータとで比較する。遠隔データに含まれない、ステップ５０６から受け取ったデータに含まれるビットは、おそらくは不良ビットである。
【００４０】
その後、ステップ５１８で、ステップ５１６で判定された不良データ・ビットのいずれかが元の不良データ・ビット、すなわち、ステップ５０２で判定された不良ビットのいずれかにマッチするかどうか比較を実施する。故障ビットがマッチしないならば、ステップ５０８での故障ビットの１個以上がステップ３２２での故障ビットとは異なり、ソフト・エラーが生じたことが示唆される。そして、方法５００はステップ５１２に進んで、訂正可能なエラーが起こったことを記録する。
【００４１】
ステップ５１８でデータ・ビットがマッチするならば、ステップ５２０で、障害がハード・エラーであることを記す。すなわち、障害は、ステップ３２２での初期エラー状態以来、繰り返し故障するビットにおけるエラーによるものであり、ステップ５０２〜５０４によって訂正されなかった。ステップ５２２によって示す一つの実施態様では、次にメモリ制御装置がステア操作（システムでサポートされているならば）を実行して、故障ビットをハード・エラーで置き換える。ステアリングは、選択された冗長データ・ビットを使用して、記憶動作中に検出された故障データ・ビットを置き換える。ビットをステアリングしたのち、ステア・クリーンアップ処理を実行する。ステア・クリーンアップは、元のデータ・ビットを使用してデータを取り出し、ＥＣＣを使用してデータを訂正したのち、冗長データ・ビットを使用して、訂正したデータを同じアドレスに書き戻す。したがって、ステア操作は、ハード故障ビットによるその後のエラーの危険性を減らす。ステア操作が好ましいが、本発明は、後続のエラーの危険性を緩和するための他の訂正機構の使用をも考慮する。そして、方法５００はステップ５１２に進み、そこで訂正可能なエラーの発生が記録される。
【００４２】
前記は、本発明の好ましい実施態様に関するが、本発明の基本的範囲を逸することなく、本発明の他の実施態様を考案することができる。本発明の範囲は、請求の範囲によって決定される。
【００４３】
まとめとして、本発明の構成に関して以下の事項を開示する。
（１）ディレクトリベースのデータ処理システムにおけるデータを転送する方法であって、
ａ）要求装置により、前記要求装置に対応する局所メモリに含まれるデータにアクセスするステップと、
ｂ）前記データ中にエラー状態が存在するかどうかを判定するステップと、
ｃ）エラー状態が存在するならば、ディレクトリにアクセスして、遠隔メモリ中に前記データが利用可能であるかどうかを判定するステップと、
ｄ）前記データが前記遠隔メモリで利用可能であるならば、前記遠隔メモリからデータを要求するステップと、
を含む方法。
（２）ｅ）前記遠隔メモリからデータを受け取るステップと、
ｆ）前記データを前記要求装置に供給するステップと、
をさらに含む、上記（１）記載の方法。
（３）ステップｄ）が、前記要求装置と前記遠隔メモリとを結合する相互接続部に要求を発することを含む、上記（１）記載の方法。
（４）ステップｂ）がエラー状態が存在しないと判定するならば、前記データを前記要求装置に提供するステップをさらに含む、上記（１）記載の方法。
（５）前記要求装置が、メモリ制御装置、プロセッサおよびそれらの組み合わせから選択されるいずれか一つである、上記（１）記載の方法。
（６）前記遠隔メモリから受け取った前記データで前記局所メモリを更新するステップをさらに含む、上記（１）記載の方法。
（７）エラー状態が存在すると判定したのち、データ・エラーを記録するステップをさらに含む、上記（１）記載の方法。
（８）ステップａ）の前に前記データの状態を判定するステップをさらに含む、上記（１）記載の方法。
（９）前記データの状態の判定が、前記ディレクトリにアクセスすることを含む、上記（８）記載の方法。
（１０）ステップｃ）が、前記データの状態を判定することを含む、上記（１）記載の方法。
（１１）前記データの状態を判定するステップが、前記データが共用状態にあるかどうかを判定することを含む、上記（１０）記載の方法。
（１２）ｅ）前記データを含む前記局所メモリのアドレスに位置する１個以上の故障ビットを識別するステップと、
ｆ）前記アドレスにある１個以上のビットを前記遠隔メモリからの１個以上のビットで上書きするステップと、
ｇ）前記アドレスから読み出すステップと、
をさらに含む、上記（１）記載の方法。
（１３）ｈ）ステップｇ）で読み出した前記データに含まれる１個以上の故障ビットを識別するステップと、
ｉ）ステップｈ）で識別した前記１個以上の故障ビットのいずれかが、ステップｅ）で識別した前記１個以上の故障ビットにマッチするかどうかを判定するステップと、
をさらに含む、上記（１２）記載の方法。
（１４）ステップｅ）およびｈ）が、前記局所メモリに含まれるデータを前記遠隔メモリから受け取った前記データとで比較することを含む、上記（１３）記載の方法。
（１５）ｈ）前記局所メモリのアドレスに位置する前記データを前記遠隔メモリからのデータで上書きするステップと、
ｉ）前記アドレスから読み出すステップと、
ｊ）ステップｉ）で前記アドレスから読み出したデータ中にエラー状態が存在するかどうかを判定するステップと、
ｋ）ステップｊ）でエラー状態が存在するならば、ステップｂ）で前記データに含まれていた１個以上の故障ビットがステップｉ）で前記データに含まれていた１個以上の故障ビットにマッチするかどうかを判定するステップと、
をさらに含む、上記（１２）記載の方法。
（１６）エラー・データを記録するステップをさらに含む、上記（１５）記載の方法。
（１７）第一の処理装置、第一のメモリおよびディレクトリを有する第一のノードと、第二の処理装置および第二のメモリを有する第二のノードと、前記第一のノードと前記第二のノードとを結合する相互接続とを含むデータ処理システムであって、
前記第一の処理装置が、
ａ）前記第一のメモリに含まれるデータにアクセスするステップと、
ｂ）前記データ中にエラー状態が存在するかどうかを判定するステップと、
ｃ）エラー状態が存在するならば、前記ディレクトリにアクセスして、前記データが前記システム上の別の場所に常駐するかどうかを判定するステップと、
を実行するように構成されているデータ処理システム。
（１８）前記第一の処理装置が、ステップａ）〜ｃ）を実行するように構成されたメモリ制御装置を含む、上記（１７）記載のデータ処理システム。
（１９）前記第一のノードおよび前記第二のノードが、ＮＵＭＡ（不均一メモリ・アクセス）アーキテクチャおよびＣＯＭＡ（キャッシュ専用メモリ・アーキテクチャ）から選択されるいずれか一つのアーキテクチャの構成部分である、上記（１７）記載のデータ処理システム。
（２０）前記第一の処理装置が、ステップｃ）で前記データの状態を判定するように構成されている、上記（１７）記載のデータ処理システム。
（２１）前記第一の処理装置が、ステップａ）の前に前記ディレクトリにアクセスして、前記データが前記第一のメモリ中に位置するかどうかを判定するように構成されている、上記（１７）記載のデータ処理システム。
（２２）前記第一の処理装置がプロセッサおよびメモリ制御装置を含み、前記メモリ制御装置が、ステップａ）〜ｃ）を実行するように構成され、さらに、
ｄ）エラー状態が存在しないならば、前記データを前記プロセッサに提供するステップを実行するように構成されている、上記（１７）記載のデータ処理システム。
（２３）前記第一のノードおよび前記相互接続部の少なくとも一つが、
ｄ）前記システム上の別の場所に前記データが常駐するならば、前記第二のノードから前記データを要求するステップをさらに実行するように構成されている、上記（１７）記載のデータ処理システム。
（２４）前記第一のノードおよび前記相互接続部の少なくとも一つが、
ｅ）前記データを受け取るステップと、
ｆ）前記第二のノードから受け取ったデータで前記第一のメモリを更新するステップと、
をさらに実行するように構成されている、上記（２３）記載のデータ処理システム。
（２５）前記第一の処理装置が、ステップａ〜ｃ）を実行するように構成され、さらに、第一のメモリでアクセスされた前記データを、前記第二のノードから受け取ったデータとで比較して、前記第一のメモリから要求された前記データの１個以上の故障ビットを判定するように設計されているメモリ制御装置を含む、上記（２４）記載のデータ処理システム。
（２６）前記第一のノードおよび前記相互接続部の少なくとも一つが、
ｅ）前記第二のノードから前記データを受け取るステップと、
ｆ）前記第二のノードから受け取った前記データを前記第一の処理装置に供給するステップと、
ｇ）前記第二のノードから受け取った前記データで前記第一のメモリを更新するステップと、
ｈ）ステップｂ）でエラー状態が存在しないならば、ステップｈ）における前記データを前記第一の処理装置に提供するステップと、
をさらに実行するように構成されている、上記（２３）記載のデータ処理システム。
（２７）前記第一の処理装置が、ステップａ）の前に前記ディレクトリにアクセスして、前記データが前記第一のメモリ中に位置するかどうかを判定するように構成されている、上記（２６）記載のデータ処理システム。
（２８）分散共用メモリを有するディレクトリベースのデータ処理システムであって、
ａ）第一のプロセッサ、第一のメモリ、第一のメモリ制御装置および前記第一のメモリの１個以上のメモリ・ブロックの状態データを含む第一のディレクトリを少なくとも含む第一のノードと、
ｂ）第二のプロセッサ、第二のメモリ、第二のメモリ制御装置および前記第二のメモリの１個以上のメモリ・ブロックの状態データを含む第二のディレクトリを少なくとも含む第二のノードと、
ｃ）前記第一のノードと前記第二のノードとを結合する相互接続部と、
を含み、前記第一のメモリ制御装置が、前記第一のメモリに含まれるデータにアクセスし、前記データ中にエラー状態が存在するかどうかを判定し、エラー状態が存在するならば、前記データの要求を前記相互接続部に発するように構成されているディレクトリベースのデータ処理システム。
（２９）前記第一のプロセッサおよび前記第二のプロセッサが、ＮＵＭＡ（不均一メモリ・アクセス）アーキテクチャおよびＣＯＭＡ（キャッシュ専用メモリ・アーキテクチャ）から選択されるいずれか一つのアーキテクチャの構成部分である、上記（２８）記載のディレクトリベースのデータ処理システム。
（３０）前記第一のメモリ制御装置が、前記データにアクセスする前に、前記第一のディレクトリにアクセスして、前記第一のメモリに含まれる前記データの状態を判定するように設計されている、上記（２８）記載のディレクトリベースのデータ処理システム。
（３１）前記第一のメモリ制御装置が、前記要求を前記相互接続部に発する前に、前記ディレクトリにアクセスして、前記第一のノードが前記データの有効コピーを含むかどうかを判定するように設計されている、上記（２８）記載のディレクトリベースのデータ処理システム。
（３２）エラー状態が存在するならば、前記第一のノード、前記第二のノードおよび前記相互接続部の一つ以上が、前記データが前記第二のノードに含まれるかどうかを判定し、含まれるならば、前記データを前記第一のノードに提供するように構成されている、上記（２８）記載のディレクトリベースのデータ処理システム。
（３３）前記第一のメモリ制御装置がさらに、前記エラー状態が訂正不可能なエラーであるのか、訂正可能なエラーであるのかを判定するように構成されている、上記（２８）記載のディレクトリベースのデータ処理システム。
（３４）前記第一のメモリ制御装置がさらに、前記第一のメモリに含まれる前記データのどのビットがデータ・エラーを含むのかを識別するように構成されている、上記（２８）記載のディレクトリベースのデータ処理システム。
（３５）前記第一のメモリ制御装置がさらに、前記第一のメモリに含まれる前記データを、前記相互接続に発された前記要求に応答して受け取ったデータとで比較するように構成されている、上記（２８）記載のディレクトリベースのデータ処理システム。
【図面の簡単な説明】
【図１】  本発明を適用することができるマルチプロセッサ・システムのブロック図である。
【図２】  図１のノードの詳細ブロック図である。
【図３】  本発明の方法の簡略化論理流れ図である。
【図４】  図３の方法のさらなる詳細を示す論理流れ図である。
【図５】  図４に代わる論理の流れを示すもう一つの論理流れ図である。
【符号の説明】
１０  マルチプロセッサ・システム
１２  システム相互接続
１４  ノード
１８  入出力アダプタ
２０  入出力装置
２１  ネットワーク・インタフェース
２２  プロセッサ
２４  キャッシュ・メモリ
２６  メモリ
２８  メモリ制御装置
２９  ディレクトリ
３０  メモリ・ブロック
３２  状態フィールド
３４  データ・フィールド
３５  アドレス・フィールド
【図１】
0003851093.tif 000002
【図２】
0003851093.tif 000003
【図３】
0003851093.tif 000004
【図４】
0003851093.tif 000005
【図５】
0003851093.tif 000006