(57)【要約】【課題】更新データの書き込み時間を短縮するとともに、メモリの低寿命化を抑制可能なデータ記憶装置を提供する。【解決手段】ＥＣＵでは、メモリコントローラが、フラッシュメモリに対する更新データの書き込み制御を行う際に、更新データを、識別子に対応づけた上位データ部（変更頻度が少ないデータ部分）と下位データ部（変更頻度が多いデータ部分）とに分けて、各々予め割り当てられた異なるブロックに書き込むように構成し、さらに上位データ部については、同一のデータが上位用ブロック内に保持されている場合にその書き込みを行わないように構成した。これにより、上位データ部の書き込み機会が減少し、例えば下位データ部を書き込むだけで済む割合が増加すると、更新データをそのままの形態で書き込む場合と比較して、一回の書き込みに対するブロック内の使用領域を小さくすることが可能となり、更新データをブロック単位で消去する機会を減少できる。【選択図】図６
2014215628.tif 000002
【特許請求の範囲】
【請求項１】
他のデータと区別するための識別子を含む更新データを取得するデータ取得手段（Ｓ１１０〜Ｓ１２０）と、
データを複数書き込むことが可能なブロック単位で該データを消去する必要があるメモリであって、複数のブロック（３３）を有する不揮発性メモリ（１８）と、
前記データ取得手段によって取得した更新データを前記不揮発性メモリのブロック内に順次書き込み、該書き込みの古いデータをブロック単位で消去しつつ、該書き込みの新しいデータを優先的に保持する書き込み制御を行うメモリ制御手段（Ｓ２１０〜Ｓ２５０）と、
を備え、
前記更新データのうち前記識別子を除くデータ部は、変更頻度が比較的少ない上位データ部と、変更頻度が比較的多い下位データ部とによって構成されており、
前記識別子に対応づけられた上位データ部を上位更新データ、前記識別子に対応づけられた下位データ部を下位更新データとし、
前記メモリ制御手段は、前記書き込み制御を行う際に、前記上位更新データと前記下位更新データとを、前記不揮発性メモリにおいて各々予め割り当てられた異なるブロック内に書き込むこと、および前記上位更新データについて同一のデータがブロック内に保持されている場合には、該書き込みを行わないことを特徴とするデータ記憶装置。
【請求項２】
前記識別子毎に前記データ部の構成として前記上位データ部と前記下位データ部との区分を示す構成テーブルを記憶する記憶手段（１７）を備え、
前記メモリ制御手段は、前記書き込み制御を行う際に、前記データ取得手段によって取得した更新データに含まれている識別子に基づいて、前記記憶手段に記憶されている構成テーブルを参照し、該更新データを構成する上位データ部および下位データ部を特定することを特徴とする請求項１に記載のデータ記憶装置。
【請求項３】
前記データ取得手段によって取得した更新データについて、前回取得分と今回取得分とを比較し、前記データ部のうち変更のある部分を前記下位データ部、変更のない部分を前記上位データ部として、前記構成テーブルを更新するテーブル更新手段（Ｓ１３０〜Ｓ２００）を備えることを特徴とする請求項２に記載のデータ記憶装置。
【請求項４】
前記識別子毎に前記不揮発性メモリにおける前記上位更新データおよび前記下位更新データの格納場所を示す管理テーブルを記憶する記憶手段（１７）を備え、
前記メモリ制御手段は、前記書き込み制御を行う際に、前記データ取得手段によって取得した更新データに含まれている識別子に前記格納場所を対応づけることにより、前記記憶手段に記憶されている管理テーブルを更新することを特徴とする請求項１ないし請求項３のいずれか１項に記載のデータ記憶装置。
【請求項５】
前記不揮発性メモリは、ＮＯＲ型フラッシュメモリであることを特徴とする請求項１ないし請求項４のいずれか１項に記載のデータ記憶装置。
【請求項６】
前記下位データ部は、前記上位データ部と比較してデータ量が小さいことを特徴とする請求項１ないし請求項５のいずれか１項に記載のデータ記憶装置。
【請求項７】
車両に設けられた検出装置から入力される検出データに基づいて、予め割り当てられた制御対象機器を制御する車両制御手段（１６）を備え、
前記データ取得手段は、前記検出データ、および前記車両制御手段が前記制御対象機器を制御するために生成した指令データの少なくとも一方である制御データ、あるいは車載ネットワークを介して他の電子制御ユニットから受信した前記制御データを、前記更新データとして取得することを特徴とする請求項１ないし請求項６のいずれか１項に記載のデータ記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、各種のデータを記憶するデータ記憶装置に関する。
【背景技術】
【０００２】
従来、例えば車載用データ記憶装置では、一般的に、データを蓄積するメモリとして、これらデータについて書き換え可能で電源を供給しなくても記憶を保持でき、且つ、磁気ヘッドや位置決め用のアクチュエータといったメカニックな機構をもたないことで衝撃や振動に強く、小型、軽量、高速起動、低消費電力などハードディスクドライブ（ＨＤＤ）よりも多くの長所をもつフラッシュメモリが用いられる。
【０００３】
但し、フラッシュメモリでは、データの消去回数の上限値が仕様上定められていることから、データの消去回数をなるべく減らすために、複数のメモリセルからなる「ブロック」という単位で、一括してデータを消去してからでないと、同じブロックに新たなデータを書き込むことができないようになっている。
【０００４】
このため、通常、車載用データ記憶装置では、フラッシュメモリにおける複数のブロックのうち、あるブロック内の先頭から最後尾まで更新性を有する複数種のデータ（更新データ）を全て書き込むと、そのブロックにおいてデータの種類毎に最新の更新データを次のブロックに書き換えておくことで、例えば空き容量を確保する場合などに、書き込みの新しい全種の更新データが消去されないようにしている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−１１８８９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来の車載用データ記憶装置では、更新データをそのままの形態でブロック内に順次書き込むため、一回の書き込みに対するブロック内の使用領域が比較的大きいことにより、その書き込み時間が長くなったり、データの消去回数が多くなること伴ってフラッシュメモリの低寿命化に繋がっていたりする可能性があった。
【０００７】
本発明は、上記課題を解決するためになされたものであり、更新データの書き込み時間を短縮するとともに、メモリの低寿命化を抑制可能なデータ記憶装置の提供を目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するためになされた本発明は、他のデータと区別するための識別子を含む更新データを取得するデータ取得手段と、不揮発性メモリと、データ取得手段によって取得した更新データを不揮発性メモリのブロック内に順次書き込み、その書き込みの古いデータをブロック単位で消去しつつ、その書き込みの新しいデータを優先的に保持する書き込み制御を行うメモリ制御手段とを備えるデータ記憶装置である。
【０００９】
なお、不揮発性メモリは、データを複数書き込むことが可能なブロック単位でこれらデータを消去する必要があるメモリ（例えば、フラッシュメモリ）であって、複数のブロックを有するものである。また、更新データ（更新性を有するデータ）のうち識別子を除くデータ部は、変更頻度が比較的少ない上位データ部と、変更頻度が比較的多い下位データ部とによって構成される。つまり、更新データにおいては、ほとんど変更されないデータ部としての上位データ部と、頻度よく変更されるデータ部としての下位データ部とが存在している。
【００１０】
ここで、本発明では、上記識別子に対応づけられた上位データ部を上位更新データ、上記識別子に対応づけられた下位データ部を下位更新データとし、メモリ制御手段が、書き込み制御を行う際に、上位更新データと下位更新データとを、不揮発性メモリにおいて各々予め割り当てられた異なるブロック内に書き込むように構成し、且つ、上位更新データについて同一のデータがブロック内に保持されている場合には、その書き込みを行わないように構成した。
【００１１】
このような構成では、データ記憶装置が更新データを取得すると、不揮発性メモリにおいて、例えば下位更新データはブロック内に順次書き込まれ得るものの、上位更新データは既に同じ内容のものがブロック内に存在しない場合に限って書き込まれることになるため、上位更新データの書き込み機会が減少していくことになる。
【００１２】
そして、書き込み制御において例えば下位更新データを書き込むだけで済む割合が増加すると、更新データをそのままの形態でブロック内に順次書き込む場合と比較して、一回の書き込みに対するブロック内の使用領域を小さくすることが可能となるため、その書き込み時間を短くすることができる。また、一回の書き込みに対するブロック内の使用領域が小さくなることに伴って、不揮発性メモリにおける書き込み数を増大させることが可能となるため、データをブロック単位で消去する機会を減らすことができる。
【００１３】
したがって、本発明によれば、更新データの書き込み時間を短縮するとともに、メモリの低寿命化を抑制することができる。
なお、更新データのデータ部を構成する上位データ部および下位データ部は、予め静的に区分されていてもよいし、データ記憶装置が動的に区分するようにしてもよい。いずれの場合であっても、識別子毎にデータ部の構成として上位データ部と下位データ部との区分を示す構成テーブルを記憶する記憶手段を備え、メモリ制御手段が、書き込み制御を行う際に、データ取得手段によって取得した更新データに含まれている識別子に基づいて、記憶手段に記憶されている構成テーブルを参照し、その更新データを構成する上位データ部および下位データ部を特定するとよい。
【００１４】
このように構成することで、更新データに上位データ部および下位データ部を区分するための特別な情報を付加することなく、上位データ部および下位データ部を特定することが可能となるため、本発明を構成する各手段を既存のデータ記憶装置に比較的簡易に組み込むことができる。
【００１５】
また、動的に上位データ部および下位データ部を区分する場合、本発明では、テーブル更新手段が、データ取得手段によって取得した更新データについて、前回取得分と今回取得分とを比較し、データ部のうち、変更のある部分を下位データ部、変更のない部分を上位データ部として、構成テーブルを更新するとよい。
【００１６】
このような構成では、更新データを取得する毎に上位データ部および下位データ部の区分を動的に学習していくことになるため、予めこれらの区分を静的に決めておく必要がなくなり、これにより、装置設計にかかる従事者の作業負担を軽減することができる。
【００１７】
なお、本発明では、上位更新データと下位更新データとが個別に分かれて各々異なるブロック内に格納されることになるが、上位更新データと下位更新データとの双方が上記識別子に対応づけられているため、更新データを読み出す際には、この識別子を手掛かりにして上位更新データおよび下位更新データを読み出し、上位データ部と下位データ部とを結合することができる。
【００１８】
具体的には、本発明において、上位更新データは、識別子と上位データ部とによって構成され、下位更新データは、識別子と下位データ部とによって構成され、これら上位更新データおよび下位更新データが不揮発性メモリにおいて各々異なるブロック内に書き込まれる態様であってもよい。あるいは、上位更新データは、上位データ部そのものであり、下位更新データは、下位データ部そのものであってもよい。
【００１９】
特に後者の場合、本発明では、上記識別子毎に不揮発性メモリにおける上位更新データ（つまり、上位データ部）および下位更新データ（つまり、下位データ部）の格納場所を示す管理テーブルを記憶する記憶手段を備え、メモリ制御手段が、書き込み制御を行う際に、データ取得手段によって取得した更新データに含まれている識別子にこれらの格納場所を対応づけることにより、記憶手段に記憶されている管理テーブルを更新するとよい。
【００２０】
このような構成では、更新データを読み出す際に、その更新データに対応する識別子に基づいて管理テーブルを参照することで、その更新データに対応する上位データ部および下位データ部を容易に読み出すことが可能となるため、データの読み出しにかかる処理負担を軽減するとともに、読み出し時間を短縮することができ、ひいては好適に上位データ部と下位データ部とを結合することができる。
【００２１】
また、本発明において、不揮発性メモリは、例えばフラッシュメモリである場合、ソース線とビット線の間に複数のメモリセルが直列に接続されてなる周知のＮＡＮＤ型フラッシュメモリでもよいが、ソース線とビット線の間に１個のメモリセルが接続されてなる周知のＮＯＲ型フラッシュメモリであることが好ましい。
【００２２】
このようなＮＯＲ型フラッシュメモリであれば、ＮＡＮＤ型フラッシュメモリよりも少ないビット単位での書き込みが可能となるため、データ量にハード構成を合わせこむ必要性を軽減することができ、ひいてはハード構成の自由度を向上させることができる。なお、ＮＡＮＤ型フラッシュメモリであれば、複数のメモリセルからなるページ単位でデータを書き込む必要があるため、上位更新データや下位更新データを領域内に効率よくページ単位で書き込めるようにハード構成を予め合わせこむ必要性が大きくなることを付言しておく。
【００２３】
ところで、本発明では、更新データにおいて、下位データ部が、上位データ部と比較してそのデータ量が小さい方が、更新データの書き込み時間をより短縮することができ、書き込み制御において例えば下位更新データを書き込むだけでよくなる割合が増加することに伴って、メモリの低寿命化をより抑制することができる。
【００２４】
また、本発明のデータ記憶装置は、車両に設けられた検出装置から入力される検出データに基づいて、予め割り当てられた制御対象機器を制御する車両制御手段を備える電子制御ユニットであり、データ取得手段が、検出データ、または車両制御手段が制御対象機器を制御するために生成した指令データを、更新データとして取得する構成でもよいし、車載ネットワークを介して他の電子制御ユニットから受信した制御データを、更新データとして取得する構成でもよい。
【００２５】
これらのような構成によれば、検出データや指令データといった車両を制御するための制御データを不揮発性メモリに記憶する際に、このようなデータの書き込み時間を短縮することができ、メモリの低寿命化をより抑制することができる。
【図面の簡単な説明】
【００２６】
【図１】データ記憶装置の構成を例示するブロック図である。
【図２】構成テーブルおよび管理テーブルの構成を例示する説明図である。
【図３】不揮発性メモリの構成を例示するイメージ図である。
【図４】メモリコントローラ１９が行う書込制御処理の内容を示す第１のフローチャートである。
【図５】メモリコントローラ１９が行う書込制御処理の内容を示す第２のフローチャートである。
【図６】上位データ部と下位データ部との区分を例示する説明図である。
【図７】メモリコントローラ１９による書き込み制御を説明するためのイメージ図である。
【図８】メモリコントローラ１９が行う読出制御処理の内容を示す第２のフローチャートである。
【発明を実施するための形態】
【００２７】
以下に、本発明の実施形態であるデータ記憶装置としての電子制御ユニット（以下「ＥＣＵ」）について図面と共に説明する。なお、本実施形態のＥＣＵ１０は、車両に搭載されるＥＣＵであり、他のＥＣＵと通信バス５を介して互いに自車両を制御するためのデータ（制御データ）を送受信することで、他のＥＣＵと制御データを共有するように構成されるものである。
【００２８】
＜ＥＣＵの構成＞
図１に示すように、本実施形態のＥＣＵ１０は、通信バス５への制御データの送出、通信バス５から自ＥＣＵにとって必要な制御データの取込を行うトランシーバ１１と、所定のプロトコルに従って通信バス５を介した通信を制御する通信コントローラ１２と、通信コントローラ１２を制御して他のＥＣＵとの通信を行うことにより、他のＥＣＵと連動して、自ＥＣＵに割り当てられた各種機能を実現するための各種処理を実行するマイクロコンピュータ（以下「マイコン」）１３と、自車両に搭載されたバッテリ７からの入力電圧を内部電圧に変換し、各部１１〜１３への電源供給を行う電源回路１４とを備えている。
【００２９】
マイコン１３は、各種のプログラムが格納されたＲＯＭ１５と、ＲＯＭ１５に記憶されているプログラムに基づいて各種処理を実行するＣＰＵ１６と、各種処理実行時のワークメモリとなるＲＡＭ１７と、後述する更新データを記憶するためのフラッシュメモリ１８と、ＣＰＵ１６の指令に従ってフラッシュメモリ１８に対する更新データの読み書きを行うメモリコントローラ１９とを備えている。
【００３０】
また、マイコン１３は、車両に設けられた各種センサやスイッチ類といった検出装置（非図示）に接続されており、ＣＰＵ１６が、これらの検出装置から入力されるデータ（以下「検出データ」という）に基づいて、自ＥＣＵに割り当てられた制御対象機器を制御する（例えばアクチュエータやモータ等を作動させる）ように構成されている。
【００３１】
ＲＯＭ１５には、ＣＰＵ１６がアクセス可能に接続されており、制御対象機器を制御するための各種アプリケーションソフト（以下「上位アプリ」という）や、メモリコントローラ１９に出力する各種指令を生成するためのドライバソフトウェア（以下「下位ソフト」という）が記憶されている。
【００３２】
そして、ＣＰＵ１６は、ＲＯＭ１５に記憶されている上位アプリに基づき、制御対象機器を制御するためのデータ（以下「指令データ」）を生成するとともに、この指令データを制御対象機器に出力することにより、制御対象機器を作動させるようになっている。
【００３３】
また、ＣＰＵ１６は、ＲＯＭ１５に記憶されている上位アプリに基づき、上記指令データや検出データといった各種データ（以下「制御データ」という）を、通信コントローラ１２を介して通信バス５に定期的に送出する。そして、これらの制御データ（他のＥＣＵから通信コントローラ１２を介して受信した制御データを含む）のうち、必要なデータを更新データとしてフラッシュメモリ１８に記憶させる書込指令をメモリコントローラ１９に出力する。詳細には、ＣＰＵ１６は、ＲＯＭ１５に記憶されている下位ソフトに基づき、自ＥＣＵや他のＥＣＵによって定期的に生成されて更新性を有するデータ（更新データ）をＲＡＭ１７に一時記憶させ、ＲＡＭ１７においてこの更新データが格納されたアドレスを示す情報（以下「更新データ情報」という）を含む書込指令をメモリコントローラ１９に出力する。
【００３４】
また、ＣＰＵ１６は、上位アプリに基づく各種処理の実行時に、必要に応じて、フラッシュメモリ１８に格納されている更新データのうち、最新の更新データ（以下「有効データ」という）を読み出すための読出指令をメモリコントローラ１９に出力する。詳細には、ＣＰＵ１６は、ＲＯＭ１５に記憶されている下位ソフトに基づき、必要な更新データを特定するための情報（以下「識別子」という）を含む読出指令をメモリコントローラ１９に出力する。
【００３５】
なお、識別子は、他の更新データと区別するためにユニークに割り当てられたものであり、それ自体に更新データの種類を示す情報（以下「データ種類情報」という）は含まれていないものとする。このため、ＲＯＭ１５に記憶されている下位ソフトには、識別子とデータ種類情報とを対応づけたテーブルが記述されており、ＣＰＵ１６は、このテーブルを参照して必要な更新データに対応する識別子を特定するようになっている。
【００３６】
また、識別子は、更新データにも含まれている。このため、メモリコントローラ１９は、ＣＰＵ１６からの読出指令に含まれている識別子に基づいて、ＣＰＵ１６が必要な更新データをフラッシュメモリ１８から読み出して、ＣＰＵ１６に供給することが可能になっている。
【００３７】
ここで、更新データは、前述のように、自ＥＣＵや他のＥＣＵによって定期的に生成されて更新性を有するデータであるが、実際にはデータ種類情報を含むほとんど変更されないデータ、換言すれば、変更頻度が比較的少ないデータ（以下「上位データ部」という）と、制御データに含まれる制御値のようにほぼ毎回変更されるデータ、換言すれば、変更頻度が比較的多いデータ（以下「下位データ部」という）とを有している。つまり、更新データは、上位データと下位データ部とからなるデータ部、および上記識別子によって構成されている。
【００３８】
このうち、上位データ部は、例えば、ＥＣＵ１０が制御対象機器として車両ドアの開閉制御（ロック／アンロック制御を含む）を行うＥＣＵである場合、更新データとしての検出データが、例えば車両ドアの開閉状態を示すセンサから入力されたデータであるのか、ロック／アンロックの状態を検出するセンサから入力されたデータであるのか等を示すことになる。
【００３９】
また例えば、上位データ部は、ＥＣＵ１０が制御対象機器としてエンジンの制御を行うＥＣＵである場合、更新データとしての指令データが、エンジンにおけるスロットル開度を調整する制御に関するデータであるのか、ガソリン等の噴出量やタイミングを調整する制御に関するデータであるのか、混合気に点火するタイミングを調整する制御に関するデータであるのか等を示すことになる。
【００４０】
また例えば、上位データ部は、更新データとしての指令データが、ＣＰＵ１６によってイグニッション回数（または車両キーの操作回数）を算出するためにカウンタ（非図示）をインクリメント／デクリメントしたことを示すデータであるのか、ＣＰＵ１６によってドアの開閉回数を算出するためにカウンタをインクリメント／デクリメントしたことを示すデータであるのか等も示すことになる。
【００４１】
このように、上位データ部が冗長なデータになりがちであるのに対し、下位データ部は、例えば、カウンタ値のようにインクリメント／デクリメントのいずれか一方を示すデータであったり、各種の指令値や検出値（つまり制御値）だけを示すデータであったりするため、上位データ部と比較してそのデータ量が極めて小さいものとなる。この点に着目し、後述するように、メモリコントローラ１９は、更新データをフラッシュメモリ１８に格納する際に、上位データ部と下位データ部とを分けて書き込み、上位データ部については同一のデータがフラッシュメモリ１８に既に記憶されている場合には、その書き込みを行わず、下位データ部だけを書き込むことにより、フラッシュメモリ１８の使用領域を節約するようにしている。
【００４２】
ＲＡＭ１７には、ＣＰＵ１６およびメモリコントローラ１９がアクセス可能に接続されており、ＣＰＵ１６が各種処理実行時のワークメモリとして使用する他、メモリコントローラ１９がフラッシュメモリ１８の読み書き時にワークメモリとして使用する領域として、構成テーブル２１および管理テーブル２２が記憶されるように構成されている。
【００４３】
図２に示すように、構成テーブル２１は、各更新データに含まれている識別子毎に、その更新データを構成する上位データ部と下位データ部とからなるデータ部の長さを示すデータ長と、そのデータ部において上位データ部と下位データ部とが切り分けられる部分を下位データ部の最後尾から数えたデータ量を示す切り分けバイト数とによって、上位データ部と下位データ部と区分を示す情報（以下「データ部区分情報」という）が記述されるようになっている。また、構成テーブル２１には、各更新データに含まれている識別子毎に、メモリコントローラ１９によってデータ部区分情報が更新された回数（更新回数）が記述されるようになっている。
【００４４】
管理テーブル２２は、各更新データに含まれている識別子毎に、その更新データを構成する上位データ部と下位データ部がフラッシュメモリ１８において各々格納された記憶先（上位記憶先、下位記憶先）を示す情報（以下「データ部記憶先情報」という）が記述されるようになっている。なお、後述するように、上位データ部と下位データ部とは、フラッシュメモリ１８において各々異なるブロックに格納されるようになっており、このデータ部記憶先情報は、各ブロックにおいて識別子毎に最も直近に格納された新しいデータ（以下「有効データ」という）の記憶先を示すことになる。
【００４５】
＜フラッシュメモリの構成＞
次に、フラッシュメモリ１８の構成について説明する。
フラッシュメモリ１８は、更新データについて書き換え可能で電源を供給しなくても記憶を保持できる不揮発性メモリであり、メモリコントローラ１９による有効データの読み出しや、各ブロックに格納された所定量の比較的古いデータ（以下「無効データ」という）の記憶を保持するために用いられる。なお、無効データは、例えば車両の故障診断機能によって車両の不具合を検出したとき等に、ダイアグツール（非図示）によってその不具合の箇所や原因を特定するための解析用データとして使用されることもある。
【００４６】
また、フラッシュメモリ１８は、１バイト単位の書き換え（消去と書き込み）ができず、その消去回数の上限値が仕様上定められている都合上、データの消去回数をなるべく減らすために、データを複数書き込むことが可能なブロック単位でデータを消去する必要のあるメモリである。本実施形態では、上記フラッシュメモリ１８として、図３（ａ）に示すように、複数のメモリセル３１によって表されるアドレス３２に更新データを書き込み、複数のアドレス３２を有するブロック３３単位で更新データを消去する必要のあるＮＯＲ型フラッシュメモリが採用されている。
【００４７】
また、フラッシュメモリ１８は、図３（ｂ）に示すように、複数のブロック３３を有しており、更新データのうち下位データ部を書き込むために多くのブロック３３が使用され、残りのブロック３３が上位データ部を書き込むために使用されるようになっている。なお、以下では、上位データ部が書き込まれるブロック３３を上位用ブロック３３ａ、下位データ部が書き込まれるブロック３３を下位用ブロック３３ｂと称する。
【００４８】
＜メモリコントローラの制御＞
次に、メモリコントローラ１９が行う書込制御処理について、図４および図５のフローチャートに沿って説明する。
【００４９】
図４に示すように、本処理の前段処理が開始されると、まず、Ｓ１１０では、メモリコントローラ１９は、ＣＰＵ１６から更新データ情報を含む書込指令を入力したか否かを判断し、ここで肯定判断した場合には、Ｓ１２０に移行し、否定判断した場合には、このような書込指令の入力がなされるまで待機する。
【００５０】
Ｓ１２０では、Ｓ１１０で受信した書込指令に含まれている更新データ情報に基づき、フラッシュメモリ１８への書き込み対象となる更新データ（以下「対象データ」という）を、ＲＡＭ１７から読み出すことで取得する。
【００５１】
続くＳ１３０では、Ｓ１２０で読み出した対象データに含まれている識別子（以下「対象識別子」という）に基づいて、ＲＡＭ１７に記憶されている構成テーブル２１を参照し、この対象識別子に対応するデータ部区分情報（上位データ部と下位データ部との区分を示す情報）が存在するか否かを判断して、ここで肯定判断した場合には、Ｓ１４０に移行し、否定判断した場合には、Ｓ１６０に移行する。
【００５２】
Ｓ１４０では、ＲＡＭ１７に記憶されている構成テーブル２１を参照し、Ｓ１３０におけるデータ部区分情報の更新回数が所定の閾値回数以上であるか否かを判断して、ここで肯定判断した場合には、Ｓ１５０に移行し、否定判断した場合には、Ｓ１６０に移行する。なお、ここでの閾値回数は、Ｓ１２０で読み出した対象データについて、上位データ部と下位データ部との区分を動的に設定する（学習する）ために必要な回数として予め設定されたものであり、Ｓ１３０におけるデータ部区分情報の更新回数が閾値回数以上であれば、以降、その対象データに関してはデータ部区分情報を用いて上位データ部と下位データ部とを特定するようにしている。
【００５３】
Ｓ１５０では、ＲＡＭ１７に記憶されている構成テーブル２１を参照し、Ｓ１３０におけるデータ部区分情報に基づいて、対象データを構成する上位データ部と下位データ部とを特定し、Ｓ２１０に移行する。
【００５４】
一方、Ｓ１６０では、ＲＡＭ１７に記憶されている管理テーブル２２を参照し、Ｓ１３０における対象識別子に対応するデータ部記憶先情報が存在するか否かを判断して、ここで肯定判断した場合には、Ｓ１７０に移行し、否定判断した場合には、Ｓ２００に移行する。
【００５５】
Ｓ１７０では、ＲＡＭ１７に記憶されている管理テーブル２２を参照し、Ｓ１６０におけるデータ部記憶先情報に基づいて、上位用ブロック３３ａから対象識別子に対応する有効データ（上位データ部）を読み出し、この有効データと、Ｓ１２０で読み出した対象データとを比較する。
【００５６】
続くＳ１８０では、Ｓ１７０における有効データのうち、Ｓ１２０で読み出した対象データと同じ部分（即ち、変更のない部分）を、この対象データを構成する上位データ部とし、Ｓ１２０で読み出した対象データと異なる部分（即ち、変更のある部分）とこれに続くデータ部の残りを、この対象データを構成する下位データ部として特定する。
【００５７】
続くＳ１９０では、Ｓ１８０で特定した結果に基づいて、ＲＡＭ１７に記憶されている構成テーブル２１のうち、Ｓ１３０における対象識別子に対応するデータ部区分情報を更新するとともに、その更新回数をインクリメントし、Ｓ２１０に移行する。
【００５８】
なお、Ｓ２００では、Ｓ１３０における対象識別子に対応する無効データが、フラッシュメモリ１８に格納されていないため、Ｓ１２０で読み出した対象データのうち識別子を除く全てのデータ部を上位データ部として特定し、Ｓ２１０に移行する。
【００５９】
このように、Ｓ１３０〜Ｓ２００では、図６に示すように、Ｓ１２０で読み出した対象データのうち識別子を除くデータ部について、前回取得分と今回取得分とを比較し、このデータ部について変更のない部分を下位データ部、変更のある部分を上位データ部として特定する処理を、所定回数（閾値回数）繰り返すことにより、識別子毎に上位データ部と下位データ部とを動的に区分する（学習する）ようになっている。
【００６０】
次に、図５に示すように、本処理の後段処理が開始されると、Ｓ２１０では、Ｓ１５０またはＳ１９０で特定した下位データ部を下位用ブロック３３ｂに書き込む。このとき、図７（ａ）に示すように、下位用ブロック３３ｂにおける先頭のアドレス３２から順に下位データ部を書き込むに際して、複数の下位用ブロック３３ｂのうち、その書き込み対象となる下位用ブロック３３ｂ（以下「有効ブロック」という）に、下位データ部を書き込むための空きのアドレス３２が存在するか否かを判断する。そして、空きのアドレス３２が存在する場合には、本処理を繰り返すことで、その有効ブロックにおいて、先頭のアドレス３２から最後尾のアドレス３２まで順に下位データ部が書き込まれることになる。一方、空きのアドレス３２が存在しない場合には、有効ブロックが最後尾のアドレス３２まで下位データ部が書き込まれているため、予め設定された順における次の下位用ブロック３３ｂを次の有効ブロックとして設定し、図７（ｂ）に示すように、識別子毎に最新のデータを有効データとして抽出し、これら抽出した有効データを次の有効ブロックの先頭から順に書き込むことにより、有効データの書き換えを行う。なお、全ての下位用ブロック３３ｂに下位データ部が書き込まれると、これらの下位用ブロック３３ｂのうち、最も書き込みの古い下位データ部が格納されている下位用ブロック３３ｂに含まれている全データをブロック単位で消去する。このように、Ｓ２１０では、必要に応じて、有効データの書き換えやブロック単位でのデータ消去を行うようになっている。
【００６１】
続くＳ２２０では、Ｓ１５０、Ｓ１９０またはＳ２００で特定した上位データ部について、同一のデータが上位用ブロック３３ａ内に保持されているか否かを判断し、ここで肯定判断した場合には、Ｓ２３０をスキップしてＳ２４０に移行し、肯定判断した場合には、Ｓ２３０に移行する。
【００６２】
Ｓ２３０では、Ｓ１５０、Ｓ１９０またはＳ２００で特定した上位データ部を上位用ブロック３３ａに書き込み、Ｓ２４０に移行する。なお、ここでは、前述の下位データ部を下位用ブロック３３ｂに書き込むときと同様、必要に応じて、上位用ブロック３３ａに関する有効データの書き換えやブロック単位でのデータ消去を行うようになっている。
【００６３】
Ｓ２４０では、Ｓ２３０における書き込みが行われた場合に、上位用ブロック３３ａにおける上位データ部（対象データを構成する上位データ部）の格納場所を示すアドレス３２を、Ｓ１３０における対象識別子に対応づけることにより、管理テーブル２２においてその対象識別子に対応するデータ部記憶先情報を更新する。
【００６４】
また、Ｓ２５０では、Ｓ２１０における書き込みが行われた場合に、下位用ブロック３３ｂにおける下位データ部（対象データを構成する下位データ部）の格納場所を示すアドレス３２を、Ｓ１３０における対象識別子に対応づけることにより、管理テーブル２２においてその対象識別子に対応するデータ部記憶先情報を更新し、Ｓ１１０に戻る。
【００６５】
なお、メモリコントローラ１９が行う読出制御処理では、図８に示すように、ＣＰＵ１６から識別子を含む読出指令を入力したか否かを判断し（Ｓ３１０）、ここで肯定判断した場合には、Ｓ３２０に移行し、否定判断した場合には、このような書込指令の入力がなされるまで待機する。
【００６６】
Ｓ３２０では、Ｓ１１０で受信した読出指令に含まれている識別子に基づき、ＲＡＭ１７に記憶されている管理テーブル２２を参照し、その識別子に対応するデータ部記憶先情報を読み出す。
【００６７】
続くＳ３３０では、Ｓ３２０で読み出したデータ部記憶先情報に基づいて、上位用ブロック３３ａから有効データを構成する上位データ部を読み出す。
また、続くＳ３４０では、Ｓ３２０で読み出したデータ部記憶先情報に基づいて、下位用ブロック３３ｂから有効データを構成する下位データ部を読み出す。
【００６８】
そして、続くＳ３５０では、Ｓ３３０で読み出した上位データ部と、Ｓ３４０で読み出した下位データ部とを結合することにより、Ｓ１１０で受信した読出指令に含まれている識別子に対応するデータ部を生成し、この識別子とデータ部とからなる更新データをＣＰＵ１６に出力し、Ｓ３１０に戻る。
【００６９】
＜効果＞
以上説明したように、本実施形態のＥＣＵ１０では、メモリコントローラ１９が、フラッシュメモリ１８に対する更新データの書き込み制御を行う際に、更新データを、識別子に対応づけた上位データ部と下位データ部とに分けて、各々予め割り当てられた異なるブロック３３（上位用ブロック３３ａ、下位用ブロック３３ｂ）に書き込むように構成し、さらに上位データ部については、同一のデータが上位用ブロック３３ａ内に保持されている場合にその書き込みが行われなくなる、つまり書き込みが禁止されることになるように構成した。
【００７０】
このような構成では、メモリコントローラ１９が更新データを取得すると、フラッシュメモリ１８において、下位データ部は下位用ブロック３３ｂ内に順次書き込まれるものの、上位データ部は既に同じ内容のものが上位用ブロック３３ａ内に存在しない場合に限って書き込まれることになるため、上位データ部の書き込み機会が減少していくことになる。そして、書き込み制御において下位データ部を書き込むだけで済む割合が増加すると、更新データをそのままの形態でブロック３３内に順次書き込む場合と比較して、一回の書き込みに対するブロック３３内の使用領域を小さくすることが可能となるため、その書き込み時間を短くすることができる。また、一回の書き込みに対するブロック３３内の使用領域が小さくなることに伴って、フラッシュメモリ１８における書き込み数を増大させることが可能となるため、古い更新データをブロック３３単位で消去する機会を減らすことができる。よって、更新データの書き込み時間を短縮するとともに、フラッシュメモリ１８の低寿命化を抑制することができる。
【００７１】
また、ＥＣＵ１０では、識別子毎に上位データ部と下位データ部との区分を示す情報（データ部区分情報）が記述された構成テーブル２１をＲＡＭ１７に記憶し、メモリコントローラ１９が、書き込み制御を行う際に、更新データに含まれている識別子に基づいて構成テーブル２１を参照し、その更新データを構成する上位データ部および下位データ部を特定している。このため、更新データにデータ部区分情報を付加することなく、上位データ部および下位データ部を特定することが可能となるため、所定のプロトコルを変更することなく、メモリコントローラ１９による書き込み制御を比較的簡易にＥＣＵ１０に組み込むことができる。
【００７２】
また、ＥＣＵ１０では、メモリコントローラ１９が、更新データについて前回取得分と今回取得分とを比較し、データ部のうち変更のある部分を下位データ部、変更のない部分を上位データ部として、構成テーブル２１を動的に生成する。このため、識別子毎にデータ部区分情報を予め静的に決めておく必要がなくなり、ひいては装置設計にかかる従事者の作業負担を軽減することができる。
【００７３】
また、ＥＣＵ１０では、識別子毎にフラッシュメモリ１８における上位データ部および下位データ部の格納場所を示す情報（データ部記憶先情報）が記述された管理テーブル２２をＲＡＭ１７に記憶し、メモリコントローラ１９が、書き込み制御を行う際に、更新データに含まれている識別子にこれらの格納場所を対応づけることにより、管理テーブル２２内のデータ部記憶先情報を更新する。このため、メモリコントローラ１９が、読み出し制御を行う際に、識別子に基づいて管理テーブル２２を参照することで、上位データ部および下位データ部を比較的容易に読み出すことが可能となり、読み出した上位データ部と下位データ部とを結合することにより、更新データを好適にＣＰＵ１６に供給することができる。
【００７４】
また、ＥＣＵ１０では、フラッシュメモリ１８としてＮＯＲ型フラッシュメモリを採用しているため、ＮＡＮＤ型フラッシュメモリよりも少ないビット単位での書き込みが可能となることから、データ量にハード構成を合わせこむ必要性を軽減することができ、ひいてはハード構成の自由度を向上させることができる。
【００７５】
また、ＥＣＵ１０では、メモリコントローラ１９が書き込み制御を行う際に、下位データ部が上位データ部と比較してそのデータ量が小さいため、更新データの書き込み時間をより短縮することができ、下位データ部を書き込むだけでよくなる割合が増加することに伴って、フラッシュメモリ１８の低寿命化をより抑制することができる。
【００７６】
＜発明との対応＞
なお、本実施形態において、Ｓ１１０〜Ｓ１２０の処理を行うメモリコントローラ１９がデータ取得手段、フラッシュメモリ１８が不揮発性メモリ、Ｓ２１０〜Ｓ２５０の処理を行うメモリコントローラ１９がメモリ制御手段、ＲＡＭ１７が記憶手段、Ｓ１３０〜Ｓ２００の処理を行うメモリコントローラ１９がテーブル更新手段、ＣＰＵ１６が車両制御手段の各一例にそれぞれ相当する。
【００７７】
＜他の実施形態＞
以上、本発明の実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において、様々な態様にて実施することが可能である。
【００７８】
例えば、上記実施形態の書込制御処理では、上位更新データとして、構成テーブル２１において識別子に対応づけられた上位データ部を上位用ブロック３３ａに、下位更新データとして、構成テーブル２１において識別子に対応づけられた下位データ部を下位用ブロック３３ｂにそれぞれ書き込んでいるが、これに限定されるものではない。例えば、識別子が付加された上位データ部を上位更新データとしてもよいし、識別子が付加された下位データ部を下位更新データとしてもよい。
【００７９】
また、上記実施形態の書込制御処理では、有効データに対応するデータ部記憶先情報だけが保持されるように管理テーブル２２を更新しているが、これに限定されるものではなく、有効データだけでなく無効データに対応するデータ部記憶先情報も保持されるように管理テーブル２２を更新してもよい。
【００８０】
なお、上記実施形態のＥＣＵ１０では、構成テーブル２１および管理テーブル２２がＲＡＭ１７に記憶されるように構成しているが、これに限定されるものではなく、例えばフラッシュメモリ１８に記憶されるように構成してもよい。
【００８１】
また、上記実施形態のＥＣＵ１０では、書込制御処理によって構成テーブル２１を動的に生成するように構成しているが、これに限定されるものではなく、例えば装置設計にかかる従事者によって識別子毎のデータ部区分情報を予め決めておき、このように静的に決められた構成テーブル２１をＲＯＭ１５やフラッシュメモリ１８が記憶している構成でもよい。なお、ＥＣＵ１０では、メモリコントローラ１９がフラッシュメモリ１８とＲＡＭ１７だけでなく、ＲＯＭ１５にもアクセス可能に構成されてもよいし、これらのメモリ１７〜１９に各々アクセス可能に複数のメモリコントローラ１９を備える構成でもよい。また、ＥＣＵ１０では、更新データがデータ部区分情報を含む構成である場合、構成テーブル２１は、これらのメモリ１７〜１９に必ずしも記憶しなくてもよい。さらに、ＥＣＵ１０では、識別子が付加された上位データ部を上位更新データとし、識別子が付加された下位データ部を下位更新データとして、これら上位更新データおよび下位更新データがフラッシュメモリ１８に記憶されている構成である場合、読出制御処理によってＣＰＵ１６からの読出指令に含まれている識別子に基づき、上位更新データおよび下位更新データを読み出すことが可能であるため、管理テーブル２２は、これらのメモリ１７〜１９に必ずしも記憶しなくてもよい。
【００８２】
また、上記実施形態のＥＣＵ１０では、不揮発性メモリとして、ＮＯＲ型フラッシュメモリを採用しているが、これに限定されるものではなく、ＮＡＮＤ型フラッシュメモリを採用してもよいし、更新データの消去回数についてフラッシュメモリと同様の制約を有する不揮発性メモリであれば、どのようなメモリであってもよい。
【００８３】
また、上記実施形態のＥＣＵ１０では、書込制御処理において、データ部区分情報の更新回数が閾値回数以上である場合に（Ｓ１３０；ＹＥＳ、Ｓ１４０；ＹＥＳ）、構成テーブル２１のデータ部区分情報に基づいて対象データの上位データと下位データとを特定しているが（Ｓ１５０）、このような判断を行うことなく、Ｓ１２０で読み出した対象データのうち識別子を除くデータ部について、前回取得分と今回取得分とを比較し、このデータ部について変更のない部分を下位データ部、変更のある部分を上位データ部として特定してもよい（Ｓ１６０〜Ｓ１８０）。
【００８４】
また、上記実施形態のＥＣＵ１０では、書込制御処理において、どのような場合であっても下位データ部を下位用ブロックに書き込むようにしているが（Ｓ２１０）、フラッシュメモリ１８に無効データを書き込む必要のない（少なくとも有効データを書き込めばよい）構成であれば、上位データ部と同様、同一のデータがフラッシュメモリ１８に保持されている場合には、下位データ部の書き込みを行わないようにしてもよい。
【００８５】
また、上記実施形態では、データ記憶装置として、車両用のＥＣＵ１０を採り上げて説明したが、これに限定されるものではなく、車両以外であっても、更新データを記憶するための各種の用途に用いることができる。
【符号の説明】
【００８６】
１０…ＥＣＵ、１３…マイコン、１５…ＲＯＭ、１６…ＣＰＵ、１７…ＲＡＭ、１８…フラッシュメモリ、１９…メモリコントローラ、２１…構成テーブル、２２…管理テーブル、３１…メモリセル、３２…アドレス、３３…ブロック、３３ａ…上位用ブロック、３３ｂ…下位用ブロック。
【図１】
2014215628.tif 000003
【図３】
2014215628.tif 000004
【図４】
2014215628.tif 000005
【図５】
2014215628.tif 000006
【図６】
2014215628.tif 000007
【図８】
2014215628.tif 000008
【図２】
2014215628.tif 000009
【図７】
2014215628.tif 000010