(57)【特許請求の範囲】
【請求項１】
データの記憶及び回復を行うシステムであって、
複数のメモリユニットのそれぞれがデータ値を記憶するための複数のメモリ位置を有し、前記メモリユニットのうちの１つにおける前記メモリ位置の１つが、他の前記メモリユニットに記憶されたデータ値に関連するチェックサムを有するように構成された、複数のメモリユニットと、
前記メモリユニット内のメモリ位置にアクセスするように構成された複数のメモリコントローラであって、前記メモリコントローラのうちの１つが、いずれの前記メモリコントローラが前記チェックサムを更新可能であるかを示すインジケータを保持するように構成され、他のメモリコントローラから前記チェックサムを更新するためのチェックサム更新要求を取得し、該チェックサム更新要求に応じて前記インジケータを分析し、前記他のメモリコントローラが前記チェックサムを更新可能であることを前記インジケータが指示する場合にのみ前記チェックサム更新要求に基づいて前記チェックサムを更新するように更に構成され、前記他のメモリコントローラから前記メモリユニットに記憶された前記データ値のうちの１つを再構築するための再構築データ値を受信するように更に構成され、
該再構築データ値に応じて前記再構築データ値を前記チェックサムと結合し、前記インジケータが前記他のメモリコントローラが前記チェックサムの更新をディセーブルされていることを示すように前記インジケータを更新するように更に構成された、複数のメモリコントローラと、
からなるシステム。
【請求項２】
前記インジケータがビット列を含み、前記ビット列のそれぞれのビットが前記メモリコントローラのうちのいずれか１つに対応し、前記インジケータは、前記ビット列中の前記他のメモリコントローラに対応するビットが特定の論理状態を示すときにのみ、前記他のメモリコントローラが前記チェックサムを更新可能であることを示す、請求項１のシステム。
【請求項３】
前記１つのメモリ位置がメモリユニットオフセットによって識別され、前記チェックサムに関する前記データ値のそれぞれが、前記メモリユニットオフセットによって識別されるメモリ位置に記憶される、請求項１のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、概して、データ処理技術に関し、特に、喪失データ値に関連するチェックサム値に基づいて喪失データ値を効率的に回復するシステムおよび方法に関する。
【０００２】
【従来の技術】
大型コンピュータシステム（例えば、サーバ）は、しばしば、様々なアプリケーションのために十分な命令およびデータメモリを提供するために、複数のメモリユニットを採用する。各メモリユニットは、データを記憶することができる１つ以上のビット数の多数のメモリ位置を有し、各メモリ位置は、以降「メモリユニットアドレス」と呼ぶ特定のメモリアドレスに関連付けられ、これによって識別される。データを記憶する命令が実行される場合、この命令によって定義されるバスアドレスは、実際にデータが記憶されるメモリ位置を識別するメモリユニットアドレスを取得するのに利用される。この際、しばしば、バスアドレスをそのバスアドレスとは異なる値を有するメモリユニットアドレスにマップまたは変換するマッパが使用される。異なるメモリユニットアドレスにマップされるバスアドレスを利用することに関しては、様々な利点がある。
【０００３】
例えば、多くのコンピュータアプリケーションは、バスアドレスが連続的に使用されるようにプログラムされる。言換えれば、データを記憶するために最初に使用されるバスアドレスとして、バスアドレスのうちの１つが選択される。データを記憶するために新たなバスアドレスが利用される時、その新たなバスアドレスは、先に使用されたバスアドレスをインクリメントすることによって取得される。
【０００４】
連続的なバスアドレスが同じメモリユニットのメモリユニットアドレスにマップされる場合、非効率になる可能性がある。この場合、メモリユニットへデータを記憶及びメモリユニットからデータを取得するための時間は限られている。２つの連続的なデータ記憶が同じメモリユニットに対して発生する場合、第２のデータ記憶動作は、この第２のデータ記憶動作に先立って第１のデータ記憶動作が完了するまで待たなければならない場合がある。しかしながら、２つの連続的なデータ記憶が異なるメモリユニットで生じる場合、第２のデータ記憶は第１のデータ記憶が完了する前に開始することができる。メモリ待ち時間を最小限にしかつメモリ帯域幅を最大限にするために、連続的なバスアドレスは可能な限り多くのメモリユニットにアクセスするべきである。これは、また、メモリインタリーブを最大限にすること、とも言うことができる。
【０００５】
結果として、上述したマッパは、しばしば、各連続的なバスアドレスが異なるメモリユニットのメモリユニットアドレスに変換されるように、バスアドレスをメモリユニットアドレスにマップするように設計される。例えば、第１の値を有するバスアドレスは、第１のメモリユニットの位置を識別するメモリユニットアドレスにマップされ、次に高い値を有するバスアドレスは、第２のメモリユニットの位置を識別するメモリユニットアドレスにマップされる。従って、１つのコンピュータアプリケーションによる２つの連続的なデータ記憶が、同じメモリユニットにおいて行われないこともありうる。言換えれば、コンピュータアプリケーションからの連続的なデータ記憶は、複数のメモリユニットにわたってインタリーブされることもありうる。
【０００６】
メモリユニットの１つが障害を起こした場合にデータの回復を可能にするため、しばしばバックアップシステムが採用される。例えば、引用をもってその開示内容がすべて本明細書内に包含されたものとする米国特許第４，８４９，９７８号は、障害のあるメモリユニットのデータを回復するために使用することのできるチェックサムバックアップシステムを述べている。一般的なコンピュータシステムのメモリユニット内に記憶されるデータをバックアップするために、コンピュータシステムのメモリユニットのうちの１つが、チェックサムメモリユニットとして設計される。チェックサムメモリユニットの各メモリ位置は、他の非チェックサムメモリユニットの位置と関連付けられる。動作中、チェックサム値は、後により詳細に説明する技術に従って、チェックサムメモリユニットの各メモリ位置に保持される。各チェックサム値は、チェックサム値を記憶しているチェックサムメモリ位置と相関するメモリ位置のいずれかに記憶される非チェックサムデータ値のいずれかを回復するために利用することができる。チェックサムメモリ位置に記憶されるチェックサム値と、チェックサムメモリ位置と相関する位置に記憶される非チェックサム値のそれぞれを、本明細書ではまとめて「チェックサムセット」と呼ぶ。
【０００７】
チェックサムメモリユニットの各位置は、０に初期化される。非チェックサムメモリユニットのうちの１つの位置に記憶されている各データ値は、その１つの非チェックサムメモリユニットの位置に予め記憶されたデータ値と排他的論理和がとられる。言換えれば、データ記憶動作によって記憶されているデータ値は、このデータ記憶動作によって上書きされるデータ値と排他的論理和がとられる。そして、この排他的論理和演算の結果は、チェックサムメモリユニットの相関するアドレスの「チェックサム」と呼ばれる値と排他的論理和がとられる。そして、上記排他的論理和演算の結果は、チェックサムメモリユニットの上記アドレスに、新たなチェックサム値として記憶される。
【０００８】
メモリユニットに障害が発生した場合、障害が発生したメモリユニットの位置に記憶されているデータ値は、チェックサムメモリユニットの相関する位置のチェックサム値を、同様にそのチェックサムの位置と相関する位置に記憶されている他のメモリユニットの値の各々と排他的論理和をとることにより、回復することができる。チェックサムを保持しおよびチェックサムに基づいて喪失データ値を回復するプロセスは、本技術分野において一般的に知られている。
【０００９】
【発明が解決しようとする課題】
不都合なことに、チェックサムセットの喪失データ値の回復中、大抵のコンピュータシステムは、同じチェックサムセットの他のデータ値を記憶するメモリ位置へのデータの書込みを行うことができない。この場合、メモリユニットのうちの１つへデータ値を書込むことにより、喪失データ値を回復するために利用されているチェックサム値への更新がもたらされる場合があり、従って、現チェックサムと矛盾するデータが、喪失した情報を再構築するために使用される可能性がある。かかる更新によりチェックサム情報が矛盾しないことを保証するために、追加のステップをとることができなければ、データ回復プロセスの誤りが発生する可能性がある。
【００１０】
データ回復中に、コンピュータシステムが喪失データ値のチェックサムセットへのデータ記憶を続けることが許可される場合、データ回復で使用されているチェックサムに対する更新によるデータ回復誤りを防止する追加のステップをとることは、複雑化する可能性がある。このため、大抵のコンピュータシステムは、データ回復プロセスにおける誤りを防止するために、データ回復プロセスが開始されると、チェックサムセットの非チェックサムデータ値を記憶するいかなるメモリ位置へのデータ書込みも禁止する。データ回復プロセスが完了すると、先のメモリ位置へのデータ書込みは再びイネーブルされる。しかしながら、データ回復プロセス中にコンピュータシステムがチェックサムセットへの書込み要求をサービスすることができないようにすることは、コンピュータシステムの全体的な効率を低下させる。
【００１１】
このように、本業界において、コンピュータシステムに対して、チェックサムセットのデータ値を上書きする書込み要求を一時的に規制することなく、コンピュータシステムの動作不能なメモリユニットからチェックサムセットのデータ値を回復するシステムおよび方法を提供する必要があり、それはまだ解決されていない。
【００１２】
【課題を解決するための手段】
本発明は、上述したような従来技術の欠点および欠陥を克服する。概して、本発明は、メモリから喪失データ値を効率よく回復するシステムおよび方法を提供する。
【００１３】
本発明のデータ回復システムは、構造上、データ値を記憶するメモリ位置を有する複数のメモリユニットを利用する。特定のチェックサムセットの複数のデータ値のチェックサムは、メモリ位置のうちの１つに保持される。複数のデータ値のうちの１つは、残りの複数のデータ値の各々をチェックサムと結合することにより、回復することができる。データ回復プロセス中に複数のデータ値のうちの１つを取得した後、取得されたデータ値の位置にアクセスしようとするいかなる後続の試みによっても、チェックサムに対する更新がもたらされない、ということを保証するステップがとられる。従って、データ回復プロセス中、データ回復プロセスに誤りをもたらすことなく、チェックサムセットのデータ値を記憶している位置にアクセスする（例えば、読出しまたは書込みを行う）ことができる。
【００１４】
本発明の他の特徴および利点は、当業者には、以下の詳細な説明を添付の図面に関連して読み考察することにより明らかとなろう。かかる特徴および利点はすべて、本発明の範囲内に含まれ特許請求の範囲によって保護される、ということが意図されている。
【００１５】
本発明は、以下の図面を参照してよりよく理解することができる。図面の要素は、必ずしも互いに一定の比率で描かれる必要はなく、本発明の原理を明確に例示することに重きがおかれている。更に、各図面を通して同じ参照番号は対応する部分を示している。
【００１６】
【発明の実施の形態】
図１は、複数のメモリシステム１９ａ〜１９ｃに連結された複数の処理ユニット１７ａ〜１７ｅを含む従来の処理システム１５を示す。図２に示すように、各処理ユニット１７ａ〜１７ｅは、本技術分野において周知の技術によって命令を実行するように構成された１つまたは複数のプロセッサ２２を含む。実行中は、しばしばデータを取得および記憶することが必要である。
【００１７】
プロセッサ２２のうちの１つによる命令の実行に応じてデータ値が記憶される時、プロセッサ２２は、記憶要求をマッパ２６に送信する。記憶要求は、記憶されるデータ値及びそのデータ値が記憶される場所を示すバスアドレスを含む。マッパ２６は、バスアドレスを、メモリシステム識別子とメモリユニットオフセットとを含むメモリユニットアドレスにマップするように構成されている。メモリシステム識別子は、メモリシステム１９ａ〜１９ｃのうちの１つを識別する。マッパ２６は、書込み要求をメモリシステム１９ａ〜１９ｃの各々に送信するように構成されている。書込み要求は、記憶されるデータ値、メモリシステム識別子およびメモリユニットオフセットを含み、かつそれらによって定義される。
【００１８】
図３に示すように、メモリシステム１９ａ〜１９ｃの各々は、それぞれメモリコントローラ３２ａ〜３２ｃとそれぞれメモリユニット３５ａ〜３５ｃとを含む。メモリユニット３５ａ〜３５ｃの各々は、データを記憶し取得することができる複数のメモリ位置を含む。前述の書込み要求に含まれるメモリシステム識別子によって識別されるメモリシステム１９ａ〜１９ｃのメモリコントローラ３２ａ〜３２ｃは、書込み要求のデータ値（すなわち、記憶されるデータ値）を、メモリユニットオフセットに基づいて識別されたメモリシステム１９ａ〜１９ｃのメモリユニット３５ａ〜３５ｃに記憶するように構成されている。これに関し、メモリユニットオフセットは、メモリユニット３５ａ〜３５ｃの各々の１つの位置に対応し、識別されたメモリシステム１９ａ〜１９ｃのメモリコントローラ３２ａ〜３２ｃは、受信した書込み要求のデータ値をメモリユニットオフセットに対応するメモリユニット位置に記憶するように構成されている。
【００１９】
処理システム１５のパフォーマンスを向上させるために、マッパ２６は、連続したバスアドレスを異なるメモリシステム１９ａ〜１９ｃにわたってインタリーブ方式でマップするように構成されている。例えば、プロセッサ２２からの各バスアドレスは、８ビットの２進情報とした場合、００００００００から１１１１１１１１の範囲の値をとることができる。最初の４つの連続したバスアドレスは、００００００００、０００００００１、００００００１０および００００００１１である。プログラマは、一般に、バスアドレスを連続した順序で利用する。従って、データ値を記憶するために最初にバスアドレス００００００００が使用される場合、次にはアドレス０００００００１が、データを記憶するために使用される次の新たなバスアドレスとなる可能性が高い。そして、バスアドレス００００００１０が使用されると、次はバスアドレス００００００１１が使用される可能性が高い。このパターンは、それ以上新たなバスアドレスが必要とされなくなるか、またはバスアドレスのすべてが使用されるまで続けられる可能性が高い。
【００２０】
上記連続したバスアドレスをメモリシステム１９ａ〜１９ｃにわたってインタリーブ方式でマップするために、マッパ２６は、第１のバスアドレス（００００００００）を、メモリシステム１９ａを識別するメモリシステム識別子を有するメモリユニットアドレスにマップする場合がある。そして、マッパ２６は、第２のバスアドレス（０００００００１）を、メモリシステム１９ｂを識別するメモリシステム識別子を有するメモリユニットアドレスにマップする場合がある。次いで、マッパ２６は、第３のバスアドレス（００００００１０）を、残りのメモリシステム１９ｃを識別するメモリシステム識別子を有するメモリユニットアドレスにマップする場合がある。このプロセスは、新たなバスアドレスがマッパ２６によって受信されるたびに繰返される。例えば、マッパ２６は、第４のバスアドレス（００００００１１）を含む記憶要求を受信すると、第４のバスアドレスを、メモリシステム１９ａを識別するメモリシステム識別子を有するメモリユニットアドレスにマップする。
【００２１】
同じメモリシステム１９ａ〜１９ｃにマップされる各バスアドレスは、好ましくは異なるメモリユニットオフセットを有するメモリユニットアドレスにマップされる。従って、バスアドレスのセットが同じメモリシステム１９ａ〜１９ｃにマップされても、それらバスアドレスの各々は一意のメモリユニットアドレスにマップされる。したがって、上記セットの各バスアドレスは、同じメモリシステム１９ａ〜１９ｃの異なる位置にマップされる。
【００２２】
本明細書で上述した技術と同様の技術によって、データをメモリシステム１９ａ〜１９ｃから取得することができる。これに関して、プロセッサ２２のうちの１つがデータを取得する命令を実行すると、取得要求は、プロセッサ２２によりプロセッサ２２に連結されたマッパ２６に送信される。取得要求は、データが取得される場所を示すバスアドレスを含む。マッパ２６は、バスアドレスを、メモリシステム識別子とメモリユニットオフセットとを含むメモリユニットアドレスにマップする。メモリシステム識別子は、要求されたデータを記憶しているメモリシステム１９ａ〜１９ｃを識別し、メモリユニットオフセットは、データが実際に記憶されている識別されたメモリシステム１９ａ〜１９ｃのメモリユニット３５ａ〜３５ｃ内の位置に対応する。
【００２３】
マッパ２６は、取得要求に応じて読出し要求をメモリシステム１９ａ〜１９ｃの各々に送信する。読出し要求は、取得要求のバスアドレスから変換された上記メモリユニットアドレスを含み、かつそれによって定義される。読出し要求のメモリシステム識別子によって識別されるメモリシステム１９ａ〜１９ｃのメモリコントローラ３２ａ〜３２ｃは、関連するメモリユニット３５ａ〜３５ｃの読出し要求のメモリユニットオフセットに対応する位置においてデータ値を取得する。そして、識別されたメモリシステム１９ａ〜１９ｃは、取得されたデータ値を、要求している処理ユニット１７ａ〜１７ｅに送信する。この時、メモリコントローラ３２ａ〜３２ｃは、取得されたデータ値をマッパ２６に返し、マッパ２６がこのデータ値を、要求しているプロセッサ２２（すなわち、上述した取得要求を発行したプロセッサ２２）に送信してよく、あるいは、メモリコントローラ３２ａ〜３２ｃは、データ値を、マッパ２６を利用せずに要求しているプロセッサ２２に送信してもよい。
【００２４】
図１に示すように、処理システム１５はまた、処理ユニット１７ａ〜１７ｅに連結されたチェックサムメモリシステム３９も含む。図３に示すように、チェックサムメモリシステム３９は、構造上、他のメモリシステム１９ａ〜１９ｃと同様に構成されている。より詳細には、チェックサムメモリシステム３９は、チェックサムメモリコントローラ４１とチェックサムメモリユニット４３とを含む。チェックサムメモリコントローラ４１は、チェックサムメモリシステム３９によって受信されたメモリユニットアドレスに基づいてデータを記憶し取得するように設計されている。同じメモリユニットオフセットに対応するメモリシステム１９ａ〜１９ｃの各メモリユニット位置のチェックサムが、上記メモリユニットオフセットに対応するチェックサムメモリユニット３９のメモリユニット位置に保持される。言い換えれば、チェックサムセットの各非チェックサムデータ値が、メモリシステム１９ａ〜１９ｃのうちの１つの同じメモリユニットオフセットによって識別されるメモリ位置に記憶され、チェックサムセットのチェックサム値が、メモリシステム３９のこの同じメモリユニットオフセットによって識別される位置に記憶される。
【００２５】
チェックサムメモリユニット４３の値は、０に初期化される。マッパ２６によって記憶要求から変換される各書込み要求は、他のメモリシステム１９ａ〜１９ｃに送信される。上述したように、送信された書込み要求のメモリユニットアドレスによって識別されるメモリシステム１９ａ〜１９ｃのメモリコントローラ３２ａ〜３２ｃは、書込み要求のデータ値を、メモリユニットアドレスのメモリユニットオフセットに対応するメモリユニット位置（「宛先位置」と呼ばれる）に記憶するように構成されている。新たな値が宛先位置に記憶されるため、チェックサム更新は、宛先位置に記憶されるデータ値のチェックサムセットのチェックサムを更新するように実行されなければならない。従って、データ記憶を実行する際、識別されるメモリシステム１９ａ〜１９ｃのメモリコントローラ３２ａ〜３２ｃは、宛先位置に記憶されるデータ値を、宛先位置に予め記憶されているデータ値と（すなわち、書込み要求に応じて上書きされたデータ値と）排他的論理和をとるようにも設計されている。そして、上記メモリコントローラ３２ａ〜３２ｃは、チェックサムメモリシステム３９に対し、この排他的論理演算の結果と、宛先位置と相関するメモリユニットオフセットとを送信することにより、チェックサム更新を実施する。チェックサム更新が完了するまで、宛先位置に対するいかなる読出しまたは書込み動作も発生を開始してはならない。
【００２６】
チェックサムメモリコントローラ４１は、この結果を、受信したメモリユニットオフセット（すなわち、宛先位置を識別するメモリユニットオフセット）に対応するチェックサムメモリユニット位置に現在記憶されているデータ値と排他的論理和をとるように構成されている。そして、チェックサムメモリコントローラ４１は、この排他的論理和演算の結果を、チェックサムメモリユニット４３の上記位置（すなわち、宛先位置のデータ値を含むチェックサムセットのチェックサムを記憶しているチェックサムメモリユニット位置）に記憶する。これが発生すると、チェックサム更新は完了し、完了したチェックサム更新によって更新されるチェックサムメモリユニット４３の位置は、宛先位置のデータ値を含むチェックサムセットのチェックサムを記憶していなければならない。チェックサム更新は、チェックサムメモリコントローラ４１が同時に、同じチェックサムセットの他のメモリコントローラ３２ａ〜３２ｃからのメモリデータを再構築している場合であっても、終了することが許可されなければならない。システム１５において発生する各データ記憶に対し上述した技術を実施することにより、特定のメモリユニットオフセットに対応するチェックサムメモリユニット４３のそれぞれの位置は、その特定のメモリユニットオフセットに対応するメモリユニット３５ａ〜３５ｃの位置に現在記憶されているデータ値のチェックサムを記憶していなければならない。
【００２７】
メモリシステム１９ａ〜１９ｃのいずれに障害が発生しても、障害が発生したメモリシステム１９ａ〜１９ｃに記憶されたデータ値は、チェックサムメモリシステム３９のデータ値を使用することによって回復することができる。障害が発生したメモリシステム１９ａ〜１９ｃに記憶されているデータ値を回復するために、他の使用可能なメモリシステム１９ａ〜１９ｃの各々の同じメモリユニットオフセットに対応するメモリユニット位置における各データ値と、チェックサムメモリユニット３９の上記メモリユニットオフセットに対応する位置に記憶されたチェックサムデータ値との排他的論理和がとられる。言い換えれば、チェックサムセットの喪失データ値を除く各非チェックサムデータ値は、チェックサムセットのチェックサムと排他的論理和がとられる。これら排他的論理和演算の結果は、障害が発生したメモリシステム１９ａ〜１９ｃの同じメモリユニットオフセットに対応するメモリユニット位置に記憶されたデータ値でなければならない。
【００２８】
しかしながら、上記排他的論理和演算中にメモリユニット１９ａ〜１９ｃのうちの１つへのデータ値の記憶のためにチェックサムが更新される場合、データ回復プロセスの誤りが発生する可能性がある。このため、従来技術の部分で説明したように、マッパ２６からチェックサムセットの非チェックサム値を記憶するメモリユニット位置への書込み要求の送信は、通常、チェックサムセット内のチェックサム値を利用するいかなるデータ回復プロセス中にも行われない。これにより、回復プロセス中のあり得るデータ誤りが防止されるが、システム１５の全効率が低下する。
【００２９】
本発明は、概して、チェックサムに基づいてデータ値を回復する改良されたシステムおよび方法に関する。図４は、本発明を実現するために利用され得るコンピュータシステム１１２を示す。図４に示すように、コンピュータシステム１１２は、好ましくは処理システム１１５に含まれるメモリに記憶されるコンピュータアプリケーションの命令を実行するように構成された処理システム１１５を含む。処理システム１１５は、１つまたは複数のバスを含むことができるローカルインタフェース１２３を介して、コンピュータシステム１１２内の他の要素と通信しそれらを駆動する。更に、入力装置１２４、例えばキーボードまたはマウスは、システム１１２のユーザがデータを入力するために使用することができ、画面表示装置１２５またはプリンタ１２６は、ユーザにデータを出力するために使用することができる。ディスク記憶機構１２７は、不揮発性ディスク（例えば、磁気的、光学的等）との間でデータを転送するためにローカルインタフェース１２３に接続されることが可能である。システム１１２は、システム１１２がネットワーク１３４とデータを交換することができるようにするネットワークインタフェース１３３に接続されることが可能である。
【００３０】
また、コンピュータシステム１１２は、後により詳細に説明するように、好ましい実施の形態においてコンピュータシステム１１２の動作を制御するために使用されるシステムマネージャ１３６も含む。システムマネージャ１３６は、ソフトウェア、ハードウェアまたはそれらの組合せによって実現することができる。なお、システムマネージャ１３６は、ソフトウェアで実現される場合、コンピュータベースシステム等の命令実行システム、装置または機器、プロセッサ内蔵システム、あるいは、命令実行システムか装置かまたは機器からの命令をフェッチしその命令を実行することができる他のシステムによって、またはそれと接続して使用される、いかなるコンピュータ読取可能媒体にも記憶し転送することができる。例えば、システムマネージャ１３６によって定義される命令は、処理システム１１５の１つ以上ののプロセッサによって実行することが可能である。
【００３１】
本明細書のコンテキストにおいて、「コンピュータ読取可能媒体」は、命令実行システム、装置または機器によってまたはそれと接続して使用されるプログラムを、含み、記憶し、通信し、伝搬しまたは転送することができるいかなる手段であってもよい。コンピュータ読取可能媒体は、例えば、限定されないが、電子、磁気、光、電磁気、赤外線または半導体のシステム、装置、機器または伝搬媒体とすることができる。コンピュータ読取可能媒体のより特定の例（非網羅的リスト）には、以下のものが含まれる。すなわち、１つまたは複数のワイヤを有する電気的接続（電子）、ポータブルコンピュータディスケット（磁気）、ランダムアクセスメモリ（ＲＡＭ）（磁気）、リードオンリメモリ（ＲＯＭ）（磁気）、消去可能プログラム可能リードオンリメモリ（ＥＰＲＯＭまたはフラッシュメモリ）（磁気）、光ファイバ（光）およびポータブルコンパクトディスクリードオンリメモリ（ＣＤＲＯＭ）（光）である。なお、コンピュータ読取可能媒体は、プログラムが、例えば用紙または他の媒体の光学式走査により電子的に捕捉され、その後コンパイル、翻訳または必要な場合は適当な方法で他の方法で処理され、その後コンピュータメモリに記憶されることが可能であるならば、プログラムが印刷される用紙または他の適当な媒体でさえあってもよい。
【００３２】
図５に示すように、処理システム１１５は、複数のメモリシステム１３９ａ〜１３９ｅに連結された複数の処理ユニット１３７ａ〜１３７ｅを含む。図６に示すように、各処理ユニット１３７ａ〜１３７ｅは、本技術分野において周知の技術により命令を実行するように構成された１つまたは複数のプロセッサ１４２を含む。これら命令は、好ましくは、メモリシステム１３９ａ〜１３９ｅのうちの１つまたは複数に記憶されるコンピュータアプリケーションによって定義される。
【００３３】
プロセッサ１４２のうちの１つによる命令の実行に応じてデータ値が記憶される時、プロセッサ１４２は、記憶要求をマッパ１４６に送信する。記憶要求は、記憶されるデータ値とそのデータ値が記憶される場所を示すバスアドレスとを含む。マッパ１４６は、バスアドレスを、メモリシステム識別子及びメモリユニットオフセットからなるメモリユニットアドレスにマップするように構成される。メモリシステム識別子は、メモリシステム１３９ａ〜１３９ｅの１つを識別する。マッパ１４６は、記憶されるデータ値、メモリシステム識別子、およびメモリユニットオフセットを含む書込み要求を、メモリシステム１３９ａ〜１３９ｅの各々に送信するように構成される。なお、従来のシステム１５のマッパ２６と同様に、マッパ１４６は、好ましくは連続したバスアドレスを異なるメモリシステム１３９ａ〜１３９ｅにインタリーブ方式でマップする。
【００３４】
図７Ａおよび図７Ｂに示すように、メモリシステム１３９ａ〜１３９ｅの各々は、それぞれメモリコントローラ１５２ａ〜１５２ｅとそれぞれメモリユニット１５５ａ〜１５５ｅとを含む。メモリユニット１５５ａ〜１５５ｅの各々は、データを記憶し取得することができる複数のメモリ位置を含む。上述した書込み要求の上述したメモリシステム識別子によって識別されるメモリシステム１３９ａ〜１３９ｅのメモリコントローラ１５２ａ〜１５２ｅは、記憶されるデータ値（すなわち、メモリシステム識別子およびメモリユニットオフセットと共に受信されるデータ値）を、メモリユニットオフセットに基づいて、識別されたメモリシステム１３９ａ〜１３９ｅのメモリユニット１５５ａ〜１５５ｅに記憶するように構成される。これに関して、メモリユニットオフセットは、メモリユニット１５５ａ〜１５５ｅのそれぞれにおいて１つのメモリ位置を識別し、識別されたメモリシステム１３９ａ〜１３９ｅのメモリコントローラ１５２ａ〜１５２ｅは、上記メモリユニット１５５ａ〜１５５ｅのメモリユニットオフセットによって識別される位置に、受信したデータ値を記憶するように構成される。
【００３５】
同じメモリシステム１３９ａ〜１３９ｅにマップされる各バスアドレスは、好ましくは、異なるメモリユニットオフセットを有するメモリユニットアドレスにマップされる。従って、バスアドレスのセットが同じメモリシステム１３９ａ〜１３９ｅにマップされても、バスアドレスの各々は一意のメモリユニットアドレスにマップされる。従って、同じメモリシステム１３９ａ〜１３９ｅにマップされる各バスアドレスは、同じメモリシステム１３９ａ〜１３９ｅの異なる位置にマップされる。
【００３６】
本明細書で上述した技術と同様の技術により、メモリユニット１５５ａ〜１５５ｅからデータが取得されてよい。これに関し、プロセッサ１４２のうちの１つがデータを取得する命令を実行すると、プロセッサ１４２により取得要求がプロセッサ１４２に連結されたマッパ１４６に送信される。取得要求は、データが取得される場所を示すバスアドレスを含む。マッパ１４６は、バスアドレスを、メモリシステム識別子およびメモリユニットオフセットを含むメモリユニットアドレスにマップする。メモリシステム識別子は、要求されたデータを記憶しているメモリシステム１３９ａ〜１３９ｅを識別し、メモリユニットオフセットは、識別されたメモリシステム１３９ａ〜１３９ｅのメモリユニット１５５ａ〜１５５ｅ内において、データが実際に記憶されている位置を識別する。
【００３７】
マッパ１４６は、取得要求に応じて、読出し要求をメモリシステム１３９ａ〜１３９ｅの各々に送信する。読出し要求は、取得要求のバスアドレスから変換される上記メモリユニットアドレスを含む。識別されるメモリシステム１３９ａ〜１３９ｅのメモリコントローラ１５２ａ〜１５２ｅは、関連するメモリユニット１５５ａ〜１５５ｅの、メモリユニットオフセットによって識別される位置からデータ値を取得し、このデータ値を、要求している処理ユニット１３７ａ〜１３７ｅに送信する。これに関し、メモリコントローラ１５２ａ〜１５２ｅは、上記データ値をマッパ１４６に返し、マッパ１４６が、このデータ値を要求している処理ユニット１３７ａ〜１３７ｅに送信してよいし、あるいは、メモリコントローラ１５２ａ〜１５２ｅは、マッパ１４６を利用せずに要求しているプロセッサユニット１３７ａ〜１３７ｅにデータ値を送信してもよい。
【００３８】
図８は、メモリユニット１５５ａ〜１５５ｅの各々のより詳細な図を示す。図８において、チェックサム値またはチェックサムは、ＣＳ１〜ＣＳ８部分内に記憶され、非チェックサム値は、ＮＣＳ１〜ＮＣＳ８部分内に記憶される。従来のシステム１５と同様に、同じチェックサムセットのチェックサム値と非チェックサム値とは、同じメモリユニットオフセットを有するメモリ位置に記憶される。言い換えれば、メモリシステム１３９ａ〜１３９ｅのうちの１つにおける各チェックサム値は、他のメモリシステム１３９ａ〜１３９ｅ内でありかつチェックサム値のメモリ位置と同じメモリユニットオフセットと相関するメモリ位置に記憶される、各データ値のチェックサムを表す。しかしながら、チェックサムは、例えば図８に示すように、異なるメモリシステム１３９ａ〜１３９ｅにわたってインタリーブされる。
【００３９】
図８を参照すると、メモリユニット１５５ａのＣＳ１部分（「チェックサム１」）内のメモリ位置が、メモリユニット１５５ｂ〜１５５ｅのＮＣＳ１部分（「非チェックサム１」）内のメモリ位置と同じメモリユニットオフセットに相関している、と仮定する。従って、ＮＣＳ１部分内の、同じメモリユニットオフセットと相関するメモリ位置の値のチェックサムは、ＣＳ１部分の、上記メモリユニットオフセットと相関するメモリ位置に記憶されなければならない。同様に、ＣＳ２〜ＣＳ８部分内のメモリ位置は、それぞれＮＣＳ２〜ＮＣＳ８部分内のメモリ位置と同じメモリユニットオフセットと相関するものと仮定する。このように、ＮＣＳ２〜ＮＣＳ８部分内の値のチェックサムは、それぞれＣＳ２〜ＣＳ８部分に記憶されなければならない。例えば、同じメモリユニットオフセットと相関するメモリ位置のＮＣＳ２部分内の値のチェックサムは、ＣＳ２部分の、上記メモリユニットオフセットと相関するメモリ位置に記憶されなければならず、ＮＣＳ３部分内の、同じメモリユニットオフセットと相関するメモリ位置の値のチェックサムは、ＣＳ３部分の、上記メモリユニットオフセットと相関するメモリ位置に記憶されなければならない。
【００４０】
このように、チェックサムは、従来のシステム１５のように１つのメモリユニット４３（図３）内に記憶されるのではなく、異なるメモリユニット１５５ａ〜１５５ｅに記憶される。その結果、チェックサム更新は、メモリユニット１５５ａ〜１５５ｅに亙ってインタリーブされることが可能である。引用をもってその開示内容がすべて本明細書内に包含されたものとする、「Data Storage System and Method」と題され２０００年１０月３０日に出願された米国特許出願第０９／６９９，８７７号は、図８に示すように、チェックサムがメモリユニット１５５ａ〜１５５ｅにわたってインタリーブされ得るように、いかにしてシステム１１５を構成することができるか、をより詳細に説明している。このチェックサムを移動する技術は、後で詳細に説明を行うが、従来のシステム１５に関して説明したときのチェックサムが同じメモリユニット４３（図３）に記憶される場合についても用いることができることに留意されたい。
【００４１】
チェックサムがメモリユニット１５５ａ〜１５５ｅ内にいかに保持されるかをよりよく例示するために、図９のブロック２１１において、メモリシステム１３９ｂが、メモリユニット１５５ｂのＮＣＳ１部分内のメモリ位置の１つにデータ値を記憶する書込み要求を受信するものと仮定する。後述するように、ＮＣＳ１部分内の１つのメモリ位置（以下、「宛先」と呼ぶ）は、特定のメモリユニットオフセットに相関されていなければならない。書込み要求の発生前に宛先にすでに記憶されている値のチェックサムは、メモリユニット１５５ａのＣＳ１部分の、同じメモリユニットオフセットと相関するメモリ位置（以下、「チェックサム位置」と呼ぶ）に記憶されていなければならない。
【００４２】
図９のブロック２１４に示すように、書込み要求に応じて、メモリコントローラ１５２ｂは、書込み要求のデータ値（すなわち、記憶されるデータ値）を、宛先に予め記憶されているデータ値と排他的論理和をとり、その後宛先に、書込み要求のデータ値を記憶する。そして、図９のブロック２１６および２１９に示すように、排他的論理和演算の結果は、メモリコントローラ１５２ｂによって、チェックサム位置を含むメモリシステム１３９ａのメモリコントローラ１５２ａを識別する第２の書込み要求（「チェックサム更新要求」）で送信される。この場合、このチェックサム更新要求は、少なくともメモリシステム１３９ａを識別するメモリシステム識別子と、排他的論理和演算の結果と、宛先と相関するメモリユニットオフセットとを含む。
【００４３】
このチェックサム更新要求は、メモリコントローラ１５２ｂによって他のメモリシステム１３９ａおよび１３９ｃ〜１３９ｅの各々に送信される。チェックサム更新要求に応じて、メモリコントローラ１５２ａは、図９のブロック２２５において、後により詳細に説明するブロック２３１の状態が満足されると、チェックサム位置に記憶されるチェックサムを更新する。より詳細には、ブロック２２５において、メモリコントローラ１５２ａは、チェックサム位置に記憶されるチェックサムを、図９のブロック２１９においてメモリコントローラ１５２ｂから送信される排他的論理和の結果と排他的論理和をとる。そして、メモリコントローラ１５２ａによって実行される排他的論理和演算の結果は、チェックサム位置に記憶される。その結果、図９のブロック２１４において宛先に記憶されたデータ値に対するチェックサム位置のチェックサムの更新が完了する。
【００４４】
上述したように、メモリコントローラ１５５ａ〜１５５ｅは、マッパ１４６からの書込み要求に応じて宛先メモリ位置にデータ値を記憶する時、図９のブロック２１４において、記憶されるデータ値を宛先メモリ位置に予め記憶されているデータ値と排他的論理和をとらなければならない。そして、図９のブロック２１９において、この排他的論理和演算の結果は、チェックサムが更新され得るように、宛先位置に関連するチェックサムを記憶しているメモリシステム１３９ａ〜１３９ｅに送信されなければならない。
【００４５】
いずれのメモリシステム１３９ａ〜１３９ｅが宛先位置に関連するチェックサムを記憶しているかを識別することを可能にするために、メモリコントローラ１５２ａ〜１５２ｅは、好ましくは、図７Ａおよび図７Ｂに示すように、それぞれチェックサムインジケータ１６１ａ〜１６１ｅを保持する。各チェックサムインジケータ１６１ａ〜１６１ｅは、メモリシステム１３９ａ〜１３９ｅ内の各特定のメモリ位置に対し、いずれのメモリシステム１３９ａ〜１３９ｅがその特定のメモリ位置に現在記憶されているデータ値のチェックサムを記憶しているかを示す。
【００４６】
このように、上述した例では、メモリコントローラ１５２ｂによって保持されるチェックサムインジケータ１６１ｂは、メモリシステム１３９ａが宛先に関連するチェックサムを記憶している（すなわち、宛先と同じメモリユニットオフセットと相関するメモリ位置にチェックサムを記憶している）ということを示さなればならない。従って、メモリコントローラ１５２ｂは、宛先に記憶されるデータ値を宛先に予め記憶されているデータ値と排他的論理和をとった後、ブロック２１６において、チェックサムインジケータ１６１ｂを分析することにより、他のメモリシステム１３９ａおよび１３９ｃ〜１３９ｅのうちのいずれが宛先に関連するチェックサムを記憶しているかを判定する。メモリコントローラ１５２ｂは、チェックサムインジケータ１６１ｂに基づきメモリシステム１３９ａを識別し、これによって、メモリコントローラ１５２ａに対し、メモリシステム１３９ａすなわちメモリコントローラ１５２ａを識別するチェックサム更新要求を送信しなければならない。このチェックサム更新要求は、図９のブロック２１４において、メモリコントローラ１５２ｂによって実行される排他的論理和演算の結果を含む。これに応じて、メモリコントローラ１５２ａは、図９のブロック２２５において、上述したように、排他的論理和の結果に基づいて宛先に関連するチェックサムを更新する。
【００４７】
チェックサムインジケータ１６１ａ〜１６１ｅは、種々の技術によって実現することができる。図１０に示す好ましい実施の形態では、各チェックサムインジケータ１６１ａ〜１６１ｅは、複数のビット列２６５ａ〜２６５ｆからなり、異なるメモリユニットオフセットを有するメモリ位置のそれぞれに対して１つのビット列２６５ａ〜２６５ｆで実施される。ビット列２６５ａ〜２６５ｆのそれぞれは、好ましくはｎ個のビットからなり、ｎは、処理システム１１５内のメモリシステム１３９ａ〜１３９ｅの数に対応する。図５に示す実施の形態では、システム１１５は、５つのメモリシステム１３９ａ〜１３９ｅを含むため、各チェックサムインジケータ１６１ａ〜１６１ｅのビット列２６５ａ〜２６５ｆのそれぞれは、５つのアクティブビットを含まなければならない。ビット列２６５ａ〜２６５ｅのそれぞれに含まれるそれぞれのアクティブビットは、メモリシステム１３９ａ〜１３９ｅのうちの１つに対応する。
【００４８】
メモリシステム１３９ｂがマッパ１４６から書込み要求を受信する上述した例では、宛先と相関するチェックサムインジケータ１６１ｂのビット列２６５ａ〜２６５ｆは、メモリシステム１３９ａが宛先に関連するチェックサムを記憶している、ということを示すように適切にセットされなければならない。これに関して、チェックサムインジケータ１６１ｂのビット列２６５ｆが宛先に相関されていると仮定する。ビット列２６５ｆ内で、システム１３９ａに対応するビットは、好ましくはアサートされ、ビット列２６５ｆのビットの残りは、好ましくはデアサートされる。従って、ビット列２６５ｆのビットのいずれがアサートされているかを判定することにより、メモリコントローラ１５２ｂは、メモリシステム１３９ａが宛先に関連するチェックサムを記憶していると判定することができる。このように、メモリコントローラ１５２ｂは、図９のブロック２１４において、メモリシステム１３９ａがメモリコントローラ１５２ｂによって実行される排他的論理和演算の結果に基づいて更新されなければならないチェックサムを記憶している、ということを認識していなければならない。
【００４９】
チェックサムを記憶しているメモリ位置と相関するいかなるビット列２６５ａ〜２６５ｆも、好ましくは、それ自体のメモリシステム１３９ａ〜１３９ｅを識別する。このように、上記例のチェックサムインジケータ１６１ａでは、メモリユニット１５５ａのチェックサム位置と相関するビット列２６５ｆは、好ましくは、メモリシステム１３９ａ〜１３９ｅのそれぞれ対応する５つのビットを含む。メモリシステム１３９ａに対応するビットは、好ましくは、メモリシステム１３９ａが相関する位置（すなわち、チェックサム位置）にチェックサムを記憶していることを示すようにアサートされる。なお、チェックサム位置がチェックサム値の代りに非チェックサム値を記憶していた場合、上記ビットはデアサートされる。
【００５０】
更に、メモリコントローラ１５２ａは、図９のブロック２１９において、メモリコントローラ１５２ｂから送信される排他的論理和の結果を含むチェックサム更新要求を受信すると、チェックサムインジケータ１６１ａの上述したビット列２６５ｆを分析する際に、受信したチェックサム更新要求が、そのチェックサム更新要求に含まれるデータ値（すなわち、排他的論理和の結果）を記憶するのではなくチェックサムを更新することを目的とする、と判定することができる。従って、メモリコントローラ１５２ａは、受信したチェックサム更新要求に含まれる排他的論理和の結果を記憶し他のメモリシステム１３９ｂ〜１３９ｅのチェックサムを更新しようとするのではなく、上述した技術に従ってチェックサム位置に記憶されるチェックサムを更新する。これに関し、メモリコントローラ１５２ａは、受信したチェックサム更新要求に含まれる排他的論理和の結果をチェックサム位置に予め記憶されているチェックサムと排他的論理和を取り、その後、チェックサム位置にこの排他的論理和演算の結果を記憶する。
【００５１】
好ましい実施の形態では、チェックサムを記憶するメモリ位置と相関するビット列２６５ａ〜２６５ｆはいずれも、いずれのメモリシステム１３９ａ〜１３９ｅがアクティブであるかをも示す。これに関し、メモリシステム１３９ａ〜１３９ｅが動作可能であり、ビット列２６５ａ〜２６５ｆと相関するメモリ位置に記憶されたチェックサムの更新がイネーブルされている場合、ビット列２６５ａ〜２６５ｆはメモリシステム１３９ａ〜１３９ｅが「アクティブ」であること示す。このように、上記例のチェックサムインジケータ１６１ａでは、チェックサム位置と相関するビット列２６５ｆの各ビットは、メモリシステム１３９ａ〜１３９ｅがすべて動作可能であると仮定して、最初にアサートされる。メモリシステム１３９ａに対応するアサートされたビットは、メモリシステム１３９ａがビット列２６５ｆと相関する位置にチェックサムを記憶していることを示し、メモリシステム１３９ｂ〜１３９ｅに対応しているアサートされたビットは、メモリシステム１３９ｂ〜１３９ｅがアクティブであることを示す。メモリシステム１３９ｃおよび１３９ｄがアクティブでありメモリシステム１３９ｂが非アクティブ（例えば、動作不能）である場合、メモリシステム１３９ａ、１３９ｃおよび１３９ｄに対応しているビットのみがアサートされなければならない。かかる例において上記ビット列２６５ｆを分析することにより、メモリシステム１３９ａがビット列２６５ｆと相関する位置にチェックサムを記憶していることと、メモリシステム１３９ｃおよび１３９ｄがアクティブであることと、メモリシステム１３９ｂが非アクティブであることと、が明らかとなるはずである。
【００５２】
好ましい実施の形態では、チェックサム更新要求を受信するメモリコントローラ１５２ａ〜１５２ｅは、チェックサムを更新する前に、最初にチェックサムのメモリ位置に関連するビット列２６５ａ〜２６５ｆを分析する。上記ビット列２６５ａ〜２６５ｆに基づいて、メモリコントローラ１５２ａ〜１５２ｅは、チェックサム更新要求がアクティブなメモリシステム１３９ａ〜１３９ｅから送信されたか否かを判定する。要求がアクティブなメモリシステム１３９ａ〜１３９ｅから送信された場合、上記メモリコントローラ１５２ａ〜１５２ｅはチェックサムを更新する。しかしながら、要求が、ビット列２６５ａ〜２６５ｆによって非アクティブであると識別されるメモリシステム１３９ａ〜１３９ｅから送信された場合、上記メモリコントローラ１５２ａ〜１５２ｅは、その要求を無視し、チェックサムを更新しない。
【００５３】
後により詳細に説明する技術に従ってデータ回復を可能にするために、図９のブロック２１９においてメモリコントローラ１５２ｂからメモリコントローラ１５２ａに送信されるチェックサム更新要求は、好ましくは、メモリシステム１３９ａのメモリシステム識別子に加えて送信側メモリシステム１３９ｂのメモリシステム識別子を含む。メモリコントローラ１５２ａは、メモリシステム１３９ａを識別するメモリシステム識別子に基づいてチェックサム更新要求に応答し、メモリシステム１３９ｂを識別するメモリシステム識別子に基づいてメモリシステム１５５ｂのメモリコントローラ１５２ｂがチェックサム更新要求を送信したことを知る。言い換えれば、上記メモリシステム識別子は、いずれのメモリシステム１３９ｂ〜１３９ｅがチェックサム更新要求を送信したかを識別する。
【００５４】
図９のブロック２２５においてチェックサム位置に記憶されているチェックサム値を更新する前に、メモリコントローラ１５２ａは、まず、図９のブロック２３１において、チェックサムインジケータ１６１ａを分析することにより、チェックサム更新要求がアクティブなメモリシステムから送信されたか判定する。より詳細には、書込み要求にに含まれるメモリシステム１３９ｂを識別するメモリシステム識別子に基づき、メモリコントローラ１５２ａは、チェックサム位置と相関するビット列２６５ｆのメモリシステム１３９ｂに対応するビットを分析する。このビットがアサートされている場合、メモリシステム１３９ｂは、アクティブであるとみなされる。従って、メモリコントローラ１５２ａは、図９のブロック２２５に示すように、チェックサム更新要求に含まれる排他的論理和の結果に基づいてチェックサム位置のチェックサムを更新する。しかしながら、上記ビットがデアサートされている場合、メモリシステム１３９ｂは、非アクティブであるとみなされる。従って、メモリコントローラ１５２ａは、チェックサム更新要求を無視し、チェックサム更新要求に基づくチェックサム位置のチェックサム更新を行わない。言い換えれば、メモリコントローラ１５２ａは、図９のブロック２２５をスキップする。
【００５５】
メモリシステム１３９ａ〜１３９ｅのうちの１つに記憶されているデータ値が喪失すると（例えば、データ値を記憶しているメモリシステム１３９ａ〜１３９ｅに障害が発生した場合）、喪失データ値は、その喪失データ値のメモリ位置に関連するチェックサムを利用することにより、および他のアクティブなメモリシステム１３９ａ〜１３９ｅに記憶されているデータ値を利用することにより、回復することができる。これに関し、メモリシステム１３９ｂにおいて障害が発生するまで各メモリシステム１３９ａ〜１３９ｅが動作可能であると仮定する。更に、マッパ１４６は、メモリシステム１３９ｂの上述した宛先位置に記憶されているデータ値にアクセスするための記憶要求または取得要求を受信すると仮定する。メモリシステム１３９ｂは、すでに動作可能でないため、受信した要求を満足させることができない。更に、宛先位置のデータ値は喪失しているものとする。
【００５６】
しかしながら、喪失データ値は、チェックサム位置（すなわち、メモリユニット１５５ａの、宛先位置と同じメモリユニットオフセットを有する位置）に記憶されているチェックサムを用いて回復することが可能である。より詳細には、喪失データ値は、チェックサム位置のチェックサムを、アクティブなメモリシステム１３９ｃ〜１３９ｅの、チェックサムおよび宛先位置と同じメモリユニットオフセットを有する位置に現在記憶されているデータ値と排他的論理和をとることにより、回復することができる。言い換えれば、喪失データ値は、喪失データ値のチェックサムセットの他の非チェックサム値をこのチェックサムセットのチェックサムと排他的論理和をとることによって、回復することができる。更に、後述するデータ回復技術を利用することにより、喪失データ値の回復は、回復プロセス中の動作可能なメモリユニット１５５ａおよび１５５ｃ〜１５５ｅへのデータ記憶動作を生じさせることなく、行うことができる。
【００５７】
本発明のデータ回復プロセスをよりよく例示するために、上述したように、メモリシステム１３９ｂに障害が発生した後、マッパ１４６が、メモリユニット１５５ｂの宛先位置に記憶されているデータ値にアクセスするための取得要求または記憶要求を受信すると仮定する。取得要求または記憶要求に応じて、マッパ１４６は、取得要求または記憶要求のバスアドレスをメモリユニットアドレスに変換する。次に、マッパ１４６は、読出し要求または書込み要求を、宛先位置に記憶されているデータ値の取得または宛先位置へのデータ値の記憶を要求しているメモリシステム１３９ｂへ送信する。メモリシステム１３９ｂに障害があるため、マッパ１４６により送信される要求は満足されない。マッパ１４６は、メモリシステム１３９ｂが要求に応答しなかったことを検出し、これに応じて、喪失データ値（すなわち、障害が発生したメモリシステム１３９ｂ内の宛先位置に記憶されているデータ値）に対するプロセスを開始する。
【００５８】
これについて述べると、マッパ１４６はまず、図１１のブロック２７２に示すように、他のメモリシステム１３９ａおよび１３９ｃ〜１３９ｅのいずれが、喪失データ値のチェックサムを記憶しているか判定する。このため、マッパ１４６は、好ましくは、メモリシステム１３９ａ〜１３９ｅのいずれが、喪失データ値を回復するために使用され得るチェックサムを記憶しているかを示すチェックサムインジケータ１７２を保持する。本実施例では、喪失データ値のメモリ位置に関連するチェックサムはシステム１３９ａに記憶されているため、インジケータ１７２はメモリシステム１３９ａを識別しなければならない。喪失データ値のメモリ位置に関連するチェックサムを記憶している適当なメモリシステム１３９ａ〜１３９ｅを識別するために採用することのできる様々な方法がある。
【００５９】
例えば、各メモリユニットオフセットに対し、チェックサムインジケータ１７２は、メモリシステム１３９ａ〜１３９ｅに記憶されるチェックサムインジケータ１６１ａ〜１６１ｅと同様に、各メモリシステム１３９ａ〜１３９ｅに対して１ビットを有するビット列（図示せず）を含むことができる。各ビット列は、異なるメモリユニットオフセットに相関され、喪失データ値のメモリ位置と同じメモリユニットオフセットと相関するビット列は、好ましくは、いずれのメモリシステム１３９ａ〜１３９ｄが喪失データ値のチェックサムを記憶しているかを示すために使用される。これに関して、喪失データ値のチェックサムを記憶しているメモリシステム１３９ａ〜１３９ｅに対応するビットは、好ましくはアサートされ、残りのビットは、好ましくはデアサートされる。従って、いかなる喪失データ値に対しても、マッパ１４６は、チェックサムインジケータ１７２を分析して、いずれのメモリシステム１３９ａ〜１３９ｅが喪失データ値のメモリ位置に関連するチェックサムを記憶しているかを判定することができる。このチェックサムは、識別されたメモリシステム１３９ａ〜１３９ｅの喪失データ値の位置と同じメモリユニットオフセットを有するメモリ位置に記憶されなければならない。
【００６０】
このように、喪失データ値のチェックサムがメモリユニット１５５ａのメモリ位置（「チェックサム位置」）に記憶されている上記例では、図１１のブロック２７２において、マッパ１４６は、チェックサムインジケータ１７２を分析し、メモリシステム１３９ａが喪失データ値のメモリ位置に関連するチェックサムを記憶していることを判定する。これに応じて、マッパ１４６は、好ましくは、図１１のブロック２７５に示すように、メモリシステム１３９ａに対し、喪失データ値を再構築するよう要求を送信する。この再構築要求には、宛先のメモリユニットオフセット（すなわち、喪失データ値が記憶されていたメモリユニット１５５ｂの位置）と、喪失データ値を記憶していたメモリシステム１３９ｂを識別するメモリシステムインジケータとが含まれる。
【００６１】
これに応じて、メモリコントローラ１５２ａは、図１１のブロック２７７に示すように、チェックサムインジケータ１６１ａを分析して、チェックサム位置に関し他のメモリシステム１３９ｃ〜１３９ｅのうちのいずれがアクティブであるか判定する。本実施例では、メモリコントローラ１５２ａが再構築要求を受信した時、メモリシステム１３９ｃ〜１３９ｅの各々がアクティブであると仮定する。好ましい実施の形態に対して上述した技術に従い、チェックサムインジケータ１６１ａ内のチェックサム位置に相関するビット列２６５ｆを分析することにより、アクティブなメモリシステム１３９ｃ〜１３９ｅの識別が行われる。なお、チェックサム位置は、マッパ１４６から受信された再構築要求に含まれるメモリユニットオフセットに相関するメモリユニット１５５ａ内の位置でなければならない。
【００６２】
図１１のブロック２７７に示すように、メモリコントローラ１５２ａは、他のアクティブなメモリシステム１３９ｃ〜１３９ｅを識別した後、アクティブなメモリシステム１３９ｃ〜１３９ｅにおいて、チェックサム位置と同じメモリユニットオフセットに対応する位置におけるデータ値の取得を要求する。言い換えれば、メモリコントローラ１５２ａは、動作可能なメモリシステム１３９ｃ〜１３９ｅのそれぞれに対し、喪失データ値を回復するために使用されているチェックサムに対するチェックサムセットの非チェックサム値の取得を要求する。
【００６３】
より詳細には、メモリコントローラ１５２ａは、再構築のための読み出し要求をメモリコントローラ１５２ｃへ送信し、メモリユニット１５５ｃの、再構築要求に含まれるものと同じメモリユニットオフセット（すなわち、チェックサムと宛先位置との両方に相関するメモリユニットオフセット）と相関する位置に記憶されているデータ値を取得するように要求する。また、メモリコントローラ１５２ａは、再構築のための読み出し要求をメモリコントローラ１５２ｄへ送信し、メモリユニット１５５ｄの、再構築要求に含まれるものと同じメモリユニットオフセットと相関する位置に記憶されているデータ値を取得するようにメモリコントローラ１５２ｄに要求する。さらに、メモリコントローラ１５２ａは、再構築のための読み出し要求をメモリコントローラ１５２ｅへ送信し、メモリユニット１５５ｅの、再構築要求に含まれるものと同じメモリユニットオフセットと相関する位置に記憶されているデータ値を取得するようにメモリコントローラ１５２ｅに要求する。再構築のための読出し要求のそれぞれは、パラレルに送信されてもシリアルに送信されてもよい。
【００６４】
なお、「再構築のための読出し要求」は、取得を行っているメモリコントローラ１５２ａ〜１５２ｅに対し、メモリユニット１３５ａ〜１３５ｅの１つに現在記憶されているデータ値を取得し（プロセッサキャッシュからより新しいコピーを取得する必要はない）、その取得されたデータ値（以降、「再構築データ値」と呼ぶ）を、再構築データ値に基づいてデータ値を再構築する責任を有するコンポーネントへ送信するように命令する読出し要求である。好ましい実施の形態では、再構築のための読出し要求を送信しているメモリコントローラ１５２ａが、かかる再構築を行う責任を有するコンポーネントに相当する。このため、本実施例では、メモリコントローラ１５２ｃ〜１５２ｅのそれぞれは、上記再構築のための読出し要求のうちの１つに応じて、その個々の再構築データ値をメモリコントローラ１５２ａへ送信する。好ましくは、メモリコントローラ１５２ｃ〜１５２ｅのそれぞれは、受信した再構築のための読み出し要求に応じて、その再構築データ値に加えて、メモリシステム識別子だけでなく、その再構築データ値が以前送信された再構築のための読出し要求に応答するものであることを示すデータも送信する。このため、メモリコントローラ１５２ａは、再構築データ値を受信すると、（１）受信したデータ値が喪失データ値を回復するために使用されるべきものであること、及び（２）いずれのメモリシステム１５２ｃ〜１５２ｅが受信したデータ値を送信したのかを判定することができる。
【００６５】
なお、特定のメモリ位置を取得する再構築のための読出し要求は、以前に受信したその特定のメモリ位置へ書込むための書込み要求すべてが、それらの関連するチェックサムの更新も含めて完了するまで、全うされまたは満足されてはならない。同様に、特定のメモリ位置への後の書込み要求は、再構築のための読出しが完了するまでチェックサム更新を行ってはならず、チェックサムコントローラは、喪失データ値を回復するために使用されているチェックサムに対し、特定のメモリ位置に関連するメモリコントローラからのチェックサム更新はディスエーブルされなければならない。
【００６６】
このため、図１１のブロック２８１〜２８４に示すように、メモリコントローラ１５２ａは、再構築データ値のそれぞれに対し、チェックサムインジケータ１６１ａを更新し（ブロック２８２）、再構築データ値とチェックサム位置に記憶されている値との排他的論理和をとる（ブロック２８３）。これに関し、ブロック２８２において、メモリコントローラ１５２ａは、チェックサムインジケータ１６１ａ内のチェックサム位置と相関するビット列２６５ｆを更新し、再構築データ値を送信したメモリコントローラ１５２ｃ〜１５２ｅがアクティブではなくなったことをビット列２６５ｆが指示するように変更する。好ましい実施の形態では、これは、上記ビット列２６５ｆ内の、受信した再構築データ値を送信したメモリシステム１３９ｃ〜１３９ｅに対応するビットをアサートすることによって達成される。
【００６７】
このように、メモリコントローラ１５２ａは、メモリコントローラ１５２ｃから送信された再構築データ値を受信すると、上記ビット列２６５ｆ内のメモリシステム１３９ｃに対応するビットをデアサートする。このビットがデアサートされるまで、チェックサムコントローラ１５２ａは、再構築データ値を送信したメモリコントローラ１５２ｃからのチェックサム更新要求を受入れなければならず、従って、受入れたチェックサム更新要求に基づいてチェックサム位置を更新しなければならない。上記ビットがデアサートされると、メモリコントローラ１５２ａは、図１１のブロック２８３を実行する際に、再構築データ値をチェックサム位置に現在記憶されているデータ値と排他的論理和をとる。そして、メモリコントローラ１５２ａは、この排他的論理和演算の結果をチェックサム位置に記憶することにより、ブロック２８３を完了する。
【００６８】
更に、メモリコントローラ１５２ａは、メモリコントローラ１５２ｄから送信された再構築データ値を受信すると、ブロック２８２において、上記ビット列２６５ｆ内のメモリシステム１３９ｄに対応するビットをデアサートする。このビットがデアサートされると、メモリコントローラ１５２ａは、ブロック２８３において、再構築データをチェックサム位置に現在記憶されているデータ値と排他的論理和をとる。そして、メモリコントローラ１５２ａは、この排他的論理和演算の結果をチェックサム位置に記憶することにより、ブロック２８３を完了する。
【００６９】
更に、メモリコントローラ１５２ａは、メモリコントローラ１５２ｅから送信された再構築データ値を受信すると、ブロック２８２において、上記ビット列２６５ｆ内のメモリシステム１３９ｅに対応するビットをデアサートする。このビットがデアサートされると、メモリコントローラ１５２ａは、ブロック２８３において、再構築データをチェックサム位置に現在記憶されているデータ値と排他的論理和をとる。そして、メモリコントローラ１５２ａは、この排他的論理和演算の結果をチェックサム位置に記憶することにより、ブロック２８３を完了する。
【００７０】
上述したステップの各々が完了した後、チェックサム位置に記憶されているデータ値は、喪失データ値になるはずである。従って、このデータ値は、再構築要求に応じて回復されたデータ値としてマッパ１４６に送信され、または他の方法で所望に応じて利用されることができる。好ましい実施の形態では、回復されたデータ値はチェックサム位置に記憶される。このため、データ回復プロセスは、チェックサム位置のチェックサムを回復されたデータ値と有効に置換える。システムマネージャ１３６は、好ましくは、マッパ１４６に対しそのエントリを更新するよう命令し、それにより喪失データ値の位置に以前マップされていたバスアドレスが、前記チェックサム位置にマップして置きかえられる。
【００７１】
なお、喪失データ値の回復が完了すると、処理ユニット１７ａ〜１７ｅの各々に対し問合せすることにより、その問合せされた処理ユニット１７ａ〜１７ｅが、チェックサム位置に記憶されているバージョンより新しいバージョンの喪失データを有する否かを判定することができる。処理ユニット１７ａ〜１７ｅのいずれかがより最新のバージョンを有している場合、チェックサム位置の値は、そのより最新のバージョンに上書きされてよい。
【００７２】
更に、図１１のブロック２８２において、受信した再構築データ値を送信したメモリコントローラ１５２ａ〜１５２ｅのアクティブな状態を変化させるステップは、図１１に示すデータ回復プロセス中に、使用可能なメモリシステム１３９ａおよび１３９ｃ〜１３９ｅに対するデータ記憶を可能にするために重要である。これに関して、上記ステップは、チェックサム更新がデータ回復プロセスにおける誤りをもたらすことを防止している。
【００７３】
特に、データ回復プロセスにおける誤りを防止するために、図９のブロック２１９において特定のメモリコントローラ１５２ａ〜１５２ｅによって送信される各チェックサム更新要求は、特定のメモリコントローラ１５２ａ〜１５２ｅが再構築のための読出し要求（すなわち、図１１のブロック２７７において送信される要求）に応答する前に、喪失データ値を再構築しているメモリコントローラ１５２ａ〜１５２ｅにより満足されなければならない。このようにチェックサム更新要求を満足することによって、回復プロセスにおいて使用されるチェックサムがデータ回復中に特定のメモリコントローラ１５２ａ〜１５２ｅによって送信される再構築データ値と一致することが保証される。
【００７４】
しかしながら、図９のブロック２１９において特定のメモリコントローラ１５２ａ〜１５２ｅによって送信される各チェックサム更新要求は、特定のメモリコントローラ１５２ａ〜１５２ｅが再構築のための読出し要求（すなわち、図１１のブロック２７７において送信される要求）に応じた後、喪失データ値を再構築しているメモリコントローラ１５２ａ〜１５２ｅによって満足されてはならない。かかる要求を満足させることにより、データ回復プロセスに誤りがもたらされる可能性が高い。更に、図１１のブロック２８２と図９のブロック２３１とを実行することにより、かかる要求を満足することが防止され、それにより、データ回復中にメモリシステム１３９ａ〜１３９ｅへのデータ記憶が許可される場合の潜在的なデータ回復誤りが防止される。
【００７５】
ブロック２３１および２８２がかかるすべての要求を満足させることをうまく防止することを保証するために、メモリコントローラ１５２ａ〜１５２ｅは、再構築のための読出し要求によって要求されるデータに対する事前のチェックサム更新要求のすべてが、再構築データに応答する前に完了していることを保証しなければならない。再構築のための読出し要求に応答するメモリコントローラ１５２ａ〜１５２ｅは、データに対するいかなる新たな要求をも処理する前に、再構築のための読出しが完了することと、再構築データを受信するチェックサムコントローラがチェックサムセットのチェックサムを更新するチェックサム更新要求をそれ以上受入れないことと、をも保証しなければならない。
【００７６】
本発明の上述した実施の形態、特にいかなる「好ましい」実施の形態も、単に本発明の原理を明確に理解するために示される実現可能な例にすぎない、ということは強調されなければならない。本発明の思想および原理から実質的に逸脱することなく、多くの変形および変更が本発明の上述した実施の形態に対して行うことができる。かかる変更および変形はすべて、本明細書において本発明のこの開示の範囲内に含まれ、特許請求の範囲によって保護される、ということが意図されている。
【００７７】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施態様を示す。
１．データの記憶及び回復を行うシステム(115)であって、
複数のメモリユニット(155a〜155e)のそれぞれがデータ値を記憶するための複数のメモリ位置を有し、前記メモリユニットのうち１つにおける前記メモリ位置の１つが、他の前記メモリユニットに記憶されたデータ値に関連するチェックサムを有するように構成される複数のメモリユニットと、
前記メモリユニット内のメモリ位置にアクセスするように構成された複数のメモリコントローラ(152a〜152e)であって、前記メモリコントローラのうち１つが、いずれの前記メモリコントローラが前記チェックサムを更新可能であるかを示すことのできるインジケータ(161a〜161e)を保持し、前記チェックサムを更新するためのチェックサム更新要求を他のメモリコントローラから取得し、前記チェックサム更新要求に応じて前記インジケータを分析して前記他のメモリコントローラが前記チェックサムを更新可能であることを前記インジケータが指示するときのみ前記チェックサム更新要求に基づいて前記チェックサムを更新し、さらに、前記他のメモリコントローラから前記メモリユニットに記憶された前記データ値のうち１つを再構築するための再構築データ値を受信し、前記再構築データ値に応答して前記再構築データ値を前記チェックサムと結合し、前記他のメモリコントローラが前記チェックサムの更新をディセーブルされていることを示すように前記インジケータを更新するように構成される複数のメモリコントローラと、
からなるシステム。
２．前記インジケータがビット列を含み、前記ビット列のそれぞれのビットが前記メモリコントローラのうちいずれか１つと対応し、前記インジケータは、前記他のメモリコントローラに対応する前記ビット列の前記ビットが特定の論理状態を示すときのみ、前記他のメモリコントローラが前記チェックサムを更新可能であることを示す、項番１のシステム。
３．前記１つのメモリ位置がメモリユニットオフセットによって識別され、前記チェックサムに関する前記データ値のそれぞれが、前記メモリユニットオフセットによって識別されるメモリ位置に記憶される、項番１のシステム。
４．データの記憶及び回復を行うためのシステム(115)であって、
複数のメモリユニット(155a〜155e)のそれぞれがデータ値を記憶するための複数のメモリ位置を有するように構成される複数のメモリユニットと、
複数のメモリコントローラ(152a〜152e)のそれぞれが、前記メモリユニットのうちいずれか１つと関連し、前記メモリコントローラに関連する前記メモリユニット内に記憶されたデータ値にアクセスし、前記メモリコントローラに関連する前記メモリユニットに含まれるそれぞれのメモリ位置に対して異なるインジケータ(161a〜161e)を保持するように構成され、非チェックサム値を記憶しているメモリ位置に関連する前記異なるインジケータのそれぞれは、いずれの前記メモリユニットが前記非チェックサム値のチェックサムを記憶しているか示し、チェックサムを記憶しているチェックサムメモリ位置に関連する前記異なるインジケータのそれぞれは、いずれの前記メモリユニットが前記チェックサムメモリ位置の前記チェックサムを更新可能であるかを示すように構成される、複数のメモリコントローラと、
からなるシステム。
５．前記メモリコントローラのうち１つは、他の前記メモリコントローラから、前記１つのメモリコントローラに関連する前記メモリユニットの特定のチェックサムメモリ位置に記憶された特定のチェックサムを更新するためのチェックサム更新要求を受信し、前記チェックサム更新要求に応答して前記特定のチェックサムメモリ位置に関連する前記インジケータを分析し、前記他のメモリコントローラが前記特定のチェックサムを更新可能であることを前記１つのメモリコントローラに関連する前記インジケータが示すときのみ、前記チェックサム更新要求に基づいて前記特定のチェックサムを更新するように構成され、さらに、前記他のメモリコントローラから前記メモリユニットに記憶された前記データ値の１つを再構築するための再構築データ値を受信し、前記再構築データ値に応答して前記再構築データ値を前記特定のチェックサムと結合し、前記他のメモリコントローラが前記特定のチェックサムの更新をディセーブルされていることを示すように前記特定のチェックサムメモリ位置に関連する前記インジケータを更新するように構成される、項番４のシステム。
６．前記特定のチェックサムメモリ位置がメモリユニットオフセットによって識別され、前記特定のチェックサムが複数の前記データ値に基づいており、前記データ値のそれぞれが前記メモリユニットオフセットによって識別されるメモリ位置に記憶される、項番５のシステム。
７．データの記憶及び回復を行うための方法であって、
データを記憶するための複数のメモリ位置を有する複数のメモリユニット(155a〜155e)を設けるステップと、
前記メモリユニットのうち１つにおけるデータ値をアクセスするための複数のメモリコントローラ(152a〜152e)を設けるステップと、
前記メモリユニットのうち１つにおける前記メモリ位置の１つに、他の前記メモリユニットに記憶された複数のデータ値に基づくチェックサムを保持するステップと、
前記メモリコントローラのいずれが前記チェックサムを更新可能であるかを指示できるインジケータ(161a〜161e)を保持するステップと、
前記メモリコントローラのうち１つから前記チェックサムを更新するためのチェックサム更新要求を受信するステップと、
前記チェックサム更新要求に応答して前記インジケータを分析するステップと、
前記分析するステップにおいて前記１つのメモリコントローラが前記チェックサムを更新可能であることを前記インジケータが示す場合にのみ、前記チェックサムを更新するステップと、
前記１つのメモリコントローラから再構築データ値を受信するステップと、
前記再構築データ値を前記チェックサムと結合するステップと、
前記結合するステップに基づいて前記データ値の１つを回復し、前記再構築データ値を受信するステップに応答して、前記１つのメモリコントローラが前記チェックサムの更新をディセーブルされていることを示すように前記インジケータを更新するステップと、
からなる方法。
８．前記１つのメモリコントローラにおいて、前記複数のメモリ位置の特定のメモリ位置から前記再構築データ値を取得するための「再構築のための読出し要求」を受信するステップと、
前記１つのメモリコントローラにおいて、前記特定のメモリ位置への書き込みを行うための書き込み要求を受信するステップと、
前記「再構築のための読出し要求」を受信するステップから前記更新するステップまでの間、前記書き込み要求に基づく前記特定のメモリ位置へのデータ記憶動作を防止するステップと、
をさらに含む項番７の方法。
９．前記インジケータがビット列を含み、前記ビット列のそれぞれのビットが前記メモリコントローラのうちいずれか１つと対応し、前記インジケータは、前記１つのメモリコントローラに対応する前記ビット列の前記ビットが特定の論理状態を示す場合にのみ、前記１つのメモリコントローラが前記チェックサムを更新可能であることを示す、項番７の方法。
１０．前記チェックサム及び前記複数のデータ値が、それぞれ前記同じメモリユニットオフセットによって識別されるメモリ位置に記憶される、項番７の方法。
【００７８】
【発明の効果】
本発明は、上記のように構成することにより、チェックサムセットのデータ値を上書きする書き込み要求を一時的に規制することなく、データ値の回復を可能にしている。
【図面の簡単な説明】
【図１】従来の処理システムを示すブロック図である。
【図２】図１に示す処理ユニットのより詳細な図を示すブロック図である。
【図３】図１に示すメモリシステムのより詳細な図を示すブロック図である。
【図４】本発明の原理を実現するために採用されてよいコンピュータシステムを示すブロック図である。
【図５】図４に示す処理システムのより詳細な図を示すブロック図である。
【図６】図５に示す処理ユニットのより詳細な図を示すブロック図である。
【図７Ａ】図５に示すメモリシステムのより詳細な図を示すブロック図である。
【図７Ｂ】図５に示すメモリシステムのより詳細な図を示すブロック図である。
【図８】図７Ａおよび図７Ｂに示すメモリユニットのより詳細な図を示すブロック図である。
【図９】図５のメモリシステムのうちの１つにデータ値を記憶する際の、図４のコンピュータシステムのアーキテクチャおよび機能を示すフローチャートである。
【図１０】図７Ａおよび図７Ｂに示すチェックサムインジケータのいずれか１つのより詳細な図を示すブロック図である。
【図１１】喪失データ値を回復する際の、図４に示すコンピュータシステムのアーキテクチャおよび機能を示すフローチャートである。
【符号の説明】
１１５…処理システム
１５２ａ〜１５２ｅ…メモリコントローラ
１５５ａ〜１５５ｅ…メモリユニット
１６１ａ〜１６１ｅ…チェックサムインジケータ
【図１】
0003872692.tif 000002
【図２】
0003872692.tif 000003
【図３】
0003872692.tif 000004
【図４】
0003872692.tif 000005
【図５】
0003872692.tif 000006
【図６】
0003872692.tif 000007
【図７Ａ】
0003872692.tif 000008
【図７Ｂ】
0003872692.tif 000009
【図８】
0003872692.tif 000010
【図９】
0003872692.tif 000011
【図１０】
0003872692.tif 000012
【図１１】
0003872692.tif 000013