(57)【要約】チェックポイントデータを不揮発性メモリに保存するための方法及びシステムが説明される。一実施形態によれば、データ保存方法は、処理回路部を使用してアプリケーションを実行すること、及び、実行中に、アプリケーションの実行によって生成されたデータを揮発性メモリに書き込むことを含む。データを書き込んだ後に、チェックポイントの表示が提供される。表示が提供された後、この方法は、揮発性メモリから不揮発性メモリへデータをコピーすること、及び、コピー後に、アプリケーションの実行を続行することを含む。【選択図】図１
2011519460.tif 000002
【特許請求の範囲】
【請求項１】
処理回路部を使用してアプリケーションを実行することと、
前記実行中に、前記アプリケーションの前記実行によって生成されたデータを揮発性メモリに書き込むことと、
前記書き込み後に、チェックポイントの表示を提供することと、
前記提供後に、前記揮発性メモリから不揮発性メモリへ前記データをコピーすることと、
前記コピー後に、前記アプリケーションの前記実行を続行することと
を含むデータ保存方法。
【請求項２】
前記コピー中に、前記アプリケーションの前記実行をサスペンドすること
をさらに含む請求項１に記載の方法。
【請求項３】
前記実行の前記続行に続いて、前記アプリケーションの前記実行におけるエラーを検出することと、
前記検出に応答して、前記不揮発性メモリから前記揮発性メモリへ前記データをコピーすることと、
前記不揮発性メモリから前記揮発性メモリへの前記データの前記コピーの後に、前記揮発性メモリに保存された前記コピーされたデータを使用して、前記チェックポイントから前記アプリケーションを実行することと
をさらに含む請求項２に記載の方法。
【請求項４】
前記不揮発性メモリは、ソリッドステートメモリを備える
請求項１に記載の方法。
【請求項５】
前記不揮発性メモリは、ランダムアクセスメモリを備える
請求項１に記載の方法。
【請求項６】
前記不揮発性メモリは、複数の集積回路チップを備え、
前記データの前記コピーすることは、
前記複数の集積回路チップの第１のものへの前記データの第１のサブセットをコピーすること及び前記複数の集積回路チップの第２のものへの前記データの第２のサブセットをコピーすることを同時に行うこと
を含む
請求項１に記載の方法。
【請求項７】
前記チェックポイントの前記表示の前記提供は、
前記処理回路部が前記アプリケーションの一部の実行を完了したことに応答して、前記表示を提供すること
を含む
請求項１に記載の方法。
【請求項８】
前記提供することは、
前記処理回路部によって実行されるオペレーティングシステムを使用して前記表示を提供すること
を含む
請求項１に記載の方法。
【請求項９】
１つ又は複数のアプリケーションの実行に関連したチェックポイントの表示を受け取ることと、
前記受け取りに応答して、揮発性メモリから不揮発性メモリへの、前記１つ又は複数のアプリケーションの実行に起因するデータのコピーを開始することと
を含むデータ保存方法。
【請求項１０】
前記受け取ることは、
処理回路部から受け取ること
を含み、
該方法は、
前記データが前記不揮発性メモリへコピーされたものと判断することと、
前記データが前記不揮発性メモリへコピーされたことを前記処理回路部に通知すること
をさらに含む
請求項９に記載の方法。
【請求項１１】
前記不揮発性メモリは、不揮発性ソリッドステートメモリであり、
前記不揮発性ソリッドステートメモリ及び前記揮発性メモリは、共に、単一のデュアルインラインメモリモジュール（ＤＩＭＭ）の一部である
請求項９に記載の方法。
【請求項１２】
前記表示は、前記データが保存されている前記揮発性メモリ内のロケーションを記述する
請求項９に記載の方法。
【請求項１３】
第１のＤＩＭＭが、前記不揮発性メモリの第１の部分及び前記揮発性メモリの第１の部分を備え、
第２のＤＩＭＭが、前記不揮発性メモリの第２の部分及び前記揮発性メモリの第２の部分を備え、
前記コピーを前記開始することは、
前記第１のＤＩＭＭ上において前記揮発性メモリの前記第１の部分から前記不揮発性メモリの前記第１の部分へのコピーを第１に開始することと、
前記第２のＤＩＭＭ上において前記揮発性メモリの前記第２の部分から前記不揮発性メモリの前記第２の部分へのコピーを第２に開始することと
を含む
請求項９に記載の方法。
【請求項１４】
アプリケーションの命令を処理するように構成された処理回路部と、
メモリモジュールであって、
前記アプリケーションの前記命令の前記処理中に前記処理回路部によって生成されたデータを保存するように構成された揮発性メモリ、及び
前記揮発性メモリから前記データを受け取り、前記データを保存するように構成された不揮発性メモリ
を備えるメモリモジュールと
を備え、
前記処理回路部は、チェックポイントが示されていることに応答して、前記揮発性メモリから前記不揮発性メモリへの前記データのコピーを開始するように構成される
コンピュータシステム。
【請求項１５】
前記チェックポイントは、前記処理回路部が前記アプリケーションの前記命令を処理することに基づいて示される
請求項１４に記載のシステム。
【請求項１６】
前記メモリモジュールは、前記データの異なる部分を前記不揮発性メモリへ並列に同時にコピーするように構成される
請求項１４に記載のシステム。
【請求項１７】
前記処理回路部は、前記アプリケーションの前記実行中にエラーが検出されることに応答して、前記不揮発性メモリから前記揮発性メモリへの前記データのコピーを開始するようにさらに構成される
請求項１４に記載のシステム。
【請求項１８】
前記処理回路部は、大規模相互接続を介して他の処理回路部と通信するように構成され、
該他の処理回路部も、前記アプリケーションの前記命令を実行するように構成される
請求項１４に記載のシステム。
【請求項１９】
前記揮発性メモリは、複数の集積回路チップを備え、該複数の集積回路チップの各集積回路チップは、前記データの異なる部分を保存し、
前記処理回路部は、前記複数の集積回路チップから前記不揮発性メモリへのデータの前記部分のコピーを同時に開始するように構成される
請求項１４に記載のシステム。
【請求項２０】
前記メモリモジュールは、複数のＤＩＭＭを備え、各ＤＩＭＭは、前記揮発性メモリの異なる部分及び前記不揮発性メモリの異なる部分を備え、
前記複数のＤＩＭＭの個々のＤＩＭＭは、前記複数のＤＩＭＭの他のＤＩＭＭとは独立に、該個々のＤＩＭＭの前記不揮発性メモリ部分に保存されたデータを該個々のＤＩＭＭの前記揮発性メモリ部分へコピーするように構成される
請求項１４に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の態様は、チェックポイントデータを不揮発性メモリに保存することに関する。
【背景技術】
【０００２】
半導体製造技術が、常に小さな特徴サイズに縮小し続けるにつれて、ハードウェアの障害率（fault rate）は、増加すると予想される。
一過性エラー及びハードエラーの少なくとも２つのタイプの故障が起こり得る。一過性エラーは、一時的ではあり得るが、わずかな時間の間持続する場合がある。ハードエラーは永続的であり得る。
一過性エラーは、多くの原因を有する場合がある。
例示的な一過性エラーには、電源変動、熱的効果、アルファ粒子衝突によるトランジスタ障害、及び、クロストーク、環境雑音による干渉に起因したワイヤ障害、及び／又は信号完全性問題が含まれる。
ハードエラーの原因には、例えば、プロセス変動及び過度の熱の組み合わせによって引き起こされるトランジスタ故障、並びに、ワイヤ材料の臨界電流密度を超えることによって引き起こされる製造欠陥又は金属マイグレーションによるワイヤ故障が含まれる。
【０００３】
ハードエラー及び一過性エラーの双方は、細かなレベルの粒度又は大きなレベルの粒度のいずれかで冗長メカニズムを使用して内部で訂正され得る。
きめ細かなメカニズムには、メモリコンポーネントのエラー訂正符号、パケット伝送チャネル上での巡回冗長符号、及びディスクシステムにおける消去符号化方式が含まれる。
きめの大きなメカニズムには、同じ命令を実行するように複数のプロセッサを構成し、次いでそれら複数のプロセッサからの実行結果を比較して正しい結果を判断することが含まれる。
このような場合、同じ命令を実行するプロセッサの個数は、エラーを検出するために２つ以上であるべきである。
プロセッサの個数が２つである場合、エラーを検出することができる。
プロセッサの個数が３つ以上である場合、エラーの検出及び訂正の双方を行うことができる。
しかしながら、このような冗長メカニズムを使用することは、大規模並列システムでは法外に高価になるおそれがある。
【０００４】
大規模並列システムは、単一の長期実行アプリケーションを実行するプロセッサのクラスタを含む場合がある。
いくつかの場合に、大規模並列システムは、単一の長期実行アプリケーションを数日又は数週間の間実行する数百万個の集積回路を含む場合がある。
これらの大規模並列システムは、アプリケーションの中間状態を１つ又は複数のディスクに保存することによって、アプリケーションを定期的にチェックポイントすることができる。
障害の場合、計算をロールバックし、計算の最初からではなく最も近時に記録されたチェックポイントから計算を再開することができ、数時間又は数日の計算時間を節減できる可能性がある。
【０００５】
その結果、半導体製造技術の特徴サイズが減少し、障害率が増加するにつれて、少なくとも何らかのコンピューティングアレンジメント（例えば、大規模並列システム）でのチェックポイントの使用が、ますます重要になってくる可能性がある。
既知のシステムは、チェックポイントデータをディスクに書き込む。
しかしながら、ディスクの帯域幅及びディスクのアクセス時間は、コンピューティングシステムの要求に遅れずに付いていくほど十分迅速に改善されない場合がある。
さらに、ディスク等の機械的な媒体を使用してデータをチェックポイントする際に消費される電力量は大きな欠点である。
【発明の概要】
【課題を解決するための手段】
【０００６】
開示のいくつかの態様によれば、チェックポイントデータを不揮発性メモリに保存するための方法及びシステムが説明される。
【０００７】
一態様によれば、データ保存方法は、処理回路部を使用してアプリケーションを実行することと、実行中にアプリケーションの実行によって生成されたデータを揮発性メモリに書き込むこととを含む。
上記方法はまた、不揮発性メモリへの書き込み後に、チェックポイントの表示（例えば、チェックポイント完了の表示）を提供することを含む。
チェックポイントの表示の提供後に、上記方法は、揮発性メモリから不揮発性メモリへデータをコピーすること、及び、コピー後にアプリケーションの実行を続行することを含む。
いくつかの実施の形態においては、不揮発性メモリは、ソリッドステートメモリ及び／又はランダムアクセスメモリとすることができる。
【０００８】
実行の続行に続いて、上記方法は、いくつかの実施の形態においては、アプリケーションの実行におけるエラーを検出することを含む。
検出に応答して、不揮発性メモリから揮発性メモリへデータがコピーされる。
続いて、揮発性メモリに保存されたコピーされたデータを使用して、チェックポイントからアプリケーションを実行することができる。
【０００９】
他の態様によれば、データ保存方法は、１つ又は複数のアプリケーションの実行に関連したチェックポイントの表示を受け取ること、及び、受け取りに応答して、揮発性メモリから不揮発性メモリへの、１つ又は複数のアプリケーションの実行に起因するデータのコピーを開始することを含む。
いくつかの実施形態では、表示は、データが保存されている揮発性メモリ内のロケーションを記述し得る。
【００１０】
他の態様によれば、コンピュータシステムは処理回路部及びメモリモジュールを備える。
処理回路部は、アプリケーションの命令を処理するように構成される。
メモリモジュールは、アプリケーションの命令の前記処理中に処理回路部によって生成されたデータを保存するように構成された揮発性メモリを備え得る。
メモリモジュールは、揮発性メモリからデータを受け取り、データを保存するように構成された不揮発性メモリも備え得る。
一実施形態では、処理回路部は、チェックポイントが示されていることに応答して、揮発性メモリから不揮発性メモリへのデータのコピーを開始するように構成される。
【００１１】
一実施形態では、個々のデュアルインラインメモリモジュール（ＤＩＭＭ）が、不揮発性メモリのすべて又は一部及び揮発性メモリのすべて又は一部を含むように、不揮発性メモリ及び揮発性メモリを１つ又は複数のＤＩＭＭに編成することができる。
一実施形態では、不揮発性メモリは、複数の集積回路チップを含むことができ、データのコピーは、複数の集積回路チップの第１のものへのデータの第１のサブセットのコピー及び複数の集積回路チップの第２のものへのデータの第２のサブセットのコピーを同時に行うことを含むことができる。
【００１２】
他の実施形態及び態様は、以下の論述から明らかになるように説明される。
【図面の簡単な説明】
【００１３】
【図１】一実施形態による処理システムのブロック図である。
【図２】一実施形態によるコンピュータシステムのブロック図である。
【図３】一実施形態によるメモリモジュールのブロック図である。
【図４】一実施形態による処理システムのブロック図である。
【発明を実施するための形態】
【００１４】
本開示は、チェックポイントデータを不揮発性メモリに保存する処理システム、コンピュータ、プロセッサ、及びコンピュータシステム等の装置、並びにチェックポイントデータを不揮発性メモリに保存する方法を含むコンピュータ方法を対象にする。
開示のいくつかの態様によれば、アプリケーションが、処理回路を使用して実行される。
アプリケーションの実行がチェックポイントに達したとき、一実施形態では、アプリケーションのさらなる実行がサスペンドされ得る。
揮発性メモリに保存されたアプリケーションに関係したデータは、不揮発性メモリ内へコピーされ得る。
いくつかの実施形態では、不揮発性メモリは、ＮＡＮＤ  ＦＬＡＳＨ又は相変化メモリ等のソリッドステート不揮発性メモリであり得る。
不揮発性メモリは、加えて又は代替的に、ランダムアクセスメモリであり得る。
【００１５】
一実施形態では、データが一旦コピーされると、アプリケーションの実行をレジュームすることができる。
エラーがアプリケーションの実行中に発生した場合、不揮発性メモリに保存されたデータを揮発性メモリ内へコピーして戻すことができる。
データが揮発性メモリに一旦復元されると、アプリケーションをチェックポイントから再開することができる。
他の実施形態又は代替的な実施形態は以下で論述される。
【００１６】
図１を参照して、一実施形態による処理システム１００が示されている。
システム１００は、処理回路部１０２、メモリモジュール１０６、及びディスクストレージ１０８を含む。
図１の実施形態は、１つの可能な実施形態を示すために提供されたものであり、これよりも少ないコンポーネント、これよりも多くのコンポーネント、又は代替的なコンポーネントを含む他の実施形態が可能である。
加えて、図１のいくつかのコンポーネントを結合してもよい。
【００１７】
一実施形態では、システム１００は、単一のコンピュータであり得る。
この実施形態では、処理回路部１０２は、１つのプロセッサ１１０を含むことができるが、相互接続１１４を含まない場合があり、大規模相互接続１２２と通信しない場合がある。相互接続１１４及び大規模相互接続１２２の双方は、想像線で示され、以下でさらに説明される。
この実施形態では、プロセッサ１１０は、シングルコアプロセッサ又はマルチコアプロセッサであり得る。
【００１８】
別の実施形態では、システム１００は、プロセッサクラスタであり得る。
この実施形態では、処理回路部１０２は、複数のプロセッサを含むことができる。
図１には、プロセッサ１１０及びプロセッサ１１２の２つのプロセッサしか示されていないが、処理回路部１０２は、３つ以上のプロセッサを含むことができる。
いくつかの場合に、処理回路部１０２のこれらのプロセッサは、単一のアプリケーションを同時に実行することができる。
その結果として、アプリケーションが並列に実行され得る。
この実施形態では、処理回路部１０２は、プロセッサ１１０と１１２との間の通信及びアプリケーションの実行の連係を可能にする相互接続１１４を含むことができる。
さらに、さまざまな実施形態では、図２に関して以下でさらに説明するように、処理回路部１０２は、大規模相互接続１２２を介して他のプロセッサクラスタ（同じく、このアプリケーションを実行している場合がある）と通信することができる。
【００１９】
メモリモジュール１０６は、一実施形態では、揮発性メモリ１１６及び不揮発性メモリ１１８を含む。
揮発性メモリ１１６は、処理回路部１０２によって生成されたデータ及びディスクストレージ１０８からリトリーブされたデータを保存することができる。
このようなデータは、本明細書では、アプリケーションデータと呼ばれる。
揮発性メモリ１１６は、電子的技法、磁気的技法、光学的技法、電磁気的技法、又は情報を保存するための他の技法を使用して複数の異なる方法で具現化され得る。
いくつかの具体的な例には、ＤＲＡＭ及びＳＲＡＭが含まれるが、これらに限定されるものではない。
一実施形態では、揮発性メモリ１１６は、処理回路部１０２によって実施されるプログラミングを保存することができる。
【００２０】
不揮発性メモリ１１８は、揮発性メモリ１１６から受け取ったチェックポイントデータを保存する。
チェックポイントデータは、アプリケーションデータと同じ場合もあるし、アプリケーションデータのサブセットの場合もある。
いくつかの実施形態では、不揮発性メモリ１１８は、たとえ電力が不揮発性メモリ１１８に提供されなくても、チェックポイントデータを永続的に保存することができる。
上述したように、アプリケーションデータ及びチェックポイントデータは、一実施形態ではメモリに保存される。
メモリでの保存には、集積回路ストレージ媒体にデータを保存することが含まれる。
一実施形態では、不揮発性メモリ１１８は、ソリッドステート及び／又はランダムアクセスの不揮発性メモリ（例えば、ＮＡＮＤ  ＦＬＡＳＨ、ＦｅＲＡＭ（強磁性体ＲＡＭ）、ＭＲＡＭ（磁気抵抗ＲＡＭ）、ＰＣＲＡＭ（相変化ＲＡＭ）、ＲＲＡＭ（抵抗変化型ＲＡＭ）、プローブストレージ、及びＮＲＡＭ（ナノチューブＲＡＭ））であり得る。
一実施形態では、不揮発性メモリ１１８からのチェックポイントデータの読み出しは、可動部品を使用しない。
別の実施形態では、不揮発性メモリ１１８は、ランダムな順序でアクセスされ得る。
さらに、不揮発性メモリ１８８は、データが、以前アクセスされたデータに関係していようといまいと、不揮発性メモリ１１８内のデータの物理的なロケーションにかかわらず、実質的に一定の時間でデータを返すことができる。
【００２１】
一実施形態では、処理回路部１０２は、チェックポイント管理モジュール１０４を含む。
チェックポイント管理モジュール１０４は、一実施形態では、チェックポイントオペレーションを制御及び実施するように構成される。
例えば、チェックポイント管理モジュール１０４は、揮発性メモリ１１６から不揮発性メモリ１１８へのチェックポイントデータのコピー及び不揮発性メモリ１１８から揮発性メモリ１１６へのチェックポイントデータのコピーを制御することができる。
チェックポイント管理モジュール１０４は、一実施形態では、プロセッサ等の処理回路部を含むことができる。
他の実施形態では、チェックポイント管理モジュール１０４は、プロセッサ１１０及び／又はプロセッサ１１２において（例えば、マイクロコード又はソフトウェアとして）具現化され得る。
【００２２】
例として、処理回路部１０２は、ディスクストレージ１０８（例えば、１つ又は複数のハードディスク）によって保存されたアプリケーションを実行することができる。
このアプリケーションは、複数の命令を含むことができる。
命令のいくつか又はすべては、ディスクストレージ１０８から揮発性メモリ１１６内へコピーされ得る。
命令のいくつか又はすべては、処理回路部１０２がそれら命令を処理できるように、その後、揮発性メモリ１１６から処理回路部１０２へ転送され得る。
命令の処理の結果として、処理回路部１０２は、揮発性メモリ１１６又はディスクストレージ１０８からアプリケーションデータをリトリーブすることができ、且つ／又は揮発性メモリ１１６又はディスクストレージ１０８にアプリケーションデータを書き込むことができる。
その結果、アプリケーションの命令が処理回路部１０２によって処理されているとき、揮発性メモリ１１６及び／又はディスクストレージ１０８のコンテンツは変化し得る。
【００２３】
特定の時点における揮発性メモリ１１６のコンテンツのいくつか又はすべては、チェックポイントデータとして保存され得る。
例えば、処理回路部１０２がアプリケーションの１つ又は複数の初期命令を処理した後、揮発性メモリ１１６に保存されたチェックポイントデータ（アプリケーションデータのすべての場合もあるし、サブセットの場合もある）は、揮発性メモリ１１６以外のロケーションへコピーされ得る。
チェックポイントデータが一旦コピーされると、処理回路部１０２は、アプリケーションの１つ又は複数の次の命令の処理に移ることができる。
後に、初期命令の処理に続いて、アプリケーションの実行中にエラーが発生したか否かを判断することができる。
エラーから回復するために、保存されたチェックポイントデータを揮発性メモリ１１６に戻すことができ、処理回路部１０２は、アプリケーションの実行を次の命令から始めて再開することができる。
【００２４】
一実施形態では、チェックポイント管理モジュール１０４は、チェックポイントデータの保存を管理することができる。
一実施形態では、チェックポイント管理モジュール１０４は、１つ又は複数のアプリケーションの実行に関連したチェックポイントの表示を処理回路部１０２から受け取ることができる。
チェックポイントオペレーションを実行する表示は、説明例において以下で論述するように、異なるソースによって提供され得且つ／又は異なる開始基準について提供され得る。
処理回路部１０２は、処理回路部１０２の１つ又は複数のキャッシュメモリ（図示せず）のコンテンツを揮発性メモリ１１６にフラッシュした後に、この表示をチェックポイント管理モジュール１０４に提供することができる。
処理回路部１０２内のさまざまなエンティティの１つ又は複数が、この表示を提供することができる。
例えば、オペレーティングシステム、仮想マシン、ハイパーバイザ、又はアプリケーションが、チェックポイントの表示を生成することができる。
表示を生成するための基準の他のソースが可能であり、以下で論述される。
【００２５】
表示を受け取ったことに応答して、チェックポイント管理モジュール１０４は、揮発性メモリ１１６によって保存されたアプリケーションデータのすべて又は一部の不揮発性メモリ１１８へのコピーを開始することができる。
一実施形態では、チェックポイントデータが揮発性メモリ１１６から不揮発性メモリ１１８へコピーされている間チェックポイントされているアプリケーション（複数可）のアプリケーションデータが変化しないように、表示をチェックポイント管理モジュール１０４に提供する前又は提供した後に、処理回路部１０２は、チェックポイントされているアプリケーション（複数可）の実行をサスペンドすることができる。
【００２６】
いくつかの実施形態では、処理回路部１０２は、揮発性メモリ１１６及び不揮発性メモリ１１８にアプリケーションデータを書き込むことができる。
他の実施形態では、処理回路部１０２は、揮発性メモリ１１６にはアプリケーションデータを書き込むことができるが、不揮発性メモリ１１８にはアプリケーションデータを書き込むことができない場合がある。
しかしながら、チェックポイントデータは、揮発性メモリ１１６から不揮発性メモリ１１８へコピーされ得る。
したがって、チェックポイントデータを不揮発性メモリ１１８内に書き込むには、チェックポイントデータを最初に揮発性メモリ１１６内に書き込むことが必要な場合がある。
【００２７】
揮発性メモリ１１６及び不揮発性メモリ１１８の相対的な容量は、任意の適切な構成で構成され得る。
例えば、チェックポイントオペレーションの完了直前にエラーが発生する場合があるので、一実施形態では、不揮発性メモリ１１８がチェックポイントデータの２セットを保存できるように、不揮発性メモリ１１８は、揮発性メモリ１１６の少なくとも２倍の容量を有することができる。
加えて、少なくとも一実施形態では、異なるチェックポイントに対応する多数の異なるチェックポイントデータを不揮発性メモリ１１８に同時に保存することもできる。
【００２８】
チェックポイント表示は、揮発性メモリ１１６によって保存されたアプリケーションデータのどの部分がチェックポイントデータであるのかを指定することができる。
例えば、この表示は、揮発性メモリ１１６によって保存されたアプリケーションデータの実質的にすべてがチェックポイントデータであること、特定のアプリケーションにのみ関係したアプリケーションデータがチェックポイントデータであること、及び／又は揮発性メモリ１１６の特定のロケーション内のアプリケーションデータがチェックポイントデータであることを示すことができる。
一実施形態では、この表示は、チェックポイントデータを記述するセーブベクトル（save vector）を含むことができる。
【００２９】
一実施形態では、処理回路部１０２は、揮発性メモリ１１６及び不揮発性メモリ１１８を制御することによって、揮発性メモリ１１６から不揮発性メモリ１１８へのチェックポイントデータのコピーを実施することができる。
例えば、処理回路部１０２は、制御信号又は制御命令を揮発性メモリ１１６及び不揮発性メモリ１１８に提供することができる。
別の実施形態では、チェックポイント管理モジュール１０４が、メモリ１１６及び１１８を制御することによって、チェックポイントデータのコピーを実施することができる。
チェックポイント管理モジュール１０４は、チェックポイントデータの不揮発性メモリ１１８へのコピーが一旦成功すると、処理回路部１０２に通知することができる。
【００３０】
別の実施形態では、メモリモジュール１０６は、別個の処理回路部（図示せず）を含むことができ、処理回路部１０２又はチェックポイント管理モジュール１０４は、チェックポイントデータを記述する情報（例えば、チェックポイントデータが保存されている揮発性メモリ１１６のロケーション）をこのような処理回路部に提供して、チェックポイントデータを不揮発性メモリ１１８へコピーするようにこのような処理回路部に命令することができる。
メモリモジュール１０６のこの処理回路部は、チェックポイントデータの不揮発性メモリ１１８へのコピーが一旦成功すると、チェックポイント管理モジュール１０４及び／又は処理回路部１０２に通知することができる。
【００３１】
チェックポイント制御モジュール１０４は、チェックポイントデータの不揮発性メモリ１１８へのコピーが成功したものと判断した後、チェックポイントデータが不揮発性メモリ１１８へコピーされたことを処理回路部１０２に通知することができる。
これに応答して、処理回路部１０２は、チェックポイントデータが不揮発性メモリ１１８へコピーされていた間、処理回路部１０２が前にサスペンドしていたアプリケーション（複数可）の実行を続行することができる。
システム１００は、アプリケーションの実行中、チェックポイントデータを不揮発性メモリ１１８に保存する上述した方法を複数回繰り返すことができる。
【００３２】
上述したように、いくつかの手法を使用して、チェックポイントをいつ生成すべきかを決定することができる。
一手法によれば、チェックポイントデータは、定期的に保存され得、処理回路部１０２によって実行されている複数のアプリケーションについて保存され得る。
この実施形態では、（例えば、処理回路部１０２によって実行されるオペレーティングシステム、仮想マシン、ハイパーバイザ等を介して）処理回路部１０２は、上述したように、チェックポイントをチェックポイント管理モジュール１０４に定期的に示すことができる。
チェックポイントオペレーションの周期は、いくつかの例では、タイマ割り込みによって制御され得るし、定期的なオペレーティングシステムの介入によって制御され得る。
一実施形態では、揮発性メモリ１１６によって保存されたアプリケーションデータの実質的にすべてを不揮発性メモリ１１８へコピーすることができる。
代替的に、処理回路部１０２によって実行されている１つのアプリケーションのみに関係したアプリケーションデータを不揮発性メモリ１１８へコピーすることができる。
この手法は、自動チェックポイントと呼ばれる場合がある。
【００３３】
別の手法によれば、処理回路部１０２によって実行されているアプリケーションは、チェックポイントデータをいつ生成すべきかを決定することができる。
一実施形態では、アプリケーションは、どのアプリケーションデータをチェックポイントデータとして保存すべきか及びそのチェックポイントデータをいつ保存すべきかを指定することができる。
一実施形態では、アプリケーションは、チェックポイント命令を含むことができる。
アプリケーションがチェックポイント命令によって境界を定められた複数の命令セクションに分割されるように、アプリケーション全体を通じてチェックポイント命令を配置することができる。
一実施形態では、特定の計算又は機能を実行する複数の命令セクションの終わりにチェックポイント命令を位置決めすることができる。
例えば、アプリケーションが、口座残高を更新する銀行取引アプリケーションである場合、アプリケーションは、口座残高を更新する命令の直後にチェックポイント命令を含むことができる。
別の実施形態では、アプリケーションは、条件が満たされたことに応答してチェックポイントが生成されるように要求することができる。
この手法は、アプリケーションチェックポイントと呼ばれる場合がある。
【００３４】
チェックポイントデータが保存され、アプリケーションの実行がレジュームされたことに続いて、処理回路部１０２及び／又はチェックポイント管理モジュール１０４は、（例えば、冗長計算チェックを介して）アプリケーションの実行のエラーを検出することができる。
一実施形態では、処理回路部１０２は、エラーを検出すると、アプリケーションのさらなる実行をサスペンドすることができる。
【００３５】
エラーから回復するために、不揮発性メモリ１１８に保存されたチェックポイントデータに関連したチェックポイントから始めてアプリケーションを再実行することができる。
エラーの検出に応答して、チェックポイント管理モジュール１０４は、不揮発性メモリ１１８から揮発性メモリ１１６へチェックポイントデータをコピーすることができる。
チェックポイントデータが揮発性メモリ１１６に一旦コピーされると、チェックポイント管理モジュール１０４は、処理回路部１０２に通知することができる。
処理回路部１０２は、その後、チェックポイントデータを使用して、アプリケーションをチェックポイントから始めて再実行することができる。
このチェックポイントデータは、この時点では、揮発性メモリ１１６において処理回路部１０２に利用可能である。
【００３６】
一実施形態では、チェックポイントデータは、複数のアプリケーションのチェックポイントデータとされ得、検出されたエラーは、これら複数のアプリケーションのすべてに影響を与える場合がある。
この実施形態では、チェックポイントデータが一旦復元されると、複数のアプリケーションのそれぞれをチェックポイントから始めて再実行することができる。
【００３７】
図２を参照して、大規模コンピュータシステム２００が示されている。
システム２００は、図１に関して上述した複数の処理システム１００を含む。
一実施形態では、システム１００は、単一のアプリケーションを並列に実行するのに使用され得るし、異なるアプリケーションを実行するのに使用され得る。
単一のアプリケーションを並列に実行することによって、１つのプロセッサ又は１つのプロセッサクラスタ上での単一のアプリケーションの実行を上回る大きな速度の利点を提供することができる。
システム２００は、追加の処理システムを含むことができる。
これら追加の処理システムは、簡単にするために図示されていない。
【００３８】
一実施形態では、システム２００は、管理ノード２０４、大規模相互接続１２２、Ｉ／Ｏノード２０６、ネットワーク２０８、及びストレージ回路部２１０も含む。
一実施形態では、管理ノード２０４は、単一のアプリケーションのどの部分が処理システムによって実行されるべきかを決定することができる。
管理ノード２０４は、大規模相互接続１２２を介して処理システム１００と通信することができる。
【００３９】
アプリケーションの実行中、処理システム１００及び／又は処理システム２０２は、ストレージ回路部２１０にデータを保存することができる。
それを行うために、処理システムは、大規模相互接続１２２及びＩ／Ｏノード２０６を介してストレージ回路部２１０へデータを送信することができる。
同様に、処理システムは、大規模相互接続１２２及びＩ／Ｏノード２０６を介してストレージ回路部２１０からデータをリトリーブすることもできる。
例えば、処理システム１００は、ディスクストレージ１０８からストレージ回路部２１０へデータを移動させることができる。
ストレージ回路部２１０は、ディスクストレージ１０８よりも大きな容量を有することができる。
いくつかの実施形態では、処理システム１００及び２０２は、Ｉ／Ｏノード２０６及びネットワーク２０８を介して他のコンピュータシステムと通信することができる。
一実施形態では、ネットワーク２０８はインターネットとすることができる。
【００４０】
一実施形態では、ストレージ回路部２１０は、不揮発性メモリを含むことができ、管理ノード２０４は、大規模相互接続１２２を介して、処理システム１００からストレージ回路部２１０の不揮発性メモリへのチェックポイントデータのコピーを開始することができる。
【００４１】
次に図１に戻って、メモリモジュール１０６は、チェックポイントデータをシリアルにコピーするのではなく、並列に、揮発性メモリ１１６に保存されたチェックポイントデータの異なる部分を不揮発性メモリ１１８へ同時にコピーするように、構成され得る。
これを行うことによって、揮発性メモリ１１６から不揮発性メモリ１１８へチェックポイントデータをコピーするのに使用される時間量を大幅に削減することができる。
【００４２】
図３を参照して、メモリモジュール１０６の一実施形態が示されている。
開示する実施形態は、単に例示にすぎず、他の実施形態が可能である。
描写された実施形態では、メモリモジュール１０６は、３つのデュアルインラインメモリモジュール（ＤＩＭＭ）３０２、３０４、及び３０６を含む。
もちろん、メモリモジュール１０６は、２つ以下のＤＩＭＭ又は４つ以上のＤＩＭＭを含むことができ、３つのＤＩＭＭは簡単にするために示されている。
代替的に又は加えて、メモリモジュール１０６は、ＤＩＭＭ以外の他の形態のメモリを含むこともできる。
【００４３】
ＤＩＭＭ３０２、３０４、及び３０６のそれぞれは、揮発性メモリ１１６の一部及び不揮発性メモリ１１８の一部を含むことができる。
図３に示すように、ＤＩＭＭ３０２は、揮発性メモリ（ＶＭ）３０８及び不揮発性メモリ（ＮＶＭ）３１０を含み、ＤＩＭＭ３０４は、揮発性メモリ（ＶＭ）３１２及び不揮発性メモリ（ＮＶＭ）３１４を含み、ＤＩＭＭ３０６は、揮発性メモリ（ＶＭ）３１６及び不揮発性メモリ（ＮＶＭ）３１８を含む。
揮発性メモリ３０８、３１２、及び３１６は、それぞれ、図１の揮発性メモリ１１６の異なる部分であり得る。
同様に、不揮発性メモリ３１０、３１４、及び３１８は、それぞれ、図１の不揮発性メモリ１１８の異なる部分であり得る。
【００４４】
一実施形態では、ＤＩＭＭ３０２、３０４、及び３０６のそれぞれは、異なる回路ボードであり得る。
さらに、揮発性メモリ３０８、３１２、及び３１６は、それぞれ、２つ以上の集積回路を含むことができ、不揮発性メモリ３１０、３１４、及び３１８は、それぞれ、２つ以上の集積回路を含むことができる。
したがって、例えば、ＤＩＭＭ３０２は、揮発性メモリ３０８を構成する複数の揮発性メモリ集積回路、及び不揮発性メモリ３１０を構成する複数の不揮発性メモリ集積回路を含むことができる。
【００４５】
ＤＩＭＭ３０２、３０４、及び３０６のそれぞれは、異なるアプリケーションデータを保存することができる。
その結果、チェックポイントに遭遇したとき、チェックポイント管理モジュール１０４は、揮発性メモリ３０８から不揮発性メモリ３１０へのチェックポイントデータのコピー、揮発性メモリ３１２から不揮発性メモリ３１４へのチェックポイントデータのコピー、及び揮発性メモリ３１６から不揮発性メモリ３１８へのチェックポイントデータのコピーを開始することができる。
一実施形態では、チェックポイント管理モジュール１０４は、十分にバッファリングされた（fully-buffered）ＤＩＭＭ制御プロトコルを使用してＤＩＭＭ３０２、３０４、及び３０６と通信することができる。
【００４６】
一実施形態では、チェックポイント管理モジュール１０４及び／又は処理回路部１０２は、ＤＩＭ３０２、３０４、及び３０６のそれぞれと個別に通信して、揮発性メモリ１１６から不揮発性メモリ１１８へのチェックポイントデータのコピーを開始することができる。
ＤＩＭＭ３０２は、ＤＩＭＭ３０４及び３０６とは独立に、揮発性メモリ３０８と不揮発性メモリ３１０との間でデータをコピーすることができる。
実際には、チェックポイントデータの第１の部分を揮発性メモリ３０８から不揮発性メモリ３１０へコピーすることができ、その間、チェックポイントデータの第２の部分が、揮発性メモリ３１２から不揮発性メモリ３１４へコピーされており、またその間、チェックポイントデータの第３の部分が、揮発性メモリ３１６から不揮発性メモリ３１８へコピーされている。
これを行うことによって、第１の部分がコピーされるまでチェックポイントデータの第２の部分のコピーを待機し、第２の部分がコピーされるまでチェックポイントデータの第３の部分のコピーを待機するよりも大幅に高速化することができる。
【００４７】
同様の手法は、チェックポイントデータを不揮発性メモリ１１８から揮発性メモリ１１６へ復元するときも使用され得る。
この手法によれば、チェックポイント管理モジュール１０４及び／又は処理回路部１０２は、不揮発性メモリ１１８から揮発性メモリ１１６へのチェックポイントデータのコピーを開始するために、ＤＩＭＭ３０２、３０４、及び３０６のそれぞれと個別に通信することができる。
同時に、チェックポイントデータの第１の部分を不揮発性メモリ３１０から揮発性メモリ３０８へコピーすることができ、チェックポイントデータの第２の部分を不揮発性メモリ３１４から揮発性メモリ３１２へコピーすることができ、チェックポイントの第３の部分を不揮発性メモリ３１８から揮発性メモリ３１６へコピーすることができる。
【００４８】
図４を参照して、処理システム１００の一代替的な実施形態が、システム１００ａとして示されている。
この実施形態では、図１に示す処理回路部１０２の実施形態が含むように、処理回路部１０２は、プロセッサ１１０及び１１２並びに相互接続１１４を含む。
加えて、処理回路部１０２は、それぞれのプロセッサを個別に含むことができるノースブリッジ４０２及びサウスブリッジ４０４も含む。
【００４９】
ノースブリッジ４０２は、相互接続１１４を介してプロセッサ１１０及び１１２から制御トランザクション及び／又はデータトランザクションを受信することができる。
各トランザクションについて、ノースブリッジ４０２は、そのトランザクションがメモリモジュール１０６を宛先としているのか、ディスクストレージ１０８を宛先としているのか、それとも大規模相互接続１２２を宛先としているのかを判断することができる。
トランザクションがメモリモジュール１０６を宛先としている場合、ノースブリッジ４０２は、そのトランザクションをメモリモジュール１０６へ転送することができる。
トランザクションがディスクストレージ１０８又は大規模相互接続１２２を宛先としている場合、ノースブリッジ４０２は、そのトランザクションをサウスブリッジ４０４へ転送することができ、サウスブリッジ４０４は、その後、トランザクションをディスクストレージ１０８又は大規模相互接続１２２のいずれかへ転送することができる。
サウスブリッジ４０４は、ディスクストレージ１０８又は大規模相互接続１２２のいずれかに適切なプロトコルに要求を変換することができる。
【００５０】
一実施形態では、ノースブリッジ４０２は、チェックポイント管理モジュール１０４を含む。
この実施形態では、チェックポイント管理モジュール１０４は、実行のためにプロセッサ１１０及び／又はプロセッサ１１２へ転送される命令を保存することができる。
代替的に又は加えて、ノースブリッジ４０１は、チェックポイント管理モジュール１０４のすべて又は一部を実施する制御ロジックを含むことができる。
代替的に、別の実施形態では、チェックポイント管理モジュール１０４は、プロセッサ１１０及び／又はプロセッサ１１２によって処理される命令として（例えば、隠匿された（concealed）ハイパーバイザ又はファイアウォールとして）実施され得る。
【００５１】
上述した開示のシステム及び方法とは対照的に、不揮発性メモリを含まない他のコンピュータシステムは、揮発性メモリからディスクストレージへチェックポイントデータをコピーすることができ、エラーの場合にディスクストレージから揮発性メモリへチェックポイントデータをリトリーブすることができる。
チェックポイントデータをディスクストレージではなく不揮発性メモリに保存することによって、これらの他のコンピュータシステムを上回るいくつかの利点を提供することができる。
【００５２】
一実施形態では、不揮発性メモリはディスクストレージよりもはるかに高速であり得るので、チェックポイントデータを不揮発性メモリに保存することは、チェックポイントデータをディスクストレージに保存するよりも、２桁以上（an order magnitude）高速であり得る。
さらに、チェックポイントデータは、揮発性メモリと不揮発性メモリとの間で並列にコピーされ得る。
【００５３】
揮発性メモリと不揮発性メモリとの間の物理的な距離が揮発性メモリとディスクストレージとの間の物理的な距離よりもはるかに小さい場合があるので、チェックポイントデータを不揮発性メモリに保存することは、チェックポイントデータをディスクストレージに保存ことよりも、より少ないエネルギーを消費し得る。
この物理的な距離が短いことによって、レイテンシも削減することができる。
さらに、ディスクストレージと対照的に、不揮発性メモリは可動部品を含まない場合があるので、チェックポイントデータを不揮発性メモリに保存することは、チェックポイントデータをディスクストレージに保存することよりも、より少ないエネルギーを消費し得る。
【００５４】
チェックポイントを不揮発性メモリから復元するのに使用される時間量がディスクストレージからチェックポイントを復元させるのに使用される時間量よりも大幅に少ない場合があるので、チェックポイントデータをディスクストレージに書き込むのではなく、チェックポイントデータを不揮発性メモリに書き込む結果として、プロセッサシステム又はプロセッサクラスタの可用性を増加させることができる。
さらに、ディスクストレージは不揮発性メモリが受けない（可動部品の使用による）機械的故障モードを受けるので、チェックポイントデータを不揮発性メモリに保存する結果、チェックポイントデータをディスクストレージに保存するよりもエラーを少なくすることができる。
【００５５】
一実施形態では、プロセッサシステムの可用性計算は、プロセッサシステムの計画外のダウンタイム量を伴う場合がある。
エラーの検出に続いてチェックポイントデータを揮発性メモリに復元するのに費やす時間は、計画外のダウンタイムと考えられ得る。
不揮発性メモリから揮発性メモリへチェックポイントデータを復元することはディスクストレージから揮発性メモリへチェックポイントデータを復元するよりも高速であり得るので、不揮発性メモリにチェックポイントするときの計画外のダウンタイムの量は、ディスクストレージにチェックポイントするときの計画外のダウンタイムの量よりも少ない場合がある。
【００５６】
プロセッサシステムの一例の可用性の式を、可用性＝１／（１＋エラー率×計画外のダウンタイム）とすることができる。
例として、毎年１０００個のエラーが発生し、ディスクストレージからチェックポイントデータを復元するときの１エラー当たりのダウンタイムが３秒である場合、プロセッサシステムの可用性を、９９．９９９％よりも小さいが、９９．９９％よりも大きくすることができ、したがって、「フォーナインズ（four nines）」の信頼性を有すると言われる場合がある。
これとは対照的に、不揮発性メモリを使用すると、不揮発性メモリからチェックポイントデータを復元するときの１チェックポイント当たりのダウンタイムが３００ミリ秒である場合、システムの可用性を、９９．９９９９％よりも小さいが９９．９９９％よりも大きくすることができ、したがって、「ファイブナインズ（five nines）」の信頼性を有すると言われる場合がある。
【００５７】
プロセッサシステムの計画外のダウンタイムを減少させることに加えて、チェックポイントデータをディスクストレージではなく不揮発性メモリに書き込むことによって、プロセッサシステムの計画内のダウンタイムの量も減少させ得る。
上記で論述したように、プロセッサシステムによるアプリケーションの実行は、チェックポイントデータが不揮発性メモリに書き込まれている間、サスペンドされ得る。
アプリケーションがサスペンドされている時間量は、プロセッサシステムの計画内のダウンタイムと考えられ得る。
チェックポイントデータを不揮発性メモリに書き込むのに要する時間は少ないので、チェックポイントデータを不揮発性メモリに書き込むことによって、チェックポイントデータをディスクストレージに書き込むことと比較して、プロセッサシステムの計画内のダウンタイムの量を大幅に減少させることができる。
【００５８】
開示した実施形態は、単に例として与えられたものにすぎず、求める保護は、開示した実施形態に限定されるべきではなく、それどころか、添付の特許請求の範囲の範囲によってのみ限定されるべきである。
【００５９】
さらに、本明細書の態様は、開示の例示の実施形態の作成及び／又はオペレーションの指針として提示されたものである。
本願の出願人（複数可）は、これらの説明した例示の実施形態を、明示的に開示した発明的態様に加えて、さらなる発明的態様も含み、開示し、説明しているものと考える。
例えば、追加の発明的態様は、例示の実施形態で説明した特徴よりも少ない特徴、多い特徴、及び／又は代替的な特徴を含むことができる。
より具体的な例では、出願人は、この開示を、明示的に開示した方法よりも少ないステップ、多いステップ、及び／又は代替的なステップを含む方法だけでなく、明示的に開示した構造よりも小さな構造、大きな構造、及び／又は代替的な構造を含む装置も含み、開示し、説明しているものと考える。
【符号の説明】
【００６０】
１００  システム
１０２  処理回路部
１０４  チェックポイント管理モジュール
１０６  メモリモジュール
１０８  ディスクストレージ
１１０、１１２  プロセッサ
１１４  相互接続
１１６  揮発性メモリ
１１８  不揮発性メモリ
１２２  大規模相互接続
２０４  管理ノード
２０６  Ｉ／Ｏノード
２０８  ネットワーク
２１０  ストレージ回路部
４０２  ノースブリッジ
４０４  サウスブリッジ
【図１】
2011519460.tif 000003
【図２】
2011519460.tif 000004
【図３】
2011519460.tif 000005
【図４】
2011519460.tif 000006
【国際調査報告】
2011519460.tif 000007
2011519460.tif 000008