(57)【特許請求の範囲】
【請求項１】
あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する不揮発性の消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なうデータ記憶方法であって、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータおよび前記第１の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第１の消去ブロックバッファ書き込みステップと、
前記第１の消去ブロックバッファ書き込みステップの後、前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記第２の書き込みデータを前記書き込みバッファに書き込む第１の書き込みバッファ書き込みステップと、
前記第１の書き込みバッファ書き込みステップの後、前記メモリの第３の消去単位領域に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して、前記消去ブロックバッファのデータを前記メモリの第１の消去単位領域に書き込む第１のメモリ書き込みステップと、
前記第３の書き込みデータおよび前記第３の消去単位領域内の不変データを前記消去ブロックバッファに書き込む第２の消去ブロックバッファ書き込みステップとを有することを特徴とするデータ記憶方法。
【請求項２】
前記第２の書き込みデータの書き込み先である前記メモリ内の位置を規定する書き込み要求領域と、前記第３の書き込みデータの書き込み先である前記メモリ内の位置を規定する書き込み要求領域とを比較する比較ステップとを有し、
前記第２の書き込みバッファ書き込みステップは、前記第３の書き込みデータの書き込み要求領域が前記第２の書き込みデータの書き込み要求領域に含まれる場合に、前記第２の書き込みデータが書き込まれた前記書き込みバッファの領域に前記第３の書き込みデータを上書きすることを特徴とする請求項１記載のデータ記憶方法。
【請求項３】
前記第１の書き込みバッファ書き込みステップの後、前記第２の書き込みデータの書き込み先である消去単位領域と、前記第３の書き込みデータの書き込み先である消去単位領域とを比較する第１の比較ステップと、
前記第１の比較ステップの比較結果が、前記第３の書き込みデータの書き込み先である消去単位領域が前記第２の書き込みデータの書き込み先である消去単位領域と異なる場合に、前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域と前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域とを比較する第２の比較ステップと、
前記第２の比較ステップの比較結果が、前記第３の書き込みデータの書き込みバッファの書き込み領域が前記第２の書き込みデータの書き込みバッファ書き込み領域と異なる場合に、前記書き込みバッファに空き領域があるか否かを判定するステップとを有し、
前記書き込みバッファに空き領域がない場合に、前記メモリ書き込みステップ及び前記第２の消去ブロックバッファ書き込みステップとを実行することを特徴とする請求項１記載のデータ記憶方法。
【請求項４】
あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なうデータ記憶方法であって、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータおよび前記第１の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第１の消去ブロックバッファ書き込みステップと、
前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記第１の消去ブロックバッファ書き込みステップの後、前記第２の書き込みデータを前記書き込みバッファに記憶する第１の書き込みバッファ書き込みステップと、
前記第１の書き込みバッファ書き込みステップの後、前記メモリの第２の消去単位領域に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して、前記消去ブロックバッファに書き込まれた前記第１の書き込みデータ及び前記第１の消去単位領域内の不変データとを前記第１の消去単位領域に書き込むメモリ書き込みステップと、
前記メモリ書き込みステップの後、前記第３の書き込みデータと前記書き込みバッファに記憶されている第２の書き込みデータ及び前記第２の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第２の消去ブロックバッファ書き込みステップとを有することを特徴とするデータ記憶方法。
【請求項５】
前記第１の書き込みバッファ書き込みステップの後、前記第２の書き込みデータの書き込み先である消去単位領域と、前記第３の書き込みデータの書き込み先である消去単位領域とを比較する第１の比較ステップと、
前記第１の比較ステップの比較結果が、前記第３の書き込みデータの書き込み先である消去単位領域が前記第２の書き込みデータの書き込み先である消去単位領域と異なる場合に、前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域と前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域とを比較する第２の比較ステップと、
前記第２の比較ステップの比較結果が、前記第３の書き込みデータの書き込みバッファの書き込み領域が前記第２の書き込みデータの書き込みバッファ書き込み領域と異なる場合に、前記第２の書き込みデータの消去単位番号と前記第３の書き込みデータの消去単位番号とを比較する第３の比較ステップと、
前記第３の比較ステップの比較結果が、前記第３の書き込みデータの消去単位番号が前記第２の書き込みデータの消去単位番号とが等しい場合に、前記メモリ書き込みステップ及び前記第２の消去ブロックバッファ書き込みステップとを実行することを特徴とする請求項４記載のデータ記憶方法。
【請求項６】
あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なうデータ記憶方法であって、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータおよび前記第１の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第１の消去ブロックバッファ書き込みステップと、
前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記第１の消去ブロックバッファ書き込みステップの後、前記第２の書き込みデータを前記書き込みバッファに記憶する第１の書き込みバッファ書き込みステップと、
前記第１の書き込みバッファ書き込みステップの後、前記メモリの第２の消去単位領域に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して、前記消去ブロックバッファに書き込まれた前記第１の書き込みデータ及び前記第１の消去単位領域内の不変データとを前記第１の消去単位領域に書き込むメモリ書き込みステップと、
前記メモリ書き込みステップの後、前記書き込みバッファに記憶されているデータの使用頻度に基づいて該データを消去ブロックバッファへ書き込む第３の消去ブロックバッファ書き込みステップとを有することを特徴とするデータ記憶方法。
【請求項７】
前記第１の書き込みバッファ書き込みステップの後、前記第２の書き込みデータの書き込み先である消去単位領域と、前記第３の書き込みデータの書き込み先である消去単位領域とを比較する第１の比較ステップと、
前記第１の比較ステップの比較結果が、前記第３の書き込みデータの書き込み先である消去単位領域が前記第２の書き込みデータの書き込み先である消去単位領域と異なる場合に、前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域と前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域とを比較する第２の比較ステップと、
前記第２の比較ステップの比較結果が、前記第３の書き込みデータの書き込みバッファの書き込み領域が前記第２の書き込みデータの書き込みバッファ書き込み領域と異なる場合に、前記第２の書き込みデータの消去単位番号と前記第３の書き込みデータの消去単位番号とを比較する第３の比較ステップと、
前記第３の比較ステップの比較結果が、前記第３の書き込みデータの消去単位番号が前記第２の書き込みデータの消去単位番号と異なる場合に、前記書き込みバッファに空き領域があるか否かを判定するステップと、
前記書き込みバッファに空き領域がない場合に前記メモリ書き込みステップ及び前記第３の消去ブロックバッファ書き込みステップとを実行することを特徴とする請求項６記載のデータ記憶方法。
【請求項８】
あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なう情報処理装置であって、
前記メモリへのデータ書き込みを制御する書き込み制御手段と、
前記メモリの消去領域のデータを前記消去ブロックバッファに待避させる待避手段と、
前記メモリへに書き込みデータの書き込みを行う書き込み手段と、
を備え、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記書き込み制御手段は前記第１の書き込みデータを前記消去ブロックバッファに書き込み、前記待避手段は前記第１の消去単位領域内の不変データを前記消去ブロックバッファに書き込み、
前記第１の書き込みデータおよび前記第１の消去単位内の不変データの前記消去ブロックバッファへの書き込み完了後、前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記書き込み制御手段は前記第２の書き込みデータを前記書き込みバッファに書き込み、
前記第２の書き込みデータの前記書き込みバッファへの書き込み完了後、前記メモリの第３の消去単位領域に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して前記書き込みバッファに空き領域がない場合に、前記書き込み手段は前記第３の書き込みデータを前記消去ブロックバッファに書き込み、前記待避手段は前記第３の消去単位領域内の不変データを前記消去ブロックバッファに書き込むことを特徴とする情報処理装置。
【請求項９】
あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有する第１のメモリと、前記消去単位領域に記憶されたデータを前記消去単位で消去する消去手段とを有する情報処理装置において、
前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファ、不変データを記憶することなく書き込みデータを記憶する書き込みバッファ、前記消去ブロックバッファに記憶されるデータを処理することにより得られる第１データチェック値の保持領域、前記書き込みバッファに書き込まれたデータを処理することにより得られる第２データチェック値の保持領域を備え、任意のデータ単位でデータの書き込みが可能な不揮発性の第２のメモリと、
第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対して当該第１の書き込みデータを前記消去ブロックバッファに書き込み、第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して当該第２の書き込みデータを前記書き込みバッファに書き込み、前記第１のデータチェック値および前記第２のデータチェック値を前記第２のメモリに書き込む書き込み制御手段と、
前記第１の書き込み要求に対し、前記第１の消去単位領域内の不変データを前記消去ブロックバッファに書き込む待避手段と、
前記消去ブロックバッファに書き込まれた前記第１の書き込みデータおよび前記不変データを前記消去手段によって消去された前記第１の消去単位領域に書き込むメモリ書き込み手段と、
前記情報処理装置の復旧時に、前記第２のメモリに書き込まれた前記第１のデータチェック値および前記第２のデータチェック値に基づいて復旧処理を行うことを特徴とする復旧手段とを備えたことを特徴とする情報処理装置。
【請求項１０】
前記復旧手段は、前記第１のデータチェック値に基づいて前記消去ブロックバッファに記憶されたデータが正しいと判断した場合に、前記消去ブロックバッファに記憶されたデータを前記第１の消去単位領域に書き込むことを前記メモリ書き込み手段に指示し、前記第２のデータチェック値に基づいて前記書き込みバッファに記憶されたデータが正しいと判断した場合に、前記書き込みバッファに記憶された前記第２の書き込みデータを前記消去ブロックバッファに書き込むことを前記書き込み制御手段に指示し、前記第２の消去単位領域の不変データを前記消去ブロックバッファに書き込むことを前記待避手段に指示することを特徴とする請求項９記載の情報処理装置。
【請求項１１】
消去単位番号保持領域を備え、前記第２のメモリよりもデータの読み出しが高速な第３のメモリを有し、
前記書き込み制御手段は、前記消去単位領域を特定する情報を前記第２のメモリの消去単位番号保持領域と前記第３のメモリの消去単位番号保持領域双方に書き込むようにし、
前記消去単位領域を特定する情報を参照する際には、前記第３のメモリの消去単位番号保持領域からデータを読み出すことを特徴とする請求項９記載の情報処理装置。
【請求項１２】
あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有する第１のメモリと、前記消去単位領域に記憶されたデータを前記消去単位で消去する消去手段とを有し前記消去単位領域に記憶されたデータを第１の書き込みデータに書き換える情報処理装置において、
前記第１の書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを備え、任意のデータ単位でデータの書き込みが可能な不揮発性の第２のメモリと、
第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータを前記消去ブロックバッファに書き込む消去ブロックバッファ書き込み手段と、
前記第１の書き込み要求に対し、前記第１の消去単位領域内の不変データを前記消去ブロックバッファに書き込む待避手段と、
前記第１の書き込み要求以外の複数の書き込み要求に対し、当該複数の書き込みデータを前記書き込みバッファに書き込む書き込みバッファ書き込み手段と、
前記消去ブロックバッファ書き込み手段に書き込まれた前記第１の書き込みデータおよび前記不変データを前記第１の消去単位領域に書き込むメモリ書き込み手段と、
前記書き込みバッファ内の複数の書き込みデータについて、書き込み要求がされた消去単位領域ごとにそのデータ量を計算し、この計算結果に基づいて同一の消去単位領域に書き込む書き込みデータすべてを前記消去ブロックバッファに移動させるデータ移動手段とを有し、
前記待避手段は前記消去ブロックバッファに移動された書き込みデータに対応する消去単位領域内の不変データを前記消去ブロックバッファに書き込むことを特徴とする情報処理装置。
【請求項１３】
前記データ移動手段は、前記書き込みバッファ内の書き込みデータの内、同一の消去単位領域に書き込み要求がなされた書き込みデータのデータ量が所定量よりも少なく、当該書き込みデータの数が所定数よりも多い場合に、当該書き込みデータすべてを前記消去ブロックバッファに移動させることを特徴とする請求項１２記載の情報処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、あらかじめ定められた消去単位での消去および書き込みがなされる複数の消去単位領域を有するメモリ、例えばフラッシュメモリを使用する情報処理装置に関するものである。
【０００２】
【従来の技術】
フラッシュメモリは、電気的に消去・書き込みが可能な半導体メモリであり、電源を供給しなくても記憶内容を保持できるという特徴がある。フラッシュメモリは、特に産業用コンピュータにおいて、ハードディスクに代わる記録媒体として使用されることが多い。
しかし、フラッシュメモリにおいては、新たなデータを直接上書きすることができない。つまり、フラッシュメモリ上のデータの書き換えを行なうには、書き込みの前にまず、６４Ｋなどといった消去単位を、一旦、一括して消去しなければならない。消去単位を消去した後、消去した消去単位全体を新たに書き込むことによりデータの書き換えを行なう。
【０００３】
特に、大容量・高密度のフラッシュメモリは、その構造上、一般に消去単位が書き換え単位に比べ大きい。従って、書き換えデータが消去単位よりも容量の小さいことが多くなるが、このようなデータを書き換える場合でも、書き換えないデータ部分も含めた消去単位全体を一旦消去し、書き換えないデータ部分も、もう一度フラッシュメモリに書き込まなくてはならない。
このための書き換え方式の技術として、特開平５-２３３４７８がある。図１８は、この従来技術の回路の概略を示す構成図である。図１８を用いて動作を説明する。
【０００４】
ＦＲＡＭ４のデータの書き換え動作について説明する。ＳＲＡＭ３上に、ＦＲＡＭ４の書き換え情報をダウンロードする。ＦＲＡＭ４上における書き換えないエリアの情報を、レジスタ５にコピーし、ＥＰＲＯＭ２内のＦＲＡＭクリアプログラムによって、ＦＲＡＭ４の内容を全消去する。そして、ＳＲＡＭ３上にダウンロードした書き換え情報をＦＲＡＭ４にコピーし、さらに、レジスタ５に待避しておいた情報をＦＲＡＭ４上の元の書き換えないエリアにコピーする。
【０００５】
【発明が解決しようとする課題】
しかし、上記従来技術においては、フラッシュメモリの書き換え時に情報を待避する領域であるレジスタ５として揮発性のメモリを使用すると、消去後に装置への電源供給が断たれた等の場合には、書き換えを行なう領域のみならず、書き換えを行なわない領域のデータまでもが失われてしまい、信頼性を低下させるという問題があった。
又、このようにレジスタに記録されたデータが消失することを防ぐためには、レジスタに一旦記録されたデータは、すぐにフラッシュメモリに書き込まなくてはならなかった。そのため、動作上、フラッシュメモリの書き換え毎にフラッシュメモリの消去を行う必要があり、結果として、書き換えの回数と同じ回数だけの消去回数が必要であった。一方、フラッシュメモリには、消去可能な回数に制限（一般に１０万回程度）があり、できるだけ消去回数を減らすことも必要であるが、上記従来技術においては、徒にフラッシュメモリの消去回数を増やすことになり、その寿命を短縮させる原因となっていた。
【０００６】
この発明は、上記のような問題を解決するためになされたもので、フラッシュメモリのデータを書き換える場合に、メモリのデータが容易に消去することなく、フラッシュメモリへのデータ書き込み時の信頼性を向上させた情報処理装置を提供することを第１の目的とする。
又、本発明は、フラッシュメモリの消去回数への制限の課題に対し、簡易な構造で、かつ信頼性を維持しつつ、フラッシュメモリの消去回数を削減することにより、フラッシュメモリの劣化を低減することのできる情報処理装置を提供することを第２の目的とする。
【０００７】
【課題を解決するための手段】
【０００８】
この発明におけるデータ記憶方法は、あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する不揮発性の消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なうデータ記憶方法であって、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータおよび前記第１の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第１の消去ブロックバッファ書き込みステップと、
前記第１の消去ブロックバッファ書き込みステップの後、前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記第２の書き込みデータを前記書き込みバッファに書き込む第１の書き込みバッファ書き込みステップと、
前記第１の書き込みバッファ書き込みステップの後、前記メモリの第３の消去単位領域に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して、前記消去ブロックバッファのデータを前記メモリの第１の消去単位領域に書き込む第１のメモリ書き込みステップと、
前記第３の書き込みデータおよび前記第３の消去単位領域内の不変データを前記消去ブロックバッファに書き込む第２の消去ブロックバッファ書き込みステップとを有するものである。この発明は一例として実施の形態４（図１０）に記載されている。
【０００９】
また、前記第２の書き込みデータの書き込み先である前記メモリ内の位置を規定する書き込み要求領域と、前記第３の書き込みデータの書き込み先である前記メモリ内の位置を規定する書き込み要求領域とを比較する比較ステップとを有し、前記第２の書き込みバッファ書き込みステップは、前記第３の書き込みデータの書き込み要求領域が前記第２の書き込みデータの書き込み要求領域に含まれる場合に、前記第２の書き込みデータが書き込まれた前記書き込みバッファの領域に前記第３の書き込みデータを上書きするものである。この発明は一例として実施の形態４（図１０）に記載されている。
【００１４】
また、前記第１の書き込みバッファ書き込みステップの後、前記第２の書き込みデータの書き込み先である消去単位領域と、前記第３の書き込みデータの書き込み先である消去単位領域とを比較する第１の比較ステップと、
前記第１の比較ステップの比較結果が、前記第３の書き込みデータの書き込み先である消去単位領域が前記第２の書き込みデータの書き込み先である消去単位領域と異なる場合に、前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域と前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域とを比較する第２の比較ステップと、
前記第２の比較ステップの比較結果が、前記第３の書き込みデータの書き込みバッファの書き込み領域が前記第２の書き込みデータの書き込みバッファ書き込み領域と異なる場合に、前記書き込みバッファに空き領域があるか否かを判定するステップとを有し、
前記書き込みバッファに空き領域がない場合に、前記メモリ書き込みステップ及び前記第２の消去ブロックバッファ書き込みステップとを実行するものである。この発明は一例として実施の形態４（図１０）に記載されている。
【００１０】
この発明におけるデータ記憶方法は、あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なうデータ記憶方法であって、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータおよび前記第１の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第１の消去ブロックバッファ書き込みステップと、
前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記第１の消去ブロックバッファ書き込みステップの後、前記第２の書き込みデータを前記書き込みバッファに記憶する第１の書き込みバッファ書き込みステップと、
前記第１の書き込みバッファ書き込みステップの後、前記メモリの第２の消去単位領域に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して、前記消去ブロックバッファに書き込まれた前記第１の書き込みデータ及び前記第１の消去単位領域内の不変データとを前記第１の消去単位領域に書き込むメモリ書き込みステップと、
前記メモリ書き込みステップの後、前記第３の書き込みデータと前記書き込みバッファに記憶されている第２の書き込みデータ及び前記第２の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第２の消去ブロックバッファ書き込みステップとを有するものである。この発明は一例として実施の形態５（図１３、１４）に記載されている。
【００１１】
また、前記第１の書き込みバッファ書き込みステップの後、前記第２の書き込みデータの書き込み先である消去単位領域と、前記第３の書き込みデータの書き込み先である消去単位領域とを比較する第１の比較ステップと、
前記第１の比較ステップの比較結果が、前記第３の書き込みデータの書き込み先である消去単位領域が前記第２の書き込みデータの書き込み先である消去単位領域と異なる場合に、前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域と前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域とを比較する第２の比較ステップと、
前記第２の比較ステップの比較結果が、前記第３の書き込みデータの書き込みバッファの書き込み領域が前記第２の書き込みデータの書き込みバッファ書き込み領域と異なる場合に、前記第２の書き込みデータの消去単位番号と前記第３の書き込みデータの消去単位番号とを比較する第３の比較ステップと、
前記第３の比較ステップの比較結果が、前記第３の書き込みデータの消去単位番号が前記第２の書き込みデータの消去単位番号とが等しい場合に、前記メモリ書き込みステップ及び前記第２の消去ブロックバッファ書き込みステップとを実行するものである。この発明は一例として実施の形態５（図１３、１４）に記載されている。
【００１６】
この発明における情報処理装置は、あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なうデータ記憶方法であって、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータおよび前記第１の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第１の消去ブロックバッファ書き込みステップと、
前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記第１の消去ブロックバッファ書き込みステップの後、前記第２の書き込みデータを前記書き込みバッファに記憶する第１の書き込みバッファ書き込みステップと、
前記第１の書き込みバッファ書き込みステップの後、前記メモリの第２の消去単位領域に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して、前記消去ブロックバッファに書き込まれた前記第１の書き込みデータ及び前記第１の消去単位領域内の不変データとを前記第１の消去単位領域に書き込むメモリ書き込みステップと、
前記メモリ書き込みステップの後、前記書き込みバッファに記憶されているデータの使用頻度に基づいて該データを消去ブロックバッファへ書き込む第３の消去ブロックバッファ書き込みステップとを有するものである。この発明は一例として実施の形態６（図１６、１７）に記載されている。
【００１６】
また、前記第１の書き込みバッファ書き込みステップの後、前記第２の書き込みデータの書き込み先である消去単位領域と、前記第３の書き込みデータの書き込み先である消去単位領域とを比較する第１の比較ステップと、
前記第１の比較ステップの比較結果が、前記第３の書き込みデータの書き込み先である消去単位領域が前記第２の書き込みデータの書き込み先である消去単位領域と異なる場合に、前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域と前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域とを比較する第２の比較ステップと、
前記第２の比較ステップの比較結果が、前記第３の書き込みデータの書き込みバッファの書き込み領域が前記第２の書き込みデータの書き込みバッファ書き込み領域と異なる場合に、前記第２の書き込みデータの消去単位番号と前記第３の書き込みデータの消去単位番号とを比較する第３の比較ステップと、
前記第３の比較ステップの比較結果が、前記第３の書き込みデータの消去単位番号が前記第２の書き込みデータの消去単位番号と異なる場合に、前記書き込みバッファに空き領域があるか否かを判定するステップと、
前記書き込みバッファに空き領域がない場合に前記メモリ書き込みステップ及び前記第３の消去ブロックバッファ書き込みステップとを実行するものである。この発明は一例として実施の形態６（図１６、１７）に記載されている。
【００１２】
この発明における情報処理装置は、あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なう情報処理装置であって、
前記メモリへのデータ書き込みを制御する書き込み制御手段と、
前記メモリの消去領域のデータを前記消去ブロックバッファに待避させる待避手段と、
前記メモリへに書き込みデータの書き込みを行う書き込み手段と、
を備え、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記書き込み制御手段は前記第１の書き込みデータを前記消去ブロックバッファに書き込み、前記待避手段は前記第１の消去単位領域内の不変データを前記消去ブロックバッファに書き込み、
前記第１の書き込みデータおよび前記第１の消去単位内の不変データの前記消去ブロックバッファへの書き込み完了後、前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記書き込み制御手段は前記第２の書き込みデータを前記書き込みバッファに書き込み、
前記第２の書き込みデータの前記書き込みバッファへの書き込み完了後、前記メモリの第３の消去単位領域に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して前記書き込みバッファに空き領域がない場合に、前記書き込み手段は前記第３の書き込みデータを前記消去ブロックバッファに書き込み、前記待避手段は前記第３の消去単位領域内の不変データを前記消去ブロックバッファに書き込むものである。この発明は一例として実施の形態４（図８〜１０）に記載されている。
【００１３】
あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有する第１のメモリと、前記消去単位領域に記憶されたデータを前記消去単位で消去する消去手段とを有する情報処理装置において、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファ、不変データを記憶することなく書き込みデータを記憶する書き込みバッファ、前記消去ブロックバッファに記憶されるデータを処理することにより得られる第１データチェック値の保持領域、前記書き込みバッファに書き込まれたデータを処理することにより得られる第２データチェック値の保持領域を備え、任意のデータ単位でデータの書き込みが可能な不揮発性の第２のメモリと、第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対して当該第１の書き込みデータを前記消去ブロックバッファに書き込み、第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して当該第２の書き込みデータを前記書き込みバッファに書き込み、前記第１のデータチェック値および前記第２のデータチェック値を前記第２のメモリに書き込む書き込み制御手段と、前記第１の書き込み要求に対し、前記第１の消去単位領域内の不変データを前記消去ブロックバッファに書き込む待避手段と、前記消去ブロックバッファに書き込まれた前記第１の書き込みデータおよび前記不変データを前記消去手段によって消去された前記第１の消去単位領域に書き込むメモリ書き込み手段と、前記情報処理装置の復旧時に、前記第２のメモリに書き込まれた前記第１のデータチェック値および前記第２のデータチェック値に基づいて復旧処理を行うものである。この発明は一例として実施の形態１６（図４５〜４９）に記載されている。
【００１４】
また、前記復旧手段は、前記第１のデータチェック値に基づいて前記消去ブロックバッファに記憶されたデータが正しいと判断した場合に、前記消去ブロックバッファに記憶されたデータを前記第１の消去単位領域に書き込むことを前記メモリ書き込み手段に指示し、前記第２のデータチェック値に基づいて前記書き込みバッファに記憶されたデータが正しいと判断した場合に、前記書き込みバッファに記憶された前記第２の書き込みデータを前記消去ブロックバッファに書き込むことを前記書き込み制御手段に指示し、前記第２の消去単位領域の不変データを前記消去ブロックバッファに書き込むことを前記待避手段に指示するものである。この発明は一例として実施の形態１７（図５０）に記載されている。
【００１５】
さらに、消去単位番号保持領域を備え、前記第２のメモリよりもデータの読み出しが高速な第３のメモリを有し、前記書き込み制御手段は、前記消去単位領域を特定する情報を前記第２のメモリの消去単位番号保持領域と前記第３のメモリの消去単位番号保持領域双方に書き込むようにし、前記消去単位領域を特定する情報を参照する際には、前記第３のメモリの消去単位番号保持領域からデータを読み出すものである。この発明は一例として実施の形態１８（図５１〜５４）に記載されている。
【００１６】
あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有する第１のメモリと、前記消去単位領域に記憶されたデータを前記消去単位で消去する消去手段とを有し前記消去単位領域に記憶されたデータを第１の書き込みデータに書き換える情報処理装置において、前記第１の書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを備え、任意のデータ単位でデータの書き込みが可能な不揮発性の第２のメモリと、第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータを前記消去ブロックバッファに書き込む消去ブロックバッファ書き込み手段と、前記第１の書き込み要求に対し、前記第１の消去単位領域内の不変データを前記消去ブロックバッファに書き込む待避手段と、前記第１の書き込み要求以外の複数の書き込み要求に対し、当該複数の書き込みデータを前記書き込みバッファに書き込む書き込みバッファ書き込み手段と、前記消去ブロックバッファ書き込み手段に書き込まれた前記第１の書き込みデータおよび前記不変データを前記第１の消去単位領域に書き込むメモリ書き込み手段と、前記書き込みバッファ内の複数の書き込みデータについて、書き込み要求がされた消去単位領域ごとにそのデータ量を計算し、この計算結果に基づいて同一の消去単位領域に書き込む書き込みデータすべてを前記消去ブロックバッファに移動させるデータ移動手段とを有し、前記待避手段は前記消去ブロックバッファに移動された書き込みデータに対応する消去単位領域内の不変データを前記消去ブロックバッファに書き込むものである。この発明は一例として実施の形態１９（図５５〜５６）に記載されている。
【００１７】
また、前記データ移動手段は、前記書き込みバッファ内の書き込みデータの内、同一の消去単位領域に書き込み要求がなされた書き込みデータのデータ量が所定量よりも少なく、当該書き込みデータの数が所定数よりも多い場合に、当該書き込みデータすべてを前記消去ブロックバッファに移動させるものである。この発明は一例として実施の形態２０（図５７）に記載されている。
【００１８】
【発明の実施の形態】
実施の形態１．
図１はこの発明の一実施の形態である情報処理装置の構成を示す図である。図１において、１０１は複数の消去単位領域からなるフラッシュメモリである。このフラッシュメモリは、予め定められた消去単位ごとにデータの消去および書き込みがなされるメモリである。
１０２は、フラッシュメモリとは異なり、データの書き換えのために一定の消去単位を消去する必要がなく任意のデータ単位でメモリへのデータの直接書き込みが可能であり、かつ不揮発性のメモリである。具体的には、バッテリーバックアップＳRAMである。
【００１９】
１０３は、不揮発性メモリ１０２であるバッテリーバックアップＳRAM上に設けられ、フラッシュメモリの１つの消去単位領域内のデータを退避して記録するのに十分な大きさの容量を持つ消去ブロックバッファである。本実施の形態においては、消去単位領域と同容量の領域を有するエリアで構成している。この消去ブロックバッファ１０３は不揮発性メモリであるバッテリーバックアップＳRAM上に構成されているので、任意のデータ単位でデータの書き込みが可能である。１１１はフラッシュメモリ１０１へのデータの書き込みを制御する書き込み制御手段、１１２は消去単位領域内のデータを消去ブロックバッファ１０３に待避させる待避手段、３０１はフラッシュメモリ１０１に対し消去単位領域の消去のための命令を出す消去命令手段である。３０２はフラッシュメモリ１０１に書き込みデータの書き込みを行う書き込み手段である。以下、書き込みデータとは、フラッシュメモリ１０１や不揮発性メモリ１０２等のメモリに対して新たに書き込むべきデータを意味し、又、書き込み要求に含まれる書き込みデータを特に書き込み要求データと呼ぶ。
２０２は、不揮発性メモリ１０２内のエリアであって、消去単位番号を記録する消去単位番号保持領域である。
【００２０】
図２は、この実施形態を実現する、具体的なシステムの概略を示す構成図である。１８１はプロセッサ、１０２はバッテリーバックアップＳRAM、１０１はフラッシュメモリ、１８４は入出力インターフェース、１８５は主記憶としてのＤＲＡＭである。書き込み制御手段１１１、待避手段１１２、消去命令手段３０１、書き込み手段３０２のそれぞれは、プロセッサ上１８１でソフトウェアが動作することにより実現される。フラッシュメモリ１０１の消去単位領域内のデータの消去は、消去命令手段３０１から消去命令を受けたフラッシュメモリ１０１が、ハードウェア的に行う。この消去単位の具体的な消去は、フラッシュメモリ１０１が備えた消去手段（不図示）が行う。新たなデータ書き込みは、例えば、入出力インターフェース１８４から書き込み要求をプロセッサ１８１が受けることにより行われる。
【００２１】
以下、本実施の形態における、フラッシュメモリ１０１上のデータの書き換え動作について説明する。図３は、本実施の形態における情報処理装置が、フラッシュメモリ１０１上のデータの書き換えを行うフローチャートである。以下の各処理は、断りがない限り書き込み制御手段１１１が行う。
まず、Ｓ１０１において、フラッシュメモリ１０１へのデータの書き込み要求を受ける。この書き込み要求には、書き込むデータとしての書き込み要求データ、データを書き込むフラッシュメモリ上のアドレスを特定する書き込み要求領域、そしてデータの大きさの情報が含まれている。
次に、Ｓ１０２において、消去単位の容量と書き込み要求領域から、書き込み要求領域を含む消去単位の番号と、書き込み要求領域が対応する消去単位内の位置を算出する。尚、書き込み要求領域はフラッシュメモリ１０１全体の相対的位置を特定するアドレスであり、消去単位内の位置は特定の消去単位内での相対的位置を特定するものである。
【００２２】
さらにＳ１０３において、書き込み要求データを、消去ブロックバッファ１０３内の領域であって、書き込み要求領域に対応した位置に書き込む。即ち、Ｓ１０２において算出した消去単位内の位置に対応する消去ブロックバッファ１０３内の位置に書き込まれる。
そして、Ｓ１０４において、待避手段１１２に待避指示を出す。この待避指示には、消去単位の番号と、書き込み要求領域が対応する消去単位内の位置についての情報が含まれている。この指示を受けた待避手段１１２は、Ｓ１０２において算出した消去単位番号の消去単位領域内のデータであって、Ｓ１０３において書き込まれた領域に対応する部分以外のデータである不変データを、消去ブロックバッファ１０３に書き込む。この明細書において、不変データとは、消去単位領域内のデータの内、書き込み要求データによって書き換えられないデータをいう。
【００２３】
続いてＳ１０５において、消去命令手段３０１に対して消去指示を出す。この消去指示には、フラッシュメモリ１０１の消去単位の番号が含まれている。この指示を受けた消去命令手段３０１は、フラッシュメモリ１０１の消去手段に対し、消去単位の番号が対応するフラッシュメモリ内の１つの消去単位を消去するように命令を出す。フラッシュメモリ１０１の消去手段による消去が完了すると、書き込み手段３０２が消去ブロックバッファ１０３に記憶されたデータを、消去されたフラッシュメモリ１０１内の消去単位領域に書き込む。
書き込み要求発生の度にＳ１０１〜Ｓ１０５の処理が実行される。
【００２４】
ここで、フラッシュメモリ１０１内のデータの消去からフラッシュメモリ１０１への書き込みまでの間に装置に対する電源断が発生した場合の復旧処理について説明する。不揮発性メモリ１０２上の消去ブロックバッファ１０３にフラッシュメモリ１０１への書き込みが完了していないデータがあるときに、電源入力後に、この消去ブロックバッファ１０３上のデータをフラッシュメモリ１０１に再度書き込む処理について説明する。
【００２５】
まず、通常の処理について説明する。
書き込み制御手段１１１は、Ｓ１０５において、フラッシュメモリ１０１の消去指示を出した後、この消去指示に含まれるフラッシュメモリ１０１の消去単位の番号を、不揮発性メモリ１０２内に設けられた消去単位番号保持領域２０２に記録する。
フラッシュメモリ１０１へのデータの書き込みが終了すると、書き込み制御手段１１１は消去単位番号保持領域２０２に記録された消去単位番号を無効にする。
【００２６】
次に、フラッシュメモリ１０１の消去からフラッシュメモリ１０１への書き込みまでの間に装置に対する電源断が発生した場合の、復旧処理について説明する。
電源断の発生及び電源入力後に、書き込み制御手段１１１は、不揮発性メモリ１０２内の消去単位番号保持領域２０２を確認する。消去単位番号保持領域２０２に有効な消去単位番号が存在している場合には、書き込みが終了していないと判断され、消去ブロックバッファ１０３に記録されているデータを、フラッシュメモリ１０１へ書き込む処理を行う。消去ブロックバッファ１０３に記録されているデータが書き込まれるフラッシュメモリ１０１内の消去単位の番号は、消去単位番号保持領域２０２に記録されている。その後、消去単位番号保持領域２０２に記憶された消去単位番号を無効にする。消去単位番号保持領域２０２に有効な消去単位番号が存在しない場合には、フラッシュメモリ１０１へ書き込む処理を行なわずに、そのまま復旧処理を終了する。
以上の処理により、装置に対する電源断が発生した場合の、復旧処理が可能となる。
【００２７】
以上のように、この実施の形態によれば、フラッシュメモリ１０１上の書き換えが行なわれる消去単位内のデータは不揮発性メモリ上の消去ブロックバッファ１０３領域に待避されているため、フラッシュメモリ上のデータの消去後、フラッシュメモリへの新たなデータの書き込みが完了する前に電源断等が発生しても、データが失われることがなく、フラッシュメモリ上の書き換えに関し、信頼性の高い情報処理装置を得ることができる。
【００２８】
尚、本実施の形態においては、Ｓ１０３で書き込みデータを消去ブロックバッファ１０３に書き込んだ後に、Ｓ１０４において不変データを待避させているが、この順番が逆であってもよい。又、待避手段１１２による待避を行った後に、書き込みデータを消去ブロックバッファ１０３に書き込む場合には、待避させるデータは不変データだけはなく、不変データを含んだ消去単位内の全データを待避させ、その後、待避させたデータに書き込みデータを上書きすればよい。
【００２９】
また、本実施の形態においては、Ｓ１０３で書き込みデータを消去ブロックバッファ１０３に書き込むこととしているが、書き込みデータの消去ブロックバッファ１０３への書き込みは、遅くとも、書き込み手段３０２が消去ブロックバッファ１０３に記憶されたデータをフラッシュメモリ１０１内の消去単位領域に書き込む前までに完了していれば良い。
さらに、本実施の形態ではＳ１０２において、消去単位の容量と書き込み要求領域から、書き込み要求領域を含む消去単位の番号と、書き込み要求領域が対応する消去単位内の位置を算出しているが、書き込み要求データにこれらデータを含めるようにすることも可能である。その場合には、Ｓ１０２の算出処理は省略される。
【００３０】
この実施の形態において、フラッシュメモリ１０１は、あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリの一例であり、フラッシュメモリ１０１の消去手段（不図示）は、前記消去単位領域に記憶されたデータを前記消去単位で消去する消去手段の一例であり、バッテリーバックアップＳＲＡＭ１０２は、任意のデータ単位でデータの書き込みが可能な不揮発性の消去ブロックバッファの一例である。また、書き込み制御手段１１１は、消去ブロックバッファに書き込みデータを書き込む書き込みデータ書き込み手段の一例であり、待避手段１１２は、不変データを消去ブロックバッファに書き込む待避手段の一例であり、書き込み手段３０２は、書き込みデータおよび不変データを消去単位領域に書き込むメモリ書き込み手段の一例である。
【００３１】
実施の形態２．
図４は、本発明の他の実施形態である、情報処理装置の概略を示す構成図である。図において、２０１はフラッシュメモリ１０１又は不揮発性メモリ１０２からデータを読み出す読み出し手段、２０２は不揮発性メモリ１０２内のエリアであって、消去単位番号を記録する消去単位番号保持領域である。他の構成は、図１において説明した構成の同一又は相当部であり、説明を省略する。読み出し手段２０１は、ソフトウエアがプロセッサ１８１上で動作することにより実現される。
尚、本実施の形態においては、特に、同一の消去単位領域へ、連続して書き込みデータを書き込む場合の動作について説明する。
【００３２】
本実施の形態において、メモリへのデータ書き込み時の動作を図５を用いて説明する。ここでメモリとは、フラッシュメモリ１０１と不揮発性メモリ１０２の双方を含む概念である。尚、以下の各処理は、断りがない限り書き込み制御手段１１１の動作である。
まず、Ｓ２０１において、フラッシュメモリ１０１へのデータの書き込み要求を受ける。この要求の内容は、実施の形態１と同様である。
次に、Ｓ２０２において、書き込み要求領域を含むフラッシュメモリの消去単位の番号を求める。この消去単位の番号を求める方法は、実施の形態１と同様である。
【００３３】
続いて、Ｓ２０３において、消去単位番号保持領域２０２を参照し、消去単位番号保持領域２０２に消去単位番号の記録が存在するかを判定する。
消去番号の記録が存在しなければ、Ｓ２０４において、書き込みデータを消去ブロックバッファ１０３に書き込む。消去ブロックバッファ１０３への書き込み動作は、実施の形態１と同様である。
次に、Ｓ２０５において、待避手段１１２に対して待避指示を行なう。待避指示の内容は、実施の形態１と同様である。待避手段１１２は、Ｓ２０２で求めた番号のフラッシュメモリの消去単位から、不変データを消去ブロックバッファ１０３に書き込む。
続いて、Ｓ２０６において、Ｓ２０２において求めた消去単位番号を消去番号保持領域２０２に記録する。この後、フラッシュメモリ１０１にデータを書き込むことなく、メモリへのデータの書き込み処理を終了する。
【００３４】
Ｓ２０３において消去単位番号保持領域２０２に消去単位番号の記録が存在する場合には、Ｓ２０７において、Ｓ２０２で求めた消去単位番号が消去単位番号保持領域２０２に存在する記録と一致するかを判定する。
判定により消去単位番号が異なる場合には、Ｓ２０８において、消去命令手段３０１に対し消去指示を行なう。消去指示の内容は実施の形態１と同様である。この指示を受けた消去命令手段３０１は、フラッシュメモリ１０１の消去手段に対し、消去単位の番号が対応するフラッシュメモリ内の１つの消去単位を消去するように命令を出す。フラッシュメモリ１０１の消去手段による消去が完了すると、書き込み手段３０２が消去ブロックバッファ１０３の内容を、フラッシュメモリ１０１内のこの消去単位の領域に書き込む。
【００３５】
続いて、消去単位番号の記録が存在しない場合と同様に、Ｓ２０４からＳ２０６の処理を行ない、書き込みデータの消去ブロックバッファへの書き込み、フラッシュメモリからのデータの退避、消去単位番号の記録を行なう。
Ｓ２０７でＳ２０２で求めた消去単位番号が消去単位番号保持領域２０２に存在する記録と一致する場合には、Ｓ２０９において、書き込み要求データを消去ブロックバッファ１０３へ書き込む。
以上説明したように、消去単位番号の記録が存在していない場合にはＳ２０１〜Ｓ２０６の手順で処理が実行され、消去単位番号の記録が存在している場合にはＳ２０１〜Ｓ２０３、Ｓ２０７、Ｓ２０８、Ｓ２０４〜Ｓ２０６の手順で処理が実行されるか若しくは、Ｓ２０１〜Ｓ２０３、Ｓ２０７、Ｓ２０９の手順で処理が実行される。即ち、書き込み要求が第１回目の要求であった場合には、Ｓ２０１〜Ｓ２０６の手順で処理が実行され、第２回目の書き込み要求以降は、Ｓ２０１〜Ｓ２０３、Ｓ２０７、Ｓ２０８、Ｓ２０４〜Ｓ２０６の手順で処理が実行されるか若しくは、Ｓ２０１〜Ｓ２０３、Ｓ２０７、Ｓ２０９の手順で処理が実行される。以上の処理が書き込み要求が発生する度に実行される。
【００３６】
次に、メモリからのデータ読み出し時の動作について図６を用いて説明する。以下の各処理は、断りがない限り読み出し手段２０１の動作である。
まず、Ｓ２１１において読み出し要求を受ける。読み出し要求には、読み出し要求領域としてのフラッシュメモリ１０１のアドレスと読み出すデータの大きさに関する情報が含まれている。
次に、Ｓ２１２において、読み出し要求領域を含むフラッシュメモリの消去単位の番号を書き込み時と同様に求める。尚、読み出し要求領域とは、読み出すべきデータが記憶されているフラッシュメモリ１０１上のエリアであり、フラッシュメモリ１０１上の相対的位置を特定する。
【００３７】
続いて、Ｓ２１３において、消去単位番号保持領域２０２を参照し、消去単位番号の記録が存在し、かつその消去単位番号がＳ２１２において求めたものと一致するかを判定する。
一致した場合には、読み出し領域のデータは消去ブロックバッファに保持されているので、Ｓ２１４において、消去ブロックバッファからデータを読み出す。
消去単位番号の記録が消去単位番号保持領域２０２に存在しないか、あるいは記録された消去番号がＳ２１２おいて求めたものと一致しない場合には、読み出し領域のデータは消去ブロックバッファに保持されていないので、Ｓ２１５において、フラッシュメモリからデータの読み出しを行なう。
【００３８】
以上のように本実施の形態によれば、フラッシュメモリの同一の消去単位領域へ続けて書き込みを行う場合、１回目のデータ書き込みデータを不揮発性メモリ上の消去ブロックバッファに書き込んだ後、フラッシュメモリに消去ブロックバッファ上のデータを書き込まず、さらに２回目の書き込みデータを消去ブロックバッファに記録されているデータに書き込みを行う。同一の消去単位領域への書き込みが更に続く場合は、この処理を続けて行う。この動作により、実施の形態１の奏する効果に加え、フラッシュメモリ上の同一の消去単位領域への連続した書き込みを一括して行なうことにより、フラッシュメモリ上のデータの消去回数を減らすことができ、フラッシュメモリの劣化を低減することが可能となる。
尚、本実施の形態においても、実施の形態１と同様に電源断時の復旧処理を行うことが可能である。この場合、書き込み未終了フラグとして、消去単位番号の記録を利用してもよい。これは、フラッシュメモリへの書き込みの後に、消去単位番号を無効にすることにより実現できる。
この実施の形態ではＳ２０５において、フラッシュメモリの消去単位から不変データを消去ブロックバッファ１０３に書き込む待避処理を行なっているが、この処理は遅くとも不変データをフラッシュメモリ１０１に書き込むまでに実行され完了していればよい。また、Ｓ２０４における書き込み要求データの消去ブロックバッファへの書き込みは、次回の書き込み要求の書き込み要求データを消去ブロックバッファに書き込むまでに実行すればよい。
【００３９】
実施の形態３．
本発明の他の実施形態における情報処理装置について説明する。情報処理装置の構成は実施の形態２と同様であり、図４に示される。本実施形態の基本的動作は実施の形態２と同様である。本実施形態においては、フラッシュメモリからデータを待避させた後のステップとして、その消去単位のデータ消去を行う。
本実施の形態におけるメモリへのデータ書き込み時の動作を、図７を用いて説明する。以下の各処理は、断りがない限り書き込み制御手段１１１の動作である。
まず、Ｓ３０１において、データの書き込み要求を受ける。書き込み要求の内容は実施の形態１と同様である。
次に、Ｓ３０２において、書き込み要求領域を含むフラッシュメモリの消去単位の番号を求める。消去単位の番号を求める動作については、実施の形態１と同様である。
【００４０】
続いて、Ｓ３０３において、消去単位番号保持領域２０２を参照し、消去単位番号の記録が存在するかを判定する。
Ｓ３０３において消去単位番号保持領域２０２に消去番号の記録が存在しなければ、Ｓ３０４において、書き込み要求データを消去ブロックバッファ１０３に書き込む。
続いてＳ３０５において、待避手段１１２に対して待避指示を行なう。待避指示の内容は実施の形態１と同様である。待避指示を受けた待避手段１１２は、消去単位内の不変データを消去ブロックバッファ１０３に書き込むことにより待避させる。
さらにＳ３０６において、Ｓ３０２で求めた消去単位番号を、消去単位番号保持領域２０２に記録する。
次にＳ３０７において、消去命令手段３０１に対して消去指示を出す。消去指示には、Ｓ３０２で求めた消去単位番号の情報が含まれている。消去指示を受けた消去命令手段３０１は、Ｓ３０５における消去ブロックバッファへの待避が完了した消去単位領域内のデータを消去するように、命令を出す
【００４１】
Ｓ３０３において消去単位番号保持領域２０２に消去単位番号の記録が存在する場合には、Ｓ３０８において、Ｓ３０２で求めた消去単位番号が消去単位番号保持手段３０２に存在する記録と一致するかを判定する。
消去単位番号が異なる場合には、Ｓ３０９において、書き込み手段３０２に対し書き込み指示を行なう。この書き込み指示には、消去単位番号に関する情報が含まれる。書き込み指示を受けた書き込み手段３０２は、現在の消去ブロックバッファ１０３のデータをフラッシュメモリ１０１に書き込む。フラッシュメモリ１０１の当該消去単位領域のデータは、以前の書き込み処理時（Ｓ３０７）にすでに消去されているため、すでに消去された消去単位領域に消去ブロックバッファ１０３のデータを書き込む書き込み処理のみを行なう。これ以降は消去番号の記録が存在しなかった場合と同様に、Ｓ３０４〜Ｓ３０７の処理を行う。
【００４２】
Ｓ３０８で消去単位番号が一致する場合には、書き込み要求データを書き込むべき消去単位領域内のデータは消去ブロックバッファに記録されているので、Ｓ３１０において、書き込み要求データを消去ブロックバッファ１０３へ書き込む。
尚、本実施の形態における読み出し時の動作は、実施の形態２の場合と同様である。
以上の処理が書き込み要求が発生する度に実行される。
この発明の実施の形態によれば、フラッシュメモリからデータを待避させた後にフラッシュメモリのデータを消去するので、消去ブロックバッファのデータをフラッシュメモリに書き込む際には、フラッシュメモリのデータを消去する処理を行う必要がない。フラッシュメモリの消去は、フラッシュメモリがハードウェア的に行うため、プロセッサが他の処理を平行して行うことができる。例えば、入出力インターフェースから主記憶装置へのデータの書き込みや、プロセッサ内の計算処理等を並列的に行うことができる。
【００４３】
一方、フラッシュメモリにデータを書き込む際にフラッシュメモリのデータを消去する場合には、プロセッサは書き込み要求をうけているので、プロセッサは消去の処理を待たなければならず、他の処理を平行して行うことができない。
以上のように、本実施の形態においては、フラッシュメモリからデータを待避させた後にフラッシュメモリのデータを消去するので、フラッシュメモリにデータを書き込む際にフラッシュメモリのデータを消去する必要がない。そのため、実施の形態２の奏する効果に加え、書き込み処理の時間を短縮することができる。又、フラッシュメモリの消去処理と平行してプロセッサの処理が可能となり、情報処理装置全体の処理速度の向上を図ることが可能となる。
【００４４】
実施の形態４．
図８は本発明の他の実施形態における情報処理装置の構成を示す図である。図において、４０２は任意のデータ単位で書き込み可能な不揮発性メモリ１０２上に構成され、書き込みデータを記録する書き込みバッファである。書き込みバッファ４０２は、書き込みデータを記録するためのものであり、不変データを記録することはない。４０３は書き込みバッファ管理領域である。書き込みバッファ管理領域４０３には、消去単位番号、消去単位内オフセットおよびデータサイズとが記憶される。他の構成は、図３における構成の同一もしくは相当部であり説明を省略する。  図９は、書き込みバッファ管理領域４０３に記録されているデータの内容を示す図である。書き込みバッファ管理領域４０３には、書き込みバッファ４０２に保持されたデータが書き込まれるべきフラッシュメモリ１０１上の消去単位番号と、この消去単位領域内の書き込み領域の位置を特定するオフセットと、書き込み領域の大きさに関するデータを保持する。消去単位番号の「−１」は、これ以上書き込みデータが存在しないことを意味する。ここでは、書き込み領域の大きさは一定になっているが、この大きさは個々のデータ毎に異なっていてもよい。
【００４５】
本実施の形態におけるメモリへの書き込み時の動作を、図１０を用いて説明する。以下の各処理は、断りがない限り書き込み制御手段１１１の動作である。
まず、Ｓ４０１において、データの書き込み要求を受ける。書き込み要求の内容は、実施の形態１と同様である。
次に、Ｓ４０２において、書き込み要求領域を含むフラッシュメモリの消去単位の番号を求める。この動作は、実施の形態１と同様である。
続いてＳ４０３において、消去単位番号保持領域２０２を参照し、消去単位番号の記録が存在するかを判定する。
ここで、消去番号の記録が存在しなければ、Ｓ４０４において、書き込み制御手段１１１は、書き込み要求データを消去ブロックバッファ１０３に書き込む。
【００４６】
さらに、Ｓ４０５において、待避手段１１２に対して待避指示を行う。待避指示の内容は実施の形態１と同様である。待避指示を受けた待避手段１１２は、Ｓ４０２で算出された消去単位番号で特定される消去単位領域内の不変データを消去ブロックバッファ１０３に書き込む。
続いて、Ｓ４０６において、Ｓ４０２で求めた消去単位番号を消去単位番号保持領域２０２に記録する。
さらに、Ｓ４０７において、消去命令手段３０１に対して消去指示を出す。消去指示の内容は実施の形態２と同様である。消去指示を受けた消去命令手段３０１は、消去ブロックバッファ１０３へ待避された消去単位の消去を行なうように、フラッシュメモリ１０１に命令を出す。
【００４７】
Ｓ４０３において消去単位番号保持領域２０２に消去単位番号の記録が存在する場合には、Ｓ４０８において、Ｓ４０２で求めた消去単位番号が消去単位番号保持領域２０２に存在する記録と一致するかを判定する。
Ｓ４０８において消去単位番号が異なる場合には、Ｓ４０９において、書き込みバッファ管理領域４０３を参照し、書き込みバッファ管理領域４０３に記録されている情報から、書き込み要求領域と同一の領域に書き込みを行なうデータが既に書き込みバッファ４０２に存在するかを判定する。この判定は、書き込みバッファ管理領域４０３に記憶されている消去単位番号及び消去単位内オフセットおよびサイズから把握することができる。換言すれば、Ｓ４０９においては、書き込み要求領域で特定される領域が既に書き込みバッファ４０２に存在するデータの書き込み要求領域に含まれるか否かを判定する。書き込み要求領域で特定される領域が既に書き込みバッファ４０２に存在するデータの書き込み要求領域に含まれる場合としては、例えば、書き込み要求領域で特定される領域と既に書き込みバッファ４０２に存在するデータの書き込み要求領域とが完全に同一の場合、及び書き込み要求領域で特定される領域が既に書き込みバッファ４０２に存在するデータの書き込み要求領域内に収まる場合の２つの場合が該当する。
【００４８】
Ｓ４０９において、書き込み要求領域と同一の領域に書き込みを行なうデータが書き込みバッファ４０２に存在しない場合には、さらにＳ４１０において書き込み制御手段１１１は、書き込み要求のデータを書き込むことができる領域が書き込みバッファ４０２に存在するかを、書き込みバッファ４０２の空き領域を調べることで判定する。空き領域の存在は、書き込みバッファ管理領域４０３に記録されている情報から知ることができる。本実施の形態では、最後の消去単位番号を−１としておくことで、空き領域の存在を記録する。最後が−１以外であれば、空き領域は存在しない。もちろん、書き込みバッファ４０２の容量と管理情報に含まれるサイズの情報から、空き領域の存在を求めてもよい。
【００４９】
書き込みバッファ４０２に空き領域がない場合には、Ｓ４１１において書き込み制御手段１１１は、書き込み手段３０２に対し書き込み指示を行なう。書き込み指示の内容は実施の形態１と同様である。書き込み指示を受けた書き込み手段３０２は、消去ブロックバッファ１０３に現在記録されているデータをフラッシュメモリ１０１に書き込む。
続いて、Ｓ４０４からＳ４０７の処理を、消去単位番号の記録が存在しない場合と同様に行なう。
【００５０】
Ｓ４１０で書き込みバッファに空き領域が存在した場合には、Ｓ４１２において、書き込みデータを書き込みバッファ４０２へ書き込む。
次にＳ４１３において、書き込みバッファ管理領域４０３に、Ｓ４１２で書き込んだ書き込みデータに関する管理情報を記録する。管理情報は、消去単位番号とその中での位置を特定するオフセット、及び書き込みデータの大きさを記録する。書き込みバッファ管理領域４０３における管理情報と、書き込みバッファ４０２における書き込みデータの対応づけは、各エリアにおけるアドレス上の順序が同一になるように記録されることで行われる。尚、書き込みバッファ管理領域４０３に、書き込みデータが記録されている書き込みバッファ内のアドレスを記録することにより、各管理情報と書き込みデータの対応づけを行ってもよい。
【００５１】
Ｓ４０９で書き込み要求領域と同一の領域に書き込みを行なうデータが既に存在すると判定された場合には、Ｓ４１４において、書き込みデータを書き込みバッファの同一領域のデータが記録されているエリアに書き込む。
Ｓ４０８で、Ｓ４０２で算出した消去単位番号が消去単位番号保持領域２０２に存在する記録と一致すると判定された場合には、Ｓ４１５において、書き込み要求データを消去ブロックバッファに書き込む。書き込み要求データの消去ブロックバッファへの書き込み動作については実施の形態１と同様である。
【００５２】
次に、メモリからのデータ読み出し時の動作を図１１を用いて説明する。以下の各処理は、断りがない限り読み出し手段２０１の動作である。
まずＳ４５１において、読み出し要求を受ける。この読み出し要求の内容は実施の形態２と同様である。
次にＳ４５２において、読み出し要求領域を含むフラッシュメモリの消去単位番号を求める。消去単位の番号を求める動作は実施の形態２と同様である。
続いてＳ４５３において、消去単位番号保持領域２０２を参照し、消去単位番号の記録が存在するかを判定する。
消去単位番号の記録が存在しない場合には、Ｓ４５４において、書き込みバッファ管理領域４０３の管理情報を参照し、読み出し要求領域として特定された領域に書き込まれるべきデータが書き込みバッファ４０２に存在するかを判定する。
【００５３】
読み出し要求領域として特定された領域に書き込まれるべきデータが書き込みバッファ４０２に存在する場合には、Ｓ４５５において、その領域のデータを書き込みバッファ４０２から読み出す。
読み出し要求領域として特定された領域に書き込まれるべきデータが書き込みバッファ４０２に存在しない場合には、Ｓ４５６において、読み出しデータをフラッシュメモリ１０１から読み出す。
Ｓ４５３で消去単位番号保持領域２０２に消去単位番号の記録が存在し、かつＳ４５２で求めた消去単位番号と一致する場合には、読み出し領域のデータは消去ブロックバッファ１０３に保持されているので、Ｓ４５７において、消去ブロックバッファ１０３から読み出しデータを読み出す。
以上の処理が読み出し要求が発生する度に実行される。
【００５４】
本実施の形態の情報処理装置によれば、不揮発メモリ１０２上に、消去ブロックバッファ１０３に加えて、書き込みデータを記録する書き込みバッファ４０２を設けているので、異なる消去単位領域に対する複数の書き込みデータを記録することができ、実施の形態３の奏する効果に加え、フラッシュメモリ１０１への書き込み回数をさらに低減でき、フラッシュメモリ１０１の劣化を低減することが可能となる。又、特にバッテリバックアップＳＲＡＭは、記録容量あたりの値段が高いこともあり、その効率的利用が強く求められているが、本実施の形態のように、消去ブロックバッファ１０３に加えて、不変データを記録せずに書き込みデータを記録するエリアとして書き込みバッファ４０２を設けることにより、複数の消去ブロックバッファを設ける場合に比較し、効率的に不揮発メモリ１０２を利用つつ、フラッシュメモリの劣化を大きく低減することが可能となる。
【００５５】
この実施の形態において、書き込みバッファ４０２は、不変データを記憶することなく書き込みデータを記憶する書き込みバッファの一例であり、書き込み制御手段１１１は、第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータを前記消去ブロックバッファに書き込む書き込みデータ書き込み手段、および第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記第２の書き込みデータを前記書き込みバッファに書き込む書き込みバッファ書き込み手段の一例である。この実施の形態では、データ書き込み手段とバッファ書き込み手段の機能を書き込み制御手段１１１にて果たしている。待避手段１１２は、第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、第１の消去単位領域内の不変データを前記消去ブロックバッファに書き込む待避手段の一例である。
【００５６】
実施の形態５．
図１２は本実施の形態における情報処理装置の構成を示す図である。図において、５０１は書き込みバッファ４０２のデータを移動するバッファ移動手段である。他の構成は、既に説明した構成の同一もしくは相当部であり、説明を省略する。本実施形態の基本的動作は実施の形態４と同様であるが、バッファ移動手段５０１によって、書き込みバッファ４０２内の同一の消去単位領域に含まれるデータを、消去ブロックバッファ１０３に移動する処理を有する点で実施の形態４と相違する。
実施の形態５における書き込み時の動作を、図１３および図１４を用いて説明する。以下の各処理は、断りがない限り書き込み制御手段１１１の動作である。
まずＳ５０１において、データの書き込み要求を受ける。書き込み要求の内容は実施の形態１と同様である。
次にＳ５０２において、書き込み要求領域が含まれるフラッシュメモリの消去単位の番号を求める。消去単位番号を求める動作は実施の形態１と同様である。
【００５７】
続いてＳ５０３において、消去単位番号保持領域２０２を参照し、消去単位番号の記録が存在するかを判定する。
消去単位番号保持領域２０２に消去番号の記録が存在しなければ、Ｓ５０４において、書き込みデータを消去ブロックバッファ１０３に書き込む。
さらにＳ５０５において、待避手段１１２に対して待避指示を行なう。待避指示の内容は実施の形態１と同様である。待避指示を受けた待避手段１１２は、待避処理として不変データを消去ブロックバッファ１０３へ書き込む。
続いて、Ｓ５０６において、Ｓ５０２において求めた消去単位番号を消去単位番号保持領域２０２に記録する。
次にＳ５０７において、消去命令手段３０１に対して消去指示を出す。消去指示の内容は実施の形態１と同様である。消去指示を受けた消去命令手段３０１は、すでに消去ブロックバッファ１０３への待避が完了した消去単位領域内のデータを消去するようにフラッシュメモリ１０１に命令を出す。
【００５８】
Ｓ５０３で消去単位番号保持領域２０２に消去単位番号の記録が存在した場合には、Ｓ５０８において、Ｓ５０２において求めた消去単位番号が消去単位番号保持領域２０２に存在する記録と一致するかを判定する。
Ｓ５０８において消去単位番号が異なる場合には、Ｓ５０９において、書き込みバッファ管理領域４０３を参照し、書き込み要求領域と同一の領域に書き込まれるデータが既に書き込みバッファに存在するかを判定する。
Ｓ５０９で書き込み要求領域と同一の領域に書き込まれるデータが書き込みバッファに存在しないと判定された場合には、Ｓ５１０の処理として、Ｓ５０２において求めた消去単位番号と同じ消去単位番号のデータが書き込みバッファ４０２に存在するかを書き込みバッファ管理領域４０３を参照して判定する。
【００５９】
Ｓ５１０で同じ消去単位番号のデータが書き込みバッファ４０２に存在する場合には、バッファデータ移動処理を行なうが、これについては後述する。
Ｓ５１０で同じ消去単位番号のデータが書き込みバッファ４０２に存在しない場合には、さらにＳ５１１において、書き込み要求データを書き込むことができる領域が書き込みバッファ４０２に存在するかを判定する。
Ｓ５１１において空き領域がないと判断した場合には、Ｓ５１２において書き込み制御手段１１１は、書き込み手段３０２に対し書き込み指示を行なう。書き込み指示を受けた書き込み手段３０２は、現在の消去ブロックバッファ１０３のデータをフラッシュメモリ１０１に書き込む。
これ以降、Ｓ５０４〜Ｓ５０７の処理を行ない、消去単位番号の記録が存在しない場合と同一の処理を行なう。
【００６０】
Ｓ５１１で書き込みバッファ４０２に空き領域が存在すると判断した場合には、Ｓ５１３において書き込み制御手段１１１は、書き込みデータを書き込みバッファ４０２の空き領域へ書き込む。
Ｓ５１４において、書き込みバッファ管理領域に、管理情報として、消去単位番号とその中でのオフセット、及び書き込みデータの大きさを記録する。
Ｓ５０９で書き込み要求領域と同一の領域に書き込まれるデータが書き込みバッファに存在すると判定された場合には、Ｓ５１６において書き込み制御手段１１１は、書き込み要求領域と同一の領域に書き込まれるデータが存在するエリアに書き込み要求データを上書きする。
Ｓ５０８においてＳ５０２で算出した消去単位番号が消去単位番号保持領域２０２に存在する記録と一致すると判定された場合には、Ｓ５１７において、書き込み要求データの消去単位番号と同一の消去単位番号のデータが記憶されている消去ブロックバッファ１０３内のエリアに書き込み要求データを上書きする。
【００６１】
Ｓ５１０において、同じ消去単位番号のデータが書き込みバッファ４０２に存在する場合に行われる、バッファデータ移動処理の動作を図１４を用いて説明する。以下の各処理は、断りがない限り書き込み制御手段１１１の動作である。
まずＳ５２１において、消去ブロックバッファ１０３に現在登録されているデータをフラッシュメモリ１０１に書き込む。
次にＳ５２２において、書き込み要求データを消去ブロックバッファ１０３へ書き込む。
続いてＳ５２３において、バッファ移動手段５０１は書き込みバッファ４０２に記録されているデータの内、書き込み要求データの消去単位と同一の消去単位に含まれる全ての書き込みデータを、消去ブロックバッファ１０３へ移動する。書き込み要求データの書き込み要求領域と、既に書き込みバッファ４０２に記憶されている書き込みデータの書き込み要求領域とが異なる場合には、書き込み要求データ及び書き込みバッファ４０２に記憶されている書き込みデータがすべて消去ブロックバッファ１０３に記憶される。書き込み要求データの書き込み要求領域と、既に書き込みバッファ４０２に記憶されている書き込みデータの書き込み要求領域とが一部重複する場合には、重複する領域については書き込み要求データが優先的に消去ブロックバッファ１０３に書き込まれ、重複しない部分については書き込み要求データ及び書き込みバッファ４０２に記憶されている書き込みデータがそれぞれ消去ブロックバッファ１０３に書き込まれる。
【００６２】
さらにＳ５２４において、待避手段１１２に対して待避指示を行ない、待避指示を受けた待避手段１１２は、Ｓ５２３において消去ブロックバッファ１０３へ書き込まれた領域以外のデータである不変データを、フラッシュメモリの当該消去単位から待避する。
続いて、Ｓ５２５において消去単位番号を消去単位番号保持領域２０２に記録し、Ｓ５２６において、書き込みバッファ４０２から消去ブロックバッファ１０３へ移動に伴う書き込みバッファ管理領域４０３の更新を行う。
最後にＳ５２７において、消去命令手段３０１に対して消去指示を出し、消去指示を受けた消去命令手段３０１は消去ブロックバッファ１０３へ待避された消去単位の消去を行なうようにフラッシュメモリ１０１に命令を出す。
以上の処理が書き込み要求が発生する度に実行される。
【００６３】
尚、実施の形態５における読み出し時の動作は、実施の形態４の場合と同一である。
この実施の形態の情報処理装置によれば、フラッシュメモリ１０１の同一消去単位領域に含まれる書き込みバッファ４０３上の書き込みデータ及び書き込み要求データを消去ブロックバッファ１０３にまとめることにより、書き込みバッファ４０２を効率よく使用することができるので、実施の形態４の効果に加え、フラッシュメモリ１０１への書き込み回数をより低減でき、フラッシュメモリ１０１の劣化を低減することができるという効果がある。
【００６４】
尚、本実施の形態において、書き込みデータの移動を、書き込み要求データの消去単位と同一の消去単位に含まれる書き込みデータ及び書き込み要求データではなく、書き込みバッファ４０２に記憶されている複数の書き込みデータを移動するようにしてもよい。即ち、書き込みバッファ４０２に記録されている書き込みデータであって、同一の消去単位に含まれる複数の書き込みデータを移動するようにしてもよい。
この場合、Ｓ５１０において、書き込み制御手段１１１は、書き込みバッファ管理領域４０３を参照し、書き込みバッファ４０２に記憶されている書き込みデータの一番多い消去単位を判定する。これは、書き込みバッファ管理領域４０３内の消去単位番号を参照することにより判定可能である。
Ｓ５１０において同一の消去単位に含まれる書き込みデータが書き込みバッファ４０２内に存在しない場合には、Ｓ５１１の処理に進む。
Ｓ５１０において同一の消去単位に含まれる書き込みデータが書き込みバッファ４０２内に存在する場合には、Ｓ５１０で書き込みデータの一番多い消去単位を判定し、Ｓ５１５において、書き込みバッファ４０２内に記憶されている複数の書き込みデータのバッファデータ移動処理を行う。
【００６５】
バッファデータ移動処理においては、Ｓ５２１、Ｓ５２２の処理を行わず、Ｓ５１０で一番多い消去単位として判定された消去単位を書き込み先として持つ書き込みデータをすべて書き込みバッファ４０２から消去ブロックバッファ１０３に移動する。書き込みデータの書き込み要求領域が互いに異なる場合には、書き込みバッファ４０２に記憶されている書き込みデータがすべて消去ブロックバッファ１０３に記憶される。書き込み要求データの書き込み要求領域が互いに一部重複する場合には、重複する領域について新しい書き込みデータが優先的に消去ブロックバッファ１０３に書き込まれる。消去ブロックバッファ１０３に書き込みが完了した後、移動したデータが記憶されていた書き込みバッファ４０２のエリアのデータが消去される。
その後、Ｓ５２５とＳ５２６の間において、書き込み要求データを書き込みバッファ４０２に書き込む。
Ｓ５２６において新たな書き込みデータに基づき管理情報の更新を行い、最後にＳ５２７の処理を行う。
以上のように、書き込みデータの一番多い消去単位の書き込みデータを消去ブロックバッファ１０３に移動することで、さらに効率的に不揮発性メモリ１０２を利用することが可能となる。
【００６６】
実施の形態６．
実施の形態６における情報処理装置の構成は、実施の形態５の場合と同一である。但し、書き込みバッファ管理領域４０３には、図９で示したものに加えて、書き込みバッファ４０２の領域の使用頻度に関する情報が記録される。ここでは、図１５に示すように、バッファの領域を使用する使用頻度の情報の一例として、書き込みバッファ４０２へのデータ書き込みが行われる度に１ずつ加算され、書き込まれた順番を特定する書き込みの一連番号と、バッファ領域への書き込み回数とを記録するものとする。
本実施形態は、実施の形態５と基本的動作において同様であるが、特に、書き込みバッファ４０２へのの領域を使用する使用頻度に基づき、書き込みデータの移動を行うものである。
【００６７】
実施の形態６における書き込み時の動作を、図１６および図１７を用いて説明する。以下の各処理は、断りがない限り書き込み制御手段１１１の動作である。
まずＳ６０１において、データの書き込み要求を受け、さらにＳ６０２において、書き込み要求領域を含むフラッシュメモリの消去単位の番号を求める。書き込み要求の内容と消去単位の番号を求める動作は実施の形態１と同様である。
続いてＳ６０３において、消去単位番号保持領域２０２を参照し、消去単位番号の記録が存在するかを判定する。
消去番号の記録が存在しなければ、Ｓ６０４において、書き込み要求データを消去ブロックバッファ１０３に書き込む。
【００６８】
次にＳ６０５において、待避手段１１２に対して待避指示を行ない、待避指示を受けた待避手段１１２が消去単位内の不変データを消去ブロックバッファ１０３に書き込むことにより待避させる。
続いてＳ６０６において、Ｓ６０２において求めた消去単位番号を消去単位番号保持領域２０２に記録する。
さらにＳ６０７において、消去命令手段３０１に対して消去指示を出し、消去指示を受けた消去命令手段３０１がすでに消去ブロックバッファ１０３へ待避された消去単位の消去を行なうようにフラッシュメモリ１０１に命令を出す。消去指示の内容は実施の形態１と同様である。
【００６９】
Ｓ６０３で消去単位番号の記録が存在する場合、Ｓ６０８において、Ｓ６０２で求めた消去単位番号が消去単位番号保持領域３０２に存在する記録と一致するかを判定する。
Ｓ６０８で消去単位番号が異なる場合には、Ｓ６０９において、書き込みバッファ管理領域４０３を参照し、書き込みバッファに書き込み要求領域と同一領域のデータが存在するかを判定する。
Ｓ６０９で同一領域のデータが存在しない場合には、Ｓ６１０の処理として、Ｓ６０２において求めた消去単位番号と同じ消去単位のデータが書き込みバッファに存在するかを、書き込みバッファ管理領域４０３を参照して判定する。
【００７０】
Ｓ６１０で同じ消去単位のデータが書き込みバッファに存在する場合には、Ｓ６２０においてバッファデータ移動処理(１)を行なうが、これは図１４に示された実施の形態５のバッファデータ移動処理と同一であり、説明を省略する。
Ｓ６１０で同じ消去単位のデータが書き込みバッファに存在しない場合には、さらにＳ６１１において、書き込み制御手段１１１は書き込み要求のデータを書き込むことができる領域が書き込みバッファ４０２に存在するかを判定する。
Ｓ６１１で空き領域がない場合には、Ｓ６１２でバッファデータ移動処理(２)を行なうが、これについては後述する。
【００７１】
Ｓ６１１で書き込みバッファに空き領域が存在した場合には、Ｓ６１３において書き込み制御手段１１１は、書き込み要求データを書き込みバッファへ書き込む。
次に、Ｓ６１４において、書き込みバッファ管理領域４０３内のデータの書き込まれたバッファに対応する部分に、フラッシュメモリ上での位置を示す情報として、消去単位番号とその中でのオフセット、書き込まれた大きさを記録するとともに、バッファの領域の使用頻度の情報として、書き込みの一連番号と、バッファ書き込み回数の初期値として１を記録する。
【００７２】
Ｓ６０９で書き込み要求と同一領域のデータが存在すると判定された場合には、Ｓ６３０において、書き込み制御手段１１１は、書き込み要求データを書き込みバッファに書き込む。
続いてＳ６３１において、書き込みバッファ管理領域４０３内の、対応する領域についてのバッファの領域の使用頻度の情報として、書き込みの一連番号を記録し、バッファ書き込み回数を１加算したものに更新する。
Ｓ６０８においてＳ６０２で算出した消去単位番号が消去単位番号保持手段３０２に存在する記録と一致すると判定された場合には、Ｓ６３０において、書き込み要求データを消去ブロックバッファ１０３に書き込む。
【００７３】
Ｓ６１１で書き込みバッファに空き領域がない場合に行われる、バッファデータ移動処理（２）（Ｓ６１１）の動作を図１７を用いて説明する。以下の動作は、断りがない限り書き込み制御手段１１１の動作である。
まず、Ｓ６８１で現在の消去ブロックバッファ１０３のデータをフラッシュメモリ１０１に書き込む。
Ｓ６８２において、書き込みバッファ管理領域４０３を検索し、使用頻度の低い書き込みバッファの領域を選択する。使用頻度の判定は、書き込みバッファ管理領域４０３内の書き込みの一連番号および書き込み回数を用いて行ない、一連番号が最も小さく、かつ書き込み回数が最も少ない領域があれば、その領域を選択する。一連番号が最小の領域と、書き込み回数が最少の領域が一致しない場合には、一連番号が小さい順に書き込み回数を調べていき、書き込み回数が最少のものを選択する。尚、書き込み回数が最少のものではなく、一連番号が最小のものを選択してもよい。
【００７４】
Ｓ６８３においては、Ｓ６８２で選択された書き込みバッファのデータを消去ブロックバッファへ１０３移動する。
続いてＳ６８４において、書き込み要求データを、消去ブロックバッファ１０３へ移動されたデータが記録されていた書き込みバッファ内の領域へ書き込む。
次にＳ６８５において、消去ブロックバッファ１０３へ移動されたデータを含むフラッシュメモリ１０１の消去単位について、待避手段３０１に対し待避指示を行なう。待避指示をうけた待避手段３０１は、待避指示に従い、消去単位の不変データを消去ブロックバッファ１０３へ書き込むことにより待避させる。
【００７５】
さらにＳ６８６において、Ｓ６８５で待避された消去単位番号を消去単位番号保持領域２０２に記録する。
続いてＳ６８７において、書き込みバッファ管理領域４０３の、書き込みバッファ４０２から消去ブロックバッファ１０３へ移動されたエリアに対応する部分を、新たに書き込まれたデータに対応するように更新する。
最後にＳ６８８において消去命令手段３０１に対して消去指示を出し、消去指示を受けた消去命令手段３０１は、消去ブロックバッファ１０３へ待避された消去単位の消去を行なうようにフラッシュメモリ１０１に命令を出す。
以上の処理が書き込み要求が発生する度に実行される。
【００７６】
尚、実施の形態６における読み出し時の動作は、実施の形態４の場合と同一である。
以上のように、本実施の形態の情報処理装置によれば、書き込みバッファ上で使用頻度の低い領域を先にフラッシュメモリに書き込むことにより、書き込みバッファを効率よく使用することができるので、実施の形態５の効果に加え、フラッシュメモリへの書き込み回数をさらに低減でき、フラッシュメモリの劣化を低減することができるという効果がある。
【００７７】
実施の形態７．
図１９は発明の実施の形態７における情報処理装置の概略を示す構成図である。図において、６０１は不揮発性メモリ１０２内のエリアであって、消去単位番号領域２０２内の値と同じ値が記録される消去単位番号確認領域、６１１は情報処理装置の起動時に実行され、消去単位番号領域２０２,および消去単位番号確認領域６０１内のデータを元に、消去ブロックバッファ１０３の内容をフラッシュメモリ１０１に書き戻す復旧手段である。他の構成は、図１において説明した構成の同一又は相当部であり、説明を省略する。
【００７８】
本実施の形態において、メモリへのデータ書き込み時の動作を図２０を用いて説明する。以下の各処理は断りがない限り書き込み制御手段１１１の動作である。図２０において、Ｓ７０１、Ｓ７０２、Ｓ７０４、Ｓ７０５、Ｓ７０７は実施の形態１の処理（図３のＳ１０１、Ｓ１０２、Ｓ１０３、Ｓ１０４、Ｓ１０５）と同一であるので説明を省略する。
この実施の形態ではＳ７０３、Ｓ７０６、Ｓ７０８の処理を有する点で相違するため、この点を中心に説明する。
【００７９】
Ｓ７０１にて書き込み要求を受けた後、Ｓ７０２においてフラッシュメモリ１０１上の消去単位番号を求める。
続いて、Ｓ７０３にてＳ７０２において求められた消去単位番号を消去単位番号保持領域２０２に書き込む。
その後、Ｓ７０４で消去ブロックバッファ１０３へ書き込み要求データを書き込み、Ｓ７０５で待避手段１１２に待避指示を出す。
【００８０】
続いて、Ｓ７０６にてＳ７０２において求められた消去単位番号を消去単位番号確認領域６０１に書き込む。これにより、消去単位番号保持領域２０２および消去単位番号確認領域６０１の値が同一の場合、消去ブロックバッファ１０３への書き込みは全て完了したことを示すことになる。
次に、Ｓ７０７にて消去命令手段３０１に対して消去指示を出した後、書き込み手段３０２に書き込み指示を出す。
【００８１】
続いて、Ｓ７０８にて消去単位番号保持領域２０２と消去単位番号確認領域６０１の内容をクリアする。これにより、消去ブロックバッファ６０１にはデータが残っていないことを示す。
以上がメモリへのデータ書き込み時の動作である。
【００８２】
次に、情報処理装置の起動時に実行される復旧手段６１１の動作を図２１を用いて説明する。
復旧手段６１１はまず、Ｓ７８１において、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１の値を読み出す。続いてＳ７８２にて、消去単位番号保持領域２０２内と消去単位番号確認領域６０１にフラッシュメモリ内の消去単位番号が存在するかチェックする。
【００８３】
番号が存在しない場合、消去ブロックバッファにはデータがないので、復旧手段６１１の処理を終了する。
Ｓ７８２にて、番号が存在する場合、Ｓ７８３にて、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１の値が同一かをチェックする。
【００８４】
値が同一な場合、メモリへのデータ書き込み時において、消去ブロックバッファ１０３の内容をフラッシュメモリ１０１に書き込む最中、即ち図２０において、Ｓ７０６からＳ７０８の間に電源断が発生し、情報処理装置が再起動されたことになるので、復旧手段６１１はＳ７８４にて、消去命令手段３０１に対し消去指示を出した後、書き込み手段３０２に書き込み指示を出し、消去ブロックバッファ１０３の内容をフラッシュメモリ１０１に書き込む。この消去指示および書き込み指示の内容は、メモリへのデータ書き込み時の動作（図２０）のＳ７０７と同様である。
【００８５】
値が同一でない場合、消去ブロックバッファにデータを書き込んでいる最中、即ち図２０においてＳ７０３からＳ７０５の間に電源断が発生し、情報処理装置が再起動されたことになり、消去ブロックバッファ１０３内のデータは途中までの書き込みデータしか存在しないので、復旧手段６１１はＳ７８５にて、情報処理装置にエラー通知を行う。これにより情報処理装置は書き込み途中の電源断を検出することができる。
【００８６】
Ｓ７８４またはＳ７８５の処理が終了すると、復旧手段６１１はＳ７８６にて、消去単位番号保持領域２０２および消去単位番号確認領域６０１をクリアする。これは、Ｓ７８４経由の場合、消去ブロックバッファへの書き込みが完了したことを意味し、Ｓ７８５経由の場合はエラー通知にて、消去ブロックバッファのエラーを通知したので、再度消去ブロックバッファを利用可能状態にするために実施する。
以上が復旧手段６１１の動作である。
【００８７】
以上のように、この実施の形態によれば、メモリへのデータ書き込み時において、消去ブロックバッファへのデータ書き込み前に消去番号保持領域に消去単位番号を書き込み、待避手段に待避指示を出した後に消去単位番号確認領域に消去番号を格納するようにしたので、電源断の復旧時に書き込み要求処理中に電源断が発生したかを検知することができる情報処理装置を得ることができる。
さらに、不揮発性メモリが電池などでデータの内容を保持するようなメモリの場合において、電源断後の電池の電圧降下により、不揮発性メモリの内容が不定になった場合でも、復旧手段に消去番号保持領域および消去番号確認領域内の値をチェックするようにしたので、不揮発性メモリの内容が不安定になっているかを検知することができる情報処理装置を得ることができる。
【００８８】
尚、本実施の形態においては、Ｓ７８５にてエラー通知の後、Ｓ７８６を処理するようにしているが、Ｓ７８５の処理終了後、復旧手段６１１を終了させ、情報処理装置の再起動時に再度エラー通知させても構わない。また、消去単位番号確認領域に書き込む値を消去単位番号保持領域の値と同一のものとしているが、消去単位番号保持領域の値と伴って変化する値、例えば、消去単位番号保持領域の値のNOT値を設定し、復旧手段６１１のＳ７８３にて消去単位番号保持領域の値と消去番号確認領域の値のNOT値が等しいかでチェックしてもよい。
【００８９】
また、復旧手段６１１は情報処理押す値の再起動時に実行されると記載しているが、復旧手段６１１を書き込み要求時に実行してもよい。
【００９０】
実施の形態８．
図２２は発明の実施の形態８における情報処理装置の概略を示す構成図である。図において、６０２は不揮発性メモリ１０２内のエリアであって、消去ブロックバッファ１０３の内容が正しいことを示すチェック値を格納する消去ブロックバッファ確認領域である。他の構成は、図１９において説明した構成の同一又は相当部であり、説明を省略する。
【００９１】
本実施の形態において、メモリへのデータ書き込み時の動作を図２３を用いて説明する。以下の各処理は断りがない限り書き込み制御手段１１１の動作である。図２３において、Ｓ８０１〜Ｓ８０６、Ｓ８０８、Ｓ８０９は実施の形態７の処理（図２０のＳ７０１〜Ｓ７０６、Ｓ７０７、Ｓ７０８）と同一であるので説明を省略する。
この実施の形態ではＳ８０７の処理を有する点で相違するため、この点を中心に説明する。
【００９２】
Ｓ８０１〜Ｓ８０６の後、Ｓ８０７にて消去ブロックバッファ内のデータが有効であるか否かのチェックに用いる値を消去ブロックバッファ確認領域６０２に書き込む。この値は消去ブロックバッファ内に書き込まれているデータが正しいか否かをチェック際に用いられるものであり、消去ブロックバッファ内のデータ値をすべて加算したチェックサム値などが入る。
Ｓ８０７の後、Ｓ８０８、Ｓ８０９の処理を実行する。
以上がメモリへのデータ書き込み時の動作である。
【００９３】
次に、情報処理装置の起動時に実行される復旧手段６１１の動作を図２４を用いて説明する。図２４において、Ｓ８８１〜Ｓ８８３、Ｓ８８６〜Ｓ８８８は実施の形態７の処理（図２１のＳ７８１〜Ｓ７８３、Ｓ７８４〜Ｓ７８６）と同一であるので説明を省略する。
この実施の形態ではＳ８８４、Ｓ８８５の処理を有する点で相違するため、この点を中心に説明する。
【００９４】
Ｓ８８１〜Ｓ８８３を実施し、Ｓ８８３にて、消去単位番号保持領域２０２の内の値と消去単位番号確認領域６０１の値が同一である場合、Ｓ８８４に進む。
Ｓ８８４では、消去ブロックバッファ１０３内のデータをチェックし、消去ブロックバッファ確認領域６０２の値と比較する。即ち図２３でのＳ８０７での処理と同様の規則で消去ブロックバッファ１０３内のデータを計算することで得られる値と、消去ブロックバッファ確認領域６０２の値とを比較する。通常、両者の値は同一値になるが、消去ブロックバッファに本発明の手段以外の操作によりデータが書きまれたり、消去ブロックバッファ１０３が使用している不揮発性メモリが故障した場合には両者の値は一致しない。
両者の値が一致しなければ、Ｓ８８５にて値が妥当でないと判断する。
【００９５】
Ｓ８８５にて値が妥当でないと判断された場合、Ｓ８８６に進み情報処理装置にエラー通知を行う。そして、Ｓ８８９にて消去単位番号保持領域２０２と消去単位番号確認領域６０１の内容をクリアする。これにより、消去ブロックバッファを利用可能状態にする。
Ｓ８８５にて値が妥当であると判断した場合、Ｓ８８７、Ｓ８８８の処理を実行する。
以上が復旧手段６１１の動作である。
【００９６】
以上のように、この実施の形態によれば、消去ブロックバッファ内のデータが正しいことを示す値を保持する消去ブロックバッファ確認領域を備えるようにしたので、消去ブロックバッファを保持している不揮発性メモリが故障し、消去ブロックバッファ内のデータが不正になっても、情報処理装置がそれを検出することができる。
さらに、消去ブロックバッファに他手段から不正なデータ書き込みがあっても、それを検出することができる。
【００９７】
実施の形態９．
図２５は発明の実施の形態９における情報処理装置の概略を示す構成図である。図において、６０３は不揮発性メモリ１０２内のエリアであって、消去ブロックバッファ１０３およびフラッシュメモリ１０１に対する書き込みを禁止または許可することを意味する値を格納する書き込み禁止フラグ領域である。また図において、６１２は書き込み禁止フラグ領域６０３に書き込み許可を意味する値を書き込む書き込み許可指示手段、６１３は書き込み禁止フラグ領域６０３に書き込み禁止を意味する値を書き込む書き込み禁止指示手段である。他の構成は図４において説明した構成の同一または相当部であり、説明を省略する。
【００９８】
本実施の形態において、メモリへのデータ書き込み時の動作を図２６を用いて説明する。以下の各処理は断りがない限り書き込み制御手段１１１の動作である。図２６において、Ｓ９０１、Ｓ９０４〜９１１は実施の形態２の処理（図５のＳ２０１、Ｓ２０２〜２０９）と同一であるので説明を省略する。
この実施の形態ではＳ９０２、Ｓ９０３の処理を有する点で相違するため、この点を中心に説明する。
【００９９】
まず、Ｓ９０１にてデータの書き込み要求を受けた後、Ｓ９０２にて書き込み禁止フラグ領域をチェックし、その領域の値が書き込み禁止を意味する値になっているかをチェックする。もし、値が書き込み禁止を意味する値になっていた場合、Ｓ９０３に進み、情報処理装置にエラー通知を行い処理を終了する。これにより、書き込み禁止が指定されている限り、消去ブロックバッファ１０３およびフラッシュメモリ１０１にデータ書き込みは発生しない。
Ｓ９０２にて書き込み禁止フラグ領域の値が書き込み禁止を意味する値でない場合、Ｓ９０４に進む。Ｓ９０４以降の処理は実施の形態２と同様である。
以上がメモリへのデータ書き込み時の動作である。
【０１００】
次に、書き込み許可指示手段６１２の動作について図２７を用いて説明する。
書き込み許可指示手段６１２は、書き込み許可指示を受けるとＳ９５２にて書き込み禁止フラグ領域６０３に書き込み許可を意味する値を書き込み、処理を終了する。これにより、以降のメモリへのデータ書き込み時に、データを書き込むことが可能になる。
以上が書き込み許可指示手段６１２の動作である。
【０１０１】
次に、書き込み禁止指示手段６１３の動作を図２８を用いて説明する。
まず、Ｓ９８２において、消去単位番号保持領域６０３の内容を参照し、消去単位番号の記録が存在するか判定する。存在しない場合、Ｓ９８５へ進む。
【０１０２】
Ｓ９８２において、消去単位番号保持領域６０３に消去単位番号の記録が存在する場合、消去ブロックバッファにデータが残っているので、これをフラッシュメモリ１０１に書き戻す処理を行う。まず、Ｓ９８３において、消去命令手段３０１に対し消去指示を出した後、書き込み手段３０２に書き込み指示を出し、消去ブロックバッファ１０３の内容をフラッシュメモリ１０１に書き込む。この消去指示および書き込み指示の内容は、実施の形態７におけるデータ書き込み時の動作（図２３）のＳ８０８の処理と同様である。続いて、Ｓ９８４にて消去単位番号保持領域２０２をクリアし、消去ブロックバッファにデータが存在しないことを示す。
【０１０３】
次に、Ｓ９８５にて、書き込み禁止フラグ領域６０３に書き込み禁止を意味する値を書き込む。これにより、以降のメモリへのデータ書き込み時に、データを書き込むことを抑制することが可能となる。
以上が書き込み禁止指示手段６１３の動作である。
【０１０４】
以上のように、この実施の形態によれば、書き込み禁止フラグ領域を設け、書き込み許可指示手段において、書き込みを許可する値を設定し、書き込み禁止手段において書き込みを禁止する値を設定し、書き込み制御手段は書き込み禁止フラグ領域の値が書き込み許可を示すときのみ書き込みを実施するようにしたので、データの書き込みを抑制する情報処理装置を得ることができる。
また、書き込み禁止指示時に、消去ブロックバッファの内容をフラッシュメモリに書き込むようにし、書き込み禁止状態では不揮発性メモリにデータが残らないようにしたので、不揮発性メモリが電池などでデータの内容を保持するようなメモリの場合において、電源断後の電池の電圧降下による不揮発性メモリ内のデータ破壊においても、データが消去されないようにすることができる。
【０１０５】
実施の形態１０．
図２９は実施の形態１０における情報処理装置の概略を示す構成図である。図において、６０１は不揮発性メモリ１０２内のエリアであって、消去単位番号保持領域２０２内の値と同じ値が記録される消去単位番号確認領域、６１１は情報処理装置の起動時に実行され、消去単位番号保持領域２０２, および消去単位番号確認領域６０１内のデータを元に、消去ブロックバッファ１０３の内容をフラッシュメモリ１０１に書き戻す復旧手段である。他の構成は図４において説明した構成の同一または相当部であり、説明を省略する。
【０１０６】
本実施の形態において、メモリへのデータ書き込み時の動作を図３０を用いて説明する。以下の各処理は、断りのない限り書き込み制御手段１１１の動作である。図３０において、Ｓ１００１〜Ｓ１００３、Ｓ１００５、Ｓ１００６、Ｓ１００８、Ｓ１００９、Ｓ１０１１は実施の形態２の処理（図５のＳ２０１〜Ｓ２０３、Ｓ２０４、Ｓ２０５、Ｓ２０７、Ｓ２０８、Ｓ２０９）と同一であるので説明を省略する。
この実施の形態ではＳ１００４、Ｓ１００７、Ｓ１０１０の処理を有する点で相違するため、この点を中心に説明する。
【０１０７】
Ｓ１００１で書き込み要求を受け、Ｓ１００２で書き込み要求領域を含むフラッシュメモリ１０１上の消去単位番号を求め、Ｓ１００３で消去単位番号保持領域２０２を参照し、消去単位番号保持領域２０２に消去単位番号の記録が存在するかを判定する。
【０１０８】
消去単位番号の記録が存在しなければ、Ｓ１００４にてＳ１００２にて求められた消去単位番号を消去単位番号保持領域２０２に書き込む。続いて、Ｓ１００５で書き込みデータを消去ブロックバッファ１０３に書き込み、Ｓ１００６で待避手段１１２に対して待避指示を行う。待避手段１１２は、Ｓ１００２で求めた番号のフラッシュメモリの消去単位領域から、不変データを消去ブロックバッファ１０３に書き込む。
【０１０９】
続いて、Ｓ１００７にて、Ｓ１００２において求められた消去単位番号を消去単位番号確認領域６０１に書き込む。これにより、消去単位番号保持領域２０２および消去単位番号確認領域６０１の値が同一の場合、消去ブロックバッファ１０３への書き込みは全て完了したことを示すことになる。Ｓ１００７の処理が終了すると、フラッシュメモリ１０１にデータを書き込むことなく、メモリへのデータ書き込み処理を終了する。
【０１１０】
Ｓ１００３において、消去単位番号保持領域２０２に消去単位番号の記録が存在する場合には、Ｓ１００８、Ｓ１００９により消去ブロックバッファ１０３の内容をフラッシュメモリ１０１内に書き込んだ後、Ｓ１０１０にて消去単位番号保持領域２０２および消去単位番号確認領域６０１の内容をクリアする。即ち、消去単位番号保持領域２０２および消去単位番号確認領域６０１がクリアされているということは消去ブロックバッファ１０３にデータがないことを示す。
【０１１１】
続いて、消去単位番号の記録が存在しない場合と同様に、Ｓ１００４からＳ１００７の処理を行い、消去単位番号保持領域への消去単位番号の設定、書き込みデータの消去ブロックバッファへの書き込み、フラッシュメモリからのデータの待避、消去単位番号確認領域への消去単位番号の設定を行う。
【０１１２】
Ｓ１００８で、Ｓ１００２で求めた消去単位番号が消去単位番号保持領域２０２に存在する記録と一致する場合には、Ｓ１０１１において、書き込み要求データを消去ブロックバッファ１０３へ書き込む。
以上がメモリへのデータ書き込み時の動作である。
【０１１３】
次に、情報処理装置の起動時に実行される復旧手段６１１の動作を図３１を用いて説明する。
復旧手段はまず、Ｓ１０５１において、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１の値を読み出す。続いてＳ１０５２にて、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１にフラッシュメモリ内の消去単位番号が存在するかチェックする。
【０１１４】
番号が存在しない場合、消去ブロックバッファにはデータがないので、復旧手段の処理を終了する。
Ｓ１０５２にて、番号が存在する場合、Ｓ１０５３にて、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１の値が同一かを判定する。
値が同一な場合、消去ブロックバッファにはデータが残っていることを示すので、復旧手段６１１はＳ１０５４にて、消去命令手段３０１に対し消去指示を出した後、書き込み手段３０２に書き込み指示を出し、消去ブロックバッファ１０３の内容をフラッシュメモリ１０１に書き込む。この消去指示および書き込み指示の内容は、実施の形態７におけるデータ書き込み時の動作（図２３）のＳ８０８の処理と同様である。
【０１１５】
値が同一でない場合、まだ消去ブロックバッファの内容が完成していない、即ち図３０において、Ｓ１００５からＳ１００７の間に電源断が発生し、情報処理装置が再起動されたことになり、消去ブロックバッファ１０３内のデータは途中までの書き込みデータしか存在しないので、復旧手段６１１はＳ１０５５にて、情報処理装置にエラー通知を行う。これにより、情報処理装置は書き込み途中の電源断を検出することができる。
【０１１６】
Ｓ１０５４またはＳ１０５５の処理が終了すると、復旧手段６１１はＳ１０５６にて、消去単位番号保持領域２０２および消去単位番号確認領域６０１をクリアする。これは、Ｓ１０５４経由の場合、消去ブロックバッファへの書き込みが完了したことを意味し、Ｓ１０５５経由の場合はエラー通知にて、消去ブロックバッファのエラーを通知したので、再度消去ブロックバッファを利用可能状態にするために実施される。
以上が復旧手段６１１の動作である。
【０１１７】
以上のように、この実施の形態によれば、メモリへのデータ書き込み時において、消去ブロックバッファへのデータ書き込み前に消去番号保持領域消去単位番号を書き込み、待避手段に待避指示を出した後に消去単位番号確認領域に消去単位番号を格納するようにしたので、電源断の復旧時に書き込み要求処理中に電源断が発生したかを検知することができる情報処理装置を得ることができる。
【０１１８】
さらに、復旧時に消去ブロックバッファの内容をフラッシュメモリに書き戻すようにしたので、復旧後に、データの書き込みを行わない限り、データは全てフラッシュメモリ上に存在し、電池等でバックアップする不揮発性メモリを消去ブロックバッファに使うような場合、電源断後の電圧降下による不揮発性メモリ内の内容が不正になることによる、データ破壊を防ぐことができる。
【０１１９】
実施の形態１１．
本発明の他の実施形態における情報処理装置について説明する。情報処理装置の構成は、実施の形態１０と同様であり、図２９に示される。本実施の形態の基本動作は復旧手段６１１の処理動作以外は実施の形態１０と同じである。
本実施の形態における復旧手段６１１の動作を図３２を用いて説明する。
【０１２０】
復旧手段はまず、Ｓ１１０１において、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１の値を読み出す。続いて、Ｓ１１０２において、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１にフラッシュメモリ内の消去単位番号が存在するか判定する。
【０１２１】
番号が存在しない場合、消去ブロックバッファにはデータがないので、復旧手段の処理を終了する。
Ｓ１１０２にて番号が存在する場合、Ｓ１１０３にて、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１の値が同一かを判定する。値が同一な場合、消去ブロックバッファにはデータが残っていることを意味し、処理を終了する。
【０１２２】
値が同一でない場合、消去ブロックバッファ１０３内のデータは途中までの書き込みデータしか存在しないので、復旧手段６１１はＳ１１０４にて、情報処理装置にエラー通知を行う。これにより、情報処理装置は書き込み途中の電源断を検出することができる。続いて、Ｓ１１０５にて、再度消去ブロックバッファを利用可能状態にするため、消去単位番号保持領域２０２および消去単位番号確認領域６０１の内容をクリアする。
以上が復旧手段６１１の動作である。
【０１２３】
以上のように、この実施の形態によれば、復旧時に消去単位番号保持領域の内容と消去単位番号確認領域の内容が一致していた場合はなにもせず、一致していない場合のみエラー通知および消去単位番号保持領域・消去単位番号確認領域のクリアを行うようにしたので、消去ブロックバッファに内容が残っている場合の復旧処理を速くすることができる。
【０１２４】
実施の形態１２．
図３３は、実施の形態１１における情報処理装置の概略を示す構成図である。図において、６０１は不揮発性メモリ１０２内のエリアであって、消去単位番号保持領域２０２内の値と同じ値が記録される消去単位番号確認領域、６０４は消去ブロックバッファを一定サイズ毎に区切り、各区域内のデータが正しいことを示すチェック値が格納された消去ブロックバッファ管理領域である。
【０１２５】
また図において、６１１は情報処理装置の起動時に実行され、消去単位番号領域２０２、および消去単位番号確認領域６１１、および消去ブロックバッファ管理領域６０４内のデータを元に、消去ブロックバッファ１０３の内容をフラッシュメモリ１０１に書き戻す復旧手段であり、６１４は書き込み制御手段１１１および待避手段１１２からの書き込み指示により、書き込みデータを消去ブロックバッファに書き込むとともに、書き込んだ領域に対応するチェック値を消去ブロックバッファ管理領域６０４に書き込む消去ブロックバッファ書き込み手段である。これ以外の構成については、図４と同様である。
【０１２６】
次に、消去ブロックバッファ管理領域６０４の構造を図３４を用いて説明する。消去ブロックバッファ管理領域６０４は消去ブロックバッファ１０３を一定サイズ、例えば４Ｋバイト毎に区切り、各区域に対して、その区域内のデータチェックに用いる値、例えば区域内のデータをすべて加算したチェックサム値などが入る。
【０１２７】
図３４の例では、書き込み領域１のデータチェック値（チェックサム値）が「０x１２３４５６７８」、書き込み領域２のデータチェック値（チェックサム値）が「０x７８９a１２３」、書き込み領域３のデータチェック値（チェックサム値）が「０xa１b８９０１」となっている(０xは１６進数を示す)。書き込み領域１、書き込み領域２、書き込み領域３は消去ブロックバッファ１０３内の一定サイズの区域を示す。
【０１２８】
消去ブロックバッファ書き込み手段６１４は、書き込み領域１への書き込みがあった場合、消去ブロックバッファ１０３にデータを書き込むとともに、消去ブロックバッファ管理領域の書き込み領域１に対応する領域、即ち図３４において、「０x１２３４５６７８」が格納されている領域に書き込み領域１のデータチェック値を書き込む。
【０１２９】
次に本実施の形態におけるメモリへのデータ書き込み時の動作を図３５を用いて説明する。以下の各処理は断りがない限り書き込み制御手段１１１の動作である。図３５において、Ｓ１２０１〜Ｓ１２０３、Ｓ１２０４、Ｓ１２０７〜Ｓ１２１０は実施の形態１０の処理（図２９のＳ１００１〜Ｓ１００３、Ｓ１００４、Ｓ１００７〜Ｓ１０１０）と同一であるので説明を省略する。
この実施の形態ではＳ１２０５、Ｓ１２０６、Ｓ１２１１の処理を有する点で相違するため、この点を中心に説明する。
【０１３０】
Ｓ１２０１〜Ｓ１２０４までを実施の形態１０と同様に実行する。
そして、Ｓ１２０４を実行した後、Ｓ１２０５において書き込みデータを消去ブロックバッファに書き込むため消去ブロックバッファ書き込み手段６１４に指示を行う。この指示には、書き込みデータの消去ブロックバッファ１０３上の位置およびサイズおよび書き込みデータが含まれる。消去ブロックバッファ書き込み手段６１４の具体的な処理内容については後述する。
【０１３１】
次に、Ｓ１２０６において、待避手段１１２に対して待避指示を行う。待避手段１１２の処理内容については後述する。
続いて、Ｓ１２０７でＳ１２０２において求められた消去単位番号を消去単位番号確認領域６０１に書き込む。Ｓ１２０７の処理が終了すると、フラッシュメモリ１０１にデータを書き込むことなく、メモリへのデータ書き込み処理を終了する。
【０１３２】
Ｓ１２０８で、Ｓ１２０２で求めた消去単位番号が消去単位番号保持領域２０２に存在する記録と一致する場合には、Ｓ１２１１において消去ブロックバッファ書き込み手段に指示し、書き込み要求データを消去ブロックバッファ１０３へ書き込む。この指示には、書き込みデータの消去ブロックバッファ１０３上の位置およびサイズおよび書き込みデータが含まれる。消去ブロックバッファ書き込み手段６１４の具体的な処理内容については後述する。
以上がメモリへのデータ書き込み時の動作である。
【０１３３】
次に、フラッシュメモリ１０１内の不変データを消去ブロックバッファ１０３に書き込む待避手段１１２の動作を、図３６を用いて説明する。
待避手段１１２は、まずＳ１２３１において書き込み要求データが含まれるフラッシュメモリ１０１内の消去単位領域の先頭から、書き込み要求データが含まれる領域の先頭までのデータをフラッシュメモリ１０１から読み出し、消去ブロックバッファ書き込み手段６１４に指示し、読み出したデータを消去ブロックバッファ１０３に書き込む。この時、消去ブロックバッファ書き込み手段６１４への指示には、消去単位領域の先頭アドレス、消去単位領域の先頭アドレスから書き込み要求領域の先頭までのサイズ、およびフラッシュメモリ１０１から読み出したデータが含まれる。
【０１３４】
次に待避手段１１２はＳ１２３２において、書き込み要求データが含まれるフラッシュメモリ１０１内の消去単位領域の書き込み要求領域の最後から消去単位領域の最後までのデータをフラッシュメモリ１０１から読み出し、消去ブロックバッファ書き込み手段６１４に指示し、読み出したデータを消去ブロックバッファ１０３に書き込む。この時、消去ブロックバッファ書き込み手段６１４への指示には、消去単位領域内の書き込み要求領域の最後方アドレス、消去単位領域内の書き込み要求領域の最後方アドレスから消去単位領域の最後方アドレスまでのサイズ、およびフラッシュメモリ１０１から読み出したデータが含まれる。
以上が、待避手段１１２の動作である。これにより、消去単位領域内の不変データが消去ブロックバッファ１０３に書き込まれる。
【０１３５】
次に、消去ブロックバッファ１０３にデータを書き込む消去ブロックバッファ書き込み手段６１４の動作を図３７を用いて説明する。
まず、Ｓ１２５１において、消去ブロックバッファ１０３への書き込み要求を受ける。この書き込み要求には、書き込むデータとしての書き込み要求データ、データを書き込む消去ブロックバッファ１０３上のアドレスを特定する書き込み要求領域、そしてデータの大きさの情報が含まれている。
【０１３６】
次にＳ１２５２において、書き込み要求データを消去ブロックバッファ管理領域で管理するサイズに分割する。例えば、管理するサイズの単位が１０００バイトで、書き込み要求データが消去ブロックバッファの先頭からのオフセットで１００〜２０９９のところまでを占める場合、書き込み要求データは、消去ブロックバッファの先頭からのオフセットで、１００〜９９９、１０００〜１９９９, ２０００〜２０９９の３つに分割される。これは、書き込み要求領域から見たオフセットでは、０〜８９９, ９００〜１８９９, １９００〜１９９９の領域となる。以降、この分割された領域を先頭から順に処理していく。即ち、まず１００〜９９９の領域、次に１０００〜１９９９の領域、２０００〜２０９９の領域が処理されていく。
【０１３７】
次にＳ１２５３において、消去ブロックバッファに分割された書き込み要求データを書き込む。この時、書き込み要求データ以外の領域、例えば、１００〜９９９に対する書き込みの場合の、０〜９９の部分に対する書き込みは実施しない。
続いてＳ１２５４において、書き込んだ領域に対するチェック値を求め、それを消去ブロックバッファ管理領域の対応するチェック値領域に書き込む。例えば、１００〜９９９までの書き込みをＳ１２５３にて行った場合、Ｓ１２５４は図３４の書き込み領域１のデータチェック値に消去ブロックバッファ１０３内のオフセット０〜９９９までのデータチェック値を書き込む。このデータチェック値は対応する領域内のデータが正しいか否かをチェックする基準値として用いられるものであり、領域内のデータ値を全て加算したチェックサム値などが入る。
【０１３８】
次にＳ１２５５において、書き込み要求データが全て消去ブロックバッファに書き込まれたかをチェックする。Ｓ１２５５において、まだ書き込み要求データがすべて書き込まれていない場合は、次の分割された書き込み要求領域、即ち１００〜９９９に対する書き込みを行っていた場合は、１０００〜１９９９までの領域に対し、Ｓ１２５３およびＳ１２５４の処理を行う。
以上が消去ブロックバッファ書き込み手段の動作である。
【０１３９】
次に、情報処理装置の起動時に実行される復旧手段６１１の動作を図３８を用いて説明する。
復旧手段はまず、Ｓ１２８１において、消去番号保持領域２０２内の値と消去単位番号確認領域６０１の値を読み出す。続いて、Ｓ１２８２にて、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１にフラッシュメモリ内の消去単位番号が存在するかチェックする。
【０１４０】
Ｓ１２８１で番号が存在しない場合、消去ブロックバッファにはデータがないので、復旧手段の処理を終了する。
Ｓ１２８２で番号が存在する場合、Ｓ１２８３にて、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１の値が同一かをチェックする。
【０１４１】
Ｓ１２８３で値が同一でない場合、Ｓ１２８７に進み、情報処理装置にエラー通知を行う。これにより情報処理装置は書き込み途中の電源断を検出することができる。その後、Ｓ１２８８にて、消去単位番号保持領域２０２および消去単位番号確認領域６０１をクリアする。これにより、消去ブロックバッファを利用可能状態にする。
Ｓ１２８３で消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１の値が同一である場合、Ｓ１２８４に進む。
【０１４２】
Ｓ１２８４では、消去ブロックバッファ管理領域６０４内の各書き込み領域のデータチェック値を読み出す。また、対応する消去ブロックバッファ１０３内の領域の値を算出する（この算出規則は書き込み領域のデータチェック値の算出規則と同様の規則にて行う、例えばデータチェック値がチェックサム値であれば、データの合計値を算出する）。そして、消去ブロックバッファ管理領域６０４内の各書き込み領域のデータチェック値と消去ブロックバッファ１０３内の領域の計算値とを比較する。
【０１４３】
両者の値が一致すれば、消去ブロックバッファ１０３のデータが妥当であると判定する。消去ブロックバッファ内の領域のデータが妥当でない場合、Ｓ１２８７に進み情報処理装置にエラー通知を行う。これにより、本発明の手段以外の操作により消去ブロックバッファ１０３にデータが書き込まれたり、消去ブロックバッファ１０３が使用している不揮発性メモリが故障した場合のエラーを検出することができる。そして、Ｓ１２８８にて消去単位番号保持領域２０２と消去単位番号確認領域６０１の内容をクリアする。これにより、消去ブロックバッファを利用可能状態にする。
【０１４４】
Ｓ１２８５にて、消去ブロックバッファ管理領域６０４内の値が妥当であると判断した場合、Ｓ１２８６に進む。Ｓ１２８６では、消去ブロックバッファ内のデータチェックが最終領域まで達したかを判定する。最終領域まで達していない場合、次の領域へ進み、Ｓ１２８４〜Ｓ１２８６の処理を続行する。
Ｓ１２８６にて、消去ブロックバッファ内の最終領域まで到達した場合、処理を終了する。これにより、復旧後、消去ブロックバッファ内のデータは正しいことがわかる。
【０１４５】
以上のように、この実施の形態によれば、消去ブロックバッファ内を一定のサイズに分割し、個々の領域に対するデータチェック値を格納する消去ブロックバッファ管理領域を設けたので、消去ブロックバッファを保持している不揮発性メモリが故障し、消去ブロックバッファ内のデータが不正になっても、情報処理装置がそれを検出することができる。
【０１４６】
さらに、消去ブロックバッファ内を一定サイズに分割したので、消去ブロックバッファに格納されている消去単位領域と同一の領域に対する書き込み要求があった場合、その書き込み要求領域に付随する領域のみデータチェック値を更新すればよく、消去ブロックバッファ全体のデータチェック値を再計算する必要がないので、メモリへのデータ書き込み処理が速くなる。
【０１４７】
実施の形態１３．
本発明の他の実施形態における情報処理装置について説明する。情報処理装置の構成は、実施の形態１２と同様であり、図３３に示される。本実施の形態では、消去ブロックバッファ管理領域６０４の構造と消去ブロックバッファ書き込み手段６１４および復旧手段６１１の動作以外は実施の形態１２と同様である。
【０１４８】
図３９は本実施の形態における消去ブロックバッファ管理領域６０４の構造である。本実施の形態では、消去ブロックバッファを任意のサイズで管理するため、消去ブロックバッファ管理領域には領域を示す情報として、消去ブロックバッファ内のオフセット値、領域のサイズ、データチェック値の３つのデータが保持される。図において、「−１」となっているのは、領域情報が格納されていないことを示す。
【０１４９】
本実施の形態における消去ブロックバッファ書き込み手段６１４の動作を図４０を用いて説明する。
まず、Ｓ１３０１にて、消去ブロックバッファ１０３への書き込み要求を受ける。この書き込み要求には、書き込みデータとしての書き込み要求データ、データを書き込み消去ブロックバッファ１０３上のアドレスを特定する書き込み要求領域、そしてデータの大きさの情報が含まれている。
【０１５０】
続いて、Ｓ１３０２において、書き込み要求データを消去ブロックバッファに１０３に書き込む。
次に、Ｓ１３０３において、消去ブロックバッファ管理領域６０４を検索する。
Ｓ１３０４において、Ｓ１３０１で受けた書き込み要求の書き込み要求領域が消去ブロックバッファ管理領域６０４に登録されている領域と同一領域か判定する。もし、同一領域が存在する場合、Ｓ１３０５に進み、既に消去ブロックバッファ管理領域６０４に保持されているデータチェック値を書き込み要求データのデータチェック値に更新し、処理を終了する。
【０１５１】
Ｓ１３０４で同一の領域でないと判定した場合、Ｓ１３０６において、書き込み要求領域が消去ブロックバッファ管理領域６０４に登録されている領域に含まれる（例えば、オフセット０〜１０００までの領域が登録されていた時にオフセット２００〜４００まで領域に対し書き込みがあった場合）か判定する。もし、含まれる場合場合にはＳ１３０７にて、消去ブロックバッファ管理領域６０４に登録されている領域のデータ（消去ブロックバッファ内オフセット、サイズ、データチェック値）を削除する。
【０１５２】
そして、登録されていた領域の先頭から書き込み要求データの先頭までの領域を新規に登録(Ｓ１３０８)し、さらに書き込み要求領域を新規登録し（Ｓ１３０９）、最後に書き込み要求データの最後から登録されていた領域の最後までの領域を新規登録(Ｓ１３１０)し、処理を終了する。それぞれ新規登録の際に、消去ブロックバッファ内オフセット、サイズ、データチェック値を書き込む。
【０１５３】
Ｓ１３０６にて、消去ブロックバッファ管理領域６０４に登録されている領域が書き込み要求領域を含まなかった場合、Ｓ１３１１にて、消去ブロックバッファ管理領域６０４に登録されている領域で、書き込み要求領域が跨ぐ領域があるか判定する。
【０１５４】
もし、跨ぐ領域が存在する場合、Ｓ１３１２にて、消去ブロックバッファ管理領域６０４に登録されている、書き込み要求領域が跨ぐ領域を全て削除する。続いて、跨れた領域の最初の領域の先頭から、書き込み要求領域の先頭までを消去ブロックバッファ管理領域６０４に新規登録(Ｓ１３１３)し、さらに書き込み要求領域を消去ブロックバッファ管理領域６０４に新規登録した(Ｓ１３１４)後、書き込み要求領域の最後から跨れた領域の最後の領域の最後までを新規登録(Ｓ１３１５)し、処理を終了する。それぞれ新規登録の際に、消去ブロックバッファ内オフセット、サイズ、データチェック値を書き込む。
【０１５５】
Ｓ１３１１にて、消去ブロックバッファ管理領域６０４に登録されている領域で、書き込み要求領域が跨ぐ領域が存在しない場合、消去ブロックバッファ管理領域６０４には書き込み要求領域に対する情報が格納されていないので、Ｓ１３１６において、書き込み要求領域を消去ブロックバッファ管理領域６０４に新規登録する。この時、消去ブロックバッファ管理領域６０４には、書き込み要求領域の消去ブロックバッファ１０３上の位置（オフセット）、書き込み要求領域のサイズ、および書き込み要求データが正しいことを示すチェック値が格納される。
以上が消去ブロックバッファ書き込み手段６１４の動作である。
【０１５６】
次に、消去ブロックバッファ管理領域６０４内のデータ操作を図４１の例を用いて説明する。図４１では、オフセット値０x２０００(０xは１６進数を示す)、サイズ０x２０００、データチェック値０xfedca１２３のデータを書き込んだ場合の、消去ブロックバッファ内のデータ操作を示している。
【０１５７】
まず、最初の例（例１）は書き込み要求領域が消去ブロックバッファ管理領域６０４に登録されている領域と同一のものがあった場合の例である。この例では、消去ブロックバッファ管理領域６０４には、オフセット０x２０００、サイズ０x２０００の領域が既に登録されており、これは書き込み要求データと同じ領域である。
【０１５８】
この場合、消去ブロックバッファ書き込み手段６１４は、図４０のＳ１３０５の処理、即ち、既に登録されていた領域のチェック値を書き込み要求データに対するチェック値に更新する。これにより、データ書き込み後は図４１中の網掛けの部分が更新される。
【０１５９】
次の例（例２）は、書き込み要求領域が消去ブロックバッファ管理領域６０４に登録されている領域の中に含まれる場合の例である。この例では、消去ブロックバッファ管理領域６０４には、オフセット０x１０００、サイズ０x４０００の領域があり、書き込み要求領域はこの領域に含まれる。この場合、消去ブロックバッファ書き込み手段６１４は、図４０のＳ１３０７〜Ｓ１３１０の処理を行う。
【０１６０】
初めに、登録されている領域、即ちオフセット０x１０００、サイズ０x４０００のデータを削除する（図４０、Ｓ１３０７）。次に登録されていた領域の先頭から書き込み要求領域の先頭までの領域（オフセット０x１０００, サイズ０x１０００）を新規登録する（図４０, Ｓ１３０８）。そして、書き込み要求領域（オフセット０x２０００, サイズ０x２０００）を新規登録する(図４０, Ｓ１３０９)。最後に、書き込み要求データの最後から登録されていた領域の最後までの領域(オフセット０x４０００,サイズ０x１０００)を新規登録する(図４０, Ｓ１３１０)。これにより、データ書き込み後は図４１中の網掛けの部分が更新される。
【０１６１】
次の例(例３)は、書き込み要求領域が消去ブロックバッファ管理領域６０４に登録されている領域を跨ぐ場合の例である。この例では、書き込み要求領域は、消去ブロックバッファ管理領域６０４に登録されている２つの領域（オフセット０x００００,サイズ０x３０００の領域およびオフセット０x３０００、サイズ０x２０００の領域）を跨ぐ。この場合、消去ブロックバッファ書き込み手段６１４は、図４０のＳ１３１２〜Ｓ１３１５の処理を行う。
【０１６２】
初めに、登録されている領域、即ちオフセット０x００００,サイズ０x３０００の領域およびオフセット０x３０００,サイズ０x２０００の領域を削除する（図４０, Ｓ１３１２）。次に登録されていた領域の内最初の領域（オフセット０x００００、サイズ０x３０００）の先頭から、書き込み要求領域の先頭までの領域（オフセット０x００００,サイズ０x２０００）を新規登録する(図４０, Ｓ１３１３)。そして書き込み要求領域（オフセット０x２０００, サイズ０x２０００）を新規登録する（図４０, Ｓ１３１４）。最後に、書き込み要求領域の最後から跨れた領域の最後の領域の最後までの領域（オフセット０x４０００, サイズ０x１０００）を新規登録する（図４０, Ｓ１３１５）。これにより、データ書き込み後は図４１中の網掛けの部分が更新される。
【０１６３】
最後の例（例４）は、書き込み要求領域が消去ブロックバッファ管理領域６０４に登録されていない場合の例である。この例では、消去ブロックバッファ管理領域６０４には、オフセット０x４０００,サイズ０xc０００の領域のみ登録されており、書き込み要求領域（オフセット０x２０００, サイズ０x２０００）は登録されていない。
【０１６４】
この場合、消去ブロックバッファ書き込み手段６１４は図４０のＳ１３１６の処理、即ち、書き込み要求領域(オフセット０x２０００, サイズ０x１０００)を消去ブロックバッファ管理領域６０４に新規登録する。これにより、データ書き込み後は図４１中の網掛けの部分が更新される。
【０１６５】
次に本実施の形態における復旧手段６１１の動作を図４２を用いて説明する。
復旧手段６１１はまず、Ｓ１３５１において、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１の値を読み出す。続いて、Ｓ１２８２にて、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１にフラッシュメモリ内の消去単位番号が存在するかチェックする。
【０１６６】
番号が存在しない場合、消去ブロックバッファにはデータがないので、復旧手段の処理を終了する。
Ｓ１３５２において、番号が存在する場合、Ｓ１３５３にて、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１の値が同一かをチェックする。
値が同一でない場合、Ｓ１３５７に進み、情報処理装置にエラー通知を行う。これにより、情報処理装置は書き込み途中の電源断を検出することができる。その後、Ｓ１３５８にて、消去単位番号保持領域２０２および消去単位番号確認領域６０１をクリアする。これにより、消去ブロックバッファを利用可能状態にする。
【０１６７】
Ｓ１３５３にて、消去単位番号保持領域２０２内の値と消去単位番号確認領域６０１の値が同一である場合、Ｓ１３５４に進む。Ｓ１３５４では、消去ブロックバッファ管理領域６０４に登録されている領域情報に対応させて、消去ブロックバッファ１０３内のデータを読み出す。そして、消去ブロックバッファ１０３内のデータを用いて値を算出する（この算出規則は書き込み領域のデータチェック値の算出規則と同様の規則にて行う、例えばデータチェック値がチェックサム値であれば、データの合計値を算出する）。
続いて、Ｓ１３５５にて算出した値と消去ブロックバッファ管理領域６０４の領域情報にあるデータチェック値をチェックする。
【０１６８】
両者の値が一致すれば、消去ブロックバッファ１０３のデータが妥当であると判定する。
【０１６９】
Ｓ１３５５にて妥当でない、即ち消去ブロックバッファ１０３内のデータが正しくない場合、Ｓ１３５７に進み、情報処理装置にエラー通知を行う。これにより、本発明の手段以外の操作により消去ブロックバッファ１０３にデータが書き込まれたり、消去ブロックバッファ１０３が使用している不揮発性メモリが故障したことを検出することができる。そして、Ｓ１３５８にて消去単位番号保持領域２０２と消去単位番号確認領域６０１の内容をクリアする。これにより、消去ブロックバッファを利用可能状態にする。
【０１７０】
Ｓ１３５５にて妥当であると判断した場合、Ｓ１３５６に進む、。Ｓ１３５６では、消去ブロックバッファ管理領域６０４に登録されている領域の最後に到達したかチェックする。領域の最後まで到達していない場合、次の領域に対し、Ｓ１３５４〜Ｓ１３５６の処理を続行する。
【０１７１】
Ｓ１３５６にて、消去ブロックバッファ管理領域６０４に登録されている領域の最後に登録されている領域まで達した場合、処理を終了する。これにより、復旧後、消去ブロックバッファには正しいデータのみ残る。
以上のように、この実施の形態によれば、消去ブロックバッファ管理領域に登録する領域を可変サイズにするようにしたので、消去ブロックバッファ書き込み手段でバッファへの書き込み時に書き込み要求領域を分割する必要がなく、メモリへのデータ書き込み処理を高速に行うことができる。
【０１７２】
実施の形態１４．
本発明の他の実施の形態における情報処理装置について説明する。情報処理装置の構成は、実施の形態１２と同様であり、図３３に示される。本実施の形態では、読み出し手段の動作以外は実施の形態１２と同様である。
【０１７３】
本実施の形態における読み出し手段２０１の動作を図４３を用いて説明する。図４３において、Ｓ１４０１〜Ｓ１４０３、Ｓ１４０４は実施の形態２の処理（図６のＳ２１１〜Ｓ２１３、Ｓ２１５）と同一であるので説明を省略する。
この実施の形態ではＳ１４０５、Ｓ１４０６、Ｓ１４０７の処理を有する点で相違するため、この点を中心に説明する。
【０１７４】
Ｓ１４０１において読み出し要求を受けると、Ｓ１４０２において読み出し要求領域を含むフラッシュメモリの消去単位の番号を求め、Ｓ１４０３において消去単位番号保持領域２０２の記録とＳ１４０２において求めた消去単位の番号とが一致するかを判定する。
消去単位番号の記録が消去単位番号保持領域２０２に存在しないか、あるいは記録された消去番号がＳ１４０２において求めたものと一致しない場合には、読み出し領域のデータは消去ブロックバッファに保持されていないので、Ｓ１４０４において、フラッシュメモリからデータの読み出しを行う。
【０１７５】
消去単位番号の記録がＳ１４０２において求めたものと一致する場合、Ｓ１４０５に進み、読み込み要求領域のデータを消去ブロックバッファ１０３から読み出す。
続いてＳ１４０６において、読み出した領域に対応する消去ブロックバッファ管理領域６０４のデータチェック値を用いて、読み出した領域のデータが正しいか否かを判定する。即ち、Ｓ１４０５で消去ブロックバッファ１０３から読み出したデータを用いて値を算出し（この算出規則は消去ブロックバッファ管理領域６０４のデータチェック値を算出する算出規則と同様の規則である。）、この算出値と読み出した領域に対応する消去ブロックバッファ管理領域６０４のデータチェック値とが同一か否かを判定する。
両者が同一の値であれば、消去ブロックバッファ１０３から読み出したデータが妥当であると判断する。
【０１７６】
Ｓ１４０６で妥当でないと判断した場合、Ｓ１４０７にて情報処理装置にエラー通知を行い、処理を終了する。Ｓ１４０６で妥当であると判断した場合、読み出した領域のデータは正しい値であるので、そのまま処理を終了する。
【０１７７】
以上のように本実施の形態によれば、消去ブロックバッファ管理領域にあるデータチェック値をデータ読み出し時のデータチェック用に利用するようにしたので、本発明以外の手段により消去ブロックバッファにデータ書き込みが発生した場合や不揮発性メモリに故障が発生した場合、読み出し時にそれをエラーとして検出することができる。
【０１７８】
実施の形態１５．
本発明の他の実施の形態における情報処理装置について説明する。情報処理装置の構成は、実施の形態１２と同様であり、図３３に示される。本実施の形態では、読み出し手段の動作以外は実施の形態１２と同様である。
本実施の形態における読み出し手段２０１の動作を図４４を用いて説明する。図４４において、Ｓ１５０１〜Ｓ１５０６は実施の形態１４の処理（図４３のＳ１４０１〜Ｓ１４０６）と同一であるので説明を省略する。
【０１７９】
この実施の形態ではフラッシュメモリからの読み出しＳ１５０４の処理をＳ１５０６において消去ブロックバッファ１０３から読み出したデータが妥当でなかった場合にも行う。Ｓ１５０４では、読み出し要求領域に対応するフラッシュメモリ上の領域からデータを読み込み、その後処理を終了する。
尚、Ｓ１５０４の処理は、消去単位番号の記録が消去単位番号保持領域２０２に存在しないか、あるいは記録された消去番号がＳ１５０２において求めたものと一致しない場合にも行う。
【０１８０】
以上のように本実施の形態によれば、消去ブロックバッファ１０３の読み出し時に、読み出したデータが正しくない場合、消去ブロックバッファ１０３に対応するフラッシュメモリ上の領域からデータを読み込むようにしたので、書き込み前のデータを使い情報処理装置の動作を継続することができる。
【０１８１】
実施の形態１６．
図４５は本発明の他の実施の形態における情報処理装置の構成を示す図である。図において、６０５は消去ブロックバッファの消去単位番号情報や書き込みバッファの消去単位番号情報などが入るバッファ管理領域である。また、６１１は情報処理装置の起動時に実行され、バッファ管理領域６０５内の情報に従い、消去ブロックバッファ１０３および書き込みバッファ４０２のデータを復旧させる復旧手段である。他の構成は、図８における構成の同一もしくは相当部であり説明を省略する。なお、図８における消去単位番号保持領域２０２は図４５ではバッファ管理領域６０５内に設定される。
【０１８２】
図４６は、バッファ管理領域６０５に記録されているデータの内容を示す。バッファ管理領域６０５は、消去ブロックバッファの情報を格納する消去ブロックバッファ管理領域６０５１と、書き込みバッファの情報を格納する書き込みバッファ管理領域６０５２とで構成される。
【０１８３】
バッファ管理領域６０５の消去ブロックバッファ管理領域６０５１には、消去ブロックバッファ１０３が保持しているデータに対応するフラッシュメモリ上の消去単位番号を記録する消去単位番号保持領域と、消去単位番号保持領域と同じ値を持つ消去単位番号確認領域と、消去ブロックバッファ内のデータが正しいか否かのチェックに用いるデータチェック値を持つデータチェック値領域が含まれる。
【０１８４】
バッファ管理管理領域６０５の書き込みバッファ管理領域６０５２には、書き込みバッファ４０２に保存されてたデータが書き込まれるべきフラッシュメモリ１０１上の消去単位番号と、この消去単位領域内の書き込み領域の位置を特定するオフセットと、書き込み領域の大きさを示すサイズと、対応する書き込みバッファ内の領域のデータが正しいか否かのチェックに用いるデータチェック値と、この情報領域（消去単位番号領域、消去単位内オフセット、サイズ、データチェック値）のデータが正しいか否かのチェックに用いる管理領域チェック値を保持する。消去単位番号の「−１」は、これ以上書き込みデータが存在しないことを意味する。
【０１８５】
本実施の形態におけるメモリへの書き込み時の動作を図４７を用いて説明する。以下の各処理は断りがない限り書き込み制御手段１１１の動作である。
まず、Ｓ１６０１でデータの書き込み要求を受けるとＳ１６０２で書き込み要求がされたフラッシュメモリの消去単位の番号を求める。この動作は、実施の形態１および４と同様である。
【０１８６】
続いて、Ｓ１６０３において、消去ブロックバッファ管理領域６０５１の消去単位番号保持領域を参照し、消去単位番号の記録が存在するかを判定する。
ここで消去番号の記録が存在しなければ、Ｓ１６０４において、書き込み制御手段１１１は、消去ブロックバッファ管理領域６０５１内にある消去単位番号保持領域にＳ１６０２で求めた消去単位番号を格納する。
続いて、Ｓ１６０５において書き込み要求データを消去ブロックバッファ１０３に書き込み、Ｓ１６０６において待避手段１１２に対して待避指示を行う。待避指示の内容および待避手段の処理動作は実施の形態１および４と同様である。
【０１８７】
続いてＳ１６０７において、データチェック値を消去ブロックバッファ管理領域６０５１内にあるデータチェック値領域に書き込む。この値は、消去ブロックバッファ１０３内に書き込まれているデータが正しいか否かをチェックするために用いられる値であり、消去ブロックバッファ１０３内のデータ値をすべて加算したチェックサム値など、データが正しいか否かをチェックできる値が入る。
【０１８８】
さらにＳ１６０８において、Ｓ１６０２で求められた消去単位番号を消去ブロックバッファ管理領域６０５１内にある消去単位番号確認領域に格納する。これにより、消去単位番号保持領域および消去単位番号確認領域の値が同一の場合、消去ブロックバッファ１０３への書き込みは全て完了したことになる。
次に、Ｓ１６０９において消去命令手段３０１に対して消去指示を出す。消去指示の内容および消去命令手段３０１の動作は実施の形態４と同様である。
【０１８９】
Ｓ１６０３において消去ブロックバッファ管理領域６０５１内の消去単位番号保持領域に消去単位番号の記録が存在すると判断した場合には、Ｓ１６１０において、Ｓ１６０２で求めた消去単位番号が消去ブロックバッファ管理領域６０５１内の消去単位番号保持領域に存在する記録と一致するかを判定する。
【０１９０】
Ｓ１６１０で消去単位番号が異なると判断した場合には、Ｓ１６１１において、書き込みバッファ管理領域６０５２を参照し、書き込みバッファ管理領域６０５２に記録されている情報から、書き込み要求領域と同一の領域に書き込みを行うデータが既に書き込みバッファ４０２に存在するかを判定する。この判定は、実施の形態４と同様である。
Ｓ１６１１で書き込み要求領域と同一の領域に書き込みを行うデータが書き込みバッファ４０２に存在しないと判断した場合には、さらにＳ１６１２において書き込み制御手段１１１は書き込みバッファ４０２の空き領域を調べる。この処理は、実施の形態４と同様である。
【０１９１】
書き込みバッファ４０２に空き領域が存在しない場合には、Ｓ１６１３において書き込み制御手段１１１は、書き込み手段３０１に対し書き込み指示を行う。書き込み指示の内容および書き込み手段３０１の動作は実施の形態１と同様である。
続いて、Ｓ１６１４において消去ブロックバッファ管理領域６０５１の消去単位番号保持領域と消去単位番号確認領域の内容をクリアする。これにより、消去ブロックバッファ６０１にはデータが残っていないことを示す。
さらに、この後、Ｓ１６０４からＳ１６０９の処理を、消去単位番号の記録が存在しない場合と同様に行う。
【０１９２】
Ｓ１６１２で書き込みバッファに空き領域が存在した場合には、Ｓ１６１５において、書き込みデータを書き込みバッファ４０２の空き領域へ書き込む。
次にＳ１６１６において、書き込みバッファ管理領域６０５２に書き込みデータに関する管理情報を記録する。管理情報は、消去単位番号、消去単位番号が示す領域内で書き込みデータの位置を特定するオフセット、書き込みデータのサイズ、書き込みデータが正しいか否かのチェックに用いるデータチェック値、および前記３つの４つのデータが正しいか否かのチェックに用いる管理領域チェック値を記録する。書き込みバッファ管理領域６０５２における管理情報と、書き込みバッファ４０２における書き込みデータの対応づけは、各エリアにおけるアドレス上の順序が同一になるように記録されていることで行われる。
【０１９３】
Ｓ１６１１で書き込み要求領域と同一の領域に書き込みを行うデータが既に存在すると判定された場合には、Ｓ１６１７において、書き込みデータを書き込みバッファの同一領域のデータが記録されているエリアに書き込む。
続いてＳ１６１８において、書き込みバッファ管理領域６０５２の内、Ｓ１６１７で書き込みデータを書き込んだ領域に関する領域情報を更新する。この時更新される情報は、データチェック値および管理領域チェック値である。
【０１９４】
Ｓ１６１０で、Ｓ１６０２で算出した消去単位番号が消去ブロックバッファ管理領域６０５１の消去単位番号保持領域に存在する記録と一致すると判定された場合には、Ｓ１６１９において、書き込み要求データを消去ブロックバッファ１０３に書き込む。
続いて、Ｓ１６２０において、消去ブロックバッファ管理領域６０５１のデータチェック値領域に、更新された消去ブロックバッファ１０３内のデータから求めたデータチェック値を書き込む。
以上がメモリへのデータ書き込み時の動作である。
【０１９５】
次に、メモリからのデータ読み出し時の動作を図４８を用いて説明する。以下の各処理は、断りのない限り読み出し手段２０１の動作である。
まずＳ１６５１において、読み出し要求を受ける。この読み出し要求の内容は実施の形態４と同様である。
Ｓ１６５２において、読み出し要求領域を含むフラッシュメモリの消去単位番号を求める。消去単位番号を求める動作は実施の形態４と同様である。
【０１９６】
続いてＳ１６５３において、消去ブロックバッファ管理領域６０５１の消去単位番号保持領域を参照し、消去単位番号の記録が存在するかを判定する。
消去単位番号の記録が存在しない場合には、Ｓ１６５７において、書き込みバッファ管理領域６０５２の管理情報を参照し、読み出し要求領域として特定された領域に書き込まれるべきデータが書き込みバッファ４０２に存在するかを判定する。
【０１９７】
読み出し要求領域として特定された領域に書き込まれるべきデータが書き込みバッファ４０２に存在する場合には、Ｓ１６５９において、そのデータが正しいものかどうかを書き込みバッファ管理領域６０５２に登録されているデータチェック値を使用して判定する。即ち、読み出し要求領域として特定された領域に書き込まれるべきデータを書き込みバッファ４０２から読み出し、このデータを用いて値を算出する（この算出規則は書き込みバッファ管理領域６０５２に登録されるデータチェック値の算出規則を用いる）。そして、算出値と書き込みバッファ管理領域６０５２に登録されているデータチェック値とを比較して、両者が同一値となれば、書き込みバッファ４０２のデータが妥当であると判断する。
【０１９８】
データが妥当であると判定した場合、Ｓ１６６１において、当該データを書き込みバッファ４０２から読み出し、処理を終了する。
データが妥当でないと判定した場合、Ｓ１６５０において、情報処理装置にエラーを通知し、処理を終了する。
【０１９９】
Ｓ１６５７で読み出し要求領域として特定された領域に書き込まれるべきデータが書き込みバッファ４０２に存在しない場合には、Ｓ１６５８において、読み出しデータをフラッシュメモリ１０１から読み出す。
【０２００】
Ｓ１６５３で消去ブロックバッファ管理領域６０５１の消去単位番号保持領域に消去単位番号の記録が存在し、かつＳ１６５２で求めた消去単位番号と一致する場合には、読み出し要求領域のデータは消去ブロックバッファ１０３に保持されているので、Ｓ１６５４においてまず、消去ブロックバッファ１０３内のデータが正しいものであるか、消去ブロックバッファ管理領域６０５１のデータチェック値値を使用して判定する。この判断手順はＳ１６５９の手順と同様である。
【０２０１】
データが妥当であると判定した場合、Ｓ１６５５において、当該データを消去ブロックバッファから読み出し、処理を終了する。
データが妥当でないと判定した場合、Ｓ１６５６において、情報処理装置にエラーを通知し、処理を終了する。
以上がメモリからのデータ読み出し時の動作である。
【０２０２】
次に、情報処理装置の起動時に実行される復旧手段６１１の動作を図４９を用いて説明する。
復旧手段６１１はまずＳ１６８１において、消去ブロックバッファ管理領域６０５１の消去単位番号保持領域の値と消去単位番号確認領域の値を読み出す。続いてＳ１６８２において、消去単位番号保持領域と消去単位番号確認領域にフラッシュメモリ内の消去単位番号が存在するかを判定する。
【０２０３】
消去単位番号が存在する場合、Ｓ１６８３において、消去単位番号保持領域の値と消去単位番号確認領域の値が同一かをチェックする。
消去単位番号保持領域の値と消去単位番号確認領域の値が同一の場合、Ｓ１６８４において、消去ブロックバッファ管理領域６０５１にあるデータチェック値を読み出す。
【０２０４】
続いてＳ１６８５にて、消去ブロックバッファ１０３内のデータが正しいかを読み出したデータチェック値を用いて判定する。この判定は図４８のＳ１６５４と同様である。
Ｓ１６８５で、消去ブロックバッファ１０３内のデータが妥当である場合、消去ブロックバッファ１０３内のデータは破壊されていないことになるので、書き込みバッファの状態を復旧させるために、Ｓ１６８７でバッファ管理領域６０５の書き込みバッファ管理領域の領域情報を読み出す。
【０２０５】
次に、Ｓ１６８８において、書き込みバッファ管理領域６０５２のデータが正しいかを、管理領域チェック値を用いて判定する。この判定は、管理領域チェック値以外の情報（消去単位番号、オフセット、サイズ、データチェック値）を取出してチェックサム値を算出し、算出して得られたチェックサム値と管理領域チェック値とを比較する。そして両者が一致すれば書き込みバッファ管理領域６０５２のデータが妥当であると判断する。
【０２０６】
Ｓ１６８８で、書き込みバッファ管理領域６０５２のデータが妥当である場合、Ｓ１６８９において、領域情報に対応する書き込みバッファ４０２内のデータが正しいか、領域情報にあるデータチェック値を用いて判定する。この判定も上記したチェックサムによる判定方法などを利用して判定される。
Ｓ１６８９で、書き込みバッファ４０２内のデータが正しいと判断した場合、Ｓ１６９１でこの領域情報が書き込みバッファ管理領域に保持されている領域情報の最後かを判定する。領域情報の最後である場合、処理を終了する。
【０２０７】
Ｓ１６９１で、まだ領域情報の最後でない場合、次の領域情報を読み出しその領域情報が正しいかを判定するために、Ｓ１６８７〜Ｓ１６９１の処理を実行する。
Ｓ１６８９で、書き込みバッファのデータが正しくない場合、Ｓ１６９０において、書き込みバッファ管理領域６０５２の当該領域情報をクリアし、領域情報および当該書き込みバッファを別のデータが使用することを可能にする。そして、Ｓ１６９１に進み、次の領域情報へ処理を進める。
【０２０８】
Ｓ１６８８で、領域情報のデータが正しくない場合、Ｓ１６９０において、書き込みバッファ管理領域６０５２の当該領域情報をクリアし、領域情報および当該書き込みバッファを別のデータが使用することを可能にする。そして、Ｓ１６９１に進み、次の領域情報へ処理を進める。
【０２０９】
Ｓ１６８５で、消去ブロックバッファ１０３内のデータが正しくないと判断した場合、Ｓ１６８６において、消去ブロックバッファ管理領域６０５１の消去単位番号保持領域および消去単位番号確認領域をクリアし、消去ブロックバッファを使用可能にする。そして、Ｓ１６８７〜Ｓ１６９１を実施し、書き込みバッファ１０４の復旧処理を行う。
【０２１０】
Ｓ１６８３で、消去ブロックバッファ管理領域６０５１の消去単位番号保持領域と消去単位番号確認領域の値が同一でない場合、Ｓ１６８６において、消去単位番号保持領域および消去単位番号確認領域をクリアし、消去ブロックバッファを使用可能にする。そして、Ｓ１６８７〜Ｓ１６９１を実施し、書き込みバッファ１０４の復旧処理を行う。
Ｓ１６８２で、消去ブロックバッファ管理領域６０５１にある消去単位番号保持領域と消去単位番号確認領域に消去単位番号の記録がない場合、Ｓ１６８７〜Ｓ１６９１を実施し、書き込みバッファ１０４の復旧処理を行う。
【０２１１】
以上のように本実施の形態によれば、バッファ管理領域６０５に消去ブロックバッファを管理する消去ブロックバッファ管理領域６０５１と書き込みバッファを管理する書き込みバッファ管理領域６０５２を設け、消去ブロックバッファ管理領域６０５１には、消去単位番号保持領域の他に消去単位番号確認領域とデータチェック値領域を、書き込みバッファ管理領域６０５２には、消去単位番号領域と消去単位内のオフセット値領域と書き込みデータサイズ領域の他にデータチェック値領域と管理領域チェック値を保持している。そのため、メモリからのデータ読み出し時および情報処理装置の復旧時に当該データチェック値を用い消去ブロックバッファおよび書き込みバッファのデータが正しいかをチェックすることができ、消去ブロックバッファおよび書き込みバッファを保持している不揮発性メモリが故障し、消去ブロックバッファ内のデータが不正になっても、情報処理装置がそれを検出することができる。
さらに、消去ブロックバッファおよび書き込みバッファに他手段から不正なデータ書き込みがあっても、それを検出することができる。
【０２１２】
実施の形態１７．
本発明の他の実施の形態における情報処理装置について説明する。情報処理装置の構成は、実施の形態１６と同様であり、図４５に示される。本実施の形態では、復旧手段の動作以外は実施の形態１６と同様である。
本実施の形態における復旧手段６１１の動作を図５０を用いて説明する。図５０は、実施の形態１６における復旧手段の動作が一部相違している。
【０２１３】
Ｓ１７０１〜Ｓ１７０５については実施の形態１６で述べたＳ１６８１〜Ｓ１６８５の処理と同様である。
Ｓ１７０５で消去ブロックバッファのデータが正しくないと判断した場合、Ｓ１７０７に進み、Ｓ１７０７において消去単位番号保持領域と消去単位番号確認領域をクリアし、消去ブロックバッファ１０３を再利用可能にしてから、Ｓ１７０８に進み、書き込みバッファ４０２の復旧処理を行う。
【０２１４】
Ｓ１７０５で消去ブロックバッファのデータが正しいと判断した場合、Ｓ１７０６で消去命令手段３０１に消去指示を行い、消去ブロックバッファに対応するフラッシュメモリの消去単位領域を消去する。この消去指示の内容は、実施の形態１と同様である。そして、書き込み手段３０２に書き込み指示を出し、消去ブロックバッファの内容を、消去した領域に書き込む。この書き込み指示の内容も実施の形態１と同様である。
【０２１５】
そして、Ｓ１７０７において、消去ブロックバッファ管理領域６０５１の消去単位番号保持領域と消去単位番号確認領域をクリアする。
Ｓ１７０２〜Ｓ１７０７の処理により消去ブロックバッファ１０３の復旧処理が完了すると、復旧手段６１１はＳ１７０８において、書き込みバッファ管理領域６０５２の領域情報を読み出す。
【０２１６】
次に、Ｓ１７０９、Ｓ１７１０の処理を行う。この処理は実施の形態１６で述べたＳ１６８８、Ｓ１６８９の処理と同様である。
Ｓ１７０９で書き込みバッファ管理領域６０５２の領域情報が妥当でないと判断した場合およびＳ１７１０で書き込みバッファ４０２内のデータが正しくないと判断した場合、書き込みバッファ４０２の書き込み途中で電源断が発生したと考えられるので、Ｓ１７１６において、当該領域情報を書き込みバッファ管理領域６０５２から削除し、書き込みバッファ４０２を再利用可能にする。
【０２１７】
Ｓ１７１０で書き込みバッファ４０２内のデータが正しいと判断した場合、Ｓ１７１１において、当該領域情報に対応する書き込みバッファ４０２のデータを消去ブロックバッファ１０３に書き込む。
次にＳ１７１２において、待避手段１１２に対して待避指示を行う。待避指示の内容は実施の形態１と同様である。待避指示を受けた待避手段１１２は、消去単位内の不変データを消去ブロックバッファ１０３に書き込むことにより待避させる。
【０２１８】
続いてＳ１７１３において、消去ブロックバッファ管理領域６０５１を更新、即ち、消去単位番号保持領域および消去単位番号確認領域に消去単位番号を書き込み、Ｓ１７１１およびＳ１７１２により消去ブロックバッファ１０３に書き込まれたデータのデータチェック値を書き込む。
【０２１９】
次にＳ１７１４において、消去命令手段３０１に消去指示を行い、消去ブロックバッファ１０３に対応するフラッシュメモリの消去単位領域を消去する。この消去指示の内容は、実施の形態１と同様である。そして書き込み手段３０２に書き込み指示を出し、消去ブロックバッファ１０３の内容を、消去した領域に書き込む。この書き込み指示の内容も実施の形態１と同様である。
【０２２０】
続いてＳ１７１５にて、消去ブロックバッファ管理領域６０５１の消去単位番号保持領域と消去単位番号確認領域をクリアする。
次にＳ１７１６において、Ｓ１７０８で読み出した領域情報を書き込みバッファ管理領域６０５２から削除し、書き込みバッファ４０２の当該領域を再利用可能にする。
【０２２１】
次に、Ｓ１７１７において、Ｓ１７０８で読み出した領域情報が、バッファ管理領域６０５の書き込みバッファ管理領域に登録されている領域情報の最後かを判定する。
書き込みバッファ管理領域の最後ではない場合、当該領域情報の次に登録されている領域情報に対し、Ｓ１７０８〜Ｓ１７１７の処理を行う。
書き込みバッファ管理領域の最後である場合、書き込みバッファ４０２には、データが残っていないので、処理を終了する。
【０２２２】
以上のように本実施の形態によれば、情報処理装置の復旧時に、消去ブロックバッファの内容と書き込みバッファの内容をフラッシュメモリに書き込むようにしたので、復旧後にメモリへのデータ書き込みを行わない限り、不揮発性メモリの故障によるデータの破壊を防ぐことができる。
【０２２３】
実施の形態１８．
図５１は本発明の他の実施の形態における情報処理装置の構成を示す図である。図において、１８５は揮発性メモリであるＤＲＡＭであり、ＤＲＡＭ１８５には、不揮発性メモリ１０２内の消去単位番号保持領域２０２と同じ値を持つ消去単位番号保持領域６０６と不揮発性メモリ１０２内の書き込みバッファ管理領域４０３と同じ値を持つ書き込みバッファ管理領域６０７とを備える。このＤＲＡＭ１８５は不揮発性メモリ１０２よりもデータの読み書きが高速である。
また図において、６１１は情報処理装置の起動時に実行される復旧手段である。他の構成は図８における構成の同一もしくは相当部であり、説明を省略する。
【０２２４】
次に本実施の形態におけるメモリへの書き込み時の動作を、図５２を用いて説明する。以下の各処理は断りのない限り書き込み制御手段１１１の動作である。
まず、Ｓ１８０１、Ｓ１８０２の処理は実施の形態４と同様である。
続いて、Ｓ１８０３において、ＤＲＡＭ１８５上の消去単位番号保持領域６０６を参照し、消去単位番号の記録が存在するかを判定する。
ここで消去単位番号の記録が存在しなければ、Ｓ１８０４において、書き込み制御手段１１１は書き込み要求データを消去ブロックバッファ１０３に書き込む。
【０２２５】
さらにＳ１８０５において、待避手段１１２に対して待避指示を行う。待避指示の内容および待避手段１１２の動作は、実施の形態４と同様である。
続いてＳ１８０６において、Ｓ１８０２で求めた消去単位番号を不揮発性メモリ１０２上の消去単位番号保持領域２０２およびＤＲＡＭ１８５上の消去単位番号保持領域６０６に記録する。ＤＲＡＭ１８５への消去単位番号の書き込み処理は図５４のＳ１８５１の処理に相当する。
【０２２６】
さらにＳ１８０７において、消去命令手段３０１に対して消去指示を出す。消去指示の内容および消去命令手段３０１の動作は、実施の形態４と同様である。
Ｓ１８０３においてＤＲＡＭ１８５上の消去単位番号保持領域６０６に消去単位番号の記録が存在する場合には、Ｓ１８０８において、Ｓ１８０２で求めた消去単位番号がＤＲＡＭ１８５上の消去単位番号保持領域６０６に存在する記録と一致するかを判定する。
【０２２７】
Ｓ１８０８において消去単位番号が異なる場合には、Ｓ１８０９において、ＤＲＡＭ１８５上の書き込みバッファ管理領域６０７を参照し、書き込みバッファ管理領域６０７に記録されている情報から、書き込み要求領域と同一の領域に書き込みを行うデータが既に書き込みバッファ４０２に存在するかを判定する。この判定は、ＤＲＡＭ１８５上の書き込みバッファ管理領域６０７に記憶されている消去単位番号及び消去単位内オフセットおよびサイズから把握することができる。
【０２２８】
Ｓ１８０９において書き込み要求領域と同一の領域に書き込みを行うデータが書き込みバッファ４０２に存在しない場合には、さらにＳ１８１０において書き込み制御手段１１１は、書き込み要求のデータを書き込むことができる領域が書き込みバッファ４０２に存在するかを、書き込みバッファ４０２に空き領域を調べることで判定する。空き領域の存在は、ＤＲＡＭ１８５上の書き込みバッファ管理領域６０７に記録されている情報から知ることができる。
【０２２９】
書き込みバッファ４０２に空き領域がない場合には、Ｓ１８１１において書き込み制御手段１１１は、書き込み手段３０２に対し書き込み指示を行う。書き込み指示の内容および書き込み手段３０２の動作は実施の形態４と同様である。
続いて、Ｓ１８０４からＳ１８０７の処理を、消去単位番号の記録が存在しない場合と同様に行う。
【０２３０】
Ｓ１８１０で書き込みバッファに空き領域が存在した場合には、Ｓ１８１２において、書き込みデータを書き込みバッファ４０２へ書き込む。
次にＳ１８１３において、不揮発性メモリ１０２上の書き込みバッファ管理領域４０３およびＤＲＡＭ１８５上の書き込みバッファ管理領域６０７に、Ｓ１８１２で書き込んだ書き込みデータに関する管理情報を記録する。管理情報は、消去単位番号とその中での位置を特定するオフセット、及び書き込みデータの大きさを記録する。このＤＲＡＭ１８５へ書き込みデータに関する管理情報を記録する処理は、図５４のＳ１８５２に相当する。
【０２３１】
Ｓ１８０９で書き込み要求領域と同一の領域に書き込みを行うデータが既に存在すると判定された場合には、Ｓ１８１４において、書き込みデータを書き込みバッファの同一領域のデータが記録されているエリアに書き込む。
Ｓ１８０８で、Ｓ１８０２で算出した消去単位番号がＤＲＡＭ１８５上の消去単位番号保持領域６０６に存在する記録と一致すること判定された場合には、Ｓ１８１５において、書き込み要求データを消去ブロックバッファ１０３に書き込む。
【０２３２】
次に、メモリからのデータ読み出し時の動作を図５３を用いて説明する。以下の各処理は、断りのない限り読み出し手段２０１の動作である。
まずＳ１８３１およびＳ１８３２は、実施の形態４と同様である。
続いてＳ１８３３において、ＤＲＡＭ１８５上の消去単位番号保持領域６０６を参照し、消去単位番号の記録が存在するかを判定する。
【０２３３】
消去単位番号の記録が存在しない場合には、Ｓ１８３４において、ＤＲＡＭ１８５上の書き込みバッファ管理領域６０７の管理情報を参照し、読み出し要求領域として特定された領域に書き込まれるべきデータが書き込みバッファ４０２に存在するかを判定する。
【０２３４】
読み出し要求領域として特定された領域に書き込まれるべきデータが書き込みバッファ４０２に存在する場合には、Ｓ１８３５において、その領域のデータを書き込みバッファ４０２から読み出す。
読み出し要求領域として特定された領域に書き込まれるべきデータが書き込みバッファ４０２に存在しない場合には、Ｓ１８３６において、読み出しデータをフラッシュメモリ１０１から読み出す。
【０２３５】
Ｓ１８３３でＤＲＡＭ１８５上の消去単位番号保持領域６０６に消去単位番号の記録が存在し、かつＳ１８３２で求めた消去単位番号と一致する場合には、読み出し領域のデータは消去ブロックバッファ１０３に保持されているので、Ｓ１８３７において、消去ブロックバッファ１０３から読み出しデータを読み出す。
以上の処理がメモリからのデータ読み出し時の動作である。
【０２３６】
次に、復旧手段６１１の動作を図５４を用いて説明する。
復旧手段６１１はまず、Ｓ１８５１において、ＤＲＡＭ１８５上の消去単位番号保持領域６０６に、不揮発性メモリ１０２上の消去単位番号保持領域２０２の内容を書き込む。これは、ＤＲＡＭ１８５は揮発性メモリであり、情報処理装置の再起動時にデータが消去されてしまうためである。
【０２３７】
次に、Ｓ１８５２において、ＤＲＡＭ１８５上の書き込みバッファ管理領域６０７に、不揮発性メモリ１０２上の書き込みバッファ管理領域４０３の内容を書き込む。
以上が復旧手段の動作である。この動作により、復旧手段の処理完了後、不揮発性メモリ１０２上の消去単位番号保持領域２０２および書き込みバッファ管理領域４０３の内容と、ＤＲＡＭ１８５上の消去単位番号保持領域６０６および書き込みバッファ管理領域６０７の内容は同じになる。
【０２３８】
以上のように、この実施の形態によれば、消去単位番号保持領域と書き込みバッファ管理領域を不揮発性メモリ１０２および不揮発性メモリ１０２よりも高速なＤＲＡＭ１８５上に配置し、消去単位番号保持領域および書き込みバッファ管理領域からの読み出しをＤＲＡＭ１８５上のもので行い、消去単位番号保持領域および書き込みバッファ管理領域への書き込みはＤＲＡＭ１８５および不揮発性メモリ１０２双方に行い、復旧時は不揮発性メモリ１０２の内容をＤＲＡＭ１８５にコピーするようにしたので、電源断による消去単位番号保持領域および書き込みバッファ管理領域の内容破壊を起こさずに、かつメモリへのデータの書き込みおよびメモリからのデータの読み込みを速く行うことができる。
【０２３９】
実施の形態１９．
本発明の他の実施形態における情報処理装置について説明する。情報処理装置の構成は実施の形態５と同様であり、図１２に示される。
実施の形態１９における書き込み時の動作を図５５を用いて説明する。以下の各処理は断りがない限り書き込み制御手段１１１の動作である。
図５５において、Ｓ１９０１〜Ｓ１９１０、Ｓ１９１４、Ｓ１９１５は実施の形態５の処理（図１３のＳ５０１〜Ｓ５１０、Ｓ５１６、Ｓ５１７）と同一であるので説明を省略する。
この実施の形態ではＳ１９１０の後にＳ１９１１、Ｓ１９１２、Ｓ１９１３の処理を有する点で相違するため、この点を中心に説明する。
【０２４０】
Ｓ１９０１〜Ｓ１９１０については実施の形態５と同様に処理を行う。
Ｓ１９１０で空き領域が存在すると判断した場合には、Ｓ１９１１において書き込み制御手段１１１は、書き込みデータを書き込みバッファ４０２の空き領域へ書き込む。続いて、Ｓ１９１２において、書き込みバッファ管理領域４０３に管理情報として、消去単位番号とその中のオフセット、及び書き込みデータの大きさを記録する。Ｓ１９１２が完了後、処理を終了する。
Ｓ１９１０において書き込みバッファ４０２に空き領域が存在しない場合には、Ｓ１９１３においてバッファデータ移動処理を行う。
【０２４１】
バッファデータ移動処理の動作を図５６を用いて説明する。以下の各処理は、断りのない限り書き込み制御手段１１１の動作である。
まず、Ｓ１９５１において、消去ブロックバッファ１０３に現在登録されているデータをフラッシュメモリ１０１に書き込む。
【０２４２】
次にＳ１９５２において、書き込みバッファ管理領域４０３と書き込み要求データを検索し、書き込みバッファ管理領域４０３に登録されている領域および書き込み要求データの内で、同一消去単位内に含まれる領域群にグループ分けした場合にグループ分けした領域群のサイズが一番多い領域群を選択する。
【０２４３】
例えば、書き込みバッファに消去単位番号１に含まれる領域が２個あり、それぞれのサイズが１００バイトおよび２００バイトであったとする。さらに書き込みバッファに消去単位番号２に含まれる領域が３個あり、それぞれのサイズが１０バイトおよび２０バイトおよび３０バイトであったとし、書き込み要求データは消去単位番号３に対する書き込みでサイズが５０バイトであったとする。この場合、Ｓ１９５２の処理では、消去単位番号１の領域群のサイズが３００バイトと一番多いので、この２つの領域が選択される。
【０２４４】
次に、Ｓ１９５３においてバッファ移動手段５０１は、書き込みバッファ４０２に記録されているデータおよび書き込み要求データの内、Ｓ１９５２で選択された領域群のデータを消去ブロックバッファ１０３へ移動する。
続いて、Ｓ１９５４において、待避手段１１２に対して待避指示を行い、待避指示を受けた待避手段１１２は、Ｓ１９５３において消去ブロックバッファ１０３へ書き込まれた領域以外のデータである不変データを、フラッシュメモリの当該消去単位から待避する。さらに、Ｓ１９５５において、消去単位番号を消去単位番号保持領域２０２に記録する。
【０２４５】
次に、Ｓ１９５６において書き込み制御手段１１１は、Ｓ１９５３で消去ブロックバッファ１０３へ移動した領域群に関する管理情報を書き込みバッファ管理領域４０３から削除する。
次に、Ｓ１９５７において、Ｓ１９５２で算出した領域群に書き込み要求データが存在したか判定する。書き込み要求データが存在しなかった場合、Ｓ１９５８において、Ｓ１９５６の動作によって空きができた書き込みバッファ４０２に書き込み要求データを書き込み、書き込みバッファ管理領域４０３に書き込み要求データに関する管理情報を登録する。
【０２４６】
次にＳ１９５９において、消去命令手段３０１に対して消去指示を出し、消去指示を受けた消去命令手段３０１は消去ブロックバッファ１０３へ待避された消去単位の消去を行うようにフラッシュメモリ１０１に命令を出す。
以上はメモリ書き込み時の動作である。
尚、実施の形態１９における読み出し時の動作は、実施の形態４と同一である。
【０２４７】
以上のように、この実施の形態によれば、書き込みバッファおよび書き込み要求データを、フラッシュメモリの１消去単位内に収まる領域毎にグループ化し、その内で一番サイズが大きい領域グループを消去ブロックバッファに移動することにより、書き込みバッファの空き領域を効率よく増やすことができるので、フラッシュメモリへの書き込み回数を低減でき、フラッシュメモリの劣化を低減することができる。
【０２４８】
実施の形態２０．
本発明の他の実施形態における情報処理装置について説明する。情報処理装置の構成は実施の形態５と同様であり、図１２に示される。また、メモリ書き込み時におけるバッファ移動処理以外は実施の形態１９と同一である。
書き込みバッファ４０２に空き領域が存在しない場合に行われる、バッファデータ移動処理の動作を図５７を用いて説明する。以下の各処理は、断りのない限り書き込み制御手段１１１の動作である。
【０２４９】
図５７において、Ｓ２００１〜Ｓ２００９は実施の形態１９の処理（図５６のＳ１９５１〜Ｓ１９５９）と同一であるので説明を省略する。
この実施の形態ではＳ２００９以降の処理としてさらにＳ２０１０〜Ｓ２０１８の処理を有する。
【０２５０】
Ｓ２００１〜Ｓ２００９については実施の形態１９のＳ１９５１〜Ｓ１９５９と同様に実行する。
Ｓ２０１０において書き込み制御手段１１１は、書き込みバッファ管理領域４０３を検索し、書き込みバッファ管理領域４０３に登録されている領域で、同一消去単位内に含まれる領域群にグループ分けした場合にグループ分けした領域群のサイズがｎバイトよりも小さい領域群の群数を調べる。
【０２５１】
続いて、Ｓ２０１１において、Ｓ２０１０で調べた群数がｍ個よりも多いか判定する。群数がｍ個よりも少ない場合、処理を終了する。
Ｓ２０１１において、群数がｍ個よりも大きい場合、書き込みバッファの内容を空にする処理を行う。
まず、Ｓ２０１２において書き込み制御手段１１１は、書き込み手段３０２に書き込み指示を行い、消去ブロックバッファの内容をフラッシュメモリ１０１に書き込む。
【０２５２】
次に、Ｓ２０１３において、書き込みバッファ管理領域４０３を検索し、書き込みバッファ管理領域４０３に登録されている領域の内で、同一消去単位内に含まれる領域群にグループ分けした場合にグループ分けした領域群のサイズが一番多い領域群を選択する。
【０２５３】
次に、Ｓ２０１４においてバッファ移動手段５０１は、書き込みバッファ４０２に記録されているデータの内、Ｓ２０１３で選択された領域群のデータを消去ブロックバッファ１０３へ移動する。
続いて、Ｓ２０１５において、待避手段１１２に待避指示を行い、待避指示を受けた待避手段１１２は、Ｓ２０１４において消去ブロックバッファ１０３へ書き込まれた領域以外のデータである不変データを、フラッシュメモリの当該消去単位から待避する。さらに、Ｓ２０１６において、消去単位番号を消去単位番号保持領域２０２に記録する。
【０２５４】
次にＳ２０１７において書き込み制御手段１１１は、Ｓ２０１４で消去ブロックバッファ１０３へ移動した領域群に関する領域情報を書き込みバッファ管理領域４０３から削除する。
次に、Ｓ２１０８において、Ｓ２０１７で更新された書き込みバッファ管理領域４０３を検索し、まだ登録されている管理情報が存在するか判定する。登録されている管理情報が存在する場合、Ｓ２０１２からＳ２０１８の処理をさらに続行する。
登録されている管理情報が存在しない場合、処理を終了する。これにより、書き込みバッファ４０３にはデータが残らなくなる。
【０２５５】
以上のように、この実施の形態によれば、書き込みバッファに空きがない場合に、書き込みバッファの内容を消去ブロックバッファに移動した後、書き込みバッファ管理領域を検索し、書き込みバッファ管理領域に登録されている領域で、同一消去単位内に含まれる領域群にグループ分けした場合に、グループ分けした領域群のサイズがｎバイトより小さい領域群の群数がｍ個よりも多い場合に、書き込みバッファの内容を空にするようにし、書き込みサイズが小さいものを強制的に書き込みバッファから排除するようにしたので、実施の形態１９よりもより効率よく書き込みバッファの空き領域を増やすことができ、フラッシュメモリへの書き込み回数を低減することができる。
【０２５６】
【発明の効果】
この発明は、以上に説明したように構成されているので、以下に記載されるような効果を奏する。
【０２５７】
この発明におけるデータ記憶方法は、あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する不揮発性の消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なうデータ記憶方法であって、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータおよび前記第１の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第１の消去ブロックバッファ書き込みステップと、
前記第１の消去ブロックバッファ書き込みステップの後、前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記第２の書き込みデータを前記書き込みバッファに書き込む第１の書き込みバッファ書き込みステップと、
に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して、前記消去ブロックバッファのデータを前記メモリの第１の消去単位領域に書き込む第１のメモリ書き込みステップと、
前記第３の書き込みデータおよび前記第３の消去単位領域内の不変データを前記消去ブロックバッファに書き込む第２の消去ブロックバッファ書き込みステップとを有ため、第２、第３の書き込み要求に対する消去ブロックバッファを設ける場合に比較し、バッファの有効利用を図ることができる。
【０２５８】
また、前記第２の書き込みデータの書き込み先である前記メモリ内の位置を規定する書き込み要求領域と、前記第３の書き込みデータの書き込み先である前記メモリ内の位置を規定する書き込み要求領域とを比較する比較ステップとを有し、前記第２の書き込みバッファ書き込みステップは、前記第３の書き込みデータの書き込み要求領域が前記第２の書き込みデータの書き込み要求領域に含まれる場合に、前記第２の書き込みデータが書き込まれた前記書き込みバッファの領域に前記第３の書き込みデータを上書きするため、メモリへの書き込み回数を少なくすることができ、メモリの劣化を低減することが可能となる。
【００１４】
また、前記第１の書き込みバッファ書き込みステップの後、前記第２の書き込みデータの書き込み先である消去単位領域と、前記第３の書き込みデータの書き込み先である消去  前記第１の比較ステップの比較結果が、前記第３の書き込みデータの書き込み先である消去単位領域が前記第２の書き込みデータの書き込み先である消去単位領域と異なる場合に、前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域と前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域とを比較する第２の比較ステップと、
前記第２の比較ステップの比較結果が、前記第３の書き込みデータの書き込みバッファの書き込み領域が前記第２の書き込みデータの書き込みバッファ書き込み領域と異なる場合に、前記書き込みバッファに空き領域があるか否かを判定するステップとを有し、
前記書き込みバッファに空き領域がない場合に、前記メモリ書き込みステップ及び前記第２の消去ブロックバッファ書き込みステップとを実行するため、第２、第３の書き込み要求に対する消去ブロックバッファを設ける場合に比較し、バッファの有効利用を図ることができる。
【０２５９】
この発明におけるデータ記憶方法は、あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なうデータ記憶方法であって、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータおよび前記第１の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第１の消去ブロックバッファ書き込みステップと、
前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記第１の消去ブロックバッファ書き込みステップの後、前記第２の書き込みデータを前記書き込みバッファに記憶する第１の書き込みバッファ書き込みステップと、
前記第１の書き込みバッファ書き込みステップの後、前記メモリの第２の消去単位領域に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して、前記消去ブロックバッファに書き込まれた前記第１の書き込みデータ及び前記第１の消去単位領域内の不変データとを前記第１の消去単位領域に書き込むメモリ書き込みステップと、
前記メモリ書き込みステップの後、前記第３の書き込みデータと前記書き込みバッファに記憶されている第２の書き込みデータ及び前記第２の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第２の消去ブロックバッファ書き込みステップとを有するため、複数の書き込みデータおよび不変データをブロックバッファ書き込みステップにまとめてメモリへの書き込み回数を低減することができ、メモリの劣化を低減することができる。
【０２６０】
また、前記第１の書き込みバッファ書き込みステップの後、前記第２の書き込みデータの書き込み先である消去単位領域と、前記第３の書き込みデータの書き込み先である消去単位領域とを比較する第１の比較ステップと、
前記第１の比較ステップの比較結果が、前記第３の書き込みデータの書き込み先である消去単位領域が前記第２の書き込みデータの書き込み先である消去単位領域と異なる場合に、前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域と前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域とを比較する第２の比較ステップと、
前記第２の比較ステップの比較結果が、前記第３の書き込みデータの書き込みバッファの書き込み領域が前記第２の書き込みデータの書き込みバッファ書き込み領域と異なる場合に、前記第２の書き込みデータの消去単位番号と前記第３の書き込みデータの消去単位番号とを比較する第３の比較ステップと、
前記第３の比較ステップの比較結果が、前記第３の書き込みデータの消去単位番号が前記第２の書き込みデータの消去単位番号とが等しい場合に、前記メモリ書き込みステップ及び前記第２の消去ブロックバッファ書き込みステップとを実行するため、消去単位領域の同じ複数の書き込みデータの書き込みを一括して行なうことが可能となり、メモリへの書き込み回数を低減することができる。
【０２８３】
この発明における情報処理装置は、あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なうデータ記憶方法であって、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータおよび前記第１の消去単位領域内の不変データとを前記消去ブロックバッファに書き込む第１の消去ブロックバッファ書き込みステップと、
前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記第１の消去ブロックバッファ書き込みステップの後、前記第２の書き込みデータを前記書き込みバッファに記憶する第１の書き込みバッファ書き込みステップと、
前記第１の書き込みバッファ書き込みステップの後、前記メモリの第２の消去単位領域に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して、前記消去ブロックバッファに書き込まれた前記第１の書き込みデータ及び前記第１の消去単位領域内の不変データとを前記第１の消去単位領域に書き込むメモリ書き込みステップと、
前記メモリ書き込みステップの後、前記書き込みバッファに記憶されているデータの使用頻度に基づいて該データを消去ブロックバッファへ書き込む第３の消去ブロックバッファ書き込みステップとを有するため、書き込みバッファを効率よく使用することができるので、フラッシュメモリへの書き込み回数をさらに低減できる。
【０２８３】
また、前記第１の書き込みバッファ書き込みステップの後、前記第２の書き込みデータの書き込み先である消去単位領域と、前記第３の書き込みデータの書き込み先である消去単位領域とを比較する第１の比較ステップと、
前記第１の比較ステップの比較結果が、前記第３の書き込みデータの書き込み先である消去単位領域が前記第２の書き込みデータの書き込み先である消去単位領域と異なる場合に、前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域と前記第２の書き込みデータの書き込み先である書き込みバッファの書き込み領域とを比較する第２の比較ステップと、
前記第２の比較ステップの比較結果が、前記第３の書き込みデータの書き込みバッファの書き込み領域が前記第２の書き込みデータの書き込みバッファ書き込み領域と異なる場合に、前記第２の書き込みデータの消去単位番号と前記第３の書き込みデータの消去単位番号とを比較する第３の比較ステップと、
前記第３の比較ステップの比較結果が、前記第３の書き込みデータの消去単位番号が前記第２の書き込みデータの消去単位番号と異なる場合に、前記書き込みバッファに空き領域があるか否かを判定するステップと、
前記書き込みバッファに空き領域がない場合に前記メモリ書き込みステップ及び前記第３の消去ブロックバッファ書き込みステップとを実行するため、書き込みバッファを効率よく使用することができるので、フラッシュメモリへの書き込み回数を低減できる。
【０２６１】
この発明における情報処理装置は、あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有するメモリと、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを用いて前記メモリ内のデータの書き換えを行なう情報処理装置であって、
前記メモリへのデータ書き込みを制御する書き込み制御手段と、
前記メモリの消去領域のデータを前記消去ブロックバッファに待避させる待避手段と、
前記メモリへに書き込みデータの書き込みを行う書き込み手段と、
を備え、
前記メモリの第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記書き込み制御手段は前記第１の書き込みデータを前記消去ブロックバッファに書き込み、前記待避手段は前記第１の消去単位領域内の不変データを前記消去ブロックバッファに書き込み、
前記第１の書き込みデータおよび前記第１の消去単位内の不変データの前記消去ブロックバッファへの書き込み完了後、前記メモリの第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して、前記書き込み制御手段は前記第２の書き込みデータを前記書き込みバッファに書き込み、
前記第２の書き込みデータの前記書き込みバッファへの書き込み完了後、前記メモリの第３の消去単位領域に第３の書き込みデータを書き込むことを要求する第３の書き込み要求に対して前記書き込みバッファに空き領域がない場合に、前記書き込み手段は前記第３の書き込みデータを前記消去ブロックバッファに書き込み、前記待避手段は前記第３の消去単位領域内の不変データを前記消去ブロックバッファに書き込むため、第２、第３の書き込み要求に対する消去ブロックバッファを設ける場合に比較し、バッファの有効利用を図ることができる。
【０２６２】
あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有する第１のメモリと、前記消去単位領域に記憶されたデータを前記消去単位で消去する消去手段とを有する情報処理装置において、前記消去単位領域に書き込む書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファ、不変データを記憶することなく書き込みデータを記憶する書き込みバッファ、前記消去ブロックバッファに記憶されるデータを処理することにより得られる第１データチェック値の保持領域、前記書き込みバッファに書き込まれたデータを処理することにより得られる第２データチェック値の保持領域を備え、任意のデータ単位でデータの書き込みが可能な不揮発性の第２のメモリと、第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対して当該第１の書き込みデータを前記消去ブロックバッファに書き込み、第２の消去単位領域に第２の書き込みデータを書き込むことを要求する第２の書き込み要求に対して当該第２の書き込みデータを前記書き込みバッファに書き込み、前記第１のデータチェック値および前記第２のデータチェック値を前記第２のメモリに書き込む書き込み制御手段と、前記第１の書き込み要求に対し、前記第１の消去単位領域内の不変データを前記消去ブロックバッファに書き込む待避手段と、前記消去ブロックバッファに書き込まれた前記第１の書き込みデータおよび前記不変データを前記消去手段によって消去された前記第１の消去単位領域に書き込むメモリ書き込み手段と、前記情報処理装置の復旧時に、前記第２のメモリに書き込まれた前記第１のデータチェック値および前記第２のデータチェック値に基づいて復旧処理を行うため、前記消去ブロックバッファおよび前記書き込みバッファに書き込まれたデータの正否を認識した上で適切な復旧処理を行うことができる。
【０２６３】
また、前記復旧手段は、前記第１のデータチェック値に基づいて前記消去ブロックバッファに記憶されたデータが正しいと判断した場合に、前記消去ブロックバッファに記憶されたデータを前記第１の消去単位領域に書き込むことを前記メモリ書き込み手段に指示し、前記第２のデータチェック値に基づいて前記書き込みバッファに記憶されたデータが正しいと判断した場合に、前記書き込みバッファに記憶された前記第２の書き込みデータを前記消去ブロックバッファに書き込むことを前記書き込み制御手段に指示し、前記第２の消去単位領域の不変データを前記消去ブロックバッファに書き込むことを前記待避手段に指示するため、消去ブロックバッファおよび書き込みバッファに書き込まれたデータの破壊を防止することができる。
【０２６４】
さらに、消去単位番号保持領域を備え、前記第２のメモリよりもデータの読み出しが高速な第３のメモリを有し、前記書き込み制御手段は、前記消去単位領域を特定する情報を前記第２のメモリの消去単位番号保持領域と前記第３のメモリの消去単位番号保持領域双方に書き込むようにし、前記消去単位領域を特定する情報を参照する際には、前記第３のメモリの消去単位番号保持領域からデータを読み出すため、復旧作業を高速化させることができる。
【０２６５】
あらかじめ定められた消去単位でデータの消去および書き込みがなされる複数の消去単位領域を有する第１のメモリと、前記消去単位領域に記憶されたデータを前記消去単位で消去する消去手段とを有し前記消去単位領域に記憶されたデータを第１の書き込みデータに書き換える情報処理装置において、前記第１の書き込みデータおよび前記消去単位領域内の不変データの双方を記憶する消去ブロックバッファと、不変データを記憶することなく書き込みデータを記憶する書き込みバッファとを備え、任意のデータ単位でデータの書き込みが可能な不揮発性の第２のメモリと、第１の消去単位領域に第１の書き込みデータを書き込むことを要求する第１の書き込み要求に対し、前記第１の書き込みデータを前記消去ブロックバッファに書き込む消去ブロックバッファ書き込み手段と、前記第１の書き込み要求に対し、前記第１の消去単位領域内の不変データを前記消去ブロックバッファに書き込む待避手段と、前記第１の書き込み要求以外の複数の書き込み要求に対し、当該複数の書き込みデータを前記書き込みバッファに書き込む書き込みバッファ書き込み手段と、前記消去ブロックバッファ書き込み手段に書き込まれた前記第１の書き込みデータおよび前記不変データを前記第１の消去単位領域に書き込むメモリ書き込み手段と、前記書き込みバッファ内の複数の書き込みデータについて、書き込み要求がされた消去単位領域ごとにそのデータ量を計算し、この計算結果に基づいて同一の消去単位領域に書き込む書き込みデータすべてを前記消去ブロックバッファに移動させるデータ移動手段とを有し、前記待避手段は前記消去ブロックバッファに移動された書き込みデータに対応する消去単位領域内の不変データを前記消去ブロックバッファに書き込むため、書き込みバッファの空き領域を効率良く増やすことができる。
【０２６６】
また、前記データ移動手段は、前記書き込みバッファ内の書き込みデータの内、同一の消去単位領域に書き込み要求がなされた書き込みデータのデータ量が所定量よりも少なく、当該書き込みデータの数が所定数よりも多い場合に、当該書き込みデータすべてを前記消去ブロックバッファに移動させるため、第１のメモリへの書き込み回数を低減することができる。
【図面の簡単な説明】
【図１】実施の形態１の情報処理装置の構成図である。
【図２】実施の形態１のシステムの概略を示す構成図である。
【図３】実施の形態１における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図４】実施の形態２の情報処理装置の構成図である。
【図５】実施の形態２における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図６】実施の形態２における情報処理装置がメモリからデータを読み出す動作を示すフローチャートである。
【図７】実施の形態３における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図８】実施の形態４における情報処理装置の構成図である。
【図９】書き込みバッファ管理領域に記録されているデータの内容を示す図である。
【図１０】実施の形態４における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図１１】実施の形態４における情報処理装置がメモリからデータを読み出す動作を示すフローチャートである。
【図１２】実施の形態５における情報処理装置の構成図である。
【図１３】実施の形態５における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図１４】バッファデータ移動処理Ｓ５１５、Ｓ６２０の動作を示すフローチャートである。
【図１５】書き込みバッファの領域を使用する使用頻度の情報の一例である。
【図１６】実施の形態６における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図１７】バッファデータ移動処理Ｓ６１２の動作を示すフローチャートである。
【図１８】従来の回路の概略を示す構成図である。
【図１９】実施の形態７における情報処理装置の構成図である。
【図２０】実施の形態７における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図２１】復旧手段６１１の動作を示すフローチャートである。
【図２２】実施の形態８における情報処理装置の構成図である。
【図２３】実施の形態８における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図２４】復旧手段６１１の動作を示すフローチャートである。
【図２５】実施の形態９における情報処理装置の構成図である。
【図２６】実施の形態９における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図２７】書き込み許可指示手段６１２の動作を示すフローチャートである。
【図２８】書き込み禁止指示手段６１３の動作を示すフローチャートである。
【図２９】実施の形態１０における情報処理装置の構成図である。
【図３０】実施の形態１０における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図３１】復旧手段６１１の動作を示すフローチャートである。
【図３２】実施の形態１１における情報処理装置の復旧手段６１１の動作を示すフローチャートである。
【図３３】実施の形態１２における情報処理装置の構成図である。
【図３４】消去ブロックバッファ管理領域６０４の構造図である。
【図３５】実施の形態１２における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図３６】待避手段１１２の動作を示すフローチャートである。
【図３７】消去ブロックバッファ書き込み手段６１４の動作を示すフローチャートである。
【図３８】復旧手段６１１の動作を示すフローチャートである。
【図３９】実施の形態１３における消去ブロックバッファ管理領域６０４の構造図である。
【図４０】消去ブロックバッファ書き込み手段６１４の動作を示すフローチャートである。
【図４１】消去ブロックバッファ管理領域６０４のデータ操作の例を示す図である。
【図４２】復旧手段６１１の動作を示すフローチャートである。
【図４３】実施の形態１４における情報処理装置のデータ読み出し時の動作を示すフローチャートである。
【図４４】実施の形態１５における情報処理装置のデータ読み出し時の動作を示すフローチャートである。
【図４５】実施の形態１６における情報処理装置の構成図である。
【図４６】バッファ管理領域６０５に記録されるデータの内容を示す図である。
【図４７】実施の形態１６における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図４８】実施の形態１６における情報処理装置のデータ読み出し時の動作を示すフローチャートである。
【図４９】復旧手段６１１の動作を示すフローチャートである。
【図５０】実施の形態１７における復旧手段６１１の動作を示すフローチャートである。
【図５１】実施の形態１８における情報処理装置の構成図である。
【図５２】実施の形態１８における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図５３】実施の形態１８における情報処理装置のデータ読み出し時の動作を示すフローチャートである。
【図５４】ＤＲＡＭ１５２へのデータの書き込み動作を示すフローチャートである。
【図５５】実施の形態１９における情報処理装置がフラッシュメモリ上のデータを書き換える動作を示すフローチャートである。
【図５６】バッファデータ移動処理の動作を示すフローチャートである。
【図５７】実施の形態２０におけるバッファデータ移動処理の動作を示すフローチャートである。
【符号の説明】
１０１ フラッシュメモリ、１０２  不揮発性メモリ、１０３  消去ブロックバッファ、１１１  書き込み制御手段、１１２  待避手段、１８５  ＤＲＡＭ、２０１  読み出し手段、２０２  消去単位番号保持領域、３０１  消去命令手段、３０２  書き込み手段、４０２  書き込みバッファ、４０３  書き込みバッファ管理領域、５０１  バッファ移動手段、６０１  消去単位番号確認領域、６０２  消去ブロックバッファ確認領域、６０３  書き込み禁止フラグ領域、６０４  消去ブロックバッファ管理領域、６０５  バッファ管理領域、６１１  復旧手段、６１４  消去ブロックバッファ書き込み手段。
【図１】
0003632543.tif 000002
【図２】
0003632543.tif 000003
【図３】
0003632543.tif 000004
【図４】
0003632543.tif 000005
【図５】
0003632543.tif 000006
【図６】
0003632543.tif 000007
【図７】
0003632543.tif 000008
【図８】
0003632543.tif 000009
【図９】
0003632543.tif 000010
【図１０】
0003632543.tif 000011
【図１１】
0003632543.tif 000012
【図１２】
0003632543.tif 000013
【図１３】
0003632543.tif 000014
【図１４】
0003632543.tif 000015
【図１５】
0003632543.tif 000016
【図１６】
0003632543.tif 000017
【図１７】
0003632543.tif 000018
【図１８】
0003632543.tif 000019
【図１９】
0003632543.tif 000020
【図２０】
0003632543.tif 000021
【図２１】
0003632543.tif 000022
【図２２】
0003632543.tif 000023
【図２３】
0003632543.tif 000024
【図２４】
0003632543.tif 000025
【図２５】
0003632543.tif 000026
【図２６】
0003632543.tif 000027
【図２７】
0003632543.tif 000028
【図２８】
0003632543.tif 000029
【図２９】
0003632543.tif 000030
【図３０】
0003632543.tif 000031
【図３１】
0003632543.tif 000032
【図３２】
0003632543.tif 000033
【図３３】
0003632543.tif 000034
【図３４】
0003632543.tif 000035
【図３５】
0003632543.tif 000036
【図３６】
0003632543.tif 000037
【図３７】
0003632543.tif 000038
【図３８】
0003632543.tif 000039
【図３９】
0003632543.tif 000040
【図４０】
0003632543.tif 000041
【図４１】
0003632543.tif 000042
【図４２】
0003632543.tif 000043
【図４３】
0003632543.tif 000044
【図４４】
0003632543.tif 000045
【図４５】
0003632543.tif 000046
【図４６】
0003632543.tif 000047
【図４７】
0003632543.tif 000048
【図４８】
0003632543.tif 000049
【図４９】
0003632543.tif 000050
【図５０】
0003632543.tif 000051
【図５１】
0003632543.tif 000052
【図５２】
0003632543.tif 000053
【図５３】
0003632543.tif 000054
【図５４】
0003632543.tif 000055
【図５５】
0003632543.tif 000056
【図５６】
0003632543.tif 000057
【図５７】
0003632543.tif 000058