(57)【要約】【課題】低コストに且つ安全にシステムを停止できる計算機を提供する。【解決手段】データを記憶する不揮発メモリと、不揮発メモリへのデータの退避を制御する制御プロセッサと、外部電源の障害時に当該計算機に電力を供給するバッテリと、を備えた計算機であって、制御プロセッサは、バッテリに蓄えられた充電量を確認し、確認された充電量に基づいて、外部電源の障害時にバッテリによって不揮発メモリに退避可能なデータ量を算出し、不揮発メモリに退避すべきデータのうち、退避可能なデータ量を除いたデータ量のデータを、予め不揮発メモリに退避する。【選択図】図１
2013088928.tif 000002
【特許請求の範囲】
【請求項１】
データを記憶する不揮発メモリと、前記不揮発メモリへのデータの退避を制御する制御プロセッサと、外部電源の障害時に当該計算機に電力を供給するバッテリと、を備えた計算機であって、
前記制御プロセッサは、
前記バッテリに蓄えられた充電量を確認し、
確認された前記充電量に基づいて、外部電源の障害時に前記バッテリによって前記不揮発メモリに退避可能なデータ量を算出し、
前記不揮発メモリに退避すべきデータのうち、前記退避可能なデータ量を除いたデータ量のデータを、予め前記不揮発メモリに退避することを特徴とする計算機。
【請求項２】
前記制御プロセッサは、当該計算機が備えるトランスレーション・ルックアサイド・バッファ（ＴＬＢ）のダーティビットを用いて、前記不揮発メモリに退避すべきデータのデータ量を算出することを特徴とする請求項１に記載の計算機。
【請求項３】
当該計算機を制御するプロセッサと、前記不揮発メモリに退避すべきデータを記憶する揮発メモリと、を備え、
前記制御プロセッサは、前記プロセッサによって発行された前記揮発メモリへの書込み命令に基づいて、前記揮発メモリから前記不揮発メモリに退避すべきデータのデータ量を算出することを特徴とする請求項１に記載の計算機。
【請求項４】
前記バッテリはコンデンサであることを特徴とする請求項１に記載の計算機。
【請求項５】
前記バッテリは、前記制御プロセッサ及び前記不揮発メモリと同一のシャーシ内に格納されることを特徴とする請求項１に記載の計算機。
【請求項６】
前記退避すべきデータに含まれるデータ毎に優先度が設定され、
前記制御プロセッサは、前記優先度の高いデータの順に前記不揮発メモリに退避することを特徴とする請求項１に記載の計算機。
【請求項７】
前記優先度は、当該データを使用するアプリケーションプログラム毎に付与される重要度に応じて設定されることを特徴とする請求項６に記載の計算機。
【請求項８】
前記優先度は、当該データを使用するアプリケーションプログラム毎の使用頻度に応じて設定されることを特徴とする請求項６に記載の計算機。
【請求項９】
データを記憶する不揮発メモリと、前記不揮発メモリへのデータの退避を制御する制御プロセッサと、外部電源の障害時に当該計算機に電力を供給するバッテリと、を備えた計算機におけるデータ退避方法であって、
前記制御プロセッサが、
前記バッテリに蓄えられた充電量を確認する手順と、
確認された前記充電量に基づいて、外部電源の障害時に前記バッテリによって前記不揮発メモリに退避可能なデータ量を算出する手順と、
前記不揮発メモリに退避すべきデータのうち、前記退避可能なデータ量を除いたデータ量のデータを、予め前記不揮発メモリに退避する手順と、
を含むことを特徴とするデータ退避方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機に関し、特に、停電時のデータ退避及び停電復旧時のデータ復旧に係る技術に関する。
【背景技術】
【０００２】
従来、データセンターや病院等におけるサーバシステムは、ＵＰＳ（Uninterruptible Power Supply、無停電電源装置）を備え、停電等の障害時においても継続運転が可能である。具体的には、ＵＰＳを用いた継続運転中に自家発電装置を稼働することによって、システムを継続的に運転させる。
【０００３】
特許文献１には、障害対応に関連する技術として、障害による外部電源遮断時にキャッシュメモリ内のデータ種別やバッテリ残量に合わせた制御により、キャッシュデータを保護しつつバッテリ電源の電力消費を低減させる技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１７２３５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、従来のＵＰＳを用いたシステムでは、ＵＰＳに用いられるバッテリのコストや設置コストが高くなる問題があった。また、自家発電装置を備えない場合や、電力供給が長時間停止することが想定される場合において、安全にシステムを停止できない場合があった。
【０００６】
本発明は、上述した課題を考慮したものであって、低コストに且つ安全にシステムを停止できる計算機を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するために、例えば特許請求の範囲に記載の構成を採用する。
【０００８】
本願は上記課題を解決する手段を複数含んでいるが、その一例を挙げるならば、データを記憶する不揮発メモリと、前記不揮発メモリへのデータの退避を制御する制御プロセッサと、外部電源の障害時に当該計算機に電力を供給するバッテリと、を備えた計算機であって、前記制御プロセッサは、前記バッテリに蓄えられた充電量を確認し、確認された前記充電量に基づいて、外部電源の障害時に前記バッテリによって前記不揮発メモリに退避可能なデータ量を算出し、前記不揮発メモリに退避すべきデータのうち、前記退避可能なデータ量を除いたデータ量のデータを、予め前記不揮発メモリに退避することを特徴とする。
【発明の効果】
【０００９】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、低コストに且つ安全にシステムを停止することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態の情報処理装置の構成の一例を示す図である。
【図２】本発明の実施形態の電源装置の構成の一例を示す図である。
【図３】本発明の実施形態の転送可能データ情報テーブルの一例を示す図である。
【図４】本発明の実施形態のバッテリの充電量に応じたデータの退避動作を示すフローチャートである。
【図５】本発明の実施形態の更新データ情報テーブルの一例を示す図である。
【図６】本発明の実施形態の停電時における電源制御プロセッサのデータ退避処理の制御ロジックを示すフローチャートの一例である。
【図７】本発明の実施形態の停電時における制御プロセッサのデータ退避処理の制御ロジックを示すフローチャートの一例である。
【図８】本発明の実施形態の停電復旧時におけるデータ復旧処理の制御ロジックを示すフローチャートの一例である。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態について図面を参照して説明する。なお、実施の形態を説明するための全図において、同一の構成要素には原則として同一の符号を付し、重複する説明は省略する。
【００１２】
図１は、本発明の実施形態の情報処理装置（計算機）１の構成の一例を示す図である。
【００１３】
情報処理装置１は、マザーボード１００及び電源装置１７０を同一のシャーシ１０上に備える。マザーボード１００には、ＣＰＵ（Central Processing Unit）１１０、ＰＣ（Peripheral Controller）１２０、ＨＤＤ（Hard Disk Drive）１３０、ＤＲＡＭ（Dynamic Random Access Memory）１４０、制御（用）プロセッサ１５０及び不揮発メモリ１６０等が搭載される。
【００１４】
ＣＰＵ１１０は、不図示のレジスタやキャッシュメモリを備えた演算処理装置である。ＰＣ１２０は、周辺機器（図１ではＨＤＤ１３０）との通信制御を実行する制御装置である。ＨＤＤ１３０は、各種情報を記録する不揮発性の記憶装置である。
【００１５】
ＤＲＡＭ１４０は、揮発性の記憶装置である。制御プロセッサ１５０は、本発明の実施形態のデータ退避処理及びデータ復旧処理を実行する演算処理装置である。不揮発メモリ１６０は、フラッシュメモリ（Flash Momory）等の不揮発性の記憶装置である。
【００１６】
なお、以下、ＨＤＤ１３０及び不揮発メモリ１６０を総称する場合、「不揮発性の記憶装置」という。また、ＣＰＵ１１０のレジスタやキャッシュメモリ及びＤＲＡＭ１４０を総称する場合、「揮発性の記憶装置」という。
【００１７】
電源装置１７０は、後述するバッテリ２５０（図２参照）を搭載し、外部電源１８０からの電力供給が遮断された場合、すなわち停電時において、マザーボード１００に電力を供給する。この電源装置１７０については、図２を用いて詳細に後述する。外部電源１８０は、電源装置１７０を介してマザーボード１００に給電する外部の電源である。
【００１８】
図２は、本発明の実施形態の電源装置１７０の構成の一例を示す図である。
【００１９】
電源装置１７０は、電源制御（用）プロセッサ２００、ＡＣ／ＤＣコンバータ２１０、２１１、２１２、スイッチ２２０、２２１、Ａ／Ｄコンバータ２３０、キャパシタ２４０、バッテリ２５０、ＤＣ／ＤＣコンバータ２６０、ダイオード２７０、２７１及び配線等を備える。
【００２０】
電源制御プロセッサ２００は、電源装置１７０の全体を制御する。具体的には、ＡＣ／ＤＣコンバータ２１０の動作、スイッチ２２０、２２１のオン・オフの切替え、ＤＣ／ＤＣコンバータ２６０のオン・オフの切替え及びキャパシタ２４０又はバッテリ２５０の充電状態をＡ／Ｄコンバータ２３０の出力信号に基づいて確認する動作等を実行する。
【００２１】
ＡＣ／ＤＣコンバータ２１０〜２１２は、外部電源１８０から入力された交流電力を直流電力に変換する。スイッチ２２０、２２１は、電流のオン・オフを切り替える。例えばスイッチ２２０がオンである場合、ＡＣ／ＤＣコンバータ２１１から出力される直流電力はキャパシタ２４０に入力される。すなわちキャパシタ２４０は充電される。Ａ／Ｄコンバータ２３０は、アナログ量で示される電圧値をデジタル量で示される電圧値に変換する。
【００２２】
キャパシタ２４０は、瞬停対応の小容量のコンデンサである。バッテリ２５０は、小容量の蓄電池又はキャパシタ２４０よりも大容量のコンデンサである。
【００２３】
ＤＣ／ＤＣコンバータ２６０は、入力された直流電力を電圧の異なる直流電力に変換する。ダイオード２７０、２７１は、整流作用（電流を一定方向にしか流さない作用）を持つ電子素子である。
【００２４】
通常運転時、電源装置１７０には外部電源１８０からの交流電力が供給される。供給された交流電力は、ＡＣ／ＤＣコンバータ２１０で直流電力に変換された後、ダイオード２７０を介してマザーボード１００に給電される。また、ＡＣ／ＤＣコンバータ２１１で直流電力に変換された後、スイッチ２２０を通ってキャパシタ２４０に給電される。さらに、ＡＣ／ＤＣコンバータ２１２で直流電力に変換された後、スイッチ２２１を通ってバッテリ２５０に給電される。
【００２５】
ここで、外部電源１８０からの電力供給が瞬停（瞬断）、すなわち数マイクロ秒程度断たれた場合には、キャパシタ２４０に蓄えられた電力がマザーボード１００に給電される。
【００２６】
一方、外部電源１８０からの電力供給が数マイクロ秒を超える停電が発生した場合、電源制御プロセッサ２００は、Ａ／Ｄコンバータ２３０の出力値（具体的には、Ａ／Ｄコンバータ２３０に入力されたＡＣ／ＤＣコンバータ２１１の出力電圧値）に基づいて停電の発生を確認する。その後、停電が発生した旨を制御プロセッサ１５０に通知する。加えて、ＤＣ／ＤＣコンバータ２６０を起動する。これにより、バッテリ２５０に蓄えられた電力がダイオード２７１を介してマザーボード１００に給電される。
【００２７】
また電源制御プロセッサ２００は、Ａ／Ｄコンバータ２３０の出力値（具体的には、Ａ／Ｄコンバータ２３０に入力されたキャパシタ２４０やバッテリ２５０の出力電圧、温度情報及び充放電電流の情報等）に基づいて、キャパシタ２４０やバッテリ２５０の充電状況や故障状態を判定する。その後、キャパシタ２４０やバッテリ２５０の充電状況や故障状態を制御プロセッサ１５０に通知する。
【００２８】
なお、制御プロセッサ１５０内の記憶領域にデータを書き込むことによって通知してもよいし、制御プロセッサ１５０が読み込むことが可能な外部記憶領域にデータを書き込むことによって通知してもよい。
【００２９】
図３は、本発明の実施形態の転送可能データ情報テーブル３００の一例を示す図である。
【００３０】
転送可能データ情報テーブル３００では、バッテリ２５０の充電量（充電残量）と、このバッテリ２５０の充電量を用いて不揮発メモリ１６０へ転送可能なデータ量との対応関係を示す情報が格納される。この転送可能データ情報テーブル３００は、予め生成され、不揮発メモリ１６０（図１参照）に格納される。
【００３１】
図３に示す例では、バッテリ２５０の充電量（単位：ワット）と、ＤＲＡＭ１４０から不揮発メモリ１６０へ転送可能なデータ量（単位：メガバイト）と、ＣＰＵ１１０（厳密には、ＣＰＵ１１０内のレジスタやキャッシュメモリ）から不揮発メモリ１６０へ転送可能なデータ量（単位：メガバイト）とが対応付けられている。
【００３２】
なお、ＣＰＵ１１０から不揮発メモリ１６０へ転送可能なデータ量は、ＣＰＵ１１０内のレジスタやキャッシュメモリの種類、転送方法毎に異なっていてもよい。
【００３３】
また、転送可能データ情報テーブル３００には、図３に示す各具体値に代えて、計算式のパラメータ値が格納されてもよい。例えば図３に示す例では、バッテリ２５０の充電量を「Ｘ」とする場合、ＤＲＡＭ１４０から不揮発メモリ１６０へ転送可能なデータ量は「５Ｘ＋５００」で示される。同様に、ＣＰＵ１１０から不揮発メモリ１６０へ転送可能なデータ量は「２５Ｘ＋２５００」で示される。そのため、これらの各計算式のパラメータ値を格納してもよい。この場合には、制御プロセッサ１５０は、格納されたパラメータ値を用いた計算式とバッテリ２５０の充電量とに基づいて、不揮発メモリ１６０へ転送可能なデータ量を算出する。
【００３４】
図４は、本発明の実施形態のバッテリ２５０の充電量に応じたデータの退避動作を示すフローチャートである。
【００３５】
ここでは、情報処理装置１が通常運転時（非停電時）に、バッテリ２５０の充電量（残量）に応じて、データを不揮発メモリ１６０に予め退避させる動作について説明する。
【００３６】
まずステップ４１０において、電源制御プロセッサ２００は、バッテリ２５０の充電量を確認する（Ｓ４１０）。バッテリ２５０の充電量は、Ａ／Ｄコンバータ２３０の出力値（具体的には、Ａ／Ｄコンバータ２３０に入力されるバッテリ２５０の出力電圧、温度情報及び充放電電流の情報等）と、バッテリ２５０の特性データとを比較することによって求められる。その後、求められたバッテリ２５０の充電量の情報を制御プロセッサ１５０に通知する。なお、電源制御プロセッサ２００は、バッテリ２５０の充電量を定期的に確認する。
【００３７】
次にステップ４２０において、制御プロセッサ１５０は、ステップ４１０で求められたバッテリ２５０の残量と、転送可能データ情報テーブル３００（図３参照）とに基づいて、停電時にバッテリ２５０によって不揮発メモリ１６０へ転送可能（退避可能）なデータ量を求める（Ｓ４２０）。
【００３８】
その後ステップ４３０において、制御プロセッサ１５０は、バックアップデータと、現状データとの差分データのデータ量を求める（Ｓ４３０）。バックアップデータとは、直近に揮発性の記憶装置から不揮発性の記憶装置へバックアップ（退避）されたデータである。現状データとは、揮発性の記憶装置に現に格納されているデータである。すなわち差分データとは、バックアップデータに対して更新されたデータ（以下、「更新データ」という。）であり、又は不揮発性の記憶装置に退避すべきデータであると言い換えることができる。
【００３９】
なお、制御プロセッサ１５０は、ＣＰＵ１１０内のＴＬＢ（Translation Look-aside Buffer）のダーティビットを確認することによって、更新データのデータ量を求めてもよい。
【００４０】
ここでＴＬＢとは、ＣＰＵ１１０内のキャッシュであって、ＣＰＵ１１０がプログラムの実行時に利用する仮想アドレスと、ＤＲＡＭ１４０上の物理アドレスとの対応関係を示すマッピング情報を、例えばページ（又はブロック）と呼ばれるサイズ単位で管理する変換テーブルである。このＴＬＢは、情報処理装置１に搭載されたＯＳ（Operating System）によって管理され、ＤＲＡＭ１４０上のページテーブルによって管理されるマッピング情報の一部を保持している。
【００４１】
またＴＬＢは、各ページ内のデータが書き換えられたか否かを示すダーティビット（ダーティフラグ）を管理する。そのため、所定のページに対応するダーティビットがダーティである（１が設定されている）場合、当該所定のページに対応する仮想アドレスのデータ（ＣＰＵ１１０内のキャッシュメモリ上のデータ）が書き換えられている。一方、当該所定のページに対応する物理アドレスのデータ（ＤＲＡＭ１４０上のデータ）は書き換えられてない。すなわち当該所定のページに対応する仮想アドレスのデータと、物理アドレスのデータとが上記の更新データとなる。
【００４２】
なお、ステップ４３０において、制御プロセッサ１５０は、ＣＰＵ１１０によって発行されたＤＲＡＭ１４０への書込み命令に基づいて、書込み対象のアドレス及び書込みデータのサイズを取得し、上記の更新データのデータ量を求めてもよい。
【００４３】
また、ステップ４３０において、制御プロセッサ１５０は、更新データ情報テーブル５００（図５を用いて後述）にエントリを追加し、更新データのアドレス、データサイズ、優先度及び更新時刻を、それぞれ更新アドレス（バックアップ元のアドレス）５０１、データサイズ５０３、優先度５０６及び更新時刻５０７に書き込む。各属性の詳細については図５を用いて後述する。
【００４４】
その後ステップ４４０において、制御プロセッサ１５０は、ステップ４３０で求められた差分データ（更新データ）のデータ量と、ステップ４２０で求められた停電時に転送可能なデータ量とを比較する（Ｓ４４０）。差分データのデータ量が停電時に転送可能なデータ量よりも小さい場合（Ｓ４４０でＮｏ）、停電時においても差分データを退避可能であり、予め退避させる必要がない。そのため、処理を終了する。
【００４５】
一方、差分データのデータ量が停電時に転送可能なデータ量よりも大きい場合（Ｓ４４０でＹｅｓ）、制御プロセッサ１５０は、差分データのデータ量が停電時に転送可能なデータ量よりも小さくなるように、予め不揮発性の記憶装置にデータを退避させる（Ｓ４５０）。例えば差分データのデータ量が３０００ＭＢであって、停電時に転送可能なデータ量が１０００ＭＢである場合、差分データ３０００ＭＢのうち、１０００ＭＢを除いた（差し引いた）２０００ＭＢのデータを予め不揮発性の記憶装置に退避させる。これにより、停電時において残りの１０００ＭＢの差分データを確実に退避させることができる。その後、処理を終了する。
【００４６】
なお、ステップ４５０では、制御プロセッサ１５０は、差分データに設定されている優先度５０６（図５参照）を参照し、優先度５０６の高いデータの順に退避させてもよい。
【００４７】
また、制御プロセッサ１５０は、ステップ４５０においてデータを退避させる際、退避先のアドレスを、更新データ情報テーブル５００（図５参照）中の当該データに対応するバックアップ先アドレス５０２に書き込む。また、退避が完了した旨を示す退避完了フラグを、退避フラグ５０４又は５０５に書き込む。すなわち退避先がＨＤＤ１３０である場合には退避フラグ５０５に“１”を設定する。一方、退避先が不揮発メモリ１６０である場合には退避フラグ５０４に“１”を設定する。
【００４８】
以上に示すように、情報処理装置１が通常運転時に、制御プロセッサ１５０が、バッテリ２５０の充電量に応じて、不揮発メモリ１６０に予め更新データを退避させる。なお、ＣＰＵ１１０ではなく制御プロセッサ１５０が一連の処理を実行することにより、ＣＰＵ１１０の処理低下を防ぐことができる。
【００４９】
図５は、本発明の実施形態の更新データ情報テーブル５００の一例を示す図である。
【００５０】
更新データ情報テーブル５００では、不揮発性の記憶装置に退避すべき更新データに関する情報が格納される。この更新データ情報テーブル５００は、不揮発メモリ１６０（図１参照）に格納される。
【００５１】
図５に示す例では、更新アドレス５０１、バックアップ先アドレス５０２、データサイズ５０３、不揮発メモリへの退避フラグ５０４、ＨＤＤへの退避フラグ５０５、優先度５０６及び更新時刻５０７が対応付けられた情報が、更新データに関する情報として格納される。
【００５２】
更新アドレス５０１は、更新データのバックアップ元のアドレス（ＤＲＡＭ１４０又はＣＰＵ１１０のキャッシュメモリ上の配置を示す先頭アドレス）である。バックアップ先アドレス５０２は、更新データのバックアップ先の不揮発性の記憶装置上の配置を示す先頭アドレスである。
【００５３】
データサイズ５０３は、更新データのデータサイズである。すなわち更新アドレス５０１で示す先頭アドレスから、データサイズ５０３で示すサイズだけオフセットしたアドレスまでのデータが更新データである。
【００５４】
不揮発メモリへの退避フラグ５０４は、更新データの退避先が不揮発メモリ１６０であるか否かを示すフラグである。更新データが不揮発メモリ１６０に退避された場合に、退避フラグ５０４には“１”が設定される。それ以外の場合には“０”が設定される。
【００５５】
ＨＤＤへの退避フラグ５０５は、更新データの退避先がＨＤＤ１３０であるか否かを示すフラグである。更新データがＨＤＤ１３０に退避された場合に、退避フラグ５０５には“１”が設定される。それ以外の場合には“０”が設定される。
【００５６】
優先度５０６は、各更新データのデータ退避に係る優先度を示す情報である。データ退避の際には、優先度５０６が高い更新データが優先して退避される。この優先度５０６は、更新データを使用するアプリケーションプログラムの種類や使用頻度に応じて付与される。例えばユーザによって予め設定されたアプリケーションプログラム毎の重要度に応じて、重要度の高いアプリケーションプログラムほど更新データの優先度を高くする。また、使用頻度の高いアプリケーションプログラムほど更新データの優先度を高くする。これにより、万が一完全なデータ退避を実行できない場合であっても、優先度の高い更新データを退避させることができる。
【００５７】
更新時刻５０７は、更新データの更新時刻を示す情報である。この更新時刻５０７は、図４のステップ４０３の処理後や更新データの退避が実行された場合に記録される。停電復旧時には、この更新時刻５０７の古い順にデータ復旧を実行することにより、データ退避前のデータ構成を復元することができる。
【００５８】
以上説明してきた更新データ情報テーブル５００では、更新データが不揮発メモリ１６０に退避された場合、更新データのバックアップ元のアドレス、不揮発メモリ１６０内のバックアップ先アドレスが、それぞれ更新アドレス５０１、バックアップ先アドレス５０２に記録され、不揮発メモリへの退避フラグ５０４に“１”が設定される。その後ＨＤＤ１３０に退避された場合、不揮発メモリへの退避フラグ５０４が“０”に変更され、ＨＤＤへの退避フラグ５０５に“１”が設定される。また、ＤＲＡＭ１４０内の更新データがＨＤＤ１３０に退避された場合、退避元のＤＲＡＭ１４０のアドレスと退避先のＨＤＤ１３０上のアドレスとが、それぞれ更新アドレス５０１、バックアップ先アドレス５０２に記録され、ＨＤＤへの退避フラグ５０５に“１”が設定される。
【００５９】
図６は、本発明の実施形態の停電時における電源制御プロセッサ２００のデータ退避処理の制御ロジックを示すフローチャートの一例である。
【００６０】
ここでは、外部電源１８０からの電力供給が停止し、いわゆる停電状態になった場合のデータ退避処理について説明する。
【００６１】
まずステップ６１０において、電源制御プロセッサ２００は、外部電源１８０の状態を確認する（Ｓ６１０）。具体的には、Ａ／Ｄコンバータ２３０の出力値に基づいて、外部電源１８０からの電力供給を監視する。なお、電源制御プロセッサ２００は、外部電源１８０からの電力供給を定期的に確認する。
【００６２】
次にステップ６２０において、電源制御プロセッサ２００は、Ａ／Ｄコンバータ２３０の出力値に基づいて、外部電源１８０からの電力供給が停止しているか否かを判定する（Ｓ６２０）。外部電源１８０からの電力供給が停止していない場合（Ｓ６２０でＮｏ）、停電時におけるデータ退避処理は必要ないので、処理を終了する（Ｓ６５０）。
【００６３】
一方、外部電源１８０からの電力供給が停止していた場合（Ｓ６２０でＹｅｓ）、電源制御プロセッサ２００は、ＤＣ／ＤＣコンバータ２６０を起動し、バッテリ２５０による給電に基づいてマザーボード１００を駆動するよう切り替える（Ｓ６３０）。ステップ６３０では、バッテリ２５０による給電に切り替えるまでの間は、キャパシタ２４０による給電に基づいてマザーボード１００を駆動する。
【００６４】
その後ステップ６４０において、電源制御プロセッサ２００は、バッテリ２５０による給電に切り替わった旨を制御プロセッサ１５０に通知し、制御プロセッサ１５０はデータ退避を実行する（Ｓ６４０）。制御プロセッサ１５０によるデータ退避については図７を用いて後述する。その後、処理を終了する（Ｓ６５０）。
【００６５】
以上に示す処理により、電源制御プロセッサ２００は、外部電源１８０からの電力供給が停止し、いわゆる停電状態になった場合にデータ退避を実行する。
【００６６】
図７は、本発明の実施形態の停電時における制御プロセッサ１５０のデータ退避処理の制御ロジックを示すフローチャートの一例である。ここでは、図６のステップ６４０の処理の詳細について説明する。
【００６７】
まずステップ７１０において、制御プロセッサ１５０は、更新データ情報テーブル５００（図５参照）に登録されている各更新データのうち、不揮発性の記憶装置に記録されていない更新データを確認する（Ｓ７１０）。具体的には、更新データ情報テーブル５００において退避フラグ５０４、５０５がいずれも“０”である更新データを確認する。
【００６８】
次にステップ７２０及び７３０において、制御プロセッサ１５０は、それぞれＣＰＵ１１０のレジスタ値、ＤＲＡＭ１４０内のページテーブルを不揮発メモリ１６０に退避する（Ｓ７２０、Ｓ７３０）。
【００６９】
その後ステップ７４０において、制御プロセッサ１５０は、ＣＰＵ１１０内のキャッシュメモリ上のデータのうちの、ダーティビットがダーティであるページのデータ（すなわちダーティデータ）をＤＲＡＭ１４０に書き戻す（ライトバックする）（Ｓ７４０）。ここでいうダーティデータとは、ＣＰＵ１１０内のキャッシュメモリ上のデータであって、ＣＰＵ１１０による書込み動作によってＤＲＡＭ１４０内のデータと内容が非同一に更新されたデータである。
【００７０】
その後ステップ７５０において、制御プロセッサ１５０は、ＤＲＡＭ１４０内の更新データを、各更新データに設定された優先度５０６の高い順に不揮発メモリ１６０に退避する（Ｓ７５０）。ここでいうＤＲＡＭ１４０内の更新データとは、ステップ７４０の書き戻し後のＤＲＡＭ１４０内のデータと、直近にＤＲＡＭ１４０から不揮発性の記憶装置にバックアップされたデータとの差分データである。
【００７１】
その後ステップ７６０において、制御プロセッサ１５０は、データの退避が完了した旨を示す退避完了フラグを、不揮発メモリ１６０上の特定の領域に記録する（Ｓ７６０）。なお、データ退避に失敗した場合には、失敗した旨の情報を記録してもよい。
【００７２】
以上に示す処理により、制御プロセッサ１５０は、停電時にデータ退避を実行する。
【００７３】
なお、ステップ７２０〜７３０の処理は、ステップ７４０〜７５０の処理の後に実行してもよい。また、ステップ７４０及び７５０の処理により、ＣＰＵ１１０内のキャッシュメモリ上のダーティデータをＤＲＡＭ１４０に一旦書き戻した後に、ＤＲＡＭ１４０内の更新データを不揮発メモリ１６０に退避させているが、この場合には限らない。例えば、ＤＲＡＭ１４０への書き戻しを実行せずに、ＣＰＵ１１０内のキャッシュメモリ上のダーティデータ及びＤＲＡＭ１４０内の更新データの両方を不揮発メモリ１６０に退避させてもよい。
【００７４】
図８は、本発明の実施形態の停電復旧時におけるデータ復旧処理の制御ロジックを示すフローチャートの一例である。
【００７５】
ここでは、外部電源１８０からの電力供給が復旧した場合、いわゆる通常状態に復旧した場合のデータ復旧処理について説明する。
【００７６】
まずステップ８１０において、電源制御プロセッサ２００は、外部電源１８０の状態を確認する（Ｓ８１０）。具体的には、Ａ／Ｄコンバータ２３０の出力値に基づいて、外部電源１８０からの電力供給を監視する。なお、電源制御プロセッサ２００は、復旧された外部電源１８０やその他の電源による供給電力によって動作するものとする。また、電源制御プロセッサ２００は、外部電源１８０からの電力供給を定期的に確認する。
【００７７】
外部電源１８０からの電力供給が復旧していない場合（Ｓ８２０でＮｏ）、電源制御プロセッサ２００は、データ復旧処理を実行できないので、処理を終了する。その後、一定時間経過した後に、図８に示す制御ロジックを再度繰り返す。
【００７８】
一方、外部電源１８０からの電力供給が復旧した場合（Ｓ８２０でＹｅｓ）、電源制御プロセッサ２００は、外部電源１８０からの電力供給が復旧した旨を制御プロセッサ１５０に通知する（Ｓ８３０）。
【００７９】
その後ステップ８４０において、制御プロセッサ１５０は、前回の停止（停電時の情報処理装置１のシャットダウン）が通常停止であったか否かを確認する（Ｓ８４０）。具体的には、不揮発メモリ１６０に退避完了フラグ（図７のステップ７６０参照）を読み込むことによって、前回の停止が通常停止であったか否かを確認する。
【００８０】
通常停止でなかった場合（Ｓ８４０でＮｏ）、すなわち退避完了フラグに“１”が設定されている場合、制御プロセッサ１５０は、不揮発メモリ１６０に退避されたデータを、元の位置（ＣＰＵ１１０内のレジスタやキャッシュメモリ、ＤＲＡＭ１４０）に転送することによってデータを復旧する（Ｓ８６０）。ステップ８６０では、更新データ情報テーブル５００を参照し、更新時刻５０７（図５参照）が古い順にデータを転送する。これは、更新アドレス５０１が重複するデータについての整合性を確保するためである。
【００８１】
通常停止であった場合（Ｓ８４０でＹｅｓ）、すなわち退避完了フラグに“０”が設定されている場合、制御プロセッサ１５０は、ＨＤＤ１３０に格納されているブートプログラムに基づいて、通常のブート処理を実行する（Ｓ８５０）。なお、不揮発メモリ１６０にブートプログラムが格納されている場合には、不揮発メモリ１６０に格納されているブートプログラムに基づいて、通常のブート処理を実行してもよい。
【００８２】
以上に示す処理により、情報処理装置１では、外部電源１８０からの電力供給が復旧した場合、いわゆる通常状態に復旧した場合にデータ復旧処理を実行する。
【００８３】
以上説明してきたように、本発明の実施形態の情報処理装置１によれば、小型且つ小容量のバッテリ２５０を用いて、低コスト且つ安全にシステムの停止及び復旧を実現することができる。
【００８４】
以上、本発明の実施形態について説明したが、上記実施形態は本発明の適用例の一つを示したものであり、本発明の技術的範囲を上記実施形態の具体的構成に限定する趣旨ではない。本発明の要旨を逸脱しない範囲において種々変更可能である。
【符号の説明】
【００８５】
１    情報処理装置（計算機）
１０    シャーシ
１００    マザーボード
１１０    ＣＰＵ
１３０    ＨＤＤ
１４０    ＤＲＡＭ
１５０    制御プロセッサ
１６０    不揮発メモリ
１７０    電源装置
１８０    外部電源
２００    電源制御プロセッサ
２５０    バッテリ
３００    転送可能データ情報テーブル
５００    更新データ情報テーブル
【図１】
2013088928.tif 000003
【図２】
2013088928.tif 000004
【図３】
2013088928.tif 000005
【図４】
2013088928.tif 000006
【図５】
2013088928.tif 000007
【図６】
2013088928.tif 000008
【図７】
2013088928.tif 000009
【図８】
2013088928.tif 000010