(57)【要約】【課題】レスポンスを向上させることのできるマイクロコンピュータを提供する。【解決手段】マイクロコンピュータ１０は、データの書き込み及び消去が可能なフラッシュメモリ１４と、フラッシュメモリ１４に対してデータの書き込みを行うＣＰＵ１１と、を備える。フラッシュメモリ１４における最小のデータ消去単位に相当する記憶領域をセクタＳＣとするとき、フラッシュメモリ１４には、複数のセクタからなるデータ格納領域が設けられている。ＣＰＵ１１は、データ格納領域が一杯になった際に、セクタＳＣ単位でデータ格納領域を再編する。【選択図】図１
2017097404.tif 000002
【特許請求の範囲】
【請求項１】
データの書き込み及び消去が可能な不揮発性メモリ（１４）と、
前記不揮発性メモリに対してデータの書き込みを行う演算処理部（１１）と、を備え、
前記不揮発性メモリにおける最小のデータ消去単位に相当する記憶領域をセクタ（ＳＣ）とするとき、
前記不揮発性メモリには、
複数のセクタからなるデータ格納領域が設けられ、
前記演算処理部は、
前記データ格納領域が一杯になった際に、前記セクタ単位で前記データ格納領域を再編するマイクロコンピュータ。
【請求項２】
前記演算処理部は、
前記データ格納領域の再編として、前記データ格納領域に含まれる複数の前記セクタのうちの少なくとも一つのセクタを除去した上で、前記データ格納領域に新たなセクタを追加するとともに、
前記除去されるセクタに有効なデータが記憶されている場合、前記有効なデータを前記新たなセクタにコピーする
請求項１に記載のマイクロコンピュータ。
【請求項３】
前記演算処理部は、
前記データ格納領域に含まれる複数の前記セクタのうちの少なくとも一つのセクタを除去する際、有効なデータの記憶されている数が最も少ないセクタを除去する
請求項２に記載のマイクロコンピュータ。
【請求項４】
前記演算処理部は、
前記データ格納領域に含まれる複数の前記セクタのうちの少なくとも一つのセクタを除去する際、前記データ格納領域に追加された順番が最も古いセクタを除去する
請求項２に記載のマイクロコンピュータ。
【請求項５】
前記演算処理部は、
前記データ格納領域に新たに追加されるセクタの数よりも多い数のセクタを前記データ格納領域から除去する
請求項２〜４のいずれか一項に記載のマイクロコンピュータ。
【請求項６】
前記演算処理部は、
前記データ格納領域の再編として、前記データ格納領域への新たなセクタの追加のみを行う
請求項１に記載のマイクロコンピュータ。
【請求項７】
前記演算処理部は、
前記データ格納領域に前記セクタを追加する際、データの消去回数の最も少ないセクタを前記データ格納領域に追加する
請求項２又は６に記載のマイクロコンピュータ。
【請求項８】
前記セクタには、
前記セクタの使用状態を示す情報が記憶されている
請求項１〜７のいずれか一項に記載のマイクロコンピュータ。
【請求項９】
前記複数のセクタのそれぞれの使用状態の情報が記憶された記憶媒体を備える
請求項１〜８のいずれか一項に記載のマイクロコンピュータ。
【請求項１０】
前記不揮発性メモリは、
フラッシュメモリである。
請求項１〜９のいずれか一項に記載のマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性メモリを備えるマイクロコンピュータに関する。
【背景技術】
【０００２】
従来、装置や機器の動作を統括的に管理するマイクロコンピュータには、各種データの格納先として種々のメモリが搭載されている。このメモリの一つとして、各種データの電気的な書き込み及び消去が可能な不揮発性メモリがある。この種の不揮発性メモリは、例えばフラッシュメモリである。フラッシュメモリは、データの書き込み先であるメモリ領域が複数のブロックの集合体により構成されている。以下では、このブロックをデータ格納領域と称する。フラッシュメモリには、その特性として、データ書き込み済みのアドレスに新たなデータを書き込む際には、データ格納領域全体を一旦消去してからでないと新たなデータを書き込めないという制限がある。
【０００３】
そこで、特許文献１に記載のマイクロコンピュータは、フラッシュメモリの複数のデータ格納領域をローテーションして使用している。複数のデータ格納領域の少なくとも一つが使用対象に設定されている。使用対象のデータ格納領域では、データの書き込みが可能である。特許文献１に記載のマイクロコンピュータでは、フラッシュメモリに新たなデータが書き込まれる際には、使用対象のデータ格納領域内の空き領域に新たなデータが順次書き込まれる。そして、使用対象のデータ格納領域が一杯になると、使用対象が別のデータ格納領域に切り替えられる。このとき、古い使用対象のデータ格納領域に記憶されている最新のデータが、新たな使用対象のデータ格納領域にコピーされる。その後、新たなデータがフラッシュメモリに書き込まれる際には、新たな使用対象のデータ格納領域の空き領域に新たなデータが順次書き込まれる。以降、使用対象のデータ格納領域が一杯になる度に使用対象のデータ格納領域の切り替えが行われる。なお、書き込み領域が一杯になったデータ格納領域では、次に使用対象に割り当てられるまでの期間に、書き込まれたデータが消去される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−１７６２００号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、特許文献１に記載のマイクロコンピュータでは、使用対象のデータ格納領域を切り替える際に、古い使用対象のデータ格納領域に記憶されている最新のデータが新たな使用対象のデータ格納領域にコピーされるため、最新のデータの情報量が大きくなると、コピー処理に要する時間が長くなる。これがマイクロコンピュータの処理負担となり、マイクロコンピュータのレスポンスを悪化させる要因となっている。
【０００６】
なお、このような課題は、フラッシュメモリ等の不揮発性メモリを有するマイクロコンピュータに共通する課題である。
【０００７】
本発明は、こうした実情に鑑みてなされたものであり、その目的は、レスポンスを向上させることのできるマイクロコンピュータを提供することにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するマイクロコンピュータは、データの書き込み及び消去が可能な不揮発性メモリ（１４）と、不揮発性メモリに対してデータの書き込みを行う演算処理部（１１）と、を備える。不揮発性メモリにおける最小のデータ消去単位に相当する記憶領域をセクタ（ＳＣ）とするとき、不揮発性メモリには、複数のセクタからなるデータ格納領域が設けられている。演算処理部は、データ格納領域が一杯になった際に、セクタ単位でデータ格納領域を再編する。
【０００９】
この構成によれば、データ格納領域の再編がセクタ単位で行われるため、従来のマイクロコンピュータのようにデータ格納領域の再編をデータ格納領域単位で行う場合と比較すると、再編時の演算処理部のデータ処理量を低減することができる。その結果、マイクロコンピュータのレスポンスを向上させることができる。
【００１０】
なお、上記手段、及び特許請求の範囲に記載の括弧内の符号は、後述する実施形態に記載の具体的手段との対応関係を示す一例である。
【発明の効果】
【００１１】
本発明によれば、レスポンスを向上させることができる。
【図面の簡単な説明】
【００１２】
【図１】第１実施形態のマイクロコンピュータの概略構成を示すブロック図である。
【図２】第１実施形態のマイクロコンピュータのフラッシュメモリの構成を模式的に示す図である。
【図３】第１実施形態のフラッシュメモリのセクタの構成を模式的に示す図である。
【図４】第１実施形態のセクタに記憶されるデータの構成を模式的に示す図である。
【図５】（Ａ），（Ｂ）は、データ書き込み時のフラッシュメモリの動作例を模式的に示す図である。
【図６】（Ａ），（Ｂ）は、データ書き込み時のフラッシュメモリの動作例を模式的に示す図である。
【図７】（Ａ），（Ｂ）は、データ書き込み時のフラッシュメモリの動作例を模式的に示す図である。
【図８】第１実施形態のマイクロコンピュータにより実行される読み込み処理の手順を示すフローチャートである。
【図９】第１実施形態のマイクロコンピュータにより実行される対象データ探索処理の手順を示すフローチャートである。
【図１０】第１実施形態のマイクロコンピュータにより実行される書き込み処理の手順を示すフローチャートである。
【図１１】第１実施形態のマイクロコンピュータにより実行されるデータ格納領域移動処理の手順を示すフローチャートである。
【図１２】（Ａ），（Ｂ）は、第２実施形態のマイクロコンピュータにおけるデータ書き込み時のフラッシュメモリの動作例を模式的に示す図である。
【図１３】第３実施形態のマイクロコンピュータのフラッシュメモリに記憶されている情報の一例を示す図表である。
【図１４】第４実施形態のマイクロコンピュータのフラッシュメモリに記憶されている情報の一例を示す図表である。
【図１５】（Ａ），（Ｂ）は、他の実施形態のマイクロコンピュータにおけるデータ書き込み時のフラッシュメモリの動作例を模式的に示す図である。
【図１６】（Ａ），（Ｂ）は、他の実施形態のマイクロコンピュータにおけるデータ書き込み時のフラッシュメモリの動作例を模式的に示す図である。
【図１７】他の実施形態のマイクロコンピュータのフラッシュメモリに記憶されている情報の一例を示す図表である。
【発明を実施するための形態】
【００１３】
＜第１実施形態＞
以下、マイクロコンピュータの第１実施形態について説明する。
図１に示されるように、本実施形態のマイクロコンピュータ１０は、ＣＰＵ１１と、ＲＯＭ（Read Only Memory）１２と、フラッシュコントローラ１３と、フラッシュメモリ１４と、ＲＡＭ（Random Access Memory）１５と、入出力ポート１６とを備えている。これらの要素１１〜１６は電源１７から供給される電力を動作電源として駆動する。マイクロコンピュータ１０は、例えば車両のエンジン等の制御対象を制御する電子制御装置等に搭載されており、制御対象の動作を制御する制御部として機能する。
【００１４】
ＲＯＭ１２は、主にプログラムメモリとして用いられている。ＲＯＭ１２には、例えばＣＰＵ１１により実行されるソフトウェアが予め記憶されている。例えば、ＲＯＭ１２には、フラッシュドライバソフトウェア１２０と、アプリケーションソフトウェア１２１が記憶されている。フラッシュドライバソフトウェア１２０は、フラッシュメモリ１４へのデータの書き込み、及びフラッシュメモリ１４からのデータの読み込みの際にＣＰＵ１１により実行されるソフトウェアである。アプリケーションソフトウェア１２１は、制御処理等のマイクロコンピュータ１０の機能を実現するための各種ソフトウェアである。
【００１５】
フラッシュコントローラ１３は、フラッシュメモリ１４の動作を制御する部分である。フラッシュコントローラ１３は、所定のデータと共に書き込み指令がＣＰＵ１１から伝達された場合、この所定のデータをフラッシュメモリ１４に書き込む。また、フラッシュコントローラ１３は、ＣＰＵ１１から所定のデータの読み込み指令が伝達された場合、所定のデータをフラッシュメモリ１４から読み込むとともに、読み込んだ所定のデータをＣＰＵ１１に伝達する。
【００１６】
フラッシュメモリ１４は、電源１７からの電力供給が遮断された場合でもデータを保持することが可能な不揮発性メモリである。フラッシュメモリ１４では、データの書き込み及び消去が可能である。フラッシュメモリ１４は、例えばＮＡＮＤ型フラッシュメモリやＮＯＲ型フラッシュメモリからなる。
【００１７】
ＲＡＭ１５には、ＣＰＵ１１の演算途中のデータや演算結果等の一時的なデータが記憶される。
【００１８】
ＣＰＵ１１は、ＲＯＭ１２に記憶されたアプリケーションソフトウェア１２１を実行することにより、マイクロコンピュータ１０の機能を実現するための各種演算処理を実行する。例えば、ＣＰＵ１１は、入出力ポート１６を介して図示しないセンサの検出信号を取り込むとともに、この検出信号に基づいて所定の物理量を取得する。ＣＰＵ１１は、この物理量に基づいてアプリケーションソフトウェア１２１を実行することにより制御信号を生成し、この制御信号を入出力ポート１６を介して図示しない制御対象に出力することにより制御対象の動作を制御する。その際、ＣＰＵ１１は、一時的なデータを演算した場合には、これをＲＡＭ１５に記憶させる。また、ＣＰＵ１１は、一時的でないデータ、例えば電源１７からの電力供給が遮断された場合でも保持すべきデータを演算した場合には、これをフラッシュコントローラ１３を介してフラッシュメモリ１４に記憶させる。本実施形態では、ＣＰＵ１１が演算処理部に相当する。
【００１９】
次に、フラッシュメモリ１４の構成について具体的に説明する。
図１に示されるように、フラッシュメモリ１４は、複数のセクタＳＣを有している。セクタＳＣは、フラッシュメモリ１４における最小のデータ消去単位に相当する記憶領域である。
【００２０】
フラッシュメモリ１４には、図２に示されるようなデータ格納領域ＤＳＡが設けられている。データ格納領域ＤＳＡは、複数のセクタＳＣからなる。なお、データ格納領域ＤＳＡに属するセクタＳＣの数は、フラッシュメモリ１４のセクタＳＣの総数よりも少ない数に設定されている。すなわち、フラッシュメモリ１４には、データ格納領域ＤＳＡに属するセクタＳＣと、データ格納領域ＤＳＡに属していないセクタＳＣとが存在する。図２では、二点鎖線で囲われたセクタＳＣが、データ格納領域ＤＳＡに属するセクタＳＣを示している。データ格納領域ＤＳＡに属するセクタＳＣは、データの書き込みが行われるセクタである。データ格納領域ＤＳＡに属していないセクタＳＣは、データの書き込みが行われないセクタである。換言すれば、データ格納領域ＤＳＡに属していないセクタＳＣは、データ格納領域ＤＳＡに移行する準備段階のセクタである。
【００２１】
図３に示されるように、一つのセクタＳＣには、セクタ状態を記憶するための記憶領域と、複数の単位データ領域ＵＤＡとが設けられている。図４に示されるように、単位データ領域ＵＤＡには、データ状態と、データＩＤと、データ値とが記憶されている。以下では、データＩＤ及びデータ値をまとめて「データ」と称する。データ値は、ＣＰＵ１１の演算処理で実際に用いられる情報である。データ値は、例えば数バイトの情報からなる。データＩＤは、データ値の識別子である。ＣＰＵ１１は、フラッシュメモリ１４に対してデータの書き込み、あるいは読み込みを行う際、データＩＤを指定することにより、書き込み対象のデータ値、あるいは読み込み対象のデータ値を指定する。データ状態は、データ値が「有効」及び「無効」のいずれの状態であるかを示す。「有効」は、データ値が使用中であることを示す。「無効」は、データ値が使用中でないことを示す。図３に示される複数の単位データ領域ＵＤＡのうち、何らかのデータ値が記憶されている単位データ領域ＵＤＡには、データ値と共に図４に示されるデータ状態及びデータＩＤが関連付けられて記憶されている。データ値が記憶されていない単位データ領域ＵＤＡ、あるいはデータの消去の行われた単位データ領域ＵＤＡには、図４に示されるデータ状態、データＩＤ、及びデータ値の情報が記憶されていない。以下では、データが記憶されていない単位データ領域ＵＤＡを空き状態の単位データ領域ＵＤＡと称する。
【００２２】
図３に示されるセクタ状態は、セクタＳＣの状態が「使用前」、「使用中」、「使用済み」のいずれの状態であるかを示す情報である。「使用前」は、全ての単位データ領域ＵＤＡのデータが消去されている状態であって、且つデータ格納領域ＤＳＡに属していない状態を示す。「使用中」は、データ格納領域ＤＳＡに属しており、データの書き込みが可能な状態を示す。「使用済み」は、単位データ領域ＵＤＡに何らかのデータが記憶されている状態であって、且つデータ格納領域ＤＳＡに属していない状態を示す。「使用済み」は、単位データ領域ＵＤＡのデータの消去が行われる前の状態を示す。
【００２３】
ＣＰＵ１１は、フラッシュドライバソフトウェア１２０を実行することにより、フラッシュメモリ１４に対するデータの読み込み及び書き込みをフラッシュコントローラ１３を介して行う。
【００２４】
例えばＣＰＵ１１は、アプリケーションソフトウェア１２１の実行に伴いフラッシュメモリ１４から所定のデータ値を読み込む際には、まず、対象のデータ値がフラッシュメモリ１４のデータ格納領域ＤＳＡに存在するか否かを判断する。具体的には、ＣＰＵ１１は、データ格納領域ＤＳＡのセクタＳＣに、対象のデータ値に対応するデータＩＤが存在するか否かを判断する。ＣＰＵ１１は、データ格納領域ＤＳＡのセクタＳＣに、対象のデータ値に対応するデータＩＤが存在する場合には、そのデータＩＤに対応するデータ値をアプリケーションソフトウェア１２１に返却する。ＣＰＵ１１は、データ格納領域ＤＳＡのセクタＳＣに、対象のデータ値に対応するデータＩＤが存在しない場合には、対象のデータ値が無い旨をアプリケーションソフトウェア１２１に返却する。
【００２５】
次に、図５〜図７を参照して、ＣＰＵ１１によるフラッシュメモリ１４へのデータの書き込み手法について説明する。図５〜図７では、二点鎖線で囲まれる領域がデータ格納領域ＤＳＡを示している。また、実線及び破線で区画される領域が単位データ領域ＵＤＡを示している。さらに、図５〜図７に一点鎖線で示されるように、セクタＳＣが３つの単位データ領域ＵＤＡで構成されている場合について例示している。
【００２６】
ＣＰＵ１１は、例えばＣＰＵ１１からの指示に基づいてデータＥ１をフラッシュメモリ１４に書き込む際には、まず、データ格納領域ＤＳＡのセクタＳＣに空き状態の単位データ領域ＵＤＡが存在するか否かを判断する。すなわち、ＣＰＵ１１は、データ格納領域ＤＳＡが一杯であるか否かを判断する。この際、図５（Ａ）に示されるように、データ格納領域ＤＳＡが一杯でなく、且つデータ格納領域ＤＳＡにデータＥ１が記憶されていない場合、ＣＰＵ１１は、図５（Ｂ）に示されるように、空き状態の単位データ領域ＵＤＡにデータＥ１を書き込む。
【００２７】
一方、図６（Ａ）に示されるように、データ格納領域ＤＳＡが一杯でなく、且つデータ格納領域ＤＳＡにデータＥ１が既に記憶されている場合、ＣＰＵ１１は、図６（Ｂ）に示されるように、既にデータ格納領域ＤＳＡに記憶されているデータＥ１を無効にする。具体的には、既にデータ格納領域ＤＳＡに記憶されているデータＥ１のデータ状態を無効に設定する。なお、図６を含め、以降の図では、無効に設定されたデータには二重取り消し線が付されている。その後、ＣＰＵ１１は、空き状態の単位データ領域ＵＤＡに新たなデータＥ２を書き込む。なお、データＥ２は、データＥ１の更新データである。
【００２８】
さらに、図７（Ａ）に示されるように、データ格納領域ＤＳＡが一杯である場合には、ＣＰＵ１１は、セクタＳＣ単位でデータ格納領域ＤＳＡの再編を行う。具体的には、図７（Ｂ）に示されるように、ＣＰＵ１１は、データ格納領域ＤＳＡから単位データ領域ＵＤＡをセクタＳＣ単位で除去した上で、除去セクタＥＳＣに記憶されている有効なデータＣ１を追加セクタＡＳＣにコピーする。そして、ＣＰＵ１１は、追加セクタＡＳＣの空き状態の単位データ領域ＵＤＡに新たなデータＥ２を書き込む。
【００２９】
次に、図８〜図１１を参照して、ＣＰＵ１１により実行されるデータの読み込み及び書き込み処理の具体的な手順について説明する。まず、データの読み込み処理の具体的な手順について説明する。
【００３０】
ＣＰＵ１１は、フラッシュメモリ１４に対してデータの読み込みを行う際には、図８に示される処理を実行する。図８に示されるように、ＣＰＵ１１は、まず、ステップＳ１０の処理として、読み込みデータのデータＩＤに基づいて対象データ探索処理を行う。対象データ探索処理は、読み込みが行われるデータがフラッシュメモリ１４に記憶されているか否かを探索する処理である。具体的には、ＣＰＵ１１は、図９に示される処理を実行する。
【００３１】
図９に示されるように、対象データ探索処理では、ＣＰＵ１１は、まず、ステップＳ１００の処理として、フラッシュメモリ１４の全てのセクタＳＣに対してステップＳ１０１〜Ｓ１０３の処理を繰り返し実行する。以下、フラッシュメモリ１４の全てのセクタＳＣのうち、現在対象となっているセクタを対象セクタと称する。
【００３２】
ＣＰＵ１１は、ステップＳ１０１の処理として、対象セクタは、データ格納領域ＤＳＡを構成するセクタであるか否かを判断する。ＣＰＵ１１は、対象セクタが、データ格納領域を構成するセクタでない場合には、ステップＳ１０１の処理で否定判断し、ステップＳ１００の処理に戻り、次のセクタを対象セクタとしてステップＳ１０１〜Ｓ１０３の処理を実行する。
【００３３】
ＣＰＵ１１は、対象セクタが、データ格納領域ＤＳＡを構成するセクタである場合には、ステップＳ１０２の処理として、対象セクタに含まれる全ての単位データ領域ＵＤＡに対してステップＳ１０３の処理を繰り返し実行する。以下、対象セクタに含まれる単位データ領域ＵＤＡのうち、現在対象となっている単位データ領域を対象単位データ領域と称する。
【００３４】
ＣＰＵ１１は、ステップＳ１０３の処理として、対象単位データ領域に記憶されているデータ値が有効な状態であって、且つそのデータＩＤが要求データＩＤと一致しているか否かを判断する。要求データＩＤは、読み込みデータのデータＩＤである。ＣＰＵ１１は、ステップＳ１０３の処理で否定判断した場合には、ステップＳ１０２の処理に戻り、次の単位データ領域を対象単位データ領域としてステップＳ１０３の処理を実行する。
【００３５】
ＣＰＵ１１は、ステップＳ１０２のループ処理を実行している間に、ステップＳ１０３の処理で肯定判断した場合には、すなわち読み込みの対象データを検出した場合には、ステップＳ１０５の処理として、読み込みの対象データが有ることを示すフラグを立てた後、図９に示される処理を終了する。ＣＰＵ１１は、ステップＳ１０２のループ処理を実行した結果、対象セクタに含まれる単位データ領域ＵＤＡの全てにおいてステップＳ１０３の処理で否定判断した場合には、ステップＳ１０２のループ処理を抜ける。この場合、ＣＰＵ１１は、ステップＳ１００のループ処理に戻る。
【００３６】
ＣＰＵ１１は、ステップＳ１００のループ処理を実行した結果、フラッシュメモリ１４の全てのセクタＳＣにおいてステップＳ１０３の処理で否定判断した場合には、すなわち対象となるデータがフラッシュメモリ１４に記憶されていない場合には、ステップＳ１００のループ処理を抜ける。この場合、ＣＰＵ１１は、ステップＳ１０４の処理として、読み込みの対象データが無いことを示すフラグを立てた後、図９に示される処理を終了する。
【００３７】
図８に示されるように、ＣＰＵ１１は、図９に示される処理を終了した後、ステップＳ１１の処理として、読み込みの対象データを検出したか否かを判断する。ＣＰＵ１１は、読み込みの対象データが有ることを示すフラグが立てられている場合、ステップＳ１１の処理で肯定判断する。この場合、ＣＰＵ１１は、ステップＳ１２の処理として、図９に示される処理で検出されたデータ値をアプリケーションソフトウェア１２１に返却する。これに対し、ＣＰＵ１１は、読み込みの対象データが無いことを示すフラグが立てられている場合、ステップＳ１１の処理で否定判断する。この場合、ＣＰＵ１１は、ステップＳ１３の処理として、読み込みの対象データが無いことをアプリケーションソフトウェア１２１に返却する。
【００３８】
次に、ＣＰＵ１１により実行されるデータの書き込み処理の具体的な手順について説明する。ＣＰＵ１１は、フラッシュメモリ１４に対してデータの書き込み処理を行う際には、図１０に示される処理を実行する。
【００３９】
図１０に示されるように、ＣＰＵ１１は、まず、データ格納領域ＤＳＡが一杯であるか否かを判断する。ＣＰＵ１１は、データ格納領域ＤＳＡが一杯である場合には、ステップＳ２１の処理として、データ格納領域再編処理を実行する。具体的には、ＣＰＵ１１は、図１１に示される処理を実行する。
【００４０】
図１１に示されるように、データ格納領域再編処理では、ＣＰＵ１１は、まず、ステップＳ２２０の処理として、データ格納領域ＤＳＡに新たに追加する追加セクタを選定する。具体的には、ＣＰＵ１１は、データ格納領域ＤＳＡに属するセクタＳＣを除くセクタＳＣを追加セクタとして選定する。
【００４１】
ＣＰＵ１１は、ステップＳ２２０に続くステップＳ２２１の処理として、データ格納領域ＤＳＡから除去する除去セクタを選定する。例えば、ＣＰＵ１１は、データ格納領域ＤＳＡの先頭のセクタＳＣを除去セクタとして選定する。
【００４２】
ＣＰＵ１１は、ステップＳ２２１に続くステップＳ２２２の処理として、除去セクタに有効なデータが存在するか否かを判断する。ＣＰＵ１１は、除去セクタに有効なデータが存在する場合には、ステップＳ２２２の処理で肯定判断する。この場合、ＣＰＵ１１は、ステップＳ２２３の処理として、除去セクタに存在する全ての有効なデータが追加セクタにコピーされるまでステップＳ２２４，Ｓ２２５の処理を繰り返し実行する。
【００４３】
ＣＰＵ１１は、ステップＳ２２４の処理として、除去セクタからコピーされていない有効なデータを探索する。具体的には、ＣＰＵ１１は、除去セクタの単位データ領域ＵＤＡのうち、データ状態が「有効」となっている単位データ領域ＵＤＡを探索する。
【００４４】
ＣＰＵ１１は、ステップＳ２２４に続くステップＳ２２５の処理として、有効なデータを追加セクタにコピーする。具体的には、ＣＰＵ１１は、データ状態が「有効」となっている単位データ領域ＵＤＡのデータＩＤ及びデータ値を追加セクタの単位データ領域ＵＤＡにコピーする。
【００４５】
ＣＰＵ１１は、除去セクタに存在する全ての有効なデータを追加セクタにコピーすると、ステップＳ２２３のループ処理を抜けて、ステップＳ２２６の処理を実行する。また、ＣＰＵ１１は、ステップＳ２２２の処理で否定判断した場合にも、すなわち除去セクタに有効なデータが存在しない場合にも、ステップＳ２２６の処理を実行する。具体的には、ＣＰＵ１１は、ステップＳ２２６の処理として、新たなデータ格納領域ＤＳＡを使用するように設定する。具体的には、ＣＰＵ１１は、追加セクタの状態を「使用中」に設定するとともに、除去セクタの状態を「使用済み」に設定する。
【００４６】
ＣＰＵ１１は、ステップＳ２２６に続くステップＳ２２７の処理として、除去セクタのデータを消去する。具体的には、ＣＰＵ１１は、使用済みに設定された除去セクタの単位データ領域ＵＤＡのデータの消去を行う。ＣＰＵ１１は、ステップＳ２２７の処理を実行した後、図１１に示されるデータ格納領域再編処理を終了する。
【００４７】
図１０に示されるように、ＣＰＵ１１は、ステップＳ２１のデータ格納領域再編処理を終了した後、あるいはステップＳ２０の処理で否定判断した場合には、ステップＳ２２の処理として、対象データ探索処理を実行する。この対象データ探索処理は、書き込みの対象データがフラッシュメモリ１４に記憶されているか否かを探索する処理である。ステップＳ２２の処理手順は、図９に示される処理と同一であるため、割愛する。
【００４８】
ＣＰＵ１１は、ステップＳ２２の処理に続くステップＳ２３の処理として、書き込みの対象データを検出したか否かを判断する。ＣＰＵ１１は、書き込みの対象データを検出した場合には、ステップＳ２３の処理で肯定判断する。この場合、ＣＰＵ１１は、ステップＳ２４の処理として、検出されたデータが記憶された単位データ領域のデータ状態を「無効」に設定した後、ステップＳ２５の処理として、新たなデータをデータ格納領域ＤＳＡに追記し、一連の処理を終了する。
【００４９】
ＣＰＵ１１は、ステップＳ２３の処理で否定判断した場合、すなわち書き込みの対象データを検出できなかった場合には、ステップＳ２５の処理として、新たなデータをデータ格納領域ＤＳＡに追記し、一連の処理を終了する。
【００５０】
次に、図７（Ａ），（Ｂ）を参照して、本実施形態のマイクロコンピュータ１０の動作例について説明する。
【００５１】
ＣＰＵ１１は、図７（Ａ）に示されるようにデータ格納領域ＤＳＡが一杯になった状態で新たなデータＥ２を書き込む場合、図７（Ｂ）に示されるようにデータ格納領域ＤＳＡを再編する。すなわち、ＣＰＵ１１は、データ格納領域ＤＳＡに属するセクタＳＣを除くセクタＳＣを追加セクタＡＳＣとして選定する。また、ＣＰＵ１１は、データ格納領域ＤＳＡに属する先頭のセクタＳＣを除去セクタＥＳＣとして選定する。そして、ＣＰＵ１１は、除去セクタＥＳＣに記憶されている有効なデータＣ１を追加セクタＡＳＣにコピーする。そして、ＣＰＵ１１は、データ格納領域ＤＳＡから除去セクタＥＳＣを除去するとともに、データ格納領域ＤＳＡに追加セクタＡＳＣを追加する。これにより、データ格納領域ＤＳＡの再編が完了する。ＣＰＵ１１は、データ格納領域ＤＳＡの再編を完了した後、新たなデータ格納領域ＤＳＡにデータＥ２を書き込む。また、ＣＰＵ１１は、除去セクタＥＳＣのデータを消去する。
【００５２】
以上説明した本実施形態のマイクロコンピュータ１０によれば、以下の（１）〜（３）に示される作用及び効果を得ることができる。
【００５３】
（１）ＣＰＵ１１は、データ格納領域ＤＳＡが一杯になった際に、セクタＳＣ単位でデータ格納領域ＤＳＡの再編を行う。具体的には、ＣＰＵ１１は、データ格納領域ＤＳＡの一つのセクタＳＣを消去した上で、データ格納領域ＤＳＡに新たなセクタＳＣを追加する。また、ＣＰＵ１１は、除去セクタＥＳＣに有効なデータが記憶されている場合には、これを追加セクタＡＳＣにコピーする。これにより、従来のマイクロコンピュータのようにデータ格納領域の再編をデータ格納領域単位で行う場合と比較すると、再編時のＣＰＵ１１のデータ処理量を低減することができる。その結果、マイクロコンピュータ１０のレスポンスを向上させることができる。
【００５４】
（２）セクタＳＣには、セクタの使用状態を示す情報が記憶されている。これにより、セクタＳＣの管理情報が各セクタに分散されるため、例えば意図しない電源１７の遮断時に各セクタの管理情報が消失し難くなる。
【００５５】
（３）フラッシュメモリ１４では、一般に、最小のデータ消去単位としてのセクタが設けられている。したがって、本実施形態のような構成をフラッシュメモリ１４を有するマイクロコンピュータ１０に適用することは有効である。
【００５６】
＜第２実施形態＞
次に、マイクロコンピュータ１０の第２実施形態について説明する。以下、第１実施形態との相違点を中心に説明する。
【００５７】
本実施形態のＣＰＵ１１は、図１１に示されるデータ格納領域再編処理のステップＳ２２１で除去セクタＥＳＣを選定する際、データ格納領域ＤＳＡのセクタＳＣのうち、有効なデータが記憶されている数が最も少ないセクタを除去セクタＥＳＣとして選定する。
【００５８】
次に、本実施形態のマイクロコンピュータ１０の動作例について説明する。
データ格納領域ＤＳＡに、例えば図１２（Ａ）に示されるようなデータが記憶されているとする。この場合、ＣＰＵ１１は、新たなデータＥ２をデータ格納領域ＤＳＡに記憶させる際、データ格納領域ＤＳＡの先頭から２番目のセクタＳＣに記憶されているデータＤ１，Ｅ１，Ｆ１の全てが無効なデータであるため、このセクタＳＣを除去セクタＥＳＣとして選定する。このとき、除去セクタＥＳＣに選定されたセクタＳＣには有効なデータが存在しないため、図１２（Ｂ）に示されるように、ＣＰＵ１１は、新たなセクタＡＳＣを追加した後、データのコピーを行わずにデータ格納領域ＤＳＡの再編を完了する。また、ＣＰＵ１１は、新たなデータ格納領域ＤＳＡにデータＥ２を書き込む。
【００５９】
以上説明した本実施形態のマイクロコンピュータ１０によれば、以下の（４）に示される作用及び効果を更に得ることができる。
【００６０】
（４）追加セクタＡＳＣにコピーさせるデータ量を減らすことができるため、ＣＰＵ１１の処理負担を更に軽減することができる。特に、図１２に示されるように、除去セクタＥＳＣに有効なデータが存在しない場合には、追加セクタＡＳＣへのコピー処理を行う必要がないため、ＣＰＵ１１の処理負担を大幅に軽減することができる。よって、マイクロコンピュータ１０のレスポンスを更に低減することができる。
【００６１】
＜第３実施形態＞
次に、マイクロコンピュータ１０の第３実施形態について説明する。以下、第１実施形態との相違点を中心に説明する。
【００６２】
本実施形態のＣＰＵ１１は、図１０に示されるデータ格納領域再編処理のステップＳ２２１で除去セクタＥＳＣを選定する際、データ格納領域ＤＳＡのセクタＳＣのうち、データ格納領域ＤＳＡに追加された順番が最も古いセクタを除去セクタＥＳＣとして選定する。具体的には、図１３に示されるように、データ格納領域ＤＳＡに属するセクタＳＣの数を「Ｍ」とし、フラッシュメモリ１４のセクタＳＣの数を「Ｎ」とすると、フラッシュメモリ１４には、データ格納領域ＤＳＡに追加された順番を示す情報が全てのセクタＳＣ（１）〜ＳＣ（Ｎ）に関連付けられて更に記憶されている。ＣＰＵ１１は、この情報に基づいて現在のデータ格納領域ＤＳＡに属するセクタＳＣ（１）〜ＳＣ（Ｍ）がデータ格納領域ＤＳＡに追加された順番を判断するとともに、そのうち、データ格納領域ＤＳＡに追加された順番が最も古いセクタを除去セクタＥＳＣとして選定する。
【００６３】
以上説明した本実施形態のマイクロコンピュータ１０によれば、以下の（５）に示される作用及び効果を更に得ることができる。
【００６４】
（５）フラッシュメモリ１４の全てのセクタＳＣ間での消去回数が均衡化されるため、フラッシュメモリ１４の寿命を延ばすことができる。
【００６５】
＜第４実施形態＞
次に、マイクロコンピュータ１０の第４実施形態について説明する。以下、第１実施形態との相違点を中心に説明する。
【００６６】
本実施形態のＣＰＵ１１は、図１０に示されるデータ格納領域再編処理のステップＳ２２０の処理で追加セクタＡＳＣを選定する際、データ格納領域ＤＳＡのセクタＳＣのうち、データの消去回数の最も少ないセクタを追加セクタＡＳＣとして選定する。具体的には、図１４に示されるように、データ格納領域ＤＳＡに属するセクタＳＣの数を「Ｍ」とし、フラッシュメモリ１４のセクタＳＣの数を「Ｎ」とすると、フラッシュメモリ１４には、データの消去回数を示す情報が全てのセクタＳＣ（１）〜ＳＣ（Ｎ）と関連付けられて更に記憶されている。ＣＰＵ１１は、この情報に基づいて現在のデータ格納領域ＤＳＡに属していないセクタＳＣの消去回数を判断するとともに、そのうち、データの消去回数が最も少ないセクタを追加セクタＡＳＣとして選定する。
【００６７】
以上説明した本実施形態のマイクロコンピュータ１０によれば、以下の（６）に示される作用及び効果を更に得ることができる。
【００６８】
（６）フラッシュメモリ１４の全てのセクタＳＣ間での消去回数が均衡化されるため、フラッシュメモリ１４の寿命を延ばすことができる。
【００６９】
＜他の実施形態＞
なお、各実施形態は、以下の形態にて実施することもできる。
・各実施形態のＣＰＵ１１は、図１１に示されるデータ格納領域再編処理において、データ格納領域ＤＳＡからのセクタＳＣの除去を行わずに、セクタＳＣの追加のみを行ってもよい。例えば、データ格納領域ＤＳＡに、図１５（Ａ）に示されるようにデータが記憶されているとする。この場合、データ格納領域ＤＳＡのセクタＳＣには、全てのデータが無効となっているセクタが存在しない。そのため、セクタの除去が行われると、除去セクタＥＳＣに記憶されている有効なデータを追加セクタＡＳＣにコピーする処理をＣＰＵ１１が行わなければならない。このような場合、図１５（Ｂ）に示されるように、データ格納領域ＤＳＡに新たなセクタＡＳＣを追加する処理のみをＣＰＵ１１が行えば、有効なデータをコピーする処理をＣＰＵ１１が行う必要がなくなるため、ＣＰＵ１１の処理負担を軽減することができる。結果的に、マイクロコンピュータ１０のレスポンスを向上させることができる。
【００７０】
・各実施形態のＣＰＵ１１は、図１１に示されるデータ格納領域再編処理のステップＳ２２１の処理で除去セクタＥＳＣを選定する際、追加セクタＡＳＣよりも多い数のセクタをデータ格納領域ＤＳＡから除去してもよい。例えば、データ格納領域ＤＳＡに、図１６（Ａ）に示されるようにデータが記憶されているとする。この場合、データ格納領域ＤＳＡの先頭から２番目のセクタＳＣ、及び先頭から３番目のセクタＳＣでは、全てのデータが無効になっているため、これらのセクタＳＣを除去セクタＥＳＣに選定したとしても、ＣＰＵ１１は追加セクタＡＳＣに有効なデータをコピーする処理を実行する必要がない。よって、図１６（Ｂ）に示されるように、ＣＰＵ１１が追加セクタＡＳＣよりも多い２つのセクタＳＣを除去セクタＥＳＣに選定した場合でも、ＣＰＵ１１の処理負担が増加することがない。また、データ格納領域ＤＳＡの再編時に追加されるセクタの数と、除去されるセクタの数とが同数の場合と比較すると、データ格納領域ＤＳＡを小さくすることができる。これにより、フラッシュメモリ１４においてデータの検索を行う際、検索されるデータ量を少なくすることができるため、マイクロコンピュータ１０のレスポンスを向上させることができる。
【００７１】
・フラッシュメモリ１４には、例えば図１７に示されるような複数のセクタＳＣ（１）〜ＳＣ（Ｎ）のそれぞれの使用状態の情報が記憶された専用のセクタＳＣＥが設けられていてもよい。これにより、各セクタＳＣ（１）〜ＳＣ（Ｎ）の管理情報を一元化することができるため、マイクロコンピュータ１０のレスポンスを向上させることができる。また、図１７に示されるような複数のセクタＳＣ（１）〜ＳＣ（Ｎ）のそれぞれの使用状態の情報は、フラッシュメモリ１４とは別の記憶媒体、例えばバックアップＲＡＭやハードディスク等に記憶されていてもよい。
【００７２】
・ＣＰＵ１１は、図１１に示されるステップＳ２２７の処理を、データ格納領域再編処理とは別の処理として行ってもよい。要は、ＣＰＵ１１は、除去セクタに選定されたセクタが次回にデータ格納領域ＤＳＡに追加されるまでの期間に、このセクタに記憶されているデータを消去すればよい。
【００７３】
・マイクロコンピュータ１０が提供する手段及び／又は機能は、実体的な記憶装置に記憶されたソフトウェア及びそれを実行するコンピュータ、ソフトウェアのみ、ハードウェアのみ、あるいはそれらの組み合わせにより提供することができる。例えばマイクロコンピュータ１０がハードウェアである電子回路により提供される場合、それは多数の論理回路を含むデジタル回路、またはアナログ回路により提供することができる。
【００７４】
・各実施形態の構成は、フラッシュメモリ１４を備えるマイクロコンピュータ１０に限らず、任意の不揮発性メモリを備えるマイクロコンピュータに適用することが可能である。すなわち、フラッシュメモリ１４に代えて、任意の不揮発性メモリを用いることができる。この場合、フラッシュコントローラ１３に代えて、不揮発性メモリコントローラを用いることができる。また、フラッシュドライバソフトウェア１２０に代えて不揮発性メモリドライバソフトウェアを用いることができる。
【００７５】
・本発明は上記の具体例に限定されるものではない。すなわち、上記の具体例に、当業者が適宜設計変更を加えたものも、本発明の特徴を備えている限り、本発明の範囲に包含される。例えば、前述した各具体例が備える各要素及びその配置や条件等は、例示したものに限定されるわけではなく適宜変更することができる。また、前述した実施形態が備える各要素は、技術的に可能な限りにおいて組み合わせることができ、これらを組み合わせたものも本発明の特徴を含む限り本発明の範囲に包含される。
【符号の説明】
【００７６】
ＳＣ：セクタ
１０：マイクロコンピュータ
１１：ＣＰＵ（演算処理部）
１４：フラッシュメモリ（不揮発性メモリ）
【図１】
2017097404.tif 000003
【図２】
2017097404.tif 000004
【図３】
2017097404.tif 000005
【図４】
2017097404.tif 000006
【図５】
2017097404.tif 000007
【図６】
2017097404.tif 000008
【図７】
2017097404.tif 000009
【図８】
2017097404.tif 000010
【図９】
2017097404.tif 000011
【図１０】
2017097404.tif 000012
【図１１】
2017097404.tif 000013
【図１２】
2017097404.tif 000014
【図１３】
2017097404.tif 000015
【図１４】
2017097404.tif 000016
【図１５】
2017097404.tif 000017
【図１６】
2017097404.tif 000018
【図１７】
2017097404.tif 000019