JP2009157756A - 情報処理装置およびデータ復旧方法 - Google Patents
情報処理装置およびデータ復旧方法 Download PDFInfo
- Publication number
- JP2009157756A JP2009157756A JP2007336854A JP2007336854A JP2009157756A JP 2009157756 A JP2009157756 A JP 2009157756A JP 2007336854 A JP2007336854 A JP 2007336854A JP 2007336854 A JP2007336854 A JP 2007336854A JP 2009157756 A JP2009157756 A JP 2009157756A
- Authority
- JP
- Japan
- Prior art keywords
- backup
- data
- unit
- storage unit
- write
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1415—Saving, restoring, recovering or retrying at system level
- G06F11/1441—Resetting or repowering
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1405—Saving, restoring, recovering or retrying at machine instruction level
- G06F11/141—Saving, restoring, recovering or retrying at machine instruction level for bus or memory accesses
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Retry When Errors Occur (AREA)
Abstract
【課題】不意の電源断後の電源復旧時に、電源断時における不揮発性のシステム状態を復元する。
【解決手段】バックアップ部110は、不揮発性主記憶部120への書込みアクセスを検出した場合に、不揮発性主記憶部120から元データを読取り、バックアップデータを不揮発性バックアップメモリ130に格納した後に、不揮発性主記憶部120のアドレスにデータを書込み、コミット部140が不揮発性主記憶部120の復元に必要なバックアップデータを管理し、ロールバック部150はロールバック指示時に、不揮発性バックアップメモリ130に格納されたバックアップデータから元データを抽出して、抽出した元データを不揮発性主記憶部120のアドレスに格納する。そして不揮発性のシステム状態を上記バックアップ部110のバックアップ対象とすることで、不意の電源断後の電源復旧時に、電源断時における不揮発性のシステム状態を復元可能とする。
【選択図】 図1
【解決手段】バックアップ部110は、不揮発性主記憶部120への書込みアクセスを検出した場合に、不揮発性主記憶部120から元データを読取り、バックアップデータを不揮発性バックアップメモリ130に格納した後に、不揮発性主記憶部120のアドレスにデータを書込み、コミット部140が不揮発性主記憶部120の復元に必要なバックアップデータを管理し、ロールバック部150はロールバック指示時に、不揮発性バックアップメモリ130に格納されたバックアップデータから元データを抽出して、抽出した元データを不揮発性主記憶部120のアドレスに格納する。そして不揮発性のシステム状態を上記バックアップ部110のバックアップ対象とすることで、不意の電源断後の電源復旧時に、電源断時における不揮発性のシステム状態を復元可能とする。
【選択図】 図1
Description
本発明は、不揮発性の主記憶部を備える情報処理装置およびデータ復旧方法に関する。
近年、フラッシュメモリ、MRAM(Magnetoresistive Random Access Memory)、FeRAM(Ferroelectric Random Access Memory)やPRAM(Phase change Random Access Memory)といった電源供給を断っても記録した内容が失われない不揮発性メモリの技術開発が進んでいる。将来、それらの不揮発性メモリが、現在コンピュータの主記憶部として広く使われているDRAM等の揮発性メモリにとって代わることが予想される。
このような不揮発性メモリをコンピュータの主記憶部に使用すると、プログラムの処理中に主記憶部への電源供給が途切れた場合でも、その主記憶部に保存されたデータやシステムの状態は主記憶部に残り、失われない。これにより、電源供給復旧時に、電源が切れた瞬間の状態からコンピュータの動作を再開することが容易になり、コンピュータの起動時間が短縮され、操作性が向上する。また、不揮発性メモリは、揮発性メモリと異なり、記憶内容を保持するための電源装置が必要ないため、コンピュータ全体としての消費電力の削減、電池の小型化、電池の長寿命化が期待される。
このような不揮発性メモリを使用したコンピュータで不意の電源断を経てその後電源が復旧した際に、電源が切れた瞬間の状態を保持してかつ復元する方法としては、電源断が生じた場合に電源監視機構によってCPUに割り込みが通知され、オペレーティングシステムのような制御ソフトウェアによってCPUの状態を主記憶部に保存する方法が開示されている(特許文献1参照)。
しかしながら、上記特許文献1に記載された技術では、不意の電源断後の電源が復旧した時に、プロセッサの状態のような揮発性のシステム状態を復元できるようにするために、不意の電源断が起きたときにシステム状態を不揮発性メモリ(以下、不揮発性主記憶部という)に格納する間の電源を確保する必要がある。そのため、別途キャパシタ等の電池が必要である。すなわち、不揮発性主記憶部に記憶されたシステム状態を保持するための電池は必要としないが、不意の電源断時にシステム状態を記憶するための電池が必要である。一般にコンピュータが書込み処理を完結するために備える電池は、二次電池であることが多く、頻繁な電源断が生じた場合に十分な電力を供給できない可能性がある。
また、不意の電源断が生じた場合でも十分な電力を供給するために、電池を大きくすることにより、電池容量を大きくすることも考えられる。しかしながら、そもそも不揮発性主記憶部を用いることにより揮発性メモリで不可欠の電池を小型化または不要とすることが期待されるなか、不意の電源断に対応するために大きな電池を備えることはその期待に逆行することになる。
本発明は、上記に鑑みてなされたものであって、不揮発性主記憶部を備えた情報処理装置において、電池のような追加の電源を用いることなく、不意の電源断が起きた場合でも、その後の電源復旧時に、プロセッサの状態のような揮発性のシステム状態を復元することができる情報処理装置およびデータ復旧方法を提供することを目的とする。
上述した課題を解決し、目的を達成するために、本発明は、不揮発性の主記憶部と、前記主記憶部に記憶されたデータの複製を記憶する不揮発性のバックアップ記憶部と、前記主記憶部に対する書込み対象のデータと当該書込み対象のデータの書込み先を指定する書込み先アドレスとを含む書込みアクセスを検出した場合に、前記書込み先アドレスによって指定される記憶領域に既に記憶されているデータを読取る読取手段と、前記読取手段で読取られた前記データと、前記書込みアクセスに含まれる前記書込み先アドレスとを含むバックアップデータを生成する生成手段と、前記バックアップデータを前記バックアップ記憶部へ書込む第1の書込手段と、前記バックアップデータが前記バックアップ記憶部に書込まれた後、前記主記憶部の前記書込み先アドレスによって指定される記憶領域へ、前記書込み対象のデータを書込む第2の書込手段と、前記第1の書込手段によって現時点から新たに前記バックアップ記憶部に書込まれるバックアップデータを読み出し可能と設定するコミット手段と、前記主記憶部の記憶内容を書戻す旨を指示された場合に、前記バックアップ記憶部に記憶されたバックアップデータのなかから、読み出し可能と設定された前記バックアップデータに含まれる前記データおよび前記書込み先アドレスを抽出する抽出手段と、前記バックアップデータから抽出された前記データおよび前記書込みアドレスごとに、当該データを当該書込み先アドレスが示す前記主記憶部上の記憶領域へ書込む第3の書込手段と、を備えることを特徴とする。
また、本発明にかかるデータ復旧方法は、不揮発性の主記憶部と、前記主記憶部に記憶されたデータの複製を記憶する不揮発性のバックアップ記憶部とを備える情報処理装置のデータ復旧方法であって、前記主記憶部に対する書込み対象のデータと当該書込み対象のデータの書込み先を指定する書込み先アドレスとを含む書込みアクセスを検出した場合に、前記書込み先アドレスによって指定される記憶領域に既に記憶されているデータを読取る読取ステップと、前記読取ステップで読取られた前記データと、前記書込みアクセスに含まれる前記書込み先アドレスとを含むバックアップデータを生成する生成ステップ、前記バックアップデータを前記バックアップ記憶部へ書込む第1の書込ステップと、前記バックアップデータが前記バックアップ記憶部に書込まれた後、前記主記憶部の前記書込み先アドレスによって指定される記憶領域へ、前記書込み対象のデータを書込む第2の書込ステップと、前記第1の書込手段によって現時点から新たに前記バックアップ記憶部に記憶するバックアップデータを読み出し可能と設定するコミットステップと、前記主記憶部の記憶内容を書戻す旨を指示された場合に、前記バックアップ記憶部に記憶されたバックアップデータのなかから、読み出し可能と設定された前記バックアップデータに含まれる前記元データおよび前記書込み先アドレスを抽出する抽出ステップと、前記バックアップデータから抽出された前記元データおよび前記書込みアドレスごとに、当該元データを当該書込み先アドレスが示す前記主記憶部上の記憶領域へ書込む第3の書込ステップと、を含むことを特徴とする。
本発明によれば、不揮発性主記憶部を備える情報処理装置において、追加の電源を用いることなく、不意の電源断が起きても、次回の電源復旧時に、電源断時に最も近いシステムの状態を復元することができるという効果を奏する。
以下に添付図面を参照して、この発明にかかる情報処理装置およびデータ復旧方法の最良な実施の形態を詳細に説明する。本発明にかかる情報処理装置をパーソナルコンピュータ(以下、PCと示す)に適用した例を示すが、これに限定されるものではなく、主記憶部を備える装置であれば、サーバ装置、ゲーム機等の様々な装置に適用することができる。
(第1の実施の形態)
第1の実施の形態について、添付図面を参照して説明する。まず、本発明が適用されるPCの構成例について説明する。図1は、第1の実施の形態にかかるPC100の構成を示すブロック図である。
第1の実施の形態について、添付図面を参照して説明する。まず、本発明が適用されるPCの構成例について説明する。図1は、第1の実施の形態にかかるPC100の構成を示すブロック図である。
本実施の形態にかかるPC100は、バックアップ部110と、不揮発性主記憶部120と、不揮発性バックアップメモリ130と、コミット部140と、ロールバック部150と、プロセッサ部160と、制御ソフトウェア170と、バス180とを備えている。また、PC100は、電源線10を介して電源200から電力を供給されている。
不揮発性主記憶部120は、MRAMやFeRAM等の不揮発性メモリである。不揮発性主記憶部120には、プロセッサ部160上で動作するソフトウェアのプログラムやそのソフトウェアが使用するデータが格納される。なお、プロセッサ部160は、不揮発性主記憶部120へ書込みを行う際に、書込みアクセスを主記憶アクセス制御部111へ送出する。主記憶アクセス制御部111は、プロセッサ部160から受信した書込みアクセスに応じて、不揮発性主記憶部120への書込みを行う。ここで、書込みアクセスとは、プロセッサ部160が不揮発性主記憶部120へ書込むデータと、そのデータの書込み先を指定する不揮発性主記憶部120のアドレス(以下、書込み先アドレスという)とを含む情報である。
不揮発性バックアップメモリ130は、不揮発性主記憶部120と同様に不揮発性メモリである。不揮発性バックアップメモリ130は、不意の電源断後の電源復旧時に不揮発性主記憶部120に格納されていたデータを復旧するために用いるデータであるバックアップデータを記録する。ここで、バックアップデータとは、不揮発性主記憶部120への書込みアクセスを検出した際に、書込みアクセスに含まれる書込み先アドレスが示す不揮発性記憶部120の記憶領域に既に格納されているデータを複製したデータであり、具体的には、不揮発性記憶部120へのデータの復旧を可能にするために少なくとも不揮発性主記憶部120において更新されるデータのアドレスである書込み先アドレスと、そのアドレスに格納されていた更新前のデータ(以下、元データという)とを含む。
バックアップ部110は、不揮発性主記憶部120への書込み時にバックアップデータを作成して不揮発性バックアップメモリ130に書込む。具体的には、バックアップ部110は、不揮発性主記憶部120へのアクセスを監視して、不揮発性主記憶部120への書込みアクセスを検出した場合に、書込みアクセスに含まれた書込み先アドレスによって指定される記憶領域に既に記憶されている元データを不揮発性主記憶部120から読み出す。次に、バックアップ部110は、書込みアクセスに含まれた書込み先アドレスと元データからバックアップデータを生成し、不揮発性バックアップメモリ130に格納する。その後、バックアップ部110は、書込みアクセスで不揮発性主記憶部120への書込みを指示されたデータを実際に不揮発性主記憶部120の書込み先アドレスによって指定された記憶領域に書込む。
バックアップ部110は、さらに主記憶アクセス制御部111と、バックアップ制御部112と、バックアップメモリアクセス制御部113と、バックアップデータ生成部114と、バックアップメモリ先頭アドレス保持部115と、書込ポインタ保持部116とを備えている。
主記憶アクセス制御部111は、バス180を介して受信した不揮発性主記憶部120への読み書きアクセスに応じ、不揮発性主記憶部120に格納されたデータを読み出し、不揮発性主記憶部120にデータを書込む。ただし、主記憶アクセス制御部111は、バス180を介した不揮発性主記憶部120への書込みアクセスが検出された場合に、すぐに不揮発性主記憶部120にデータを書込まず、一旦バックアップ制御部112に書込み先アドレスを送出する。
また、主記憶アクセス制御部111は、バックアップ制御部112からの不揮発性主記憶部120へのアクセスに応じ、不揮発性主記憶部120に格納されたデータを読み書きする。主記憶アクセス制御部111は、バス180を介した不揮発性バックアップメモリ130へのアクセスをバックアップ制御部112に送出する。また、主記憶アクセス制御部111は、書込ポインタ保持部116へのアクセスをバックアップ制御部112に送出する。
バックアップ制御部112は、主記憶アクセス制御部111から不揮発性記憶部120への書込みアクセスを受信した場合、データをバックアップするために、主記憶アクセス制御部111を経由して不揮発性主記憶部120から不揮発性主記憶部120の書込み先アドレスが示す記憶領域に格納されているデータを読み出す。また、バックアップ制御部112は、バックアップデータ生成部114に書込み先アドレスおよび不揮発性主記憶部120から読み出した元データを送出する。
また、バックアップ制御部112は、バックアップメモリアクセス制御部113を経由して不揮発性バックアップメモリ130に格納されたデータを読み書きする。また、バックアップ制御部112は、書込ポインタ保持部116に格納された書込ポインタおよびバックアップメモリ先頭アドレス保持部115に格納されたバックアップメモリ先頭アドレスを読み書きする。
バックアップメモリアクセス制御部113は、バックアップ制御部112からのアクセスに応じて不揮発性バックアップメモリ130に格納されたデータを読み書きする。
バックアップデータ生成部114は、バックアップ制御部112から送信された不揮発性主記憶部120の書込み先アドレスおよび不揮発性主記憶部120の書込み先アドレスが示す記憶領域から読み出した元データからバックアップデータを生成する。
バックアップメモリ先頭アドレス保持部115は、不揮発性バックアップメモリ130の先頭アドレスを保持する。バックアップメモリ先頭アドレス保持部115は、バックアップ制御部112からの要求に応じてその内容を更新する、またはその内容をバックアップ制御部112に送出する。
書込ポインタ保持部116は、書込ポインタを保持する。ここで、書込ポインタとは、バックアップデータを書込む不揮発性バックアップメモリ130上のアドレスである。書込ポインタ保持部116は、バックアップ制御部112からの要求に応じてその内容を更新し、またはその内容をバックアップ制御部112に送出する。
また、バックアップ部110は、バックアップ処理そのものを行うか否かのスイッチを備え、不揮発性主記憶部120への書込みに対するバックアップ処理全体を有効にしたり無効にしたりする機能もあわせ持つ。なお、不揮発性主記憶部120に対する書込みアクセスを検出した場合にバックアップ処理を行うか否かを示すこのスイッチは、物理的なスイッチでも、メモリ上に保持した情報であってもよい。
コミット部140は、コミット処理を行う。コミット処理とは、突然の電源断を経て電源が復旧した場合であって、不揮発性主記憶部120の状態を復元する必要が生じた場合に、復元目標となる不揮発性主記憶部120の状態(以下、チェックポイントという)を作成する一連の処理のことである。具体的には、コミット部140が、コミット処理が指示された時点からバックアップ部110によって新たに不揮発性バックアップメモリ130に記憶されたバックアップデータを、不揮発性主記憶部120の記憶内容を書戻す際に用いるバックアップデータとして、読み出し許可と設定することにより実現する。なお、コミット処理の詳細は、不揮発性バックアップメモリ130のデータの使用方法(スタックかリングバッファか等)に依存する。
ロールバック部150は、不揮発性バックアップメモリ130に格納されているバックアップデータから不揮発性主記憶部120の内容を復元するために必要な、読み出し許可と設定されたバックアップデータを読み出し、読み出されたバックアップデータから抽出した不揮発性主記憶部120の書込み先アドレスに示された記憶領域に、バックアップデータから抽出した元データを書戻す。この処理により、不揮発性主記憶部120を一番最近に作成したチェックポイントの状態を復元する。
このロールバック部150が正しい復元処理を行うためには、不揮発性バックアップメモリ130に格納されている1または複数のバックアップデータの中から、不揮発性主記憶部120の状態を最新のチェックポイントの状態に復元するために必要なバックアップデータを読み出すことができることが重要である。つまり、不揮発性バックアップメモリ130は、不揮発性主記憶部120の状態を最新のチェックポイントの状態に復元するために必要なバックアップデータを管理する必要がある。したがって、コミット処理では、不揮発性バックアップメモリ130が管理対象としている復元処理に必要な1または複数のバックアップデータとして、当該コミット処理以前に管理していた1または複数のバックアップデータから、新たに不揮発性バックアップメモリ130に記憶するバックアップデータに、読み出し許可を設定する処理を行う。
ここで、あるコミット処理から次のコミット処理までに不揮発性バックアップメモリ130に記録され管理の対象となる一連のバックアップデータのことをシーケンスと呼ぶ。また、最後のコミット処理以降に不揮発性バックアップメモリ130に記録された一連のバックアップデータを、最新シーケンスという。つまり、ある時点で不揮発性バックアップメモリ130が管理しているシーケンスが最新シーケンスであり、最新シーケンスとして新たに不揮発性バックアップメモリ130に記憶するバックアップデータを読み出し許可と設定する処理とは、具体的に言えば、最新シーケンスの切替え処理である。
プロセッサ部160は、制御ソフトウェア170を動作させる。制御ソフトウェア170は、通常の処理においては不揮発性主記憶部120のデータを操作してシステム固有の機能を提供する。また、制御ソフトウェア170は、適切なタイミング(例えば、一定時間ごとに)でコミット部140に要求を出し、不揮発性主記憶部120のチェックポイントを作成する。制御ソフトウェア170は、電源復帰時にはロールバック部150に要求を出し、最新のチェックポイントまで不揮発性主記憶部120の状態を戻す処理を行う。
バス180は、コミット部140、ロールバック部150、プロセッサ部160およびバックアップ部110を接続する。不揮発性主記憶部120は、バス180に直接接続されず、バックアップ部110を介してバス180と接続する。これにより、不揮発性主記憶部120へのアクセスは、すべてバックアップ部110を介するため、バックアップ部110において不揮発性主記憶部120へのアクセスに応じたバックアップ処理を行うことができる。なお、バックアップ部110の配置位置は、バス180と不揮発性主記憶部120の間に限らず、不揮発性主記憶部120へのアクセスを不揮発性主記憶部120が受け取る前に受け取ることができる位置であれば、どの位置に配置されていてもよい。また、バックアップ部110には、不揮発性主記憶部120に加え、不揮発性バックアップメモリ130が接続される。
次に、以上のように構成されているPC100のバックアップ部110によるバックアップ処理、コミット部140によるコミット処理およびロールバック部150によるロールバック処理について説明する。
図2は、バックアップ部110が行うバックアップ処理手順を示すフローチャートである。なお、バックアップ部110は、バス180からのアクセスを受け取って動作する。
まず、主記憶アクセス制御部111は、バス180からのアクセスを検出する(ステップS201)。主記憶アクセス制御部111は、検出したアクセスが不揮発性主記憶部120への読出しアクセスであるか否かを判断する(ステップS202)。具体的には、アクセスに含まれる命令から不揮発性主記憶部120への読出しアクセスであるか否かを判断する。なお、読出しアクセスに限らず、書込みアクセス等の他のアクセスについても同様に、アクセスに含まれる命令からアクセスの種類やアクセスする記憶媒体を判断する。
検出したアクセスが不揮発性主記憶部120への読出しアクセスであると判断した場合は(ステップS202:Yes)、主記憶アクセス制御部111は不揮発性主記憶部120からデータを読み出し(ステップS203)、バス180へ読み出したデータを返す。
検出したアクセスが不揮発性主記憶部120への読出しアクセスでないと判断した場合は(ステップS202:No)、主記憶アクセス制御部111がバックアップ制御部112にアクセスを送出し、バックアップ制御部112がアクセスを受け取る(ステップS204)。バックアップ制御部112は、受け取ったアクセスが不揮発性主記憶部120への書込みアクセスであるか否かを判断する(ステップS205)。
受け取ったアクセスが不揮発性主記憶部120への書込みアクセスであると判断した場合は(ステップS205:Yes)、バックアップ制御部112はバックアップ処理が有効であるか否かを判断する(ステップS206)。バックアップ処理が有効でないと判断した場合は(ステップS206:No)、バックアップ処理は行わず、ステップS212に進む。バックアップ処理が有効であると判断した場合は(ステップS206:Yes)、バックアップ制御部112は主記憶アクセス制御部111に読出し要求を送出し、主記憶アクセス制御部111が不揮発性主記憶部120から書込み先アドレスに示す記憶領域に格納されている元データを読み出す(ステップS207)。次に、バックアップ制御部112は読み出した元データをバックアップデータ生成部114に渡し、バックアップデータ生成部114は、アドレスおよび元データからバックアップデータを生成する(ステップS208)。
バックアップ制御部112は、生成したバックアップデータを書込む不揮発性バックアップメモリ130上のアドレスを書込ポインタ保持部116から読み出す(ステップS209)。バックアップメモリアクセス制御部113は、読み出した不揮発性バックアップメモリ130上のアドレスに示す記憶領域にバックアップデータを書込む(ステップS210)。バックアップ制御部112は、書込ポインタ保持部116に保持しているポインタの値を更新する(ステップS211)。主記憶アクセス制御部111は、不揮発性主記憶部120の書込み先アドレスに示す記憶領域にデータを書込む(ステップS212)。
ステップS205において、受け取ったアクセスが不揮発性主記憶部120への書込みアクセスでないと判断した場合は(ステップS205:No)、バックアップ制御部112は不揮発性バックアップメモリ130へのアクセスであるか否かを判断する(ステップS213)。不揮発性バックアップメモリ130へのアクセスであると判断した場合は(ステップS213:Yes)、バックアップメモリアクセス制御部113は不揮発性バックアップメモリ130のデータを読み出す、または不揮発性バックアップメモリ130にデータを書込む(ステップS214)。
不揮発性バックアップメモリ130へのアクセスでないと判断した場合は(ステップS213:No)、バックアップ制御部112は書込ポインタ保持部116へのアクセスであるか否かを判断する(ステップS215)。書込ポインタ保持部116へのアクセスであると判断した場合は(ステップS215:Yes)、バックアップ制御部112は書込ポインタ保持部116の値を読み出す、または更新する(ステップS216)。書込ポインタ保持部116へのアクセスでないと判断した場合は(ステップS215:No)、処理を終了する。
次に、コミット部140によるコミット処理について説明する。図3は、コミット部140が行うコミット処理手順を示すフローチャートである。なお、コミット部140は、プロセッサ部160上で動作する制御ソフトウェア170またはロールバック部150からのバックアップ部110に対するコミット処理の指示で起動する。
コミット部140は、不揮発性バックアップメモリ130上の最新シーケンスを切替える(ステップS301)。このコミット処理により、この時点の不揮発性主記憶部120の状態が新たな不揮発性主記憶部120のチェックポイントとなる。コミット処理の詳細は、バックアップ部110の構成とバックアップデータの形式に依存する。
次に、ロールバック部150によるロールバック処理について説明する。図4は、ロールバック部150が行うロールバック処理手順を示すフローチャートである。なお、ロールバック部150は、プロセッサ部160上で動作する制御ソフトウェア170からの指示で起動する。
まず、ロールバック部150は、バックアップ部110へバックアップ処理を無効にする要求を送出する(ステップS401)。バックアップ部110は、バックアップ処理を無効にする(ステップS402)。これは、不揮発性主記憶部120にバックアップデータを書戻す際に、不意の電源断で不定となっている不揮発性主記憶部120のデータを不揮発性バックアップメモリ130にバックアップデータとして格納しないようにするためである。
ロールバック部150は、最新シーケンスを特定する(ステップS403)。なお、最新シーケンスの特定方法は、バックアップ部110の構成とバックアップデータの形式に依存する。次に、ロールバック部150は、読み出された最新シーケンス内の最新バックアップデータをEに格納する(ステップS404)。ロールバック部150は、Eが空であるか否かを判断する(ステップS405)。
Eが空でないと判断した場合は(ステップS405:No)、ロールバック部150はEの読み出し要求をバックアップ部110に送出する(ステップS406)。バックアップ部110は、不揮発性バックアップメモリ130からバックアップデータEを読み出す(ステップS407)。ロールバック部150は、Eに含まれる書込み先アドレスへ元データを書戻す要求をバックアップ部110に送出する(ステップS408)。バックアップ部110は、不揮発性主記憶部120の指定されたアドレスに元データを書込む(ステップS409)。ロールバック部150は、最新シーケンス内の次のバックアップデータをEに格納する(ステップS410)。これにより、最新シーケンス内で記録された時刻の逆順、すなわち新しく格納された順にバックアップデータを読み出すことができる。ステップS405に戻り、最新シーケンス内の全てのバックアップデータに対してこの処理を繰り返す。
ステップS405において、Eが空であると判断した場合は(ステップS405:Yes)、ロールバック部150はバックアップ部110にバックアップ処理を有効にする要求を送出する(ステップS411)。バックアップ部110は、バックアップ処理を有効にする(ステップS412)。ロールバック部150は、コミット部140にコミット要求を送出する(ステップS413)。コミット部140は、コミット処理を行う(ステップS414)。これにより、ロールバック処理が完了した時点でのチェックポイントが生成される。
なお、コミット部140およびロールバック部150は、プロセッサ部160上で動作するソフトウェアとして構成することも可能である。また、バックアップ部110内にコミット部140およびロールバック部150を配置し、制御ソフトウェア170からのコミット要求やロールバック要求を、バックアップ部110を経由して受ける構成としてもよい。
このように、不揮発性バックアップメモリ130を備え、不揮発性主記憶部120への書込みアクセスに応じてバックアップ処理を行い、適切なタイミングでコミット処理を行い、その後の電源復旧時にロールバック処理を行うことにより、電池のような追加の電源を用いることなく、不意の電源断が起きた場合でも、不揮発性主記憶部120に格納されたデータの状態を復元することができる。
具体的には、バス180で接続されるプロセッサ部160と不揮発性主記憶部120との間にバックアップ部110が存在することにより、コミット部140によってコミット処理が行われたタイミング以降に不揮発性主記憶部120に書込みが行われたアドレスの元データが全て不揮発性バックアップメモリ130上に記録される。また、電源断後も不揮発性主記憶部120上のデータと不揮発性バックアップメモリ130上のバックアップデータは保持される。これにより、不意の電源断後の電源復帰時には、ロールバック部150により、不揮発性バックアップメモリ130に格納されたバックアップデータが不揮発性主記憶部120に書き戻され、コミット指示のタイミングの状態まで不揮発性主記憶部120の状態に戻すことができる。
また、不揮発性主記憶部120へのアクセス単位でバックアップデータを作成するバックアップ部110をバス180と不揮発性主記憶部120の間に配置することにより、プロセッサ部160のアクセスに対して透過的に不揮発性主記憶部120に記憶されていた内容のバックアップを取得することができる。
(第2の実施の形態)
第2の実施の形態では、不揮発性バックアップメモリ130の具体的な構成について説明する。なお、第2の実施の形態では、添付図面を参照して第1の実施の形態と異なる部分を説明する。他の部分については第1の実施の形態と同様であるので、上述した説明を参照し、ここでの説明を省略する。
第2の実施の形態では、不揮発性バックアップメモリ130の具体的な構成について説明する。なお、第2の実施の形態では、添付図面を参照して第1の実施の形態と異なる部分を説明する。他の部分については第1の実施の形態と同様であるので、上述した説明を参照し、ここでの説明を省略する。
本実施の形態にかかる不揮発性バックアップメモリ130は、バックアップデータ生成部114によって生成されたバックアップデータをバックアップメモリ先頭アドレスから順にスタック状に格納する。
図5−1〜図5−3は、コミット処理時の不揮発性バックアップメモリ130の状態の一例を示す説明図である。図5−1は、前回のコミット処理から不揮発性主記憶部120に3回の書込みが行われ、3つのバックアップデータ53が記録された時点での不揮発性バックアップメモリ130の状態である。3つのバックアップデータは、バックアップメモリ先頭アドレスが指す位置51から順に格納される。書込ポインタ保持部116に格納された値、すなわち書込ポインタが指す位置52は、次のバックアップデータが記録されるアドレスである。つまり不揮発性バックアップメモリ130は、バックアップメモリ先頭アドレスが指す位置51と、書込ポインタが指す位置52の直前までに格納された一連のバックアップデータを最新シーケンス54として管理する。書込みポインタの指す位置52以降のアドレスには、バックアップデータが格納されている可能性がある。しかし、それらは、以前のコミット処理により最新シーケンスではなくなっている。
図5−2は、不揮発性主記憶部120に4回目の書込みが行われ、4つのバックアップデータが記録された後の不揮発性バックアップメモリ130の状態である。図5−1で書込ポインタが指していた位置に新しいバックアップデータが記録され、書込ポインタが指す位置52は、5つめのバックアップデータを記録するアドレスに更新される。
図5−3は、コミット処理を行った後の不揮発性バックアップメモリ130の状態である。コミット処理が行われることにより管理対象の複数のバックアップデータ、つまり最新シーケンスの切替えが行われる。具体的には、書込ポインタが示す位置52にバックアップメモリ先頭アドレスを設定する。これにより、前回のコミット処理から今回のコミット処理までに不揮発性バックアックメモリ130に格納されたバックアップデータは、最新シーケンスではなくなり、最新シーケンスが空となる。
また、本実施の形態にかかるバックアップデータの大きさは、バックアップメモリアクセス制御部113が不揮発性バックアップメモリ130に対して1回の書込みで書込めるデータの大きさにする。例えば、不揮発性バックアップメモリ130のデータ入力が64ビット幅であった場合、上位32ビットにアドレス、下位32ビットに元データを格納するようにバックアップデータを構成する。
また、本実施の形態にかかる書込ポインタ保持部116は、不揮発性メモリで構成する。これにより、電源復帰後も書込ポインタ保持部116に書込ポインタの値が保持されるので、電源復帰後に不揮発性バックアップメモリ130上の最新シーケンスを容易に特定することができる。
次に、不揮発性バックアップメモリ130が上述のように構成されている場合のバックアップ部110によるバックアップ処理、コミット部140によるコミット処理およびロールバック部150によるロールバック処理について説明する。
図6は、バックアップ部110が行うバックアップ処理手順を示すフローチャートである。なお、本実施の形態にかかるバックアップ処理の手順は、図2に示すフローチャートとほぼ同様であるので、異なる部分のみ説明する。ステップS601〜ステップS616は、図2でのステップS201〜ステップS216の説明を参照し、ここでの説明を省略する。
ステップS615において、書込ポインタ保持部116へのアクセスでないと判断した場合は(ステップS615:No)、バックアップ制御部112はバックアップメモリ先頭アドレス保持部115へのアクセスであるか否かを判断する(ステップS617)。バックアップメモリ先頭アドレス保持部115へのアクセスであると判断した場合は(ステップS617:Yes)、バックアップ制御部112はバックアップメモリ先頭アドレス保持部115の値を読み出す、または更新する(ステップS618)。バックアップメモリ先頭アドレス保持部115へのアクセスでないと判断した場合は(ステップS617:No)、処理を終了する。
次に、コミット処理について説明する。図7は、コミット部140が行うコミット処理手順を示すフローチャートである。
まず、コミット部140は、バックアップ部110からバックアップメモリ先頭アドレスの値を取得する(ステップS701)。バックアップ部110は、コミット部140からの要求に対して、バックアップメモリ先頭アドレス保持部115に保持されたバックアップメモリ先頭アドレスの値を送出する(ステップS702)。コミット部140は、書込ポインタ保持部116に、取得したバックアップメモリ先頭アドレスの値を格納する要求を送出する(ステップS703)。バックアップ部110は、書込ポインタ保持部116に受け取ったバックアップメモリ先頭アドレスの値を格納する(ステップS704)。例えば、図5−3に示すような不揮発性バックアップメモリ130の場合、コミット処理を行うことにより、書込ポインタ保持部116には不揮発性バックアップメモリ130の先頭アドレスの値が格納される。
次に、ロールバック処理について説明する。図8は、ロールバック部150が行うロールバック処理手順を示すフローチャートである。なお、本実施の形態にかかるロールバック処理の手順は、図4に示すフローチャートとほぼ同様であるので、異なる部分のみ説明する。ステップS804〜ステップS814は、図4でのステップS404〜ステップS414の説明を参照し、ここでの説明を省略する。
まず、ロールバック部150は、バックアップ部110へバックアップ処理を無効にする要求を送出する(ステップS801)。バックアップ部110は、バックアップ処理を無効にする(ステップS802)。次に、ロールバック部150は、書込ポインタおよびバックアップメモリ先頭アドレスの値を取得する(ステップS803)。例えば、図5−1に示すような状態で不揮発性バックアップメモリ130にバックアップデータが格納されている場合を考える。書込みポインタは、電源復帰後も書込ポインタ保持部116に保持されている。そこで、ロールバック部150は、バックアップ部110からバックアップメモリ先頭アドレスおよび書込みポインタを取得し、バックアップメモリ先頭アドレスから書込ポインタが指すアドレスの直前までに記録された一連のバックアップデータを最新シーケンスとする。図5−1の示す場合は、1つめ〜3つめのバックアップデータが最新シーケンスとなる。これ以降の処理は、図4と同様であるため、図4の説明を参照する。
このように、上述したように不揮発性バックアップメモリ130を構成し、コミット処理を行うことにより、コミット処理が簡易であるため、コストを低くすることができる。また、コミット処理が簡易であるため、チェックポイントの間隔を短くしてもPC100全体のスループットへの影響が小さくすることができる。また、チェックポイント間隔を短くすることにより、ロールバック時に後戻りする時間を短くするとともに、不揮発性バックアップメモリ130の使用量を抑えることができる。
(第3の実施の形態)
また、第2の実施の形態と異なる不揮発性バックアップメモリ130の構成をとることも考えられる。この第3の実施の形態では、第2の実施の形態とは異なる不揮発性バックアップメモリ130の具体的な構成について説明する。なお、この第3の実施の形態では、添付図面を参照して第2の実施の形態と異なる部分を説明する。他の部分については第2の実施の形態と同様であるので、上述した説明を参照し、ここでの説明を省略する。
また、第2の実施の形態と異なる不揮発性バックアップメモリ130の構成をとることも考えられる。この第3の実施の形態では、第2の実施の形態とは異なる不揮発性バックアップメモリ130の具体的な構成について説明する。なお、この第3の実施の形態では、添付図面を参照して第2の実施の形態と異なる部分を説明する。他の部分については第2の実施の形態と同様であるので、上述した説明を参照し、ここでの説明を省略する。
本実施の形態にかかる不揮発性バックアップメモリ130は、バックアップデータ生成部114によって生成されたバックアップデータをバックアップメモリ先頭アドレスからリングバッファとして格納する。また、本実施の形態では、最新シーケンス先頭ポインタ保持部を備える。最新シーケンス先頭ポインタ保持部は、不揮発性記憶部120にデータを書戻す際に用いる一連のバックアップデータ(最新シーケンス)が格納されている不揮発性バックアップ部130の記憶領域の先頭のアドレスを保持している。
図9−1〜図9−5は、第3の実施の形態における、コミット処理時の不揮発性バックアップメモリ130の状態の一例を示す説明図である。図9−1のように、第3の実施の形態においては第2の実施の形態に加えて、最新シーケンス先頭ポインタ保持部に保持された最新シーケンス先頭ポインタが指す位置から書込ポインタの直前の位置までのバックアップデータを最新シーケンスとする。そしてコミット時には、第2の実施の形態のように書込ポインタにバックアップメモリ先頭アドレスの内容を設定するのではなく、最新シーケンス先頭ポインタに書込ポインタの内容を設定することで、最新シーケンスの切り替えを行う。
図9−2は、図9−1の状態から不揮発性主記憶120に3回の書込みが行われ、3つのバックアップデータが記録された時点での不揮発性バックアップメモリ130の状態である。3つのバックアップデータは、バックアップメモリ先頭アドレスが指す位置から順に格納される。書込ポインタ保持部116に格納された値、すなわち書込ポインタが指す位置は、次のバックアップデータが格納されるアドレスである。この図9−2においては、最新シーケンス先頭ポインタの指す位置から書込ポインタが指す位置の直前までに格納された3つのバックアップデータが最新シーケンスである。
図9−3は、図9−2の状態から不揮発性主記憶部120に4回目の書込みが行われ、4つ目のバックアップデータが格納された後の不揮発性バックアップメモリ130の状態である。図9−2で書込ポインタが指していた位置に新しいバックアップデータが記録され、書込ポインタが指す位置は、次にバックアップデータを格納する位置に更新される。
図9−4は、図9−3の状態でコミット処理が行われた時の不揮発性バックアップメモリ130の状態である。コミット部140が、コミット処理を行なうことにより、最新シーケンス先頭ポインタには書込ポインタの内容が設定され、最新シーケンス先頭ポインタと書込ポインタの指す位置が同じ位置となる。すなわち、コミット部140は、この処理を行うことによって、最新シーケンスを切り替える。なお、このコミット処理時の不揮発性主記憶120の状態が新しいチェックポイントとなり、今後次にコミット処理が行われるまでにこの不揮発性バックアップメモリ130に格納されていくバックアップデータは、不揮発性主記憶120の状態をその新しいチェックポイントの状態に復元するために必要なバックアップデータとなる。
図9−5は、コミット処理が行われた図9−4の状態から不揮発性主記憶120に1回書込みが行われてバックアップデータが一つ格納された、不揮発性バックアップメモリ130の状態である。コミット部140が、図9−4における書込ポインタの指す位置にバックアップデータを格納して書込ポインタを更新することにより、図9−5に示す状態になっている。そして、図9−5では、今格納されたバックアップデータが最新シーケンスとなる。以上が、第3の実施の形態における不揮発性バックアップメモリ130の使い方およびコミット処理の説明である。
次に、コミット処理について説明する。図10は、コミット部140が行うコミット処理手順を示すフローチャートである。
まず、コミット部140は、バックアップ部110から書込ポインタの値を取得する(ステップS901)。バックアップ部110は、コミット部140からの要求に応じて、書込ポインタ保持部116に保持された書込ポインタの値を送出する(ステップS902)。コミット部140は、取得した書込ポインタの値を最新シーケンス先頭ポインタ保持部に格納する要求を送出する(ステップS903)。バックアップ部110は、最新シーケンス先頭ポインタ保持部に書込ポインタの値を格納する(ステップS904)。このコミット処理により、図9−4のように書込ポインタと最新シーケンス先頭ポインタの指す位置は同じ位置となり、最新シーケンスの切り替えが行われる。
この第3の実施の形態におけるバックアップ処理の処理フローは、第2の実施の形態における図6の処理フローとほとんど同じである。唯一異なるのは、バックアップ制御部による書込ポインタ保持部の更新処理(ステップS611)である。この第3の実施の形態においては、単に更新すればよいのではなく、もし書込ポインタの指す位置が不揮発性バックアップメモリ130の最後尾のアドレスに到達していた場合は、更新処理として、バックアップメモリ先頭アドレス保持部115が保持している値を書込ポインタ保持部116に設定する。
この第3の実施の形態におけるロールバック処理の処理フローは、第2の実施の形態における図8の処理フローとほとんど同じである。唯一異なるのは、ロールバック部による書込ポインタおよびバックアップメモリ先頭アドレスの値を取得する処理(ステップS803)である。この第3の実施の形態においては、バックアップメモリ先頭アドレスの値ではなく、最新シーケンス先頭ポインタの値を取得してロールバックに必要な最新シーケンスを特定する。
(第4の実施の形態)
第4の実施の形態について、添付図面を参照して説明する。第4の実施の形態にかかるPCでは、不意の電源断が起きた瞬間のプロセッサ上で動作している制御プログラムやアプリケーションプログラムの状態を含むプロセッサ状態のような揮発性のシステム状態を、不意の電源断後の電源復旧した際に復旧させる。
第4の実施の形態について、添付図面を参照して説明する。第4の実施の形態にかかるPCでは、不意の電源断が起きた瞬間のプロセッサ上で動作している制御プログラムやアプリケーションプログラムの状態を含むプロセッサ状態のような揮発性のシステム状態を、不意の電源断後の電源復旧した際に復旧させる。
本発明が適用されるPCの構成例について説明する。図11は、第4の実施の形態にかかるPC100の構成を示すブロック図である。本実施の形態において、第1の実施の形態と異なる部分は、制御ソフトウェアとして各部を制御するソフトウェアが動作している点であり、かかるプロセッサ部160上の制御ソフトウェア170の構成および動作を中心に説明する。
本実施の形態にかかるPC100は、バックアップ部110と、不揮発性主記憶部120と、不揮発性バックアップメモリ130と、コミット部140と、ロールバック部150と、プロセッサ部160と、制御ソフトウェア170と、バス180とを備えている。ここで、バックアップ部110と、不揮発性主記憶部120と、不揮発性バックアップメモリ130と、コミット部140と、ロールバック部150と、プロセッサ部160と、バス180の構成、機能は、第1の実施の形態と同様であるので、説明を省略する。
制御ソフトウェア170は、プロセッサ部160上で動作するソフトウェアである。制御ソフトウェア170は、プロセッサ部160をはじめとしたハードウェアの動作を制御する。また、制御ソフトウェア170は、その管理の下で、プロセッサ部160上で他のソフトウェアを動作させる。例えば、制御ソフトウェア170が一般的なオペレーティングシステムである場合、制御ソフトウェア170の管理の下、プロセッサ部160でアプリケーションソフトウェアが動作する。複数のアプリケーションソフトウェアをプロセッサ部160上で動作させる場合は、制御ソフトウェア170は、デバイスが起こす割込みや、制御ソフトウェア170自身が設定したタイマによる一定時間間隔の割込み等によって、アプリケーションソフトウェアを順次切り替えて動作させる。
制御ソフトウェア170は、さらにシステム状態退避部171と、システム状態復元部172と、チェックポイント作成部173と、チェックポイント復元部174を備えている。
システム状態退避部171は、あらかじめ決めておいたタイミングで、システム状態をあらかじめ確保しておいた専用の記憶領域に保存する。本実施の形態では、この専用の記憶領域を不揮発性主記憶部120上に確保することにより、システム状態を第1の実施の形態や第2の実施の形態で説明したバックアップの対象とする。
ここで、システム状態とは、プロセッサ部160によるプログラム(制御ソフトウェアやアプリケーションソフトウェア)の実行中にプロセッサ部160が保持しているプログラムの実行を制御する情報や、プロセッサ部160自体の状態を示す情報といった、PC100の動作を継続するために必要なデータである。具体的には、直前まで動作していたプログラムが一時的にデータを保存していたプロセッサ部160の持つ汎用レジスタの内容や、プロセッサ部160が次に実行する命令の格納場所を示すアドレスのようなプロセッサ部160の動作を制御するレジスタの内容、および制御ソフトウェア170が設定しておいたメモリ管理ユニットのようなプロセッサ部160の設定など、ある時刻におけるPC100の実行状態を構成するデータであり、不意の電源断を経た後に電源が復旧した時に電源断時の状態を復元するために必要なデータのうち、揮発性のものを指す。
また、システム状態退避部171がシステム状態を保存するタイミングは、PC100が備えるデバイスが起こす割込みや、制御ソフトウェア170自身が設定したタイマによる一定時間間隔の割込み、アプリケーションソフトウェアを切り替えるときなどがある。
システム状態復元部172は、不意の電源断を経て電源が復旧した時に、不揮発性主記憶部120の記憶領域に格納されたシステム状態を、PC100に再度設定し、システム状態を復元する。システム状態復元部172が動作するタイミングは、上記実施の形態で説明したロールバックするデータとの整合性を採るために、チェックポイント復元部174によって不揮発性主記憶部120の内容が復元された後となる。
チェックポイント作成部173は、コミット部140にコミット要求を出すことにより、ロールバック部150がロールバック可能な不揮発性主記憶部120の状態、つまりチェックポイントを新規に作成する。なお、システム起動後、一度もチェックポイントを作成しなかった場合は、ロールバック部150によってロールバック可能な不揮発性主記憶部120の状態は、システム起動時の状態のみである。
また、バックアップ部110によってバックアップデータが書込まれる不揮発性バックアップメモリ130は有限であるため、長期間チェックポイントを作成しないと、不揮発性バックアップメモリ130にバックアップデータを書込める記憶領域がなくなってしまう。そのような場合も、システム起動時の状態にしかロールバックできなくなる。よって、チェックポイント作成部173は、適切なタイミングでチェックポイント作成処理を行う必要がある。
チェックポイント復元部174は、電源200からの電源供給の復旧を検知した場合、ロールバック部150に最新のチェックポイントの内容まで不揮発性主記憶部120の内容をロールバックする要求を送出する。このため、チェックポイント復元部174は、制御ソフトウェア170が起動する際に、不意の電源断から電源供給が復旧して制御ソフトウェア170が再起動したか否かを判断する。ただし、判断手段は、どんな実装でも構わない。
なお、上述したシステム状態退避部171と、システム状態復元部172と、チェックポイント作成部173と、チェックポイント復元部174は、専用プロセッサ部で動作するソフトウェアとして提供され、専用ハードウェア上で動作してもよい。また、通常のプロセッサ部で動作するソフトウェアとして提供されてもよい。
次に、システム状態退避処理について説明する。図12は、システム状態退避部171が行うシステム状態退避処理手順を示すフローチャートである。
システム状態退避部171は、システム状態を不揮発性主記憶部120上に確保された記憶領域に格納する(ステップS1001)。
次に、チェックポイント作成処理について説明する。図13は、チェックポイント作成部173が行うチェックポイント作成処理手順を示すフローチャートである。
まず、チェックポイント作成部173は、チェックポイント作成の指示に応じてコミット部140のコミット要求を送出する(ステップS1101)。コミット部140は、コミット要求に応じてコミット処理を行う(ステップS1102)。具体的には、上述した図3の処理を実行することによって、チェックポイントが作成され、不揮発性バックアップメモリ130が管理する最新シーケンスが切り替えられる。
次に、チェックポイント復元処理について説明する。図14は、チェックポイント復元部174が行うチェックポイント復元処理手順を示すフローチャートである。なお、チェックポイント復元部174は、PC100の電源が投入されて制御ソフトウェア170が動作を始めると、最初に呼び出される。
まず、チェックポイント復元部174は、不意の電源断後の再起動であるか否かを判断する(ステップS1201)。これにより、ロールバックする必要があるかどうかチェックする。なお、PC100が、不意の電源断後の再起動か否かを判断できる機能であれば、物理的もしくは論理的のいずれを問わず、どんなものを使用してもよい。
不意の電源断後の再起動でないと判断した場合は(ステップS1201:No)、処理を終了する。不意の電源断後の再起動であると判断した場合は(ステップS1201:Yes)、チェックポイント復元部174はロールバック部150にロールバック指示を送出する(ステップS1202)。ロールバック部150は、ロールバック処理を行う(ステップS1203)。具体的には、上述した図4のフローチャートに従って処理を行い、不揮発性主記憶部120の内容をチェックポイントの状態に復元する。
次に、システム状態復元処理について説明する。図15は、システム状態復元部172が行うシステム状態復元処理手順を示すフローチャートである。なお、この処理は、必ずチェックポイント復元部174の処理の後に呼ばれる。
システム状態復元部172は、チェックポイント復元部174の処理によって復元された不揮発性主記憶部120上に保持されているシステム状態の記憶領域から、保持されているシステム状態を読み出し、PC100に設定する(ステップS1301)。
次に、PC100全体として、システム状態退避処理、チェックポイント作成処理、チェックポイント復元およびシステム状態復元処理を説明する。図16は、各部によるシステム状態退避処理を示すシーケンス図である。また、各部ごとの処理を縦方向に示し、各部間を結ぶ矢印は、各部間を接続している信号線を介した制御およびデータ信号のやり取りを示す。AからA’への向きに時間が経過している。
まず、プロセッサ部160上で動作しているシステム状態退避部171が、不揮発性主記憶部120上の記憶領域にシステム状態を退避する(ステップS1401)。この退避処理は、不揮発性主記憶部120への書込み処理になるので、バックアップ部110によるバックアップ処理が動作する。システム状態は複数のデータから構成されるため、システム状態退避部171が、システム状態を構成するデータを退避しようと不揮発性主記憶部120に書込みを指示するたびに、図2の処理が行われる。
バックアップ部110は、システム状態退避部171が書込もうとしている不揮発性主記憶部120のアドレスが示す記憶領域に格納されている元データを読み出す(ステップS1402、S1403)。バックアップ部110は、読み出したデータと書込み先アドレスからバックアップデータを作成する(ステップS1404)。バックアップ部110は、書込みポインタ保持部116が保持している書込みポインタが示す不揮発性バックアップメモリ130の記憶領域にバックアップデータを書込む(ステップS1405)。バックアップ部110は、書込みアクセスに含まれるデータを不揮発性主記憶部120に書込む(ステップS1406)。すなわち、バックアップデータを不揮発性バックアップメモリ130に書込んだ後に、システム状態退避部171から受信した不揮発性主記憶部120への書込みが実行される。バックアップ部110は、不揮発性バックアップメモリ130の書込みポインタを更新する(ステップS1407)。
次に、チェックポイント作成処理を説明する。図17は、各部によるチェックポイント作成処理を示すシーケンス図である。
まず、プロセッサ部160上で動作しているチェックポイント作成部173が、コミット部140にコミットを指示する(ステップS1501)。すなわち、チェックポイントの作成を指示する。コミット部140は、コミット処理を行う(ステップS1502)。具体的には、図3に示す処理を実行し、不揮発性バックアップメモリ130が管理している最新シーケンスを切り替える。例えば、コミット処理を行うことにより、不揮発性バックアップメモリ130は図5−3や図9−4に示すような状態となる。これにより、この時点の不揮発性主記憶部120の状態が新たな不揮発性主記憶部120のチェックポイントとなる。
次に、チェックポイント復元処理を説明する。図18は、各部によるチェックポイント復元処理を示すシーケンス図である。このシーケンス図はシステム状態復元処理と連続したシーケンス図になっているが、これは、もともとチェックポイント復元処理とシステム状態復元処理が連続して行われるからである。
まず、プロセッサ部160上で動作しているチェックポイント復元部174は、ロールバック部150にロールバックを指示する(ステップS1601)。ロールバック部150は、バックアップ部110のバックアップ処理を無効にする(ステップS1602)。ロールバック部150は、不揮発性バックアップメモリ130から最新シーケンスのバックアップデータを特定する(ステップS1603)。ロールバック部150は、不揮発性バックアップメモリ130から最新シーケンスのバックアップデータを読み出す(ステップS1604、S1605)。ロールバック部150は、最新シーケンスのバックアップデータを用いて不揮発性主記憶部120に元データを書戻す(ステップS1606)。具体的には、バックアップデータに含まれる不揮発性主記憶部120の書込み先アドレスと元データを抽出し、抽出した書込み先アドレスに示す記憶領域に、同じく抽出した元データを書戻す。
ロールバック部150は、バックアップ部110のバックアップ処理を有効にする(ステップS1607)。最後にロールバック部150は、このロールバック処理に使用したバックアップデータはもう不要であるので、コミット部140にコミットを指示する(ステップS1608)。コミット部140は、不揮発性バックアップメモリ130が管理している最新シーケンスを切替える(ステップS1609)。これらの処理により、ロールバック処理が完了し、チェックポイント復元処理が完了する。
その後、プロセッサ部160上で動作しているシステム状態復元部172が、不揮発性主記憶部120上に保存されているシステム状態を読み出す(ステップS1610、S1611)。システム状態復元部172は、読み出したシステム状態をシステムに設定する(ステップS1612)。
このように、プロセッサ部160の状態を含む揮発性のシステム状態についても、不揮発性バックアップメモリ130にバックアップし、適切なタイミングでコミット処理を行い、不意の電源断後の電源復旧時にロールバック処理を行うことにより、不意の電源断が生じた場合であっても、電源が復旧した際にソフトウェアを含めて一貫性を保った状態とした上で、PC100の動作を再開することができる。
すなわち、上述した第1または第2の実施の形態のプロセッサ部160上で動作する制御ソフトウェア170にわずかな変更を加えることで、不意の電源断を経て電源が復帰しても、プロセッサの状態を含めた揮発性のシステム状態まで、電源断より前の特定の状態にロールバックできる。
また、従来の制御ソフトウェアによるバックアップ処理は、制御ソフトウェア自身が保存したデータが正しく復元できることを保証しなければならなかった。これに対し、本実施の形態では、制御ソフトウェアの制御によらず、独立したバックアック部110の機能によって保存したシステム状態が正しく復元されることが保証される。
なお、本発明は、上記実施の形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施の形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施の形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施の形態にわたる構成要素を適宜組み合わせてもよい。
100 パーソナルコンピュータ(PC)
110 バックアップ部
111 主記憶アクセス制御部
112 バックアップ制御部
113 バックアップメモリアクセス制御部
114 バックアップデータ生成部
115 バックアップメモリ先頭アドレス保持部
116 書込ポインタ保持部
120 不揮発性主記憶部
130 不揮発性バックアップメモリ
140 コミット部
150 ロールバック部
160 プロセッサ部
170 制御ソフトウェア
171 システム状態退避部
172 システム状態復元部
173 チェックポイント作成部
174 チェックポイント復元部
180 バス
200 電源
110 バックアップ部
111 主記憶アクセス制御部
112 バックアップ制御部
113 バックアップメモリアクセス制御部
114 バックアップデータ生成部
115 バックアップメモリ先頭アドレス保持部
116 書込ポインタ保持部
120 不揮発性主記憶部
130 不揮発性バックアップメモリ
140 コミット部
150 ロールバック部
160 プロセッサ部
170 制御ソフトウェア
171 システム状態退避部
172 システム状態復元部
173 チェックポイント作成部
174 チェックポイント復元部
180 バス
200 電源
Claims (10)
- 不揮発性の主記憶部と、
前記主記憶部に記憶されているデータの複製を記憶する不揮発性のバックアップ記憶部と、
前記主記憶部に対する書込み対象のデータと当該書込み対象のデータの書込み先を指定する書込み先アドレスとを含む書込みアクセスを検出した場合に、前記書込み先アドレスによって指定される記憶領域に既に記憶されているデータを読取る読取手段と、
前記読取手段で読取られた前記データと、前記書込みアクセスに含まれる前記書込み先アドレスとを含むバックアップデータを生成する生成手段と、
前記バックアップデータを前記バックアップ記憶部へ書込む第1の書込手段と、
前記バックアップデータが前記バックアップ記憶部に書込まれた後、前記主記憶部の前記書込み先アドレスによって指定される記憶領域へ、前記書込み対象のデータを書込む第2の書込手段と、
前記第1の書込手段によって現時点から新たに前記バックアップ記憶部に書込まれるバックアップデータを読み出し許可と設定するコミット手段と、
前記主記憶部の記憶内容を書戻す旨を指示された場合に、前記バックアップ記憶部に記憶されたバックアップデータのなかから、読み出し許可と設定された前記バックアップデータに含まれる前記データおよび前記書込み先アドレスを抽出する抽出手段と、
前記バックアップデータから抽出された前記データおよび前記書込みアドレスごとに、当該データを当該書込み先アドレスが示す前記主記憶部上の記憶領域へ書込む第3の書込手段と、
を備えることを特徴とする情報処理装置。 - 前記コミット手段は、前記バックアップ記憶部の前記バックアップデータを書込むアドレスに前記バックアップ記憶部の先頭アドレスを設定することにより、新たに前記バックアップ記憶部に記憶する前記バックアップデータを読み出し許可と設定し、
前記抽出手段は、前記バックアップ記憶部の先頭アドレスから、次に前記バックアップデータを書込む位置の直前のアドレスまでに記憶されている前記バックアップデータに含まれる前記データおよび前記書込み先アドレスを抽出すること、を特徴とする請求項1に記載の情報処理装置。 - 前記主記憶部の記憶内容を書戻す際に用いる、先頭の前記バックアップデータを格納する前記バックアップ記憶部におけるアドレスを記憶する先頭アドレス記憶部と、
前記コミット手段は、前記先頭アドレス記憶部に記憶される前記アドレスに、前記バックアップ記憶部の前記バックアップデータを次回書込む位置のアドレスを設定することにより、新たに前記バックアップ記憶部に記憶する前記バックアップデータを読み出し許可と設定し、
前記抽出手段は、前記先頭アドレス記憶部に記憶された前記アドレスから、前記バックアップデータを書込む位置の直前のアドレスまでに記憶されている前記バックアップデータに含まれる前記データおよび前記書込み先アドレスを抽出すること、を特徴とする請求項1に記載の情報処理装置。 - プロセッサ部によるプログラムの実行中に前記プロセッサ部が保持しているプログラムの実行を制御する状態情報を前記書込み対象のデータとし、前記主記憶部上の予め定められたアドレスを前記書込み先アドレスとする前記書込みアクセスを送出する状態情報退避手段と、
予め定められたタイミングで前記コミット手段を実行させるように指示するチェックポイント作成手段と、
電源が復旧した場合に、前記第3の書込手段を実行させるように指示するチェックポイント復元手段と、
前記チェックポイント復元手段の指示により、前記第3の書込手段によって復元された前記不揮発性記憶部に記憶されている前記状態情報を書戻す状態情報復元手段と、をさらに備えることを特徴とする請求項1乃至請求項3のいずれか1項に記載の情報処理装置。 - 請求項1乃至請求項3のいずれか1項に記載の情報処理装置において、
プロセッサ部と、
第1のプログラムを記憶するメモリと、をさらに備え、
前記第1のプログラムは、前記プロセッサ部を、
前記プロセッサ部による第2のプログラムの実行中に前記プロセッサ部が保持している前記第2のプログラムの実行を制御する状態情報を前記書込み対象のデータとし、前記主記憶部上の予め定められたアドレスを前記書込み先アドレスとする前記書込みアクセスを送出する状態情報退避手段と、
予め定められたタイミングで前記コミット手段を実行させるように指示するチェックポイント作成手段と、
電源が復旧した場合に、前記第3の書込手段を実行させるように指示するチェックポイント復元手段と、
前記チェックポイント復元手段の指示により、前記第3の書込手段によって復元された前記不揮発性記憶部に記憶されている前記状態情報を書戻す状態情報復元手段と、して機能させることを特徴とする情報処理装置。 - 前記状態情報は、前記プロセッサ部が備えるレジスタが記憶するプログラムの実行を制御するデータを含むこと、を特徴とする請求項1乃至請求項5のいずれか1項に記載の情報処理装置。
- 前記状態情報は、前記プロセッサ部が次に実行する命令の記憶領域を示すアドレスであること、を特徴とする請求項6に記載の情報処理装置。
- 前記状態情報は、前記プロセッサ部によるプログラムの実行中に一時的に記憶するデータであること、を特徴とする請求項6に記載の情報処理装置。
- 前記第2の書込手段は、前記プロセッサ部と前記主記憶部との間に接続され、前記プロセッサ部から前記書込みアクセスを受け、受けた前記書込みアクセスを前記主記憶部へ送出すること、を特徴とする請求項4乃至請求項8のいずれか1項に記載の情報処理装置。
- 不揮発性の主記憶部と、前記主記憶部に記憶されたデータの複製を記憶する不揮発性のバックアップ記憶部とを備える情報処理装置のデータ復旧方法であって、
前記主記憶部に対する書込み対象のデータと当該書込み対象のデータの書込み先を指定する書込み先アドレスとを含む書込みアクセスを検出した場合に、前記書込み先アドレスによって指定される記憶領域に既に記憶されているデータを読取る読取ステップと、
前記読取ステップで読取られた前記データと、前記書込みアクセスに含まれる前記書込み先アドレスとを含むバックアップデータを生成する生成ステップと、
前記バックアップデータを前記バックアップ記憶部へ書込む第1の書込ステップと、
前記バックアップデータが前記バックアップ記憶部に書込まれた後、前記主記憶部の前記書込み先アドレスによって指定される記憶領域へ、前記書込み対象のデータを書込む第2の書込ステップと、
前記第1の書込手段によって現時点から新たに前記バックアップ記憶部に記憶するバックアップデータを読み出し許可と設定するコミットステップと、
前記主記憶部の記憶内容を書戻す旨を指示された場合に、前記バックアップ記憶部に記憶されたバックアップデータのなかから、読み出し許可と設定された前記バックアップデータに含まれる前記元データおよび前記書込み先アドレスを抽出する抽出ステップと、
前記バックアップデータから抽出された前記元データおよび前記書込みアドレスごとに、当該元データを当該書込み先アドレスが示す前記主記憶部上の記憶領域へ書込む第3の書込ステップと、
を含むことを特徴とする情報処理装置のデータ復旧方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007336854A JP2009157756A (ja) | 2007-12-27 | 2007-12-27 | 情報処理装置およびデータ復旧方法 |
US12/198,473 US7971014B2 (en) | 2007-12-27 | 2008-08-26 | Information processing apparatus and data recovering method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007336854A JP2009157756A (ja) | 2007-12-27 | 2007-12-27 | 情報処理装置およびデータ復旧方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2009157756A true JP2009157756A (ja) | 2009-07-16 |
Family
ID=40800040
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007336854A Pending JP2009157756A (ja) | 2007-12-27 | 2007-12-27 | 情報処理装置およびデータ復旧方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7971014B2 (ja) |
JP (1) | JP2009157756A (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013004036A (ja) * | 2011-06-21 | 2013-01-07 | Fuji Xerox Co Ltd | 情報処理装置および画像形成装置 |
JP2013003831A (ja) * | 2011-06-16 | 2013-01-07 | Dainippon Printing Co Ltd | Icチップ、icチップ用処理プログラム、及びicチップにおける書き込み処理方法 |
JP2013037430A (ja) * | 2011-08-04 | 2013-02-21 | Dainippon Printing Co Ltd | Icチップ、icチップにおける処理方法、及びicチップ用処理プログラム |
WO2014119591A1 (ja) * | 2013-01-29 | 2014-08-07 | オムロン株式会社 | 交信装置、rfidシステム、およびデータ書込みプログラムを記録した記録媒体 |
JP2016517122A (ja) * | 2013-04-29 | 2016-06-09 | アマゾン・テクノロジーズ・インコーポレーテッド | システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持 |
KR20190096625A (ko) * | 2018-02-09 | 2019-08-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110145520A1 (en) * | 2009-12-16 | 2011-06-16 | Electronics And Telecommunications Research Institute | Audio signal processing apparatus and method, and communication terminal apparatus |
KR101095046B1 (ko) * | 2010-02-25 | 2011-12-20 | 연세대학교 산학협력단 | 솔리드 스테이트 디스크 및 이를 포함하는 사용자 시스템 |
US20120137093A1 (en) * | 2010-11-30 | 2012-05-31 | Micron Technology, Inc. | Reliable write for non-volatile memory |
US9274899B2 (en) | 2013-07-11 | 2016-03-01 | Red Hat, Inc. | Providing non-volatile memory for suspend-to-random access memory |
KR102190399B1 (ko) | 2013-10-11 | 2020-12-11 | 삼성전자주식회사 | 신뢰성을 보장할 수 있는 불휘발성 메모리 장치의 동작 방법 및 상기 방법을 수행하는 메모리 시스템 |
JP6479608B2 (ja) | 2015-08-28 | 2019-03-06 | 東芝メモリ株式会社 | メモリ装置およびメモリ制御方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09330303A (ja) * | 1996-06-12 | 1997-12-22 | Toshiba Corp | コンピュータシステムおよびそのシステムにおける障害回復方法 |
JPH103434A (ja) * | 1996-06-14 | 1998-01-06 | Nec Corp | 半導体ディスク装置及びその書き込み方式 |
JP2000222232A (ja) * | 1999-01-28 | 2000-08-11 | Toshiba Corp | 電子計算機及び電子計算機のメモリ障害回避方法 |
JP2003216511A (ja) * | 2002-01-23 | 2003-07-31 | Matsushita Electric Ind Co Ltd | 不揮発性メモリ装置、データ更新方法、データ更新プログラム及びそのプログラムが記録されたコンピュータ読み取り可能な記録媒体 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005107573A (ja) | 2003-09-26 | 2005-04-21 | Keio Gijuku | 実行状態を復元できるコンピュータ・システム |
-
2007
- 2007-12-27 JP JP2007336854A patent/JP2009157756A/ja active Pending
-
2008
- 2008-08-26 US US12/198,473 patent/US7971014B2/en not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09330303A (ja) * | 1996-06-12 | 1997-12-22 | Toshiba Corp | コンピュータシステムおよびそのシステムにおける障害回復方法 |
JPH103434A (ja) * | 1996-06-14 | 1998-01-06 | Nec Corp | 半導体ディスク装置及びその書き込み方式 |
JP2000222232A (ja) * | 1999-01-28 | 2000-08-11 | Toshiba Corp | 電子計算機及び電子計算機のメモリ障害回避方法 |
JP2003216511A (ja) * | 2002-01-23 | 2003-07-31 | Matsushita Electric Ind Co Ltd | 不揮発性メモリ装置、データ更新方法、データ更新プログラム及びそのプログラムが記録されたコンピュータ読み取り可能な記録媒体 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013003831A (ja) * | 2011-06-16 | 2013-01-07 | Dainippon Printing Co Ltd | Icチップ、icチップ用処理プログラム、及びicチップにおける書き込み処理方法 |
JP2013004036A (ja) * | 2011-06-21 | 2013-01-07 | Fuji Xerox Co Ltd | 情報処理装置および画像形成装置 |
JP2013037430A (ja) * | 2011-08-04 | 2013-02-21 | Dainippon Printing Co Ltd | Icチップ、icチップにおける処理方法、及びicチップ用処理プログラム |
WO2014119591A1 (ja) * | 2013-01-29 | 2014-08-07 | オムロン株式会社 | 交信装置、rfidシステム、およびデータ書込みプログラムを記録した記録媒体 |
JP2014146160A (ja) * | 2013-01-29 | 2014-08-14 | Omron Corp | 交信装置、rfidシステムおよびデータ書込みプログラム |
JP2016517122A (ja) * | 2013-04-29 | 2016-06-09 | アマゾン・テクノロジーズ・インコーポレーテッド | システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持 |
JP2018055727A (ja) * | 2013-04-29 | 2018-04-05 | アマゾン・テクノロジーズ・インコーポレーテッド | システムメモリから不揮発性データストレージに移行されるアプリケーションプログラムデータの選択的保持 |
KR20190096625A (ko) * | 2018-02-09 | 2019-08-20 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
KR102485694B1 (ko) | 2018-02-09 | 2023-01-09 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 메모리 시스템의 동작 방법 |
Also Published As
Publication number | Publication date |
---|---|
US20090172325A1 (en) | 2009-07-02 |
US7971014B2 (en) | 2011-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2009157756A (ja) | 情報処理装置およびデータ復旧方法 | |
JP5224800B2 (ja) | 情報処理装置およびデータ復旧方法 | |
US20150331624A1 (en) | Host-controlled flash translation layer snapshot | |
KR101562973B1 (ko) | 메모리 장치 및 메모리 장치의 동작 방법 | |
CN101901189B (zh) | 更新用户数据的方法以及恢复用户数据的方法 | |
US8078908B2 (en) | Data storage device and method | |
JPH077317B2 (ja) | システム再起動装置 | |
CN111989656B (zh) | 可配置的恢复状态 | |
JP4385215B2 (ja) | スナップショットシミュレーション機能を有するディスクアレイ装置 | |
TW200951979A (en) | Data writing method for flash memory and storage system and controller using the same | |
CN101796495A (zh) | 存储器设备和文件*** | |
US11144299B2 (en) | Firmware updating method | |
WO2012066605A1 (en) | Storage control apparatus and logical volume size setting method | |
US8131958B2 (en) | Storage system, storage device, and data updating method using a journal volume | |
CN111868698B (zh) | 空闲空间直通 | |
JP2002099390A (ja) | ディスク制御装置 | |
KR100981064B1 (ko) | 저널링 파일 시스템을 이용한 소프트웨어 레이드에서의 일관성 유지방법 | |
JP2015041262A (ja) | 情報記録装置 | |
US20070271311A1 (en) | Disk array device and data management method for managing master data and replication data replicated from master data | |
CN110647428B (zh) | 镜像文件的制作及恢复方法、处理器和嵌入式*** | |
JP5161600B2 (ja) | 情報処理装置およびデータ復旧方法 | |
CN112269531A (zh) | 一种源卷缩容方法、装置、设备及介质 | |
CN108509295B (zh) | 存储器***的操作方法 | |
JP4055386B2 (ja) | 情報処理装置 | |
JP5665518B2 (ja) | データベースシステム、その情報処理方法、およびそのプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20101015 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20120814 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20121010 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20121120 |