(57)【特許請求の範囲】
【請求項１】
データを特定するデータＩＤと、そのデータの値であるデータ値とを記憶するフラッシュメモリと、
予め定められた書き込みタイミングで、前記フラッシュメモリに前記データＩＤと前記データ値とを関連付けて書き込むデータ書込部と、
前記データＩＤ毎に対応した代表値ＩＤが定められ、その代表値ＩＤ毎に予め定められた代表値を記憶する代表値記憶部と、
前記データＩＤ毎に、対応する前記データ値と前記代表値のいずれを該データＩＤに対応する値として使用するかを表すデータ管理情報を記憶するデータ管理情報記憶部と、
前記データ書込部が前記データを書き込む際に、書き込むデータ値と前記代表値とが同一か否かを比較する比較部と、
前記書き込むデータ値と前記代表値とが同一のときには、前記データ管理情報を、前記データＩＤに対応する値として前記代表値を使用する代表値使用状態を表すものとするとともに、前記データ書込部による前記フラッシュメモリへの該データＩＤに対応するデータ値の書き込みを抑制する書込制御部と、
を備えることを特徴とする電子制御装置。
【請求項２】
前記代表値は、前記データ値が得る値のうち、得る頻度のより高いものが定められる請求項１に記載の電子制御装置。
【請求項３】
前記代表値ＩＤに、複数の前記データＩＤが関連付けられている請求項１または請求項２に記載の電子制御装置。
【請求項４】
前記書き込みタイミング時に、前記書き込むデータ値が前記代表値と異なる値に変化しているとき、
前記書込制御部は、前記データ書込部による前記フラッシュメモリへの、当該データＩＤに対応する前記データ値の書き込みの抑制を解除し、
前記データ管理情報記憶部は、前記データＩＤに対応するデータ管理情報を、前記データＩＤに対応する値として前記フラッシュメモリに記憶されたデータ値を使用することを表すデータ値使用状態とする請求項１ないし請求項３のいずれか１項に記載の電子制御装置。
【請求項５】
前記データ管理情報が前記データ値使用状態を表すとき、前記書き込みタイミング時に、前記データ値が前記代表値と同じ値に変化しているとき、
前記書込制御部は、前記データ管理情報を前記代表値使用状態として、前記データ書込部による前記フラッシュメモリへの、当該データＩＤに対応するデータ値の書き込みを抑制する請求項４に記載の電子制御装置。
【請求項６】
予め定められた読み出しタイミングで、前記データＩＤに対応するデータの値を読み出すデータ読出部を備え、
前記データ読出部は、前記データ管理情報が前記代表値使用状態を表すときに、前記データＩＤに対応する代表値ＩＤの代表値を前記代表値記憶部から読み出す請求項１ないし請求項５のいずれか１項に記載の電子制御装置。
【請求項７】
予め定められた読み出しタイミングで、前記データＩＤに対応するデータ値を読み出すデータ読出部を備え、
前記データ読出部は、前記データ管理情報が前記データ値使用状態を表すときに、前記データＩＤに対応するデータ値を前記フラッシュメモリから読み出す請求項４または請求項５に記載の電子制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フラッシュメモリのような不揮発性メモリを備える電子制御装置に関する。
【背景技術】
【０００２】
コンピュータ等の電子機器あるいは車両用の電子制御装置（ＥＣＵともいう）で用いられるデータを記憶させておく記憶媒体として、フラッシュメモリのような書換え可能な不揮発性メモリの使用が広がっている。
【０００３】
フラッシュメモリでは、動作原理上、消去状態を書き込み状態にする書き込み処理は、アドレス単位あるいはビット単位で実行できるが、書き込み状態を消去状態にする消去処理については、メモリセルブロック単位（セクタ単位）で一括して行われ、アドレス単位あるいはビット単位で実行することはできない。
【０００４】
このため、不揮発性半導体記憶装置では、一般的に、所定のメモリセルブロック（以下、単に「ブロック」ということもある）に既に書き込まれているデータの全部または一部を更新する場合、更新後のデータを一括消去処理済みのメモリセルブロック（更新先メモリセルブロックともいう）に書き込む書き込み処理を実行した後、更新前のデータが記憶された更新元メモリセルブロックを一括消去する一括消去処理を実行するデータ更新処理を実行している。
【０００５】
そこで、フラッシュメモリへの書込みが必要かどうかを判断してから、フラッシュメモリへの書込み実行を判断することで、不要なフラッシュメモリへの書込みを抑制することが可能となり、処理時間の向上、書込み回数の低減により信頼性を向上させることが可能なフラッシュメモリ制御方法が考案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−３０４９２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の構成では、フラッシュメモリの全領域について一律にゼロのような初期値を書き込むことを想定している。つまり、装置の通常動作時のフラッシュメモリの個別の書込み対象データに対する書込み抑制はされておらず、一律の初期値を用いて初期化した値と書き込みデータを比べても、書込み回数の抑制にはならないという問題がある。
【０００８】
上記問題点を背景として、本発明の課題は、フラッシュメモリへの書込み対象データに対する書込み抑制をより効率よく行うことが可能な電子制御装置を提供することにある。
【課題を解決するための手段および発明の効果】
【０００９】
上記課題を解決するための電子制御装置は、データを特定するデータＩＤと、そのデータの値であるデータ値とを記憶するフラッシュメモリと、予め定められた書き込みタイミングで、フラッシュメモリにデータＩＤとデータ値とを関連付けて書き込むデータ書込部と、データＩＤ毎に対応した代表値ＩＤが定められ、その代表値ＩＤ毎に予め定められた代表値を記憶する代表値記憶部と、データＩＤ毎に、対応するデータ値と代表値のいずれを該データＩＤに対応する値として使用するかを表すデータ管理情報を記憶するデータ管理情報記憶部と、データ書込部がデータ値を書き込む際に、データＩＤ毎に、書き込むデータ値と代表値とが同一か否かを比較する比較部と、書き込むデータ値と代表値とが同一のときには、データ管理情報を、データＩＤに対応する値として代表値を使用する代表値使用状態を表すものとするとともに、データ書込部によるフラッシュメモリへの該データＩＤに対応するデータ値の書き込みを抑制する書込制御部と、を備えることを特徴とする。
【００１０】
上記構成によって、初期値書き込み時（すなわち、フラッシュメモリ初期化時）以外にも、装置の通常動作時のフラッシュメモリの個別の書込み対象データに対する書込み抑制を行うことができ、個別のデータの上書きのできないフラッシュメモリへの書き込みデータ量を抑制することができる。
【００１１】
また、本発明の電子制御装置における代表値は、データ値が得る値のうち、得る頻度のより高いものが定められる。
【００１２】
上記構成によって、データ値として、より出現頻度の高い値を代表値とすると、フラッシュメモリへの書き込みの機会もより多くなるため、より効率よくフラッシュメモリへデータ値の書き込みを抑制することができる。
【００１３】
また、本発明の電子制御装置は、代表値ＩＤに、複数のデータＩＤが関連付けられている。
【００１４】
上記構成によって、代表値の記憶領域を低減することができる。
【００１５】
また、本発明の電子制御装置は、書き込みタイミング時に、書き込むデータ値が代表値と異なる値に変化しているとき、書込制御部は、データ書込部によるフラッシュメモリへの、当該データＩＤに対応するデータ値の書き込みの抑制を解除し、データ管理情報記憶部は、データＩＤに対応するデータ管理情報を、データＩＤに対応する値としてフラッシュメモリに記憶されたデータ値を使用することを表すデータ値使用状態とする。
【００１６】
上記構成によって、データ値が代表値と異なる値に変化したときのみ、フラッシュメモリに書き込むことができるので、フラッシュメモリへの書き込みデータ量を抑制することができる。
【００１７】
また、本発明の電子制御装置は、データ管理情報がデータ値使用状態を表すとき、書き込みタイミング時に、データ値が代表値と同じ値に変化しているとき、書込制御部は、データ管理情報を代表値使用状態として、データ書込部によるフラッシュメモリへの、当該データＩＤに対応するデータ値の書き込みを抑制する。
【００１８】
上記構成によって、データ値が代表値と同じ値に変化したとき、代表値をフラッシュメモリに書き込むことを防ぐことができる。
【００１９】
また、本発明の電子制御装置は、予め定められた読み出しタイミングで、データＩＤに対応するデータの値を読み出すデータ値読出部を備え、データ値読出部は、データ管理情報が代表値使用状態を表すときに、データＩＤに対応する代表値ＩＤの代表値を代表値記憶部から読み出す。
【００２０】
上記構成によって、データＩＤに対応する最新かつ適切なデータ（すなわち、代表値）を読み出すことができる。
【００２１】
また、本発明の電子制御装置は、予め定められた読み出しタイミングで、データＩＤに対応するデータ値を読み出すデータ値読出部を備え、データ値読出部は、データ管理情報がデータ値使用状態を表すときに、データＩＤに対応するデータ値をフラッシュメモリから読み出す。
【００２２】
上記構成によっても、データＩＤに対応する最新かつ適切なデータ（すなわち、データ値）を読み出すことができる。
【図面の簡単な説明】
【００２３】
【図１】電子制御装置の構成を示すブロック図。
【図２】代表値記憶部の構成例を示す図。
【図３】データ管理情報記憶部の構成例を示す図。
【図４】フラッシュメモリにおけるデータ記憶領域の一例を示す図。
【図５】データ書込抑制処理を説明するフロー図。
【図６】データ読出処理を説明するフロー図。
【図７】代表値記憶部の構成の別例を示す図。
【図８】データ管理情報記憶部の構成の別例を示す図。
【発明を実施するための形態】
【００２４】
以下、本発明の電子制御装置について、図面を用いて説明する。まず、図１に、本発明の電子制御装置（以下、「ＥＣＵ」と称する）１の構成例を示す。ＥＣＵ１は、例えば車両のエンジン制御、エアコン制御等の車載機器の制御に用いられる。ＥＣＵ１は、ＣＰＵ１０，ＲＯＭ１１，ＲＡＭ１２，フラッシュメモリ１３を備え、ＣＰＵ１０が、ＲＯＭ１１あるいはフラッシュメモリ１３に記憶された制御プログラムを実行することにより、ＥＣＵ１の各種機能を実現する。ＲＡＭ１２は、ＣＰＵ１０による制御プログラムの実行において生成される各種データを一時的に記憶する。
【００２５】
また、ＥＣＵ１は、例えば、回転センサ，温度センサのようなセンサ１６からのデータの取得、あるいは他のＥＣＵからのデータ受信を行うための入力Ｉ／Ｆ１４と、例えば、モータ，ソレノイドのようなアクチュエータ１７に対する動作制御指令値の出力、あるいは他のＥＣＵへのデータ送信を行うための出力Ｉ／Ｆ１５を備えている。
【００２６】
フラッシュメモリ１３は、例えば周知のメモリセルブロックを１以上備え、ＥＣＵ１の動作に必要なデータを記憶する。ＣＰＵ１０は、ＥＣＵ１の動作状態あるいはフラッシュメモリ１３の各メモリセルブロックのデータ記憶状態に応じて、フラッシュメモリ１３に対し、メモリセルブロック単位での一括消去処理、所定アドレス数の記憶領域単位またはビット単位での書き込み処理、および、メモリセルブロック単位でのデータ更新処理等の制御を行う。
【００２７】
上記構成により、ＥＣＵ１は、センサ１６あるいは他のＥＣＵから取得したデータ、およびアクチュエータ１７の動作状態に基づいて、動作制御指令値を演算し、アクチュエータ１７に出力する。
【００２８】
図２に、ＲＯＭ１１における代表値記憶部１１ａの構成例を示す。代表値記憶部には、代表値ＩＤ毎に、対応する代表値が予め記憶されている。代表値は以下のうちのいずれかを用いる。なお、本実施例では、データＩＤが代表値ＩＤと同じで、データＩＤと代表値ＩＤとは一対一の関係となっている。また、本実施例では、データ値は、データ長が１バイトの１６進数である。
・ＣＰＵ１０による処理演算において得られるデータ値のうち、最も出現頻度の高い値。
・デフォルト値：データＩＤ毎に定められ、例えば、ＣＰＵ１０による処理演算において得られるデータ値が所定範囲に含まれないときに代用するフェイルセーフ値。または初期化時の値。
【００２９】
図３に、ＲＡＭ１２におけるデータ管理情報記憶部１２ａの構成例を示す。データ管理情報記憶部には、データＩＤ毎に、データ値として、ＲＯＭ１１の代表値か、フラッシュメモリ１３に記憶されているデータ値のうちのいずれを用いるかを表すデータ管理情報が記憶されている。データ管理情報記憶部は、書き換えの頻度が比較的高いので、アドレス単位あるいはビット単位で書き換えが可能なＲＡＭ１２内に領域を設定することが望ましい。
・代表値（代表値使用状態）：データＩＤに対応するデータ値として、ＲＯＭ１１に記憶された、対応する代表値ＩＤの代表値を使用する。
・データ値（データ値使用状態）：データＩＤに対応するデータ値として、フラッシュメモリ１３に記憶されたデータ値を使用する。
【００３０】
図４に、フラッシュメモリ１３におけるデータ記憶領域１３ａの一例を示す。データは、データＩＤとデータ値とが対応付けられて記憶される。なお、データＩＤ０，２，５のデータでは、データ値は書き込まれているが、上述のデータ管理情報がデータ値使用状態を表していない状態であるため、該データ値は使用していない。
【００３１】
フラッシュメモリ１３は、アドレス単位あるいはビット単位で消去・上書きができないため、記憶されているデータの更新が行われたとき、あるいは新たにデータを追加するときは、この空き領域に順次追記される。例えば、データＩＤ１のデータの値が０ｘ０１から０ｘ１０に変化したときには、データＩＤ７のデータの記憶領域より後の空き領域に新たなデータが記憶される。
【００３２】
また、フラッシュメモリ１３に、ＲＡＭ１２のデータ管理情報記憶部１２ａのバックアップ領域１３ｂを設けてもよい。ＥＣＵ１の動作停止時に、これに先立って、データ管理情報記憶部１２ａの内容を（一括消去後の）バックアップ領域１３ｂにコピーする。そして、ＥＣＵ１の動作開始時（例えば、イニシャル時）に、バックアップ領域１３ｂから読み出してデータ管理情報記憶部１２ａに戻す。無論、バックアップ領域１３ｂの上書きは、アドレス単位あるいはビット単位ではできないので、バックアップ領域１３ｂが含まれるメモリセルブロックは、データ記憶領域１３ａが含まれるメモリセルブロックとは別のものとすることが望ましい。
【００３３】
図５を用いて、ＲＯＭ１１に記憶された制御プログラムに含まれ、ＣＰＵ１０が実行するデータ書込抑制処理について説明する。まず、例えば、ＣＰＵ１０での演算の結果、あるデータのデータ値が変化したときのような、データ書き込みタイミングが到来したか否かを判定する。つまり、データ書込抑制処理は、フラッシュメモリの初期化以外のタイミングでも行われる。なお、データの演算結果は、例えばＲＡＭ１２に一時記憶される。
【００３４】
データ書き込みタイミングが到来しないとき（Ｓ１１：Ｎｏ）、データ書き込みタイミングが到来するまで待つ。本処理を終了してもよい。一方、データ書き込みタイミングが到来したとき（Ｓ１１：Ｙｅｓ）、ＲＡＭ１２に一時記憶されているデータ値を参照する（Ｓ１２）。そして、ＲＯＭ１１に記憶されている、そのデータ値のデータＩＤに対応する代表値ＩＤの代表値を参照し（Ｓ１３）、両者を比較する。
【００３５】
比較の結果、データ値が代表値と同一のとき（Ｓ１４：Ｙｅｓ）、該データＩＤのデータ値をフラッシュメモリ１３には書き込まない、すなわちデータ書き込みを抑制する（Ｓ１５）。そして、ＲＡＭ１２のデータ管理情報記憶部１２ａの、該データＩＤに対応するデータ管理情報を、代表値使用状態を表すもの（図３では、「代表値ＩＤ０」等と表記）とし、（Ｓ１６）本処理を終了する。
【００３６】
一方、データ値が代表値と同一でないとき（Ｓ１４：Ｎｏ）、データ管理情報記憶部１２ａの、該データＩＤに対応するデータ管理情報を参照する（Ｓ１７）。そして、該データ管理情報がデータ値使用状態を表す（図３では、「データ値」と表記）とき（Ｓ１８：Ｙｅｓ）、フラッシュメモリ１３に記憶された該データＩＤに対応するデータ値を参照する（Ｓ１９）。そして、これら２つのデータ値を比較する。
【００３７】
比較の結果、２つのデータ値が同一のとき（Ｓ２０：Ｙｅｓ）、何もせずに、すなわちデータ書き込みを抑制して本処理を終了する。一方、２つのデータ値が異なるとき（Ｓ２０：Ｎｏ）、フラッシュメモリ１３に新しいデータ値とそのデータＩＤとを記憶し（Ｓ２２）、本処理を終了する。
【００３８】
つまり、上述の構成は、書き込みタイミング時に、書き込むデータ値が代表値と異なる値に変化しているとき、かつ、フラッシュメモリに既に記憶されている対応するデータ値が等しいとき、書込制御部は、データ書込部による、書き込むデータ値の前記フラッシュメモリへの書き込みを抑制するものである。
【００３９】
また、一方、データ管理情報がデータ値使用状態ではなく代表値使用状態を表すとき（Ｓ１８：Ｎｏ）、該データ管理情報を、データ値使用状態を表すものとする（Ｓ２１）。そして、フラッシュメモリ１３に新しいデータ値とそのデータＩＤとを記憶し（Ｓ２２）、本処理を終了する。
【００４０】
上述の、図５のデータ書込抑制処理の具体例について、図２〜図４を用いて説明する。ＲＡＭ１２のデータ管理情報記憶部１２ａのデータ管理情報（図３参照）が代表値ＩＤ０（すなわち、代表値使用状態）となっているデータＩＤ０のデータ値が、演算の結果、代表値ＩＤ０の０ｘ０５（図２参照）とは異なる０ｘ８０となったとき、データ管理情報をデータ値（すなわち、データ値使用状態）に書き換える。さらに、フラッシュメモリ１３に既に記憶されているデータ値は０ｘ００（図４参照）であり、新しいデータ値と異なるので、データＩＤ７の記憶領域の後の空き領域に、データＩＤ：０およびデータ値：０ｘ８０を書き込む。また、データＩＤ０のデータが書き込まれていないときには、新たに領域を確保して書き込む。
【００４１】
一般に、フラッシュメモリでは、メモリセルブロックの先頭からデータを書き込んでいくので、同じデータＩＤのデータが複数記憶されているときには、メモリセルブロックのより後方に記憶されているデータを読み出すようになっている。
【００４２】
また、データ管理情報記憶部１２ａのデータ管理情報（図３参照）が代表値ＩＤ２（すなわち、代表値使用状態）となっているデータＩＤ２のデータ値が、演算の結果、代表値ＩＤ２の０ｘＡＡ（図２参照）とは異なる０ｘＣＣとなったとき、データ管理情報をデータ値（すなわち、データ値使用状態）に書き換える。このとき、フラッシュメモリ１３に既に記憶されているデータ値が０ｘＣＣ（図４参照）であり、新しいデータ値と同じであるので、フラッシュメモリ１３への書き込みは行わない。
【００４３】
また、データ管理情報記憶部１２ａのデータ管理情報（図３参照）がデータ値（すなわち、データ値使用状態）となっているデータＩＤ３のデータ値０ｘ７Ｆが、演算の結果、代表値と同じ０ｘ８０となったとき、データ管理情報を代表値ＩＤ３（すなわち、代表値使用状態）に書き換える。このとき、フラッシュメモリ１３への書き込みは行わない。
【００４４】
図６を用いて、ＲＯＭ１１に記憶された制御プログラムに含まれ、ＣＰＵ１０が実行するデータ読出処理について説明する。なお、本処理は、ＣＰＵ１０は各種演算を行う際に必要となるデータ値を読み出すときのような、データ値を読み出す条件が成立したときに実行される。
【００４５】
まず、ＲＡＭ１２のデータ管理情報記憶部１２ａの、読み出したいデータＩＤに対応するデータ管理情報を参照する（Ｓ３１）。次に、該データ管理情報が代表値使用状態を表すものであるとき（Ｓ３２：Ｙｅｓ）、ＲＯＭ１１に記憶されている、該データＩＤに対応する代表値を読み出し（Ｓ３３）、本処理を終了する。一方、該データ管理情報が代表値使用状態ではなくデータ値使用状態を表すものであるとき（Ｓ３２：Ｎｏ）、フラッシュメモリ１３に記憶されている、該データＩＤに対応するデータ値を読み出し（Ｓ３４）、本処理を終了する。
【００４６】
上述の、図６の具体例について、図２〜図４を用いて説明する。データＩＤ０のデータは、データ管理情報（図３参照）が代表値使用状態を表しているので、データはＲＯＭ１１に記憶されている０ｘ０５（図２参照）が読み出される。また、データＩＤ４のデータは、データ管理情報（図３参照）がデータ値使用状態を表しているので、データはフラッシュメモリ１３に記憶されている０ｘ００（図４参照）が読み出される。
【００４７】
図７に、図２の代表値記憶部１１ａの構成の別例を示す。これは、複数のデータＩＤで代表値を共有するものである。これにより、代表値記憶部１１ａの領域を少なくすることができる。図７の例では、代表値ＩＤとデータＩＤとの間には、図２のような一対一の関係はなく、代表値ＩＤ毎に、代表値およびその代表値を用いるデータＩＤが関連付けられている。また、データ値のデータ長が１バイトの１６進数であるとき、代表値の数は、データ（データＩＤ）の数に関係なく最大２５６個である。
【００４８】
例えば、データＩＤ０〜２は、それぞれ代表値ＩＤ０〜２の代表値に対応付けられている。また、データＩＤ３，５，７は、代表値ＩＤ１０の代表値０ｘ８０に対応付けられている。また、データＩＤ４，６は、代表値ＩＤ１１の代表値０ｘ１２に対応付けられている。
【００４９】
図８に、図７の構成におけるデータ管理情報記憶部１２ａの構成を示す。データＩＤ０〜２は、図３と同様であるが、データＩＤ５は、代表値ＩＤ１０の代表値０ｘ８０を使用することを示している。
【００５０】
なお、図７，図８の構成においても、データ書込抑制処理，データ読出処理は、それぞれ図５，図６と同様である。
【産業上の利用可能性】
【００５１】
車両以外に用いられる電子制御装置にも適用可能である。
【００５２】
以上、本発明の実施の形態を説明したが、これらはあくまで例示にすぎず、本発明はこれらに限定されるものではなく、特許請求の範囲の趣旨を逸脱しない限りにおいて、当業者の知識に基づく種々の変更が可能である。
【符号の説明】
【００５３】
１  ＥＣＵ
１０  ＣＰＵ（データ書込部，比較部，書込制御部，データ読出部）
１１  ＲＯＭ（代表値記憶部）
１２  ＲＡＭ（データ管理情報記憶部）
１３  フラッシュメモリ
【図１】
0005754316.tif 000002
【図２】
0005754316.tif 000003
【図３】
0005754316.tif 000004
【図４】
0005754316.tif 000005
【図５】
0005754316.tif 000006
【図６】
0005754316.tif 000007
【図７】
0005754316.tif 000008
【図８】
0005754316.tif 000009