(57)【要約】【課題】フラッシュメモリの２つのブロックに交互に保存データを書き込むことで保存データの記憶／更新を行うデータ記憶装置において、保存データの書き込みに要する時間を短くして、コンピュータの待ち時間を抑える。【解決手段】通常処理の実行時に、保存データの書き込み要求が発生すると(S110:YES)、書き込み要求の発生毎に更新される管理番号に基づき、フラッシュメモリの２つのブロックの中から、書き込み対象となるブロックを特定して(S120)、保存データを書き込み(S130〜S150)、保存データの書き込みが完了すると、フラッシュメモリのコントローラに対し、前回の保存データを記憶しているブロックの消去指令を出力することで、そのブロックを消去させる(S160)。この結果、書き込み要求発生後に書き込み対象ブロックを消去して書き込みを開始する従来装置に比べ、通常処理が中断される時間を短くできる。【選択図】図３
2009223435.tif 000002
【特許請求の範囲】
【請求項１】
コントローラを介してブロック単位で消去可能なフラッシュメモリを備えたコンピュータにおいて、前記フラッシュメモリの２つのブロックに交互に保存データを書き込むことで、保存データを更新するデータ記憶方法であって、
保存データの書き込み要求が発生すると、前記フラッシュメモリの２つのブロックの内、最新の保存データが格納されたブロックとは異なるブロックを特定して、該特定したブロックに保存データを書き込み、
該保存データの書き込みが終了すると、前記フラッシュメモリのコントローラに対し、今回保存データを書き込んだブロックとは異なるブロックの消去指令を出力して、当該ブロックを消去させることを特徴とするデータ記憶方法。
【請求項２】
前記フラッシュメモリの２つのブロックの何れかに保存データを書き込む度に、最新の保存データが格納されたブロックを特定するための管理情報を更新し、
前記保存データの書き込み要求に従い保存データを書き込む際には、前記管理情報に基づき、保存データを書き込むブロックを特定することを特徴とする請求項１に記載のデータ記憶方法。
【請求項３】
前記フラッシュメモリの２つのブロックの何れかに保存データを書き込む際には、保存データに加えて、保存データを反転させたミラーデータを書き込むことを特徴とする請求項１又は請求項２に記載のデータ記憶方法。
【請求項４】
コントローラを介してブロック単位で消去可能なフラッシュメモリを備えたコンピュータにおいて、前記フラッシュメモリの２つのブロックに交互に保存データを書き込むことで、保存データを更新するデータ記憶装置であって、
保存データの書き込み要求が発生すると、前記フラッシュメモリの２つのブロックの内、最新の保存データが格納されたブロックとは異なるブロックを特定して、該特定したブロックに保存データを書き込むデータ書き込み手段と、
該データ書き込み手段による保存データの書き込みが終了すると、前記フラッシュメモリのコントローラに対し、今回保存データを書き込んだブロックとは異なるブロックの消去指令を出力して、当該ブロックを消去させるブロック消去手段と、
を備えたことを特徴とするデータ記憶装置。
【請求項５】
前記フラッシュメモリの２つのブロックの内、最新の保存データが格納されたブロックを特定するための管理情報を記憶する記憶手段を備え、
前記データ書き込み手段は、前記記憶手段に記憶された管理情報に基づき、保存データを書き込むブロックを特定することを特徴とする請求項４に記載のデータ記憶装置。
【請求項６】
前記データ書き込み手段は、前記フラッシュメモリの２つのブロックの何れかに保存データを書き込む際には、保存データに加えて、保存データを反転させたミラーデータを書き込むことを特徴とする請求項４又は請求項５に記載のデータ記憶装置。
【請求項７】
コントローラを介してブロック単位で消去可能なフラッシュメモリを備えたコンピュータに、請求項４〜６の何れかに記載のデータ記憶装置におけるデータ書き込み手段及びブロック消去手段としての機能を実現させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータにおいて、保存データを、フラッシュメモリを用いて記憶／更新するのに好適なデータ記憶方法及び装置並びにプログラムに関する。
【背景技術】
【０００２】
フラッシュメモリは、データの書き換えが可能な不揮発性メモリであることから、コンピュータにおいて、データを保存するのに使用されている。
また、フラッシュメモリは、データの書き込み及び読み出しはバイト或いはワード単位で行うことができるものの、データの消去はチップ全体を複数に分割したブロック単位でしか行うことができないことから、フラッシュメモリへ保存データを書き込む際には、チップ全体或いはブロック単位で消去した後、保存データをバイト或いはワード単位で書き込むことになる。
【０００３】
このため、保存データを更新する際、例えば、フラッシュメモリの消去を行った直後或いはデータを書き込んでいるときに電源が遮断されると、更新前の保存データも最新の保存データも失われてしまうという問題があった。
【０００４】
そこで、従来、フラッシュメモリに保存データを書き込み、更新する際には、更新時の電源遮断等によって保存データが消滅するのを防止するために、フラッシュメモリの２つのブロックを利用し、シーケンシャル番号等を付与した最新の保存データを、各ブロックに交互に書き込むことが行われている（例えば、特許文献１等、参照）。
【０００５】
そして、この方法によれば、フラッシュメモリの２つのブロックに交互に保存データを書き込むことから、保存データの更新時に電源が遮断されても、フラッシュメモリには前回の保存データが必ず残ることになり、保存データが消滅するのを防止できる。
【特許文献１】特開平１０−１７７５２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかし、上記従来方法では、保存データの書き込み要求が発生すると、各ブロックに記憶されたデータに基づき、最新の保存データを書き込むべきブロックを特定して、そのブロックを消去し、その消去後のブロックに、最新の保存データを書き込むようにされている。
【０００７】
このため、上記従来方法では、保存データの書き込み要求が発生してから保存データの書き込みが完了するまでに時間がかかり、その間、コンピュータは、保存データの書き込み処理を待たされ次の処理に移れない、または書き込み前の消去待ち時間中に電源が途絶した場合に、最新保存データの記録に失敗する確率が高くなる、という問題があった。
【０００８】
本発明は、こうした問題に鑑みなされたものであり、フラッシュメモリの２つのブロックに交互に保存データを書き込むことで保存データの記憶／更新を行うデータ記憶方法及び装置において、保存データの書き込みに要する時間を短くして、コンピュータの待ち時間を抑えることを目的とする。
【課題を解決するための手段】
【０００９】
かかる目的を達成するためになされた請求項１に記載の発明は、コントローラを介してブロック単位で消去可能なフラッシュメモリを備えたコンピュータにおいて、フラッシュメモリの２つのブロックに交互に保存データを書き込むことで保存データを更新する、データ記憶方法に関する発明である。
【００１０】
そして、この請求項１に記載のデータ記憶方法では、コンピュータにおいて保存データの書き込み要求が発生すると、
１）フラッシュメモリの２つのブロックの内、最新の保存データが格納されたブロックとは異なるブロックを特定して、その特定したブロックに保存データを書き込み、
２）保存データの書き込みが終了すると、フラッシュメモリのコントローラに対し、今回保存データを書き込んだブロックとは異なるブロックの消去指令を出力して、当該ブロックを消去させる。
【００１１】
つまり、本発明方法では、従来方法のように、保存データの書き込み要求が発生してから、保存データを書き込むべきフラッシュメモリのブロックを消去するのではなく、保存データの書き込みが終了した直後に、フラッシュメモリのコントローラに消去指令を出力して、前回の保存データが書き込まれたブロックを消去させる。
【００１２】
このため、本発明方法によれば、保存データの更新時に、電源遮断等によって保存データが消滅するのを防止できるだけでなく、保存データの書き込み要求が発生してから書き込みが完了するまでのコンピュータの待ち時間を、フラッシュメモリの一つのブロックを消去するのに要する消去時間分だけ短くすることができる。
【００１３】
そして、この消去時間は、保存データを書き込むのに要する書き込み時間に比べて極めて長くなる(一般に数百ｍｓ以上）ことから、本発明方法によれば、コンピュータの待ち時間を短くして、コンピュータの処理速度を高めることができる。
【００１４】
よって、本発明方法は、自動車制御用のコンピュータ等、制御対象の動きに連動してリアルタイムで信頼性の高い演算処理を実行する必要のあるコンピュータにおいて、保存データを記憶／更新するのに好適なデータ記憶方法となり、この種のコンピュータの信頼性を向上することが可能となる。
【００１５】
ところで、本発明方法によれば、保存データの書き込み要求に従い保存データを書き込む際には、保存データを書き込むべきブロックを特定する必要がある。
そして、このブロックの特定は、従来のようにフラッシュメモリの２つのブロックからデータを読み出し、最新の保存データが記憶されていない方のブロックを選択するようにしてもよい。
【００１６】
しかし、このように、保存データを書き込む際にフラッシュメモリの２つのブロックからデータを読み出すようにすると、その読み出しに要する時間によって、コンピュータの待ち時間が長くなってしまう。
【００１７】
そこで、コンピュータの待ち時間をより短くするには、請求項２に記載のように、フラッシュメモリの２つのブロックの何れかに保存データを書き込む度に、最新の保存データが格納されたブロックを特定するための管理情報を更新し、保存データの書き込み要求に従い保存データを書き込む際には、その管理情報に基づき保存データを書き込むブロックを特定するようにするとよい。
【００１８】
つまり、このようにすれば、保存データの書き込み要求があったときに、フラッシュメモリの２つのブロックからデータを読み出すことなく、保存データを書き込むべきブロックを特定できることから、フラッシュメモリへの保存データの書き込みをより早く開始することができるようになり、保存データの書き込みに要する時間をより短くして、コンピュータの待ち時間を最小限に抑えることが可能となる。
【００１９】
一方、フラッシュメモリに保存データを書き込む際には、保存データだけを書き込むようにしてもよく、或いは、従来のように保存データにシーケンシャル番号等の管理情報を付与したものを書き込むようにしてもよいが、より好ましくは、請求項３に記載のように、保存データに加えて、保存データを反転させたミラーデータを書き込むようにするとよい。
【００２０】
つまり、フラッシュメモリに保存データ（或いは管理情報を付与した保存データ）だけを記憶するようにした場合、その保存データをフラッシュメモリから読み出し、使用する場合に、保存データが正常か否かを判断したり、保存データを修正したりすることはできない。
【００２１】
しかし、請求項３に記載のように、保存データの更新時にフラッシュメモリに保存データとミラーデータとを書き込むようにすれば、その更新時（書き込み／消去処理中）に電源が途絶して、フラッシュメモリの２つのブロックに正常な保存データと異常な保存データとが残ったとしても、所謂ミラー照合機能を用いることで、消去されるアドレスの順序や、書き込みされるデータの順序に依存することなく、正常な保存データを識別することができる。
【００２２】
また、何らかの原因で保存データにビット化け等の異常が生じた場合、ミラー照合機能によって保存データの異常を検出できるだけでなく、異常箇所を特定して、保存データを修復することもできる。
【００２３】
よって、請求項３に記載のデータ記憶方法によれば、フラッシュメモリに保存されたデータを使って各種演算処理を行うコンピュータにおいて、演算処理の信頼性を高めることができる。
【００２４】
次に、請求項４に記載の発明は、コントローラを介してブロック単位で消去可能なフラッシュメモリを備えたコンピュータにおいて、フラッシュメモリの２つのブロックに交互に保存データを書き込むことで保存データを更新する、データ記憶装置に関する発明である。
【００２５】
そして、この請求項４に記載のデータ記憶装置では、コンピュータにおいて保存データの書き込み要求が発生すると、データ書き込み手段が、フラッシュメモリの２つのブロックの内、最新の保存データが格納されたブロックとは異なるブロックを特定して、その特定したブロックに保存データを書き込み、このデータ書き込み手段による保存データの書き込みが終了すると、ブロック消去手段が、フラッシュメモリのコントローラに対し、今回保存データを書き込んだブロックとは異なるブロックの消去指令を出力して、当該ブロックを消去させる。
【００２６】
従って、請求項４に記載のデータ記憶装置によれば、請求項１に記載のデータ記憶方法に従い、フラッシュメモリに格納される保存データを更新することができ、請求項１と同様の効果を得ることができる。
【００２７】
また、請求項５に記載のデータ記憶装置には、フラッシュメモリの２つのブロックの内、最新の保存データが格納されたブロックを特定するための管理情報を記憶する記憶手段が設けられており、データ書き込み手段は、記憶手段に記憶された管理情報に基づき、保存データを書き込むブロックを特定する。
【００２８】
従って、請求項５に記載のデータ記憶装置によれば、請求項２に記載のデータ記憶方法に従い、フラッシュメモリに格納される保存データを更新することができ、請求項２と同様の効果を得ることができる。
【００２９】
また次に、請求項６に記載のデータ記憶装置においては、データ書き込み手段が、フラッシュメモリの２つのブロックの何れかに保存データを書き込む際には、その保存データに異常チェック用のデータを付与したデータを書き込む。
【００３０】
このため、請求項６に記載のデータ記憶装置によれば、請求項３に記載のデータ記憶方法に従い、フラッシュメモリに格納される保存データを更新することができ、請求項３と同様の効果を得ることができる。
【００３１】
一方、請求項７に記載の発明は、コンピュータのプログラムに関する発明であり、このプログラムによれば、コントローラを介してブロック単位で消去可能なフラッシュメモリを備えたコンピュータに、請求項４〜６の何れかに記載のデータ記憶装置におけるデータ書き込み手段及びブロック消去手段としての機能を実現させることができる。
【００３２】
従って、このプログラムを使用すれば、コンピュータに本発明方法を実現させて、上記と同様の効果を得ることができる。
【発明を実施するための最良の形態】
【００３３】
以下に本発明の実施形態を図面と共に説明する。
図１は本発明が適用された実施形態のコンピュータの構成を表すブロック図である。
本実施形態のコンピュータは、エンジン等の車載装置を制御するために自動車に搭載される電子制御装置（ＥＣＵ）に組み込まれ、各種制御用の演算処理を行うマイクロコンピュータであり、ＣＰＵ２、フラッシュメモリ１０、ＲＡＭ４、各種信号の入出力部（Ｉ／Ｏ）、及び、これらを接続するバス８を中心に構成されている。
【００３４】
フラッシュメモリ１０は、ＣＰＵ２に制御用の各種演算処理を実行させるためのホストプログラムや、そのホストプログラムを実行するのに必要なデータ（保存データ）を保存するのに用いられるものであり、ホストプログラムが格納された第１フラッシュメモリ領域１２と、保存データの記憶及び更新に用いられる第２フラッシュメモリ領域１４とを備える。
【００３５】
また、フラッシュメモリ１０には、上記各フラッシュメモリ領域１２，１４を各々独立して制御するためのコントローラ１６が設けられている。このため、ＣＰＵ２は、第１フラッシュメモリ領域１２からホストプログラムを読み出し、実行しつつ、コントローラ１６を介して、第２フラッシュメモリ領域１４からのデータの読み出し、書き込み、消去ができる。
【００３６】
また、第２フラッシュメモリ領域１４は、複数（図では４つ）のブロックに分割されており、本実施形態では、このうちの２ブロック（ブロック０，ブロック１）を使って保存データの記憶／更新が行われる。
【００３７】
すなわち、ＣＰＵ２は、ホストプログラムの実行中に、保存データの書き込み要求が発生すると、図２に示すように、保存データと、保存データの書き込み管理番号とを、ＲＡＭ４の所定のデータバッファ領域に書き込む。
【００３８】
また、ＣＰＵ２は、ホストプログラムの実行中には、車両制御用の通常処理とは別に、第２フラッシュメモリ領域１４内の保存データを更新するための書き込み／消去制御処理を並行に実行する。
【００３９】
そして、この書き込み／消去制御処理では、通常処理にてＲＡＭ４のデータバッファ領域に保存データ及び書き込み管理番号が書き込まれると、これら各データを反転させた反転データ（ミラーデータ）を生成し、その生成したミラーデータと、元の保存データ及び書き込み管理番号とを、第２フラッシュメモリ領域１４のブロック０、１に交互に書き込む。
【００４０】
なお、ＣＰＵ２が第２フラッシュメモリ領域１４に保存データを書き込むときや、第２フラッシュメモリ領域１４から保存データを読み出すときには、対象となるブロックを特定する必要があるが、この特定には、ＲＡＭ４のデータバッファ領域に記憶されている書き込み管理番号が使用される。
【００４１】
以下、このように、ＣＰＵ２において保存データの更新のために実行される書き込み／消去制御処理を、図３のフローチャートに沿って詳しく説明する。
図３に示すように、書き込み／消去制御処理では、まずＳ１１０（Ｓはステップを表す）にて、通常処理で書き込み要求が発生してＲＡＭ４の所定のデータバッファ領域に保存データが書き込まれたか否かを判断することにより、通常処理で書き込み要求が発生するのを待つ。
【００４２】
そして、通常処理で書き込み要求が発生すると、Ｓ１２０に移行して、ＲＡＭ４のデータバッファ領域に保存データと共に書き込まれた書き込み管理番号から、今回保存データを書き込むべき第２フラッシュメモリ領域１４のブロック（書き込み対象ブロック）を特定する。
【００４３】
つまり、本実施形態において、書き込み管理番号は、通常処理で書き込み要求が発生する度にカウントアップされるカウント値であり、Ｓ１２０では、この書き込み管理番号が奇数か偶数かによって、書き込み対象ブロックを特定する。
【００４４】
次に、Ｓ１３０では、Ｓ１２０にて特定した書き込み対象ブロックが消去されているか否かを判断し、消去されていなければ、この処理を繰り返し実行することにより、書き込み対象ブロックが消去されるのを待ち、書き込み対象ブロックが消去されていれば、Ｓ１４０に移行する。
【００４５】
Ｓ１４０では、ＲＡＭ４のデータバッファ領域に書き込まれた保存データと書き込み管理番号とから、これら各データの反転データ（保存データの反転データ及び書き込み管理番号の反転データ）を生成し、フラッシュメモリ１０のコントローラ１６に対し書き込み指令を出力することで、保存データ、書き込み管理番号、保存データの反転データ、及び、書き込み管理番号の反転データを、書き込み対象ブロックへ書き込む。
【００４６】
そして、続くＳ１５０では、Ｓ１４０の処理によって書き込み対象ブロックへ保存データ等の全データが書き込まれたか否かを判断することにより、各データが書き込み対象ブロックに書き込まれるのを待ち、各データの書き込みが完了すると、Ｓ１６０に移行して、フラッシュメモリ１０のコントローラ１６に対し、前回の保存データを記憶しているブロック（書き込み対象ブロックとは異なるブロック）の消去指令を出力し、当該書き込み／消去制御処理を一旦終了して、再度Ｓ１１０に移行する。
【００４７】
このように、本実施形態では、書き込み／消去制御処理にて、書き込み対象ブロック（換言すれば消去済みブロック）への保存データの書き込みが完了した直後に、フラッシュメモリ１０のコントローラ１６に対し、前回の保存データを記憶しているブロックの消去指令を出力して、次回保存データの書き込み要求が発生したときに書き込み対象となるブロックを消去させる。
【００４８】
また、フラッシュメモリ１０のコントローラ１６は、ＣＰＵ２から消去指令を受けると、その消去指令に対応したブロック（ブロック０又は１）を消去することから、ＣＰＵ２は、Ｓ１６０にてフラッシュメモリ１０のコントローラ１６に消去指令を出力してから、Ｓ１１０にて書き込み要求の発生が判定されるまでの間は、書き込み要求の待機中となり、通常処理を連続的に実行できる。
【００４９】
このため、本実施形態によれば、図４に示すように、通常処理の実行中に保存データの書き込み要求が発生すると、書き込み対象ブロックへの保存データの書き込みにより、通常処理の実行が中断されるものの、書き込み要求の発生時には、通常、書き込み対象ブロックが消去されているので、通常処理の中断による待機時間は、従来よりも極めて短くなり、通常処理を高速且つ円滑に実行することができるようになる。
【００５０】
つまり、フラッシュメモリに保存データを書き込む従来のデータ記憶方法では、図５に示すように、書き込み要求が発生すると、まず書き込み対象ブロックを特定して、そのブロックを消去し、その後、その消去した書き込み対象ブロックに保存データを書き込むことから、通常処理が長時間中断されたり、保存データの書き込み完了までに長い時間がかかるなどし、各種データをリアルタイムで処理する必要のある制御用コンピュータでは、採用することができなかった。
【００５１】
これに対し、本実施形態では、フラッシュメモリへの保存データの書き込みと、書き込み対象ブロックの消去との順番を入れ換え、保存データの書き込みにより通常処理が中断または待たされる時間を最小限に抑えることができるようにしたので、高速処理が必要な制御用コンピュータでも、フラッシュメモリを使って保存データを更新できるようになる。
【００５２】
また、本実施形態では、保存データの書き込み要求が発生した際、書き込み管理番号に基づき書き込み対象ブロックを特定するようにされているので、書き込み対象ブロックを特定するために、第２フラッシュメモリ領域１４の２つのブロック（ブロック０，１）からデータを読み出す必要はない。
【００５３】
よって、本実施形態によれば、保存データの書き込み要求が発生してから、書き込み対象ブロックを特定するのに要する時間を短縮することもでき、これによって、通常処理が中断される時間をより短くすることができる。
【００５４】
また、本実施形態では、第２フラッシュメモリ領域１４の各ブロック（ブロック０、１）に保存データを書き込む際には、保存データだけでなく、書き込み管理番号、保存データの反転データ、及び、書き込み管理番号の反転データについても、一緒に格納するようにされている。
【００５５】
このため、通常処理の実行時に、保存データを読み出た場合、所謂ミラー照合機能によって、読み出した保存データの正否を判断したり、保存データを修正したりすることができる。よって、本実施形態によれば、コンピュータによる自動車制御の信頼性を向上することができる。
【００５６】
なお、本実施形態においては、ＣＰＵ２において通常処理とは別に実行される書き込み／消去制御処理によって、本発明のデータ記憶方法及び装置としての機能が実現され、このうち、Ｓ１１０〜Ｓ１５０の処理が、本発明（請求項４〜６）のデータ書き込み手段に相当し、Ｓ１６０の処理が、本発明（請求項４〜６）のブロック消去手段に相当する。
【００５７】
また、最新の保存データと共に書き込み管理番号が格納される、ＲＡＭ４のデータバッファ領域が、本発明（請求項５）の記憶手段に相当し、ＣＰＵ２に対し通常処理とは別に書き込み／消去制御処理を実行させるために第１フラッシュメモリ領域１２に格納されるホストプログラムの一部が、本発明（請求項７）のプログラムに相当する。
【００５８】
以上、本発明の一実施形態について説明したが、本発明は上記実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内にて、種々の態様をとることができる。
例えば、上記実施形態では、保存データを記憶するのに使用される第２フラッシュメモリ領域１４は、通常処理や書き込み／消去制御処理を実行するためのホストプログラムが格納される第１フラッシュメモリ領域１２と一緒に、一つのフラッシュメモリ１０内に組み込まれているものとして説明したが、本発明は、こうした２バンク分割タイプのフラッシュメモリを搭載したコンピュータに適用できるのは勿論のこと、保存データ格納用として、外付けのフラッシュメモリを備えたコンピュータであっても、上記実施形態と同様に適用できる。
【００５９】
また、上記実施形態では、自動車に搭載される電子制御装置（ＥＣＵ）に組み込まれて、各種制御用の演算処理を行うマイクロコンピュータに本発明を適用した場合について説明したが、本発明は、自動車以外の各種電子機器に組み込まれて制御用の演算処理を行うマイクロコンピュータであっても、或いは、各種情報処理用のコンピュータ（パーソナルコンピュータ、サーバ用コンピュータ、ワークステーション等）であっても、上記実施形態と同様に適用できる。
【図面の簡単な説明】
【００６０】
【図１】実施形態のコンピュータの構成を表すブロック図である。
【図２】ホストプログラムの実行に伴う保存データの移動及びデータ構造の変化を説明する説明図である。
【図３】ＣＰＵにて通常処理とは別に実行される書き込み／消去制御処理を表すフローチャートである。
【図４】実施形態の保存データの書き込み手順を説明する説明図である。
【図５】従来の保存データの書き込み手順を説明する説明図である。
【符号の説明】
【００６１】
２…ＣＰＵ、４…ＲＡＭ、６…入出力部（Ｉ／Ｏ）、８…バス、１０…フラッシュメモリ、１２…第１フラッシュメモリ領域、１４…第２フラッシュメモリ領域、１６…コントローラ。
【図１】
2009223435.tif 000003
【図２】
2009223435.tif 000004
【図３】
2009223435.tif 000005
【図４】
2009223435.tif 000006
【図５】
2009223435.tif 000007