(57)【要約】【課題】不意の電源断後の電源復旧時に、電源断時における不揮発性のシステム状態を復元する。【解決手段】バックアップ部１１０は、不揮発性主記憶部１２０への書込みアクセスを検出した場合に、不揮発性主記憶部１２０から元データを読取り、バックアップデータを不揮発性バックアップメモリ１３０に格納した後に、不揮発性主記憶部１２０のアドレスにデータを書込み、コミット部１４０が不揮発性主記憶部１２０の復元に必要なバックアップデータを管理し、ロールバック部１５０はロールバック指示時に、不揮発性バックアップメモリ１３０に格納されたバックアップデータから元データを抽出して、抽出した元データを不揮発性主記憶部１２０のアドレスに格納する。そして不揮発性のシステム状態を上記バックアップ部１１０のバックアップ対象とすることで、不意の電源断後の電源復旧時に、電源断時における不揮発性のシステム状態を復元可能とする。【選択図】        図１
2009157756.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の主記憶部と、
前記主記憶部に記憶されているデータの複製を記憶する不揮発性のバックアップ記憶部と、
前記主記憶部に対する書込み対象のデータと当該書込み対象のデータの書込み先を指定する書込み先アドレスとを含む書込みアクセスを検出した場合に、前記書込み先アドレスによって指定される記憶領域に既に記憶されているデータを読取る読取手段と、
前記読取手段で読取られた前記データと、前記書込みアクセスに含まれる前記書込み先アドレスとを含むバックアップデータを生成する生成手段と、
前記バックアップデータを前記バックアップ記憶部へ書込む第１の書込手段と、
前記バックアップデータが前記バックアップ記憶部に書込まれた後、前記主記憶部の前記書込み先アドレスによって指定される記憶領域へ、前記書込み対象のデータを書込む第２の書込手段と、
前記第１の書込手段によって現時点から新たに前記バックアップ記憶部に書込まれるバックアップデータを読み出し許可と設定するコミット手段と、
前記主記憶部の記憶内容を書戻す旨を指示された場合に、前記バックアップ記憶部に記憶されたバックアップデータのなかから、読み出し許可と設定された前記バックアップデータに含まれる前記データおよび前記書込み先アドレスを抽出する抽出手段と、
前記バックアップデータから抽出された前記データおよび前記書込みアドレスごとに、当該データを当該書込み先アドレスが示す前記主記憶部上の記憶領域へ書込む第３の書込手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記コミット手段は、前記バックアップ記憶部の前記バックアップデータを書込むアドレスに前記バックアップ記憶部の先頭アドレスを設定することにより、新たに前記バックアップ記憶部に記憶する前記バックアップデータを読み出し許可と設定し、
前記抽出手段は、前記バックアップ記憶部の先頭アドレスから、次に前記バックアップデータを書込む位置の直前のアドレスまでに記憶されている前記バックアップデータに含まれる前記データおよび前記書込み先アドレスを抽出すること、を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記主記憶部の記憶内容を書戻す際に用いる、先頭の前記バックアップデータを格納する前記バックアップ記憶部におけるアドレスを記憶する先頭アドレス記憶部と、
前記コミット手段は、前記先頭アドレス記憶部に記憶される前記アドレスに、前記バックアップ記憶部の前記バックアップデータを次回書込む位置のアドレスを設定することにより、新たに前記バックアップ記憶部に記憶する前記バックアップデータを読み出し許可と設定し、
前記抽出手段は、前記先頭アドレス記憶部に記憶された前記アドレスから、前記バックアップデータを書込む位置の直前のアドレスまでに記憶されている前記バックアップデータに含まれる前記データおよび前記書込み先アドレスを抽出すること、を特徴とする請求項１に記載の情報処理装置。
【請求項４】
プロセッサ部によるプログラムの実行中に前記プロセッサ部が保持しているプログラムの実行を制御する状態情報を前記書込み対象のデータとし、前記主記憶部上の予め定められたアドレスを前記書込み先アドレスとする前記書込みアクセスを送出する状態情報退避手段と、
予め定められたタイミングで前記コミット手段を実行させるように指示するチェックポイント作成手段と、
電源が復旧した場合に、前記第３の書込手段を実行させるように指示するチェックポイント復元手段と、
前記チェックポイント復元手段の指示により、前記第３の書込手段によって復元された前記不揮発性記憶部に記憶されている前記状態情報を書戻す状態情報復元手段と、をさらに備えることを特徴とする請求項１乃至請求項３のいずれか１項に記載の情報処理装置。
【請求項５】
請求項１乃至請求項３のいずれか１項に記載の情報処理装置において、
プロセッサ部と、
第１のプログラムを記憶するメモリと、をさらに備え、
前記第１のプログラムは、前記プロセッサ部を、
前記プロセッサ部による第２のプログラムの実行中に前記プロセッサ部が保持している前記第２のプログラムの実行を制御する状態情報を前記書込み対象のデータとし、前記主記憶部上の予め定められたアドレスを前記書込み先アドレスとする前記書込みアクセスを送出する状態情報退避手段と、
予め定められたタイミングで前記コミット手段を実行させるように指示するチェックポイント作成手段と、
電源が復旧した場合に、前記第３の書込手段を実行させるように指示するチェックポイント復元手段と、
前記チェックポイント復元手段の指示により、前記第３の書込手段によって復元された前記不揮発性記憶部に記憶されている前記状態情報を書戻す状態情報復元手段と、して機能させることを特徴とする情報処理装置。
【請求項６】
前記状態情報は、前記プロセッサ部が備えるレジスタが記憶するプログラムの実行を制御するデータを含むこと、を特徴とする請求項１乃至請求項５のいずれか１項に記載の情報処理装置。
【請求項７】
前記状態情報は、前記プロセッサ部が次に実行する命令の記憶領域を示すアドレスであること、を特徴とする請求項６に記載の情報処理装置。
【請求項８】
前記状態情報は、前記プロセッサ部によるプログラムの実行中に一時的に記憶するデータであること、を特徴とする請求項６に記載の情報処理装置。
【請求項９】
前記第２の書込手段は、前記プロセッサ部と前記主記憶部との間に接続され、前記プロセッサ部から前記書込みアクセスを受け、受けた前記書込みアクセスを前記主記憶部へ送出すること、を特徴とする請求項４乃至請求項８のいずれか１項に記載の情報処理装置。
【請求項１０】
不揮発性の主記憶部と、前記主記憶部に記憶されたデータの複製を記憶する不揮発性のバックアップ記憶部とを備える情報処理装置のデータ復旧方法であって、
前記主記憶部に対する書込み対象のデータと当該書込み対象のデータの書込み先を指定する書込み先アドレスとを含む書込みアクセスを検出した場合に、前記書込み先アドレスによって指定される記憶領域に既に記憶されているデータを読取る読取ステップと、
前記読取ステップで読取られた前記データと、前記書込みアクセスに含まれる前記書込み先アドレスとを含むバックアップデータを生成する生成ステップと、
前記バックアップデータを前記バックアップ記憶部へ書込む第１の書込ステップと、
前記バックアップデータが前記バックアップ記憶部に書込まれた後、前記主記憶部の前記書込み先アドレスによって指定される記憶領域へ、前記書込み対象のデータを書込む第２の書込ステップと、
前記第１の書込手段によって現時点から新たに前記バックアップ記憶部に記憶するバックアップデータを読み出し許可と設定するコミットステップと、
前記主記憶部の記憶内容を書戻す旨を指示された場合に、前記バックアップ記憶部に記憶されたバックアップデータのなかから、読み出し許可と設定された前記バックアップデータに含まれる前記元データおよび前記書込み先アドレスを抽出する抽出ステップと、
前記バックアップデータから抽出された前記元データおよび前記書込みアドレスごとに、当該元データを当該書込み先アドレスが示す前記主記憶部上の記憶領域へ書込む第３の書込ステップと、
を含むことを特徴とする情報処理装置のデータ復旧方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性の主記憶部を備える情報処理装置およびデータ復旧方法に関する。
【背景技術】
【０００２】
近年、フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＦｅＲＡＭ（Ferroelectric Random Access Memory）やＰＲＡＭ（Phase change Random Access Memory）といった電源供給を断っても記録した内容が失われない不揮発性メモリの技術開発が進んでいる。将来、それらの不揮発性メモリが、現在コンピュータの主記憶部として広く使われているＤＲＡＭ等の揮発性メモリにとって代わることが予想される。
【０００３】
このような不揮発性メモリをコンピュータの主記憶部に使用すると、プログラムの処理中に主記憶部への電源供給が途切れた場合でも、その主記憶部に保存されたデータやシステムの状態は主記憶部に残り、失われない。これにより、電源供給復旧時に、電源が切れた瞬間の状態からコンピュータの動作を再開することが容易になり、コンピュータの起動時間が短縮され、操作性が向上する。また、不揮発性メモリは、揮発性メモリと異なり、記憶内容を保持するための電源装置が必要ないため、コンピュータ全体としての消費電力の削減、電池の小型化、電池の長寿命化が期待される。
【０００４】
このような不揮発性メモリを使用したコンピュータで不意の電源断を経てその後電源が復旧した際に、電源が切れた瞬間の状態を保持してかつ復元する方法としては、電源断が生じた場合に電源監視機構によってＣＰＵに割り込みが通知され、オペレーティングシステムのような制御ソフトウェアによってＣＰＵの状態を主記憶部に保存する方法が開示されている（特許文献１参照）。
【０００５】
【特許文献１】特開２００５−１０７５７３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記特許文献１に記載された技術では、不意の電源断後の電源が復旧した時に、プロセッサの状態のような揮発性のシステム状態を復元できるようにするために、不意の電源断が起きたときにシステム状態を不揮発性メモリ（以下、不揮発性主記憶部という）に格納する間の電源を確保する必要がある。そのため、別途キャパシタ等の電池が必要である。すなわち、不揮発性主記憶部に記憶されたシステム状態を保持するための電池は必要としないが、不意の電源断時にシステム状態を記憶するための電池が必要である。一般にコンピュータが書込み処理を完結するために備える電池は、二次電池であることが多く、頻繁な電源断が生じた場合に十分な電力を供給できない可能性がある。
【０００７】
また、不意の電源断が生じた場合でも十分な電力を供給するために、電池を大きくすることにより、電池容量を大きくすることも考えられる。しかしながら、そもそも不揮発性主記憶部を用いることにより揮発性メモリで不可欠の電池を小型化または不要とすることが期待されるなか、不意の電源断に対応するために大きな電池を備えることはその期待に逆行することになる。
【０００８】
本発明は、上記に鑑みてなされたものであって、不揮発性主記憶部を備えた情報処理装置において、電池のような追加の電源を用いることなく、不意の電源断が起きた場合でも、その後の電源復旧時に、プロセッサの状態のような揮発性のシステム状態を復元することができる情報処理装置およびデータ復旧方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上述した課題を解決し、目的を達成するために、本発明は、不揮発性の主記憶部と、前記主記憶部に記憶されたデータの複製を記憶する不揮発性のバックアップ記憶部と、前記主記憶部に対する書込み対象のデータと当該書込み対象のデータの書込み先を指定する書込み先アドレスとを含む書込みアクセスを検出した場合に、前記書込み先アドレスによって指定される記憶領域に既に記憶されているデータを読取る読取手段と、前記読取手段で読取られた前記データと、前記書込みアクセスに含まれる前記書込み先アドレスとを含むバックアップデータを生成する生成手段と、前記バックアップデータを前記バックアップ記憶部へ書込む第１の書込手段と、前記バックアップデータが前記バックアップ記憶部に書込まれた後、前記主記憶部の前記書込み先アドレスによって指定される記憶領域へ、前記書込み対象のデータを書込む第２の書込手段と、前記第１の書込手段によって現時点から新たに前記バックアップ記憶部に書込まれるバックアップデータを読み出し可能と設定するコミット手段と、前記主記憶部の記憶内容を書戻す旨を指示された場合に、前記バックアップ記憶部に記憶されたバックアップデータのなかから、読み出し可能と設定された前記バックアップデータに含まれる前記データおよび前記書込み先アドレスを抽出する抽出手段と、前記バックアップデータから抽出された前記データおよび前記書込みアドレスごとに、当該データを当該書込み先アドレスが示す前記主記憶部上の記憶領域へ書込む第３の書込手段と、を備えることを特徴とする。
【００１０】
また、本発明にかかるデータ復旧方法は、不揮発性の主記憶部と、前記主記憶部に記憶されたデータの複製を記憶する不揮発性のバックアップ記憶部とを備える情報処理装置のデータ復旧方法であって、前記主記憶部に対する書込み対象のデータと当該書込み対象のデータの書込み先を指定する書込み先アドレスとを含む書込みアクセスを検出した場合に、前記書込み先アドレスによって指定される記憶領域に既に記憶されているデータを読取る読取ステップと、前記読取ステップで読取られた前記データと、前記書込みアクセスに含まれる前記書込み先アドレスとを含むバックアップデータを生成する生成ステップ、前記バックアップデータを前記バックアップ記憶部へ書込む第１の書込ステップと、前記バックアップデータが前記バックアップ記憶部に書込まれた後、前記主記憶部の前記書込み先アドレスによって指定される記憶領域へ、前記書込み対象のデータを書込む第２の書込ステップと、前記第１の書込手段によって現時点から新たに前記バックアップ記憶部に記憶するバックアップデータを読み出し可能と設定するコミットステップと、前記主記憶部の記憶内容を書戻す旨を指示された場合に、前記バックアップ記憶部に記憶されたバックアップデータのなかから、読み出し可能と設定された前記バックアップデータに含まれる前記元データおよび前記書込み先アドレスを抽出する抽出ステップと、前記バックアップデータから抽出された前記元データおよび前記書込みアドレスごとに、当該元データを当該書込み先アドレスが示す前記主記憶部上の記憶領域へ書込む第３の書込ステップと、を含むことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、不揮発性主記憶部を備える情報処理装置において、追加の電源を用いることなく、不意の電源断が起きても、次回の電源復旧時に、電源断時に最も近いシステムの状態を復元することができるという効果を奏する。
【発明を実施するための最良の形態】
【００１２】
以下に添付図面を参照して、この発明にかかる情報処理装置およびデータ復旧方法の最良な実施の形態を詳細に説明する。本発明にかかる情報処理装置をパーソナルコンピュータ（以下、ＰＣと示す）に適用した例を示すが、これに限定されるものではなく、主記憶部を備える装置であれば、サーバ装置、ゲーム機等の様々な装置に適用することができる。
【００１３】
（第１の実施の形態）
第１の実施の形態について、添付図面を参照して説明する。まず、本発明が適用されるＰＣの構成例について説明する。図１は、第１の実施の形態にかかるＰＣ１００の構成を示すブロック図である。
【００１４】
本実施の形態にかかるＰＣ１００は、バックアップ部１１０と、不揮発性主記憶部１２０と、不揮発性バックアップメモリ１３０と、コミット部１４０と、ロールバック部１５０と、プロセッサ部１６０と、制御ソフトウェア１７０と、バス１８０とを備えている。また、ＰＣ１００は、電源線１０を介して電源２００から電力を供給されている。
【００１５】
不揮発性主記憶部１２０は、ＭＲＡＭやＦｅＲＡＭ等の不揮発性メモリである。不揮発性主記憶部１２０には、プロセッサ部１６０上で動作するソフトウェアのプログラムやそのソフトウェアが使用するデータが格納される。なお、プロセッサ部１６０は、不揮発性主記憶部１２０へ書込みを行う際に、書込みアクセスを主記憶アクセス制御部１１１へ送出する。主記憶アクセス制御部１１１は、プロセッサ部１６０から受信した書込みアクセスに応じて、不揮発性主記憶部１２０への書込みを行う。ここで、書込みアクセスとは、プロセッサ部１６０が不揮発性主記憶部１２０へ書込むデータと、そのデータの書込み先を指定する不揮発性主記憶部１２０のアドレス（以下、書込み先アドレスという）とを含む情報である。
【００１６】
不揮発性バックアップメモリ１３０は、不揮発性主記憶部１２０と同様に不揮発性メモリである。不揮発性バックアップメモリ１３０は、不意の電源断後の電源復旧時に不揮発性主記憶部１２０に格納されていたデータを復旧するために用いるデータであるバックアップデータを記録する。ここで、バックアップデータとは、不揮発性主記憶部１２０への書込みアクセスを検出した際に、書込みアクセスに含まれる書込み先アドレスが示す不揮発性記憶部１２０の記憶領域に既に格納されているデータを複製したデータであり、具体的には、不揮発性記憶部１２０へのデータの復旧を可能にするために少なくとも不揮発性主記憶部１２０において更新されるデータのアドレスである書込み先アドレスと、そのアドレスに格納されていた更新前のデータ（以下、元データという）とを含む。
【００１７】
バックアップ部１１０は、不揮発性主記憶部１２０への書込み時にバックアップデータを作成して不揮発性バックアップメモリ１３０に書込む。具体的には、バックアップ部１１０は、不揮発性主記憶部１２０へのアクセスを監視して、不揮発性主記憶部１２０への書込みアクセスを検出した場合に、書込みアクセスに含まれた書込み先アドレスによって指定される記憶領域に既に記憶されている元データを不揮発性主記憶部１２０から読み出す。次に、バックアップ部１１０は、書込みアクセスに含まれた書込み先アドレスと元データからバックアップデータを生成し、不揮発性バックアップメモリ１３０に格納する。その後、バックアップ部１１０は、書込みアクセスで不揮発性主記憶部１２０への書込みを指示されたデータを実際に不揮発性主記憶部１２０の書込み先アドレスによって指定された記憶領域に書込む。
【００１８】
バックアップ部１１０は、さらに主記憶アクセス制御部１１１と、バックアップ制御部１１２と、バックアップメモリアクセス制御部１１３と、バックアップデータ生成部１１４と、バックアップメモリ先頭アドレス保持部１１５と、書込ポインタ保持部１１６とを備えている。
【００１９】
主記憶アクセス制御部１１１は、バス１８０を介して受信した不揮発性主記憶部１２０への読み書きアクセスに応じ、不揮発性主記憶部１２０に格納されたデータを読み出し、不揮発性主記憶部１２０にデータを書込む。ただし、主記憶アクセス制御部１１１は、バス１８０を介した不揮発性主記憶部１２０への書込みアクセスが検出された場合に、すぐに不揮発性主記憶部１２０にデータを書込まず、一旦バックアップ制御部１１２に書込み先アドレスを送出する。
【００２０】
また、主記憶アクセス制御部１１１は、バックアップ制御部１１２からの不揮発性主記憶部１２０へのアクセスに応じ、不揮発性主記憶部１２０に格納されたデータを読み書きする。主記憶アクセス制御部１１１は、バス１８０を介した不揮発性バックアップメモリ１３０へのアクセスをバックアップ制御部１１２に送出する。また、主記憶アクセス制御部１１１は、書込ポインタ保持部１１６へのアクセスをバックアップ制御部１１２に送出する。
【００２１】
バックアップ制御部１１２は、主記憶アクセス制御部１１１から不揮発性記憶部１２０への書込みアクセスを受信した場合、データをバックアップするために、主記憶アクセス制御部１１１を経由して不揮発性主記憶部１２０から不揮発性主記憶部１２０の書込み先アドレスが示す記憶領域に格納されているデータを読み出す。また、バックアップ制御部１１２は、バックアップデータ生成部１１４に書込み先アドレスおよび不揮発性主記憶部１２０から読み出した元データを送出する。
【００２２】
また、バックアップ制御部１１２は、バックアップメモリアクセス制御部１１３を経由して不揮発性バックアップメモリ１３０に格納されたデータを読み書きする。また、バックアップ制御部１１２は、書込ポインタ保持部１１６に格納された書込ポインタおよびバックアップメモリ先頭アドレス保持部１１５に格納されたバックアップメモリ先頭アドレスを読み書きする。
【００２３】
バックアップメモリアクセス制御部１１３は、バックアップ制御部１１２からのアクセスに応じて不揮発性バックアップメモリ１３０に格納されたデータを読み書きする。
【００２４】
バックアップデータ生成部１１４は、バックアップ制御部１１２から送信された不揮発性主記憶部１２０の書込み先アドレスおよび不揮発性主記憶部１２０の書込み先アドレスが示す記憶領域から読み出した元データからバックアップデータを生成する。
【００２５】
バックアップメモリ先頭アドレス保持部１１５は、不揮発性バックアップメモリ１３０の先頭アドレスを保持する。バックアップメモリ先頭アドレス保持部１１５は、バックアップ制御部１１２からの要求に応じてその内容を更新する、またはその内容をバックアップ制御部１１２に送出する。
【００２６】
書込ポインタ保持部１１６は、書込ポインタを保持する。ここで、書込ポインタとは、バックアップデータを書込む不揮発性バックアップメモリ１３０上のアドレスである。書込ポインタ保持部１１６は、バックアップ制御部１１２からの要求に応じてその内容を更新し、またはその内容をバックアップ制御部１１２に送出する。
【００２７】
また、バックアップ部１１０は、バックアップ処理そのものを行うか否かのスイッチを備え、不揮発性主記憶部１２０への書込みに対するバックアップ処理全体を有効にしたり無効にしたりする機能もあわせ持つ。なお、不揮発性主記憶部１２０に対する書込みアクセスを検出した場合にバックアップ処理を行うか否かを示すこのスイッチは、物理的なスイッチでも、メモリ上に保持した情報であってもよい。
【００２８】
コミット部１４０は、コミット処理を行う。コミット処理とは、突然の電源断を経て電源が復旧した場合であって、不揮発性主記憶部１２０の状態を復元する必要が生じた場合に、復元目標となる不揮発性主記憶部１２０の状態（以下、チェックポイントという）を作成する一連の処理のことである。具体的には、コミット部１４０が、コミット処理が指示された時点からバックアップ部１１０によって新たに不揮発性バックアップメモリ１３０に記憶されたバックアップデータを、不揮発性主記憶部１２０の記憶内容を書戻す際に用いるバックアップデータとして、読み出し許可と設定することにより実現する。なお、コミット処理の詳細は、不揮発性バックアップメモリ１３０のデータの使用方法（スタックかリングバッファか等）に依存する。
【００２９】
ロールバック部１５０は、不揮発性バックアップメモリ１３０に格納されているバックアップデータから不揮発性主記憶部１２０の内容を復元するために必要な、読み出し許可と設定されたバックアップデータを読み出し、読み出されたバックアップデータから抽出した不揮発性主記憶部１２０の書込み先アドレスに示された記憶領域に、バックアップデータから抽出した元データを書戻す。この処理により、不揮発性主記憶部１２０を一番最近に作成したチェックポイントの状態を復元する。
【００３０】
このロールバック部１５０が正しい復元処理を行うためには、不揮発性バックアップメモリ１３０に格納されている１または複数のバックアップデータの中から、不揮発性主記憶部１２０の状態を最新のチェックポイントの状態に復元するために必要なバックアップデータを読み出すことができることが重要である。つまり、不揮発性バックアップメモリ１３０は、不揮発性主記憶部１２０の状態を最新のチェックポイントの状態に復元するために必要なバックアップデータを管理する必要がある。したがって、コミット処理では、不揮発性バックアップメモリ１３０が管理対象としている復元処理に必要な１または複数のバックアップデータとして、当該コミット処理以前に管理していた１または複数のバックアップデータから、新たに不揮発性バックアップメモリ１３０に記憶するバックアップデータに、読み出し許可を設定する処理を行う。
【００３１】
ここで、あるコミット処理から次のコミット処理までに不揮発性バックアップメモリ１３０に記録され管理の対象となる一連のバックアップデータのことをシーケンスと呼ぶ。また、最後のコミット処理以降に不揮発性バックアップメモリ１３０に記録された一連のバックアップデータを、最新シーケンスという。つまり、ある時点で不揮発性バックアップメモリ１３０が管理しているシーケンスが最新シーケンスであり、最新シーケンスとして新たに不揮発性バックアップメモリ１３０に記憶するバックアップデータを読み出し許可と設定する処理とは、具体的に言えば、最新シーケンスの切替え処理である。
【００３２】
プロセッサ部１６０は、制御ソフトウェア１７０を動作させる。制御ソフトウェア１７０は、通常の処理においては不揮発性主記憶部１２０のデータを操作してシステム固有の機能を提供する。また、制御ソフトウェア１７０は、適切なタイミング（例えば、一定時間ごとに）でコミット部１４０に要求を出し、不揮発性主記憶部１２０のチェックポイントを作成する。制御ソフトウェア１７０は、電源復帰時にはロールバック部１５０に要求を出し、最新のチェックポイントまで不揮発性主記憶部１２０の状態を戻す処理を行う。
【００３３】
バス１８０は、コミット部１４０、ロールバック部１５０、プロセッサ部１６０およびバックアップ部１１０を接続する。不揮発性主記憶部１２０は、バス１８０に直接接続されず、バックアップ部１１０を介してバス１８０と接続する。これにより、不揮発性主記憶部１２０へのアクセスは、すべてバックアップ部１１０を介するため、バックアップ部１１０において不揮発性主記憶部１２０へのアクセスに応じたバックアップ処理を行うことができる。なお、バックアップ部１１０の配置位置は、バス１８０と不揮発性主記憶部１２０の間に限らず、不揮発性主記憶部１２０へのアクセスを不揮発性主記憶部１２０が受け取る前に受け取ることができる位置であれば、どの位置に配置されていてもよい。また、バックアップ部１１０には、不揮発性主記憶部１２０に加え、不揮発性バックアップメモリ１３０が接続される。
【００３４】
次に、以上のように構成されているＰＣ１００のバックアップ部１１０によるバックアップ処理、コミット部１４０によるコミット処理およびロールバック部１５０によるロールバック処理について説明する。
【００３５】
図２は、バックアップ部１１０が行うバックアップ処理手順を示すフローチャートである。なお、バックアップ部１１０は、バス１８０からのアクセスを受け取って動作する。
【００３６】
まず、主記憶アクセス制御部１１１は、バス１８０からのアクセスを検出する（ステップＳ２０１）。主記憶アクセス制御部１１１は、検出したアクセスが不揮発性主記憶部１２０への読出しアクセスであるか否かを判断する（ステップＳ２０２）。具体的には、アクセスに含まれる命令から不揮発性主記憶部１２０への読出しアクセスであるか否かを判断する。なお、読出しアクセスに限らず、書込みアクセス等の他のアクセスについても同様に、アクセスに含まれる命令からアクセスの種類やアクセスする記憶媒体を判断する。
【００３７】
検出したアクセスが不揮発性主記憶部１２０への読出しアクセスであると判断した場合は（ステップＳ２０２：Ｙｅｓ）、主記憶アクセス制御部１１１は不揮発性主記憶部１２０からデータを読み出し（ステップＳ２０３）、バス１８０へ読み出したデータを返す。
【００３８】
検出したアクセスが不揮発性主記憶部１２０への読出しアクセスでないと判断した場合は（ステップＳ２０２：Ｎｏ）、主記憶アクセス制御部１１１がバックアップ制御部１１２にアクセスを送出し、バックアップ制御部１１２がアクセスを受け取る（ステップＳ２０４）。バックアップ制御部１１２は、受け取ったアクセスが不揮発性主記憶部１２０への書込みアクセスであるか否かを判断する（ステップＳ２０５）。
【００３９】
受け取ったアクセスが不揮発性主記憶部１２０への書込みアクセスであると判断した場合は（ステップＳ２０５：Ｙｅｓ）、バックアップ制御部１１２はバックアップ処理が有効であるか否かを判断する（ステップＳ２０６）。バックアップ処理が有効でないと判断した場合は（ステップＳ２０６：Ｎｏ）、バックアップ処理は行わず、ステップＳ２１２に進む。バックアップ処理が有効であると判断した場合は（ステップＳ２０６：Ｙｅｓ）、バックアップ制御部１１２は主記憶アクセス制御部１１１に読出し要求を送出し、主記憶アクセス制御部１１１が不揮発性主記憶部１２０から書込み先アドレスに示す記憶領域に格納されている元データを読み出す（ステップＳ２０７）。次に、バックアップ制御部１１２は読み出した元データをバックアップデータ生成部１１４に渡し、バックアップデータ生成部１１４は、アドレスおよび元データからバックアップデータを生成する（ステップＳ２０８）。
【００４０】
バックアップ制御部１１２は、生成したバックアップデータを書込む不揮発性バックアップメモリ１３０上のアドレスを書込ポインタ保持部１１６から読み出す（ステップＳ２０９）。バックアップメモリアクセス制御部１１３は、読み出した不揮発性バックアップメモリ１３０上のアドレスに示す記憶領域にバックアップデータを書込む（ステップＳ２１０）。バックアップ制御部１１２は、書込ポインタ保持部１１６に保持しているポインタの値を更新する（ステップＳ２１１）。主記憶アクセス制御部１１１は、不揮発性主記憶部１２０の書込み先アドレスに示す記憶領域にデータを書込む（ステップＳ２１２）。
【００４１】
ステップＳ２０５において、受け取ったアクセスが不揮発性主記憶部１２０への書込みアクセスでないと判断した場合は（ステップＳ２０５：Ｎｏ）、バックアップ制御部１１２は不揮発性バックアップメモリ１３０へのアクセスであるか否かを判断する（ステップＳ２１３）。不揮発性バックアップメモリ１３０へのアクセスであると判断した場合は（ステップＳ２１３：Ｙｅｓ）、バックアップメモリアクセス制御部１１３は不揮発性バックアップメモリ１３０のデータを読み出す、または不揮発性バックアップメモリ１３０にデータを書込む（ステップＳ２１４）。
【００４２】
不揮発性バックアップメモリ１３０へのアクセスでないと判断した場合は（ステップＳ２１３：Ｎｏ）、バックアップ制御部１１２は書込ポインタ保持部１１６へのアクセスであるか否かを判断する（ステップＳ２１５）。書込ポインタ保持部１１６へのアクセスであると判断した場合は（ステップＳ２１５：Ｙｅｓ）、バックアップ制御部１１２は書込ポインタ保持部１１６の値を読み出す、または更新する（ステップＳ２１６）。書込ポインタ保持部１１６へのアクセスでないと判断した場合は（ステップＳ２１５：Ｎｏ）、処理を終了する。
【００４３】
次に、コミット部１４０によるコミット処理について説明する。図３は、コミット部１４０が行うコミット処理手順を示すフローチャートである。なお、コミット部１４０は、プロセッサ部１６０上で動作する制御ソフトウェア１７０またはロールバック部１５０からのバックアップ部１１０に対するコミット処理の指示で起動する。
【００４４】
コミット部１４０は、不揮発性バックアップメモリ１３０上の最新シーケンスを切替える（ステップＳ３０１）。このコミット処理により、この時点の不揮発性主記憶部１２０の状態が新たな不揮発性主記憶部１２０のチェックポイントとなる。コミット処理の詳細は、バックアップ部１１０の構成とバックアップデータの形式に依存する。
【００４５】
次に、ロールバック部１５０によるロールバック処理について説明する。図４は、ロールバック部１５０が行うロールバック処理手順を示すフローチャートである。なお、ロールバック部１５０は、プロセッサ部１６０上で動作する制御ソフトウェア１７０からの指示で起動する。
【００４６】
まず、ロールバック部１５０は、バックアップ部１１０へバックアップ処理を無効にする要求を送出する（ステップＳ４０１）。バックアップ部１１０は、バックアップ処理を無効にする（ステップＳ４０２）。これは、不揮発性主記憶部１２０にバックアップデータを書戻す際に、不意の電源断で不定となっている不揮発性主記憶部１２０のデータを不揮発性バックアップメモリ１３０にバックアップデータとして格納しないようにするためである。
【００４７】
ロールバック部１５０は、最新シーケンスを特定する（ステップＳ４０３）。なお、最新シーケンスの特定方法は、バックアップ部１１０の構成とバックアップデータの形式に依存する。次に、ロールバック部１５０は、読み出された最新シーケンス内の最新バックアップデータをＥに格納する（ステップＳ４０４）。ロールバック部１５０は、Ｅが空であるか否かを判断する（ステップＳ４０５）。
【００４８】
Ｅが空でないと判断した場合は（ステップＳ４０５：Ｎｏ）、ロールバック部１５０はＥの読み出し要求をバックアップ部１１０に送出する（ステップＳ４０６）。バックアップ部１１０は、不揮発性バックアップメモリ１３０からバックアップデータＥを読み出す（ステップＳ４０７）。ロールバック部１５０は、Ｅに含まれる書込み先アドレスへ元データを書戻す要求をバックアップ部１１０に送出する（ステップＳ４０８）。バックアップ部１１０は、不揮発性主記憶部１２０の指定されたアドレスに元データを書込む（ステップＳ４０９）。ロールバック部１５０は、最新シーケンス内の次のバックアップデータをＥに格納する（ステップＳ４１０）。これにより、最新シーケンス内で記録された時刻の逆順、すなわち新しく格納された順にバックアップデータを読み出すことができる。ステップＳ４０５に戻り、最新シーケンス内の全てのバックアップデータに対してこの処理を繰り返す。
【００４９】
ステップＳ４０５において、Ｅが空であると判断した場合は（ステップＳ４０５：Ｙｅｓ）、ロールバック部１５０はバックアップ部１１０にバックアップ処理を有効にする要求を送出する（ステップＳ４１１）。バックアップ部１１０は、バックアップ処理を有効にする（ステップＳ４１２）。ロールバック部１５０は、コミット部１４０にコミット要求を送出する（ステップＳ４１３）。コミット部１４０は、コミット処理を行う（ステップＳ４１４）。これにより、ロールバック処理が完了した時点でのチェックポイントが生成される。
【００５０】
なお、コミット部１４０およびロールバック部１５０は、プロセッサ部１６０上で動作するソフトウェアとして構成することも可能である。また、バックアップ部１１０内にコミット部１４０およびロールバック部１５０を配置し、制御ソフトウェア１７０からのコミット要求やロールバック要求を、バックアップ部１１０を経由して受ける構成としてもよい。
【００５１】
このように、不揮発性バックアップメモリ１３０を備え、不揮発性主記憶部１２０への書込みアクセスに応じてバックアップ処理を行い、適切なタイミングでコミット処理を行い、その後の電源復旧時にロールバック処理を行うことにより、電池のような追加の電源を用いることなく、不意の電源断が起きた場合でも、不揮発性主記憶部１２０に格納されたデータの状態を復元することができる。
【００５２】
具体的には、バス１８０で接続されるプロセッサ部１６０と不揮発性主記憶部１２０との間にバックアップ部１１０が存在することにより、コミット部１４０によってコミット処理が行われたタイミング以降に不揮発性主記憶部１２０に書込みが行われたアドレスの元データが全て不揮発性バックアップメモリ１３０上に記録される。また、電源断後も不揮発性主記憶部１２０上のデータと不揮発性バックアップメモリ１３０上のバックアップデータは保持される。これにより、不意の電源断後の電源復帰時には、ロールバック部１５０により、不揮発性バックアップメモリ１３０に格納されたバックアップデータが不揮発性主記憶部１２０に書き戻され、コミット指示のタイミングの状態まで不揮発性主記憶部１２０の状態に戻すことができる。
【００５３】
また、不揮発性主記憶部１２０へのアクセス単位でバックアップデータを作成するバックアップ部１１０をバス１８０と不揮発性主記憶部１２０の間に配置することにより、プロセッサ部１６０のアクセスに対して透過的に不揮発性主記憶部１２０に記憶されていた内容のバックアップを取得することができる。
【００５４】
（第２の実施の形態）
第２の実施の形態では、不揮発性バックアップメモリ１３０の具体的な構成について説明する。なお、第２の実施の形態では、添付図面を参照して第１の実施の形態と異なる部分を説明する。他の部分については第１の実施の形態と同様であるので、上述した説明を参照し、ここでの説明を省略する。
【００５５】
本実施の形態にかかる不揮発性バックアップメモリ１３０は、バックアップデータ生成部１１４によって生成されたバックアップデータをバックアップメモリ先頭アドレスから順にスタック状に格納する。
【００５６】
図５−１〜図５−３は、コミット処理時の不揮発性バックアップメモリ１３０の状態の一例を示す説明図である。図５−１は、前回のコミット処理から不揮発性主記憶部１２０に３回の書込みが行われ、３つのバックアップデータ５３が記録された時点での不揮発性バックアップメモリ１３０の状態である。３つのバックアップデータは、バックアップメモリ先頭アドレスが指す位置５１から順に格納される。書込ポインタ保持部１１６に格納された値、すなわち書込ポインタが指す位置５２は、次のバックアップデータが記録されるアドレスである。つまり不揮発性バックアップメモリ１３０は、バックアップメモリ先頭アドレスが指す位置５１と、書込ポインタが指す位置５２の直前までに格納された一連のバックアップデータを最新シーケンス５４として管理する。書込みポインタの指す位置５２以降のアドレスには、バックアップデータが格納されている可能性がある。しかし、それらは、以前のコミット処理により最新シーケンスではなくなっている。
【００５７】
図５−２は、不揮発性主記憶部１２０に４回目の書込みが行われ、４つのバックアップデータが記録された後の不揮発性バックアップメモリ１３０の状態である。図５−１で書込ポインタが指していた位置に新しいバックアップデータが記録され、書込ポインタが指す位置５２は、５つめのバックアップデータを記録するアドレスに更新される。
【００５８】
図５−３は、コミット処理を行った後の不揮発性バックアップメモリ１３０の状態である。コミット処理が行われることにより管理対象の複数のバックアップデータ、つまり最新シーケンスの切替えが行われる。具体的には、書込ポインタが示す位置５２にバックアップメモリ先頭アドレスを設定する。これにより、前回のコミット処理から今回のコミット処理までに不揮発性バックアックメモリ１３０に格納されたバックアップデータは、最新シーケンスではなくなり、最新シーケンスが空となる。
【００５９】
また、本実施の形態にかかるバックアップデータの大きさは、バックアップメモリアクセス制御部１１３が不揮発性バックアップメモリ１３０に対して１回の書込みで書込めるデータの大きさにする。例えば、不揮発性バックアップメモリ１３０のデータ入力が６４ビット幅であった場合、上位３２ビットにアドレス、下位３２ビットに元データを格納するようにバックアップデータを構成する。
【００６０】
また、本実施の形態にかかる書込ポインタ保持部１１６は、不揮発性メモリで構成する。これにより、電源復帰後も書込ポインタ保持部１１６に書込ポインタの値が保持されるので、電源復帰後に不揮発性バックアップメモリ１３０上の最新シーケンスを容易に特定することができる。
【００６１】
次に、不揮発性バックアップメモリ１３０が上述のように構成されている場合のバックアップ部１１０によるバックアップ処理、コミット部１４０によるコミット処理およびロールバック部１５０によるロールバック処理について説明する。
【００６２】
図６は、バックアップ部１１０が行うバックアップ処理手順を示すフローチャートである。なお、本実施の形態にかかるバックアップ処理の手順は、図２に示すフローチャートとほぼ同様であるので、異なる部分のみ説明する。ステップＳ６０１〜ステップＳ６１６は、図２でのステップＳ２０１〜ステップＳ２１６の説明を参照し、ここでの説明を省略する。
【００６３】
ステップＳ６１５において、書込ポインタ保持部１１６へのアクセスでないと判断した場合は（ステップＳ６１５：Ｎｏ）、バックアップ制御部１１２はバックアップメモリ先頭アドレス保持部１１５へのアクセスであるか否かを判断する（ステップＳ６１７）。バックアップメモリ先頭アドレス保持部１１５へのアクセスであると判断した場合は（ステップＳ６１７：Ｙｅｓ）、バックアップ制御部１１２はバックアップメモリ先頭アドレス保持部１１５の値を読み出す、または更新する（ステップＳ６１８）。バックアップメモリ先頭アドレス保持部１１５へのアクセスでないと判断した場合は（ステップＳ６１７：Ｎｏ）、処理を終了する。
【００６４】
次に、コミット処理について説明する。図７は、コミット部１４０が行うコミット処理手順を示すフローチャートである。
【００６５】
まず、コミット部１４０は、バックアップ部１１０からバックアップメモリ先頭アドレスの値を取得する（ステップＳ７０１）。バックアップ部１１０は、コミット部１４０からの要求に対して、バックアップメモリ先頭アドレス保持部１１５に保持されたバックアップメモリ先頭アドレスの値を送出する（ステップＳ７０２）。コミット部１４０は、書込ポインタ保持部１１６に、取得したバックアップメモリ先頭アドレスの値を格納する要求を送出する（ステップＳ７０３）。バックアップ部１１０は、書込ポインタ保持部１１６に受け取ったバックアップメモリ先頭アドレスの値を格納する（ステップＳ７０４）。例えば、図５−３に示すような不揮発性バックアップメモリ１３０の場合、コミット処理を行うことにより、書込ポインタ保持部１１６には不揮発性バックアップメモリ１３０の先頭アドレスの値が格納される。
【００６６】
次に、ロールバック処理について説明する。図８は、ロールバック部１５０が行うロールバック処理手順を示すフローチャートである。なお、本実施の形態にかかるロールバック処理の手順は、図４に示すフローチャートとほぼ同様であるので、異なる部分のみ説明する。ステップＳ８０４〜ステップＳ８１４は、図４でのステップＳ４０４〜ステップＳ４１４の説明を参照し、ここでの説明を省略する。
【００６７】
まず、ロールバック部１５０は、バックアップ部１１０へバックアップ処理を無効にする要求を送出する（ステップＳ８０１）。バックアップ部１１０は、バックアップ処理を無効にする（ステップＳ８０２）。次に、ロールバック部１５０は、書込ポインタおよびバックアップメモリ先頭アドレスの値を取得する（ステップＳ８０３）。例えば、図５−１に示すような状態で不揮発性バックアップメモリ１３０にバックアップデータが格納されている場合を考える。書込みポインタは、電源復帰後も書込ポインタ保持部１１６に保持されている。そこで、ロールバック部１５０は、バックアップ部１１０からバックアップメモリ先頭アドレスおよび書込みポインタを取得し、バックアップメモリ先頭アドレスから書込ポインタが指すアドレスの直前までに記録された一連のバックアップデータを最新シーケンスとする。図５−１の示す場合は、１つめ〜３つめのバックアップデータが最新シーケンスとなる。これ以降の処理は、図４と同様であるため、図４の説明を参照する。
【００６８】
このように、上述したように不揮発性バックアップメモリ１３０を構成し、コミット処理を行うことにより、コミット処理が簡易であるため、コストを低くすることができる。また、コミット処理が簡易であるため、チェックポイントの間隔を短くしてもＰＣ１００全体のスループットへの影響が小さくすることができる。また、チェックポイント間隔を短くすることにより、ロールバック時に後戻りする時間を短くするとともに、不揮発性バックアップメモリ１３０の使用量を抑えることができる。
【００６９】
（第３の実施の形態）
また、第２の実施の形態と異なる不揮発性バックアップメモリ１３０の構成をとることも考えられる。この第３の実施の形態では、第２の実施の形態とは異なる不揮発性バックアップメモリ１３０の具体的な構成について説明する。なお、この第３の実施の形態では、添付図面を参照して第２の実施の形態と異なる部分を説明する。他の部分については第２の実施の形態と同様であるので、上述した説明を参照し、ここでの説明を省略する。
【００７０】
本実施の形態にかかる不揮発性バックアップメモリ１３０は、バックアップデータ生成部１１４によって生成されたバックアップデータをバックアップメモリ先頭アドレスからリングバッファとして格納する。また、本実施の形態では、最新シーケンス先頭ポインタ保持部を備える。最新シーケンス先頭ポインタ保持部は、不揮発性記憶部１２０にデータを書戻す際に用いる一連のバックアップデータ（最新シーケンス）が格納されている不揮発性バックアップ部１３０の記憶領域の先頭のアドレスを保持している。
【００７１】
図９−１〜図９−５は、第３の実施の形態における、コミット処理時の不揮発性バックアップメモリ１３０の状態の一例を示す説明図である。図９−１のように、第３の実施の形態においては第２の実施の形態に加えて、最新シーケンス先頭ポインタ保持部に保持された最新シーケンス先頭ポインタが指す位置から書込ポインタの直前の位置までのバックアップデータを最新シーケンスとする。そしてコミット時には、第２の実施の形態のように書込ポインタにバックアップメモリ先頭アドレスの内容を設定するのではなく、最新シーケンス先頭ポインタに書込ポインタの内容を設定することで、最新シーケンスの切り替えを行う。
【００７２】
図９−２は、図９−１の状態から不揮発性主記憶１２０に３回の書込みが行われ、３つのバックアップデータが記録された時点での不揮発性バックアップメモリ１３０の状態である。３つのバックアップデータは、バックアップメモリ先頭アドレスが指す位置から順に格納される。書込ポインタ保持部１１６に格納された値、すなわち書込ポインタが指す位置は、次のバックアップデータが格納されるアドレスである。この図９−２においては、最新シーケンス先頭ポインタの指す位置から書込ポインタが指す位置の直前までに格納された３つのバックアップデータが最新シーケンスである。
【００７３】
図９−３は、図９−２の状態から不揮発性主記憶部１２０に４回目の書込みが行われ、４つ目のバックアップデータが格納された後の不揮発性バックアップメモリ１３０の状態である。図９−２で書込ポインタが指していた位置に新しいバックアップデータが記録され、書込ポインタが指す位置は、次にバックアップデータを格納する位置に更新される。
【００７４】
図９−４は、図９−３の状態でコミット処理が行われた時の不揮発性バックアップメモリ１３０の状態である。コミット部１４０が、コミット処理を行なうことにより、最新シーケンス先頭ポインタには書込ポインタの内容が設定され、最新シーケンス先頭ポインタと書込ポインタの指す位置が同じ位置となる。すなわち、コミット部１４０は、この処理を行うことによって、最新シーケンスを切り替える。なお、このコミット処理時の不揮発性主記憶１２０の状態が新しいチェックポイントとなり、今後次にコミット処理が行われるまでにこの不揮発性バックアップメモリ１３０に格納されていくバックアップデータは、不揮発性主記憶１２０の状態をその新しいチェックポイントの状態に復元するために必要なバックアップデータとなる。
【００７５】
図９−５は、コミット処理が行われた図９−４の状態から不揮発性主記憶１２０に１回書込みが行われてバックアップデータが一つ格納された、不揮発性バックアップメモリ１３０の状態である。コミット部１４０が、図９−４における書込ポインタの指す位置にバックアップデータを格納して書込ポインタを更新することにより、図９−５に示す状態になっている。そして、図９−５では、今格納されたバックアップデータが最新シーケンスとなる。以上が、第３の実施の形態における不揮発性バックアップメモリ１３０の使い方およびコミット処理の説明である。
【００７６】
次に、コミット処理について説明する。図１０は、コミット部１４０が行うコミット処理手順を示すフローチャートである。
【００７７】
まず、コミット部１４０は、バックアップ部１１０から書込ポインタの値を取得する（ステップＳ９０１）。バックアップ部１１０は、コミット部１４０からの要求に応じて、書込ポインタ保持部１１６に保持された書込ポインタの値を送出する（ステップＳ９０２）。コミット部１４０は、取得した書込ポインタの値を最新シーケンス先頭ポインタ保持部に格納する要求を送出する（ステップＳ９０３）。バックアップ部１１０は、最新シーケンス先頭ポインタ保持部に書込ポインタの値を格納する（ステップＳ９０４）。このコミット処理により、図９−４のように書込ポインタと最新シーケンス先頭ポインタの指す位置は同じ位置となり、最新シーケンスの切り替えが行われる。
【００７８】
この第３の実施の形態におけるバックアップ処理の処理フローは、第２の実施の形態における図６の処理フローとほとんど同じである。唯一異なるのは、バックアップ制御部による書込ポインタ保持部の更新処理（ステップＳ６１１）である。この第３の実施の形態においては、単に更新すればよいのではなく、もし書込ポインタの指す位置が不揮発性バックアップメモリ１３０の最後尾のアドレスに到達していた場合は、更新処理として、バックアップメモリ先頭アドレス保持部１１５が保持している値を書込ポインタ保持部１１６に設定する。
【００７９】
この第３の実施の形態におけるロールバック処理の処理フローは、第２の実施の形態における図８の処理フローとほとんど同じである。唯一異なるのは、ロールバック部による書込ポインタおよびバックアップメモリ先頭アドレスの値を取得する処理（ステップＳ８０３）である。この第３の実施の形態においては、バックアップメモリ先頭アドレスの値ではなく、最新シーケンス先頭ポインタの値を取得してロールバックに必要な最新シーケンスを特定する。
【００８０】
（第４の実施の形態）
第４の実施の形態について、添付図面を参照して説明する。第４の実施の形態にかかるＰＣでは、不意の電源断が起きた瞬間のプロセッサ上で動作している制御プログラムやアプリケーションプログラムの状態を含むプロセッサ状態のような揮発性のシステム状態を、不意の電源断後の電源復旧した際に復旧させる。
【００８１】
本発明が適用されるＰＣの構成例について説明する。図１１は、第４の実施の形態にかかるＰＣ１００の構成を示すブロック図である。本実施の形態において、第１の実施の形態と異なる部分は、制御ソフトウェアとして各部を制御するソフトウェアが動作している点であり、かかるプロセッサ部１６０上の制御ソフトウェア１７０の構成および動作を中心に説明する。
【００８２】
本実施の形態にかかるＰＣ１００は、バックアップ部１１０と、不揮発性主記憶部１２０と、不揮発性バックアップメモリ１３０と、コミット部１４０と、ロールバック部１５０と、プロセッサ部１６０と、制御ソフトウェア１７０と、バス１８０とを備えている。ここで、バックアップ部１１０と、不揮発性主記憶部１２０と、不揮発性バックアップメモリ１３０と、コミット部１４０と、ロールバック部１５０と、プロセッサ部１６０と、バス１８０の構成、機能は、第１の実施の形態と同様であるので、説明を省略する。
【００８３】
制御ソフトウェア１７０は、プロセッサ部１６０上で動作するソフトウェアである。制御ソフトウェア１７０は、プロセッサ部１６０をはじめとしたハードウェアの動作を制御する。また、制御ソフトウェア１７０は、その管理の下で、プロセッサ部１６０上で他のソフトウェアを動作させる。例えば、制御ソフトウェア１７０が一般的なオペレーティングシステムである場合、制御ソフトウェア１７０の管理の下、プロセッサ部１６０でアプリケーションソフトウェアが動作する。複数のアプリケーションソフトウェアをプロセッサ部１６０上で動作させる場合は、制御ソフトウェア１７０は、デバイスが起こす割込みや、制御ソフトウェア１７０自身が設定したタイマによる一定時間間隔の割込み等によって、アプリケーションソフトウェアを順次切り替えて動作させる。
【００８４】
制御ソフトウェア１７０は、さらにシステム状態退避部１７１と、システム状態復元部１７２と、チェックポイント作成部１７３と、チェックポイント復元部１７４を備えている。
【００８５】
システム状態退避部１７１は、あらかじめ決めておいたタイミングで、システム状態をあらかじめ確保しておいた専用の記憶領域に保存する。本実施の形態では、この専用の記憶領域を不揮発性主記憶部１２０上に確保することにより、システム状態を第１の実施の形態や第２の実施の形態で説明したバックアップの対象とする。
【００８６】
ここで、システム状態とは、プロセッサ部１６０によるプログラム（制御ソフトウェアやアプリケーションソフトウェア）の実行中にプロセッサ部１６０が保持しているプログラムの実行を制御する情報や、プロセッサ部１６０自体の状態を示す情報といった、ＰＣ１００の動作を継続するために必要なデータである。具体的には、直前まで動作していたプログラムが一時的にデータを保存していたプロセッサ部１６０の持つ汎用レジスタの内容や、プロセッサ部１６０が次に実行する命令の格納場所を示すアドレスのようなプロセッサ部１６０の動作を制御するレジスタの内容、および制御ソフトウェア１７０が設定しておいたメモリ管理ユニットのようなプロセッサ部１６０の設定など、ある時刻におけるＰＣ１００の実行状態を構成するデータであり、不意の電源断を経た後に電源が復旧した時に電源断時の状態を復元するために必要なデータのうち、揮発性のものを指す。
【００８７】
また、システム状態退避部１７１がシステム状態を保存するタイミングは、ＰＣ１００が備えるデバイスが起こす割込みや、制御ソフトウェア１７０自身が設定したタイマによる一定時間間隔の割込み、アプリケーションソフトウェアを切り替えるときなどがある。
【００８８】
システム状態復元部１７２は、不意の電源断を経て電源が復旧した時に、不揮発性主記憶部１２０の記憶領域に格納されたシステム状態を、ＰＣ１００に再度設定し、システム状態を復元する。システム状態復元部１７２が動作するタイミングは、上記実施の形態で説明したロールバックするデータとの整合性を採るために、チェックポイント復元部１７４によって不揮発性主記憶部１２０の内容が復元された後となる。
【００８９】
チェックポイント作成部１７３は、コミット部１４０にコミット要求を出すことにより、ロールバック部１５０がロールバック可能な不揮発性主記憶部１２０の状態、つまりチェックポイントを新規に作成する。なお、システム起動後、一度もチェックポイントを作成しなかった場合は、ロールバック部１５０によってロールバック可能な不揮発性主記憶部１２０の状態は、システム起動時の状態のみである。
【００９０】
また、バックアップ部１１０によってバックアップデータが書込まれる不揮発性バックアップメモリ１３０は有限であるため、長期間チェックポイントを作成しないと、不揮発性バックアップメモリ１３０にバックアップデータを書込める記憶領域がなくなってしまう。そのような場合も、システム起動時の状態にしかロールバックできなくなる。よって、チェックポイント作成部１７３は、適切なタイミングでチェックポイント作成処理を行う必要がある。
【００９１】
チェックポイント復元部１７４は、電源２００からの電源供給の復旧を検知した場合、ロールバック部１５０に最新のチェックポイントの内容まで不揮発性主記憶部１２０の内容をロールバックする要求を送出する。このため、チェックポイント復元部１７４は、制御ソフトウェア１７０が起動する際に、不意の電源断から電源供給が復旧して制御ソフトウェア１７０が再起動したか否かを判断する。ただし、判断手段は、どんな実装でも構わない。
【００９２】
なお、上述したシステム状態退避部１７１と、システム状態復元部１７２と、チェックポイント作成部１７３と、チェックポイント復元部１７４は、専用プロセッサ部で動作するソフトウェアとして提供され、専用ハードウェア上で動作してもよい。また、通常のプロセッサ部で動作するソフトウェアとして提供されてもよい。
【００９３】
次に、システム状態退避処理について説明する。図１２は、システム状態退避部１７１が行うシステム状態退避処理手順を示すフローチャートである。
【００９４】
システム状態退避部１７１は、システム状態を不揮発性主記憶部１２０上に確保された記憶領域に格納する（ステップＳ１００１）。
【００９５】
次に、チェックポイント作成処理について説明する。図１３は、チェックポイント作成部１７３が行うチェックポイント作成処理手順を示すフローチャートである。
【００９６】
まず、チェックポイント作成部１７３は、チェックポイント作成の指示に応じてコミット部１４０のコミット要求を送出する（ステップＳ１１０１）。コミット部１４０は、コミット要求に応じてコミット処理を行う（ステップＳ１１０２）。具体的には、上述した図３の処理を実行することによって、チェックポイントが作成され、不揮発性バックアップメモリ１３０が管理する最新シーケンスが切り替えられる。
【００９７】
次に、チェックポイント復元処理について説明する。図１４は、チェックポイント復元部１７４が行うチェックポイント復元処理手順を示すフローチャートである。なお、チェックポイント復元部１７４は、ＰＣ１００の電源が投入されて制御ソフトウェア１７０が動作を始めると、最初に呼び出される。
【００９８】
まず、チェックポイント復元部１７４は、不意の電源断後の再起動であるか否かを判断する（ステップＳ１２０１）。これにより、ロールバックする必要があるかどうかチェックする。なお、ＰＣ１００が、不意の電源断後の再起動か否かを判断できる機能であれば、物理的もしくは論理的のいずれを問わず、どんなものを使用してもよい。
【００９９】
不意の電源断後の再起動でないと判断した場合は（ステップＳ１２０１：Ｎｏ）、処理を終了する。不意の電源断後の再起動であると判断した場合は（ステップＳ１２０１：Ｙｅｓ）、チェックポイント復元部１７４はロールバック部１５０にロールバック指示を送出する（ステップＳ１２０２）。ロールバック部１５０は、ロールバック処理を行う（ステップＳ１２０３）。具体的には、上述した図４のフローチャートに従って処理を行い、不揮発性主記憶部１２０の内容をチェックポイントの状態に復元する。
【０１００】
次に、システム状態復元処理について説明する。図１５は、システム状態復元部１７２が行うシステム状態復元処理手順を示すフローチャートである。なお、この処理は、必ずチェックポイント復元部１７４の処理の後に呼ばれる。
【０１０１】
システム状態復元部１７２は、チェックポイント復元部１７４の処理によって復元された不揮発性主記憶部１２０上に保持されているシステム状態の記憶領域から、保持されているシステム状態を読み出し、ＰＣ１００に設定する（ステップＳ１３０１）。
【０１０２】
次に、ＰＣ１００全体として、システム状態退避処理、チェックポイント作成処理、チェックポイント復元およびシステム状態復元処理を説明する。図１６は、各部によるシステム状態退避処理を示すシーケンス図である。また、各部ごとの処理を縦方向に示し、各部間を結ぶ矢印は、各部間を接続している信号線を介した制御およびデータ信号のやり取りを示す。ＡからＡ’への向きに時間が経過している。
【０１０３】
まず、プロセッサ部１６０上で動作しているシステム状態退避部１７１が、不揮発性主記憶部１２０上の記憶領域にシステム状態を退避する（ステップＳ１４０１）。この退避処理は、不揮発性主記憶部１２０への書込み処理になるので、バックアップ部１１０によるバックアップ処理が動作する。システム状態は複数のデータから構成されるため、システム状態退避部１７１が、システム状態を構成するデータを退避しようと不揮発性主記憶部１２０に書込みを指示するたびに、図２の処理が行われる。
【０１０４】
バックアップ部１１０は、システム状態退避部１７１が書込もうとしている不揮発性主記憶部１２０のアドレスが示す記憶領域に格納されている元データを読み出す（ステップＳ１４０２、Ｓ１４０３）。バックアップ部１１０は、読み出したデータと書込み先アドレスからバックアップデータを作成する（ステップＳ１４０４）。バックアップ部１１０は、書込みポインタ保持部１１６が保持している書込みポインタが示す不揮発性バックアップメモリ１３０の記憶領域にバックアップデータを書込む（ステップＳ１４０５）。バックアップ部１１０は、書込みアクセスに含まれるデータを不揮発性主記憶部１２０に書込む（ステップＳ１４０６）。すなわち、バックアップデータを不揮発性バックアップメモリ１３０に書込んだ後に、システム状態退避部１７１から受信した不揮発性主記憶部１２０への書込みが実行される。バックアップ部１１０は、不揮発性バックアップメモリ１３０の書込みポインタを更新する（ステップＳ１４０７）。
【０１０５】
次に、チェックポイント作成処理を説明する。図１７は、各部によるチェックポイント作成処理を示すシーケンス図である。
【０１０６】
まず、プロセッサ部１６０上で動作しているチェックポイント作成部１７３が、コミット部１４０にコミットを指示する（ステップＳ１５０１）。すなわち、チェックポイントの作成を指示する。コミット部１４０は、コミット処理を行う（ステップＳ１５０２）。具体的には、図３に示す処理を実行し、不揮発性バックアップメモリ１３０が管理している最新シーケンスを切り替える。例えば、コミット処理を行うことにより、不揮発性バックアップメモリ１３０は図５−３や図９−４に示すような状態となる。これにより、この時点の不揮発性主記憶部１２０の状態が新たな不揮発性主記憶部１２０のチェックポイントとなる。
【０１０７】
次に、チェックポイント復元処理を説明する。図１８は、各部によるチェックポイント復元処理を示すシーケンス図である。このシーケンス図はシステム状態復元処理と連続したシーケンス図になっているが、これは、もともとチェックポイント復元処理とシステム状態復元処理が連続して行われるからである。
【０１０８】
まず、プロセッサ部１６０上で動作しているチェックポイント復元部１７４は、ロールバック部１５０にロールバックを指示する（ステップＳ１６０１）。ロールバック部１５０は、バックアップ部１１０のバックアップ処理を無効にする（ステップＳ１６０２）。ロールバック部１５０は、不揮発性バックアップメモリ１３０から最新シーケンスのバックアップデータを特定する（ステップＳ１６０３）。ロールバック部１５０は、不揮発性バックアップメモリ１３０から最新シーケンスのバックアップデータを読み出す（ステップＳ１６０４、Ｓ１６０５）。ロールバック部１５０は、最新シーケンスのバックアップデータを用いて不揮発性主記憶部１２０に元データを書戻す（ステップＳ１６０６）。具体的には、バックアップデータに含まれる不揮発性主記憶部１２０の書込み先アドレスと元データを抽出し、抽出した書込み先アドレスに示す記憶領域に、同じく抽出した元データを書戻す。
【０１０９】
ロールバック部１５０は、バックアップ部１１０のバックアップ処理を有効にする（ステップＳ１６０７）。最後にロールバック部１５０は、このロールバック処理に使用したバックアップデータはもう不要であるので、コミット部１４０にコミットを指示する（ステップＳ１６０８）。コミット部１４０は、不揮発性バックアップメモリ１３０が管理している最新シーケンスを切替える（ステップＳ１６０９）。これらの処理により、ロールバック処理が完了し、チェックポイント復元処理が完了する。
【０１１０】
その後、プロセッサ部１６０上で動作しているシステム状態復元部１７２が、不揮発性主記憶部１２０上に保存されているシステム状態を読み出す（ステップＳ１６１０、Ｓ１６１１）。システム状態復元部１７２は、読み出したシステム状態をシステムに設定する（ステップＳ１６１２）。
【０１１１】
このように、プロセッサ部１６０の状態を含む揮発性のシステム状態についても、不揮発性バックアップメモリ１３０にバックアップし、適切なタイミングでコミット処理を行い、不意の電源断後の電源復旧時にロールバック処理を行うことにより、不意の電源断が生じた場合であっても、電源が復旧した際にソフトウェアを含めて一貫性を保った状態とした上で、ＰＣ１００の動作を再開することができる。
【０１１２】
すなわち、上述した第１または第２の実施の形態のプロセッサ部１６０上で動作する制御ソフトウェア１７０にわずかな変更を加えることで、不意の電源断を経て電源が復帰しても、プロセッサの状態を含めた揮発性のシステム状態まで、電源断より前の特定の状態にロールバックできる。
【０１１３】
また、従来の制御ソフトウェアによるバックアップ処理は、制御ソフトウェア自身が保存したデータが正しく復元できることを保証しなければならなかった。これに対し、本実施の形態では、制御ソフトウェアの制御によらず、独立したバックアック部１１０の機能によって保存したシステム状態が正しく復元されることが保証される。
【０１１４】
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【０１１５】
【図１】第１の実施の形態にかかるＰＣの構成を示すブロック図である。
【図２】バックアップ部が行うバックアップ処理手順を示すフローチャートである。
【図３】コミット部が行うコミット処理手順を示すフローチャートである。
【図４】ロールバック部が行うロールバック処理手順を示すフローチャートである。
【図５−１】コミット処理時の不揮発性バックアップメモリの状態の一例を示す説明図である。
【図５−２】コミット処理時の不揮発性バックアップメモリの状態の一例を示す説明図である。
【図５−３】コミット処理時の不揮発性バックアップメモリの状態の一例を示す説明図である。
【図６】バックアップ部が行うバックアップ処理手順を示すフローチャートである。
【図７】コミット部が行うコミット処理手順を示すフローチャートである。
【図８】ロールバック部が行うロールバック処理手順を示すフローチャートである。
【図９−１】第３の実施の形態における、コミット処理時の不揮発性バックアップメモリ１３０の状態の一例を示す説明図である。
【図９−２】第３の実施の形態における、コミット処理時の不揮発性バックアップメモリ１３０の状態の一例を示す説明図である。
【図９−３】第３の実施の形態における、コミット処理時の不揮発性バックアップメモリ１３０の状態の一例を示す説明図である。
【図９−４】第３の実施の形態における、コミット処理時の不揮発性バックアップメモリ１３０の状態の一例を示す説明図である。
【図９−５】第３の実施の形態における、コミット処理時の不揮発性バックアップメモリ１３０の状態の一例を示す説明図である。
【図１０】コミット部１４０が行うコミット処理手順を示すフローチャートである。
【図１１】第４の実施の形態にかかるＰＣの構成を示すブロック図である。
【図１２】システム状態退避部が行うシステム状態退避処理手順を示すフローチャートである。
【図１３】チェックポイント作成部が行うチェックポイント作成処理手順を示すフローチャートである。
【図１４】チェックポイント復元部が行うチェックポイント復元処理手順を示すフローチャートである。
【図１５】システム状態復元部が行うシステム状態復元処理手順を示すフローチャートである。
【図１６】各部によるシステム状態退避処理を示すシーケンス図である。
【図１７】各部によるチェックポイント作成処理を示すシーケンス図である。
【図１８】各部によるチェックポイント復元処理を示すシーケンス図である。
【符号の説明】
【０１１６】
１００  パーソナルコンピュータ（ＰＣ）
１１０  バックアップ部
１１１  主記憶アクセス制御部
１１２  バックアップ制御部
１１３  バックアップメモリアクセス制御部
１１４  バックアップデータ生成部
１１５  バックアップメモリ先頭アドレス保持部
１１６  書込ポインタ保持部
１２０  不揮発性主記憶部
１３０  不揮発性バックアップメモリ
１４０  コミット部
１５０  ロールバック部
１６０  プロセッサ部
１７０  制御ソフトウェア
１７１  システム状態退避部
１７２  システム状態復元部
１７３  チェックポイント作成部
１７４  チェックポイント復元部
１８０  バス
２００  電源
【図１】
2009157756.tif 000003
【図２】
2009157756.tif 000004
【図３】
2009157756.tif 000005
【図４】
2009157756.tif 000006
【図５−１】
2009157756.tif 000007
【図５−２】
2009157756.tif 000008
【図５−３】
2009157756.tif 000009
【図６】
2009157756.tif 000010
【図７】
2009157756.tif 000011
【図８】
2009157756.tif 000012
【図９−１】
2009157756.tif 000013
【図９−２】
2009157756.tif 000014
【図９−３】
2009157756.tif 000015
【図９−４】
2009157756.tif 000016
【図９−５】
2009157756.tif 000017
【図１０】
2009157756.tif 000018
【図１１】
2009157756.tif 000019
【図１２】
2009157756.tif 000020
【図１３】
2009157756.tif 000021
【図１４】
2009157756.tif 000022
【図１５】
2009157756.tif 000023
【図１６】
2009157756.tif 000024
【図１７】
2009157756.tif 000025
【図１８】
2009157756.tif 000026