以下に添付図面を参照して、開示のデータ保持装置、およびデータ保持方法の実施の形態を詳細に説明する。
(実施の形態1)
図1は、実施の形態1にかかるデータ保持装置の動作例を示す説明図である。データ保持装置100は、プロセッサ(以下、CPU)101と、PMU(Power Management Unit)102と、充電率測定回路103と、エナジーハーベスト104と、バッテリ105と、記憶部106と、を含む。CPU101〜充電率測定回路103と、記憶部106とは、それぞれバス107で接続される。
CPU101は、バッテリ105からの電力が供給され、データ保持装置100の全体の制御を司る演算処理装置である。PMU102は、バッテリ105からの電力の供給を制御する装置である。図1の例では、PMU102は、CPU101の電力の供給を遮断し、CPU101の動作を停止させる。充電率測定回路103は、バッテリ105の電力の残量を測定する回路である。エナジーハーベスト104は、データ保持装置100が置かれた環境に応じて得られるエネルギーを用いて発電する装置である。具体的に、エナジーハーベスト104は、データ保持装置100の設置箇所における環境、たとえば、光、振動、温度、無線電波(受信電波)などのエネルギーに基づき発電を行う。バッテリ105は、電力を蓄える装置である。また、バッテリ105は、エナジーハーベスト104により発電された電力を蓄える。記憶部106は、バッテリ105からの電力の供給が遮断されると記憶内容の一部または全部が失われる記憶領域を有する揮発性メモリである。
データ保持装置100は、データを保持するコンピュータである。具体的に、データ保持装置100は、動作開始、動作停止という間欠動作を行いながら省電力化を図る。そして、データ保持装置100は、動作停止中に、データ保持装置100上で実行されるアプリケーションソフトウェアの結果となるデータを保持する。また、データ保持装置100の動作停止は、CPU101への電力の供給と付属の周辺装置への電力の供給を遮断することとする。以下、アプリケーションソフトウェアを、「アプリ」と称する。再び動作開始となる際に、データ保持装置100は、保持したデータをアプリに提供することにより、アプリは、前回動作した際の結果を用いて、高精度な処理を行うことができる。
アプリは、たとえば、ナビゲーションアプリや、数値計算アプリ等である。アプリがナビゲーションアプリであれば、ナビゲーションアプリは、データ保持装置100がアクセス可能なGPS(Global Positioning System)受信器により取得した情報に基づいて、現在地の位置情報を算出する。ここで、毎回GPS受信器から情報を取得すると消費電力が大きくなるため、ナビゲーションアプリは、データ保持装置100に含まれる加速度センサーの積分値から現在地の位置情報を算出し、時々GPS受信器から情報を取得して、現在地の位置情報を補正する。
たとえば、ナビゲーションアプリは、データ保持装置100の動作停止中に、GPS受信器からの情報により算出された現在地の位置情報を保持する。そして、ナビゲーションアプリは、データ保持装置100が動作停止した後に再び動作開始した時点で、保持した現在地の位置情報と、加速度センサーの積分値に基づいて、再び現在地の位置情報を算出する。このとき、保持する現在地の位置情報や、移動方向を示すベクトル情報は、詳細に持っていた方が、次回GPS受信器から取得した情報を用いて補正する時に、誤差が少なくなるが、データ量が増える。一方、保持すべきデータのデータ量を、有効桁を減らす等して減らすと、消費電力は小さくなるが、位置情報やベクトル情報の精度は悪くなる。なお、保持すべきデータは、データ保持装置100に内蔵のセンサーから取得されたデータでもよいし、他の装置から受信したデータでもよいし、センサーから取得されたデータまたは他の装置から受信したデータを加工したデータでもよい。
データ保持装置100の動作停止中にデータを保持する方法として、下記2つの方法がある。1つ目の方法は、書き込み可能な不揮発性メモリにデータを格納する方法である。2つ目の方法は、データ保持装置100の動作停止中にも揮発性メモリに電力を供給し続けておき、データを保持する方法がある。本実施の形態では、2つ目の方法を採用する。不揮発性メモリより揮発性メモリの方が、アクセス速度が速いため、2つ目の方法は、1つ目の方法に比べて、アクセス速度を速くすることができる。
ここで、エナジーハーベスト104は、環境に応じて得られるエネルギーに基づき発電を行うため、アプリを長時間動作させることができる。その一方で、エナジーハーベスト104は、発電量が環境に左右するため、エナジーハーベスト104の発電量が不安定となり、エナジーハーベスト104によって発電された電力を有効活用できない場合がある。たとえば、充電量が少ない場合を想定して、CPU101への電力を遮断している間に記憶部106に電力を供給する記憶領域の大きさを設定することになり、エナジーハーベスト104によって発電された電力が有効活用されない場合がある。また、データのサイズが、CPU101への電力を遮断している間に記憶部106に電力を供給する記憶領域より大きければ圧縮して保持することになり、圧縮にかかる消費電力が増大する。
そこで、CPU101は、バッテリ105の電力の残量に基づいて、バッテリ105からCPU101への電力の供給が遮断されている間に、記憶部106が保持可能なデータ量を決定する。これにより、データ保持装置100は、エナジーハーベスト104の発電量が不安定さを吸収して、エナジーハーベスト104の発電量を有効活用できる。以下、実施の形態1において、バッテリ105の電力の残量を、単に、「電力の残量」と記述する場合がある。
具体的に、CPU101は、電力の残量が大きければ、保持可能なデータ量を大きくし、電力の残量が小さければ、保持可能なデータ量を小さくする。また、データ保持装置100は、前回起動時の電力の残量と今回起動時の電力の残量との差が小さければ、保持可能なデータ量を大きくし、前回起動時の電力の残量と今回起動時の電力の残量との差が大きければ、保持可能なデータ量を小さくしてもよい。電力の残量が小さい、大きいという判断方法については、図5にて後述する。図1では、データ保持装置100が電力の残量が大きければ、保持可能なデータ量を大きくし、電力の残量が小さければ、保持可能なデータ量を小さくする例を用いて説明する。
保持可能なデータ量を決定後、CPU101は、記憶部106の記憶領域のうちの決定したデータ量に相当する記憶領域に、CPU101への電力の供給が遮断されている間バッテリ105から電力を供給するようにPMU102に指示する。たとえば、データ保持装置100の停止中に保持すべきデータのデータ量が、保持可能なデータ量より小さいとする。このとき、CPU101は、記憶部106のうちのデータ保持装置100の停止中に保持すべきデータが格納された記憶領域に、CPU101への電力の供給が遮断されている間バッテリ105から電力を供給するようにPMU102に指示する。また、記憶部106のうち、CPU101への電力の供給が遮断されている間バッテリ105から電力を供給可能な記憶領域があるならば、CPU101は、データ保持装置100の停止中に保持すべきデータを、前述の記憶領域に転送する。
以下、図1(A)にて、電力の残量が大きい場合について示す。また、図1(B)にて、電力の残量が小さい場合について示す。
図1(A)は、電力の残量が大きい場合を示す。電力の残量が大きいため、CPU101は、保持可能なデータ量を大きく決定する。続けて、CPU101は、記憶部106の記憶領域のうちの決定したデータ量に相当する記憶領域111に、CPU101への電力の供給が遮断されている間バッテリ105から電力を供給するようにPMU102に指示する。図1(A)では、データ保持装置100の停止中に保持すべきデータ112のデータ量が、記憶領域111が記憶可能な記憶量より小さいため、データ112は、記憶領域111内にそのまま格納される。データ112が格納された後、PMU102は、CPU101への電力の供給を遮断する。
図1(B)は、電力の残量が小さい場合を示す。電力の残量が小さいため、CPU101は、保持可能なデータ量を小さく決定する。続けて、CPU101は、記憶部106の記憶領域のうちの決定したデータ量に相当する記憶領域113に、CPU101への電力の供給が遮断されている間バッテリ105から電力を供給するようにPMU102に指示する。図1(B)では、データ保持装置100の停止中に保持すべきデータ112のデータ量が、記憶領域113が記憶可能な記憶量より大きいため、データ112は、記憶領域113に格納できない。そこで、CPU101は、データ112を保持可能なデータ量以下となるように圧縮した圧縮データ114を記憶領域113に格納する。圧縮データ114が格納された後、PMU102は、CPU101への電力の供給を遮断する。データ112を圧縮する圧縮アルゴリズムは、どのようなアルゴリズムを採用してもよい。
以下、図2〜図15を用いて、実施の形態1にかかるデータ保持装置100について詳細に説明する。
(データ保持装置100のハードウェア)
図2は、実施の形態1にかかるデータ保持装置のハードウェアの一例を示すブロック図である。データ保持装置100は、LSI200内に、CPU101と、ROM(Read‐Only Memory)201と、PMU102と、DMA(Direct Memory Access)202と、を含む。さらに、データ保持装置100は、LSI200内に、シリアルI/O(Input/Output)203と、ペリフェラル204と、インターフェース205と、メモリコントローラ206と、電源制御回路207と、充電率測定回路103と、を含む。CPU101〜充電率測定回路103と、ROM201〜電源制御回路207は、バス107でそれぞれ接続される。また、充電率測定回路103は、前回電力残量記憶レジスタ211を有する。
さらに、データ保持装置100は、LSI200内に、WorkSRAM(Static Random Access Memory)221と、退避メモリ222と、を含む。さらに、データ保持装置100は、LSI200の外に、RF(Radio Frequency)231と、センサー232と、エナジーハーベスト104と、バッテリ105と、を含む。RF231とセンサー232とは、インターフェース205に接続される。エナジーハーベスト104と、バッテリ105とは、充電率測定回路103に接続される。なお、図1で示した記憶部106は、WorkSRAM221と、退避メモリ222とに相当する。
また、図2にてハッチを付与したPMU102と、充電率測定回路103と、退避メモリ222と、エナジーハーベスト104と、バッテリ105とは、データ保持装置100の動作停止中も電力が供給される装置である。
ROM201は、ブートプログラムなどのプログラムや、本実施の形態にかかるデータ保持プログラムを記憶する不揮発性メモリである。PMU102は、データ保持装置100の動作停止中に、CPU101と、ROM201と、DMA202と、シリアルI/O203〜メモリコントローラ206と、WorkSRAM221との電力の供給を遮断する。
DMA202は、CPU101を介さずに各装置間で直接データ転送を行う装置である。たとえば、DMA202は、ROM201の記憶内容を、メモリコントローラ206を経由してWorkSRAM221に書き込む。
シリアルI/O203は、シリアル転送方式による入出力ポートである。ペリフェラル204は、CPU101以外の周辺機器である。たとえば、ペリフェラル204は、GPUでもよいし、DSP(Digital Signal Processor)でもよい。インターフェース205は、LSI200外にある装置に接続する装置である。
メモリコントローラ206は、WorkSRAM221および退避メモリ222へのアクセスを制御する装置である。また、メモリコントローラ206は、後述する図7にて示す、動作停止時に記憶内容の退避処理と動作開始時に記憶内容の復帰処理と、後述する図8にて示すアクセス時のアクセスタグの付与を行う。
電源制御回路207は、退避メモリ222の電源を制御する回路である。退避メモリ222の電源の制御内容については、図3にて後述する。前回電力残量記憶レジスタ211には、前回測定した際の電力の残量が格納される。
WorkSRAM221は、CPU101における処理の一時データを格納する記憶装置である。退避メモリ222は、電源制御回路207の電力の供給によりデータ保持装置100の動作停止中にも記憶内容を保持できるメモリである。WorkSRAM221と退避メモリ222とが一つのメモリでもよいし、WorkSRAM221、退避メモリ222それぞれが、複数のメモリの集合体でもよい。また、退避メモリ222は、SRAMでもよいし、DRAM(Dynamic Random Access Memory)でもよい。
RF231は、受信した無線電波を受信信号として出力し、送信信号を無線電波としてアンテナを介して送信する。センサー232は、設置箇所における所定の変位量を検出する装置である。センサー232は、たとえば、設置箇所の圧力を検出する圧電素子や、温度を検出する素子、光を検出する光電素子などを用いることができる。エナジーハーベスト104は、図1にて示した説明に加え、センサー232によって検出された変位量に応じて発電を行ってもよい。
図3は、退避メモリの電源制御の一例を示す説明図である。退避メモリ222は、複数のバンクに分かれており、バンクごとに電源の制御が可能である。図3の例では、退避メモリは、バンク0〜バンク7を有し、バンクごとに電源の制御が可能である。電源制御回路207も、各バンクの電源の制御を行うため、電源制御回路207#0〜電源制御回路207#7を有する。たとえば、電源制御回路207#0は、バンク0の電源の制御を行う。
メモリコントローラ206は、データ保持装置100の動作停止からの復帰時に、退避メモリ222からWorkSRAM221へデータの復帰を行う。データの復帰を行った後、CPU101は、PMU102に退避メモリの各バンクの電源を切る旨の指示をする。指示を受けたPMU102は、バンクごとの電源制御回路207に指示を出して電源の供給を停止する。
データ保持装置100の動作が終了し停止する場合、CPU101は、充電率測定回路103から、動作停止時点での電力の残量を取得する。次に、CPU101は、取得した電力の残量と、前回電力残量記憶レジスタ211に記憶された前回の電力の残量との差の比較結果に基づいて、データ保持装置100の動作停止中に電力を供給するバンク数を増減する。続けて、CPU101は、前回電力残量記憶レジスタ211に今回取得した充電量を上書きする。
以下、データ保持装置100の停止中に電力が供給されるバンクを、「停止中供給バンク」と呼称する。また、停止中供給バンクの数を、「停止中供給バンク数」と呼称する。さらに、停止中供給バンクの数の最小値を、「最小バンク数」と呼称する。最小バンク数は、データ保持装置100の管理者によって指定される値である。たとえば、退避メモリ222の1バンクの記憶量が0x1000[バイト]であり、データ保持装置100の停止中に保持すべきデータの記憶量が0x4000[バイト]であり、前述のデータを圧縮した圧縮後のデータが0x2000[バイト]であるとする。このとき、圧縮後のデータが保持可能なバンク数が0x2000/0x1000=2となるため、最小バンク数は、2に設定される。
たとえば、停止中供給バンク数が4であったとする。CPU101は、PMU102に、停止中供給バンク数として、4を指示する。指示を受けたPMU102は、指示された停止中供給バンク数4に相当する退避メモリ222のバンク0〜バンク3の電力を供給する準備を行い、供給を開始したらCPU101に通知する。通知を受け付けたCPU101は、メモリコントローラ206に退避処理を実行するように通知する。退避処理の終了後、CPU101は、PMU102付属のタイマー301に次回起動時間を設定する。さらに、CPU101は、PMU102に電力の供給を停止する指示を通知する。指示を受け付けたPMU102は、CPU101と、ROM201と、DMA202と、シリアルI/O203〜メモリコントローラ206と、WorkSRAM221との電力の供給を断ち、停止させる。
次に、タイマーに設定した次回起動時間が満了した後、PMU102は、CPU101と、ROM201と、DMA202と、シリアルI/O203〜メモリコントローラ206と、WorkSRAM221との電力の供給を開始する。CPU101は、起動後、退避メモリ222のデータをWorkSRAM221に転送することによりデータを復帰する復帰処理の実行をメモリコントローラ206に通知する。復帰処理の完了後、CPU101は、PMU102に指示を出し退避メモリ222の電力の供給を停止する。電力の供給の停止後、CPU101は、通常の処理を行う。通常の処理として、CPU101は、たとえば、センサー232から位置情報を取得して、取得した位置情報と、前回の位置情報とを用いて、前回からの移動距離を算出する。
(データ保持装置100の機能)
次に、データ保持装置100の機能について説明する。図4は、実施の形態1にかかるデータ保持装置の機能例を示すブロック図である。データ保持装置100は、発電部401と、充電部402と、電力制御部403と、決定部411と、指示部412と、判断部413と、格納部414と、を含む。発電部401は、エナジーハーベスト104に相当する。充電部402は、バッテリ105に相当する。電力制御部403は、PMU102に相当する。決定部411〜格納部414は、記憶装置に記憶されたプログラムをCPU101が実行することにより、決定部411〜格納部414の機能を実現する。記憶装置とは、具体的には、たとえば、図2に示したROM201などである。また、データ保持装置100は、記憶部106にアクセス可能である。
決定部411は、充電部402によって充電された電力の残量に基づいて、電源からCPU101への電力の供給が遮断されている間に記憶部106が保持可能なデータ量を決定する。電源は、充電部402でもよいし、他の電源として一次電池でもよい。たとえば、決定部411は、充電部402から充電された電力の残量と、予め指定された閾値とを比較して、電力の残量が閾値以上であれば保持可能なデータ量を大きく決定し、電力の残量が閾値未満であれば保持可能なデータ量を小さく決定する。
また、決定部411は、動作停止時の充電部402にて充電された電力の残量を記憶しておく。そして、決定部411は、記憶した前回動作停止時の充電部402から充電された電力の残量と今回動作停止時の充電部402にて充電された電力の残量の差と、予め指定された閾値とを比較して、保持可能なデータ量を決定してもよい。
また、決定部411は、充電部402によって充電された電力の残量とCPU101への電力の供給が遮断されてから復帰するまでの時間間隔とに基づいて、保持可能なデータ量を決定してもよい。たとえば、決定部411は、電力の残量の差を、CPU101への電力の供給が遮断されてから復帰するまでの時間間隔で除算した結果と閾値とを比較して、保持可能なデータ量を決定してもよい。なお、決定されたデータ量は、WorkSRAM221等の記憶領域に記憶される。
指示部412は、記憶部106の記憶領域のうちの決定部411が決定した保持可能なデータ量に相当する記憶領域421に、CPU101への電力の供給が遮断されている間継続して充電部402から電力を供給するように電力制御部403に指示する。たとえば、決定部411によって決定された保持可能なデータ量が、0x1000[バイト]であるとする。このとき、指示部412は、記憶部106の記憶領域のうち、0x1000[バイト]の記憶領域に、充電部402から電力を供給するように電力制御部403に指示する。
判断部413は、決定部411によって決定された保持可能なデータ量がCPU101への電力の供給が遮断されている間に保持すべきデータのデータ量以下であるかを判断する。CPU101への電力の供給が遮断されている間に保持すべきデータのデータ量は、たとえば、データ保持装置100の管理者により予め指定される値である。アプリの開発者は、指定されたデータ量となるデータを動作停止時までに生成されるようにアプリを開発する。なお、判断結果は、WorkSRAM221等の記憶領域に記憶される。
格納部414は、記憶部106の記憶領域のうちの決定部411によって決定された保持可能なデータ量に相当する記憶領域421に、保持すべきデータを格納する。また、格納部414は、記憶領域421に、保持すべきデータが保持可能なデータ量以下に圧縮された圧縮データを格納してもよい。
図5は、充電率と停止中供給バンク数の関係の一例を示す説明図である。グラフ501は、充電率と時刻との関係を示す。グラフ501の横軸は、時刻を示す。グラフ501の縦軸は、電力の残量を示す。時刻t1〜t2間と、時刻t3〜t4間と、時刻t5〜t6間と、時刻t7〜t8間とが、データ保持装置100が動作する時間である。一方、時刻t2〜t3間と、時刻t4〜t5間と、時刻t6〜t7間とが、データ保持装置100の動作が停止する時間である。このように、データ保持装置100は、間欠動作を行う。そして、CPU101は、前回の電力の残量と今回の電力の残量との差に基づいて、停止中供給バンク数を決定する。
具体的に、エナジーハーベスト104による発電量が大きくなり、結果、電力の残量の差が小さければ、CPU101は、停止中供給バンク数を増加し、停止中供給バンクにデータを退避するための圧縮、伸長処理を減らす。一方、エナジーハーベスト104による発電量が小さくなり、結果、電力の残量の差が大きくなれば、CPU101は、停止中供給バンク数を減少し、電力消費を抑制する。エナジーハーベスト104による発電量が大きくも小さくもない中程度であり、電力の残量が中程度であれば、CPU101は、停止中供給バンク数を維持する。
また、電力の残量の差が小さい、中程度、大きいという判断については、CPU101は、たとえば、電力の残量の差とデータ保持装置100の管理者により指定された閾値とを比較して、小さい、中程度、大きいという判断をしてもよい。たとえば、CPU101は、電力の残量の差が閾値1未満であれば電力の残量の差が小さいと判断する。また、CPU101は、電力の残量の差が閾値1以上であり、かつ、電力の残量の差が閾値1より大きい閾値2未満であれば電力の残量の差が中程度であると判断する。さらに、CPU101は、電力の残量の差が閾値2以上であれば電力の残量の差が大きいと判断する。
本実施の形態では、CPU101は、小さい、中程度、大きいという3通りの判断結果を得るが、閾値をさらに設けて、より多い判断結果を得てもよい。たとえば、閾値1よりも小さい閾値1_0を設けておき、CPU101は、電力の残量の差が閾値1_0未満であれば、停止中供給バンク数を2増やし、電力の残量の差が閾値1_0以上閾値1未満であれば、停止中供給バンク数を2増やすとしてもよい。このように、複数段階の閾値を設けて判断することにより、データ保持装置100は、電力の残量の差が急に変換しても停止中供給バンク数を電力の残量の差に応じて変化させることができる。
以下、各時刻における停止中供給バンク数の変動について説明する。時刻t2にて、データ保持装置100の動作が停止する前に、停止中供給バンク数を4に決定したとする。そして、時刻t2〜t4間のエナジーハーベスト104による発電量が大きくなり、結果、電力の残量が大きくなったとする。時刻t4にて、CPU101は、前回の電力の残量と今回の電力の残量との差が小さいと判断し、停止中供給バンク数を1増加して5に決定する。
次に、時刻t4〜t6間のエナジーハーベスト104による発電量が中程度であり、結果、電力の残量が中程度になったとする。時刻t6にて、CPU101は、前回の電力の残量と今回の電力の残量との差が中程度であると判断し、停止中供給バンク数を維持して5に決定する。
続けて、時刻t6〜t8間のエナジーハーベスト104による発電量が小さくなり、結果、電力の残量が小さくなったとする。時刻t8にて、CPU101は、前回の電力の残量と今回の電力の残量との差が大きいと判断し、停止中供給バンク数を1減少して4に決定する。
前回の電力の残量と今回の電力の残量との差が、大きい、中程度、小さいという判断基準について、たとえば、CPU101は、前回の電力の残量と今回の電力の残量との差と、データ保持装置100の管理者によって予め指定された閾値との比較により判断する。また、前回の電力の残量は、動作停止時点から見て、動作開始時点の電力の残量でもよいし、1つ前の動作停止時点の電力の残量でもよい。
たとえば、時刻t6における今回の電力の残量がc6である場合、CPU101は、前回の電力の残量として、動作開始時点t5の電力の残量c5を採用してもよいし、1つ前の動作停止時点t4の電力の残量c4を採用してもよい。前回の電力の残量が動作開始時点の電力の残量か、1つ前の動作停止時点の電力の残量のいずれかを採用するのかに応じて、データ保持装置100の管理者は、閾値の大きさを変えて指定してもよい。本実施の形態では、前回の電力の残量として1つ前の動作停止時点の電力の残量を採用した場合について説明する。
図6は、充電率とメモリバンク数の関係の他の例を示す説明図である。図6では、データ保持装置100の動作停止中に消費する電力量より、エナジーハーベスト104の発電量の方が大きくなる場合が存在するときについて説明する。グラフ601は、充電率と時刻との関係を示す。グラフ601の横軸は、時刻を示す。グラフ601の縦軸は、電力の残量を示す。時刻t1〜t8におけるデータ保持装置100の動作状態は、図5に説明した状態と同一である。
図6では、時刻t2〜t3において、電力の残量が増加して、時刻t4にて、CPU101が、停止中供給バンク数が増加する。図5の例では、停止中供給バンク数が最小バンク数になった後、停止中供給バンク数が増加することはないが、図6の例では、停止中供給バンク数が最小バンク数になった後、停止中供給バンク数が増加することがある。
図7は、記憶内容の退避の一例を示す説明図である。図7では、WorkSRAM221に割り当てられたアドレス領域が0x20000000から0x2000FFFFであるとする。さらに、WorkSRAM221を16バンクに均等に分割したとする。したがって、1バンクの記憶量は、0x1000となる。たとえば、1個目のバンクのアドレス領域は、0x0000〜0x0FFFとなる。図7では、1個目のバンクのアドレス領域を、「0x0XXX」として示す。同様に、図7では、2個目のバンクのアドレス領域を、「0x1XXX」として示し、…、16個目のバンクのアドレス領域を、「0xFXXX」として示す。また、以下、アドレス領域が「0xnXXX」となるバンクを、「バンク0xnXXX」と称する。nは、0からFまでを示す。
図7では、各バンクの下位16ビットのアドレスを表示する。データ保持装置100は、最近アクセスのあったデータを退避メモリ222に退避する。最近アクセスのあったデータを判別するために、メモリコントローラ206は、アクセスのあったバンクにアクセスタグを付与し、アクセスタグに基づいてデータを退避する。ここで、アクセスタグとは、アクセスが行われた順序を示す情報である。本実施の形態では、数字が小さいアクセスタグが付与されたバンク程、最近アクセスされたバンクであることを示す。本実施の形態では、アクセスタグの値が0であれば、最近アクセスされていないバンクであるとし、アクセスタグの値が1以上であれば、最近アクセスされたバンクであるとする。1以上の値となるアクセスタグを付与するバンクの数を、以下、「有効アクセスタグ数」と呼称する。
以下、図7(A)〜図7(D)を用いて、アクセスのあったバンクへのタグの付与の一例と、タグに基づくデータの退避の一例と、データの復帰の一例について説明する。また、図7の例では、停止中供給バンク数が4であるとする。また、有効アクセスタグ数も4とする。さらに、図7では、退避メモリ222の各バンクの記憶量を、0x1000とする。
図7(A)では、値が「1」であるアクセスタグが付与されたバンク0x8XXXが最後にアクセスされたことを示す。さらに、図7(A)では、値が「2」であるアクセスタグが付与されたバンク0xEXXXが、バンク0x8XXXの一つ前にアクセスされたことを示す。同様に、値が「3」であるアクセスタグが付与されたバンク0x3XXXが、バンク0xEXXXの一つ前にアクセスされ、値が「4」であるアクセスタグが付与されたバンク0x4XXXが、バンク0x3XXXの一つ前にアクセスされたことを示す。
図7(A)の状態で、バンク0x0XXXにアクセスがあったとする。アクセス後の状態が、図7(B)の状態である。0x0XXXにアクセスがあった場合、メモリコントローラ206は、バンク0x0XXXに値が「1」であるアクセスタグを付与する。続けて、メモリコントローラ206は、バンク0x8XXXに値が「2」であるアクセスタグを付与し、バンク0xEXXXに値が「3」であるアクセスタグを付与し、バンク0x3XXXに値が「4」であるアクセスタグを付与する。
図7(B)の状態で、データ保持装置100の動作停止の前に行われる退避処理が実行された結果の状態を、図7(C)にて示す。退避処理において、メモリコントローラ206は、退避メモリ222のバンク0にWorkSRAM221のバンク0x0XXXの記憶内容を書き込む。さらに、メモリコントローラ206は、退避メモリ222のバンク1にWorkSRAM221のバンク0x3XXXの記憶内容を書き込む。さらに、メモリコントローラ206は、退避メモリ222のバンク2にWorkSRAM221のバンク0x8XXXの記憶内容を書き込み、退避メモリ222のバンク3にWorkSRAM221のバンク0xEXXXの記憶内容を書き込む。
図7(B)では、退避処理を行う際、保持すべきデータのデータ量が0x4000[バイト]であり、退避メモリ222のバンク0〜3のデータ量が0x4000[バイト]であり、2つのデータ量が一致することから、保持すべきデータがそのまま格納できる。もし、保持すべきデータのデータ量が、保持可能なデータ量より大きい場合、CPU101は、保持すべきデータを圧縮して、圧縮したデータを退避メモリ222のバンク0〜3に書き込む。保持すべきデータのデータ量は、データ保持装置100の管理者により予め指定される値である。本実施の形態では、保持すべきデータのデータ量が保持可能なバンク数を閾値3とする。したがって、CPU101は、停止中供給バンク数が閾値3未満であれば、保持すべきデータを圧縮する。
また、圧縮アルゴリズムはどのようなアルゴリズムでもよいため、CPU101は、圧縮にかかる時間が短く圧縮率が低い第1の圧縮アルゴリズムか、圧縮にかかる時間が長く圧縮率が高い第2の圧縮アルゴリズムかのいずれかを実行してもよい。具体的に、停止中供給バンク数が閾値3未満であり、閾値3より小さい閾値3_1より大きければ、CPU101は、第1の圧縮アルゴリズムを用いて保持すべきデータを圧縮する。一方、停止中供給バンク数が閾値3_1より小さければ、CPU101は、第2の圧縮アルゴリズムを用いて保持すべきデータを圧縮する。データを伸長する際にどの圧縮アルゴリズムを用いるかについて、CPU101は、停止中供給バンク数から、どの圧縮アルゴリズムが使用されたかを判断することができる。これにより、データ保持装置100は、停止中供給バンク数が閾値3未満であり閾値3_1より大きい場合、圧縮にかかる処理負荷を低減させることができる。
図7(C)の後、データ保持装置100の動作開始時に行われる復帰処理が行われた結果の状態を、図7(D)にて示す。復帰処理において、メモリコントローラ206は、退避メモリ222のバンク0の記憶内容をWorkSRAM221のバンク0x0XXXに書き込む。さらに、メモリコントローラ206は、退避メモリ222のバンク1の記憶内容をWorkSRAM221のバンク0x3XXXに書き込む。さらに、メモリコントローラ206は、退避メモリ222のバンク2の記憶内容をWorkSRAM221のバンク0x8XXXに書き込み、退避メモリ222のバンク3の記憶内容をWorkSRAM221のバンク0xEXXXに書き込む。
続けて、図5〜図7にて説明した動作を行うフローチャートを、図8〜図14を用いて説明する。
図8は、アクセス時の処理手順の一例を示すフローチャートである。アクセス時の処理は、メモリコントローラ206が、WorkSRAM221のバンクごとに、アクセスがあったバンクにアクセスタグを行う処理である。
また、メモリコントローラ206は、WorkSRAM221のバンクごとに、アクセスタグと前回アクセスフラグを有する。前回アクセスフラグは、前回のアクセス時に、該当のバンクにアクセスがあったか否かを示す情報である。本実施の形態では、アクセスフラグが0である場合、前回該当のバンクにアクセスがなかったことを示し、アクセスフラグが1である場合、前回該当のバンクにアクセスがあったことを示す。データ保持装置100の起動時に、メモリコントローラ206は、WorkSRAM221の各バンクのアクセスタグの値を0に設定しておき、前回アクセスフラグを0に設定しておく。
メモリコントローラ206は、WorkSRAM221へのアクセス要求があったか否かを判断する(ステップS801)。WorkSRAM221へのアクセス要求がない場合(ステップS801:No)、メモリコントローラ206は、アクセス要求があるまで待機し、再びステップS801の処理を実行する。WorkSRAM221へのアクセス要求がある場合(ステップS801:Yes)、メモリコントローラ206は、アクセス要求のアクセス先が対象のバンクか否かを判断する(ステップS802)。アクセス要求のアクセス先が対象のバンク内でない場合(ステップS802:No)、メモリコントローラ206は、前回アクセスフラグを0に設定する(ステップS803)。ステップS803の実行終了後、メモリコントローラ206は、ステップS801の処理に移行する。
アクセス要求のアクセス先が対象のバンクである場合(ステップS802:Yes)、メモリコントローラ206は、前回アクセスフラグが0か否かを判断する(ステップS804)。前回アクセスフラグが0でない場合(ステップS804:No)、メモリコントローラ206は、ステップS801の処理に移行する。
前回アクセスフラグが0である場合(ステップS804:Yes)、メモリコントローラ206は、アクセスタグの値をインクリメントする(ステップS805)。次に、メモリコントローラ206は、前回アクセスフラグを1に設定する(ステップS806)。続けて、メモリコントローラ206は、アクセスタグの値が有効アクセスタグ数より大きいか否かを判断する(ステップS807)。アクセスタグの値が有効アクセスタグ数以下である場合(ステップS807:No)、メモリコントローラ206は、ステップS801の処理に移行する。
アクセスタグの値が有効アクセスタグ数より大きい場合(ステップS807:Yes)、メモリコントローラ206は、アクセスタグの値を0に設定する(ステップS808)。ステップS808の処理終了後、メモリコントローラ206は、ステップS801の処理に移行する。アクセス時の処理を実行することにより、データ保持装置100は、最近アクセスがあったバンクをアクセスがあった順に記憶することができる。続けて、図9と図10にて、動作停止処理のフローチャートを示す。
図9は、実施の形態1にかかる動作停止処理手順の一例を示すフローチャートである。動作停止処理は、間欠動作の停止前に行う処理である。また、動作停止処理は、CPU101によって実行される。
CPU101は、現在のバッテリ105の電力の残量を充電率測定回路103から取得する(ステップS901)。次に、CPU101は、前回のバッテリ105の電力の残量を前回電力残量記憶レジスタ211から取得する(ステップS902)。続けて、CPU101は、電力の残量の差を、前回のバッテリ105の電力の残量から現在のバッテリ105の電力の残量を減じた結果とする(ステップS903)。次に、CPU101は、現在のバッテリ105の電力の残量を前回電力残量記憶レジスタ211に格納する(ステップS904)。続けて、CPU101は、停止中供給バンク数決定処理を実行する(ステップS905)。停止中供給バンク数決定処理は、図11にて後述する。
次に、CPU101は、停止中供給バンク数が閾値3未満か否かを判断する(ステップS906)。停止中供給バンク数が閾値3未満である場合(ステップS906:Yes)、CPU101は、退避するデータを圧縮する(ステップS907)。ステップS907の実行終了後、または停止中供給バンク数が閾値3以上である場合(ステップS906:No)、CPU101は、メモリコントローラ206に、退避処理の実行を指示する(ステップS908)。次に、CPU101は、PMU102に、CPU101および付属する周辺機器の電力の供給の遮断を指示する(ステップS909)。付属する周辺機器は、ROM201〜メモリコントローラ206と、WorkSRAM221とである。
ステップS909の処理終了後、CPU101は、動作停止処理を終了する。動作停止処理を実行することにより、データ保持装置100は、電力の残量に基づいて決定された停止中供給バンク数にデータを退避することができる。
図10は、実施の形態1にかかる動作停止処理手順の他の例を示すフローチャートである。図10に示すフローチャートのうち、ステップS1001、ステップS1002、ステップS1004〜ステップS1009の処理は、ステップS901、ステップS902、ステップS904〜ステップS909と同一であるため、説明を省略する。
ステップS1002の処理実行後、CPU101は、電力の残量の差を、前回のバッテリ105の電力の残量から現在のバッテリ105の電力の残量を減じた結果からデータ保持装置100の停止時間で除算した結果とする(ステップS1003)。ステップS1003の処理実行後、CPU101は、ステップS1004の処理を実行する。
図10にて示した動作停止処理を実行することにより、データ保持装置100は、データ保持装置100の停止時間を考慮して停止中供給バンク数を決定することができる。たとえば、第1の例が、データ保持装置100の停止時間が20[ms]であるときに、電力の残量の差が10[mAh]であったとする。また、第2の例が、データ保持装置100の停止時間が10[ms]であるときに、電力の残量の差が10[mAh]であったとする。
第1の例と比較して第2の例の方が電力の残量が急に減少したため、データ保持装置100は、図10に示した動作停止処理を実行することにより、第2の例において、電力消費をより抑制することができる。
図11は、停止中供給バンク数決定処理手順の一例を示すフローチャートである。停止中供給バンク数決定処理は、電力の残量の差に基づいて、停止中供給バンク数を決定する処理である。また、停止中供給バンク数決定処理は、動作停止処理から呼び出される。
CPU101は、電力の残量の差が閾値1未満か否かを判断する(ステップS1101)。電力の残量の差が閾値1未満である場合(ステップS1101:Yes)、CPU101は、停止中供給バンク数を増加する(ステップS1102)。
電力の残量の差が閾値1以上である場合(ステップS1101:No)、CPU101は、続けて、電力の残量の差が閾値2未満か否かを判断する(ステップS1103)。電力の残量の差が閾値2以上である場合(ステップS1103:No)、CPU101は、さらに、現在の停止中供給バンク数が最小バンク数か否かを判断する(ステップS1104)。現在の停止中供給バンク数が最小バンク数でない場合(ステップS1104:No)、CPU101は、停止中供給バンク数を減少する(ステップS1105)。
電力の残量の差が閾値2未満である場合(ステップS1103:Yes)、または、現在の停止中供給バンク数が最小バンク数である場合(ステップS1104:Yes)、停止中供給バンク数を維持することになり、CPU101は、停止中供給バンク数を変更しない。ステップS1102の実行終了後、ステップS1105の実行終了後、ステップS1103:Yesの場合、またはステップS1104:Yesの場合、CPU101は、PMU102に、退避メモリ222への電力の供給開始を指示する(ステップS1106)。このように停止中供給バンク数決定処理を実行することにより、データ保持装置100は、電力の残量の差が小さければデータ保持装置100が停止中に保持可能なデータ量を大きくできる。また、データ保持装置100は、電力の残量の差が大きければデータ保持装置100が停止中供給バンク数を小さくして、消費電力を抑制することができる。
ここで、データ保持装置100が動作停止処理に図9を適用して、閾値1を2[mAh]とし、閾値2を5[mAh]とした場合の具体例を説明する。電力の残量の差が正であれば、電力を消費したことを示す。また、電力の残量の差が負であれば、充電したことを示す。電力の残量の差が2[mAh]未満であれば、電力の消費が小さいものとする。また、電力の残量の差が2[mAh]以上であり、電力の残量の差が5[mAh]未満であれば、電力の消費が中程度であるものとする。さらに、電力の残量の差が5[mAh]以上であれば、電力の消費が大きいものとする。
たとえば、電力の残量の差が8[mAh]であれば、CPU101は、電力の消費が大きいと判断して、停止中供給バンク数を減少するように決定する。また、電力の残量の差が4[mAh]であれば、CPU101は、電力の消費が中程度であると判断して、停止中供給バンク数を維持するように決定する。電力の残量の差が1[mAh]であれば、CPU101は、電力の消費が小さいと判断して、停止中供給バンク数を増加するように決定する。さらに、電力の残量の差が−5[mAh]であれば、CPU101は、エナジーハーベスト104による発電量が大きいと判断して、停止中供給バンク数を増加するように決定する。
図12は、退避処理手順の一例を示すフローチャートである。退避処理は、データを退避メモリ222に退避する処理である。また、退避処理は、メモリコントローラ206により実行される。
メモリコントローラ206は、変数iに1を設定する(ステップS1201)。次に、メモリコントローラ206は、変数iが有効アクセスタグ数以下か否かを判断する(ステップS1202)。変数iが有効アクセスタグ数以下である場合(ステップS1202:Yes)、メモリコントローラ206は、アクセスタグの値がiであるバンクの記憶内容を、退避メモリ222に転送する(ステップS1203)。続けて、メモリコントローラ206は、アクセスタグの値がiであるバンクのアドレスをアクセスタグの値と関連付けて記憶する(ステップS1204)。次に、メモリコントローラ206は、変数iをインクリメントする(ステップS1205)。ステップS1205の処理実行後、メモリコントローラ206は、ステップS1202の処理に移行する。
変数iが有効アクセスタグ数より大きい場合(ステップS1202:No)、メモリコントローラ206は、退避処理を終了する。退避処理を実行することにより、データ保持装置100は、最近アクセスのあったデータを退避メモリ222に退避することができる。
図13は、実施の形態1にかかる動作起動処理手順の一例を示すフローチャートである。実施の形態1にかかる動作起動処理は、間欠動作の起動時に行う処理である。また、動作起動処理は、CPU101により実行される。
CPU101は、停止中供給バンク数が閾値3未満か否かを判断する(ステップS1301)。停止中供給バンク数が閾値3未満である場合(ステップS1301:Yes)、CPU101は、退避メモリの記憶内容を伸長する(ステップS1302)。ステップS1302の処理実行後、または、停止中供給バンク数が閾値3未満でない場合(ステップS1301:No)、CPU101は、メモリコントローラ206に、復帰処理の実行を指示する(ステップS1303)。復帰処理については、図14にて後述する。次に、CPU101は、PMU102に、退避メモリ222への電源の供給の遮断を指示する(ステップS1304)。ステップS1304の処理終了後、CPU101は、動作起動処理を終了する。動作起動処理を実行することにより、データ保持装置100は、退避してあった前回のデータをアプリに使わせることができる。
図14は、復帰処理手順の一例を示すフローチャートである。復帰処理は、退避メモリ222に退避したデータをWorkSRAM221に復帰する処理である。また、復帰処理は、メモリコントローラ206によって実行される。
メモリコントローラ206は、変数iに1を設定する(ステップS1401)。次に、メモリコントローラ206は、変数iが有効アクセスタグ数以下か否かを判断する(ステップS1402)。変数iが有効アクセスタグ数以下である場合(ステップS1402:Yes)、メモリコントローラ206は、退避メモリ222にあるアクセスタグの値がiである記憶内容を、WorkSRAM221の関連付けたアドレスに転送する(ステップS1403)。次に、メモリコントローラ206は、変数iをインクリメントする(ステップS1404)。ステップS1404の処理実行後、メモリコントローラ206は、ステップS1402の処理に移行する。
変数iが有効アクセスタグ数以下でない場合(ステップS1402:No)、メモリコントローラ206は、復帰処理を終了する。復帰処理を実行することにより、データ保持装置100は、退避してあった前回のデータを用いることができる。
図15は、時刻と消費電力の関係を示す説明図である。図15では、時刻と消費電力の関係を示すグラフ1501を用いて、データ保持装置100の消費電力について説明する。グラフ1501の横軸は、時刻である。グラフ1501の縦軸は、消費電力である。また、グラフ1501の破線は、電力の残量の差が小さい場合の消費電力の時間変化を示す。同様に、グラフ1501の一点鎖線は、電力の残量の差が大きい場合の消費電力の時間変化を示す。
電力の残量の差が小さい場合において、データ保持装置100は、時刻t0〜時刻t2にて、動作停止する。時刻t2〜t4にて、データ保持装置100は、CPU101への電力の供給と付属の周辺装置への電力の供給を開始する。時刻t4〜t5にて、データ保持装置100は、動作中であり、アプリを実行する。時刻t5〜t7にて、データ保持装置100は、CPU101への電力の供給と付属の周辺装置への電力の供給を遮断する。
一方、電力の残量の差が大きい場合において、データ保持装置100は、時刻t0〜時刻t1にて、動作停止する。時刻t1〜t3にて、データ保持装置100は、CPU101への電力の供給と付属の周辺装置への電力の供給を開始する。時刻t3〜t4にて、データ保持装置100は、復帰処理を実行する。時刻t4〜t5にて、データ保持装置100は、動作中であり、アプリを実行する。時刻t5〜t6にて、データ保持装置100は、退避処理を実行する。時刻t6〜t8にて、データ保持装置100は、CPU101への電力の供給と付属の周辺装置への電力の供給を遮断する。
電力の残量の差が小さい場合、退避処理および復帰処理を行わないため、動作時間が時刻t4〜t5となり、データ保持装置100は、消費電力を削減することができる。また、電力の残量の差が小さい場合、停止中供給バンク数が増加する分の消費電力が増加するが、閾値1を次のように指定することにより、停止中供給バンク数の増加に伴うバッテリ105の電力の残量の減少を打ち消すことができる。具体的には、データ保持装置100の管理者は、閾値1を、データ保持装置100が停止中の時間にエナジーハーベスト104により発電される電力の値に指定しておく。データ保持装置100が停止中の時間にエナジーハーベスト104により発電される電力の値の取得例としては、たとえば、予め測定した結果を用いてもよいし、シミュレーションにより得られる値を用いてもよい。
また、データ保持装置100の環境がエナジーハーベスト104により発電された電力が小さいときが多いと予測される環境であっても、データ保持装置100の管理者は、閾値1を、退避処理および復帰処理にかかる消費電力に指定しておく。これにより、データ保持装置100は、電力の残量の減少を抑制することができる。
電力の残量の差が大きい場合、停止中供給バンク数が減少するため、データ保持装置100は、消費電力を削減することができ、電力の残量の減少を抑制することができる。このように、データ保持装置100は、電力の残量の差が小さくても大きくても、電力の残量の減少を抑制することができる。
以上説明したように、データ保持装置100によれば、エナジーハーベスト104の発電により蓄えられたバッテリ105の電力の残量に応じて遮断中の揮発性メモリに給電する記憶領域の大きさを変更する。これにより、データ保持装置100は、エナジーハーベスト104からの発電量の不安定さを吸収して、エナジーハーベスト104からの発電量を有効活用できる。
また、データ保持装置100によれば、CPU101への電力の供給が遮断されている間に保持すべきデータのデータ量以下であるかを判断する。そして、データ保持装置100は、決定した保持可能なデータ量が保持すべきデータのデータ量以下であると判断した場合、決定した保持可能なデータ量に相当する記憶領域に、保持すべきデータが圧縮された圧縮データを格納する。これにより、データ保持装置100は、CPU101への電力の供給が遮断されている間に保持すべきデータを保持しつつ、CPU101への電力の供給が遮断されている間に電力を供給する記憶領域を減らすため、消費電力が削減できる。消費電力が削減されることにより、データ保持装置100は、バッテリ105の電力の残量の低下を抑制できる。
また、データ保持装置100によれば、エナジーハーベスト104の発電により蓄えられたバッテリ105の電力の残量と、CPU101への電力の供給が遮断される時間とに基づいて、保持可能なデータ量を決定してもよい。これにより、データ保持装置100は、CPU101への電力の供給が遮断されている間に、電力の残量が急に変化した場合にも、保持可能なデータ量を電力の残量の変化に合わせて変化させることができる。
(実施の形態2)
実施の形態2にかかるデータ保持装置は、エナジーハーベスト104によって発電された電力を蓄えるバッテリと、エナジーハーベスト104によって発電された電力を蓄えないバッテリとを有する。以下、図16〜図19を用いて、実施の形態2にかかるデータ保持装置について説明する。なお、実施の形態1において説明した箇所と同様の箇所については、同一符号を付して図示および説明を省略する。
図16は、実施の形態2にかかるデータ保持装置のハードウェア構成例を示すブロック図である。実施の形態2にかかるデータ保持装置1600は、LSI200内に、CPU101〜電源制御回路207と、LSI200内に、充電率測定回路1601と、充電率測定回路1602と、を含む。さらに、データ保持装置1600は、LSI200の外に、RF231と、センサー232と、エナジーハーベスト104と、メインバッテリ1611と、サブバッテリ1612と、を含む。CPU101〜電源制御回路207と、充電率測定回路1601と、充電率測定回路1602とは、バス107でそれぞれ接続される。
充電率測定回路1601は、メインバッテリ1611の電力の残量を測定する回路である。また、充電率測定回路1601は、前回電力残量記憶レジスタ1621を有する。前回電力残量記憶レジスタ1621には、前回測定した際のメインバッテリ1611の電力の残量が格納される。充電率測定回路1602は、サブバッテリ1612の電力の残量を測定する回路である。また、充電率測定回路1602は、前回電力残量記憶レジスタ1622を有する。前回電力残量記憶レジスタ1622には、前回測定した際のサブバッテリ1612の電力の残量が格納される。
メインバッテリ1611およびサブバッテリ1612は、電力を蓄える装置である。メインバッテリ1611は、充放電を繰り返すことができる二次電池でもよいし、充電を行わず放電のみを行う一次電池でもよい。サブバッテリ1612は、エナジーハーベスト104により発電された電力を蓄える。メインバッテリ1611とサブバッテリ1612とに分けることにより、データ保持装置1600は、メインバッテリ1611の電力の残量がなくなっても、エナジーハーベスト104により発電された電力により退避したデータを保持し続けることができる。退避したデータを保持し続けた結果、データ保持装置1600の管理者が退避したデータを回収できる可能性を高めることができる。
(データ保持装置1600の機能)
次に、データ保持装置1600の機能について説明する。図17は、実施の形態2にかかるデータ保持装置の機能例を示すブロック図である。データ保持装置1600は、発電部401と、充電部402と、電池1701と、電力制御部1702と、決定部1703と、指示部1704と、判断部413と、格納部414と、を有する。電池1701は、メインバッテリ1611に相当する。充電部402は、サブバッテリ1612に相当する。電池1701は、CPU101へ電力を供給する。
電力制御部1702は、充電部402からの電力の供給を制御するとともに、電池1701からの電力の供給を制御する。
決定部1703は、充電部402から充電された電力の残量と電池1701の電力の残量と基づいて、充電部402および電池1701からCPU101への電力の供給が遮断されている間に記憶部106が保持可能なデータ量を決定する。たとえば、決定部1703は、充電部402から充電された電力の残量と電池1701の電力の残量との合計と、閾値1や閾値2と比較して、保持可能なデータ量を決定する。また、決定部1703は、電池1701の電力の残量が閾値0未満となった場合、保存可能なデータ量を、最小バンク数が記憶するデータ量としてもよい。閾値0は、データ保持装置1600の管理者によって指定される値である。たとえば、閾値0は、データ保持装置1600の1回分の動作にかかる電力に指定されてもよいし、データ保持装置1600の数回分の動作にかかる電力に指定されてもよい。
指示部1704は、記憶部106の記憶領域のうちの決定部1703が決定したデータ量に相当する記憶領域421に、CPU101への電力の供給が遮断されている間継続して充電部402から電力を供給するように電力制御部403に指示する。
続けて、データ保持装置1600が行うフローチャートを、図18、図19を用いて説明する。実施の形態2にかかるアクセス時の処理と、停止中供給バンク数決定と、退避処理と、復帰処理とは、実施の形態1にかかる同名の処理と同一であるため、説明を省略する。
図18は、実施の形態2にかかる動作停止処理手順の一例を示すフローチャートである。実施の形態2にかかる動作停止処理のうちの、ステップS1807〜ステップS1811の処理は、図9に示すステップS905〜ステップS909の処理と同一であるので、説明を省略する。また、図18に示すフローチャートは、図9に示したフローチャートにて示した処理を適用した処理だが、図10に示したフローチャートにて示した処理を適用してもよい。
CPU101は、現在のメインバッテリ1611および現在のサブバッテリ1612の電力の残量を充電率測定回路1601、1602から取得する(ステップS1801)。次に、CPU101は、現在のメインバッテリ1611の電力の残量が閾値0未満か否かを判断する(ステップS1802)。現在のメインバッテリ1611の電力の残量が閾値0未満である場合(ステップS1802:Yes)、CPU101は、停止中供給バンク数を最小バンク数に設定する(ステップS1803)。ステップS1803の実行終了後、CPU101は、ステップS1809に移行する。
現在のメインバッテリ1611の電力の残量が閾値0以上である場合(ステップS1802:No)、CPU101は、前回のメインバッテリ1611および前回のサブバッテリ1612の電力の残量を前回電力残量記憶レジスタ1621、1622から取得する(ステップS1804)。
続けて、CPU101は、電力の残量の差を、前回のメインバッテリ1611および前回のサブバッテリ1612の電力の残量の加算結果から、現在のメインバッテリ1611および現在のサブバッテリ1612の電力の残量の加算結果を減じた値とする(ステップS1805)。次に、CPU101は、現在のメインバッテリ1611および現在のサブバッテリ1612の電力の残量を前回電力残量記憶レジスタ1621、1622に格納する(ステップS1806)。ステップS1806の終了後、CPU101は、ステップS1807の処理に移行する。実施の形態2にかかる動作停止処理を実行することにより、データ保持装置1600は、メインバッテリ1611の電力の残量が小さい場合、停止中供給バンク数を強制的に最小バンク数にして、消費電力を抑制することができる。
図19は、実施の形態2にかかる動作起動処理手順の一例を示すフローチャートである。実施の形態2にかかる動作起動処理のうちの、ステップS1903〜ステップS1905の処理は、図13に示すステップS1302〜ステップS1304の処理と同一であるので、説明を省略する。
CPU101は、現在のメインバッテリ1611の電力の残量を充電率測定回路1601から取得する(ステップS1901)。次に、CPU101は、停止中供給バンク数が閾値3未満、または現在のメインバッテリ1611の電力の残量が閾値0未満か否かを判断する(ステップS1902)。停止中供給バンク数が閾値3未満、または現在のメインバッテリ1611の電力の残量が閾値0未満である場合(ステップS1902:Yes)、CPU101は、ステップS1903の処理に移行する。
停止中供給バンク数が閾値3以上であり、かつ現在のメインバッテリ1611の電力の残量が閾値0以上である場合(ステップS1902:No)、CPU101は、ステップS1904の処理に移行する。動作起動処理を実行することにより、データ保持装置1600は、退避してあった前回のデータをアプリに使わせることができる。
以上説明したように、データ保持装置1600によれば、メインバッテリ1611の電力の残量がなくなったとしても、退避メモリ222のデータをサブバッテリ1612で維持し続けることができる。維持し続けた結果、データ保持装置1600の管理者が退避したデータを回収できる可能性を高めることができる。
なお、本実施の形態1、2で説明したデータ保持方法は、予め用意されたプログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本データ保持プログラムは、ハードディスク、フレキシブルディスク、CD−ROM、MO、DVD等のコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また本データ保持プログラムは、インターネット等のネットワークを介して配布してもよい。
また、本実施の形態1、2で説明したPMU102、充電率測定回路103、記憶部106、メモリコントローラ206は、スタンダードセルやストラクチャードASIC(Application Specific Integrated Circuit)などの特定用途向けIC(以下、単に「ASIC」と称す。)やFPGAなどのPLD(Programmable Logic Device)によっても実現することができる。
上述した実施の形態1、2に関し、さらに以下の付記を開示する。
(付記1)自装置を制御するプロセッサと、
前記自装置が置かれた環境に応じて得られるエネルギーを用いて発電する発電部からの電力を充電する充電部と、
前記充電部からの電力の供給が遮断されると記憶内容の一部または全部が失われる記憶領域を有する記憶部と、
前記充電部からの電力の供給を制御する電力制御部と、を有し、
前記プロセッサは、
前記充電部によって充電された電力の残量に基づいて、電源から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定し、前記記憶部の記憶領域のうちの決定した前記保持可能なデータ量に相当する記憶領域に、前記プロセッサへの電力の供給が遮断されている間継続して前記充電部から電力を供給するように前記電力制御部に指示することを特徴とするデータ保持装置。
(付記2)前記プロセッサは、
決定した前記保持可能なデータ量が前記記憶部に記憶されているデータのうちの保持すべきデータのデータ量未満であると判断した場合、決定した前記保持可能なデータ量に相当する記憶領域に、前記保持すべきデータを前記保持可能なデータ量以下になるように圧縮した圧縮データを格納することを特徴とする付記1に記載のデータ保持装置。
(付記3)前記プロセッサは、
前記充電部によって充電された電力の残量と前記プロセッサへの電力の供給が遮断されてから復帰するまでの時間間隔とに基づいて、電源から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定することを特徴とする付記1または2に記載のデータ保持装置。
(付記4)電力を供給する電池をさらに有し、
前記電力制御部は、
前記充電部からの電力の供給を制御するとともに、前記電池からの電力の供給を制御し、
前記プロセッサは、
前記充電部によって充電された電力の残量と前記電池に蓄えられた電力の残量と基づいて、前記充電部および前記電池から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定し、前記記憶部の記憶領域のうちの決定した前記保持可能なデータ量に相当する記憶領域に、前記プロセッサへの電力の供給が遮断されている間継続して前記充電部から電力を供給するように前記電力制御部に指示することを特徴とする付記1〜3のいずれか一つに記載のデータ保持装置。
(付記5)自装置を制御するプロセッサと、前記自装置が置かれた環境に応じて得られるエネルギーを用いて発電する発電部からの電力を充電する充電部と、前記充電部からの電力の供給が遮断されると記憶内容の一部または全部が失われる記憶領域を有する記憶部と、前記充電部からの電力の供給を制御する電力制御部と、を有するデータ保持装置が、
前記プロセッサにより、前記充電部によって充電された電力の残量に基づいて、電源から前記プロセッサへの電力の供給が遮断されている間に前記記憶部が保持可能なデータ量を決定し、
前記プロセッサにより、前記記憶部の記憶領域のうちの決定した前記保持可能なデータ量に相当する記憶領域に、前記充電部から前記プロセッサへの電力の供給が遮断されている間継続して前記充電部から電力を供給するように前記電力制御部に指示する、
処理を実行することを特徴とするデータ保持方法。