(57)【要約】【課題】データが記憶されるＥＥＰＲＯＭの容量の増加を抑制しながら、空き容量の余裕がなくなった場合にも対応可能な記憶装置、電子制御ユニット及び記憶方法を提供すること。【解決手段】複数の領域に区分された不揮発メモリ１００にデータを記憶する記憶装置５０であって、プログラムがアクセスする記憶対象データと前記領域の対応を、前記記憶対象データの記憶期間に応じて定めた対応情報３１と、対応情報に基づき、前記記憶対象データの記憶先の前記領域を決定する領域決定手段３４と、領域決定手段が決定した領域に記憶対象データを格納するデータ格納手段３７と、を有することを特徴とする。【選択図】図２
2011198049.tif 000002
【特許請求の範囲】
【請求項１】
複数の領域に区分された不揮発メモリにデータを記憶する記憶装置であって、
プログラムがアクセスする記憶対象データと前記領域の対応を、前記記憶対象データの記憶期間に応じて定めた対応情報と、
前記対応情報に基づき、前記記憶対象データの記憶先の前記領域を決定する領域決定手段と、
前記領域決定手段が決定した前記領域に前記記憶対象データを格納するデータ格納手段と、
を有することを特徴とする記憶装置。
【請求項２】
前記領域における前記記憶対象データの記憶場所を、前記領域毎に記述したデータ記憶場所情報を有し、
前記プログラムは、前記データ記憶場所情報に基づき前記記憶対象データを前記不揮発メモリから読み出す、
ことを特徴とする請求項１記載の記憶装置。
【請求項３】
前記領域決定手段が決定した前記領域に、空き容量があるか否かを判定する空き容量判定手段と、
前記空き容量がないと判定された場合、前記領域決定手段が決定した前記領域に、該領域に認められた前記記憶期間よりも長い期間記憶されているデータを特定するデータ特定手段と、を有し、
前記データ格納手段は、前記データ特定手段が特定したデータの代わりに前記記憶対象データを、前記領域決定手段が決定した前記領域に記憶する、
ことを特徴とする請求項１又は２記載の記憶装置。
【請求項４】
前記空き容量がないと判定された場合、
前記データ格納手段は、前記データ特定手段が特定したデータを、前記領域決定手段が決定した前記領域よりも前記記憶期間が短い前記領域に移動し、移動により生じた空き容量に前記記憶対象データを記憶する、
ことを特徴とする請求項１３記載の記憶装置。
【請求項５】
前記データ特定手段が、前記領域決定手段が決定した前記領域に認められた前記記憶期間よりも長い期間記憶されているデータを特定できない場合、
前記領域決定手段が決定した前記領域を拡大する領域変更手段を有し、
前記データ格納手段は、前記領域の拡大により生じた空き容量に前記記憶対象データを記憶する、
を有することを特徴とする請求項３記載の記憶装置。
【請求項６】
前記領域変更手段は、前記領域の空き容量に応じて該領域を縮小する、
ことを特徴とする請求項５記載の記憶装置。
【請求項７】
前記領域の最大のサイズには制限がなく、最小のサイズには制限がある
ことを特徴とする請求項６記載の記憶装置。
【請求項８】
前記領域に記憶された前記記憶対象データ及び前記記憶対象データが記憶されるよりも前から前記領域に記憶されていたデータを、前記領域毎にソートするソート手段、  
を有することを特徴とする請求項３〜７いずれか１項記載の記憶装置。
【請求項９】
前記対応情報は、独立した複数の前記プログラム毎に、前記記憶対象データと前記領域の対応を、前記記憶対象データの記憶期間に応じて定め、
前記データ記憶場所情報には、複数の前記プログラム毎に、前記領域における前記記憶対象データの記憶場所が記述されている、
ことを特徴とする請求項２記載の記憶装置。
【請求項１０】
前記プログラムは、複数の前記領域から選択した１つの前記領域のみから、前記記憶対象データを読み出す、
ことを特徴とする請求項２記載の記憶装置。
【請求項１１】
請求項１〜１０いずれか１項記載の記憶装置と、
前記プログラムを実行するマイコンと、
センサ通信回路と、
外部機器との入力回路又は出力回路と、
データ通信回路と、
を有する電子制御ユニット。
【請求項１２】
複数の領域に区分された不揮発メモリにデータを記憶する記憶方法であって、
プログラムがアクセスする記憶対象データと前記領域の対応を、前記記憶対象データの記憶期間に応じて定めた対応情報に基づき、領域決定手段が、前記記憶対象データの記憶先の前記領域を決定するステップと、
データ格納手段が、前記領域決定手段が決定した前記領域に前記記憶対象データを格納するステップと、
を有することを特徴とする記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＥＣＵが有する記憶装置に関し、特に、データの書き換えが可能な記憶装置、電子制御ユニット及び記憶方法に関する。
【背景技術】
【０００２】
車両には車載装置を電子制御するための電子制御ユニット（以下、ＥＣＵという）が搭載されている。ＥＣＵは、例えば、ＥＣＵの診断結果や、ＡＶ装置の設定値、ドライブレコーダの映像データ、各種のアプリケーションが使用するアプリデータ等、各種のデータを処理する。そして、このデータを不揮発性のメモリに保存しておく場合がある。
【０００３】
ここで、ＥＣＵがデータを記憶するためにハードディスクドライブのような大容量の記憶装置を搭載することもあるが、多くのＥＣＵでは、ＥＥＰＲＯＭなど高速だが比較的小容量の記憶装置を搭載することが多い。
【０００４】
従来、ＥＣＵはＥＥＰＲＯＭに書き込んだデータを上書きすることはなかったが、ＥＣＵが扱うデータがそれほど多くない状況では、上書きをしなくても目立った不都合は生じなかった。
【０００５】
しかしながら、車載装置の電子化が進むにつれ、ＥＣＵが扱うデータは多様化し、また、データ量も増加傾向にある。また、ＥＣＵに搭載されるマイコンにマルチコア型やマルチスレッド型のＣＰＵが搭載されるようになってきたことも、１つのＥＣＵが扱うデータを増加させる傾向をもたらす。
【０００６】
このため、ＥＥＰＲＯＭに書き込んだデータを上書きしないままでは、ＥＥＰＲＯＭの容量が不足するおそれがある。そこで、ＥＣＵが扱うデータの量に応じて、単純にＥＣＵが搭載するＥＥＰＲＯＭの容量を増大させることが考えられる（例えば、特許文献１参照。）。特許文献１には、ＥＥＰＲＯＭを複数の領域に分けて、ＡＢＳが作動する毎に異なる領域にデータを記憶すると共に、データが書き込まれた領域への書き込みを禁止する車両の制御装置が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開平１１−１３９２９６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、ＥＥＰＲＯＭの容量を増大させると、コスト増や実装面積の増加をもたらすだけでなく、次のような問題が指摘される。
【０００９】
図１は、ＥＥＰＲＯＭの容量を増大させた際の問題を説明する図の一例である。図１は、ＥＥＰＲＯＭの容量の増大によるタクトタイムの増加を示している。タクトタイムとは、一工程で認められる作業時間である。ＥＥＰＲＯＭに対しても、記憶素子に異常がないことを検査するためのタクトタイムが定められている。
【００１０】
ＥＥＰＲＯＭの記憶素子を全量又は決まった比率で特定し、読み書きするような検査の場合、ＥＥＰＲＯＭの容量に比例して検査時間が増大する。例えば、ＥＥＰＲＯＭの容量が２倍になれば、検査時間も２倍になる。タクトタイムが図示するように決まっている場合、ＥＥＰＲＯＭの容量が増加する前はタクトタイムに収まっていた検査時間が、ＥＥＰＲＯＭの容量が増加することで、タクトタイムに収まらなくなる。
【００１１】
また、特許文献１に開示された制御装置のように、領域を区分して、データが書き込まれた領域への書き込みを禁止するだけでは、全ての領域にデータが書き込まれた後、さらに次のデータをどのように記憶するかを特定できないという問題がある。
【００１２】
本発明は、データが記憶されるＥＥＰＲＯＭの容量の増加を抑制しながら、空き容量の余裕がなくなった場合にも対応可能な記憶装置、電子制御ユニット及び記憶方法を提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明は、複数の領域に区分された各領域のアドレス情報を記憶する不揮発メモリと、プログラムがアクセスする記憶対象データと前記領域の対応を、前記記憶対象データの記憶期間に応じて定めた対応情報と、前記対応情報に基づき、前記記憶対象データの記憶先の前記領域を決定する領域決定手段と、前記領域決定手段が決定した前記領域に前記記憶対象データを格納するデータ格納手段と、を有することを特徴とする記憶装置を提供する。
【発明の効果】
【００１４】
データが記憶されるＥＥＰＲＯＭの容量の増加を抑制しながら、空き容量の余裕がなくなった場合にも対応可能な記憶装置、電子制御ユニット及び記憶方法を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】ＥＥＰＲＯＭの容量を増大した際の問題を説明する図の一例である。
【図２】ＥＥＰＲＯＭの記憶構造を模式的に説明する図の一例である。
【図３】ＥＣＵの機能統合について説明する図の一例である。
【図４】ＥＥＰＲＯＭのデータ構造の一例を示す図である。
【図５】各領域に記憶されたデータの遷移を模式的に説明する図の一例である。
【図６】ＥＥＰＲＯＭ管理プログラムの機能ブロック図の一例である。
【図７】ソート手段によるソート結果を模式的に示す図の一例である。
【図８】ＥＥＰＲＯＭ管理プログラムがＥＥＰＲＯＭにデータを記憶する手順を示すフローチャート図の一例である。
【図９】ＥＥＰＲＯＭの記憶構造を模式的に説明する図の一例である（実施例２）。
【図１０】各領域の遷移を模式的に説明する図の一例である（実施例２）
【図１１】ＥＥＰＲＯＭ管理プログラムの機能ブロック図の一例である（実施例２）。
【図１２】ソート手段によるソート結果を模式的に示す図の一例である（実施例２）。
【図１３】ＥＥＰＲＯＭ管理プログラムがＥＥＰＲＯＭにデータを記憶する手順を示すフローチャート図の一例である。
【発明を実施するための形態】
【００１６】
以下、本発明を実施するための最良の形態について図面を参照しながら実施例を挙げて説明する。
【実施例１】
【００１７】
図２は、EEPROM100の記憶構造を模式的に説明する図の一例である。本実施例のEEPROM100は以下の特徴を有する。
（１）EEPROM100の領域が区分されており、各アプリはその重要度に応じてデータを領域Ａ〜Ｃに格納する。
（２）ある領域に空き容量がなくなると、各アプリは、記憶時から最も時間が経過しているデータを特定し、そのデータが領域に応じた重要度を保っているか否かを判定する。
（３）そのデータが領域に応じた重要度を保っている場合、アプリはそのデータを相対的に重要度の低い領域に移動する。
【００１８】
例えば、EEPROM100がＸ領域、Ａ領域、Ｂ領域及びＣ領域に区分されており、Ｘ（書き込み不可）＞Ａ＞Ｂ＞Ｃの順で、重要度が高いデータが記憶される領域であるとする。アプリＸはEEPROM100に記憶すべきデータＸA、ＸＢ、ＸＣを扱い、データＸAは重要であるためＡ領域に、データＸＢはそれほど重要でないためＢ領域に、データＸＣは重要でないため領域Ｃに、それぞれ記憶する。
【００１９】
一方、アプリＹはEEPROM100に記憶すべきデータＹＡ、ＹＢ、ＹＣを扱い、データＹＡは重要であるためＡ領域に、データＹＢはそれほど重要でないためＢ領域に、データＹＣは重要でないため領域Ｃに、それぞれ記憶する。
【００２０】
アプリＸがデータＸＢをＢ領域に記憶した後、Ｂ領域の空き容量がなくなったものとする。アプリＹがデータＹＢをＢ領域に記憶する際、アプリＹは、Ｂ領域で最も時間が経過したデータ（説明のため、データＸＢとする）を特定し、Ｂ領域に応じた重要度を保っているか否かを判定する。具体的には、データＸＢがＢ領域に記憶されてからの経過時間が、閾値を超えるか否かを判定する。
【００２１】
データＸＢがＢ領域に応じた重要度を保ってる場合、アプリＹは、データＸＢをＢ領域からＣ領域に移動する。こうすることで、Ｂ領域に空き領域が生まれる。アプリＹはデータＹＢを領域Ｂに格納することができる。
【００２２】
したがって、データの重要度に応じて記憶する初期の領域を変える、また、各領域の保存期間(上記の閾値)を重要度の高い領域ほど長くすることで、重要度の高いデータほど長くEEPROM100に記憶させておくことができる。換言すれば、EEPROM100に記憶すべきデータ量が多くても、重要でないデータほど早く消えていくので、EEPROM100の全容量をそれほど大きくしなくても、記憶すべきデータ量の増大に対応することができる。
【００２３】
〔ＥＣＵ（electronic  control  unit）の統合〕
次に、図３を用いてＥＣＵの機能統合について説明する。図３（ａ）は、機能統合される２つのＥＣＵを模式的に示す図である。ＥＣＵ＿ＡとＥＣＵ_ＢがＣＡＮバスを介して接続されている。ＥＣＵ＿Ａは例えばＡＶ装置のＥＣＵであり、ＥＣＵ＿Ｂは例えば警告用ＥＣＵである。
【００２４】
ＥＣＵ＿Ａのマイコン１９Ａは、カメラが撮影した画像を画像処理して、ナイトビューや白線認識用の映像としてディスプレイに出力する。このため、マイコン１９Ａは、一連の処理を制御するアプリＸを実行する。アプリＸは、例えば、映像フィルタ回路１３が画像処理した画像データに、描画用プログラムを呼び出したり、描画用ＦｌａｓｈＲＯＭ１２から読み出した描画データを重畳するなどして描画ＡＳＩＣ１４に出力する。描画ＡＳＩＣ１４が描画処理した画像データを映像出力回路１５に出力すると、映像出力回路１５がディスプレイに映像を表示する。また、アプリＸは、描画用プログラムによる歩行者や白線の認識結果に応じて、音声合成回路１６から注意換気のメッセージを、ＡＶＣＬＡＮ回路から注意換気音等を出力する。この他、マイコン１９ＡはＡＶＣＬＡＮ回路１７を制御するためのＡＶＣＬＡＮプログラムや、ＥＣＵ＿Ａに特有のプラットフォーム（デバイスドライバ、ＯＳ等）を実行する。
【００２５】
なお、ＣＡＮ回路１８ＡはＣＡＮ通信のトランシーバやＣＡＮコントローラであり、ＣＡＮプロトコルに従って他のＣＡＮ回路１８Ｂと通信する。
【００２６】
また、ＥＣＵ＿ＡのアプリＸは、例えば、カメラが撮影した画像を、車両の減速度が所定値以上になった場合や、衝撃を検出した場合にEEPROM100に記憶する。すなわち、EEPROM100にはドライブレコーダの画像データが記憶される。
【００２７】
また、一方、ＥＣＵ＿Ｂのマイコン１９Ｂは、センサの検出結果に基づきブザー音を鳴らす。このため、マイコン１９Ｂは、一連の処理を制御するアプリＹを実行する。例えば、センサ通信回路２２がセンサから検出したセンサ値を基準値と比較して、基準値以下の場合には、ブザー駆動プログラム（デバイスドライバ）によりブザー駆動回路２１を駆動する。こうすることで、乗員に注意喚起することができる。この他、マイコン１９Ｂはセンサ通信回路２２との通信を制御するためのシリアル通信プログラムや、ＥＣＵ＿Ｂに特有のプラットフォーム（デバイスドライバ、ＯＳ等）を実行する。
【００２８】
センサが検出するセンサ値は、電圧値や電流値である。ＥＣＵ＿ＢのアプリＹは、ブザー音を鳴らす必要がある場合等、センサ値が基準値を満たさない場合に、そのセンサ値と付随するデータ（バッテリ残量、水温、位置情報等）をEEPROM100に記憶する。このデータを後の異常の解析に役立てることができる。
【００２９】
このように、車載装置の電子化が進んだため、車両に搭載されるＥＣＵは、多品種化が進んでおり、ＥＣＵ毎の開発費の増大や搭載スペースの確保等が課題になりつつある。一方、マイコンのマルチコア化やマルチスレッド化が進み、１つのＥＣＵで複数の独立した処理を実行可能になってきた。
【００３０】
そこで、図３（ｂ）に示すように、１つのＥＣＵ（以下、統合ＥＣＵ２００という）に、ＥＣＵ＿ＡとＥＣＵ＿Ｂの機能を統合することが考えられている。図示するように、統合ＥＣＵ２００は、ＥＣＵ＿Ａが有していた映像出力回路１５、描画ＡＳＩＣ１４、映像フィルタ回路１３、描画用ＦｌａｓｈＲＯＭ１２、電源ＩＣ１１、音声合成回路１６及びＡＶＣＬＡＮ回路１７、並びに、ＥＣＵ＿Ｂが有していた電源ＩＣ（センサ用）２３、センサ通信回路２２及びブザー駆動回路２１を有する。また、機能が統合された結果、マイコン１９だけでなく、EEPROM100及びＣＡＮ回路１８は、アプリＸとアプリＹに共通に実装される。
【００３１】
統合ＥＣＵ２００は、アプリＸとアプリＹ、及び、調停プログラムを実行する。調停プログラムは、アプリＸとアプリＹが共通に利用する資源へのアクセスを調停する。描画用プログラム及びＡＶＣＬＡＮプログラムは機能統合しても同じものを利用でき、ソフトＰＦはＥＣＵ＿ＡのプラットフォームとＥＣＵ＿Ｂのプラットフォームの一部又は全体を、統合ＥＣＵ２００用に搭載したものである。ＩＯＤは、データの入出力を制御する。
【００３２】
このように、複数のＥＣＵを機能統合することで、統合前のＥＣＵが共通に利用できる資源の数や面積を低減できる。また、ＨＭＴ（ハードウェアマルチスレッド）という技術を利用すれば、従来、ソフトウェアにより実現していた複数プログラムの同時実行をハードウェアにより実現することができる。ハードウェアで実現することで、プログラムの切り替え時のオーバヘッドをほぼゼロにできる。また、開発済みのプログラム（アプリＸ、Ｙ）を、修正することなく又は修正部を最小限にして統合ＥＣＵ２００に搭載できるので、統合ＥＣＵ２００の開発費を削減できることも期待される。なお、機能統合する対象となるＥＣＵは、図３に示したものに限定されることはなく、エンジンＥＣＵと、ブレーキＥＣＵ、ハイブリッドＥＣＵ等の制御系のＥＣＵを統合してもよいし、ボディＥＣＵやナビゲーション用のＥＣＵを統合してもよい。３つ以上のＥＣＵを統合してもよい。
【００３３】
本実施例では、ＥＣＵ＿ＡのEEPROM100とＥＣＵ＿ＢのEEPROM100の合計容量よりも、統合ＥＣＵ２００のEEPROM100の容量を小さくする。こうすることで、機能統合によるEEPROM100の容量の増大やタスクタイムの増大を抑制することができる。EEPROM100は、電気的に書き換え可能なＲＯＭ（不揮発メモリ）であればよく、フラッシュメモリ、FeRAM 、MRAM等、半導体の構造は問わない。
なお、統合ＥＣＵ２００のマイコン１９は、この他、ＣＰＵ、後述するＲＡＭ３２、内部バス、入出力I/F等を有している。 
〔EEPROM100のデータ構造〕
図４は、EEPROM100のデータ構造の一例を示す。図２にて説明したように、EEPROM100は４つの領域を有する。本実施例では、各領域の位置は固定であるとする。EEPROM100の決まったアドレス（例えば、先頭アドレスから所定範囲）には、各領域の境界アドレス（各領域の開始アドレス）が記憶されている。例えば、先頭アドレスから２Ｂｙｔｅずつ順番に、Ｘ領域とＡ領域のＸ／Ａ境界アドレス、Ａ領域とＢ領域のＡ／Ｂ境界アドレス、Ｂ領域とＣ領域のＢ／Ｃ境界アドレス、が記憶されている。なお、領域を４つ以上に区分してもよい。
【００３４】
Ｘ領域には、初期設定用（デフォルト用）のデータ等、消去することが好ましくない重要なデータが記憶されており、アプリＸやアプリＹが新たにデータを書き込むことはできない。
【００３５】
Ａ領域には、アプリＸ及びアプリＹが扱うデータのうち重要度が高いデータが記憶される。なお、この「扱うデータ」とは、アクセスするデータをいい、アプリＸ及びアプリＹが生成するデータ、及び、すでにEEPROM100に記憶されており一時的に読み出されたデータの両方を含む。そして、Ａ領域のデータは、予め定めた保存期間Ａの間、上書きされないことが保証されている。図４では一例として保存期間Ａを「１ヶ月」とした。
【００３６】
同様に、Ｂ領域には、アプリＸ及びアプリＹが扱うデータのうち重要度が中程度のデータが記憶される。また、Ｂ領域のデータは、予め定めた保存期間Ｂの間、上書きされないことが保証されている。図４では一例として保存期間Ｂを「１週間」とした。
【００３７】
同様に、Ｃ領域には、アプリＸ及びアプリＹが扱うデータのうち重要度が低いデータが記憶される。そして、Ｃ領域のデータは、Ｃ領域に格納されてから経過した時間が最も長いデータから消去される。したがって、Ｃ領域のデータは、最短で、EEPROM100のデータ更新の度に消去されることがあるが、Ｃ領域のデータに保存期間を定めないことで、EEPROM100の容量を小さくすることができる。
【００３８】
なお、アプリＸがＡ領域に記憶するデータは、例えば、車両の減速度が所定値以上になった時刻又は衝撃を検出した時刻の、前後の数秒の画像データ、Ｂ領域に記憶するデータはこれら時刻より相対的に離れた数秒の画像データ等である。また、アプリＹがＡ領域に記憶するデータは、例えば、センサ値そのものであり、Ｂ領域に記憶するデータはセンサ値に付随するデータである。すなわち、共通の事象に発生した複数のデータでも、重要なデータはＡ領域に記憶される。
【００３９】
Ａ領域の空き容量と保存期間Ａについて説明する。保存期間Ａを「１ヶ月」としても、Ａ領域の最も古いデータの記憶時から「１ヶ月」経過する前に、Ａ領域に空き容量がなくなる状況が生じうる。この場合、Ａ領域の最も古いデータをＢ領域に移動することで、Ａ領域に空き容量を生じさせることができる。また、Ａ領域で最も古いデータが「１ヶ月」経過する前にＢ領域に移動されても、Ｂ領域でさらに「１週間」記憶されるので、合計で「１ヶ月」程度の間は記憶された状態を保つことができる。Ｂ領域についても同様である。
【００４０】
Ａ領域の最も古いデータが記憶時から「１ヶ月」経過していた場合は、Ａ領域からそのデータを消去すればよく、Ｂ領域に移動しない。
【００４１】
なお、Ａ領域の最も古いデータの記憶時から「１ヶ月」経過していても、例えば、Ｂ領域に空きがあることを条件に、Ｂ領域に移動してもよい。こうすることで、可能な限り、重要度の高いデータを記憶したままにすることができる。
【００４２】
図５は、各領域に記憶されたデータの遷移を模式的に説明する図の一例である。なお、データを記憶するのはアプリXやＹであるが、データを移動するのはアプリＸやＹに共通のＥＥＰＲＯＭ管理プログラム５０とする。ＥＥＰＲＯＭ管理プログラム５０については後述する。
【００４３】
図５ではアプリＸのデータＸA、ＸＢを例に説明するが、ＹＡ、ＹＢについても同様である。アプリＸは、データＸAを記憶する際、ＧＰＳ等や時計から時刻情報を取得する。時刻情報には、日付（２０１Ｘ年○月○日）と時刻（○時○分○秒）が含まれる。ＥＥＰＲＯＭ管理プログラム５０は、Ａ領域に、日付を「記憶日時」として時刻を「記憶時刻」として、データＸAと共に（例えば、データＸAの次のアドレスに）記憶する。
【００４４】
そして、ＥＥＰＲＯＭ管理プログラム５０は、データＸAをＢ領域に移動する際、記憶時刻をＢ領域に移動した移動日付Ｂに変更し、Ｂ領域に、データＸAと共に記憶する。データＸAがＡ領域に記憶されてから時間がたつと、記憶時刻の重要性は薄れるので、記憶時刻を移動日付Ｂに変更しても不都合は少ない。こうすることで、Ｂ領域に移動されたデータＸAが占める容量を、データＸAに記憶時刻を加えたままとするより低減することができる。
【００４５】
同様に、ＥＥＰＲＯＭ管理プログラム５０は、データＸAをＣ領域に移動する際、移動日付Ｂを、Ｃ領域に移動した移動日付Ｃに変更し、Ｃ領域に、データＸAと共に記憶する。こうすることで、Ｃ領域に移動されたデータＸAが占める容量を、データＸAに移動日付Ｂを加えたままとするより低減することができる。
【００４６】
データＸＢについては、最初に記憶される領域がＢ領域なので、Ｂ領域に記憶される際、データＸＢと共に記憶日時と記憶時刻が記憶される。そして、ＥＥＰＲＯＭ管理プログラム５０は、データＸＢをＣ領域に移動する際、記憶時刻を、Ｃ領域に移動した移動日付Ｃに変更し、Ｃ領域に、データＸＢと共に記憶する。
【００４７】
〔ＥＥＰＲＯＭ管理プログラム５０〕
図６は、ＥＥＰＲＯＭ管理プログラム５０の機能ブロック図の一例である。ＥＥＰＲＯＭ管理プログラム５０は、統合ＥＣＵ２００のＣＰＵが実行することで実現される、領域決定手段３４、残容量判定手段３５、データ特定手段３６、データ格納手段３７及びソート手段３８を有する。ＥＥＰＲＯＭ管理プログラム５０とマイコンが一体となって、特許請求の範囲の記憶装置を実現する。ＥＥＰＲＯＭ管理プログラム５０は、EEPROM100に記憶されていてもよいし、アプリＸ，Ｙに記述されていてもよいし、不図示のメモリに記憶されていてもよい。
【００４８】
アプリＸ，Ｙは、アプリに特有の処理を実行中、データアクセスの早いＲＡＭ３２にデータＸA等を，記憶している。このため、ＥＥＰＲＯＭ管理プログラム５０は、所定のタイミングで、ＲＡＭ３２のデータをEEPROM100に記憶する。
【００４９】
まず、領域決定手段３４は、データ毎に重要度を定めた重要度テーブル３１を参照して、データ毎に記憶先の領域を決定する。重要度テーブル３１により、データ毎に記憶先の領域も決定できる。重要度テーブル３１は、EEPROM100の決まったアドレスに記憶される。なお、ＲＡＭ３２に記憶されたデータにＸA等の表記があるわけではないので、領域決定手段３４はアプリＸ及びアプリＹからＲＡＭ３２に記憶されたデータの識別情報を取得しておく。また、ＲＡＭ３２の特定のアドレスには特定のアプリのデータが記憶されるようにしておいてもよい。
【００５０】
図示するように、領域決定手段３４は、データＸA、データＹＡをＡ領域に、データＸＢ、データＹＢをＢ領域に、データＸＣ、データＹＣをＣ領域に、それぞれ記憶すると決定する。
【００５１】
残容量判定手段３５は、各領域にデータを格納する空き容量があるか否かを判定する。空き領域があれば、その領域にデータを記憶すればよい。空き容量がない場合、残容量判定手段３５は、データ特定手段３６にデータの特定を要求する。
【００５２】
データ特定手段３６は、領域決定手段３４が決定した領域において、消去又は移動するデータを特定する。データ特定手段３６のデータの特定ルールは次のように表すことができる。
【００５３】
・Ａ（Ｂ）領域の場合
１．最も古いデータODを特定する
２．その最も古いデータODが保存期間Ａ（Ｂ）を超えているか否かを判定する
３-１．保存期間Ａ（Ｂ）を超えているデータODを消去の対象に決定する
３-２．保存期間Ａ（Ｂ）を超えていないデータODを移動の対象に決定する
・Ｃ領域の場合
１．最も古いデータODを特定する
２．その最も古いデータODを消去の対象に決定する
このデータの特定ルールによれば、Ａ領域に記憶されたデータについては、Ａ領域、Ｂ領域及びＣ領域のそれぞれで空き容量がなくならない限り消去されないので、EEPROM100に保存される期間を実質的に保存期間Ａよりも長くする可能性が高くなる。同様に、Ｂ領域に記憶されたデータについては、Ｂ領域及びＣ領域のそれぞれに空き容量がなくならない限り消去されないので、EEPROM100に保存される期間を実質的に保存期間Ｂよりも長くすることができる。
【００５４】
より具体的には、Ａ領域に記憶されたデータは、およそ、期待保存期間Ａ＝「１ヶ月」〜「１ヶ月＋１週間＋Ｃ領域で相対的により古いデータが全て消去されるまで」保存され、Ｂ領域に記憶されたデータは、期待保存期間Ｂ＝「１週間」〜「１週間＋Ｃ領域で相対的により古いデータが全て消去されるまで」保存される。また、Ｃ領域に記憶されたデータは、期待保存期間Ｃ＝「相対的により古いデータが全て消去されるまで」保存される。
【００５５】
ここで例として、Ａ領域にデータＸAを記憶する空き容量がなかった場合を説明する。データ特定手段３６は、空き容量のないＡ領域で、各データの記憶日付及び記憶時刻と現在時刻を比較して、最も古いデータＯＤを特定する。このデータＯＤをＢ領域に移動することで、データＸAをＡ領域に記憶することが可能になる。
【００５６】
データ特定手段３６は、データＸA／領域（この場合はＡ領域）／データＯＤをデータ格納手段に通知する。また、データ特定手段３６は、最も古いデータＯＤを残容量判定手段３５に通知する。データＯＤは重要度が高いので、優先的に領域Ｂに記憶する必要があるためである。したがって、残容量判定手段３５は、Ｂ領域にデータＯＤを格納する空き容量があるか否かを判定する。以降はこれらの処理の繰り返しになり、Ｂ領域にデータＯＤを格納する空き容量がない場合、データ特定手段３６は、Ｂ領域で最も古いデータＯＤを特定する。同様に、Ｂ領域のデータＯＤはＣ領域に優先的に記憶される。Ｃ領域に空き容量がない場合、Ｃ領域の最も古いデータが消去される。
【００５７】
すなわち、データ格納手段３７は、データＸAをＡ領域に記憶し、かつ、データＯＤをＢ領域にそれぞれ記憶する。また、必要であれば、Ｂ領域のデータＯＤをＣ領域に移動させ、Ｃ領域のデータＯＤを消去する。こうすることで、重要度の高いデータが、重要度の高い（保存期間が長い）領域に記憶されることになる。
【００５８】
そして、ＲＡＭ３２に記憶されていた全てのデータについて、領域Ａ〜Ｃへの記憶が完了すると、ソート手段３８が領域Ａ〜Ｃのデータをソートする。ソート順は、アプリがデータを利用しやすい順番とすればよい。また、アプリＸ、Ｙ毎に異なっていてもよい。本実施例では、アプリ毎に、記憶日付及び記憶時刻の降順（古い順）にソートするものとする。データに記憶時刻が記されていなければ、記憶日付のみでソートする。（以下、記憶日付と記憶時刻を区別せずに、単に「記憶日時」という）。
【００５９】
図７は、ソート手段３８によるソート結果を模式的に示す図の一例である。Ａ領域のＸA１〜ＸA３は、アプリＸが記憶した重要度の高いデータＸAを、記憶日付の降順に示す。Ｂ領域のＸA４〜ＸA５は、アプリＸが記憶した重要度の高いデータＸAのうち、Ｂ領域に移動されたデータＸAを、記憶日付の降順に示す。Ｂ領域の、ＸＢ１、ＸＢ２は、アプリＸが記憶した重要度が中程度のデータＸＢを、記憶日付の降順に示す。
【００６０】
同様に、Ａ領域の、ＹＡ１〜ＹＡ２は、アプリＹが記憶した重要度の高いデータＹＡを、記憶日時の降順に示す。Ｂ領域の、ＹＢ１〜ＹＢ３は、アプリＹが記憶した重要度が中程度のデータＹＢを、記憶日時の降順に示す。したがって、ソートすることにより、アプリＸ，Ｙは連続したアドレスにアクセスすれば各データにアクセスできることになる。
【００６１】
ソート手段３８は、各アプリＸ、Ｙが、それぞれのデータにアクセスできるように、ポインタを生成する。ポインタテーブル３３には、アプリ毎に、データＸAの開始アドレスと終了アドレスが登録される。例えば、アプリＸのデータは、Ａ領域では、ポインタ「ＰＳＸ１〜ＰＥＸ１」が示すアドレス範囲に、Ｂ領域では、ポインタ「ＰＳＸ２〜ＰＥＸ２」と「ＰＳＸ３〜ＰＥＸ３」が示すアドレス範囲に、記憶されていることが登録される。したがって、例えばアプリＸは、Ａ領域のデータＸA１〜ＸA３のみ、Ａ領域のデータＸA１〜ＸA３及びＢ領域のデータＸA４とＸA５、又は、アプリＸの全てのデータ、のように、所望のデータだけをEEPROM100から読み出すことができる。
【００６２】
すなわち、Ａ領域には１つのアプリに対し最大１つのアドレス領域しか存在せず、Ｂ領域とＣ領域には、１つのアプリに対し最大２つのアドレス領域しか存在しない。よって、Ａ領域に記憶されていたデータＸA４とＸA５だけを読み出すことや、最初からＢ領域に記憶されているデータＸＢ１とＸＢ２だけを読み出すことも容易である。
【００６３】
したがって、ソートすること及びポインタテーブル３３によって、記憶後に領域間でデータを移動しても、各アプリは所望のデータに自由にアクセスできることになる。なお、ポインタテーブル３３は、EEPROM100の決まったアドレスに記憶される。
【００６４】
〔EEPROM100への記憶手順〕
図８は、ＥＥＰＲＯＭ管理プログラム５０がEEPROM100にデータを記憶する手順を示すフローチャート図の一例である。図８の手順は、例えば、エンジンの停止時やメインシステム（ハイブリッド車や電気自動車の場合）の停止時にスタートする。エンジンの停止時のルーチンとして、ＥＥＰＲＯＭ管理プログラム５０が起動される。ＥＥＰＲＯＭ管理プログラム５０をアプリＸ，Ｙの一部に搭載してもよい。
【００６５】
なお、EEPROM100上でデータの書き変えを行うと、データの損失のおそれがあり、また、EEPROM100の書き換え回数が増加してしまうので、ＥＥＰＲＯＭ管理プログラム５０は、EEPROM100の全内容をＲＡＭ３２にコピーしてから以降の処理を実行する。
【００６６】
まず、領域決定手段３４は、ポインタテーブル３３を読み出す（Ｓ１０）。ポインタテーブル３３により、領域決定手段３４は各アプリ毎にデータを読み出すことができる。
【００６７】
次に、領域決定手段３４は、ＲＡＭ３２に記憶されているデータを、予め定められた順番に１つずつ読み出す（Ｓ２０）。予め定められた順番は、アプリの重要度に応じたアプリ毎、かつ、そのアプリが扱うデータの重要度順である。例えば、アプリＸのデータＸA、アプリＹのデータＹＡ、データＸＢ，データＹＢ、データＸＣ、データＹＣの順である。
【００６８】
領域決定手段３４は、ＲＡＭ３２から読み出したデータの記憶先の領域Ａ〜Ｃを、重要度テーブル３１を参照して決定する（Ｓ３０）。
【００６９】
そして、残容量判定手段３５は、Ｓ３０で決定した領域に空き容量があるか否かを判定する（Ｓ４０）。空き容量がある場合（Ｓ４０のＹｅｓ）、消去や移動の処理は不要なので、処理は、ステップＳ８０に進む。
【００７０】
空き容量がない場合（Ｓ４０のＮｏ）、消去や移動の処理が必要になるので、データ特定手段３６が、決定された領域内で、記憶されてから最も時間が経過しているデータＯＤを特定する（Ｓ５０）。
【００７１】
次の処理は、Ｓ３０で決定した領域がＡ領域とＢ領域のいずれか、又は、Ｃ領域かに応じて異なるが、結局、データ特定手段３６は、データＯＤを消去するか移動するかを決定する（Ｓ６０）。
【００７２】
・Ｓ３０で決定した領域がＡ領域とＢ領域のいずれかの場合
データ特定手段３６はデータＯＤがその領域に記憶されてからの経過時間が、保存期間Ａ、Ｂを超えているか否かを判定する。データ特定手段３６は、保存期間Ａ、Ｂを超えているデータＯＤを消去すると決定し、データ格納手段３７に記憶対象のデータ／領域／データＯＤを通知する。
【００７３】
保存期間Ａ、Ｂを超えていないデータＯＤは相対的に次に重要度の低い領域に移動すると決定し、データ格納手段３７に記憶対象のデータ／領域／データＯＤを通知する。移動の場合、データ特定手段３６は、移動すると決定したデータＯＤを残容量判定手段３５に通知する
・Ｓ３０で決定した領域がＣ領域の場合
データ特定手段３６はデータＯＤを消去すると決定し、データ格納手段３７に記憶対象のデータ／領域／データＯＤを通知する。
【００７４】
データＯＤを消去すると判定された場合、データ格納手段３７は通知されたデータＯＤを消去する（Ｓ７０）。
【００７５】
データＯＤを移動すると判定された場合、残容量判定手段３５は、データＯＤの移動先の領域に空き容量があるか否かを判定する（Ｓ４０）。ステップＳ４０〜７０により、ＲＡＭ３２のデータを記憶する空き容量を生成することができる。
【００７６】
次に、データ格納手段３７は、ＲＡＭ３２のデータを、EEPROM100のデータ構造を再現したＲＡＭ３２内に記憶する（Ｓ８０）。これにより、１つのデータをEEPROM100に格納する用意ができた。
【００７７】
次に、領域決定手段３４はＲＡＭ３２の全データの処理が完了したか否かを判定する（Ｓ９０）。全データの処理が完了していない場合（Ｓ９０のＮｏ）、ＥＥＰＲＯＭ管理プログラム５０は同じ処理をＲＡＭ３２の全データに繰り返す。全データの処理が完了した場合（Ｓ９０のＹｅｓ）、ソート手段３８が各領域Ａ〜Ｃのデータをソートする（Ｓ１００）。これにより、アプリ毎にデータを並べることができる。また、ソート手段３８は、ソート結果に従い、ポインタテーブル３３を更新する。そして、ソート手段３８は、ＲＡＭ３２内のデータをEEPROM100に書き戻す（Ｓ１１０）。以上で、EEPROM100への記憶手順が終了する。
【００７８】
以上説明したように、本実施例のＥＣＵは、重要なデータほど長く記憶されるようにすることで、EEPROM100の全容量をそれほど大きくしなくても、記憶すべきデータ量の増大に対応することができる。
【００７９】
〔変形例〕
各領域に記憶されてからの経過時間が保存期間を超えていなくても、各領域に空き容量がなくなった場合、データＯＤを移動することなく、データＯＤを消去してもよい。こうすることで、移動の処理が不要になり、また、ポインタテーブル３３の容量も削減できる。
【００８０】
この場合、データ特定手段３６のデータの特定ルールは次のように表すことができる。
【００８１】
・Ａ〜C領域について
１．最も古いデータを特定する
２．その最も古いデータを消去の対象に決定する
データODは、経過時間が保存期間を超えていなくても消去される可能性が高まるが、各領域Ａ〜Ｃに十分な容量を割り当てておくことで、実質的に、経過時間が保存期間を超えないようにすることができる。
【実施例２】
【００８２】
本実施例では、Ａ領域とＢ領域、Ｂ領域とＣ領域の境界を可変とするEEPROM100について説明する。
【００８３】
図９は、EEPROM100の記憶構造を模式的に説明する図の一例である。本実施例のEEPROM100の以下の特徴を有する。
（１）EEPROM100の領域が区分されており、各アプリはその重要度に応じてデータを領域Ａ〜Ｃに格納する。
（２）ある領域に空き容量がなくなると、各アプリは、記憶時から最も時間が経過しているデータを特定し、そのデータが領域に応じた重要度を保っているか否かを判定する。
（３）そのデータが領域に応じた重要度を保っている場合、各アプリは、Ａ領域又はＢ領域を拡大又は縮小する。
【００８４】
実施例１の図２にて説明したとおり、アプリＸが、データＸAをＡ領域に、データＸＢをＢ領域に、データＸＣを領域Ｃに、それぞれ記憶するとする。アプリＹは、データＹＡをＡ領域に、データＹＢをＢ領域に、データＹＣをＣ領域に、それぞれ記憶するとする。
【００８５】
そして、アプリＸがデータＸＢをＢ領域に記憶した後、Ｂ領域の空き容量がなくなった場合、アプリＹがデータＹＢをＢ領域に記憶する際、アプリＹは、Ｂ領域で最も重要度が低いデータ（説明のため、データＸＢとする）を特定し、Ｂ領域に応じた重要度を保っているか否かを判定する。具体的には、データＸＢがＢ領域に記憶されてからの経過時間が、閾値を超えるか否かを判定する。
【００８６】
データＸＢがＢ領域に応じた重要度を保ってる場合、アプリＹは、データＸＢを移動することなく、データＹＢをＢ領域に記憶する。Ｂ領域には、空き容量がないので、そのままではデータＹＢをＢ領域に記憶することができない。よって、ＥＥＰＲＯＭ管理プログラム５０は、Ｂ／Ｃアドレス境界を変更して、Ｂ領域を拡大する。図９では、Ｂ／Ｃアドレス境界が「３００」から「３１０」に変更されている。
【００８７】
こうすることで、Ａ領域とＢ領域に記憶されるデータについては、保存期間Ａ、Ｂ未満で消去されるデータをほぼゼロにすることができる。「ほぼ」としたのは、Ｃ領域の大きさが不十分だと、Ｂ領域の拡大が困難になりＢ領域のデータが、保存期間Ｂ未満で消去される可能性があるためである。しかし、Ｃ領域の大きさを適切に設定することで、Ａ領域とＢ領域に記憶されるデータについては、保存期間Ａ，Ｂ未満で消去されるデータをゼロにできるとしてよい。また、重要度の異なるデータが複数の領域に散在することがなくなり、また、ポインタの数も実施例１に比べて低減することができる。
【００８８】
したがって、EEPROM100の全容量をそれほど大きくしなくても、記憶すべきデータ量の増大に対応することができる。
【００８９】
〔EEPROM100のデータ構造〕
図９のデータ構造は、図４とほぼ同じであるが、本実施例では、Ｘ／Ａアドレス境界だけが固定であり、Ａ／Ｂアドレス境界とＢ／Ｃアドレス境界は可変である。この２つのアドレス境界は、上下のどちらにも移動する可能性がある。すなわち、Ａ領域に空き容量がない状態で、さらにＡ領域にデータを記憶する必要がある場合は、Ａ／Ｂアドレス境界の値は大きくなる（Ａ領域が大きくなる）。Ａ領域に十分な空き容量がある状態では、Ａ／Ｂアドレス境界の値は小さくなる（Ａ領域が小さくなる）。
【００９０】
なお、Ａ領域が小さくなりすぎないように、Ａ／Ｂアドレス境界には下限値が設けられている。一方、Ａ領域には重要度が高いデータが記憶されるので、Ａ／Ｂアドレス境界には上限値が設けられていない。
【００９１】
同様に、Ｂ領域に空き容量がない状態で、さらにＢ領域にデータを記憶する必要がある場合は、Ｂ／Ｃアドレス境界の値は大きくなる（Ｂ領域が大きくなる）。Ｂ領域に十分な空き容量がある状態では、Ｂ／Ｃアドレス境界の値は小さくなる（Ｂ領域が小さくなる）。
【００９２】
なお、Ｂ領域が小さくなりすぎないように、Ｂ／Ｃアドレス境界には下限値が設けられている。また、Ｂ領域を大きくしすぎるとＣ領域がなくなってしまうので、Ｂ／Ｃアドレス境界には上限値が設けられている。
【００９３】
実施例１と同様に、領域のデータには、保存期間Ａ（例えば「１ヶ月」）が定められており、Ｂ領域のデータには、保存期間Ｂ（例えば、「１週間」）が定められている。また、Ｃ領域のデータは、Ｃ領域に格納されてから最も時間の経過したデータから消去される。
【００９４】
したがって、保存期間Ａを「１ヶ月」とした場合、Ａ領域の最も古いデータＯＤの記憶時から「１ヶ月」経過する前に、Ａ領域に空き容量がなくなっても、保存期間Ａが経過する前にＡ領域のデータＯＤが消去されることがない。Ｂ領域のデータについても同様である。
【００９５】
図１０は、各領域の遷移を模式的に説明する図の一例である。図１０（ａ）では、既にＡ領域に空き容量がないが、データＹＡを記憶する必要が生じた状況である。Ａ領域には、保存期間Ａを過ぎたデータもない。この場合、ＥＥＰＲＯＭ管理プログラム５０は、図１０（ｂ）に示すように、Ａ／Ｂアドレス境界を大きくするように変更する。図では「２００」から「２１０」に変更されている。こうすることで、Ａ領域にデータＹＡを記憶することができる。
【００９６】
一方、図１０（ｂ）に示すように、Ｂ領域には空き容量がある。また、例えば、Ｂ領域には保存期間Ｂを過ぎたデータがあるとする。保存期間Ｂを過ぎたデータは消去してよいデータである。このように、Ｂ領域に所定値以上の空き容量がある場合、ＥＥＰＲＯＭ管理プログラム５０は、図１０（ｃ）に示すように、Ｂ／Cアドレス境界を小さくするように変更する。図では「３００」から「２９０」に変更されている。こうすることで、他の領域（この場合はC領域）に空き領域を提供でき、C領域のデータの保存期間を長くすることもできる。
【００９７】
〔ＥＥＰＲＯＭ管理プログラム５０〕
図１１は、ＥＥＰＲＯＭ管理プログラム５０の機能ブロック図の一例である。図１１において図６と同一部には同一の符号を付しその説明は省略する。図１１のＥＥＰＲＯＭ管理プログラム５０は、新たに領域移動手段３９を有する。
【００９８】
まず、実施例１と同様に、残容量判定手段３５は、領域決定手段３４が決定した領域にデータを格納する空き容量があるか否かを判定する。
【００９９】
（１）空き容量がない場合
空き容量がない場合、残容量判定手段３５は、データ特定要求／境界移動判定をデータ特定手段３６に通知する。データ特定手段３６は、領域内で消去するデータを特定するか、又は、アドレス境界の移動を要求するかを決定する。データ特定手段３６の決定ルールは次のように表すことができる。
【０１００】
・Ａ（Ｂ）領域の場合
１．最も古いデータODを特定する
２．その最も古いデータODが保存期間Ａ（Ｂ）を超えているか否かを判定する
３-１．保存期間Ａ（Ｂ）を超えているデータODを消去の対象に決定する
３-２．保存期間Ａ（Ｂ）を超えているデータがない場合、アドレス境界の移動を要求する。
【０１０１】
・Ｃ領域の場合
１．最も古いデータＯＤを特定する
２．その最も古いデータＯＤを消去の対象に決定する
（２）空き容量がある場合
残容量判定手段３５は、空き容量と閾値を比較して、アドレス境界を移動する必要があるか否かを判定する。空き容量が十分にあれば、残容量判定手段３５は、境界移動手段３９にアドレス境界の移動を要求する。各領域の空き容量を最適化するので、ある領域だけ空き容量がなくなりやすくなることを防止できる。また、アプリが扱うデータ量に応じて各領域のサイズを自動的に最適化できる。
【０１０２】
そして、境界移動手段３９は、アドレス境界の移動を要求されると、要求内容（拡大、縮小）と要求された境界に応じて、アドレス境界を移動するか否かを判定する。
【０１０３】
・Ａ／Ｂアドレス境界について
まず、拡大要求された場合、Ａ／Ｂアドレス境界には上限値が設けられていないので、境界移動手段３９は、予め定められたアドレスだけＡ／Ｂアドレス境界を移動する。また、縮小要求された場合、Ａ／Ｂアドレス境界には下限値が設けられているので、境界移動手段３９は、移動後のＡ／Ｂアドレス境界が下限値に到達するか否かを判定する。下限値に到達する場合は、下限値までＡ／Ｂアドレス境界を移動し、下限値に到達しない場合は、予め定められたアドレスだけＡ／Ｂアドレス境界を移動する。
【０１０４】
・Ｂ／Ｃアドレス境界について
まず、拡大要求された場合、Ｂ／Ｃアドレス境界には上限値が設けられているので、境界移動手段３９は、移動後のＢ／Ｃアドレス境界が上限値に到達するか否かを判定する。上限値に到達する場合は、上限値までＢ／Ｃアドレス境界を移動し、上限値に到達しない場合は、予め定められたアドレスだけＢ／Ｃアドレス境界を移動する。なお、上限値に到達する場合、Ｂ領域に新たなデータを記憶できないので、境界移動手段３９は、データＯＤを消去するようデータ特定手段３６に要求する。
【０１０５】
また、縮小要求された場合、Ｂ／Ｃアドレス境界には下限値が設けられているので、境界移動手段３９は、移動後のＢ／Ｃアドレス境界が下限値に到達するか否かを判定する。下限値に到達する場合は、下限値までＢ／Ｃアドレス境界を移動し、下限値に到達しない場合は、予め定められたアドレスだけＢ／Ｃアドレス境界を移動する。
【０１０６】
なお、境界移動手段３９は、移動後のアドレス境界でEEPROM100のアドレス境界を更新する。
【０１０７】
データ格納手段３７は、各領域の空き容量に、必要であればデータＯＤを削除した後、又は、必要であればアドレス境界が移動された後、データを記憶する。こうすることで、重要度に応じた領域に重要度に応じたデータが記憶されることになる。
【０１０８】
そして、ＲＡＭ３２に記憶されていた全てのデータについて、領域Ａ〜Ｃへの記憶が完了すると、ソート手段３８が領域Ａ〜Ｃのデータをソートする。ソート順は、実施例１と同様である。ソート手段３８は、領域毎かつアプリ毎に、記憶日時の降順にデータをソートするものとする。
【０１０９】
図１２は、ソート手段３８によるソート結果を模式的に示す図の一例である。Ａ領域のＸA１〜ＸA５は、アプリＸが記憶した重要度の高いデータＸAを、記憶日付の降順に示す。Ａ領域の、ＹＡ１、ＹＡ２は、アプリＹが記憶した重要度が高いデータＹＡを、記憶日付の降順に示す。また、Ｂ領域のＸＢ１、ＸＢ２は、アプリＸが記憶した中程度の重要度のデータＸＢを、記憶日付の降順に示す。また、Ｂ領域のＹＢ１〜３は、アプリＹが記憶した中程度の重要度のデータＹＢを、記憶日付の降順に示す。
【０１１０】
このように、１つの領域には同じ重要度のデータしか記憶されないので、各領域に各アプリに対応した１つのポインタがあればよく、実施例１に比べてポインタの数を低減できる。
【０１１１】
ソート手段３８は、各アプリＸ、Ｙが、それぞれのデータにアクセスできるように、ポインタを生成する。例えば、アプリＸのデータは、Ａ領域では、ポインタ「ＰＳＸ１〜ＰＥＸ１」が示すアドレス範囲に、Ｂ領域では、ポインタ「ＰＳＸ２〜ＰＥＸ２」が示すアドレス範囲に、記憶されていることが登録される。
【０１１２】
したがって、各アプリは、重要度が高いＡ領域のデータＸA１〜ＸA５のみ、Ｂ領域のデータＸＢ１〜ＸＢ２のみ、又は、アプリＸの全てのデータ、のように、所望のデータだけをEEPROM100から読み出すことができる。
【０１１３】
したがって、ソートすることによって、各アプリは所望のデータに自由にアクセスできることになる。なお、ポインタテーブル３３は、EEPROM100の決まったアドレスに記憶される。
【０１１４】
〔EEPROM100への記憶手順〕
図１３は、ＥＥＰＲＯＭ管理プログラム５０がEEPROM100にデータを記憶する手順を示すフローチャート図の一例である。図１３において図８と同一部の処理には同じステップ番号を付した。
【０１１５】
まず、領域決定手段３４は、ポインタテーブル３３を読み出す（Ｓ１０）。次に、領域決定手段３４は、ＲＡＭ３２に記憶されているデータを、予め定められた順番に１つずつ読み出す（Ｓ２０）。
【０１１６】
領域決定手段３４は、ＲＡＭ３２から読み出したデータの記憶先の領域Ａ〜Ｃを、重要度テーブル３１を参照して決定する（Ｓ３０）。
【０１１７】
そして、残容量判定手段３５は、Ｓ３０で決定した領域に空き容量があるか否かを判定する（Ｓ４０）。空き容量がある場合（Ｓ４０のＹｅｓ）、消去や移動の処理は不要なので、処理は、ステップＳ８０に進む。
【０１１８】
空き容量がない場合（Ｓ４０のＮｏ）、消去可能か否かを判定するため、データ特定手段３６が、決定された領域内で、記憶されてから最も時間が経過しているデータＯＤを特定する（Ｓ５０）。
【０１１９】
データ特定手段３６は、保存期間と、データＯＤが記憶されてからの経過時間を比較し、データＯＤを消去するか移動するかを判定する（Ｓ６０）。データＯＤがその領域に記憶されてからの経過時間が、保存期間を超えている場合、データ特定手段３６はデータＯＤを消去すると決定する。データ格納手段３７はデータＯＤを消去することができる（Ｓ７０）。
【０１２０】
データ特定手段３６は、データＯＤが保存期間を超えていない場合、アドレス境界の移動を境界移動手段３９に要求する。なお、ステップＳ６０のアドレス境界の移動要求は、境界の拡大の要求である。
【０１２１】
アドレス境界の移動要求に基づき、境界移動手段３９は、移動要求のあった境界がＡ／Ｂアドレス境界か、Ｂ／Ｃアドレス境界かを判定する（Ｓ７２）。Ａ／Ｂアドレス境界の場合、Ａ／Ｂアドレス境界の上限値に制限がないので、境界移動手段３９は、仮のＡ／Ｂアドレス境界を決定する（Ｓ７４）。「仮の」としたのは、実際にアドレス境界を移動するのは、ＲＡＭ３２の全データに対する処理が終わった後でよいからである。
【０１２２】
Ｂ／Ｃアドレス境界の場合、Ｂ／Ｃアドレス境界の上限値があるので、境界移動手段３９は、上限値を限度に仮のＢ／Ｃアドレス境界を決定する（Ｓ７６）。Ｓ７４、７６では、例えばデータ１つ分（例えば２バイト）、アドレス境界を移動すればよい。
【０１２３】
次に、データ格納手段３７は、ＲＡＭ３２のデータを、EEPROM100のデータ構造を再現したＲＡＭ３２内に記憶する（Ｓ８０）。これにより、１つのデータをEEPROM100に格納する用意ができた。領域決定手段３４はＲＡＭ３２の全データの処理が完了したか否かを判定する（Ｓ９０）。
【０１２４】
全データの処理が完了していない場合（Ｓ９０のＮｏ）、ＥＥＰＲＯＭ管理プログラム５０は同じ処理をＲＡＭ３２の全データに繰り返す。
【０１２５】
全データの処理が完了した場合（Ｓ９０のＹｅｓ）、残容量判定手段３５は、仮のＡ／Ｂ境界、仮のＢ／Ｃ境界に基づき、各領域の空き容量と閾値を比較して、アドレス境界を拡大方向に移動する必要があるか否かを判定する。そして、拡大方向に移動する必要がある場合、境界移動手段３９は、仮のＡ／Ｂアドレス境界又は仮のＢ／Ｃアドレス境界を移動する（Ｓ９２）。こうすることで、Ａ／Ｂアドレス境界とＢ／Ｃアドレス境界を決定できた。
【０１２６】
次に、ソート手段３８が各領域Ａ〜Ｃのデータをソートする（Ｓ１００）。すなわち、新たに決まった、領域Ａ〜Ｃの先頭アドレスを起点に、各アプリのデータをアプリ毎にソートする。これにより、アプリ毎にデータを並べることができる。また、ソート手段３８は、ソート結果に従い、ポインタテーブル３３を更新する。そして、ソート手段３８は、ＲＡＭ３２内のデータをEEPROM100に書き戻す（Ｓ１１０）。以上で、EEPROM100への記憶手順が終了する。
【０１２７】
以上説明したように、本実施例のＥＣＵは、Ａ領域とＢ領域を拡大できるので、保存期間未満で消去されるデータをほぼゼロにすることができる。また、重要度の異なるデータが複数の領域に散在することがなくなり、データの読み込みも容易になる。したがって、EEPROM100の全容量をそれほど大きくしなくても、記憶すべきデータ量の増大に対応することができる。
【符号の説明】
【０１２８】
３１        重要度テーブル
３２        ＲＡＭ
３３        ポインタテーブル
３４        領域決定手段
３５        残容量判定手段
３６        データ特定手段
３７        データ格納手段
３８        ソート手段
３９        領域移動手段
１００      ＥＥＰＲＯＭ
２００      統合ＥＣＵ
【図１】
2011198049.tif 000003
【図２】
2011198049.tif 000004
【図３】
2011198049.tif 000005
【図４】
2011198049.tif 000006
【図５】
2011198049.tif 000007
【図６】
2011198049.tif 000008
【図７】
2011198049.tif 000009
【図８】
2011198049.tif 000010
【図９】
2011198049.tif 000011
【図１０】
2011198049.tif 000012
【図１１】
2011198049.tif 000013
【図１２】
2011198049.tif 000014
【図１３】
2011198049.tif 000015