(57)【要約】【課題】電源瞬断などが発生しても、電源復帰後に、より精度高く、最新データのある記憶ブロックの判定を可能とする。【解決手段】複数の記憶ブロックを有するメモリとメモリ制御部とを備え、記憶ブロックを、管理データ領域と実データ領域とに区分する。管理データ領域は、実データの書き込み開始を示す書込中管理データと、実データの書き込み完了を示す有効管理データと、記憶された実データを消去してもよい状態になったことを示す消去前管理データとを記憶する。メモリ制御部は、管理データの記憶状態に基づいて、最新のデータが記憶された記憶ブロックを判別する。【選択図】図５
2014182438.tif 000002
【特許請求の範囲】
【請求項１】
複数の記憶ブロックを有し、データの上書き更新を行うことができず、データの消去を行う際には前記記憶ブロック単位で消去を行う必要があるメモリに対する、データの記憶制御を行うデータ記憶装置であって、
実データを記憶する実データ領域が設けられた複数の記憶ブロックを有するメモリと、
前記メモリに対する、書き込みと読み出しの少なくとも一方の制御を行うメモリ制御部とを備え、
前記メモリには管理用の管理データを記憶する管理データ領域が設けられ、
前記管理データ領域は、実データの書き込み開始を示す書込中管理データと、実データの書き込み完了を示す有効管理データと、記憶された実データを消去してもよい状態になったことを示す消去前管理データとが記憶できるように構成されており、
前記メモリ制御部は、前記管理データ領域の管理データの記憶状態に基づいて、最新のデータが記憶された前記記憶ブロックを判別する
ことを特徴とするデータ記憶装置。
【請求項２】
前記メモリ制御部は、新たな前記記憶ブロックである新記憶ブロックに実データの記憶を行う場合に、
前記新記憶ブロックについての前記管理データ領域に書込中管理データを記憶した後に、前記新記憶ブロックに対して実データの書き込みを行い、実データの書き込みが完了した後に、以前に実データの記憶を行っていた前記記憶ブロックである旧記憶ブロックについての前記管理データ領域に消去前管理データを記憶し、その後、前記新記憶ブロックについての前記管理データ領域に有効管理データを記憶する
ことを特徴とする請求項１に記載のデータ記憶装置。
【請求項３】
前記メモリ制御部は、前記管理データ領域に、有効管理データが記憶され、かつ、消去前管理データが記憶されていない有効ブロックを、最新のデータが記憶された記憶ブロックであると判断する
ことを特徴とする請求項２に記載のデータ記憶装置。
【請求項４】
前記メモリ制御部は、前記有効ブロックが存在しないと判断した場合には、前記管理データ領域に有効管理データと消去前管理データとが記憶された消去前ブロックを、最新のデータが記憶された記憶ブロックであると判断する
ことを特徴とする請求項３に記載のデータ記憶装置。
【請求項５】
前記メモリ制御部は、前記有効ブロックが存在せず、かつ、前記管理データ領域に有効管理データと消去前管理データとが記憶された消去前ブロックと、前記管理データ領域に書込中管理データが記憶されているが有効管理データが記憶されていない書込中記憶ブロックとがともに存在すると判断した場合に、前記消去前ブロックを最新データが記憶された記憶ブロックであると判断する
ことを特徴とする請求項３に記載のデータ記憶装置。
【請求項６】
前記メモリ制御部は、
前記複数の記憶ブロックのなかに、有効管理データを有する記憶ブロックが複数存在する場合、異常状態にあることを通知すること
を特徴とする請求項１〜５のいずれか１つに記載のデータ記憶装置。
【請求項７】
前記メモリ制御部は、
あらかじめ１組として設定された複数の前記記憶ブロックの各管理データに基づいて、前記更新すべき最新データを有する記憶ブロックと、不良データが残された記憶ブロックとを判別する
ことを特徴とする請求項１〜６のいずれか１つに記載のデータ記憶装置。
【請求項８】
複数の記憶ブロックを有し、データの上書き更新を行うことができず、データの消去を行う際には前記記憶ブロック単位で消去を行う必要があるメモリに対するデータの記憶方法であって、
実データを記憶する実データ領域が設けられた複数の記憶ブロックを有するメモリに、管理用の管理データを記憶する管理データ領域を設けるとともに、前記管理データ領域には、実データの書き込み開始を示す書込中管理データと、実データの書き込み完了を示す有効管理データと、記憶された実データを消去してもよい状態になったことを示す消去前管理データとを記憶できるように構成し、
前記メモリに対する、書き込みと読み出しの少なくとも一方の制御を行うメモリ制御部は、
新たな前記記憶ブロックである新記憶ブロックに実データの記憶を行う場合、
前記新記憶ブロックについての前記管理データ領域に書込中管理データを記憶した後に、前記新記憶ブロックに対して実データの書き込みを行い、実データの書き込みが完了した後に、以前に実データの記憶を行っていた前記記憶ブロックである旧記憶ブロックについての前記管理データ領域に消去前管理データを記憶し、その後、前記新記憶ブロックについての前記管理データ記憶領域に有効管理データを記憶する
ことを特徴とするデータの記憶方法。
【請求項９】
請求項１〜７のいずれか１つに記載のデータ記憶装置を備えることを特徴とする車載用制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶装置、データの記憶方法および車載用制御装置に関する。
【背景技術】
【０００２】
近年、コストパフォーマンスの高いフラッシュメモリが不揮発性メモリとし広く用いられてきている。
【０００３】
フラッシュメモリは、複数の記憶ブロックに分割されており、記憶ブロック内の記憶単位（例えば、レコード）毎のデータの書き込みや、記憶ブロック単位毎のデータの消去などが可能であるが、電源瞬断が発生した場合、データの書き込みや消去の異常終了が発生し、データ損失を招くおそれがある。
【０００４】
そのため、フラッシュメモリでは、新しいデータを書き込んだ後、旧いデータを消去するようにしている。かかるフラッシュメモリの制御では、各記憶ブロックの状態を示すフラグ情報として、書き込み対象の記憶ブロックを変更する際に、古い記憶ブロックに対して、変更する処理の開始と終了を記憶する「更新開始」、「更新終了」のフラグや、消去する記憶ブロックに対して、消去が終了したことを記憶する「消去終了」のフラグなどの管理情報を記憶し、かかる管理情報に基づいて、メモリの更新、書き込み、消去などを行うものがある（例えば、特許文献１を参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１１−１７５３６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来の技術は、電源瞬断が発生するタイミングや、書き込み処理の行い方といった適用するシステムによっては、電源復帰後に、どの記憶ブロックのデータが使用可能な最新データなのかが分からない状況が生じる可能性がある。
【０００７】
本発明は、上述した従来技術による問題点を解消するためになされたものであって、電源瞬断などが発生しても、電源復帰後に、より精度高く、最新データのある記憶ブロックの判定が可能なデータ記憶装置、データの記憶方法および車載用制御装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するため、本発明は、複数の記憶ブロックを有し、データの上書き更新を行うことができず、データの消去を行う際には前記記憶ブロック単位で消去を行う必要があるメモリに対する、データの記憶制御を行うデータ記憶装置であって、実データを記憶する実データ領域が設けられた複数の記憶ブロックを有するメモリと、前記メモリに対する、書き込みと読み出しの少なくとも一方の制御を行うメモリ制御部とを備える。前記メモリには管理用の管理データを記憶する管理データ領域が設けられ、前記管理データ領域は、実データの書き込み開始を示す書込中管理データと、実データの書き込み完了を示す有効管理データと、記憶された実データを消去してもよい状態になったことを示す消去前管理データとが記憶できるように構成される。前記メモリ制御部は、前記管理データ領域の管理データの記憶状態に基づいて、最新のデータが記憶された前記記憶ブロックを判別する。
【発明の効果】
【０００９】
本発明によれば、電源瞬断などが発生しても、電源復帰後に、より精度高く、最新データのある記憶ブロックの判定が可能となり、信頼性の高いデータ記憶装置の提供が可能となる。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施形態に係るデータ記憶装置を備えるマイコンの概要を示すブロック図である。
【図２】図２は、実施形態に係るデータ記憶装置としてのフラッシュメモリの概要を示すブロック図である。
【図３】図３は、実施形態に係る記憶ブロックの概要を示すブロック図である。
【図４】図４は、実施形態に係るデータ更新処理の一連の流れを示す説明図である。
【図５】図５は、実施形態に係るデータ更新処理の実行に伴う記憶ブロックの状態の変化を示す説明図である。
【図６】図６は、実施形態に係る有効ブロック判定処理の一例を示す説明図である。
【図７】図７は、実施形態に係る有効ブロック判定処理の一例を示す説明図である。
【図８】図８は、実施形態に係る有効ブロック判定処理の一例を示す説明図である。
【図９】図９は、実施形態に係る有効ブロック判定処理の一例を示す説明図である。
【図１０】図１０は、変形例に係るデータ更新処理の実行に伴う記憶ブロックの状態の変化を示す説明図である。
【図１１】図１１は、変形例に係るデータ更新処理と瞬断タイミングとの関連を示す説明図である。
【図１２】図１２は、実施形態に係る書込処理の流れの一例を示す説明図である。
【図１３】図１３は、実施形態に係る読出処理の流れの一例を示す説明図である。
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して、本実施形態に係るデータ記憶装置、データの記憶方法および車載用制御装置について具体的に説明する。なお、以下では、データ記憶装置の記憶媒体としてフラッシュメモリを例にとるとともに、このフラッシュメモリを、マイコンに設けたものとして説明する。しかし、以下の実施形態によってこの発明が限定されるものではない。
【００１２】
まず、実施形態に係るデータ記憶装置について、図１および図２を用いて説明する。図１は、データ記憶媒体であるフラッシュメモリ４を備えるマイコン１０の概要を示すブロック図、図２は、フラッシュメモリ４の概要を示すブロック図である。
【００１３】
なお、本実施形態におけるマイコン１０は、データ記憶装置の一例であり、自動車のエンジンを制御する電子制御ユニット（ＥＣＵ：Electronic Control Unit）に設けられたものとする。なお、電子制御ユニット（ＥＣＵ）は、車載用制御装置の一例である。
【００１４】
図１に示すように、データ記憶装置であるマイコン１０は、メモリ制御部の一例となるＣＰＵ１と、ＲＡＭ２と、Ｒ０Ｍ３と、フラッシュメモリ４とを備えており、それぞれ、内部バス９を介して接続している。
【００１５】
ＲＡＭ２は、対象となるデータを記憶する領域や、フラッシュメモリ４の記憶ブロック８（図２）に設定された管理データ領域８１に記憶したデータと同じデータを記憶しておく領域を有する。また、ＲＯＭ３は、フラッシュメモリ制御ソフトウェア３１やアプリケーションソフトウェア３２を記憶している。フラッシュメモリ制御ソフトウェア３１は、フラッシュメモリ４のファームウェアであり、フラッシュメモリ４に対するデータの書き込みや消去といった制御を行うためのソフトウェアである。また、アプリケーションソフトウェア３２は、自動車に搭載された電子機器などの制御処理を担う機能制御用ソフトウェアであり、例えば、エンジンの制御を行うソフトウェアである。
【００１６】
フラッシュメモリ４は、データの追加記憶を行うことはできるが、データの上書き更新ができない不揮発性メモリであるため、書込中の記憶ブロック８に未書込領域がなくなると、必要に応じて、別の未書込の記憶ブロック８に、元の記憶ブロック８に記憶されたデータにおける一部の必要なデータ（例えば、最新のデータ）を書き込んだ後、元の記憶ブロック８を一括消去するように構成している。
【００１７】
詳細には、フラッシュメモリ４は、“１”を“０”に書き替えることは、記憶ブロック単位よりも小さな記憶単位（例えばレコード）毎に行うことができるが、“０”を“１”に書き替えることは、ブロック単位（一括消去を行う単位）でしかできないようになっている。
【００１８】
図１および図２に示すように、フラッシュメモリ４は、複数の記憶ブロック８，・・・（図２）が設けられた記憶領域６と、この記憶領域６に対する更新作業などを管理・制御する管理部５とを有する。なお、ここでいうフラッシュメモリ４は、記憶媒体のみでなく、外部からの指示に基づいて、記憶媒体に対する単純な書き込みや読み出しといった制御を行うメモリ制御機能も含んでいる。つまり、管理部５もメモリ制御部の一例となりうる。
【００１９】
すなわち、管理部５は、ＣＰＵ１からのデータ書込要求、データ読出要求、データ消去要求などに従い、記憶領域６内に設定された複数の記憶ブロック８に対して、データの書き込み、データの読み出しおよびデータの消去などを行う。
【００２０】
書き込み要求があった場合や、書込中の記憶ブロック８に未書込領域がなくなったことにより、書き込みを行う記憶ブロック８を変更する場合、書き込み対象であったが未書込領域がなくなった記憶ブロック８（古いデータを記憶した記憶ブロック８）内の、過去に書き込んでいた既存データは残したまま、他の記憶ブロック８に前記既存データにおける一部の必要なデータや、新たなデータを書き込み、書き込み終了後、未書込領域がなくなっていた記憶ブロック８（古いデータを記憶した記憶ブロック８）のデータを消去する。
【００２１】
ここで、図３を参照して、フラッシュメモリ４が備える記憶ブロック８の内部構成について説明する。図３は、実施形態に係る記憶ブロックの概要を示すブロック図である。
【００２２】
図３に示すように、記憶ブロック８は、管理データ領域８１と実データ領域８２とに区分されている。実データ領域８２には、例えば、ＲＡＭ２に記憶されていた自動車の運転履歴のデータや、制御データの各種学習値、各種センサが検出した異常値データ（ダイアグデータや、フリーズフレームデータ）などが、所定のタイミングにて記憶される。
【００２３】
一方、管理データ領域８１は、区画領域として４つの小領域にさらに区画されており、以下の４種類の管理データを各小領域に１対１で対応させて記憶させるようにしている。すなわち、図３における管理データ領域８１の４つの小領域について、左側から以下のようなデータが記憶される。
（１）実データの書込み完了を示す有効管理データ。
（２）実データの書き込み中（書き込み開始）を示す書込中管理データ。
（３）記憶ブロックの消去開始（消去中）を示し、また記憶されているデータを消去してもよい状態になったことを示す消去前管理データ。
（４）記憶ブロックの消去完了を示す消去済管理データ。
【００２４】
なお、上記（１）、（２）における実データとは、書き込みを行う記憶ブロック８の変更時に、新しい記憶ブロック８（新記憶ブロック）に書き込むデータ（上記した既存データにおける一部の必要なデータや、新たなデータ等）を示す。なお、上記（３）の消去前管理データは、上記（２）の実データの書き込み後、すぐに消去処理を行わないケースも考えられるので、記憶された実データを消去する処理を行ってもよい状態になった（消去準備段階になった）ことを示す管理データであるともいえる。
【００２５】
このように、管理データは、上書きされるのではなく、４つの小領域に順番に書き込まれて記憶されることになる。
【００２６】
かかる管理データを記憶ブロック８にそれぞれ記憶させることで、たとえば、更新作業中などに電源瞬断（瞬間的な電源遮断）があった場合でも、電源復帰後に、使用可能な最新データの記憶ブロック８を判定することができる。また、電源瞬断によって不良データが生じているかどうかの判断も行える。
【００２７】
したがって、信頼性の高いフラッシュメモリ４となるとともに、誤って記憶ブロック８に上書きなどをして、記憶ブロック８の寿命、ひいてはフラッシュメモリ４の寿命を短くするおそれもない。
【００２８】
図４は、実施形態に係るデータ更新処理の一連の流れを示す説明図、図５は、実施形態に係るデータ更新処理の実行に伴う記憶ブロックの状態の変化を示す説明図である。図示するように、記憶ブロック８は、上記管理データを記憶しながら、５つのステータスを繰り返す。こうして、ＣＰＵ１は、ＲＯＭ３に記憶されたフラッシュメモリ制御ソフトウェア３１を用いることにより、管理部５を介して、管理データ領域８１に記憶された管理データを取得して記憶ブロック８の状態を判断することができる。
【００２９】
たとえば、図４（ａ）に示すように、ある記憶ブロック８の状態が、実データ領域８２のデータが全て消去されている状態にある消去済みブロックの状態であるとする。かかる消去済みブロックとなる記憶ブロック８には、正常時には、図５（ａ）に示すように、管理データ領域８１には、４番目（一番右側）の小領域に消去済管理データ（「消去済」）のみが記憶されている。
【００３０】
次いで、消去済みブロックである記憶ブロック８に対して、図４（ｂ）に示すように、この記憶ブロック８の管理データ領域８１に書込中管理データを記憶させるとともに、実データ領域８２に対する新しいデータの書き込みを開始することで、書込中ブロックとする。このとき、正常時には、図５（ｂ）に示すように、記憶ブロック８には、新たに、管理データ領域８１の２番目の小領域に書込中管理データ（「書込中」）が記憶され、「書込中」と「消去済」が記憶されている状態になる。
【００３１】
実データ領域８２に対する新しいデータの書き込みが完了すると、図４（ｃ）に示すように、この記憶ブロック８の管理データ領域８１に有効管理データを記憶させることで、この記憶ブロック８を有効ブロックとする。すなわち、図５（ｃ）に示すように、正常時には、この記憶ブロック８の管理データ領域８１には、新たに、管理データ領域８１の１番目（一番左側）の小領域に有効管理データ（「有効」）が記憶され、「有効」と「書込中」と「消去済」が記憶されている状態になる。なお、基本的には、この有効ブロックに、最新データが記憶されている。
【００３２】
その後、書込中の記憶ブロック８に未書込領域がなくなった場合などでは、新しい記憶ブロック８に書き込みを行うブロックを変更する処理を行うが、その際に、新しい記憶ブロック８が有効ブロックになると、古い記憶ブロック８（旧記憶ブロック）に記憶されたデータを無効化する（消去してもよい状態にする）必要がある。そこで、図４（ｄ）に示すように、この古い記憶ブロック８の管理データ領域８１に消去前管理データを記憶させるとともに、この記憶ブロック８（管理データ領域８１と実データ領域８２）に対する一括消去を開始することで、この記憶ブロック８を消去前ブロックとする。
【００３３】
このとき、図５（ｄ）に示すように、正常時には、記憶ブロック８の管理データ領域８１の３番目の小領域に消去前管理データ（「消去前」）が記憶され、４つの小領域が全て埋まっている状態になる。
【００３４】
記憶ブロック８に対する一括消去を行ったが、まだ、記憶ブロック８の記憶状態を初期状態である全て“１”が記憶された状態（“０ｘＦＦ”）にする処理を行っていない状態にあるときには、図４（ｅ）に示すように、この記憶ブロック８は不定なブロックとされる。この記憶ブロック８の管理データ領域８１は、図５（ｅ）に示すように、何も管理データが記憶されておらず、管理データ領域８１も実データ領域８２も不定状態となっている。
【００３５】
すなわち、データ消去処理は、一連のデータ更新処理の中でも比較的に処理時間がかかるものであり、確率的には、このときに電源瞬断なども発生しやすい。その場合、本来であれば、データ消去処理を実行する際の状態では、管理データ領域８１の４つの小領域には、左側から順に、「有効」、「書込中」、「消去前」および「消去済」の全ての管理データが記憶されていることになる（図５（ｄ）参照）。しかし、電源瞬断などの影響によって、例えば、「有効」と「消去前」とかしか記憶されていないなど、管理データの抜けが生じたりする不定状態となることがある。そのような場合も含め、図５（ｅ）に示すように、不定状態と扱われる。
【００３６】
そして、データ消去処理が完了して、記憶ブロック８の記憶状態を初期状態である全て“１”が記憶された状態にする処理が完了すると、このデータが消去された記憶ブロック８のデータ領域８１に消去済管理データを記憶させることで、この記憶ブロック８を消去済みブロックとする。すなわち、実データ領域８２はデータが消去されて全て“１”が記憶された状態であり、管理データ領域８１は４つの小領域とも全て消去され、新たに、管理データ領域８１の４番目（一番右側）の小領域に消去済管理データが記憶される（図５（ａ）参照）。
【００３７】
ここで、瞬断復帰後等の起動時に、有効ブロックを判定する処理について説明する。図６〜図９は、実施形態に係る有効ブロック判定処理の一例を示す説明図である。起動時には、図６に示すように、フラッシュメモリ４が備える記憶ブロック８の先頭から末尾まで、管理データ領域８１に「有効」が存在する記憶ブロック８をピックアップして最新データ候補として記憶する。記憶させる領域としては、フラッシュメモリ４内に適宜設けた記憶領域でもよいし、ＲＡＭ２の作業領域でもよい。
【００３８】
そして、管理データ領域８１に有効管理データが記憶された記憶ブロック８のうち、管理データ領域８１の１番目（一番左側）の小領域に有効管理データ（「有効」）が記憶され、管理データとして「有効」、「書込中」、「消去済」が記憶された記憶ブロック８（図５（ｃ）を参照）である有効ブロックがあると、この記憶ブロック８を、最新データを有する記憶ブロック８と判定することができる。
【００３９】
また、このように「有効」、「書込中」、「消去済」が記憶された記憶ブロック８の他にも、たとえば、管理データ領域８１の３番目の小領域に消去前管理データ（「消去前」）が記憶されて４つの小領域が全て埋まった消去前の状態にある記憶ブロック８である消去前ブロック（図５（ｄ）を参照）も、管理データ領域８１に「有効」が存在する記憶ブロック８である。
【００４０】
通常は、図７に示すように、管理データ領域８１に「有効」、「書込中」、「消去済」が記憶され、ステータスとして有効状態である記憶ブロック８（有効ブロック）を、最新データを有する記憶ブロック８と判定するが、かかる状態の記憶ブロック８が存在しない場合には、消去前管理データを有する記憶ブロック８（消去前ブロック）の実データを更新すべき最新データとみなすこともできる。
【００４１】
例えば、フラッシュメモリ４内の全ての記憶ブロック８を検索しても、ステータスとして有効状態である記憶ブロック８（有効ブロック）が存在せず、最新データ候補としてピックアップするものがない場合、書き込み対象ブロックの変更処理中に電源の瞬断が発生した可能性があるので、このような場合には、図８に示すように、実データの書き込みが正常に行われていない可能性がある変更後の新しい記憶ブロック８ではなく、変更前の古い記憶ブロック８である、管理データ領域８１の４つの小領域が全て埋まった消去前の状態にある記憶ブロック８（消去前ブロック）を最新データと見なすことができる。
【００４２】
さらに、例えば、図９に示すように、最新データ候補（有効ブロック）が既に存在しているにもかかわらず、さらに、ステータスとして有効状態であることを示す管理データ（「有効」、「書込中」、「消去済」）が記憶された記憶ブロック８が検出された場合（有効ブロックが２つ以上あると判定された場合）は、エラーとして扱うことができる。この場合、異常状態を通知するように構成することが望ましい。
【００４３】
このように、本実施形態に係るフラッシュメモリ４は、記憶ブロック８を、管理データ領域８１と実データ領域８２とに区分するとともに、記憶ブロック８に対し、データの書き込み、読み出し、および消去を含む各種管理を行う管理部５を備える構成としている。
【００４４】
また、この管理部５は、記憶ブロック８の管理データ領域８１に、実データの書き込みを開始する前に記憶する書込中管理データ、実データの書き込みが完了した後に記憶する有効管理データ、記憶ブロック８の消去処理を開始する前に記憶する消去前管理データ、および、記憶ブロックの消去処理が完了した後に記憶する消去済管理データを、それぞれ管理データとして記憶させ、装置の起動時等、次回更新や読み出しをする場合、各管理データに基づいて、正常なデータのうちで最新の実データを記憶している記憶ブロックを検索するようにしている。
【００４５】
したがって、本実施形態に係るフラッシュメモリ４では、電源瞬断などが発生しても、電源復帰後に、最新データのある記憶ブロック８や、不良データが存在する記憶ブロック８の判定が可能となり、信頼性を高めることができる。
【００４６】
上述してきた説明では、基本的に、ある一つの記憶ブロック８についての各処理による状態の変化を主眼として説明したが、書き込み対象の変更時には、複数の記憶ブロック８に対する処理が並行して行われる。図１０は、この複数の記憶ブロック８に対して並行して行われる処理の実行に伴う記憶ブロック８の状態の変化を示す説明図であり、旧データが記憶されている第１記憶ブロック８ａと、新たに使用する第２記憶ブロック８ｂとを、書き込み時、特に書き込み対象の変更時にはペアとして処理し、これらの管理データを利用し、本来有り得ない管理データの組み合わせが存在するか否かによって、新データのある記憶ブロック８や、不良データが存在する記憶ブロック８の判定を行うようにしている。
【００４７】
図１０（ａ）〜（ｇ）に示すように、既にデータが記憶されているものを第１記憶ブロック８ａとし、新たなデータを書き込むものを第２記憶ブロック８ｂとする。図１０（ａ）に示すように、書き込み開始直前の状態では、第１記憶ブロック８ａには既に実データが書き込まれているため、管理データ領域８１には、左の小領域意から順に、「有効」、「書込中」、ひとつおいて、「消去済」の各管理データが記憶されている。このとき、これから書き込みされる第２記憶ブロック８ｂには、管理データ領域８１の４番目（一番右側）の小領域に「消去済」（消去済管理データ）が記憶されている。
【００４８】
書き込み開始の時点では、図１０（ｂ）に示すように、第１記憶ブロック８ａに変化はないが、第２記憶ブロック８ｂには、管理データ領域８１の左から２番目の小領域に「書込中」（書込中管理データ）が記憶される。すなわち、左から２番目の小領域に「書込中」、一番右側の小領域に「消去済」が記憶されている。
【００４９】
第２記憶ブロック８ｂへの書き込み中は、図１０（ｃ）に示すように、第１記憶ブロック８ａに変化はないが、第２記憶ブロック８ｂは、書き込みが行われている実データ領域８２は不定状態となっている。このとき、管理データ領域８１には変化はなく、左から２番目の小領域に「書込中」、一番右側の小領域に「消去済」が記憶されたままである。
【００５０】
図１０（ｄ）に示すように、新しいデータが新しい第２記憶ブロック８ｂに書き込まれると、第１記憶ブロック８ａに記憶されていたデータは無効化される。すなわち、図示するように、第１記憶ブロック８ａの管理データ領域８１において、空いていた左から３番目の小領域に「消去前」の管理データが記憶される。すなわち、４つの小領域全てに管理データが記憶される。
【００５１】
次いで、新しいデータが記憶された第２記憶ブロック８ｂの有効化が行われる。すなわち、図１０（ｅ）に示すように、管理データ領域８１における、１番目（一番左側）の小領域に「有効」が記憶される。このときの第２記憶ブロック８ｂは、図１０（ａ）〜（ｃ）に示す第１記憶ブロック８ａのように、管理データ領域８１には、左の小領域から順に、「有効」、「書込中」、ひとつおいて、「消去済」の各管理データが記憶されることになる。
【００５２】
この後、第１記憶ブロック８ａに記憶されていた旧データは消去される。すなわち、図１０（ｆ）に示すように、第１記憶ブロック８ａは、管理データ領域８１も実データ領域８２も不定状態とされる。他方、第２記憶ブロック８ｂに変化はない。
【００５３】
そして、図１０（ｇ）に示すように、第１記憶ブロック８ａの記憶状態を初期状態である全て“１”が記憶された状態（“０ｘＦＦ”）にするとともに、実データが消去された第１記憶ブロック８ａにおける管理データ領域８１の４番目（一番右側）の小領域に「消去済」を記憶させる。このときも、第２記憶ブロック８ｂに変化はない。
【００５４】
なお、図１０（ｆ）（ｇ）の処理は、図１０（ｂ）から（ｅ）の処理の後に続けて行ってもよいし、図１０（ｂ）から（ｅ）とは別のタイミングで行うようにしてもよい。
【００５５】
このように、書き込み時、特に書き込み対象の変更時には、第１記憶ブロック８ａと第２記憶ブロック８ｂをペアとして処理を行い、これらの記憶ブロック８の管理データ領域８１の記憶状態の組み合わせによって、どちらに制御的に使用可能なデータが記憶されているのかを判定できるようにしている。
【００５６】
また、書き込み処理や書き込み対象の変更処理中に電源瞬断が発生した場合、いずれの記憶ブロック８を読み出すか、また、いずれの記憶ブロック８のデータを消去する必要があるかについて、上述してきたような第１記憶ブロック８ａと第２記憶ブロック８ｂをペアとして処理した場合を例にとって説明する。
【００５７】
図１１は、図１０で説明した処理と瞬断タイミングとの関連を示す説明図である。なお、図中、ブロック状態を示す欄内における（１）は第１記憶ブロック８ａを、（２）は第２記憶ブロック８ｂを示す。
【００５８】
書き込み処理の要求を受け付けた直後（書き込み対象の変更要求を受けた場合や、書き込み要求を受けて書き込みを行おうとした際に、書き込み対象の記憶ブロックに空き領域がなかった場合を含む）であって、処理状態が書込前である場合、ブロック状態としては、第１記憶ブロック８ａには現時点での最新データが有効データとして記憶されており、管理データ領域８１のデータからは、第１記憶ブロック８ａは有効ブロック、第２記憶ブロック８ｂは消去済みブロックと判断される（図１０（ａ）を参照）。このときに電源瞬断が発生した場合、電源復帰後に読み出す対象となる記憶ブロック８は有効ブロックである第１記憶ブロック８ａであり、この状態では、消去対象となる記憶ブロック８は存在しない。
【００５９】
次に、第２記憶ブロック８ｂに対する書き込みが開始されて処理状態が書込中となった場合、ブロック状態としては、管理データ領域８１のデータからは、第１記憶ブロック８ａは有効ブロック、第２記憶ブロック８ｂは書込中ブロックと判断される（図１０（ｂ）を参照）。このときに電源瞬断が発生した場合、読み出す対象となる記憶ブロック８は有効ブロックである第１記憶ブロック８ａであり、消去対象となる記憶ブロック８は、書込み処理の途中で瞬断が発生した第２記憶ブロック８ｂとなる。
【００６０】
次に、第２記憶ブロック８ｂに対する実データの書き込み中となった場合、ブロック状態としては、管理データ領域８１のデータからは、第１記憶ブロック８ａは有効ブロック、第２記憶ブロック８ｂは書込中ブロックと判断される（図１０（ｃ）を参照）。このときに電源瞬断が発生した場合、読み出す対象となる記憶ブロック８は有効ブロックである第１記憶ブロック８ａであり、消去対象となる記憶ブロック８は、書込み処理の途中で瞬断が発生した第２記憶ブロック８ｂとなる。
【００６１】
次に、第２記憶ブロック８ｂに対する実データの書き込みが完了して、第１記憶ブロック８ａに対する旧有効データの無効化（“消去前”の書き込み）を行った場合、ブロック状態としては、管理データ領域８１のデータからは、第１記憶ブロック８ａは消去前ブロック、第２記憶ブロック８ｂは書込中ブロックと判断される（図１０（ｃ）を参照）。このときに電源瞬断が発生した場合、有効ブロックが存在しないので、読み出す対象となる記憶ブロック８は消去前ブロックである第１記憶ブロック８ａであり、消去対象となる記憶ブロック８は、書込み処理の途中で瞬断が発生した第２記憶ブロック８ｂとなる。
【００６２】
次に、第２記憶ブロック８ｂに対する書き込みデータの有効化（“有効”の書き込み）を行った場合、ブロック状態としては、管理データ領域８１のデータからは、第１記憶ブロック８ａは消去前ブロック、第２記憶ブロック８ｂは有効ブロックと判断される（図１０（ｅ）を参照）。このときに電源瞬断が発生した場合、読み出す対象となる記憶ブロック８は有効ブロックである第２記憶ブロック８ｂであり、消去対象となる記憶ブロック８は、第２記憶ブロック８ｂに最新データが記憶されたため用済みとなった旧データを記憶している第１記憶ブロック８ａとなる。
【００６３】
次に、処理状態が、第１記憶ブロック８ａの旧データを消去している消去中の場合、ブロック状態としては、管理データ領域８１のデータからは、第１記憶ブロック８ａは不定なブロック、第２記憶ブロック８ｂは有効ブロックと判断される（図１０（ｆ）を参照）。このときに電源瞬断が発生した場合、読み出す対象となる記憶ブロック８は有効ブロックである第２記憶ブロック８ｂであり、消去対象となる記憶ブロック８は、消去処理中に瞬断が発生した第１記憶ブロック８ａとなる。
【００６４】
そして、第１記憶ブロック８ａの旧データの消去処理が完了した場合、管理データ領域８１のデータからは、第１記憶ブロック８ａは消去済みブロック、第２記憶ブロック８ｂは有効ブロックと判断される（図１０（ｇ）を参照）。このときに電源瞬断が発生した場合、読み出す対象となる記憶ブロック８は有効ブロックである第２記憶ブロック８ｂであるが、消去対象となる記憶ブロック８は、この状態では存在しない。
【００６５】
なお、書き込み対象の記憶ブロック８の切り替えの行い方として、２個の記憶ブロック８間で交互に切り替えていくこともできるし、３個以上の記憶ブロック８の間で、所定のルールに従って書き込み対象とする記憶ブロック８を変更していくようにすることもできる。また、書き込み対象を切り替えていく複数個の記憶ブロック８のグループを複数グループ設けるなどの方法も考えられる。その場合、書き込む順番などは適宜設定することができる。
【００６６】
ここで、図１２および図１３を用いて、フラッシュメモリ４に対する書き込み処理と読み出し処理について説明する。図１２および図１３は、書き込み処理と読み出し処理の流れの一例を示す説明図である。ここでは、旧データが記憶されている第１記憶ブロック８ａを有効ブロック、新たに使用する第２記憶ブロック８ｂを書込みブロックとしている。
【００６７】
なお、以下の説明では、このフラッシュメモリ４に対する書き込み処理と読み出し処理を、ＣＰＵ１が主体となって制御するように記載しているが、フラッシュメモリ４内の管理部５が主体となって制御するようにしてもよい。
【００６８】
まず、図１２に基づいて、書き込み処理について説明する。フラッシュメモリ制御ソフトウェア３１に基づき、ＣＰＵ１はアプリケーションソフトウェア等の処理によって書き込み指令が発生すると、図１２に示すように、まず、書込み領域の確定を行う（ステップＳ１０）。ここでは、記憶ブロック８が設けられた領域である書込み領域が、フラッシュメモリ４の記憶領域６における、どの領域に設けられているかを判断している。なお、書込み領域が設けられる領域は、あらかじめ定められた設定値としている。
【００６９】
次いで、有効ブロック検索処理を行う（ステップ２０）。なお、この有効ブロック検索処理は、後述する読み出し時の処理の内容と同じであるので、読み出し処理の流れの一例である図１３の説明において詳述する。
【００７０】
次いで、ＣＰＵ１は、ステップＳ２０で行った有効ブロック検索処理において、有効ブロック判定が正常であったか（ＯＫか）否かを判定する（ステップＳ３０）。有効ブロック判定が異常であった場合（ステップＳ３０：Ｎｏ）、有効ブロックは無しとして、予め定めた設定に従い、書込みブロックとしての記憶ブロック８を決める（ステップＳ４０）。ここでは、例えば、複数の記憶ブロック８のうち、一番若いアドレスの記憶ブロック８を選択するようにしてもよいし、最も書き込み回数が少ない記憶ブロック８を選択するようにしてもよい。
【００７１】
一方、有効ブロック判定が正常であった場合（ステップＳ３０：Ｙｅｓ）、有効ブロックの次のブロックを書込みブロック対象とする（ステップＳ５０）。すなわち、書込みブロック対象としては、複数の記憶ブロック８のうち、ｎ番目が有効ブロックであれば、ｎ＋１番目の記憶ブロック８が書込みブロックとなる。
【００７２】
次いで、書込みブロックは消去済みか否かを判定する（ステップＳ６０）。書込みブロックが消去済みではない場合（ステップＳ６０：Ｎｏ）、ＣＰＵ１は、書込みブロックを消去する。そして、書込みブロックの管理データ領域８１に消去済管理データを記憶させる（ステップＳ８０）。
【００７３】
一方、書込みブロックが消去済みの場合（ステップＳ６０：Ｙｅｓ）、ＣＰＵ１は、書込みブロックの管理データ領域８１に書込中管理データを記憶させ（ステップＳ９０）、次いで、書込みブロックに最新データを書き込む（ステップＳ１００）。
【００７４】
次に、ＣＰＵ１は、有効ブロックの管理データ領域８１に消去前管理データを記憶させる（ステップＳ１１０）一方、書込みブロックの管理データ領域８１には有効管理データを記憶させる（ステップＳ１２０）。
【００７５】
その後、管理部は、有効ブロックの実データを消去するとともに（ステップＳ１３０）、消去した有効ブロックの管理データ領域８１に消去済管理データを記憶させる（ステップＳ１４０）。
【００７６】
最後に、ＣＰＵ１は、書き込みが完了したことをアプリケーションソフトウェア等の書き込み指令の発生元へ通知して（ステップＳ１５０）、この処理を終える。
【００７７】
なお、上述した例では、書き込み処理が発生する毎に異なる記憶ブロック８に記憶していく構成をとっているが、１度の書き込み処理で記憶する必要があるデータの容量が、記憶ブロック８の容量に対して少ないような場合には、書き込み対象としている記憶ブロック８の容量に空きがなくなるまで、同じ記憶ブロック８に追加記録を行い、容量に空きがなくなった場合に、書き込み対象のブロックを次のブロックに変更するように構成してもよい。
【００７８】
次に、図１３に基づいて、読み出し処理について説明する。フラッシュメモリ制御ソフトウェア３１に基づき、ＣＰＵ１はアプリケーションソフトウェア等の処理によって書き込み指令が発生すると、図１３に示すように、まず、書込み領域の確定を行う（ステップＳ２００）。なお、この書込み領域確定の処理は、読み出し時の処理におけるものであるので、説明は省略する。
【００７９】
書込み領域確定（ステップＳ２００）を行った後、ＣＰＵ１は、書込領域内に有効ブロックがあるか否かを判定する（ステップＳ２１０）。有効ブロックがある場合（ステップＳ２１０：Ｙｅｓ）、その有効ブロックが２個以上あるか否かを判定する（ステップＳ２２０）。
【００８０】
一方、書込領域内に有効ブロックがない場合（ステップＳ２１０：Ｎｏ）、ＣＰＵ１は、書込領域内に書込中ブロックと消去前ブロックがあるか否かを判定する（ステップＳ２３０）。
【００８１】
ステップＳ２２０に戻り、有効ブロックが２個以上ある場合（ステップＳ２２０：Ｙｅｓ）、最新のデータを記憶した有効ブロックを判定することができない状態であるので、実質的な有効ブロックは「無し」として、異常状態であると判定する（ステップＳ２４０）。一方、有効ブロックが２個以上は無い場合（ステップＳ２２０：Ｎｏ）、正常状態と判定し、有効ブロックからデータを読み出す（ステップＳ２５０）。
【００８２】
また、ステップＳ２３０で、書込中ブロックと消去前ブロックがある場合（ステップＳ２３０：Ｙｅｓ）、ＣＰＵ１は、有効ブロックがなくとも、正常状態と判定し、消去前ブロックである記憶ブロック８からデータを読み出す（ステップＳ２６０）。一方、ステップＳ２３０で、書込中ブロックと消去前ブロックが無い場合（ステップＳ２３０：Ｎｏ）、ＣＰＵ１は、有効ブロックは「無し」として、異常状態であると判定する（ステップＳ２７０）。
【００８３】
そして、ＣＰＵ１は、ステップＳ２４０、ステップ２５０、ステップＳ２６０およびステップＳ２７０の各状態に基づき、正常または異常であることをアプリケーションソフトウェア等の書き込み指令の発生元に通知して、この処理を終える。
【００８４】
なお、図１３における点線で囲まれた処理内容（ステップＳ２１０からステップＳ２７０までの処理内容）が、図１２におけるステップＳ２０の有効ブロック検索処理に該当する。
【００８５】
以上、説明してきたように、複数の記憶ブロック８を有し、各記憶ブロック８のデータを更新する場合、更新対象となる既存データを記憶している記憶ブロック８内に当該既存データを残したまま、他の記憶ブロックに前記既存データに相当するデータを書き込み、書き込み終了後、前記既存データを消去するようにした本実施形態にかかるフラッシュメモリ４は、記憶ブロック８を、管理データ領域８１と実データ領域８２とに区分して構成されている。
【００８６】
そして、ＣＰＵ１等のフラッシュメモリ４に対する書き込みや読み出し処理を行う制御部は、実データを更新する場合、記憶ブロック８の管理データ領域８１に、実データの書込み完了を示す有効管理データ、実データの書き込み中（書き込み開始）を示す書込中管理データ、記憶ブロックの消去開始（消去中）を示し、また記憶されているデータが消去してもよい状態になった（無効である）ことを示す消去前管理データ、および、記憶ブロックの消去完了を示す消去済管理データをそれぞれ管理データとして、区画された４つの小領域にそれぞれ対応付けて記憶させる。そして、管理部５は、次回書き込み時や読み出し時に、各管理データに基づいて、最新の実データを記憶している記憶ブロック８を検索するようにしている。
【００８７】
したがって、データ更新中のいかなるタイミングで電源瞬断などが発生しても、電源復帰後に、最新データのある記憶ブロック８や、瞬断によって不良データが生じてもかかる不良データの存在する記憶ブロック８の判定を簡便に行うことができる。
【００８８】
また、実データの書き込みを行った際に、最新のデータを書き込んだ記憶ブロック８における有効管理データを更新する構成にしているので、上記従来技術で記載したような、複数の記憶ブロック８に対して番号順で順次書き込んでいく構成ではなく、複数の記憶ブロック８に対して不規則な順番で書き込んでいく構成をとった場合であっても、データ更新中の電源瞬断発生後に、どの記憶ブロックのデータが使用可能な最新データなのかを正確に判別することが可能になる。
【００８９】
なお、複数の記憶ブロック８に対して不規則な順番で書き込んでいく構成は、各記憶ブロック８の書き込み回数を積極的に管理制御する（書き込み回数を平均化したり偏らせたりする）場合や、複数のタスクからの書き込み要求が発生するようなシステム（複数種類の最新データが存在し、また、書き込み要求の発生タイミングもタスクによって異なるシステム）に適用する場合等に用いられる。
【００９０】
また、本実施形態では、データ記憶装置として、車載用制御装置の一例である電子制御ユニット（ＥＣＵ）に設けられたマイコン１０としたが、かかる実施形態に限定されるものではない。たとえば、書込中の記憶ブロックに未書込領域がなくなると、別の未書込の記憶ブロックにデータを書き込んだ後、元の記憶ブロックを一括消去するように構成された不揮発性メモリであればよい。そして、これを搭載する制御装置についてもいかなるものであっても構わない。
【００９１】
また、本実施形態では、管理データ領域８１を実データ領域８２と同じ記憶ブロック８内にそれぞれ設ける構成としているが、かかる実施形態に限定されるものではない。たとえば、管理データ領域８１を実データ領域８２が設けられた記憶ブロック８とは異なる記憶ブロック８に設ける構成にしてもよいし、複数の実データ領域８２についてのデータを記憶する管理データ領域８１を１つの記憶ブロック８にまとめて設けるように構成してもよい。
【００９２】
また、さらなる効果やその他の変形例は、当業者によって容易に導き出すことができる。このため、本発明のより広範な態様は、以上のように表しかつ記述した特定の詳細および代表的な実施形態に限定されるものではない。したがって、添付の特許請求の範囲およびその均等物によって定義される総括的な発明の概念の精神または範囲から逸脱することなく、様々な変更が可能である。
【符号の説明】
【００９３】
１    ＣＰＵ
４    フラッシュメモリ
５    管理部
６    記憶領域
８    記憶ブロック
１０  マイコン（データ記憶装置）
８１    管理データ領域
８２    実データ領域
【図１】
2014182438.tif 000003
【図２】
2014182438.tif 000004
【図３】
2014182438.tif 000005
【図４】
2014182438.tif 000006
【図５】
2014182438.tif 000007
【図６】
2014182438.tif 000008
【図７】
2014182438.tif 000009
【図８】
2014182438.tif 000010
【図９】
2014182438.tif 000011
【図１０】
2014182438.tif 000012
【図１１】
2014182438.tif 000013
【図１２】
2014182438.tif 000014
【図１３】
2014182438.tif 000015