(57)【要約】【課題】電源の瞬断が発生した場合であっても、データの消失又は破損等が生じることがないデータ記憶装置及びデータ記憶方法を提供する。【解決手段】データがそれぞれ一括消去される複数の記憶ブロックに対してメモリ管理部２１が順次的にデータを書き込み、データの書き込み先を変更する際には有効なデータを次のブロックへコピーするブロック更新処理を行う。最初に書き込みを行う第１記憶ブロック２２１には、記憶ブロック毎に更新開始ビット、更新終了ビット及び消去終了ビットの３つの情報を管理情報として記憶しておく。メモリ管理部２１はブロック更新処理の開始前に更新開始ビットをデータ’０’に設定し、ブロック更新処理の終了後に更新終了ビットをデータ’０’に設定する。またメモリ管理部２１は、更新終了ビットがデータ’０’に設定された記憶ブロックの消去処理を行い、消去処理の終了後に消去ビットをデータ’０’に設定する。【選択図】図１
2011175361.tif 000002
【特許請求の範囲】
【請求項１】
データが一括して消去される記憶ブロックを複数有する不揮発性メモリと、複数の記憶ブロックに対して順次的にデータを書き込む処理を行う書込手段と、一の記憶ブロックがデータで満たされた場合に、該一の記憶ブロックから一又は複数のデータを読み出して次の記憶ブロックへ書き込むブロック更新処理を行う更新手段と、記憶ブロックのデータを消去する処理を行う消去手段とを備え、該更新手段によるブロック更新処理の終了後に前記書込手段が前記次の記憶ブロックへの新たなデータの書き込みを開始するようにしてあるデータ記憶装置において、
所定の記憶ブロックに、各記憶ブロックについて、前記更新手段によるブロック更新処理の開始前に設定される更新開始情報、前記更新手段によるブロック更新処理の終了後に設定される更新終了情報、及び、記憶ブロックの消去終了後に設定される消去終了情報を記憶し、
前記更新手段は、装置の電源投入後に、前記更新開始情報が設定され、且つ、前記更新終了情報が設定されていない記憶ブロックの再更新処理を行うようにしてあり、
前記消去手段は、前記更新終了情報が設定され、且つ、前記消去終了情報が設定されていない記憶ブロックのデータ消去処理を行うようにしてあること
を特徴とするデータ記憶装置。
【請求項２】
前記書込手段は、前記所定の記憶ブロックに記憶された各記憶ブロックの更新終了情報に応じて、データの書き込みを行う記憶ブロックを決定するようにしてあること
を特徴とする請求項１に記載のデータ記憶装置。
【請求項３】
前記所定の記憶ブロックに記憶された各記憶ブロックの更新終了情報に応じてデータの読み出しを行う記憶ブロックを決定し、該記憶ブロックからデータの読み出しを行う読出手段を更に備えること
を特徴とする請求項１又は請求項２に記載のデータ記憶装置。
【請求項４】
最後の記憶ブロックがデータで満たされた場合に、前記所定の記憶ブロックに記憶された全ての前記更新開始情報、更新終了情報及び消去終了情報を初期化する情報初期化手段を更に備えること
を特徴とする請求項１乃至請求項３のいずれか１つに記載のデータ記憶装置。
【請求項５】
前記更新開始情報、更新終了情報及び消去終了情報は、それぞれ１ビットの情報であり、設定された状態が０であり、初期化された状態が１であること
を特徴とする請求項１乃至請求項４のいずれか１つに記載のデータ記憶装置。
【請求項６】
データが一括して消去される記憶ブロックを複数有する不揮発性メモリに対して、複数の記憶ブロックに対して順次的にデータを書き込み、一の記憶ブロックがデータで満たされた場合に、該一の記憶ブロックから一又は複数のデータを読み出して次の記憶ブロックへ書き込むブロック更新処理を行い、該ブロック更新処理の終了後に前記次の記憶ブロックへの新たなデータの書き込みを開始するデータ記憶方法において、
所定の記憶ブロックに、各記憶ブロックについて、前記ブロック更新処理の開始前に設定される更新開始情報、前記ブロック更新処理の終了後に設定される更新終了情報、及び、記憶ブロックの消去終了後に設定される消去終了情報を記憶し、
装置の電源投入後に、前記更新開始情報が設定され、且つ、前記更新終了情報が設定されていない記憶ブロックの再更新処理を行い、
前記更新終了情報が設定され、且つ、前記消去終了情報が設定されていない記憶ブロックのデータ消去処理を行うこと
を特徴とするデータ記憶方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データが一括消去されるフラッシュメモリなどの不揮発性メモリにデータを記憶するデータ記憶装置及びデータ記憶方法に関する。
【背景技術】
【０００２】
従来、データの記憶にはＥＥＰＲＯＭ（Electrically Erasable Programmable Read Only Memory）及びフラッシュメモリ等の不揮発性メモリが広く用いられている。特に、近年のフラッシュメモリは大容量化及び低価格化が著しく、記憶するデータの量が多い装置においてはフラッシュメモリが用いられる場合が多い。しかしフラッシュメモリには、ＥＥＰＲＯＭと比較してデータの書換可能回数が少ないこと、及び、データの消去をブロック単位の一括消去で行う必要があること等の制限がある。
【０００３】
このためフラッシュメモリを備えたデータ記憶装置では、特定個所にデータの書き換えが集中しないように、複数のブロックを順に用いてデータの書き込みを行うと共に、ブロックの消去を行う際には、このブロック内の必要なデータを他のブロックへコピーするなどの処理を行っている。
【０００４】
特許文献１においては、データ消去の待ち時間及び消去回数の計算時間の必要がなく、フラッシュメモリの長寿命化を図ることができる外部記憶装置のデータ記憶制御方法が提案されている。外部記憶装置は複数のフラッシュメモリ（例えば第１〜第５フラッシュメモリ）を備え、第１〜第３フラッシュメモリをデータ書き換え用とし、第４及び第５フラッシュメモリをガベージコレクション用とする。第１フラッシュメモリから第３フラッシュメモリへと順にデータを格納し、第３フラッシュメモリの空き領域がなくなった場合に、第１フラッシュメモリのガベージコレクションを第４フラッシュメモリに行い、同時にホストからのライトアクセスがきたらこれを優先して第４フラッシュメモリに行う。第１フラッシュメモリのガベージコレクションが終了した後、第２フラッシュメモリのガベージコレクションを第５フラッシュメモリに行い、これと同時に第１フラッシュメモリのデータ消去を行う。その後、第４フラッシュメモリをデータ書き換え用とし、第１フラッシュメモリをガベージコレクション用とする。同様に、第２フラッシュメモリのガベージコレクションを終了してデータ消去を行い、第５フラッシュメモリをデータ書き換え用とし、第２フラッシュメモリをガベージコレクション用とする。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１２６４８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
近年、車輌に搭載される電子機器（車載機器）は高機能化し、車載機器内で扱われるデータ量が増大しており、これら大量のデータを記憶するために電子機器にはフラッシュメモリが搭載される。しかしながら、車載機器への電力供給は車輌のバッテリ又はオルタネータ等から行われるが、車載機器への電力供給環境は、家庭内のＰＣ（Personal Computer）などへの電力供給環境と比較して不安定であり、瞬間的な電力供給の遮断（電源の瞬断）などが発生しやすいという問題がある。機器内の演算処理などと比較して、フラッシュメモリのデータ書き込み及び消去には比較的長い時間を必要とするため、データの書き込み又は消去中に電源の瞬断が発生し、データの書き込み又は消去が異常終了する虞がある。
【０００７】
特許文献１に記載のデータ記憶制御方法では、例えば第１フラッシュメモリのガベージコレクションを第４フラッシュメモリに行う際に電源の瞬断が発生した場合には、ガベージコレクションが中断されて、第４フラッシュメモリへデータが書き込まれない（データの消失）、又は、誤ったデータが書き込まれる（データの破損）等の問題が発生する虞がある。また例えば、第１フラッシュメモリの消去中に電源の瞬断が発生した場合には、第１フラッシュメモリのデータが消去されず、この状態で第１フラッシュメモリへの書き込みが行われてデータが破損するなどの虞がある。
【０００８】
本発明は、斯かる事情に鑑みてなされたものであって、その目的とするところは、電源の瞬断が発生した場合であっても、データの消失又は破損等が生じることがなく、電力供給環境が比較的に不安定な車輌などであっても利用することができるデータ記憶装置及びデータ記憶方法を提供することにある。
【課題を解決するための手段】
【０００９】
本発明に係るデータ記憶装置は、データが一括して消去される記憶ブロックを複数有する不揮発性メモリと、複数の記憶ブロックに対して順次的にデータを書き込む処理を行う書込手段と、一の記憶ブロックがデータで満たされた場合に、該一の記憶ブロックから一又は複数のデータを読み出して次の記憶ブロックへ書き込むブロック更新処理を行う更新手段と、記憶ブロックのデータを消去する処理を行う消去手段とを備え、該更新手段によるブロック更新処理の終了後に前記書込手段が前記次の記憶ブロックへの新たなデータの書き込みを開始するようにしてあるデータ記憶装置において、所定の記憶ブロックに、各記憶ブロックについて、前記更新手段によるブロック更新処理の開始前に設定される更新開始情報、前記更新手段によるブロック更新処理の終了後に設定される更新終了情報、及び、記憶ブロックの消去終了後に設定される消去終了情報を記憶し、前記更新手段は、装置の電源投入後に、前記更新開始情報が設定され、且つ、前記更新終了情報が設定されていない記憶ブロックの再更新処理を行うようにしてあり、前記消去手段は、前記更新終了情報が設定され、且つ、前記消去終了情報が設定されていない記憶ブロックのデータ消去処理を行うようにしてあることを特徴とする。
【００１０】
また、本発明に係るデータ記憶装置は、前記書込手段が、前記所定の記憶ブロックに記憶された各記憶ブロックの更新終了情報に応じて、データの書き込みを行う記憶ブロックを決定するようにしてあることを特徴とする。
【００１１】
また、本発明に係るデータ記憶装置は、前記所定の記憶ブロックに記憶された各記憶ブロックの更新終了情報に応じてデータの読み出しを行う記憶ブロックを決定し、該記憶ブロックからデータの読み出しを行う読出手段を更に備えることを特徴とする。
【００１２】
また、本発明に係るデータ記憶装置は、最後の記憶ブロックがデータで満たされた場合に、前記所定の記憶ブロックに記憶された全ての前記更新開始情報、更新終了情報及び消去終了情報を初期化する情報初期化手段を更に備えることを特徴とする。
【００１３】
また、本発明に係るデータ記憶装置は、前記更新開始情報、更新終了情報及び消去終了情報が、それぞれ１ビットの情報であり、設定された状態が０であり、初期化された状態が１であることを特徴とする。
【００１４】
また、本発明に係るデータ記憶方法は、データが一括して消去される記憶ブロックを複数有する不揮発性メモリに対して、複数の記憶ブロックに対して順次的にデータを書き込み、一の記憶ブロックがデータで満たされた場合に、該一の記憶ブロックから一又は複数のデータを読み出して次の記憶ブロックへ書き込むブロック更新処理を行い、該ブロック更新処理の終了後に前記次の記憶ブロックへの新たなデータの書き込みを開始するデータ記憶方法において、所定の記憶ブロックに、各記憶ブロックについて、前記ブロック更新処理の開始前に設定される更新開始情報、前記ブロック更新処理の終了後に設定される更新終了情報、及び、記憶ブロックの消去終了後に設定される消去終了情報を記憶し、装置の電源投入後に、前記更新開始情報が設定され、且つ、前記更新終了情報が設定されていない記憶ブロックの再更新処理を行い、前記更新終了情報が設定され、且つ、前記消去終了情報が設定されていない記憶ブロックのデータ消去処理を行うことを特徴とする。
【００１５】
本発明においては、データが一括消去される記憶ブロックを複数有する不揮発性メモリに対して、複数の記憶ブロックにデータを順次的に書き込む。例えば不揮発性メモリが第１〜第３の記憶ブロックを有している場合、第１記憶ブロック→第２記憶ブロック→第３記憶ブロックの順でデータの書き込みを行い、第３記憶ブロックが一杯になった場合には第１記憶ブロックへデータを書き込む、という処理を繰り返して行う。データの書き込み先を一の記憶ブロックから次の記憶ブロックへ変更する際には、一の記憶ブロックに記憶された一又は複数のデータ（有効なデータ又は必要なデータ）を読み出して次のブロックへ書き込む処理（ブロック更新処理）を行った後で、次の記憶ブロックへのデータの書き込みを開始する。
不揮発性メモリの予め定められた一の記憶ブロック（データの書き込みを最初に行う記憶ブロックとすることが好ましい）には、データの書き込み及び消去に係る上記の処理を行うための管理用情報を記憶する。この管理用情報には、各記憶ブロックについてそれぞれ下記の３つの情報が含まれている。
１）更新開始情報：ブロック更新処理を行う前に設定される。例えば第１記憶ブロックの必要なデータを第２記憶ブロックへ書き込む場合、データの書き込み開始前に第１記憶ブロックに係る更新開始情報を設定する。
２）更新終了情報：ブロック更新処理の終了後に設定される。例えば第１記憶ブロックの必要なデータを第２記憶ブロックへ書き込む場合、第１記憶ブロックの必要なデータを全て第２記憶ブロックへ書き込んだ後に、第１記憶ブロックに係る更新終了情報を設定する。
３）消去終了情報：記憶ブロックの消去処理の終了後に設定される。例えば第１記憶ブロックのデータを消去する場合、第１記憶ブロックの消去処理が完了した後に、第１記憶ブロックに係る消去終了情報を設定する。
【００１６】
これらの情報により、更新開始情報が設定されているが更新終了情報が設定されていない記憶ブロックが存在すれば、この記憶ブロックへのブロック更新処理中に電源の瞬断が発生したと判断することができる。そこで、電源投入後のパワーオンリセットなどに応じて、各記憶ブロックの更新開始情報及び更新終了情報を調べ、更新開始情報が設定され、且つ、更新終了情報が設定されていない記憶ブロックが存在すれば、この記憶ブロックに係るブロック更新処理を再度行う（再更新処理）。
また更新終了情報が設定された記憶ブロックについては、ブロック更新処理が正常に終了しているため、データを消去することが可能であると判断できる。そこで、更新終了情報が設定され、且つ、消去終了情報が設定されていない記憶ブロックをデータ消去の対象として消去処理を行う。消去処理中に電源の瞬断が発生した場合には消去終了情報が設定されないため、この記憶ブロックはデータ消去の対象として消去処理が行われる。
このように、更新開始情報、更新終了情報及び消去終了情報に基づいてブロック更新処理及びデータ消去処理を行うことによって、処理中に電源の瞬断が生じた場合であっても、中断された処理を再度行うことが可能となる。
【００１７】
また、本発明においては、データの書き込みを行う場合に、各記憶ブロックに係る更新終了情報に応じて書き込み対象の記憶ブロックを決定する。例えば第１記憶ブロックから第Ｎ記憶ブロックへ順にデータの書き込みを行う構成の場合、更新終了情報は第１記憶ブロックのものから順に設定される。このため、第１記憶ブロックから第Ｎ記憶ブロックへ順に更新終了情報が設定されているか否かを調べることにより、更新終了情報が設定されていない記憶ブロックを最初に見出した場合、この記憶ブロックが書き込み対象の記憶ブロックであると判断できる。
【００１８】
また、本発明においては、データの書き込みを行う場合と同様にして、各記憶ブロックに係る更新終了情報に応じて読み込み対象の記憶ブロックを決定し、データの読み込みを行うことができる。
【００１９】
また、本発明においては、複数の記憶ブロックに対して順にデータを書き込んでいき、最後の記憶ブロックがデータで満たされた場合、全ての更新開始情報、更新終了情報及び消去終了情報を初期化する。具体的には、これらの情報が記憶された所定の記憶ブロックのデータを一括して消去する処理を行えばよい（逆に、所定の記憶ブロックは最後の記憶ブロックが満たされるまで消去処理を行ってはいけない）。これにより、最後の記憶ブロックから最初の記憶ブロックへブロック更新処理を行うことができ、データの書き込みを繰り返して行うことができる。
【００２０】
また、本発明においては、更新開始情報、更新終了情報及び消去終了情報は、それぞれ１ビットの情報とする。これにより、各記憶ブロックにつき３ビットずつ（Ｎ個の記憶ブロックであれば３×Ｎビット）の少ない情報で上述の処理を行うことができる。また各情報を設定するとは対応するビットの値を０にすることであり、情報の初期化とは各ビットの値を１とすることである。またフラッシュメモリは消去処理によりデータが１となり、書き込みによりデータが０となるため、各情報の設定は対応するビットの値を０にする構成とし、情報の初期化は各ビットの値を１とする構成とすることが好適である。なお、フラッシュメモリは８ビット又は１６ビット等の単位でデータの書き込みが行われるが、データ１からデータ０へ変化させる場合には上書き処理を行うことが可能であるため、任意のビットを設定することができる。
【発明の効果】
【００２１】
本発明による場合は、所定の記憶ブロックに記憶された更新開始情報、更新終了情報及び消去終了情報に基づいて、不揮発性メモリの更新処理、書込処理及び消去処理等を行う構成とすることにより、これらの処理中に電源の瞬断が発生して処理が中断された場合であっても、中断された処理を再度行うことができるため、データの消失又は破損等が生じることがない。よって、電力供給環境が比較的に不安定な車輌などであっても、不揮発性メモリを利用したデータの記憶を安全に行うことができる。
【図面の簡単な説明】
【００２２】
【図１】本実施の形態に係るＣＰＵの構成を示すブロック図である。
【図２】管理用情報の一例を示す模式図である。
【図３】フラッシュメモリにて行われるデータ書込処理の手順を示すフローチャートである。
【図４】フラッシュメモリにて行われるデータ書込処理の手順を示すフローチャートである。
【図５】フラッシュメモリにて行われるデータ読出処理の手順を示すフローチャートである。
【図６】フラッシュメモリにて行われるデータ消去処理の手順を示すフローチャートである。
【図７】ＣＰＵの電源投入時にフラッシュメモリにて行われる処理の手順を示すフローチャートである。
【発明を実施するための形態】
【００２３】
以下、本発明をその実施の形態を示す図面に基づき具体的に説明する。なお本実施の形態においては、ＣＰＵ（Central Processing Unit）に本発明に係るデータ記憶装置としてフラッシュメモリを搭載した構成を一例として説明を行う。図１は、本実施の形態に係るＣＰＵの構成を示すブロック図である。図示のＣＰＵ１は、演算処理部１１、ＲＡＭ（Random Access Memory）１２及びフラッシュメモリ２０を備えて構成されており、フラッシュメモリ２０は本発明に係るデータ処理装置に相当する。
【００２４】
ＣＰＵ１の演算処理部１１は、フラッシュメモリ２０に予め記憶された種々のプログラムを読み出して実行することにより、演算処理を行うものである。ＲＡＭ１２は、ＳＲＡＭ（Static RAM）又はＤＲＡＭ（Dynamic RAM）等の揮発性のメモリ素子であり、演算処理部１１の処理過程で生じた種々のデータを一時的に記憶する。
【００２５】
フラッシュメモリ２０は、メモリ管理部２１及び記憶部２２を備えている。メモリ管理部２１は、演算処理部１１から与えられるデータの書込要求、読出要求及び消去要求等に応じて、フラッシュメモリ２０内に設けられたチャージポンプ及びセンスアンプ等の種々のアナログ回路を動作させることにより、記憶部２２に対するデータの書き込み、読み出し及び消去等を行う。
【００２６】
記憶部２２は、数Ｍバイト〜数百Ｍバイト程度の不揮発性の記憶領域を有している。フラッシュメモリ２０の記憶部２２は、データの書き込みをアドレス指定により８ビット又は１６ビット等の単位で行うことができるが、データの消去は数Ｋバイト〜数十Ｋバイト程度のブロック単位で行う必要がある。そこで本実施の形態のＣＰＵ１においては、記憶部２２０の一又は複数のブロックを、演算処理部１１が実行するプログラムを予め記憶するプログラム用記憶領域２２０として用いると共に、残りの複数（Ｎ個とする）のブロックを、演算処理部１１から与えられたデータを記憶する第１記憶ブロック２２１、第２記憶ブロック２２２、…、第Ｎ記憶ブロック２２Ｎとして用いる。
【００２７】
メモリ管理部２１は、記憶部２２のプログラム用記憶領域２２０を読出専用の領域として扱い、プログラム用記憶領域２２０に対するデータの書込要求及び消去要求を受け付けず、読出要求のみを受け付ける。これにより、プログラム用記憶領域２２０に予め記憶されたプログラムが破壊されることを防止できる。
【００２８】
またメモリ管理部２１は、演算処理部１１からデータの書込要求が与えられた場合、書込要求と共に与えられるデータを、Ｎ個の記憶ブロックのいずれかに書き込む（記憶する）。メモリ管理部２１は、第１記憶ブロック２２１→第２記憶ブロック２２２→…→第Ｎ記憶ブロック２２Ｎのように、書き込み先を順に切り替えながらデータの書き込みを行っている。このためメモリ管理部２１は、演算処理部１１との間で授受する書き込み先の論理的なアドレスと、記憶部２２における書き込み先の物理的なアドレスとを変換するテーブルなどの情報を有している（図示は省略する）。このテーブルは、メモリ管理部２１内の専用のメモリに記憶される構成であってもよく、記憶部２２の一又は複数のブロックをテーブルを記憶するために用い、このブロックに記憶される構成であってもよい。
【００２９】
例えばメモリ管理部２１は、演算処理部１１からの書込要求に応じて第１記憶ブロック２２１にデータを書き込んでいき、第１記憶ブロック２２１が一杯になった場合（第１記憶ブロック２２１の記憶領域がデータで満たされて書き込み不可能な状態となった場合）、データの書き込み先を第２記憶ブロック２２２へ変更する。このときメモリ管理部２１は、第１記憶ブロック２２１に記憶されたデータのうち、有効なデータを読み出して第２記憶ブロック２２２へコピーするブロック更新処理を行った後、第２記憶ブロック２２２に対するデータの書き込みを開始する。
【００３０】
またメモリ管理部２１は、ブロック更新処理を繰り返し行ってデータ書き込みの対象とする記憶ブロックを順に切り替えていき、最後の記憶ブロック（第Ｎ記憶ブロック２２Ｎ）が一杯になった場合には、第Ｎ記憶ブロック２２Ｎの有効なデータを第１記憶ブロック２２１へコピーするブロック更新処理を行って、第１記憶ブロック２２１へデータの書き込み対象を変更する。このように、複数の記憶ブロックを巡回してデータを書き込む構成とすることにより、各記憶ブロックのデータ書き換え回数を平均化することができる。
【００３１】
上述のデータ書き込みを実現するために、フラッシュメモリ２０は記憶部２２の先頭の記憶ブロック（第１記憶ブロック２２１）に管理用情報を記憶しており、メモリ管理部２１はこの管理用情報を読み出してデータの書込対象（更には読出対象）とすべき記憶ブロックを決定している。また管理用情報は、データの書込又は消去等の処理中にＣＰＵ１への電力供給が断たれた（瞬断が発生した）場合に、電力供給が再開されてＣＰＵ１の処理が再開された際に瞬断の発生を検出するためにも用いられる（詳細は後述する）。
【００３２】
図２は、管理用情報の一例を示す模式図である。管理用情報は、１つの記憶ブロックに対して更新開始ビット、更新終了ビット及び消去終了ビットの３ビットの情報が設けられたものであり、合計で３×Ｎビットのデータサイズである。管理用情報は例えば第１記憶ブロック２２１の先頭から３×Ｎビット分の領域に記憶されており、メモリ管理部２１は第１記憶ブロック２２１の先頭から数アドレス分のデータを読み出すことによって、管理用情報を取得することができる。また管理用情報の各ビットは、初期状態がデータ’１’であり、第１記憶ブロック２２１に対する消去処理によって初期化される。
【００３３】
管理用情報の更新開始ビットは、メモリ管理部２１がブロック更新処理を開始する前にデータ’０’に設定されるものであり、ブロック更新処理中の電源の瞬断を検出するための情報である。例えばｉ番目の記憶ブロックに対してブロック更新処理を行う場合、メモリ管理部２１は、まずｉ番目の記憶ブロックに係る更新開始ビットをデータ’０’に設定した後で、ｉ番目の記憶ブロックから有効なデータを読み出し、ｉ＋１番目の記憶ブロックへコピーする。
【００３４】
管理用情報の更新終了ビットは、メモリ管理部２１がブロック更新処理を終了した後にデータ’０’に設定されるものであり、ブロック更新処理中の電源の瞬断を検出すると共に、データ書き込み及び読み出しの対象記憶ブロックを判断するために用いられる情報である。例えばｉ番目の記憶ブロックに対してブロック更新処理を行う場合、メモリ管理部２１は、ｉ番目の記憶ブロックから有効なデータを読み出し、ｉ＋１番目の記憶ブロックへのコピーを完了した後で、更新終了ビットをデータ’０’に設定する。
【００３５】
ここで、ｉ番目の記憶ブロックに係るブロック更新処理中に電源の瞬断が発生し、このブロック更新処理が中断された場合、ｉ番目の記憶ブロックに係る更新開始ビットはデータ’０’に設定された状態であるが、更新終了ビットは設定されずにデータ’１’のままの状態である。よってメモリ管理部２１は、ＣＰＵ１が電源の瞬断から復帰してパワーオンリセットなどが行われた場合に、全ての記憶ブロックについて更新開始ビット及び更新終了ビットが一致するか否かを調べることにより、ブロック更新処理中に電源の瞬断が発生したことを検出できる。
【００３６】
またメモリ管理部２１は、第１記憶ブロック２２１から第Ｎ記憶ブロック２２Ｎへ順にデータの書き込み及びブロック更新処理を行うため、更新開始ビット及び更新終了ビットは第１記憶ブロック２２１に係るものから順にデータ’０’に設定される。よってメモリ管理部２１は、更新終了ビットを第１記憶ブロック２２１に係るものから順に調べていき、データ’１’の更新終了ビットを最初に発見した場合に、この更新終了ビットに係る記憶ブロックをデータ書き込み及び読み出しの対象とすることができる。
【００３７】
管理用情報の消去終了ビットは、メモリ管理部２１が記憶ブロックの消去処理を終了した後にデータ’０’に設定されるものであり、消去処理中の電源の瞬断を検出すると共に、記憶ブロックが消去可能な状態であるか否かを判断するためのものである。上述のように、ブロック更新処理が終了した記憶ブロックは有効なデータが既に次のブロックへコピーされた状態であるため消去可能である。そこでメモリ管理部２１は、更新終了ビットがデータ’０’に設定され、且つ、消去終了ビットが設定されずにデータ’１’のままの記憶ブロックを、消去可能な記憶ブロックであると判断することができる。
【００３８】
また、ｉ番目の記憶ブロックに係る消去処理中に電源の瞬断が発生し、この消去処理が中断された場合、ｉ番目の記憶ブロックに係る更新終了ビットはデータ’０’に設定された状態であるが、消去終了ビットは設定されずにデータ’１’のままの状態である。よってメモリ管理部２１は、消去処理が中断された記憶ブロックは、消去可能な記憶ブロックであると判断するため、演算処理部１１から消去要求が与えられた際に、この記憶ブロックの消去処理を行うことができる。
【００３９】
なお第１記憶ブロック２２１には上記の管理情報が記憶されているため、メモリ管理部２１は、演算処理部１１から第１記憶ブロック２２１の消去要求が与えられた場合であっても、第１記憶ブロック２２１の消去処理を行わない（又は、管理情報を他の記憶ブロックにバックアップした後で消去処理を行ってもよい）。第１記憶ブロック２２１の消去処理は、メモリ管理部２１が管理情報を初期化する際に行われる。
【００４０】
メモリ管理部２１は、最後の記憶ブロック（第Ｎ記憶ブロック２２Ｎ）が一杯になった場合に、第１記憶ブロック２２１へ有効なデータをコピーするブロック更新処理を行うが、この際には、第１記憶ブロック２２１に対する消去処理を行って管理情報を初期化した後で、ブロック更新処理を開始する。なお他の記憶ブロックについても、ブロック更新処理を行う際に次の記憶ブロックが消去されていない状態であれば、次の記憶ブロックの消去処理を行った後でブロック更新処理を開始してもよい。
【００４１】
図３及び図４は、フラッシュメモリ２０にて行われるデータ書込処理の手順を示すフローチャートであり、フラッシュメモリ２０のメモリ管理部２１により行われる処理である。まず、メモリ管理部２１は、演算処理部１１から書込要求が与えられたか否かを判定し（ステップＳ１）、書込要求が与えられていない場合には（Ｓ１：ＮＯ）、書込要求が与えられるまで待機する。書込要求が与えられた場合（Ｓ１：ＹＥＳ）、メモリ管理部２１は、第１記憶ブロック２２１から管理情報の更新終了ビットを読み出して（ステップＳ２）、第１記憶ブロック２２１の更新終了ビットから順にデータ’１’の更新終了ビットを探すことによって、データ書き込みの対象となる記憶ブロックを決定する（ステップＳ３）。
【００４２】
次いでメモリ管理部２１は、データ書き込みの対象となる記憶ブロックが最後の記憶ブロック（第Ｎ記憶ブロック２２Ｎ）であるか否かを判定する（ステップＳ４）。データ書き込みの対象となる記憶ブロックが最後の記憶ブロックでない場合（Ｓ４：ＮＯ）、メモリ管理部２１は、この記憶ブロックが書き込み可能な状態（データで満たされていない状態）であるか否かを更に判定する（ステップＳ５）。データ書き込みの対象となる記憶ブロックが書き込み可能な状態の場合（Ｓ５：ＹＥＳ）、メモリ管理部２１は、この記憶ブロックに要求されたデータの書き込みを行って（ステップＳ１０）、演算処理部１１へ書込完了を通知し（ステップＳ１１）、処理を終了する。
【００４３】
また、データ書き込みの対象となる記憶ブロックが書き込み可能な状態でない場合（Ｓ５：ＮＯ）、メモリ管理部２１は、この記憶ブロックに係る更新開始ビットにデータ’０’を設定し（ステップＳ６）、この記憶ブロックに記憶された有効なデータを読み出して次の記憶ブロックへコピーするブロック更新処理を行う（ステップＳ７）。ブロック更新処理の終了後、メモリ管理部２１は、この記憶ブロックに係る更新終了ビットにデータ’０’を設定し（ステップＳ８）、データ書き込みの対象となる記憶ブロックを次のブロックへ変更する（ステップＳ９）。次いでメモリ管理部２１は、データ書き込みの対象となる記憶ブロックに要求されたデータの書き込みを行って（ステップＳ１０）、演算処理部１１へ書込完了を通知し（ステップＳ１１）、処理を終了する。
【００４４】
また、ステップＳ３にて決定したデータ書き込みの対象となる記憶ブロックが最後の記憶ブロックの場合（Ｓ４：ＹＥＳ）、メモリ管理部２１は、最後の記憶ブロックが書き込み可能な状態であるか否かを更に判定する（ステップＳ１２）。最後の記憶ブロックが書き込み可能な状態の場合（Ｓ１２：ＹＥＳ）、メモリ管理部２１は、この記憶ブロックに要求されたデータの書き込みを行って（ステップＳ１８）、演算処理部１１へ書込完了を通知し（ステップＳ１９）、処理を終了する。
【００４５】
また、最後の記憶ブロックが書き込み可能な状態でない場合（Ｓ１２：ＮＯ）、メモリ管理部２１は、第１記憶ブロック２２１に対する消去処理を行うことによって管理情報を初期化する（ステップＳ１３）。初期化処理の終了後、メモリ管理部２１は、最後の記憶ブロックに係る更新開始ビットにデータ’０’を設定し（ステップＳ１４）、最後の記憶ブロックに記憶された有効なデータを読み出して最初の記憶ブロックへコピーするブロック更新処理を行う（ステップＳ１５）。ブロック更新処理の終了後、メモリ管理部２１は、最後の記憶ブロックに係る更新終了ビットにデータ’０’を設定し（ステップＳ１６）、データ書き込みの対象となる記憶ブロックを最初のブロックへ変更する（ステップＳ１７）。次いでメモリ管理部２１は、データ書き込みの対象となる記憶ブロックに要求されたデータの書き込みを行って（ステップＳ１８）、演算処理部１１へ書込完了を通知し（ステップＳ１９）、処理を終了する。
【００４６】
図５は、フラッシュメモリ２０にて行われるデータ読出処理の手順を示すフローチャートであり、フラッシュメモリ２０のメモリ管理部２１により行われる処理である。まず、メモリ管理部２１は、演算処理部１１から読出要求が与えられたか否かを判定し（ステップＳ３１）、読出要求が与えられていない場合には（Ｓ３１：ＮＯ）、読出要求が与えられるまで待機する。
【００４７】
読出要求が与えられた場合（Ｓ３１：ＹＥＳ）、メモリ管理部２１は、第１記憶ブロック２２１から管理情報の更新終了ビットを読み出して（ステップＳ３２）、第１記憶ブロック２２１の更新終了ビットから順にデータ’１’の更新終了ビットを探すことによって、データ読み出しの対象となる記憶ブロックを決定する（ステップＳ３３）。次いでメモリ管理部２１は、決定した記憶ブロックから、演算処理部１１により指定されたデータを読み出し（ステップＳ３４）、読み出したデータを演算処理部１１へ通知して（ステップＳ３５）、処理を終了する。
【００４８】
図６は、フラッシュメモリ２０にて行われるデータ消去処理の手順を示すフローチャートであり、フラッシュメモリ２０のメモリ管理部２１により行われる処理である。まず、メモリ管理部２１は、演算処理部１１から消去要求が与えられたか否かを判定し（ステップＳ４１）、消去要求が与えられていない場合には（Ｓ４１：ＮＯ）、消去要求が与えられるまで待機する。
【００４９】
消去要求が与えられた場合（Ｓ４１：ＹＥＳ）、メモリ管理部２１は、第１記憶ブロック２２１から管理情報の更新終了ビットを読み出し（ステップＳ４２）、消去終了ビットを読み出す（ステップＳ４３）。次いでメモリ管理部２１は、消去要求が与えられた記憶ブロック（消去対象の記憶ブロック）に係る更新終了ビット及び消去終了ビットが一致するか否かを判定し（ステップＳ４４）、更新終了ビット及び消去終了ビットが一致する場合（Ｓ４４：ＹＥＳ）、消去対象の記憶ブロックは消去済みであるため、処理を終了する。
【００５０】
また、消去対象の記憶ブロックに係る更新終了ビット及び消去終了ビットが一致しない場合（Ｓ４４：ＮＯ）、メモリ管理部２１は、消去対象の記憶ブロックに対する消去処理を行う（ステップＳ４５）。消去処理の終了後、メモリ管理部２１は、この記憶ブロックに係る消去終了ビットにデータ’０’を設定し（ステップＳ４６）、演算処理部１１へ消去完了を通知して（ステップＳ４７）、処理を終了する。
【００５１】
図７は、ＣＰＵ１の電源投入時にフラッシュメモリ２０にて行われる処理の手順を示すフローチャートであり、フラッシュメモリ２０のメモリ管理部２１により行われる処理である。ＣＰＵ１を搭載した機器は、電力供給が開始された際にリセット信号（パワーオンリセット）を出力する回路を備えており、パワーオンリセットの信号を与えることでＣＰＵ１の動作を初期化する（ただし、パワーオンリセットの回路をＣＰＵ１内に設ける構成としてもよい）。このパワーオンリセットの信号は、ＣＰＵ１内のフラッシュメモリ２０へも与えられる。
【００５２】
電源投入時に、フラッシュメモリ２０のメモリ管理部２１は、パワーオンリセットの信号を受け付け（ステップＳ５１）、第１記憶ブロック２２１から管理情報の更新開始ビットを読み出すと共に（ステップＳ５２）、更新終了ビットを読み出す（ステップＳ５３）。次いで、メモリ管理部２１は、全ての記憶ブロックについて更新開始ビット及び更新終了ビットが一致するか否かを判定し（ステップＳ５４）、全て一致する場合には（Ｓ５４：ＹＥＳ）、演算処理部１１へパワーオンリセット処理の完了を通知して（ステップＳ５７）、処理を終了する。
【００５３】
更新開始ビット及び更新終了ビットが一致しない場合（Ｓ５４:ＮＯ）、メモリ管理部２１は、一致しない更新開始ビットに係る記憶ブロックに記憶された有効なデータを読み出して次の記憶ブロックへコピーするブロック更新処理を行う（ステップＳ５５）。ブロック更新処理の終了後、メモリ管理部２１は、この記憶ブロックに係る更新終了ビットにデータ’０’を設定し（ステップＳ５６）、演算処理部１１へパワーオンリセット処理の完了を通知して（ステップＳ５７）、処理を終了する。
【００５４】
以上の構成のフラッシュメモリ２０においては、データがそれぞれ一括消去される複数の記憶ブロックに対してメモリ管理部２１が順次的に巡回してデータを書き込み、データの書き込み先を変更する際には有効なデータを次のブロックへコピーするブロック更新処理を行う構成とすることにより、各記憶ブロックのデータ書き換え回数を平均化することができ、フラッシュメモリ２０の寿命を長期化することができる。
また、最初に書き込みを行う第１記憶ブロック２２１には、記憶ブロック毎に更新開始ビット、更新終了ビット及び消去終了ビットの３つの情報を管理情報として記憶しておく。メモリ管理部２１はブロック更新処理の開始前に更新開始ビットをデータ’０’に設定し、ブロック更新処理の終了後に更新終了ビットをデータ’０’に設定する構成とすることにより、ブロック更新処理中に電源の瞬断が発生した場合であっても、更新開始ビット及び更新終了ビットに応じて瞬断の発生を検出し、電源再投入時に更新処理を再び行うことができる。またメモリ管理部２１は、更新終了ビットがデータ’０’に設定された記憶ブロックの消去処理を行い、消去処理の終了後に消去ビットをデータ’０’に設定する構成とすることにより、消去処理中に電源の瞬断が発生した場合であっても、消去処理を再度行うことができる。
このように、メモリ管理部２１が更新開始ビット、更新終了ビット及び消去終了ビットに基づいてブロック更新処理及びデータ消去処理を行うことによって、処理中に電源の瞬断が生じた場合であっても、中断された処理を再度行うことが可能となる。よって、電力供給環境が比較的に不安定な車輌などであっても、フラッシュメモリ２０を利用したデータの記憶を安全に行うことができる。
【００５５】
また、メモリ管理部２１は、演算処理部１１の要求に応じてデータの書き込み又は読み出しを行う場合に、各記憶ブロックに係る更新終了ビットに応じて、書き込み又は読み出しの対象となる記憶ブロックを決定することができる。具体的には、第１記憶ブロック２２１に係る更新終了ビットから第Ｎ記憶ブロック２２Ｎに係る更新終了ビットへ順にその値を調べ、最初に見出した更新終了ビットがデータ’１’の記憶ブロックを、書き込み又は読み出しの対象とすることができる。
【００５６】
また、メモリ管理部２１は、最後の記憶ブロックがデータで満たされた場合、最初の記憶ブロックに対する消去処理を行うことによって、最初の記憶ブロックに記憶された管理情報を初期化する構成とすることにより、最後の記憶ブロックから最初の記憶ブロックへブロック更新処理を行うことができ、複数の記憶ブロックに対してデータの書き込みを繰り返して（巡回して）行うことができる。
【００５７】
また、管理情報としてそれぞれが１ビットの更新開始ビット、更新終了ビット及び消去終了ビットを各記憶ブロックについて設け、各ビットの初期化状態をデータ’１’とし、設定状態をデータ’０’とすることにより、３×Ｎビット程度の情報で上述の処理を行うことができると共に、フラッシュメモリ２０の消去処理によって各ビットの初期化を一括して行うことができる。
【００５８】
なお、本実施の形態においては、フラッシュメモリ２０の第１記憶ブロック２２１〜第Ｎ記憶ブロック２２Ｎの全てを一組としてデータの書き込みを巡回して行う構成としたが、これに限るものではなく、Ｎ個の記憶ブロックを複数組に分割し、各組内でデータの書き込みを巡回して行う構成としてもよい。この場合、各組の最初の記憶ブロックに管理情報をそれぞれ記憶しておく構成とすればよい。
【００５９】
また、フラッシュメモリ２０にて一括消去される物理的なブロックをそれぞれ第１記憶ブロック２２１〜第Ｎ記憶ブロック２２Ｎとするのみでなく、物理的には分割された複数のブロックをまとめて第１記憶ブロック２２１とするなど、第１記憶ブロック２２１〜第Ｎ記憶ブロック２２Ｎは論理的なブロックとして実現されるものであってよい。
【００６０】
また、フラッシュメモリ２０のメモリ管理部２１は、演算処理部１１からの消去要求に応じて消去処理を行う構成としたが、これに限るものではなく、更新終了ビットがデータ’０’に設定された記憶ブロックをメモリ管理部２１が自動的に消去する構成であってもよい。
【００６１】
また、図６に示したフローチャートのステップＳ４４において、更新終了ビット及び消去終了ビットが一致するか否かを判定する構成としたが、これに限るものではなく、更新終了ビットがデータ’０’に設定され、且つ、消去終了ビットがデータ’１’のままであるか否かをステップＳ４４にて判定し、更新終了ビットがデータ’０’に設定され、且つ、消去終了ビットがデータ’１’の場合にステップＳ４５へ処理を進め、更新終了ビットがデータ’１’であるか、又は、消去終了ビットがデータ’０’の場合に、処理を終了する手順としてもよい。
【００６２】
同様に、図７に示したフローチャートのステップＳ５４において、更新開始ビット及び更新終了ビットが一致するか否かを判定する構成としたが、これに限るものではなく、更新開始ビットがデータ’０’に設定され、且つ、更新終了ビットがデータ’１’のままであるか否かをステップＳ５４にて判定し、更新開始ビットがデータ’０’に設定され、且つ、更新終了ビットがデータ’１’の場合にステップＳ５５へ処理を進め、更新開始ビットがデータ’１’であるか、又は、更新終了ビットがデータ’０’の場合に、ステップＳ５７へ処理を進める構成としてもよい。
【００６３】
また、フラッシュメモリ２０がＣＰＵ１内に設けられる構成としたが、これに限るものではなく、ＣＰＵ１外にフラッシュメモリ２０が設けられる構成であってもよい。また本発明に係るフラッシュメモリ２０は、車載機器への搭載が好適である。
【符号の説明】
【００６４】
１  ＣＰＵ
１１  演算処理部
１２  ＲＡＭ
２０  フラッシュメモリ（データ記憶装置）
２１  メモリ管理部（書込手段、更新手段、消去手段、読出手段、情報初期化手段）
２２  記憶部（不揮発性メモリ）
２２０  プログラム用記憶領域
２２１〜２２Ｎ  第１記憶ブロック〜第Ｎ記憶ブロック
【図１】
2011175361.tif 000003
【図２】
2011175361.tif 000004
【図３】
2011175361.tif 000005
【図４】
2011175361.tif 000006
【図５】
2011175361.tif 000007
【図６】
2011175361.tif 000008
【図７】
2011175361.tif 000009