(57)【要約】【課題】フラッシュメモリのような書き換え回数に上限を有する半導体記憶装置を効率的に、長期的に使用することを可能とする制御装置及び制御方法を提供する。【解決手段】マイコン１００のＣＰＵ１０は、データフラッシュ１２を使用するに際し、データを書き換え頻度の異なる種類に分別し、種類毎に異なるブロックに記憶する。各ブロックのデータの書き換えに伴う消去回数を、データフラッシュ１２内の特定のブロックに管理情報として記憶して書き換えの都度に消去回数を追記によって更新し、消去回数が設定回数以上となった場合、当該ブロックに記憶していたデータの記憶先のブロックを他の種類のデータを記憶していたブロックに置換する。【選択図】図１
2014130530.tif 000002
【特許請求の範囲】
【請求項１】
書き換え可能な記憶装置を有し、該記憶装置に、複数の異なる種類に分別される情報を記憶し、記憶してある情報を用いて外部機器を制御する処理を実行する制御装置において、
前記記憶装置は、複数の異なる領域に分別されており、
前記情報を、情報の種類別に異なる領域に記憶する手段と、
前記複数の異なる領域の内の１又は複数の特定の領域に、各領域の消去回数を含む領域情報を記憶する手段と、
各領域の情報を書き換える都度、該領域の消去回数を書き換える書換手段と、
各領域の領域情報における消去回数について、予め設定された設定回数以上であるか否かを判断する手段と、
該手段が前記設定回数以上であると判断した領域に記憶していた情報を、他の領域に記憶する置換手段と
を備えることを特徴とする制御装置。
【請求項２】
前記書換手段は、
前記消去回数の書き換えを、前記特定の領域内の空き部分に書き換え後の消去回数を記憶することで実現するようにしてあり、
前記特定の領域内の空き部分の有無を判断する手段と、
空き部分が無いと判断した場合、前記特定の領域に記憶してある情報を消去する手段と
を備え、
消去後の前記特定の領域に書き換え後の消去回数を記憶するようにしてあること
を特徴とする請求項１に記載の制御装置。
【請求項３】
前記置換手段は、前記１つの領域に記憶していた情報を、他の領域の内、消去回数が最も少ない領域に記憶するようにしてあること
を特徴とする請求項１又は２に記載の制御装置。
【請求項４】
前記情報の種類は、自装置が搭載されるものの仕向地情報、前記外部機器の動作条件に対し設定される設定情報、前記外部機器の故障情報、又は前記外部機器を制御する処理に用いる制御情報で分別されていること
を特徴とする請求項１乃至３のいずれかに記載の制御装置。
【請求項５】
前記外部機器は、車載機器であること
を特徴とする請求項１乃至４のいずれかに記載の制御装置。
【請求項６】
前記記憶装置に記憶される情報は、車両のドア、ランプ又はキーの制御に関する情報であること
を特徴とする請求項１乃至５のいずれかに記載の制御装置。
【請求項７】
書き換え可能な記憶装置を有し、該記憶装置に、複数の異なる種類に分別される情報を記憶し、記憶してある情報を用いて外部機器を制御する処理を実行する制御装置において、
前記記憶装置は、複数の異なる領域に分別されており、
該複数の異なる領域の内の１又は複数の特定の領域に、前記複数の異なる領域を夫々識別する領域識別情報毎に、各領域に記憶する情報の種類を識別する情報識別情報及び領域毎の前記情報の消去回数を含む領域情報を記憶する手段と、
前記記憶装置の情報を書き換える場合、前記情報の情報識別情報を含む領域情報の領域識別情報が示す領域に前記情報を記憶する手段と、
各領域の情報を書き換える都度、該領域の領域情報における消去回数を更新する手段と、
各領域の領域情報における消去回数について、予め設定された設定回数以上であるか否かを判断する手段と、
該手段が前記設定回数以上であると判断した領域の領域情報における情報識別情報を、含まれる消去回数が前記設定回数よりも少ない他の領域の領域情報における情報識別情報と置換する置換手段と
を備えることを特徴とする制御装置。
【請求項８】
書き換え可能であって複数の異なる領域に分別される記憶装置を有し、該記憶装置に、複数の異なる種類に分別される情報を記憶し、記憶してある情報を用いて外部機器を制御する方法において、
前記情報を、該情報の種類別に異なる領域に記憶する手段と、
前記複数の異なる領域の内の１又は複数の特定の領域に、領域毎の消去回数を含む領域情報を記憶し、
各領域の情報を書き換える都度、該領域の消去回数を書き換え、
各領域の領域情報における消去回数について、予め設定された設定回数以上であるか否かを判断し、
前記設定回数以上であると判断した領域に記憶していた情報を、他の領域に記憶する
ことを特徴とする制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き換え回数に上限を有する半導体記憶装置を制御する方法に関し、特に、半導体記憶装置を効率的に使用することを可能とする制御装置及び制御方法に関する。
【背景技術】
【０００２】
半導体記憶装置の１つであって、書き換え可能な不揮発性メモリとして利用できるフラッシュメモリは、安価且つ大容量を実現可能であることから、電子機器の記憶装置として多用されている。ただし、フラッシュメモリは、動作時の現象によって素材の劣化を伴うため、データの消去及び書き込み回数に限界がある。したがって、電子機器のプロセッサが処理に用いるデータを記憶する装置としてフラッシュメモリを使用する場合、フラッシュメモリの一部であっても高頻度に書き換えるときには、フラッシュメモリ全体として早期に使用限界を迎える。このため、特許文献１及び２には、フラッシュメモリ全体を均等に使用するように制御する方法が開示されている。
【０００３】
マイクロコンピュータ（以下、マイコンという）では、プロセッサ（ＣＰＵ）が処理を行なう際に参照するデータ等を記憶する内部記憶装置としてフラッシュメモリが用いられているものがある。フラッシュメモリを内部記憶装置として用いるマイコンは安価を実現できるため、低コストを求められる電子機器の分野で需要が多い。この場合、内部記憶装置のフラッシュメモリは、コンピュータプログラムを記憶するのみならず、プロセッサが参照するデータを記憶する領域として使用される。特に、組み込み系のコンピュータプログラムに基づき動作する場合、プロセッサはフラッシュメモリ上の物理アドレスを直接的に指定してデータの読み書きを行なうため、データの内容によってフラッシュメモリ上で使用頻度の偏りが生じる傾向が強い。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平０５−１５８８０６号公報
【特許文献２】特開平０５−１９８１９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１及び２に開示されている発明により、フラッシュメモリを均等に使用することが可能である。しかしながら例えば特許文献１に開示されている発明では、比較的高価格なＥＥＰＲＯＭ（登録商標）を用いる構成としており、安価な装置の実現というフラッシュメモリを使用する目的の１つが達成できない。特許文献２に開示されている発明では、データを移動するための書き換えが生じて書き換え回数が多くなる可能性がある。また、特許文献２に開示されている方法は、組み込み系のコンピュータプログラムにおける上述したような内部記憶装置の固定的な使用方法に適用することは困難である。
【０００６】
本発明は斯かる事情に鑑みてなされたものであり、フラッシュメモリのような書き換え回数に上限を有する半導体記憶装置を効率的に、長期的に使用することを可能とする制御装置及び制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る制御装置は、書き換え可能な記憶装置を有し、該記憶装置に、複数の異なる種類に分別される情報を記憶し、記憶してある情報を用いて外部機器を制御する処理を実行する制御装置において、前記記憶装置は、複数の異なる領域に分別されており、前記情報を、情報の種類別に異なる領域に記憶する手段と、前記複数の異なる領域の内の１又は複数の特定の領域に、各領域の消去回数を含む領域情報を記憶する手段と、各領域の情報を書き換える都度、該領域の消去回数を書き換える書換手段と、各領域の領域情報における消去回数について、予め設定された設定回数以上であるか否かを判断する手段と、該手段が前記設定回数以上であると判断した領域に記憶していた情報を、他の領域に記憶する置換手段とを備えることを特徴とする。
【０００８】
本発明に係る制御装置は、前記書換手段は、前記消去回数の書き換えを、前記特定の領域内の空き部分に書き換え後の消去回数を記憶することで実現するようにしてあり、前記特定の領域内の空き部分の有無を判断する手段と、空き部分が無いと判断した場合、前記特定の領域に記憶してある情報を消去する手段とを備え、消去後の前記特定の領域に書き換え後の消去回数を記憶するようにしてあることを特徴とする。
【０００９】
本発明に係る制御装置は、前記置換手段は、前記１つの領域に記憶していた情報を、他の領域の内、消去回数が最も少ない領域に記憶するようにしてあることを特徴とする。
【００１０】
本発明に係る制御装置は、前記情報の種類は、自装置が搭載されるものの仕向地情報、前記外部機器の動作条件に対し設定される設定情報、前記外部機器の故障情報、又は前記外部機器を制御する処理に用いる制御情報で分別されていることを特徴とする。
【００１１】
本発明に係る制御装置は、前記外部機器は、車載機器であることを特徴とする。
【００１２】
本発明に係る制御装置は、前記記憶装置に記憶される情報は、車両のドア、ランプ又はキーの制御に関する情報であることを特徴とする。
【００１３】
本発明に係る制御装置は、書き換え可能な記憶装置を有し、該記憶装置に、複数の異なる種類に分別される情報を記憶し、記憶してある情報を用いて外部機器を制御する処理を実行する制御装置において、前記記憶装置は、複数の異なる領域に分別されており、該複数の異なる領域の内の１又は複数の特定の領域に、前記複数の異なる領域を夫々識別する領域識別情報毎に、各領域に記憶する情報の種類を識別する情報識別情報及び領域毎の前記情報の消去回数を含む領域情報を記憶する手段と、前記記憶装置の情報を書き換える場合、前記情報の情報識別情報を含む領域情報の領域識別情報が示す領域に前記情報を記憶する手段と、各領域の情報を書き換える都度、該領域の領域情報における消去回数を更新する手段と、各領域の領域情報における消去回数について、予め設定された設定回数以上であるか否かを判断する手段と、該手段が前記設定回数以上であると判断した領域の領域情報における情報識別情報を、含まれる消去回数が前記設定回数よりも少ない他の領域の領域情報における情報識別情報と置換する置換手段とを備えることを特徴とする。
【００１４】
本発明に係る制御方法は、書き換え可能であって複数の異なる領域に分別される記憶装置を有し、該記憶装置に、複数の異なる種類に分別される情報を記憶し、記憶してある情報を用いて外部機器を制御する方法において、前記情報を、該情報の種類別に異なる領域に記憶する手段と、前記複数の異なる領域の内の１又は複数の特定の領域に、領域毎の消去回数を含む領域情報を記憶し、各領域の情報を書き換える都度、該領域の消去回数を書き換え、各領域の領域情報における消去回数について、予め設定された設定回数以上であるか否かを判断し、前記設定回数以上であると判断した領域に記憶していた情報を、他の領域に記憶することを特徴とする。
【００１５】
本発明では、各情報は複数の種類に分別され、種類別に領域に分けて記憶される。そして各領域の情報の消去回数が設定回数以上となった場合に、各種類の情報の記憶先の領域が置換される。情報の種類が書き換えの頻度に基づき分別されることにより、消去回数の均等化が図られる。
【００１６】
本発明では、特定の領域における書き換えは、特定の領域の空き領域が存在する間は追記により実行され、空き領域が存在しない場合には消去した上での再記憶により実行される。これにより、特定の領域の消去回数は減少する。
【００１７】
本発明では、消去回数が設定回数以上となった情報の記憶先の領域は、最も消去回数が少ない領域へと置換される。これにより、効率的に消去回数の均等化が図られる。
【００１８】
本発明では、情報の種類の分別は、書き換えが行なわれることがない設定情報であるか、常時的に実行される制御処理で発生する制御情報であるか等の書き換え頻度の差異に基づき行なわれる。
【発明の効果】
【００１９】
本発明による場合、フラッシュメモリのような書き換え回数に上限を有する半導体記憶装置を有する制御装置は、効率的に長期的に記憶装置を使用することが可能となる。
【００２０】
特に車両における制御では、例えば、車両の設定に関する情報と、制御処理中に常時的に変化する制御情報とで書き換えの頻度が全く異なる。したがって特に車両の制御で用いられる記憶装置を有した制御装置にて、離散的な設定回数に達する都度に情報の記憶先を置換することによって記憶装置における各領域の情報の消去回数の均等化が有効に発揮される。
【図面の簡単な説明】
【００２１】
【図１】本実施の形態におけるマイコンを備えるＥＣＵの構成を示すブロック図である。
【図２】本実施の形態におけるデータフラッシュに記憶されるデータの内容の一例を示す説明図である。
【図３】本実施の形態におけるデータフラッシュの１つのブロックに記憶される管理情報の構成例を示す説明図である。
【図４】本実施の形態における最初の管理情報の内容例を示す説明図である。
【図５】管理情報の記憶の原理を示す説明図である。
【図６】本実施の形態のマイコンのＣＰＵによるデータフラッシュのデータの書き換えに係る処理手順の一例を示すフローチャートである。
【図７】本実施の形態のマイコンのＣＰＵによるデータフラッシュのデータの書き換えに係る処理手順の一例を示すフローチャートである。
【図８】２年半経過後の管理情報の内容例を示す説明図である。
【図９】置換後の管理情報の内容例を示す説明図である。
【図１０】５年経過後の管理情報の内容例を示す説明図である。
【図１１】置換後の管理情報の他の内容例を示す説明図である。
【発明を実施するための形態】
【００２２】
以下、本発明をその実施の形態を示す図面に基づいて具体的に説明する。以下の実施の形態では、本発明を車両に搭載されるＥＣＵのマイコンに適用した例を説明する。
【００２３】
図１は、本実施の形態におけるマイコン１００を備えるＥＣＵ１の構成を示すブロック図である。ＥＣＵ１は、車両に搭載され、車両のドア、シート、ランプ等のボディ系の設備の動作を制御するためのセンサ（スイッチ）、アクチュエータ等に係る処理を実行する所謂ボディＥＣＵと呼ばれる車載機器である。ＥＣＵ１は、マイコン１００及びトランシーバ１５及び入出力部１６を備える。トランシーバ１５は車載ＬＡＮ（Local Area Network）５に接続されて他のＥＣＵとの間のデータの送受信を実現する。入出力部１６は各種センサ２、アクチュエータ３に接続されるインタフェースであって、マイコン１００からの制御データの出力、マイコン１００によるセンサ２又はアクチュエータ３からのデータの入力を実現する。
【００２４】
マイコン１００は、ＣＰＵ（Central Processing Unit ）１０の他に、ＲＯＭ（Read Only Memory）１１、データフラッシュ１２、及びＲＡＭ（Random Access Memory）１３等のメモリと、トランシーバ１５、入出力部１６を含むインタフェース及び他のハードウェア又はマイコン１００内部の構成要素へのデータの入出力を実現するＩ／Ｏ１４とを備える。Ｉ／Ｏ１４は、ＣＡＮ（Controller Area Network ）等のネットワークコントローラ機能の他、タイマとの間の入出力等も含む。
【００２５】
ＣＰＵ１０は、ＲＯＭ１１に記憶されているコンピュータプログラムに基づき、データフラッシュ１２又はＲＡＭ１３等のメモリ、及びＩ／Ｏ１４を介して各種ハードウェア資源を制御し、センサ２又は車載ＬＡＮ５を介して接続される外部機器（ＥＣＵ等）からのデータを入力し、アクチュエータ３又は車載ＬＡＮ５を介して接続される外部機器を制御するための制御データを演算により求めて出力する処理を実行する。
【００２６】
ＲＯＭ１１は、ＣＰＵ１０が読み出すコンピュータプログラム用のメモリである。ＲＯＭ１１に記憶されるコンピュータプログラムは、不具合等に応じて書き換えを可能とするため、フラッシュメモリを用いるが、マスクＲＯＭ等を用いてもよい。
【００２７】
データフラッシュ１２は、書き換え可能であって且つ不揮発性の半導体メモリであるフラッシュメモリを用いる。データフラッシュ１２は、ＣＰＵ１０が処理の際に参照するデータを記憶する。データフラッシュ１２に記憶されるデータについては詳細を後述にて説明する。
【００２８】
ＲＡＭ１３は、揮発性のメモリであるＤＲＡＭ（Dynamic RAM ）、ＳＲＡＭ（Static RAM）等を用いる。ＲＡＭ１３は、ＣＰＵ１０が処理に用いる一時的な情報、例えばＣＰＵ１０がデータフラッシュ１２から読み出したデータを一時的に記憶する。
【００２９】
Ｉ／Ｏ１４は、上述したようにＣＡＮ又はＬＩＮ（Local Interconnect Network）等のネットワークコントローラ、又はＥＣＵ１に接続されるセンサ２又はアクチュエータ３等とのインタフェース、タイマ等のマイコン１００内に備えられる他のハードウェア資源とのインタフェースの総称である。
【００３０】
このように構成されるマイコン１００において、ＣＰＵ１０は、データフラッシュ１２に記憶されているデータを読み出し、作成したデータをデータフラッシュ１２に記憶する。データフラッシュ１２は、フラッシュメモリであるから、データの消去回数には上限がある。そこで、本実施の形態におけるマイコン１００では、データフラッシュ１２を出来得る限り有効に用いるために、データフラッシュ１２を以下に説明する方法で使用する。
【００３１】
図２は、本実施の形態におけるデータフラッシュ１２に記憶されるデータの内容の一例を示す説明図である。本実施の形態におけるデータフラッシュ１２は、ブロック１２１〜１２６の集合で構成されている。図２では、各矩形がブロックを示し、ブロック内に記憶されるデータの内容が示されている。各データの内容の後の括弧書きの番号は、データのＩＤを示している。
【００３２】
データフラッシュ１２の各ブロック１２１〜１２６へのデータの記憶はバイト単位で可能であるが、データの消去はブロック単位で行なう。各ブロック１２１〜１２６の容量は例えば、２キロバイトである。勿論、データフラッシュ１２は７つ以上のブロックの集合で構成されてもよいし、各ブロックの容量は４，１６，…，６４キロバイト等でもよい。
【００３３】
ブロック１２１には初期的に、ＥＣＵ１が搭載される車両の出荷時情報が記憶される。車両の出荷時情報のデータＩＤは「１」とする。車両の出荷時情報としては例えば、車両の仕向け情報（国コード）、右／左ハンドルの識別情報、又は車両のグレードが含まれる。車両の出荷時情報は、ＥＣＵ１のマイコン１００の制御処理に必要なデータであるが、車両が自動車工場から出荷された後、書き換えられることはない（内容が変化してはいけない）データである。
【００３４】
ブロック１２２には初期的に、ＥＣＵ１が搭載される車両のディーラ設定情報が記憶される。ディーラ設定情報のデータＩＤは「２」とする。ディーラ設定情報としては例えば、ＡＢＳ（Antilock Brake System ）の有無、又はサンルーフの有無等のメンテナンス工場設定情報、及びナビゲーションシステムのバージョン、又はモード等のディーラ設定情報が含まれる。ディーラ設定情報は、ＥＣＵ１のマイコン１００の制御処理に必要なデータであるが、車両がユーザへ納品された後、基本的に書き換えられることはないデータである。ディーラ設定情報は仮に、設定の変更などによって書き換えられるとしても、その書き換え頻度は１０年で２回程度である。
【００３５】
ブロック１２３には初期的に、ＥＣＵ１が搭載される車両のユーザカスタマイズ情報が記憶される。ユーザカスタマイズ情報のデータＩＤは「３」とする。ユーザカスタマイズ情報としては例えば、乗員毎の座席位置、ハンドル位置等、ユーザに納品された後にユーザが設定することが可能な情報が含まれる。ユーザカスタマイズ情報の書き換え頻度は、車両がユーザへ納品された後、例えば年に数回から数十回、即ち多い場合でも１０年で５００回程度である。
【００３６】
ブロック１２４には初期的に、ＥＣＵ１が搭載される車両の故障診断情報が記憶される。故障診断情報のデータＩＤは「４」とする。故障診断情報としては例えば、ＥＣＵ１自体で発生した通信エラー、又はマイコン１００の異常処理記録等の情報が含まれる。故障診断情報の書き換え頻度は、年に数回、１０年で５０回程度である。
【００３７】
ブロック１２５には初期的に、ＥＣＵ１のＣＰＵ１０が制御処理に用いる制御情報が記憶される。制御情報のデータＩＤは「５」とする。制御情報とは例えば、センサ（スイッチ）２の状態情報、アクチュエータ３の状態情報、他のＥＣＵから通信によって取得した情報が含まれる。センサ２の状態情報として例えば、ドアロックの開閉など、ボディ系の操作情報が挙げられる。したがって、制御情報は常時的にＣＰＵ１０の処理によって書き換えられる情報であって、書き換え頻度は１０年で２００，０００回程度である。
【００３８】
このように、ＣＰＵ１０が処理に用いるデータのデータフラッシュ１２における書き換え頻度、つまり消去回数頻度は、データの内容又は用途によって異なる。したがって、各データは、書き換えの頻度に基づく複数の種類に分別され、データの種類別にブロック１２１〜１２５に分けて記憶される。これにより、書き換えの種類毎に、記憶先のブロックを変更することによって消去回数の均等化が図られる。
【００３９】
ブロック１２６には、ブロック１２１〜１２５に記憶されているデータの種類の識別情報（データＩＤ）と消去回数とを含む管理情報が記憶される。管理情報のデータＩＤは「６」とする。ブロック１２６には管理情報以外は記憶しないとする。ＣＰＵ１０は、各データを読み出し又は記憶する処理に際し、データの種類別に、いずれのブロックに存在するかをブロック１２６の管理情報に基づき特定し、各ブロック内におけるアドレスにてデータを指定する。
【００４０】
図３は、本実施の形態におけるデータフラッシュ１２の１つのブロック１２６に記憶される管理情報の構成例を示す説明図である。１つのブロックの管理情報は例えば８バイトからなる。管理情報は先頭からブロックＩＤ、データＩＤ及び消去回数を含む。ブロックＩＤ及びデータＩＤは８ビットで表わされ、消去回数は３２ビットで表わされる。残りの２バイトは他の用途に用いられてよい。マイコン１００のデータフラッシュ１２には、ブロック１２１〜１２６の数である「６」個分の管理情報が記憶される。
【００４１】
図４は、本実施の形態における最初の管理情報の内容例を示す説明図である。図４では、各ブロック１２１〜１２６の最初の管理情報に含まれる情報を表形式で示している。例えば、ブロックＩＤ「１」のブロック１２１には、データＩＤ「１」のデータが記憶されており、消去回数は「０」である。同様に、ブロックＩＤ「２」のブロック１２２にはデータＩＤ「２」のデータが記憶されており、消去回数は「０」である。以下他のブロック１２３〜１２６についての管理情報も同様である。
【００４２】
なお、各ブロック１２１〜１２６のための管理情報におけるデータＩＤ及び消去回数は、消去又は後述の置換の都度に書き換えられる。書き換えの頻度が高いため、ブロック１２６における管理情報の書き換えは、ブロック１２６の空き領域が無くなるまではバイト単位で可能な追記によって実現する。図５は、管理情報の記憶の原理を示す説明図である。太線で示す矩形がブロック１２６全体を示し、各矩形は６ブロック分の管理情報の占有領域を示す。ブロック１２６は初期的に、０ｘＦＦで埋められており、最初の６個分の管理情報が記憶される。図５に示すように、管理情報は更新される都度、６個分毎に追記される。ブロック１２６の空き領域が無くなった場合の書き換えはブロック１２６全体のデータが消去され、新たに先頭から６個分の管理情報が記憶されるようにする。なおＣＰＵ１０は、空き領域の有無を、０ｘＦＦが４８バイト（８バイト×６個分）以上存在するか否かで判断することが可能である。これにより、本実施の形態におけるブロック１２６の容量は２キロバイトであるから、ブロック１２６全体の書き換えは、４０回に１度行なわれる程度に抑えられる。
【００４３】
図６及び図７は、本実施の形態のマイコン１００のＣＰＵ１０によるデータフラッシュ１２のデータの書き換えに係る処理手順の一例を示すフローチャートである。ＣＰＵ１０は、データの書き換えが発生した場合、これを検知して以下の処理を実行する。
【００４４】
ＣＰＵ１０は、管理情報を記憶しているブロック１２６から最も新しい管理情報が記憶されている位置を検索する（ステップＳ１０１）。具体的にはＣＰＵ１０は、ブロック１２６の末尾から、例えば４８バイト（６つの管理情報分）ずつ、全て０ｘＦＦであるか否かを判断することによって検索を行なう。ＣＰＵ１０は、検索により発見した管理情報の位置を変数ＰＯＳに代入し（ステップＳ１０２）、ＲＡＭ１３に一時記憶する（ステップＳ１０３）。
【００４５】
ＣＰＵ１０は、ＲＡＭ１３の変数ＰＯＳに基づき、管理情報をＲＡＭ１３上に読み出し（ステップＳ１０４）、読み出した管理情報に基づき、書き換え対象のブロックの消去回数を取得し、ＲＡＭ１３に一時記憶する（ステップＳ１０５）。
【００４６】
ＣＰＵ１０は、消去回数が設定回数に達しているか否かを判断する（ステップＳ１０６）。ＣＰＵ１０は、消去回数が設定回数に達していると判断した場合（Ｓ１０６：ＹＥＳ）、ＲＡＭ上の管理情報に基づき、ブロックＩＤ「１」〜「５」の内、消去回数が最も少ないブロックを特定する（ステップＳ１０７）。なおブロックＩＤ「６」のブロック１２６は、管理情報の専用領域として用いる。
【００４７】
ＣＰＵ１０は、特定したブロックの管理情報が含む消去回数が、書き換え対象のブロックの消去回数未満であるか否かを判断する（ステップＳ１０８）。ステップＳ１０８の処理は、最も少ない消去回数が設定回数以上である場合、つまり、各領域全ての消去回数が設定回数を超えた場合には、記憶先の置換を回避するために行なう。
【００４８】
ＣＰＵ１０は、ステップＳ１０８において、特定したブロック（置換先の候補）の消去回数が書き換え対象の消去回数未満であると判断した場合（Ｓ１０８：ＹＥＳ）、ＣＰＵ１０は、書き換え対象のブロック及び特定した置換先のブロック夫々に記憶してあるデータを実際に入れ替えて書き換える処理を行なう（ステップＳ１０９）。具体的にはＣＰＵ１０は、書き換え対象のブロック及び特定した置換先のブロック夫々に記憶してあるデータをＲＡＭ１３上に一旦読み出し、各ブロックを消去し、夫々のデータを入れ替え後のブロックへ記憶する。
【００４９】
ＣＰＵ１０は、ＲＡＭ１３上に読み出している書き換え対象のブロック及び特定した置換先のブロックの管理情報における消去回数を夫々更新して一時的に変数ＷＫに代入して記憶し（ステップＳ１１０）、ＲＡＭ上に読み出している書き換え対象のブロックの管理情報が含むデータＩＤと、特定したブロックの管理情報が含むデータＩＤとを置換する（ステップＳ１１１）。ＣＰＵ１０は、変数ＷＫに代入して記憶しておいた数値を、書き換え対象のブロック及び置換先のブロックの管理情報の消去回数に代入してＲＡＭ１３上の管理情報を更新する（ステップＳ１１２）。
【００５０】
次にＣＰＵ１０は、ＲＡＭ１３の変数ＰＯＳが所定数以上であるか否かを判断する（ステップＳ１１３）。ここで所定数とは、管理情報を特定の領域であるブロック１２６に追記することができる回数である。つまり、ＣＰＵ１０はステップＳ１１３にて、特定のブロック１２６を書き換える必要があるか否かを判断する。
【００５１】
ＣＰＵ１０は、変数ＰＯＳが所定数未満であると判断し、ブロック１２６の書き換えの必要が無いと判断した場合（Ｓ１１３：ＮＯ）、ＲＡＭ１３上の管理情報（データＩＤの置換、及び消去回数を更新済み）をブロック１２６の空き領域に記憶し（ステップＳ１１４）、処理を終了する。
【００５２】
ＣＰＵ１０は、ステップＳ１１３にて変数ＰＯＳが所定数以上であると判断し、ブロック１２６の書き換えの必要があると判断した場合（Ｓ１１３：ＹＥＳ）、ブロック１２６のデータを消去し（ステップ１１５）、全て０ｘＦＦで埋める（ステップＳ１１６）。ＣＰＵ１０は、ＲＡＭ１３上の管理情報におけるブロックＩＤ「６」の消去回数を更新し（ステップＳ１１７）、ＲＡＭ１３上の管理情報（ブロック「１」〜「６」分）をブロック１２６の空き領域の先頭に記憶し（Ｓ１１４）、処理を終了する。
【００５３】
ＣＰＵ１０は、ステップＳ１０６において、消去回数が設定回数に達していないと判断した場合（Ｓ１０６：ＮＯ）、ＲＡＭ１３上に読み出している管理情報の書き換え対象ブロックの消去回数を更新してＲＡＭ１３上の管理情報を更新する（ステップＳ１１８）。次のＣＰＵ１０は、処理をステップＳ１１３へ進める。
【００５４】
ＣＰＵ１０は、ステップＳ１０８にて、特定したブロック（置換先の候補）の消去回数が書き換え対象の消去回数以上であると判断した場合（Ｓ１０８：ＮＯ）、全ての消去回数が設定回数を超えたと推定されるので、設定回数を他の設定回数に再設定し（ステップＳ１１９）、処理をステップＳ１１８へ進める。例えば、第１段階の設定回数を消去回数の理論上限値の半分とし、第２，３，４段階へと所定回数ずつ増加させるなどとする。設定回数自体を上限よりも小さい範囲で離散的に増加させるようにし、多段階でブロックの置換の要否を判断すると、更に効率化を図ることが可能となる。
【００５５】
図４に示した管理情報が、図６及び図７のフローチャートに示した処理によってどのように用いられ、どのようにして各ブロック１２１〜１２６の消去回数が均等化されるかを、具体例を挙げて説明する。なお、具体例では、消去回数に対する設定回数を以下のようにする。例えば理論の消去回数の上限値を１０万回とした場合、第１段階の設定回数は半分の５０，０００回とし、第２段階は６０，０００回、第３段階は８０，０００回、第４段階は９０，０００回とする。
【００５６】
図８は、２年半経過後の管理情報の内容例を示す説明図である。図８の内容例は、図４に対応し、各ブロック１２１〜１２６の最初の管理情報に含まれる情報を表形式に示している。制御情報の書き換え頻度は年に２０，０００回程度と見積もられており、２年半経過したときに、消去回数が設定回数の５０，０００回に達せられる。したがって２年半経過後の管理情報は、図８に示すように、ブロックＩＤ「１」のブロック１２１に記憶されている出荷時情報（データＩＤ「１」）の消去回数は０回、ブロックＩＤ「２」のブロック１２２に記憶されているディーラ設定情報（データＩＤ「２」）の消去回数は１回である。同様にしてブロックＩＤ「３」のブロック１２３に記憶されているユーザ設定情報（データＩＤ「３」）の消去回数は１２５回であり、ブロックＩＤ「４」のブロック１２４に記憶されている故障診断情報（データＩＤ「４」）の消去回数は１２回、ブロックＩＤ「５」のブロック１２５に記憶されている制御情報（データＩＤ「５」）の消去回数は５０，０００回、ブロックＩＤ「６」のブロック１２６に記憶されている管理情報（データＩＤ「６」）の消去回数は１，２５３回である。管理情報を記憶するブロック１２６の消去回数は、更新を図５に示したような追記で実現しているため、各ブロックの消去回数の合計の約４０分の１に抑えられている。
【００５７】
ＣＰＵ１０は、管理情報が図８に示すような状態である場合に、制御情報の書き換えの発生を検知したとき、図６及び図７のフローチャートに示した処理手順を以下のように実行する。ＣＰＵ１０は、最新の管理情報（図８）をＲＡＭ１３に読み出し（Ｓ１０４）、書き換え対象のブロック１２５の消去回数「５０，０００」をＲＡＭ１３に一時記憶する（Ｓ１０５）。ＣＰＵ１０は、消去回数が設定回数に達していると判断し（Ｓ１０６：ＹＥＳ）、消去回数がゼロで最も少ないブロックＩＤ「１」を特定する（ステップＳ１０７）。ＣＰＵ１０は、特定したブロックＩＤ「１」の消去回数は書き換え対象のブロックＩＤ「５」の消去回数よりも少ないので（Ｓ１０８：ＹＥＳ）、ブロックＩＤ「５」のブロック１２５に記憶してある制御情報及びブロックＩＤ「１」のブロック１２１に記憶してある出荷時情報を一時的にＲＡＭ１３に記憶し、出荷時情報をブロックＩＤ「５」のブロック１２５、制御情報をブロックＩＤ「１」のブロック１２１に記憶するという入れ替えを行なう（Ｓ１０９）。
【００５８】
ＣＰＵ１０は、ブロックＩＤ「１」の管理情報の消去回数「０」、ブロックＩＤ「５」の管理情報の消去回数「５０，０００」を一時的に変数ＷＫに代入して記憶し（Ｓ１１０）、ブロックＩＤ「１」の管理情報とブロックＩＤ「５」の管理情報とを置換し（Ｓ１１１）、記憶しておいた変数ＷＫをいずれも「１」及び「５０，００１」と更新して各管理情報の消去回数とする（Ｓ１１２）。そしてＣＰＵ１０は、更新後のＲＡＭ１３上の管理情報を、データフラッシュ１２のブロック１２６に記憶する（Ｓ１１４）。
【００５９】
図９は、置換後の管理情報の内容例を示す説明図である。図９の内容例は、図８に対応し、各ブロック１２１〜１２６の管理情報に含まれる情報の内容を表形式で示している。図９の太字に示すように、ブロックＩＤ「１」及びブロックＩＤ「５」夫々におけるデータＩＤが「１」と「５」とで置換され、消去回数は置換による１回ずつ更新されている。この後、制御情報は消去回数が「１」であるブロック１２１に記憶されて用いられる。
【００６０】
図１０は、５年経過後の管理情報の内容例を示す説明図である。図１０の内容例は、図９に対応し、各ブロック１２１〜１２６の管理情報に含まれる情報を表形式で示している。制御情報は、図９の内容例に示したように、記憶先のブロックがブロックＩＤ「１」のブロック１２１へ置換された後、２年半の経過で消去回数が再度５０，０００回に達せられる。したがって、出荷から５年経過後の管理情報は、図１０に示すように、制御情報の記憶先であるブロックＩＤ「１」のブロック１２１の消去回数は５０，０００回である。ブロック１２２〜１２４の消去回数は、記憶されているデータの種類に変更がなく、図８と比較して倍増している。出荷時情報は書き換えが無いので、ブロックＩＤ「５」のブロック１２５の消去回数は、置換による書き換えがされた５０，００１回（図９）から変化が無い。ブロックＩＤ「６」のブロック１２６の消去回数も、倍増して２５０６回である。
【００６１】
ＣＰＵ１０は、管理情報が図１０に示すような状態である場合に、制御情報の書き換えの発生を検知したとき、図６及び図７のフローチャートに示した処理手順に基づく処理を再度実行する。このときＣＰＵ１０は、ブロック１２１の消去回数「５０，０００」が設定回数に達していると判断し（Ｓ１０６：ＹＥＳ）、消去回数が最も少ないブロックＩＤ「２」を特定し（Ｓ１０７）、ブロックＩＤ「１」のブロック１２１に記憶してある制御情報及びブロックＩＤ「２」のブロック１２２に記憶してあるディーラ設定情報を一時的にＲＡＭ１３に記憶し、ディーラ設定情報をブロックＩＤ「１」のブロック１２１、制御情報をブロックＩＤ「２」のブロック１２２に記憶するという入れ替えを行なう（Ｓ１０９）。
【００６２】
ＣＰＵ１０は、ブロックＩＤ「２」の管理情報の消去回数「２」、ブロックＩＤ「１」の管理情報の消去回数「５０，０００」を一時的に変数ＷＫに代入して記憶し（Ｓ１１０）、ブロックＩＤ「２」の管理情報とブロックＩＤ「１」の管理情報とを置換し（Ｓ１１１）、記憶しておいた変数ＷＫをいずれも「３」、「５０，００１」と更新して各管理情報の消去回数とする（Ｓ１１２）。そしてＣＰＵ１０は、更新後のＲＡＭ１３上の管理情報を、データフラッシュ１２のブロック１２６に記憶する（Ｓ１１４）。
【００６３】
図１１は、置換後の管理情報の他の内容例を示す説明図である。図１１の内容例は、図１０に対応し、各ブロック１２１〜１２６の管理情報に含まれる情報の内容を表形式で示している。図１１の太字に示すように、ブロックＩＤ「１」及びブロックＩＤ「２」夫々におけるデータＩＤが「５」と「２」とで置換され、消去回数は置換による１回ずつ更新されている。この後、制御情報は消去回数が「３」であるブロック１２２に記憶されて用いられる。
【００６４】
このように、各ブロック１２１〜１２６の消去回数は、設定回数（５０，０００回）を基準に均等化される。ブロック１２１〜１２５の消去回数が５０，０００回に達した場合、次の設定回数６０，０００回、８０，０００回、９０，０００回などを基準に均等化される。このように、書き換え頻度が極端に異なるデータをデータフラッシュ１２に記憶して使用する場合であっても、消去回数の均等化を図ることができ、マイコン１００全体としての高寿命化を実現することができる。なお、巡回的にデータの記憶先を入れ替えたり、１回でも少ないブロックとの間で置換したりするよりも、５０，０００回などと基準回数を設定し、消去回数が設定回数以上となった際にデータの入れ替えを置換によって実現することにより、書き換えの総回数をより少なくすることができる。
【００６５】
上述のマイコン１００は、車両に搭載されるボディ系のＥＣＵ１が備える構成とした。しかしながら、本発明は車両用のマイコン１００におけるデータフラッシュ１２の使用方法に限られない。安価なマイコンを実現するためにフラッシュメモリをデータ記憶用に使用している場合であって、記憶するデータの書き換え頻度に大きな差異が有るときには、本発明は効果を発揮する。
【００６６】
また本発明は、本実施の形態で説明したように、フラッシュメモリであるデータフラッシュ１２における消去回数を均等化するためのみならず、消去回数に制限がある書き換え可能な記憶装置、例えば、フラッシュメモリの後継となる記憶装置の効率的な使用方法に応用することも可能である。
【００６７】
なお、上述のように開示された本実施の形態はすべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記した意味ではなく、特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【符号の説明】
【００６８】
１  ＥＣＵ
１０  ＣＰＵ
１２  データフラッシュ
１００  マイコン
【図１】
2014130530.tif 000003
【図２】
2014130530.tif 000004
【図３】
2014130530.tif 000005
【図４】
2014130530.tif 000006
【図５】
2014130530.tif 000007
【図６】
2014130530.tif 000008
【図７】
2014130530.tif 000009
【図８】
2014130530.tif 000010
【図９】
2014130530.tif 000011
【図１０】
2014130530.tif 000012
【図１１】
2014130530.tif 000013