(57)【要約】【課題】２次ストレージへの書き込み頻度を下げて消費電力を下げる。【解決手段】実施形態の情報処理装置は、補助記憶部と、主記憶部と、蓄電部と、第１書込部と、第２書込部と、を備える。主記憶部は、補助記憶部に記憶するデータを一時記憶するキャッシュ領域を含む不揮発性の記憶部である。第１書込部は、データをキャッシュ領域に書き込む。第２書込部は、蓄電部の電力量が予め定められた第１閾値より大きい場合に、キャッシュ領域に書き込まれたデータを補助記憶部に書き込む。【選択図】図３
2012203583.tif 000002
【特許請求の範囲】
【請求項１】
補助記憶部と、
前記補助記憶部に記憶するデータを一時記憶するキャッシュ領域を含む不揮発性の主記憶部と、
蓄電部と、
データを前記キャッシュ領域に書き込む第１書込部と、
前記蓄電部の電力量が予め定められた第１閾値より大きい場合に、前記キャッシュ領域に書き込まれた前記データを前記補助記憶部に書き込む第２書込部と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記第２書込部は、前記電力量が前記第１閾値より大きく、かつ、前記キャッシュ領域に書き込まれてから一定時間経過した前記データを前記補助記憶部に書き込むこと、
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１書込部は、予め定められたサイズの記憶領域であるブロックを単位として前記データを前記キャッシュ領域に書込み、
前記第２書込部は、さらに、前記キャッシュ領域でデータが書き込まれていない前記ブロックの個数が予め定められた第２閾値より小さい場合に、前記キャッシュ領域に書き込まれた前記データを前記補助記憶部に書き込むこと、
を特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記蓄電部に電力を供給する供給部をさらに備えること、
を特徴とする請求項１に記載の情報処理装置。
【請求項５】
補助記憶部と、前記補助記憶部に記憶するデータを一時記憶するキャッシュ領域を含む不揮発性の主記憶部と、蓄電部と、を備えるコンピュータを、
データを前記キャッシュ領域に書き込む第１書込部と、
前記蓄電部の電力量が予め定められた第１閾値より大きい場合に、前記キャッシュ領域に書き込まれた前記データを前記補助記憶部に書き込む第２書込部、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、情報処理装置およびプログラムに関する。
【背景技術】
【０００２】
ＰＣ（パーソナルコンピュータ）、携帯電話、タブレット型端末、および、スレート型端末などの情報機器（情報処理装置）では、さまざまなデータを２次ストレージ（補助記憶部）に記憶する。２次ストレージには、ハードディスクドライブ（ＨＤＤ）、シリコンディスクドライブ（ＳＳＤ）、および、フラッシュメモリを搭載したメモリカード（ＳＤカード、コンパクトフラッシュ（登録商標）など）などが利用される。また、ＣＰＵ（Central  Processing  Unit）に直結したフラッシュメモリのチップを２次ストレージとして利用する場合もある。２次ストレージに記憶したデータは、情報処理装置の電源を遮断にしても消えずに保持される。
【０００３】
これらの情報処理装置に搭載されるソフトウェアは、基盤となるオペレーティングシステムと、その上で動作する各種のアプリケーションプログラムから構成される。２次ストレージ上のデータは、オペレーティングシステムがファイルとして管理する。アプリケーションプログラムが２次ストレージ上のデータをアクセス（読み出し（ｒｅａｄ）、および、書き込み（ｗｒｉｔｅ）など）するときは、オペレーティングシステムに対してファイルの操作（ファイルの作成、書き込み、読み出し、および、削除など）を依頼するシステムコールを発行する。オペレーティングシステムの中でファイルの管理をする部分を、ファイルシステムと呼ぶ場合もある。
【０００４】
一般に、２次ストレージのデータを読み出したり書き込んだりする速度は、メインメモリ（主記憶部）上のデータを読み出したり書き込んだりする速度に比べて遅い。そこでオペレーティングシステムは、ディスクキャッシュを用いて、速度の遅い２次ストレージ上のデータを効率良くアクセスする。オペレーティングシステムは、過去にアプリケーションプログラムが２次ストレージから読み出したデータや２次ストレージに書き込んだデータを、メインメモリ上に確保したディスクキャッシュ領域に一時的に記憶しておく。アプリケーションプログラムからデータの読み出しを依頼されたオペレーティングシステムは、読み出すべきデータがディスクキャッシュ中にあれば、２次ストレージから読み出すことなくディスクキャッシュ中のデータをアプリケーションプログラムに返す。また、アプリケーションプログラムによる２次ストレージへのデータの書き込みは、データをディスクキャッシュに書き込んだ時点で完了でき、オペレーティングシステムがディスクキャッシュ中のデータを後で一括して２次ストレージへ書き込む。その結果、アプリケーションプログラムによる２次ストレージ上のデータの読み出しや書き込みの平均的な時間を短縮でき、２次ストレージにアクセスする頻度を低減できる。ディスクキャッシュは、ページキャッシュまたはバッファキャッシュと呼ばれることもある。
【０００５】
ディスクキャッシュを用いるオペレーティングシステムでは、アプリケーションプログラムが２次ストレージに書き込むデータがディスクキャッシュに書き込まれる時点と、そのデータが実際に２次ストレージへ書き込まれる時点との間に時間差が生じる。通常、ディスクキャッシュ領域は揮発性のメインメモリ上に確保するので、障害発生等によって、ディスクキャッシュに書き込まれたがまだ２次ストレージに書き込まれていないデータが失われると、アプリケーションプログラムが２次ストレージに書き込んだはずのデータが失われる。そのため、多くのオペレーティングシステムは、ディスクキャッシュ上に書き込まれたデータを、書き込まれてから一定の時間が経過した時点や、ディスクキャッシュの空き領域が少なくなった時点で、ディスクキャッシュから２次ストレージに書き込む。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】Understanding  the  Linux  Kernel,  Third  Edition,  Daniel  P.  Bovet,  Marco  Cesati,  O'Reilly  Media  2005,  Chapter１5,  P599-630.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、２次ストレージへの書き込みはディスクキャッシュへの書き込みに比べて多くの電力を消費する。このため、バッテリ等の限られた電力で動作する情報処理装置では、可能な限り２次ストレージへの書き込み頻度を下げて消費電力を下げることが望ましい。
【課題を解決するための手段】
【０００８】
実施形態の情報処理装置は、補助記憶部と、主記憶部と、蓄電部と、第１書込部と、第２書込部と、を備える。主記憶部は、補助記憶部に記憶するデータを一時記憶するキャッシュ領域を含む不揮発性の記憶部である。第１書込部は、データをキャッシュ領域に書き込む。第２書込部は、蓄電部の電力量が予め定められた第１閾値より大きい場合に、キャッシュ領域に書き込まれたデータを補助記憶部に書き込む。
【図面の簡単な説明】
【０００９】
【図１】本実施形態の情報処理装置の外観図。
【図２】本実施形態の情報処理装置のハードウェア構成図。
【図３】本実施形態の情報処理装置の機能構成例を示すブロック図。
【図４】２次ストレージにアクセスする動作の説明図。
【図５】フラッシュ処理のフローチャート。
【図６】フラッシュ処理のフローチャート。
【発明を実施するための形態】
【００１０】
以下に添付図面を参照して、この発明にかかる情報処理装置の好適な実施形態を詳細に説明する。
【００１１】
図１は、本実施形態の情報処理装置１００の外観を示す図である。図１は、タブレット型の情報処理装置１００の例を示している。情報処理装置１００は、端末表面に低消費電力の反射型液晶ディスプレイまたは電子ペーパーなどの表示部１０２ａを備える。また、情報処理装置１００は、端末表面の表示部１０２ａ以外の部分に太陽電池１０１を備えている。また、情報処理装置１００は、表示部１０２ａの表面にはポインティングデバイスとして機能するタッチパネル１０２ｂを備える。さらに、情報処理装置１００は、端末表面の表示部１０２ａと重ならない部分にキーボード１０３を備える。キーボード１０３は太陽電池１０１の表面に透明なタッチパネル１０２ｂを重ねることで実現しても良い。また、透明な素材または遮光性の部分の少ない素材を用いた機械式のキーボード１０３として実現しても良い。
【００１２】
図２は、本実施形態の情報処理装置１００のハードウェア構成例を示すブロック図である。情報処理装置１００は、主なハードウェア構成として、太陽電池１０１と、表示部１０２ａと、タッチパネル１０２ｂと、キーボード１０３と、ＣＰＵ１１０と、通信インタフェース（通信Ｉ／Ｆ）１１１と、不揮発メモリ１２１と、２次ストレージ１２２と、電源制御部１３０と、蓄電部１３１と、を備えている。
【００１３】
情報処理装置１００は、太陽電池１０１で発電した電力で動作する。しかし、太陽電池１０１で発電する電力だけでは動作時（何らかの処理を実行している時）の情報処理装置１００全体のピークの消費電力をまかなえない。このため、アイドル時（ユーザからの応答待ちの時間や、情報処理装置１００を使用していない時間など）に太陽電池１０１で発電した余剰電力を蓄電部１３１に充電しておく。そして、動作時には、電源制御部１３０が、蓄電部１３１からの電力を情報処理装置１００の各部に供給するように制御する。このような電源制御はピークシフトとも呼ばれる。このように、太陽電池１０１は、蓄電部１３１を含む情報処理装置１００の各部に電力を供給する供給部として機能する。
【００１４】
蓄電部１３１は、リチウムイオン電池などのバッテリ、または電気２重層キャパシタなどを、単独で、または組み合わせて実現できる。例えば、太陽電池１０１で発電した電力をまず電気２重層キャパシタに蓄積し、蓄積した電力をさらにリチウムイオン電池に充電するように組み合わせる。
【００１５】
ＣＰＵ１１０は、アプリケーションプログラムやオペレーティングシステムを実行して全体を制御する。
【００１６】
不揮発メモリ１２１は、メインメモリとして用いる不揮発性の記憶素子で構成される記憶部（主記憶部）である。例えば、不揮発メモリ１２１は、高速に読み書きできるＭＲＡＭ（Magnetic  Random  Access  Memory）で実現する。ＭＲＡＭ以外に、ＰＣＭ（Phase  Change  Memory、ＰＲＡＭやＰＣＲＡＭと呼ばれることもある）やＲｅＲＡＭ（Resistance  Random  Access  Memory）を不揮発メモリ１２１として用いることもできる。
【００１７】
２次ストレージ１２２は、情報処理装置１００が必要とするデータやプログラムを記憶する記憶部（補助記憶部）である。例えば、２次ストレージ１２２は、フラッシュメモリのチップを搭載した記憶部により実現できる。２次ストレージ１２２としてＳＤカードやＳＳＤを用いることもできる。
【００１８】
２次ストレージ１２２を備えず、２次ストレージ１２２に記憶すべきすべてのデータやプログラムを格納できる容量の不揮発メモリ１２１のみを備える構成では、コストの増大等の問題が生じる。したがって、本実施形態では、主記憶部（不揮発メモリ１２１）と補助記憶部（２次ストレージ１２２）とを備え、補助記憶部のデータをキャッシュするディスクキャッシュを主記憶部に備える構成とする。
【００１９】
また、本実施形態では、主記憶部としてＤＲＡＭ（Dynamic  Random  Access  Memory）などの揮発性の記憶素子ではなく、不揮発性の記憶素子を用いる。したがって、仮に障害が発生したとしても２次ストレージ１２２に書き込むべきデータが失われることはない。しかし、上述のように主記憶部にディスクキャッシュを備える構成とするため、ディスクキャッシュのデータを２次ストレージ１２２に書き込む処理（フラッシュ処理）が必要となる。
【００２０】
情報処理装置１００は、入出力装置として、電子ペーパーまたは低消費電力液晶ディスプレイなどの表示部１０２ａ、表示部１０２ａの表面に重ねて実装する透明のタッチパネル１０２ｂ、キーボード１０３、および、通信Ｉ／Ｆ１１１を備える。キーボード１０３を省略して、表示部１０２ａに仮想キーボードを表示し、それをタッチパネル１０２ｂで押さえるように実装しても良い。なお、タッチパネル１０２ｂおよびキーボード１０３以外の入出力インタフェースを備える、または、接続可能とするように構成してもよい。
【００２１】
通信Ｉ／Ｆ１１１は、例えば無線ＬＡＮ（Local  Area  Network）などによる通信を行うためのインタフェースである。通信のプロトコルは無線ＬＡＮに限られず、有線ＬＡＮ、Ｂｌｕｅｔｏｏｔｈ、ＺｉｇＢｅｅ、赤外線通信、可視光通信、光回線網、電話回線網、およびインターネットなどのあらゆるプロトコルを利用できる。
【００２２】
電源制御部１３０は、蓄電部１３１に蓄積している電力量を管理し、ＣＰＵ１１０などの外部の構成部が蓄電部１３１に蓄積している電力量を知るための機能を備える。ＣＰＵ１１０が蓄電部１３１に蓄積している電力量を知る機能は、例えば、蓄電部１３１に蓄積している電力量が予め決められた規定量より少なくなった時点、または多くなった時点で、電源制御部１３０がＣＰＵ１１０に対して割り込みで伝えるように構成することで実現できる。また、別の実現方法としては、ＣＰＵ１１０からのコマンドを受け取ると電源制御部１３０が現在の電力量をＣＰＵ１１０に送り返すように実装することもできる。
【００２３】
図３は、本実施形態の情報処理装置１００の機能構成例を示すブロック図である。図３では、図２に示したハードウェア構成を省略している。情報処理装置１００は、表示制御部１５１と、通信制御部１５２と、入出力制御部１５３と、記憶制御部１６０と、を備えている。
【００２４】
これらの各部（表示制御部１５１と、通信制御部１５２と、入出力制御部１５３と、記憶制御部１６０）の機能は、例えば、オペレーティングシステムが備える機能として実現できる。なお、これらの各部のうち少なくとも１つをハードウェア回路により実現してもよい。
【００２５】
表示制御部１５１は、表示部１０２ａに対する情報の表示処理を制御する。通信制御部１５２は、通信Ｉ／Ｆ１１１を介した外部装置（図示せず）との間の通信処理を制御する。入出力制御部１５３は、タッチパネル１０２ｂおよびキーボード１０３を用いたデータの入出力処理を制御する。
【００２６】
記憶制御部１６０は、不揮発メモリ１２１および２次ストレージ１２２に対するデータのアクセスを制御する。例えば、記憶制御部１６０は、不揮発メモリ１２１内にディスクキャッシュ用のキャッシュ領域（以下、ディスクキャッシュという）を確保し、２次ストレージ１２２から読み書きするデータを当該ディスクキャッシュに一時記憶する。そして、記憶制御部１６０は、所定の条件が満たされたときに、ディスクキャッシュに一時記憶したデータを２次ストレージ１２２に書き戻す。記憶制御部１６０は、第１書込部１６１と、第２書込部１６２と、対応管理部１６３と、を備えている。
【００２７】
第１書込部１６１は、アプリケーションプログラムなどからアクセスが要求された２次ストレージ１２２内のデータをディスクキャッシュに書き込む。第２書込部１６２は、ディスクキャッシュのデータを２次ストレージ１２２に書き込むために定められる所定の条件が満たされたときに、当該データを２次ストレージ１２２に書き込む。例えば、第２書込部１６２は、蓄電部１３１の電力量が予め定められた閾値（第１閾値）より大きい場合に、アプリケーションプログラムからの書き込み要求によってディスクキャッシュに書き込まれたデータを２次ストレージ１２２に書き込む。
【００２８】
対応管理部１６３は、ディスクキャッシュと２次ストレージ１２２内の記憶領域との間の対応を管理する。例えば、一般的なオペレーティングシステムが備えるファイルシステムと呼ぶソフトウェアモジュールにより対応管理部１６３を実現できる。
【００２９】
一般に、オペレーティングシステムは、２次ストレージ１２２を一定のサイズのブロックに分割して管理する。１つのブロックのサイズは代表的には４キロバイトの大きさである。同様に、対応管理部１６３は、２次ストレージ１２２の全記憶領域を４キロバイトのブロックに区切り、各ブロックに順に番号（ブロック番号）を付与する。そして、対応管理部１６３は、ブロック番号をブロックのアドレスとして扱う。
【００３０】
対応管理部１６３は、データを指定するファイル名と、そのファイル名のデータが実際に記憶されている２次ストレージ１２２の中のブロック番号（１つまたは複数）の対応を管理する。具体的には、Ｌｉｎｕｘ（登録商標）やＵｎｉｘ（登録商標）で広く用いられているファイルシステムではｉノードと呼ぶデータ構造を使ってこの対応を管理している。また、Ｗｉｎｄｏｗｓ（登録商標）で広く用いられているファイルシステムではＦＡＴと呼ぶデータ構造を使ってこの対応を管理している。ファイルシステムは、２次ストレージ１２２中の各ブロックが使用中か未使用かも管理する。
【００３１】
このように、本実施形態の情報処理装置１００は、Ｌｉｎｕｘ（登録商標）等のオペレーティングシステムを搭載する。オペレーティングシステムは、ディスクキャッシュを使って２次ストレージ１２２に記憶するデータを管理する。
【００３２】
次に、図４を用いて、アプリケーションプログラムが２次ストレージ１２２をアクセスする際のオペレーティングシステム（図３の各部）の動作を説明する。図４は、２次ストレージ１２２にアクセスするときの動作を説明するための図である。図４に示す２次ストレージ１２２中の長方形がそれぞれ１つのブロックに相当し、ブロックそれぞれに付与した番号がブロックのアドレスに相当する。
【００３３】
情報処理装置１００では、記憶制御部１６０は、ディスクキャッシュの領域を不揮発メモリ１２１上に確保する。記憶制御部１６０は、ディスクキャッシュも２次ストレージ１２２の管理単位と同じブロックサイズに切り分けて管理する。対応管理部１６３は、ディスクキャッシュの各ブロックが使用中か未使用か、使用中なら２次ストレージ１２２のいずれのブロックに対応したデータを記憶しているか、使用中のブロックがダーティか否かを管理する。使用中のブロックがダーティとは、ディスクキャッシュ内のブロックに書き込まれたデータが、まだ対応する２次ストレージ１２２のブロックに書き込まれていない状態をいう。図４に示すディスクキャッシュ中の長方形がそれぞれ１つのブロックに相当する。数字が記載されたブロックは使用中であり、数字は対応する２次ストレージ１２２中のブロックのアドレスである。網掛けされたブロックは使用中でダーティなブロックを示す。数字が書かれていないブロックは未使用であることを示す。
【００３４】
アプリケーションプログラムが２次ストレージ１２２に記憶しているデータを読み出す際の処理の手順（以下の（１）〜（４））を、図４を用いて説明する。
【００３５】
（１）アプリケーションプログラムは、記憶制御部１６０に対してＯｐｅｎ（オープン）システムコールを発行して、読み出すデータを記憶しているファイル名を指定する。
（２）記憶制御部１６０は、指定されたファイル名から、そのデータを記憶している２次ストレージ１２２中のブロック（１つまたは複数）のアドレスを得る。
（３）アプリケーションプログラムは、Ｒｅａｄ（リード）システムコールを発行してデータを読み出すことを記憶制御部１６０に指示する。
（４）記憶制御部１６０は、読み出すべきデータを記憶している２次ストレージ１２２中のブロックのデータがディスクキャッシュ中に存在するか否かを調べる。ディスクキャッシュ中に存在すれば、記憶制御部１６０は、そのデータをアプリケーションプログラムに返す（図４のＲ２）。ディスクキャッシュ中に存在しなければ、記憶制御部１６０（第１書込部１６１）は、２次ストレージ１２２からデータを読み出してディスクキャッシュ中の未使用ブロックに書き込む（図４のＲ１）とともに、そのデータをアプリケーションプログラムに返す（図４のＲ２）。
【００３６】
次に、アプリケーションプログラムが２次ストレージ１２２にデータを書き込む際の処理の手順（以下の（１）〜（５））を、図４を用いて説明する。
【００３７】
（１）アプリケーションプログラムは、記憶制御部１６０に対してＯｐｅｎ（オープン）システムコールを発行して、データを書き込むファイル名を指定する。
（２）アプリケーションプログラムは、Ｗｒｉｔｅ（ライト）システムコールを発行して書き込むデータを記憶制御部１６０に伝える。
（３）新しいファイルに書き込む場合は、以下の（４）のように書込みの処理を行う。既に存在するファイルに上書きする場合は以下の（５）のように書き込みの処理を行う。既に存在するファイルへの上書きの場合でも、既に２次ストレージ１２２が割り当てられている範囲を超えてファイルを大きくする場合は、新しく増えるブロックに関しては以下の（４）の手順で書き込みの処理を行う。
（４）新しいファイルに書き込む場合は、第１書込部１６１は、ディスクキャッシュ中の未使用ブロックを必要な個数確保してアプリケーションプログラムから渡されたデータを書き込む（図４のＷ１）。対応管理部１６３は、データを書き込んだブロックを使用中として管理する。さらに、対応管理部１６３は、そのデータを書き込むために必要な個数の２次ストレージ１２２中の未使用ブロックを確保し、対応するディスクキャッシュ中のブロックと対応付けて管理する。
（５）既に存在するファイルに上書きする場合は、対応管理部１６３は、指定されたファイル名から、そのデータを記憶している２次ストレージ１２２中のブロック（１つまたは複数）のアドレスを得る。２次ストレージ１２２中のブロックに対応するディスクキャッシュのブロックが既に使用中として存在する場合は、第１書込部１６１は、そのブロックにデータを書き込む（図４のＷ１）。また、対応管理部１６３は、そのブロックをダーティとして管理する。２次ストレージ１２２中のブロックに対応するディスクキャッシュのブロックがまだ存在しない場合には、対応管理部１６３は、ディスクキャッシュ中の未使用のブロックを割り当てる。そして、第１書込部１６１は、割り当てられたブロックにデータを書き込む（図４のＷ１）。また、対応管理部１６３は、データを書き込んだブロックを使用中かつダーティとするとともに対応する２次ストレージ１２２のブロックと対応付けて管理する。
【００３８】
ディスクキャッシュ中のダーティな使用中のブロック、すなわちアプリケーションプログラムが書き込んだデータを記憶しているブロックで、そのデータがまだ対応する２次ストレージ１２２中のブロックに書き込まれていないブロックは、所定のタイミングで第２書込部１６２が２次ストレージ１２２への書き込みを実行する（図４のＷ２）。この処理はフラッシュ処理と呼ばれる。例えばＬｉｎｕｘ（登録商標）の場合には、フラッシュ処理はｐｄｆｌｕｓｈと呼ぶデーモンプログラムにより実行される。フラッシュ処理によってディスクキャッシュから２次ストレージ１２２へのデータの書き込みが行われるのは、Ｌｉｎｕｘ（登録商標）など従来の多くのオペレーティングシステムでは、主に次の２つの場合である。
【００３９】
（１）アプリケーションプログラムが書き込んだデータを記憶するディスクキャッシュ中の使用中でダーティなブロックで、書き込まれてから長い時間そのデータを２次ストレージ１２２へ書き込んでいないブロックが存在する場合：この場合、第２書込部１６２は、そのブロックのデータを対応する２次ストレージ１２２に書き込む。そして対応管理部１６３は、そのブロックを使用中だがダーティでない状態にする。なお、ディスクキャッシュ中で使用中かつダーティであったブロックを未使用でなく使用中かつダーティでないブロックにする理由は、後にアプリケーションプログラムがそのデータを読み出す場合にディスクキャッシュ中のデータを読めるようにするためである。ディスクキャッシュ中で使用中だがダーティでないブロックは、必要に応じて未使用ブロックとして扱うことができる。
（２）ディスクキャッシュ中に使用中でダーティなブロックが多くなり、未使用のブロックや使用中だがダーティでないブロックが少なくなった場合：この場合、第２書込部１６２は、使用中でダーティなブロックのデータを対応する２次ストレージ１２２に書き込む。そして対応管理部１６３は、そのブロックを使用中だがダーティでない状態、または未使用状態にする。
【００４０】
このようなフラッシュ処理は、図５に示すような手順で実行される。図５は、フラッシュ処理の一例を示すフローチャートである。
【００４１】
まず、記憶制御部１６０が、ディスクキャッシュ中に使用中でダーティな状態になってから予め決められた一定時間（例えば数十秒）以上経過しているブロックが存在するか否かを判断する（ステップＳ１０１）。存在する場合（ステップＳ１０１：Ｙｅｓ）、第２書込部１６２が、対応する２次ストレージ１２２のブロックにデータを書き出す（ステップＳ１０２）。対応管理部１６３は、当該ブロックを使用中だがダーティではない状態にして管理する。
【００４２】
一定時間以上経過しているブロックが存在しない場合（ステップＳ１０１：Ｎｏ）、記憶制御部１６０は、さらに、ディスクキャッシュ中の未使用ブロックが不足しているか否かを判断する（ステップＳ１０３）。例えば、記憶制御部１６０は、ディスクキャッシュ中の未使用ブロックの個数が予め決められた閾値（第２閾値）以上であるか否かを判断し、個数が閾値より小さい場合に不足していると判断する。
【００４３】
不足していない場合は（ステップＳ１０３：Ｎｏ）、ステップＳ１０１に戻り処理を繰り返す。不足している場合は（ステップＳ１０３：Ｙｅｓ）、第２書込部１６２は、ディスクキャッシュ中で使用中かつダーティであるブロックを選択し、選択したブロックのデータを対応する２次ストレージ１２２に書き込む（ステップＳ１０４）。対応管理部１６３は、データを書き込んだブロックを使用中だがダーティでない状態にする。なお、未使用ブロックが不足しているか否かを判断する際は、使用中でもダーティでないブロックはいつでも未使用ブロックにできるので、未使用ブロックとして数えて良い。
【００４４】
本実施形態の情報処理装置１００は、さらに図６に示すように、蓄電部１３１の電力量に応じてフラッシュ処理を実行するか否かを切り替える。図６は、本実施形態のフラッシュ処理の全体の流れを示すフローチャートである。図６のフラッシュ処理は、図５と比較して、蓄電部１３１の電力量を考慮するステップＳ２０２が追加される点が相違する。その他のステップＳ２０１、ステップＳ２０３〜ステップＳ２０５は、それぞれ図５のステップＳ１０１、ステップＳ１０２〜ステップＳ１０４と同様であるため詳細な説明を省略する。
【００４５】
すなわち、ディスクキャッシュ中に使用中でダーティな状態になってから予め決められた一定時間（例えば数十秒）以上経過しているブロックが存在するか否か調べられる（ステップＳ２０１）。そのようなブロックが存在すれば（ステップＳ２０１：Ｙｅｓ）、記憶制御部１６０は、蓄電部１３１の電力量に余裕があるか否かを判断する（ステップＳ２０２）。記憶制御部１６０は、上述のように、例えば電源制御部１３０からの割り込み、または、現在の電力量を要求するコマンドに対する応答から、蓄電部１３１の現在の電力量を取得する。そして、記憶制御部１６０は、例えば、蓄電部１３１の電力量が予め決められた閾値（第１閾値）より大きい場合に、電力量に余裕があると判断する（ステップＳ２０２：Ｙｅｓ）。この場合、第２書込部１６２が、対応する２次ストレージ１２２のブロックにデータを書き出す（ステップＳ２０３）。また、対応管理部１６３が、ディスクキャッシュ中の使用中でダーティなブロックを、使用中だがダーティではない状態にして管理する。
【００４６】
電力量に余裕がない場合（ステップＳ２０２：Ｎｏ）、２次ストレージ１２２への書き込みを実行せずに、ステップＳ１０１に戻って処理を繰り返す。これにより、消費電力を削減できる。
【００４７】
なお、蓄電部１３１の電力量を判断する処理（ステップＳ２０２）は、図６のタイミングで実行する必要はない。例えば、図６のステップＳ２０１とステップＳ２０２の順序を入れ替えても良い。また、ステップＳ２０４の判断がＹｅｓの場合、さらにステップＳ２０２と同様に蓄電部１３１の電力量を判断する処理を行い、電力に余裕がある場合にのみステップＳ２０５の処理を行っても良い。
【００４８】
情報処理装置１００は、不揮発メモリ１２１にディスクキャッシュの領域を確保しているため、障害発生時にもディスクキャッシュ中の使用中かつダーティなブロックのデータは失われない。そのため、オペレーティングシステムのブート時に、前回は正常な手順でシャットダウンされたのか、または、障害で電源が遮断されたのかを判断して、障害で電源が遮断された場合にはディスクキャッシュ中で使用中かつダーティなブロック（すなわち、アプリケーションプログラムによってディスクキャッシュに書き込まれたが、まだ対応する２次ストレージ１２２には書き込まれていないブロック）を検出して、そのブロックのデータを２次ストレージ１２２に書き込むようにするのが望ましい。
【００４９】
この機能は、例えば以下の手順により実現できる。まず、正常にシャットダウンされたか否かを判断する領域を例えば不揮発メモリ１２１上に設ける。その領域には、ブート時に第１の値（例えば０）を書き込み、正常シャットダウン時に第２の値（例えば１）を書き込むようにする。記憶制御部１６０は、ブート時に第１の値（０）を書き込む前に、この領域に書き込まれている値を読み出す。記憶制御部１６０は、その値が第２の値（１）でなければ、正常にシャットダウンされていないと判断する。
【００５０】
本実施形態は、上記のようなオペレーティングシステムのファイルシステムなどによるデータ管理のみでなく、データベース管理システムにおける２次ストレージ１２２に記憶したデータベースとメインメモリ上のデータベースキャッシュの管理にも適用できる。また、仮想記憶を実現するためのスワップ用の２次ストレージ１２２とメインメモリに確保したページキャッシュの管理に対しても適用できる。特に最近のＬｉｎｕｘ（登録商標）やＵｎｉｘ（登録商標）などのオペレーティングシステムでは、ディスクキャッシュと仮想記憶のためのページキャッシュが統合されている場合がある。このように統合されたキャッシュに対して本実施形態を適用すると、ディスクキャッシュにもスワップにも本実施形態の効果を得られる。
【００５１】
これまでに示した実施例では、太陽電池１０１を供給部として用いているが、供給部は太陽電池１０１に限るものではない。太陽電池１０１以外に、ワイヤレス給電を用いて電力を外部から供給する方法や、振動や熱などから電力を得る方法を用いても良い。特に発電または供給できる電力が一定しない場合には、本実施形態は効果がある。
【００５２】
本実施形態により、２次ストレージ１２２へデータを書き込む頻度を低減できるので、２次ストレージ１２２への書き込みで消費する電力を削減することができる。また、蓄電部１３１に蓄積している電力が少ない時に、フラッシュ処理で消費する電力を削減できるので、削減した電力をユーザとの対話処理など優先度の高い処理に使うことができる。
【００５３】
本実施形態にかかる情報処理装置で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【００５４】
また、本実施形態にかかる情報処理装置で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかる情報処理装置で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【００５５】
また、本実施形態のプログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００５６】
本実施形態にかかる情報処理装置で実行されるプログラムは、上述した各部（表示制御部１５１、通信制御部１５２、入出力制御部１５３、記憶制御部１６０）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ１１０が２次ストレージ１２２などの記憶媒体からプログラムを読み出して実行することにより上記各部が主記憶部（不揮発メモリ１２１）上にロードされ、上述した各部が主記憶部上に生成されるようになっている。
【００５７】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５８】
１００  情報処理装置
１０１  太陽電池
１０２ａ  表示部
１０２ｂ  タッチパネル
１０３  キーボード
１１１  通信インタフェース
１２１  不揮発メモリ
１２２  ２次ストレージ
１３０  電源制御部
１３１  蓄電部
１５１  表示制御部
１５２  通信制御部
１５３  入出力制御部
１６０  記憶制御部
１６１  第１書込部
１６２  第２書込部
１６３  対応管理部
【図１】
2012203583.tif 000003
【図２】
2012203583.tif 000004
【図３】
2012203583.tif 000005
【図４】
2012203583.tif 000006
【図５】
2012203583.tif 000007
【図６】
2012203583.tif 000008