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