(57)【要約】【課題】発電された電力を有効活用すること。【解決手段】ＣＰＵ１０１は、バッテリ１０５の電力の残量に基づいて、バッテリ１０５からＣＰＵ１０１への電力の供給が遮断されている間に、記憶部１０６が保持可能なデータ量を決定する。保持可能なデータ量を決定後、ＣＰＵ１０１は、記憶部１０６の記憶領域のうちの決定したデータ量に相当する記憶領域に、ＣＰＵ１０１への電力の供給が遮断されている間バッテリ１０５から電力を供給するようにＰＭＵ１０２に指示する。【選択図】図１
2014137643.tif 000002
【特許請求の範囲】
【請求項１】
自装置を制御するプロセッサと、
前記自装置が置かれた環境に応じて得られるエネルギーを用いて発電する発電部からの電力を充電する充電部と、
前記充電部からの電力の供給が遮断されると記憶内容の一部または全部が失われる記憶領域を有する記憶部と、
前記充電部からの電力の供給を制御する電力制御部と、を有し、
前記プロセッサは、
前記充電部によって充電された電力の残量に基づいて、電源から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定し、前記記憶部の記憶領域のうちの決定した前記保持可能なデータ量に相当する記憶領域に、前記プロセッサへの電力の供給が遮断されている間継続して前記充電部から電力を供給するように前記電力制御部に指示することを特徴とするデータ保持装置。
【請求項２】
前記プロセッサは、
決定した前記保持可能なデータ量が前記記憶部に記憶されているデータのうちの保持すべきデータのデータ量未満であると判断した場合、決定した前記保持可能なデータ量に相当する記憶領域に、前記保持すべきデータを前記保持可能なデータ量以下になるように圧縮した圧縮データを格納することを特徴とする請求項１に記載のデータ保持装置。
【請求項３】
前記プロセッサは、
前記充電部によって充電された電力の残量と前記プロセッサへの電力の供給が遮断されてから復帰するまでの時間間隔とに基づいて、電源から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定することを特徴とする請求項１または２に記載のデータ保持装置。
【請求項４】
電力を供給する電池をさらに有し、
前記電力制御部は、
前記充電部からの電力の供給を制御するとともに、前記電池からの電力の供給を制御し、
前記プロセッサは、
前記充電部によって充電された電力の残量と前記電池に蓄えられた電力の残量と基づいて、前記充電部および前記電池から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定し、前記記憶部の記憶領域のうちの決定した前記保持可能なデータ量に相当する記憶領域に、前記プロセッサへの電力の供給が遮断されている間継続して前記充電部から電力を供給するように前記電力制御部に指示することを特徴とする請求項１〜３のいずれか一つに記載のデータ保持装置。
【請求項５】
自装置を制御するプロセッサと、前記自装置が置かれた環境に応じて得られるエネルギーを用いて発電する発電部からの電力を充電する充電部と、前記充電部からの電力の供給が遮断されると記憶内容の一部または全部が失われる記憶領域を有する記憶部と、前記充電部からの電力の供給を制御する電力制御部と、を有するデータ保持装置が、
前記プロセッサにより、前記充電部によって充電された電力の残量に基づいて、電源から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定し、
前記プロセッサにより、前記記憶部の記憶領域のうちの決定した前記保持可能なデータ量に相当する記憶領域に、前記充電部から前記プロセッサへの電力の供給が遮断されている間継続して前記充電部から電力を供給するように前記電力制御部に指示する、
処理を実行することを特徴とするデータ保持方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ保持装置、およびデータ保持方法に関する。
【背景技術】
【０００２】
従来、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）への電力を遮断している間に、揮発性メモリに電力を供給し続けることにより、保持すべきデータを保持する技術がある。また、エナジーハーベストと呼ばれる環境に応じて得られるエネルギーを用いて発電する技術がある。関連する先行技術として、たとえば、通常動作状態からＣＰＵへの電力を遮断する省エネ状態への移行前に揮発性メモリのデータを不揮発性メモリに転送し、省エネ状態から通常動作状態への復帰時に不揮発性メモリのデータを揮発性メモリに転送する技術がある。また、グラフィックスメモリにおいて、画面が変化しない状態になると、あるメモリバンクに他のメモリバンクの格納情報をコピーし、ＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）の内部設定をインターリーブからあるメモリバンクに変更し、他のメモリバンクの給電を止める技術がある。（たとえば、下記特許文献１、２を参照。）
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００２−３３５３５７号公報
【特許文献２】特開２００４−２０５５７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来技術によれば、ＣＰＵへの電力を遮断している間、エナジーハーベストによって発電された電力を用いて揮発性メモリにデータを保持する場合、エナジーハーベストによって発電された電力が有効活用されない場合がある。たとえば、エナジーハーベストの発電量は環境に左右されるため、エナジーハーベストによって発電された電力の充電量が不安定なものとなる。このため、たとえば、充電量が少ない場合を想定して、ＣＰＵへの電力を遮断している間に揮発性メモリに電力を供給する記憶領域の大きさを設定することになり、エナジーハーベストによって発電された電力が有効活用されない場合がある。また、データのサイズが大きければ圧縮して保持することになり、圧縮にかかる消費電力が増大する。
【０００５】
１つの側面では、本発明は、発電された電力を有効活用することができるデータ保持装置、およびデータ保持方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一側面によれば、自装置を制御するプロセッサと、自装置が置かれた環境に応じて得られるエネルギーを用いて発電する発電部からの電力を充電する充電部と、充電部からの電力の供給が遮断されると記憶内容の一部または全部が失われる記憶領域を有する記憶部と、充電部からの電力の供給を制御する電力制御部と、を有し、プロセッサは、充電部によって充電された電力の残量に基づいて、電源からプロセッサへの電力の供給が遮断されている間に記憶部が保持可能なデータ量を決定し、記憶部の記憶領域のうちの決定した保持可能なデータ量に相当する記憶領域に、プロセッサへの電力の供給が遮断されている間継続して充電部から電力を供給するように電力制御部に指示するデータ保持装置、およびデータ保持方法が提案される。
【発明の効果】
【０００７】
本発明の一態様によれば、発電された電力を有効活用することができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施の形態１にかかるデータ保持装置の動作例を示す説明図である。
【図２】図２は、実施の形態１にかかるデータ保持装置のハードウェアの一例を示すブロック図である。
【図３】図３は、退避メモリの電源制御の一例を示す説明図である。
【図４】図４は、実施の形態１にかかるデータ保持装置の機能例を示すブロック図である。
【図５】図５は、充電率と停止中供給バンク数の関係の一例を示す説明図である。
【図６】図６は、充電率とメモリバンク数の関係の他の例を示す説明図である。
【図７】図７は、記憶内容の退避の一例を示す説明図である。
【図８】図８は、アクセス時の処理手順の一例を示すフローチャートである。
【図９】図９は、実施の形態１にかかる動作停止処理手順の一例を示すフローチャートである。
【図１０】図１０は、実施の形態１にかかる動作停止処理手順の他の例を示すフローチャートである。
【図１１】図１１は、停止中供給バンク数決定処理手順の一例を示すフローチャートである。
【図１２】図１２は、退避処理手順の一例を示すフローチャートである。
【図１３】図１３は、実施の形態１にかかる動作起動処理手順の一例を示すフローチャートである。
【図１４】図１４は、復帰処理手順の一例を示すフローチャートである。
【図１５】図１５は、時刻と消費電力の関係を示す説明図である。
【図１６】図１６は、実施の形態２にかかるデータ保持装置のハードウェア構成例を示すブロック図である。
【図１７】図１７は、実施の形態２にかかるデータ保持装置の機能例を示すブロック図である。
【図１８】図１８は、実施の形態２にかかる動作停止処理手順の一例を示すフローチャートである。
【図１９】図１９は、実施の形態２にかかる動作起動処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下に添付図面を参照して、開示のデータ保持装置、およびデータ保持方法の実施の形態を詳細に説明する。
【００１０】
（実施の形態１）
図１は、実施の形態１にかかるデータ保持装置の動作例を示す説明図である。データ保持装置１００は、プロセッサ（以下、ＣＰＵ）１０１と、ＰＭＵ（Ｐｏｗｅｒ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）１０２と、充電率測定回路１０３と、エナジーハーベスト１０４と、バッテリ１０５と、記憶部１０６と、を含む。ＣＰＵ１０１〜充電率測定回路１０３と、記憶部１０６とは、それぞれバス１０７で接続される。
【００１１】
ＣＰＵ１０１は、バッテリ１０５からの電力が供給され、データ保持装置１００の全体の制御を司る演算処理装置である。ＰＭＵ１０２は、バッテリ１０５からの電力の供給を制御する装置である。図１の例では、ＰＭＵ１０２は、ＣＰＵ１０１の電力の供給を遮断し、ＣＰＵ１０１の動作を停止させる。充電率測定回路１０３は、バッテリ１０５の電力の残量を測定する回路である。エナジーハーベスト１０４は、データ保持装置１００が置かれた環境に応じて得られるエネルギーを用いて発電する装置である。具体的に、エナジーハーベスト１０４は、データ保持装置１００の設置箇所における環境、たとえば、光、振動、温度、無線電波（受信電波）などのエネルギーに基づき発電を行う。バッテリ１０５は、電力を蓄える装置である。また、バッテリ１０５は、エナジーハーベスト１０４により発電された電力を蓄える。記憶部１０６は、バッテリ１０５からの電力の供給が遮断されると記憶内容の一部または全部が失われる記憶領域を有する揮発性メモリである。
【００１２】
データ保持装置１００は、データを保持するコンピュータである。具体的に、データ保持装置１００は、動作開始、動作停止という間欠動作を行いながら省電力化を図る。そして、データ保持装置１００は、動作停止中に、データ保持装置１００上で実行されるアプリケーションソフトウェアの結果となるデータを保持する。また、データ保持装置１００の動作停止は、ＣＰＵ１０１への電力の供給と付属の周辺装置への電力の供給を遮断することとする。以下、アプリケーションソフトウェアを、「アプリ」と称する。再び動作開始となる際に、データ保持装置１００は、保持したデータをアプリに提供することにより、アプリは、前回動作した際の結果を用いて、高精度な処理を行うことができる。
【００１３】
アプリは、たとえば、ナビゲーションアプリや、数値計算アプリ等である。アプリがナビゲーションアプリであれば、ナビゲーションアプリは、データ保持装置１００がアクセス可能なＧＰＳ（Ｇｌｏｂａｌ  Ｐｏｓｉｔｉｏｎｉｎｇ  Ｓｙｓｔｅｍ）受信器により取得した情報に基づいて、現在地の位置情報を算出する。ここで、毎回ＧＰＳ受信器から情報を取得すると消費電力が大きくなるため、ナビゲーションアプリは、データ保持装置１００に含まれる加速度センサーの積分値から現在地の位置情報を算出し、時々ＧＰＳ受信器から情報を取得して、現在地の位置情報を補正する。
【００１４】
たとえば、ナビゲーションアプリは、データ保持装置１００の動作停止中に、ＧＰＳ受信器からの情報により算出された現在地の位置情報を保持する。そして、ナビゲーションアプリは、データ保持装置１００が動作停止した後に再び動作開始した時点で、保持した現在地の位置情報と、加速度センサーの積分値に基づいて、再び現在地の位置情報を算出する。このとき、保持する現在地の位置情報や、移動方向を示すベクトル情報は、詳細に持っていた方が、次回ＧＰＳ受信器から取得した情報を用いて補正する時に、誤差が少なくなるが、データ量が増える。一方、保持すべきデータのデータ量を、有効桁を減らす等して減らすと、消費電力は小さくなるが、位置情報やベクトル情報の精度は悪くなる。なお、保持すべきデータは、データ保持装置１００に内蔵のセンサーから取得されたデータでもよいし、他の装置から受信したデータでもよいし、センサーから取得されたデータまたは他の装置から受信したデータを加工したデータでもよい。
【００１５】
データ保持装置１００の動作停止中にデータを保持する方法として、下記２つの方法がある。１つ目の方法は、書き込み可能な不揮発性メモリにデータを格納する方法である。２つ目の方法は、データ保持装置１００の動作停止中にも揮発性メモリに電力を供給し続けておき、データを保持する方法がある。本実施の形態では、２つ目の方法を採用する。不揮発性メモリより揮発性メモリの方が、アクセス速度が速いため、２つ目の方法は、１つ目の方法に比べて、アクセス速度を速くすることができる。
【００１６】
ここで、エナジーハーベスト１０４は、環境に応じて得られるエネルギーに基づき発電を行うため、アプリを長時間動作させることができる。その一方で、エナジーハーベスト１０４は、発電量が環境に左右するため、エナジーハーベスト１０４の発電量が不安定となり、エナジーハーベスト１０４によって発電された電力を有効活用できない場合がある。たとえば、充電量が少ない場合を想定して、ＣＰＵ１０１への電力を遮断している間に記憶部１０６に電力を供給する記憶領域の大きさを設定することになり、エナジーハーベスト１０４によって発電された電力が有効活用されない場合がある。また、データのサイズが、ＣＰＵ１０１への電力を遮断している間に記憶部１０６に電力を供給する記憶領域より大きければ圧縮して保持することになり、圧縮にかかる消費電力が増大する。
【００１７】
そこで、ＣＰＵ１０１は、バッテリ１０５の電力の残量に基づいて、バッテリ１０５からＣＰＵ１０１への電力の供給が遮断されている間に、記憶部１０６が保持可能なデータ量を決定する。これにより、データ保持装置１００は、エナジーハーベスト１０４の発電量が不安定さを吸収して、エナジーハーベスト１０４の発電量を有効活用できる。以下、実施の形態１において、バッテリ１０５の電力の残量を、単に、「電力の残量」と記述する場合がある。
【００１８】
具体的に、ＣＰＵ１０１は、電力の残量が大きければ、保持可能なデータ量を大きくし、電力の残量が小さければ、保持可能なデータ量を小さくする。また、データ保持装置１００は、前回起動時の電力の残量と今回起動時の電力の残量との差が小さければ、保持可能なデータ量を大きくし、前回起動時の電力の残量と今回起動時の電力の残量との差が大きければ、保持可能なデータ量を小さくしてもよい。電力の残量が小さい、大きいという判断方法については、図５にて後述する。図１では、データ保持装置１００が電力の残量が大きければ、保持可能なデータ量を大きくし、電力の残量が小さければ、保持可能なデータ量を小さくする例を用いて説明する。
【００１９】
保持可能なデータ量を決定後、ＣＰＵ１０１は、記憶部１０６の記憶領域のうちの決定したデータ量に相当する記憶領域に、ＣＰＵ１０１への電力の供給が遮断されている間バッテリ１０５から電力を供給するようにＰＭＵ１０２に指示する。たとえば、データ保持装置１００の停止中に保持すべきデータのデータ量が、保持可能なデータ量より小さいとする。このとき、ＣＰＵ１０１は、記憶部１０６のうちのデータ保持装置１００の停止中に保持すべきデータが格納された記憶領域に、ＣＰＵ１０１への電力の供給が遮断されている間バッテリ１０５から電力を供給するようにＰＭＵ１０２に指示する。また、記憶部１０６のうち、ＣＰＵ１０１への電力の供給が遮断されている間バッテリ１０５から電力を供給可能な記憶領域があるならば、ＣＰＵ１０１は、データ保持装置１００の停止中に保持すべきデータを、前述の記憶領域に転送する。
【００２０】
以下、図１（Ａ）にて、電力の残量が大きい場合について示す。また、図１（Ｂ）にて、電力の残量が小さい場合について示す。
【００２１】
図１（Ａ）は、電力の残量が大きい場合を示す。電力の残量が大きいため、ＣＰＵ１０１は、保持可能なデータ量を大きく決定する。続けて、ＣＰＵ１０１は、記憶部１０６の記憶領域のうちの決定したデータ量に相当する記憶領域１１１に、ＣＰＵ１０１への電力の供給が遮断されている間バッテリ１０５から電力を供給するようにＰＭＵ１０２に指示する。図１（Ａ）では、データ保持装置１００の停止中に保持すべきデータ１１２のデータ量が、記憶領域１１１が記憶可能な記憶量より小さいため、データ１１２は、記憶領域１１１内にそのまま格納される。データ１１２が格納された後、ＰＭＵ１０２は、ＣＰＵ１０１への電力の供給を遮断する。
【００２２】
図１（Ｂ）は、電力の残量が小さい場合を示す。電力の残量が小さいため、ＣＰＵ１０１は、保持可能なデータ量を小さく決定する。続けて、ＣＰＵ１０１は、記憶部１０６の記憶領域のうちの決定したデータ量に相当する記憶領域１１３に、ＣＰＵ１０１への電力の供給が遮断されている間バッテリ１０５から電力を供給するようにＰＭＵ１０２に指示する。図１（Ｂ）では、データ保持装置１００の停止中に保持すべきデータ１１２のデータ量が、記憶領域１１３が記憶可能な記憶量より大きいため、データ１１２は、記憶領域１１３に格納できない。そこで、ＣＰＵ１０１は、データ１１２を保持可能なデータ量以下となるように圧縮した圧縮データ１１４を記憶領域１１３に格納する。圧縮データ１１４が格納された後、ＰＭＵ１０２は、ＣＰＵ１０１への電力の供給を遮断する。データ１１２を圧縮する圧縮アルゴリズムは、どのようなアルゴリズムを採用してもよい。
【００２３】
以下、図２〜図１５を用いて、実施の形態１にかかるデータ保持装置１００について詳細に説明する。
【００２４】
（データ保持装置１００のハードウェア）
図２は、実施の形態１にかかるデータ保持装置のハードウェアの一例を示すブロック図である。データ保持装置１００は、ＬＳＩ２００内に、ＣＰＵ１０１と、ＲＯＭ（Ｒｅａｄ‐Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０１と、ＰＭＵ１０２と、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）２０２と、を含む。さらに、データ保持装置１００は、ＬＳＩ２００内に、シリアルＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）２０３と、ペリフェラル２０４と、インターフェース２０５と、メモリコントローラ２０６と、電源制御回路２０７と、充電率測定回路１０３と、を含む。ＣＰＵ１０１〜充電率測定回路１０３と、ＲＯＭ２０１〜電源制御回路２０７は、バス１０７でそれぞれ接続される。また、充電率測定回路１０３は、前回電力残量記憶レジスタ２１１を有する。
【００２５】
さらに、データ保持装置１００は、ＬＳＩ２００内に、ＷｏｒｋＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２２１と、退避メモリ２２２と、を含む。さらに、データ保持装置１００は、ＬＳＩ２００の外に、ＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ）２３１と、センサー２３２と、エナジーハーベスト１０４と、バッテリ１０５と、を含む。ＲＦ２３１とセンサー２３２とは、インターフェース２０５に接続される。エナジーハーベスト１０４と、バッテリ１０５とは、充電率測定回路１０３に接続される。なお、図１で示した記憶部１０６は、ＷｏｒｋＳＲＡＭ２２１と、退避メモリ２２２とに相当する。
【００２６】
また、図２にてハッチを付与したＰＭＵ１０２と、充電率測定回路１０３と、退避メモリ２２２と、エナジーハーベスト１０４と、バッテリ１０５とは、データ保持装置１００の動作停止中も電力が供給される装置である。
【００２７】
ＲＯＭ２０１は、ブートプログラムなどのプログラムや、本実施の形態にかかるデータ保持プログラムを記憶する不揮発性メモリである。ＰＭＵ１０２は、データ保持装置１００の動作停止中に、ＣＰＵ１０１と、ＲＯＭ２０１と、ＤＭＡ２０２と、シリアルＩ／Ｏ２０３〜メモリコントローラ２０６と、ＷｏｒｋＳＲＡＭ２２１との電力の供給を遮断する。
【００２８】
ＤＭＡ２０２は、ＣＰＵ１０１を介さずに各装置間で直接データ転送を行う装置である。たとえば、ＤＭＡ２０２は、ＲＯＭ２０１の記憶内容を、メモリコントローラ２０６を経由してＷｏｒｋＳＲＡＭ２２１に書き込む。
【００２９】
シリアルＩ／Ｏ２０３は、シリアル転送方式による入出力ポートである。ペリフェラル２０４は、ＣＰＵ１０１以外の周辺機器である。たとえば、ペリフェラル２０４は、ＧＰＵでもよいし、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）でもよい。インターフェース２０５は、ＬＳＩ２００外にある装置に接続する装置である。
【００３０】
メモリコントローラ２０６は、ＷｏｒｋＳＲＡＭ２２１および退避メモリ２２２へのアクセスを制御する装置である。また、メモリコントローラ２０６は、後述する図７にて示す、動作停止時に記憶内容の退避処理と動作開始時に記憶内容の復帰処理と、後述する図８にて示すアクセス時のアクセスタグの付与を行う。
【００３１】
電源制御回路２０７は、退避メモリ２２２の電源を制御する回路である。退避メモリ２２２の電源の制御内容については、図３にて後述する。前回電力残量記憶レジスタ２１１には、前回測定した際の電力の残量が格納される。
【００３２】
ＷｏｒｋＳＲＡＭ２２１は、ＣＰＵ１０１における処理の一時データを格納する記憶装置である。退避メモリ２２２は、電源制御回路２０７の電力の供給によりデータ保持装置１００の動作停止中にも記憶内容を保持できるメモリである。ＷｏｒｋＳＲＡＭ２２１と退避メモリ２２２とが一つのメモリでもよいし、ＷｏｒｋＳＲＡＭ２２１、退避メモリ２２２それぞれが、複数のメモリの集合体でもよい。また、退避メモリ２２２は、ＳＲＡＭでもよいし、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）でもよい。
【００３３】
ＲＦ２３１は、受信した無線電波を受信信号として出力し、送信信号を無線電波としてアンテナを介して送信する。センサー２３２は、設置箇所における所定の変位量を検出する装置である。センサー２３２は、たとえば、設置箇所の圧力を検出する圧電素子や、温度を検出する素子、光を検出する光電素子などを用いることができる。エナジーハーベスト１０４は、図１にて示した説明に加え、センサー２３２によって検出された変位量に応じて発電を行ってもよい。
【００３４】
図３は、退避メモリの電源制御の一例を示す説明図である。退避メモリ２２２は、複数のバンクに分かれており、バンクごとに電源の制御が可能である。図３の例では、退避メモリは、バンク０〜バンク７を有し、バンクごとに電源の制御が可能である。電源制御回路２０７も、各バンクの電源の制御を行うため、電源制御回路２０７＃０〜電源制御回路２０７＃７を有する。たとえば、電源制御回路２０７＃０は、バンク０の電源の制御を行う。
【００３５】
メモリコントローラ２０６は、データ保持装置１００の動作停止からの復帰時に、退避メモリ２２２からＷｏｒｋＳＲＡＭ２２１へデータの復帰を行う。データの復帰を行った後、ＣＰＵ１０１は、ＰＭＵ１０２に退避メモリの各バンクの電源を切る旨の指示をする。指示を受けたＰＭＵ１０２は、バンクごとの電源制御回路２０７に指示を出して電源の供給を停止する。
【００３６】
データ保持装置１００の動作が終了し停止する場合、ＣＰＵ１０１は、充電率測定回路１０３から、動作停止時点での電力の残量を取得する。次に、ＣＰＵ１０１は、取得した電力の残量と、前回電力残量記憶レジスタ２１１に記憶された前回の電力の残量との差の比較結果に基づいて、データ保持装置１００の動作停止中に電力を供給するバンク数を増減する。続けて、ＣＰＵ１０１は、前回電力残量記憶レジスタ２１１に今回取得した充電量を上書きする。
【００３７】
以下、データ保持装置１００の停止中に電力が供給されるバンクを、「停止中供給バンク」と呼称する。また、停止中供給バンクの数を、「停止中供給バンク数」と呼称する。さらに、停止中供給バンクの数の最小値を、「最小バンク数」と呼称する。最小バンク数は、データ保持装置１００の管理者によって指定される値である。たとえば、退避メモリ２２２の１バンクの記憶量が０ｘ１０００［バイト］であり、データ保持装置１００の停止中に保持すべきデータの記憶量が０ｘ４０００［バイト］であり、前述のデータを圧縮した圧縮後のデータが０ｘ２０００［バイト］であるとする。このとき、圧縮後のデータが保持可能なバンク数が０ｘ２０００／０ｘ１０００＝２となるため、最小バンク数は、２に設定される。
【００３８】
たとえば、停止中供給バンク数が４であったとする。ＣＰＵ１０１は、ＰＭＵ１０２に、停止中供給バンク数として、４を指示する。指示を受けたＰＭＵ１０２は、指示された停止中供給バンク数４に相当する退避メモリ２２２のバンク０〜バンク３の電力を供給する準備を行い、供給を開始したらＣＰＵ１０１に通知する。通知を受け付けたＣＰＵ１０１は、メモリコントローラ２０６に退避処理を実行するように通知する。退避処理の終了後、ＣＰＵ１０１は、ＰＭＵ１０２付属のタイマー３０１に次回起動時間を設定する。さらに、ＣＰＵ１０１は、ＰＭＵ１０２に電力の供給を停止する指示を通知する。指示を受け付けたＰＭＵ１０２は、ＣＰＵ１０１と、ＲＯＭ２０１と、ＤＭＡ２０２と、シリアルＩ／Ｏ２０３〜メモリコントローラ２０６と、ＷｏｒｋＳＲＡＭ２２１との電力の供給を断ち、停止させる。
【００３９】
次に、タイマーに設定した次回起動時間が満了した後、ＰＭＵ１０２は、ＣＰＵ１０１と、ＲＯＭ２０１と、ＤＭＡ２０２と、シリアルＩ／Ｏ２０３〜メモリコントローラ２０６と、ＷｏｒｋＳＲＡＭ２２１との電力の供給を開始する。ＣＰＵ１０１は、起動後、退避メモリ２２２のデータをＷｏｒｋＳＲＡＭ２２１に転送することによりデータを復帰する復帰処理の実行をメモリコントローラ２０６に通知する。復帰処理の完了後、ＣＰＵ１０１は、ＰＭＵ１０２に指示を出し退避メモリ２２２の電力の供給を停止する。電力の供給の停止後、ＣＰＵ１０１は、通常の処理を行う。通常の処理として、ＣＰＵ１０１は、たとえば、センサー２３２から位置情報を取得して、取得した位置情報と、前回の位置情報とを用いて、前回からの移動距離を算出する。
【００４０】
（データ保持装置１００の機能）
次に、データ保持装置１００の機能について説明する。図４は、実施の形態１にかかるデータ保持装置の機能例を示すブロック図である。データ保持装置１００は、発電部４０１と、充電部４０２と、電力制御部４０３と、決定部４１１と、指示部４１２と、判断部４１３と、格納部４１４と、を含む。発電部４０１は、エナジーハーベスト１０４に相当する。充電部４０２は、バッテリ１０５に相当する。電力制御部４０３は、ＰＭＵ１０２に相当する。決定部４１１〜格納部４１４は、記憶装置に記憶されたプログラムをＣＰＵ１０１が実行することにより、決定部４１１〜格納部４１４の機能を実現する。記憶装置とは、具体的には、たとえば、図２に示したＲＯＭ２０１などである。また、データ保持装置１００は、記憶部１０６にアクセス可能である。
【００４１】
決定部４１１は、充電部４０２によって充電された電力の残量に基づいて、電源からＣＰＵ１０１への電力の供給が遮断されている間に記憶部１０６が保持可能なデータ量を決定する。電源は、充電部４０２でもよいし、他の電源として一次電池でもよい。たとえば、決定部４１１は、充電部４０２から充電された電力の残量と、予め指定された閾値とを比較して、電力の残量が閾値以上であれば保持可能なデータ量を大きく決定し、電力の残量が閾値未満であれば保持可能なデータ量を小さく決定する。
【００４２】
また、決定部４１１は、動作停止時の充電部４０２にて充電された電力の残量を記憶しておく。そして、決定部４１１は、記憶した前回動作停止時の充電部４０２から充電された電力の残量と今回動作停止時の充電部４０２にて充電された電力の残量の差と、予め指定された閾値とを比較して、保持可能なデータ量を決定してもよい。
【００４３】
また、決定部４１１は、充電部４０２によって充電された電力の残量とＣＰＵ１０１への電力の供給が遮断されてから復帰するまでの時間間隔とに基づいて、保持可能なデータ量を決定してもよい。たとえば、決定部４１１は、電力の残量の差を、ＣＰＵ１０１への電力の供給が遮断されてから復帰するまでの時間間隔で除算した結果と閾値とを比較して、保持可能なデータ量を決定してもよい。なお、決定されたデータ量は、ＷｏｒｋＳＲＡＭ２２１等の記憶領域に記憶される。
【００４４】
指示部４１２は、記憶部１０６の記憶領域のうちの決定部４１１が決定した保持可能なデータ量に相当する記憶領域４２１に、ＣＰＵ１０１への電力の供給が遮断されている間継続して充電部４０２から電力を供給するように電力制御部４０３に指示する。たとえば、決定部４１１によって決定された保持可能なデータ量が、０ｘ１０００［バイト］であるとする。このとき、指示部４１２は、記憶部１０６の記憶領域のうち、０ｘ１０００［バイト］の記憶領域に、充電部４０２から電力を供給するように電力制御部４０３に指示する。
【００４５】
判断部４１３は、決定部４１１によって決定された保持可能なデータ量がＣＰＵ１０１への電力の供給が遮断されている間に保持すべきデータのデータ量以下であるかを判断する。ＣＰＵ１０１への電力の供給が遮断されている間に保持すべきデータのデータ量は、たとえば、データ保持装置１００の管理者により予め指定される値である。アプリの開発者は、指定されたデータ量となるデータを動作停止時までに生成されるようにアプリを開発する。なお、判断結果は、ＷｏｒｋＳＲＡＭ２２１等の記憶領域に記憶される。
【００４６】
格納部４１４は、記憶部１０６の記憶領域のうちの決定部４１１によって決定された保持可能なデータ量に相当する記憶領域４２１に、保持すべきデータを格納する。また、格納部４１４は、記憶領域４２１に、保持すべきデータが保持可能なデータ量以下に圧縮された圧縮データを格納してもよい。
【００４７】
図５は、充電率と停止中供給バンク数の関係の一例を示す説明図である。グラフ５０１は、充電率と時刻との関係を示す。グラフ５０１の横軸は、時刻を示す。グラフ５０１の縦軸は、電力の残量を示す。時刻ｔ１〜ｔ２間と、時刻ｔ３〜ｔ４間と、時刻ｔ５〜ｔ６間と、時刻ｔ７〜ｔ８間とが、データ保持装置１００が動作する時間である。一方、時刻ｔ２〜ｔ３間と、時刻ｔ４〜ｔ５間と、時刻ｔ６〜ｔ７間とが、データ保持装置１００の動作が停止する時間である。このように、データ保持装置１００は、間欠動作を行う。そして、ＣＰＵ１０１は、前回の電力の残量と今回の電力の残量との差に基づいて、停止中供給バンク数を決定する。
【００４８】
具体的に、エナジーハーベスト１０４による発電量が大きくなり、結果、電力の残量の差が小さければ、ＣＰＵ１０１は、停止中供給バンク数を増加し、停止中供給バンクにデータを退避するための圧縮、伸長処理を減らす。一方、エナジーハーベスト１０４による発電量が小さくなり、結果、電力の残量の差が大きくなれば、ＣＰＵ１０１は、停止中供給バンク数を減少し、電力消費を抑制する。エナジーハーベスト１０４による発電量が大きくも小さくもない中程度であり、電力の残量が中程度であれば、ＣＰＵ１０１は、停止中供給バンク数を維持する。
【００４９】
また、電力の残量の差が小さい、中程度、大きいという判断については、ＣＰＵ１０１は、たとえば、電力の残量の差とデータ保持装置１００の管理者により指定された閾値とを比較して、小さい、中程度、大きいという判断をしてもよい。たとえば、ＣＰＵ１０１は、電力の残量の差が閾値１未満であれば電力の残量の差が小さいと判断する。また、ＣＰＵ１０１は、電力の残量の差が閾値１以上であり、かつ、電力の残量の差が閾値１より大きい閾値２未満であれば電力の残量の差が中程度であると判断する。さらに、ＣＰＵ１０１は、電力の残量の差が閾値２以上であれば電力の残量の差が大きいと判断する。
【００５０】
本実施の形態では、ＣＰＵ１０１は、小さい、中程度、大きいという３通りの判断結果を得るが、閾値をさらに設けて、より多い判断結果を得てもよい。たとえば、閾値１よりも小さい閾値１＿０を設けておき、ＣＰＵ１０１は、電力の残量の差が閾値１＿０未満であれば、停止中供給バンク数を２増やし、電力の残量の差が閾値１＿０以上閾値１未満であれば、停止中供給バンク数を２増やすとしてもよい。このように、複数段階の閾値を設けて判断することにより、データ保持装置１００は、電力の残量の差が急に変換しても停止中供給バンク数を電力の残量の差に応じて変化させることができる。
【００５１】
以下、各時刻における停止中供給バンク数の変動について説明する。時刻ｔ２にて、データ保持装置１００の動作が停止する前に、停止中供給バンク数を４に決定したとする。そして、時刻ｔ２〜ｔ４間のエナジーハーベスト１０４による発電量が大きくなり、結果、電力の残量が大きくなったとする。時刻ｔ４にて、ＣＰＵ１０１は、前回の電力の残量と今回の電力の残量との差が小さいと判断し、停止中供給バンク数を１増加して５に決定する。
【００５２】
次に、時刻ｔ４〜ｔ６間のエナジーハーベスト１０４による発電量が中程度であり、結果、電力の残量が中程度になったとする。時刻ｔ６にて、ＣＰＵ１０１は、前回の電力の残量と今回の電力の残量との差が中程度であると判断し、停止中供給バンク数を維持して５に決定する。
【００５３】
続けて、時刻ｔ６〜ｔ８間のエナジーハーベスト１０４による発電量が小さくなり、結果、電力の残量が小さくなったとする。時刻ｔ８にて、ＣＰＵ１０１は、前回の電力の残量と今回の電力の残量との差が大きいと判断し、停止中供給バンク数を１減少して４に決定する。
【００５４】
前回の電力の残量と今回の電力の残量との差が、大きい、中程度、小さいという判断基準について、たとえば、ＣＰＵ１０１は、前回の電力の残量と今回の電力の残量との差と、データ保持装置１００の管理者によって予め指定された閾値との比較により判断する。また、前回の電力の残量は、動作停止時点から見て、動作開始時点の電力の残量でもよいし、１つ前の動作停止時点の電力の残量でもよい。
【００５５】
たとえば、時刻ｔ６における今回の電力の残量がｃ６である場合、ＣＰＵ１０１は、前回の電力の残量として、動作開始時点ｔ５の電力の残量ｃ５を採用してもよいし、１つ前の動作停止時点ｔ４の電力の残量ｃ４を採用してもよい。前回の電力の残量が動作開始時点の電力の残量か、１つ前の動作停止時点の電力の残量のいずれかを採用するのかに応じて、データ保持装置１００の管理者は、閾値の大きさを変えて指定してもよい。本実施の形態では、前回の電力の残量として１つ前の動作停止時点の電力の残量を採用した場合について説明する。
【００５６】
図６は、充電率とメモリバンク数の関係の他の例を示す説明図である。図６では、データ保持装置１００の動作停止中に消費する電力量より、エナジーハーベスト１０４の発電量の方が大きくなる場合が存在するときについて説明する。グラフ６０１は、充電率と時刻との関係を示す。グラフ６０１の横軸は、時刻を示す。グラフ６０１の縦軸は、電力の残量を示す。時刻ｔ１〜ｔ８におけるデータ保持装置１００の動作状態は、図５に説明した状態と同一である。
【００５７】
図６では、時刻ｔ２〜ｔ３において、電力の残量が増加して、時刻ｔ４にて、ＣＰＵ１０１が、停止中供給バンク数が増加する。図５の例では、停止中供給バンク数が最小バンク数になった後、停止中供給バンク数が増加することはないが、図６の例では、停止中供給バンク数が最小バンク数になった後、停止中供給バンク数が増加することがある。
【００５８】
図７は、記憶内容の退避の一例を示す説明図である。図７では、ＷｏｒｋＳＲＡＭ２２１に割り当てられたアドレス領域が０ｘ２０００００００から０ｘ２０００ＦＦＦＦであるとする。さらに、ＷｏｒｋＳＲＡＭ２２１を１６バンクに均等に分割したとする。したがって、１バンクの記憶量は、０ｘ１０００となる。たとえば、１個目のバンクのアドレス領域は、０ｘ００００〜０ｘ０ＦＦＦとなる。図７では、１個目のバンクのアドレス領域を、「０ｘ０ＸＸＸ」として示す。同様に、図７では、２個目のバンクのアドレス領域を、「０ｘ１ＸＸＸ」として示し、…、１６個目のバンクのアドレス領域を、「０ｘＦＸＸＸ」として示す。また、以下、アドレス領域が「０ｘｎＸＸＸ」となるバンクを、「バンク０ｘｎＸＸＸ」と称する。ｎは、０からＦまでを示す。
【００５９】
図７では、各バンクの下位１６ビットのアドレスを表示する。データ保持装置１００は、最近アクセスのあったデータを退避メモリ２２２に退避する。最近アクセスのあったデータを判別するために、メモリコントローラ２０６は、アクセスのあったバンクにアクセスタグを付与し、アクセスタグに基づいてデータを退避する。ここで、アクセスタグとは、アクセスが行われた順序を示す情報である。本実施の形態では、数字が小さいアクセスタグが付与されたバンク程、最近アクセスされたバンクであることを示す。本実施の形態では、アクセスタグの値が０であれば、最近アクセスされていないバンクであるとし、アクセスタグの値が１以上であれば、最近アクセスされたバンクであるとする。１以上の値となるアクセスタグを付与するバンクの数を、以下、「有効アクセスタグ数」と呼称する。
【００６０】
以下、図７（Ａ）〜図７（Ｄ）を用いて、アクセスのあったバンクへのタグの付与の一例と、タグに基づくデータの退避の一例と、データの復帰の一例について説明する。また、図７の例では、停止中供給バンク数が４であるとする。また、有効アクセスタグ数も４とする。さらに、図７では、退避メモリ２２２の各バンクの記憶量を、０ｘ１０００とする。
【００６１】
図７（Ａ）では、値が「１」であるアクセスタグが付与されたバンク０ｘ８ＸＸＸが最後にアクセスされたことを示す。さらに、図７（Ａ）では、値が「２」であるアクセスタグが付与されたバンク０ｘＥＸＸＸが、バンク０ｘ８ＸＸＸの一つ前にアクセスされたことを示す。同様に、値が「３」であるアクセスタグが付与されたバンク０ｘ３ＸＸＸが、バンク０ｘＥＸＸＸの一つ前にアクセスされ、値が「４」であるアクセスタグが付与されたバンク０ｘ４ＸＸＸが、バンク０ｘ３ＸＸＸの一つ前にアクセスされたことを示す。
【００６２】
図７（Ａ）の状態で、バンク０ｘ０ＸＸＸにアクセスがあったとする。アクセス後の状態が、図７（Ｂ）の状態である。０ｘ０ＸＸＸにアクセスがあった場合、メモリコントローラ２０６は、バンク０ｘ０ＸＸＸに値が「１」であるアクセスタグを付与する。続けて、メモリコントローラ２０６は、バンク０ｘ８ＸＸＸに値が「２」であるアクセスタグを付与し、バンク０ｘＥＸＸＸに値が「３」であるアクセスタグを付与し、バンク０ｘ３ＸＸＸに値が「４」であるアクセスタグを付与する。
【００６３】
図７（Ｂ）の状態で、データ保持装置１００の動作停止の前に行われる退避処理が実行された結果の状態を、図７（Ｃ）にて示す。退避処理において、メモリコントローラ２０６は、退避メモリ２２２のバンク０にＷｏｒｋＳＲＡＭ２２１のバンク０ｘ０ＸＸＸの記憶内容を書き込む。さらに、メモリコントローラ２０６は、退避メモリ２２２のバンク１にＷｏｒｋＳＲＡＭ２２１のバンク０ｘ３ＸＸＸの記憶内容を書き込む。さらに、メモリコントローラ２０６は、退避メモリ２２２のバンク２にＷｏｒｋＳＲＡＭ２２１のバンク０ｘ８ＸＸＸの記憶内容を書き込み、退避メモリ２２２のバンク３にＷｏｒｋＳＲＡＭ２２１のバンク０ｘＥＸＸＸの記憶内容を書き込む。
【００６４】
図７（Ｂ）では、退避処理を行う際、保持すべきデータのデータ量が０ｘ４０００［バイト］であり、退避メモリ２２２のバンク０〜３のデータ量が０ｘ４０００［バイト］であり、２つのデータ量が一致することから、保持すべきデータがそのまま格納できる。もし、保持すべきデータのデータ量が、保持可能なデータ量より大きい場合、ＣＰＵ１０１は、保持すべきデータを圧縮して、圧縮したデータを退避メモリ２２２のバンク０〜３に書き込む。保持すべきデータのデータ量は、データ保持装置１００の管理者により予め指定される値である。本実施の形態では、保持すべきデータのデータ量が保持可能なバンク数を閾値３とする。したがって、ＣＰＵ１０１は、停止中供給バンク数が閾値３未満であれば、保持すべきデータを圧縮する。
【００６５】
また、圧縮アルゴリズムはどのようなアルゴリズムでもよいため、ＣＰＵ１０１は、圧縮にかかる時間が短く圧縮率が低い第１の圧縮アルゴリズムか、圧縮にかかる時間が長く圧縮率が高い第２の圧縮アルゴリズムかのいずれかを実行してもよい。具体的に、停止中供給バンク数が閾値３未満であり、閾値３より小さい閾値３＿１より大きければ、ＣＰＵ１０１は、第１の圧縮アルゴリズムを用いて保持すべきデータを圧縮する。一方、停止中供給バンク数が閾値３＿１より小さければ、ＣＰＵ１０１は、第２の圧縮アルゴリズムを用いて保持すべきデータを圧縮する。データを伸長する際にどの圧縮アルゴリズムを用いるかについて、ＣＰＵ１０１は、停止中供給バンク数から、どの圧縮アルゴリズムが使用されたかを判断することができる。これにより、データ保持装置１００は、停止中供給バンク数が閾値３未満であり閾値３＿１より大きい場合、圧縮にかかる処理負荷を低減させることができる。
【００６６】
図７（Ｃ）の後、データ保持装置１００の動作開始時に行われる復帰処理が行われた結果の状態を、図７（Ｄ）にて示す。復帰処理において、メモリコントローラ２０６は、退避メモリ２２２のバンク０の記憶内容をＷｏｒｋＳＲＡＭ２２１のバンク０ｘ０ＸＸＸに書き込む。さらに、メモリコントローラ２０６は、退避メモリ２２２のバンク１の記憶内容をＷｏｒｋＳＲＡＭ２２１のバンク０ｘ３ＸＸＸに書き込む。さらに、メモリコントローラ２０６は、退避メモリ２２２のバンク２の記憶内容をＷｏｒｋＳＲＡＭ２２１のバンク０ｘ８ＸＸＸに書き込み、退避メモリ２２２のバンク３の記憶内容をＷｏｒｋＳＲＡＭ２２１のバンク０ｘＥＸＸＸに書き込む。
【００６７】
続けて、図５〜図７にて説明した動作を行うフローチャートを、図８〜図１４を用いて説明する。
【００６８】
図８は、アクセス時の処理手順の一例を示すフローチャートである。アクセス時の処理は、メモリコントローラ２０６が、ＷｏｒｋＳＲＡＭ２２１のバンクごとに、アクセスがあったバンクにアクセスタグを行う処理である。
【００６９】
また、メモリコントローラ２０６は、ＷｏｒｋＳＲＡＭ２２１のバンクごとに、アクセスタグと前回アクセスフラグを有する。前回アクセスフラグは、前回のアクセス時に、該当のバンクにアクセスがあったか否かを示す情報である。本実施の形態では、アクセスフラグが０である場合、前回該当のバンクにアクセスがなかったことを示し、アクセスフラグが１である場合、前回該当のバンクにアクセスがあったことを示す。データ保持装置１００の起動時に、メモリコントローラ２０６は、ＷｏｒｋＳＲＡＭ２２１の各バンクのアクセスタグの値を０に設定しておき、前回アクセスフラグを０に設定しておく。
【００７０】
メモリコントローラ２０６は、ＷｏｒｋＳＲＡＭ２２１へのアクセス要求があったか否かを判断する（ステップＳ８０１）。ＷｏｒｋＳＲＡＭ２２１へのアクセス要求がない場合（ステップＳ８０１：Ｎｏ）、メモリコントローラ２０６は、アクセス要求があるまで待機し、再びステップＳ８０１の処理を実行する。ＷｏｒｋＳＲＡＭ２２１へのアクセス要求がある場合（ステップＳ８０１：Ｙｅｓ）、メモリコントローラ２０６は、アクセス要求のアクセス先が対象のバンクか否かを判断する（ステップＳ８０２）。アクセス要求のアクセス先が対象のバンク内でない場合（ステップＳ８０２：Ｎｏ）、メモリコントローラ２０６は、前回アクセスフラグを０に設定する（ステップＳ８０３）。ステップＳ８０３の実行終了後、メモリコントローラ２０６は、ステップＳ８０１の処理に移行する。
【００７１】
アクセス要求のアクセス先が対象のバンクである場合（ステップＳ８０２：Ｙｅｓ）、メモリコントローラ２０６は、前回アクセスフラグが０か否かを判断する（ステップＳ８０４）。前回アクセスフラグが０でない場合（ステップＳ８０４：Ｎｏ）、メモリコントローラ２０６は、ステップＳ８０１の処理に移行する。
【００７２】
前回アクセスフラグが０である場合（ステップＳ８０４：Ｙｅｓ）、メモリコントローラ２０６は、アクセスタグの値をインクリメントする（ステップＳ８０５）。次に、メモリコントローラ２０６は、前回アクセスフラグを１に設定する（ステップＳ８０６）。続けて、メモリコントローラ２０６は、アクセスタグの値が有効アクセスタグ数より大きいか否かを判断する（ステップＳ８０７）。アクセスタグの値が有効アクセスタグ数以下である場合（ステップＳ８０７：Ｎｏ）、メモリコントローラ２０６は、ステップＳ８０１の処理に移行する。
【００７３】
アクセスタグの値が有効アクセスタグ数より大きい場合（ステップＳ８０７：Ｙｅｓ）、メモリコントローラ２０６は、アクセスタグの値を０に設定する（ステップＳ８０８）。ステップＳ８０８の処理終了後、メモリコントローラ２０６は、ステップＳ８０１の処理に移行する。アクセス時の処理を実行することにより、データ保持装置１００は、最近アクセスがあったバンクをアクセスがあった順に記憶することができる。続けて、図９と図１０にて、動作停止処理のフローチャートを示す。
【００７４】
図９は、実施の形態１にかかる動作停止処理手順の一例を示すフローチャートである。動作停止処理は、間欠動作の停止前に行う処理である。また、動作停止処理は、ＣＰＵ１０１によって実行される。
【００７５】
ＣＰＵ１０１は、現在のバッテリ１０５の電力の残量を充電率測定回路１０３から取得する（ステップＳ９０１）。次に、ＣＰＵ１０１は、前回のバッテリ１０５の電力の残量を前回電力残量記憶レジスタ２１１から取得する（ステップＳ９０２）。続けて、ＣＰＵ１０１は、電力の残量の差を、前回のバッテリ１０５の電力の残量から現在のバッテリ１０５の電力の残量を減じた結果とする（ステップＳ９０３）。次に、ＣＰＵ１０１は、現在のバッテリ１０５の電力の残量を前回電力残量記憶レジスタ２１１に格納する（ステップＳ９０４）。続けて、ＣＰＵ１０１は、停止中供給バンク数決定処理を実行する（ステップＳ９０５）。停止中供給バンク数決定処理は、図１１にて後述する。
【００７６】
次に、ＣＰＵ１０１は、停止中供給バンク数が閾値３未満か否かを判断する（ステップＳ９０６）。停止中供給バンク数が閾値３未満である場合（ステップＳ９０６：Ｙｅｓ）、ＣＰＵ１０１は、退避するデータを圧縮する（ステップＳ９０７）。ステップＳ９０７の実行終了後、または停止中供給バンク数が閾値３以上である場合（ステップＳ９０６：Ｎｏ）、ＣＰＵ１０１は、メモリコントローラ２０６に、退避処理の実行を指示する（ステップＳ９０８）。次に、ＣＰＵ１０１は、ＰＭＵ１０２に、ＣＰＵ１０１および付属する周辺機器の電力の供給の遮断を指示する（ステップＳ９０９）。付属する周辺機器は、ＲＯＭ２０１〜メモリコントローラ２０６と、ＷｏｒｋＳＲＡＭ２２１とである。
【００７７】
ステップＳ９０９の処理終了後、ＣＰＵ１０１は、動作停止処理を終了する。動作停止処理を実行することにより、データ保持装置１００は、電力の残量に基づいて決定された停止中供給バンク数にデータを退避することができる。
【００７８】
図１０は、実施の形態１にかかる動作停止処理手順の他の例を示すフローチャートである。図１０に示すフローチャートのうち、ステップＳ１００１、ステップＳ１００２、ステップＳ１００４〜ステップＳ１００９の処理は、ステップＳ９０１、ステップＳ９０２、ステップＳ９０４〜ステップＳ９０９と同一であるため、説明を省略する。
【００７９】
ステップＳ１００２の処理実行後、ＣＰＵ１０１は、電力の残量の差を、前回のバッテリ１０５の電力の残量から現在のバッテリ１０５の電力の残量を減じた結果からデータ保持装置１００の停止時間で除算した結果とする（ステップＳ１００３）。ステップＳ１００３の処理実行後、ＣＰＵ１０１は、ステップＳ１００４の処理を実行する。
【００８０】
図１０にて示した動作停止処理を実行することにより、データ保持装置１００は、データ保持装置１００の停止時間を考慮して停止中供給バンク数を決定することができる。たとえば、第１の例が、データ保持装置１００の停止時間が２０［ｍｓ］であるときに、電力の残量の差が１０［ｍＡｈ］であったとする。また、第２の例が、データ保持装置１００の停止時間が１０［ｍｓ］であるときに、電力の残量の差が１０［ｍＡｈ］であったとする。
【００８１】
第１の例と比較して第２の例の方が電力の残量が急に減少したため、データ保持装置１００は、図１０に示した動作停止処理を実行することにより、第２の例において、電力消費をより抑制することができる。
【００８２】
図１１は、停止中供給バンク数決定処理手順の一例を示すフローチャートである。停止中供給バンク数決定処理は、電力の残量の差に基づいて、停止中供給バンク数を決定する処理である。また、停止中供給バンク数決定処理は、動作停止処理から呼び出される。
【００８３】
ＣＰＵ１０１は、電力の残量の差が閾値１未満か否かを判断する（ステップＳ１１０１）。電力の残量の差が閾値１未満である場合（ステップＳ１１０１：Ｙｅｓ）、ＣＰＵ１０１は、停止中供給バンク数を増加する（ステップＳ１１０２）。
【００８４】
電力の残量の差が閾値１以上である場合（ステップＳ１１０１：Ｎｏ）、ＣＰＵ１０１は、続けて、電力の残量の差が閾値２未満か否かを判断する（ステップＳ１１０３）。電力の残量の差が閾値２以上である場合（ステップＳ１１０３：Ｎｏ）、ＣＰＵ１０１は、さらに、現在の停止中供給バンク数が最小バンク数か否かを判断する（ステップＳ１１０４）。現在の停止中供給バンク数が最小バンク数でない場合（ステップＳ１１０４：Ｎｏ）、ＣＰＵ１０１は、停止中供給バンク数を減少する（ステップＳ１１０５）。
【００８５】
電力の残量の差が閾値２未満である場合（ステップＳ１１０３：Ｙｅｓ）、または、現在の停止中供給バンク数が最小バンク数である場合（ステップＳ１１０４：Ｙｅｓ）、停止中供給バンク数を維持することになり、ＣＰＵ１０１は、停止中供給バンク数を変更しない。ステップＳ１１０２の実行終了後、ステップＳ１１０５の実行終了後、ステップＳ１１０３：Ｙｅｓの場合、またはステップＳ１１０４：Ｙｅｓの場合、ＣＰＵ１０１は、ＰＭＵ１０２に、退避メモリ２２２への電力の供給開始を指示する（ステップＳ１１０６）。このように停止中供給バンク数決定処理を実行することにより、データ保持装置１００は、電力の残量の差が小さければデータ保持装置１００が停止中に保持可能なデータ量を大きくできる。また、データ保持装置１００は、電力の残量の差が大きければデータ保持装置１００が停止中供給バンク数を小さくして、消費電力を抑制することができる。
【００８６】
ここで、データ保持装置１００が動作停止処理に図９を適用して、閾値１を２［ｍＡｈ］とし、閾値２を５［ｍＡｈ］とした場合の具体例を説明する。電力の残量の差が正であれば、電力を消費したことを示す。また、電力の残量の差が負であれば、充電したことを示す。電力の残量の差が２［ｍＡｈ］未満であれば、電力の消費が小さいものとする。また、電力の残量の差が２［ｍＡｈ］以上であり、電力の残量の差が５［ｍＡｈ］未満であれば、電力の消費が中程度であるものとする。さらに、電力の残量の差が５［ｍＡｈ］以上であれば、電力の消費が大きいものとする。
【００８７】
たとえば、電力の残量の差が８［ｍＡｈ］であれば、ＣＰＵ１０１は、電力の消費が大きいと判断して、停止中供給バンク数を減少するように決定する。また、電力の残量の差が４［ｍＡｈ］であれば、ＣＰＵ１０１は、電力の消費が中程度であると判断して、停止中供給バンク数を維持するように決定する。電力の残量の差が１［ｍＡｈ］であれば、ＣＰＵ１０１は、電力の消費が小さいと判断して、停止中供給バンク数を増加するように決定する。さらに、電力の残量の差が−５［ｍＡｈ］であれば、ＣＰＵ１０１は、エナジーハーベスト１０４による発電量が大きいと判断して、停止中供給バンク数を増加するように決定する。
【００８８】
図１２は、退避処理手順の一例を示すフローチャートである。退避処理は、データを退避メモリ２２２に退避する処理である。また、退避処理は、メモリコントローラ２０６により実行される。
【００８９】
メモリコントローラ２０６は、変数ｉに１を設定する（ステップＳ１２０１）。次に、メモリコントローラ２０６は、変数ｉが有効アクセスタグ数以下か否かを判断する（ステップＳ１２０２）。変数ｉが有効アクセスタグ数以下である場合（ステップＳ１２０２：Ｙｅｓ）、メモリコントローラ２０６は、アクセスタグの値がｉであるバンクの記憶内容を、退避メモリ２２２に転送する（ステップＳ１２０３）。続けて、メモリコントローラ２０６は、アクセスタグの値がｉであるバンクのアドレスをアクセスタグの値と関連付けて記憶する（ステップＳ１２０４）。次に、メモリコントローラ２０６は、変数ｉをインクリメントする（ステップＳ１２０５）。ステップＳ１２０５の処理実行後、メモリコントローラ２０６は、ステップＳ１２０２の処理に移行する。
【００９０】
変数ｉが有効アクセスタグ数より大きい場合（ステップＳ１２０２：Ｎｏ）、メモリコントローラ２０６は、退避処理を終了する。退避処理を実行することにより、データ保持装置１００は、最近アクセスのあったデータを退避メモリ２２２に退避することができる。
【００９１】
図１３は、実施の形態１にかかる動作起動処理手順の一例を示すフローチャートである。実施の形態１にかかる動作起動処理は、間欠動作の起動時に行う処理である。また、動作起動処理は、ＣＰＵ１０１により実行される。
【００９２】
ＣＰＵ１０１は、停止中供給バンク数が閾値３未満か否かを判断する（ステップＳ１３０１）。停止中供給バンク数が閾値３未満である場合（ステップＳ１３０１：Ｙｅｓ）、ＣＰＵ１０１は、退避メモリの記憶内容を伸長する（ステップＳ１３０２）。ステップＳ１３０２の処理実行後、または、停止中供給バンク数が閾値３未満でない場合（ステップＳ１３０１：Ｎｏ）、ＣＰＵ１０１は、メモリコントローラ２０６に、復帰処理の実行を指示する（ステップＳ１３０３）。復帰処理については、図１４にて後述する。次に、ＣＰＵ１０１は、ＰＭＵ１０２に、退避メモリ２２２への電源の供給の遮断を指示する（ステップＳ１３０４）。ステップＳ１３０４の処理終了後、ＣＰＵ１０１は、動作起動処理を終了する。動作起動処理を実行することにより、データ保持装置１００は、退避してあった前回のデータをアプリに使わせることができる。
【００９３】
図１４は、復帰処理手順の一例を示すフローチャートである。復帰処理は、退避メモリ２２２に退避したデータをＷｏｒｋＳＲＡＭ２２１に復帰する処理である。また、復帰処理は、メモリコントローラ２０６によって実行される。
【００９４】
メモリコントローラ２０６は、変数ｉに１を設定する（ステップＳ１４０１）。次に、メモリコントローラ２０６は、変数ｉが有効アクセスタグ数以下か否かを判断する（ステップＳ１４０２）。変数ｉが有効アクセスタグ数以下である場合（ステップＳ１４０２：Ｙｅｓ）、メモリコントローラ２０６は、退避メモリ２２２にあるアクセスタグの値がｉである記憶内容を、ＷｏｒｋＳＲＡＭ２２１の関連付けたアドレスに転送する（ステップＳ１４０３）。次に、メモリコントローラ２０６は、変数ｉをインクリメントする（ステップＳ１４０４）。ステップＳ１４０４の処理実行後、メモリコントローラ２０６は、ステップＳ１４０２の処理に移行する。
【００９５】
変数ｉが有効アクセスタグ数以下でない場合（ステップＳ１４０２：Ｎｏ）、メモリコントローラ２０６は、復帰処理を終了する。復帰処理を実行することにより、データ保持装置１００は、退避してあった前回のデータを用いることができる。
【００９６】
図１５は、時刻と消費電力の関係を示す説明図である。図１５では、時刻と消費電力の関係を示すグラフ１５０１を用いて、データ保持装置１００の消費電力について説明する。グラフ１５０１の横軸は、時刻である。グラフ１５０１の縦軸は、消費電力である。また、グラフ１５０１の破線は、電力の残量の差が小さい場合の消費電力の時間変化を示す。同様に、グラフ１５０１の一点鎖線は、電力の残量の差が大きい場合の消費電力の時間変化を示す。
【００９７】
電力の残量の差が小さい場合において、データ保持装置１００は、時刻ｔ０〜時刻ｔ２にて、動作停止する。時刻ｔ２〜ｔ４にて、データ保持装置１００は、ＣＰＵ１０１への電力の供給と付属の周辺装置への電力の供給を開始する。時刻ｔ４〜ｔ５にて、データ保持装置１００は、動作中であり、アプリを実行する。時刻ｔ５〜ｔ７にて、データ保持装置１００は、ＣＰＵ１０１への電力の供給と付属の周辺装置への電力の供給を遮断する。
【００９８】
一方、電力の残量の差が大きい場合において、データ保持装置１００は、時刻ｔ０〜時刻ｔ１にて、動作停止する。時刻ｔ１〜ｔ３にて、データ保持装置１００は、ＣＰＵ１０１への電力の供給と付属の周辺装置への電力の供給を開始する。時刻ｔ３〜ｔ４にて、データ保持装置１００は、復帰処理を実行する。時刻ｔ４〜ｔ５にて、データ保持装置１００は、動作中であり、アプリを実行する。時刻ｔ５〜ｔ６にて、データ保持装置１００は、退避処理を実行する。時刻ｔ６〜ｔ８にて、データ保持装置１００は、ＣＰＵ１０１への電力の供給と付属の周辺装置への電力の供給を遮断する。
【００９９】
電力の残量の差が小さい場合、退避処理および復帰処理を行わないため、動作時間が時刻ｔ４〜ｔ５となり、データ保持装置１００は、消費電力を削減することができる。また、電力の残量の差が小さい場合、停止中供給バンク数が増加する分の消費電力が増加するが、閾値１を次のように指定することにより、停止中供給バンク数の増加に伴うバッテリ１０５の電力の残量の減少を打ち消すことができる。具体的には、データ保持装置１００の管理者は、閾値１を、データ保持装置１００が停止中の時間にエナジーハーベスト１０４により発電される電力の値に指定しておく。データ保持装置１００が停止中の時間にエナジーハーベスト１０４により発電される電力の値の取得例としては、たとえば、予め測定した結果を用いてもよいし、シミュレーションにより得られる値を用いてもよい。
【０１００】
また、データ保持装置１００の環境がエナジーハーベスト１０４により発電された電力が小さいときが多いと予測される環境であっても、データ保持装置１００の管理者は、閾値１を、退避処理および復帰処理にかかる消費電力に指定しておく。これにより、データ保持装置１００は、電力の残量の減少を抑制することができる。
【０１０１】
電力の残量の差が大きい場合、停止中供給バンク数が減少するため、データ保持装置１００は、消費電力を削減することができ、電力の残量の減少を抑制することができる。このように、データ保持装置１００は、電力の残量の差が小さくても大きくても、電力の残量の減少を抑制することができる。
【０１０２】
以上説明したように、データ保持装置１００によれば、エナジーハーベスト１０４の発電により蓄えられたバッテリ１０５の電力の残量に応じて遮断中の揮発性メモリに給電する記憶領域の大きさを変更する。これにより、データ保持装置１００は、エナジーハーベスト１０４からの発電量の不安定さを吸収して、エナジーハーベスト１０４からの発電量を有効活用できる。
【０１０３】
また、データ保持装置１００によれば、ＣＰＵ１０１への電力の供給が遮断されている間に保持すべきデータのデータ量以下であるかを判断する。そして、データ保持装置１００は、決定した保持可能なデータ量が保持すべきデータのデータ量以下であると判断した場合、決定した保持可能なデータ量に相当する記憶領域に、保持すべきデータが圧縮された圧縮データを格納する。これにより、データ保持装置１００は、ＣＰＵ１０１への電力の供給が遮断されている間に保持すべきデータを保持しつつ、ＣＰＵ１０１への電力の供給が遮断されている間に電力を供給する記憶領域を減らすため、消費電力が削減できる。消費電力が削減されることにより、データ保持装置１００は、バッテリ１０５の電力の残量の低下を抑制できる。
【０１０４】
また、データ保持装置１００によれば、エナジーハーベスト１０４の発電により蓄えられたバッテリ１０５の電力の残量と、ＣＰＵ１０１への電力の供給が遮断される時間とに基づいて、保持可能なデータ量を決定してもよい。これにより、データ保持装置１００は、ＣＰＵ１０１への電力の供給が遮断されている間に、電力の残量が急に変化した場合にも、保持可能なデータ量を電力の残量の変化に合わせて変化させることができる。
【０１０５】
（実施の形態２）
実施の形態２にかかるデータ保持装置は、エナジーハーベスト１０４によって発電された電力を蓄えるバッテリと、エナジーハーベスト１０４によって発電された電力を蓄えないバッテリとを有する。以下、図１６〜図１９を用いて、実施の形態２にかかるデータ保持装置について説明する。なお、実施の形態１において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
【０１０６】
図１６は、実施の形態２にかかるデータ保持装置のハードウェア構成例を示すブロック図である。実施の形態２にかかるデータ保持装置１６００は、ＬＳＩ２００内に、ＣＰＵ１０１〜電源制御回路２０７と、ＬＳＩ２００内に、充電率測定回路１６０１と、充電率測定回路１６０２と、を含む。さらに、データ保持装置１６００は、ＬＳＩ２００の外に、ＲＦ２３１と、センサー２３２と、エナジーハーベスト１０４と、メインバッテリ１６１１と、サブバッテリ１６１２と、を含む。ＣＰＵ１０１〜電源制御回路２０７と、充電率測定回路１６０１と、充電率測定回路１６０２とは、バス１０７でそれぞれ接続される。
【０１０７】
充電率測定回路１６０１は、メインバッテリ１６１１の電力の残量を測定する回路である。また、充電率測定回路１６０１は、前回電力残量記憶レジスタ１６２１を有する。前回電力残量記憶レジスタ１６２１には、前回測定した際のメインバッテリ１６１１の電力の残量が格納される。充電率測定回路１６０２は、サブバッテリ１６１２の電力の残量を測定する回路である。また、充電率測定回路１６０２は、前回電力残量記憶レジスタ１６２２を有する。前回電力残量記憶レジスタ１６２２には、前回測定した際のサブバッテリ１６１２の電力の残量が格納される。
【０１０８】
メインバッテリ１６１１およびサブバッテリ１６１２は、電力を蓄える装置である。メインバッテリ１６１１は、充放電を繰り返すことができる二次電池でもよいし、充電を行わず放電のみを行う一次電池でもよい。サブバッテリ１６１２は、エナジーハーベスト１０４により発電された電力を蓄える。メインバッテリ１６１１とサブバッテリ１６１２とに分けることにより、データ保持装置１６００は、メインバッテリ１６１１の電力の残量がなくなっても、エナジーハーベスト１０４により発電された電力により退避したデータを保持し続けることができる。退避したデータを保持し続けた結果、データ保持装置１６００の管理者が退避したデータを回収できる可能性を高めることができる。
【０１０９】
（データ保持装置１６００の機能）
次に、データ保持装置１６００の機能について説明する。図１７は、実施の形態２にかかるデータ保持装置の機能例を示すブロック図である。データ保持装置１６００は、発電部４０１と、充電部４０２と、電池１７０１と、電力制御部１７０２と、決定部１７０３と、指示部１７０４と、判断部４１３と、格納部４１４と、を有する。電池１７０１は、メインバッテリ１６１１に相当する。充電部４０２は、サブバッテリ１６１２に相当する。電池１７０１は、ＣＰＵ１０１へ電力を供給する。
【０１１０】
電力制御部１７０２は、充電部４０２からの電力の供給を制御するとともに、電池１７０１からの電力の供給を制御する。
【０１１１】
決定部１７０３は、充電部４０２から充電された電力の残量と電池１７０１の電力の残量と基づいて、充電部４０２および電池１７０１からＣＰＵ１０１への電力の供給が遮断されている間に記憶部１０６が保持可能なデータ量を決定する。たとえば、決定部１７０３は、充電部４０２から充電された電力の残量と電池１７０１の電力の残量との合計と、閾値１や閾値２と比較して、保持可能なデータ量を決定する。また、決定部１７０３は、電池１７０１の電力の残量が閾値０未満となった場合、保存可能なデータ量を、最小バンク数が記憶するデータ量としてもよい。閾値０は、データ保持装置１６００の管理者によって指定される値である。たとえば、閾値０は、データ保持装置１６００の１回分の動作にかかる電力に指定されてもよいし、データ保持装置１６００の数回分の動作にかかる電力に指定されてもよい。
【０１１２】
指示部１７０４は、記憶部１０６の記憶領域のうちの決定部１７０３が決定したデータ量に相当する記憶領域４２１に、ＣＰＵ１０１への電力の供給が遮断されている間継続して充電部４０２から電力を供給するように電力制御部４０３に指示する。
【０１１３】
続けて、データ保持装置１６００が行うフローチャートを、図１８、図１９を用いて説明する。実施の形態２にかかるアクセス時の処理と、停止中供給バンク数決定と、退避処理と、復帰処理とは、実施の形態１にかかる同名の処理と同一であるため、説明を省略する。
【０１１４】
図１８は、実施の形態２にかかる動作停止処理手順の一例を示すフローチャートである。実施の形態２にかかる動作停止処理のうちの、ステップＳ１８０７〜ステップＳ１８１１の処理は、図９に示すステップＳ９０５〜ステップＳ９０９の処理と同一であるので、説明を省略する。また、図１８に示すフローチャートは、図９に示したフローチャートにて示した処理を適用した処理だが、図１０に示したフローチャートにて示した処理を適用してもよい。
【０１１５】
ＣＰＵ１０１は、現在のメインバッテリ１６１１および現在のサブバッテリ１６１２の電力の残量を充電率測定回路１６０１、１６０２から取得する（ステップＳ１８０１）。次に、ＣＰＵ１０１は、現在のメインバッテリ１６１１の電力の残量が閾値０未満か否かを判断する（ステップＳ１８０２）。現在のメインバッテリ１６１１の電力の残量が閾値０未満である場合（ステップＳ１８０２：Ｙｅｓ）、ＣＰＵ１０１は、停止中供給バンク数を最小バンク数に設定する（ステップＳ１８０３）。ステップＳ１８０３の実行終了後、ＣＰＵ１０１は、ステップＳ１８０９に移行する。
【０１１６】
現在のメインバッテリ１６１１の電力の残量が閾値０以上である場合（ステップＳ１８０２：Ｎｏ）、ＣＰＵ１０１は、前回のメインバッテリ１６１１および前回のサブバッテリ１６１２の電力の残量を前回電力残量記憶レジスタ１６２１、１６２２から取得する（ステップＳ１８０４）。
【０１１７】
続けて、ＣＰＵ１０１は、電力の残量の差を、前回のメインバッテリ１６１１および前回のサブバッテリ１６１２の電力の残量の加算結果から、現在のメインバッテリ１６１１および現在のサブバッテリ１６１２の電力の残量の加算結果を減じた値とする（ステップＳ１８０５）。次に、ＣＰＵ１０１は、現在のメインバッテリ１６１１および現在のサブバッテリ１６１２の電力の残量を前回電力残量記憶レジスタ１６２１、１６２２に格納する（ステップＳ１８０６）。ステップＳ１８０６の終了後、ＣＰＵ１０１は、ステップＳ１８０７の処理に移行する。実施の形態２にかかる動作停止処理を実行することにより、データ保持装置１６００は、メインバッテリ１６１１の電力の残量が小さい場合、停止中供給バンク数を強制的に最小バンク数にして、消費電力を抑制することができる。
【０１１８】
図１９は、実施の形態２にかかる動作起動処理手順の一例を示すフローチャートである。実施の形態２にかかる動作起動処理のうちの、ステップＳ１９０３〜ステップＳ１９０５の処理は、図１３に示すステップＳ１３０２〜ステップＳ１３０４の処理と同一であるので、説明を省略する。
【０１１９】
ＣＰＵ１０１は、現在のメインバッテリ１６１１の電力の残量を充電率測定回路１６０１から取得する（ステップＳ１９０１）。次に、ＣＰＵ１０１は、停止中供給バンク数が閾値３未満、または現在のメインバッテリ１６１１の電力の残量が閾値０未満か否かを判断する（ステップＳ１９０２）。停止中供給バンク数が閾値３未満、または現在のメインバッテリ１６１１の電力の残量が閾値０未満である場合（ステップＳ１９０２：Ｙｅｓ）、ＣＰＵ１０１は、ステップＳ１９０３の処理に移行する。
【０１２０】
停止中供給バンク数が閾値３以上であり、かつ現在のメインバッテリ１６１１の電力の残量が閾値０以上である場合（ステップＳ１９０２：Ｎｏ）、ＣＰＵ１０１は、ステップＳ１９０４の処理に移行する。動作起動処理を実行することにより、データ保持装置１６００は、退避してあった前回のデータをアプリに使わせることができる。
【０１２１】
以上説明したように、データ保持装置１６００によれば、メインバッテリ１６１１の電力の残量がなくなったとしても、退避メモリ２２２のデータをサブバッテリ１６１２で維持し続けることができる。維持し続けた結果、データ保持装置１６００の管理者が退避したデータを回収できる可能性を高めることができる。
【０１２２】
なお、本実施の形態１、２で説明したデータ保持方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本データ保持プログラムは、ハードディスク、フレキシブルディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本データ保持プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１２３】
また、本実施の形態１、２で説明したＰＭＵ１０２、充電率測定回路１０３、記憶部１０６、メモリコントローラ２０６は、スタンダードセルやストラクチャードＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）などの特定用途向けＩＣ（以下、単に「ＡＳＩＣ」と称す。）やＦＰＧＡなどのＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）によっても実現することができる。
【０１２４】
上述した実施の形態１、２に関し、さらに以下の付記を開示する。
【０１２５】
（付記１）自装置を制御するプロセッサと、
前記自装置が置かれた環境に応じて得られるエネルギーを用いて発電する発電部からの電力を充電する充電部と、
前記充電部からの電力の供給が遮断されると記憶内容の一部または全部が失われる記憶領域を有する記憶部と、
前記充電部からの電力の供給を制御する電力制御部と、を有し、
前記プロセッサは、
前記充電部によって充電された電力の残量に基づいて、電源から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定し、前記記憶部の記憶領域のうちの決定した前記保持可能なデータ量に相当する記憶領域に、前記プロセッサへの電力の供給が遮断されている間継続して前記充電部から電力を供給するように前記電力制御部に指示することを特徴とするデータ保持装置。
【０１２６】
（付記２）前記プロセッサは、
決定した前記保持可能なデータ量が前記記憶部に記憶されているデータのうちの保持すべきデータのデータ量未満であると判断した場合、決定した前記保持可能なデータ量に相当する記憶領域に、前記保持すべきデータを前記保持可能なデータ量以下になるように圧縮した圧縮データを格納することを特徴とする付記１に記載のデータ保持装置。
【０１２７】
（付記３）前記プロセッサは、
前記充電部によって充電された電力の残量と前記プロセッサへの電力の供給が遮断されてから復帰するまでの時間間隔とに基づいて、電源から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定することを特徴とする付記１または２に記載のデータ保持装置。
【０１２８】
（付記４）電力を供給する電池をさらに有し、
前記電力制御部は、
前記充電部からの電力の供給を制御するとともに、前記電池からの電力の供給を制御し、
前記プロセッサは、
前記充電部によって充電された電力の残量と前記電池に蓄えられた電力の残量と基づいて、前記充電部および前記電池から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定し、前記記憶部の記憶領域のうちの決定した前記保持可能なデータ量に相当する記憶領域に、前記プロセッサへの電力の供給が遮断されている間継続して前記充電部から電力を供給するように前記電力制御部に指示することを特徴とする付記１〜３のいずれか一つに記載のデータ保持装置。
【０１２９】
（付記５）自装置を制御するプロセッサと、前記自装置が置かれた環境に応じて得られるエネルギーを用いて発電する発電部からの電力を充電する充電部と、前記充電部からの電力の供給が遮断されると記憶内容の一部または全部が失われる記憶領域を有する記憶部と、前記充電部からの電力の供給を制御する電力制御部と、を有するデータ保持装置が、
前記プロセッサにより、前記充電部によって充電された電力の残量に基づいて、電源から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定し、
前記プロセッサにより、前記記憶部の記憶領域のうちの決定した前記保持可能なデータ量に相当する記憶領域に、前記充電部から前記プロセッサへの電力の供給が遮断されている間継続して前記充電部から電力を供給するように前記電力制御部に指示する、
処理を実行することを特徴とするデータ保持方法。
【符号の説明】
【０１３０】
１００、１６００  データ保持装置
１０１  ＣＰＵ
１０２  ＰＭＵ
１０４  エナジーハーベスト
１０５  バッテリ
１０６  記憶部
４０１  発電部
４０２  充電部
４０３、１７０２  電力制御部
４１１、１７０３  決定部
４１２、１７０４  指示部
４１３  判断部
４１４  格納部
１６１１  メインバッテリ
１６１２  サブバッテリ
１７０１  電池
【図１】
2014137643.tif 000003
【図２】
2014137643.tif 000004
【図３】
2014137643.tif 000005
【図４】
2014137643.tif 000006
【図５】
2014137643.tif 000007
【図６】
2014137643.tif 000008
【図７】
2014137643.tif 000009
【図８】
2014137643.tif 000010
【図９】
2014137643.tif 000011
【図１０】
2014137643.tif 000012
【図１１】
2014137643.tif 000013
【図１２】
2014137643.tif 000014
【図１３】
2014137643.tif 000015
【図１４】
2014137643.tif 000016
【図１５】
2014137643.tif 000017
【図１６】
2014137643.tif 000018
【図１７】
2014137643.tif 000019
【図１８】
2014137643.tif 000020
【図１９】
2014137643.tif 000021