(57)【特許請求の範囲】
【請求項１】
外部よりセクタ単位のデータである入力データが入力される不揮発性記憶装置であって、
前記セクタ単位より大きいページ単位でデータの書込みが行われる不揮発性の主記憶メモリと、
前記入力データを、少なくともページ単位分保持する補助記憶メモリと、
前記補助記憶メモリが前記ページ単位以上のデータを保持しているか否かを判定するメモリ判定手段と、
前記メモリ判定手段により前記補助記憶メモリが前記ページ単位以上のデータを保持していると判定された場合に、前記補助記憶メモリに保持されているデータを、前記主記憶メモリの新たなページに前記ページ単位で書込むメモリ制御手段とを備え、
前記補助記憶メモリは、前記入力データと、前記入力データのアドレスとを保持し、
前記不揮発性記憶装置は、さらに、
前記補助記憶メモリが保持するアドレスと、外部からの新たな入力データのアドレスとが一致するか否かを判定するアドレス判定手段と、
前記新たな入力データの前記補助記憶メモリへの書込み、および、前記メモリ制御手段の制御を行うＣＰＵとを備え、
前記補助記憶メモリは、保持する各データの書込まれた順序を示すデータ管理フラグを保持し、
前記ＣＰＵは、前記アドレス判定手段により前記補助記憶メモリが保持するアドレスと、前記新たな入力データのアドレスとが一致すると判定された場合に、前記新たな入力データを前記補助記憶メモリの前記新たな入力データと一致すると判定されたデータが保持されている領域とは異なる領域に書込み、
前記ＣＰＵは、前記新たな入力データに対応する前記データ管理フラグに前記新たな入力データが前記新たな入力データと一致すると判定されたデータの後に書込まれたことを示す情報を設定し、
前記ＣＰＵは、前記データ管理フラグに基づき、前記メモリ制御手段が前記主記憶メモリに書込むデータを決定する
ことを特徴とする不揮発性記憶装置。
【請求項２】
前記メモリ判定手段は、前記補助記憶メモリが一杯になったか否かを判定し、
前記メモリ制御手段は、前記メモリ判定手段により前記補助記憶メモリが一杯になったと判定された場合に、前記補助記憶メモリが保持するデータを前記主記憶メモリに書込む
ことを特徴とする請求項１記載の不揮発性記憶装置。
【請求項３】
前記メモリ判定手段はハードウェアで構成され、
前記不揮発性記憶装置は、さらに、
前記メモリ判定手段による判定結果を前記ＣＰＵに通知する通知手段を備え、
前記ＣＰＵは、前記通知手段により通知された前記判定結果に基づき、前記メモリ制御手段を制御し、
前記ＣＰＵの制御により前記メモリ制御手段は、前記補助記憶メモリに保持されているデータを、前記主記憶メモリの新たなページに前記ページ単位で書込む
ことを特徴とする請求項１または２記載の不揮発性記憶装置。
【請求項４】
前記メモリ判定手段は、前記補助記憶メモリが保持する有効な前記データ管理フラグの数に基づき、前記補助記憶メモリが一杯になったか否かを判定する
ことを特徴とする請求項１記載の不揮発性記憶装置。
【請求項５】
前記不揮発性記憶装置は、さらに、
前記入力データが、頻繁に更新されるか否かを判定する更新判定手段を備え、
前記更新判定手段により頻繁に更新されると判定されたデータである特定データは、前記特定データ以外のデータと比べ、低い優先順位で前記主記憶メモリに書込まれる
ことを特徴とする請求項１〜４のいずれか１項に記載の不揮発性記憶装置。
【請求項６】
前記不揮発性記憶装置は、さらに、
前記入力データのアドレスが、特定アドレスと一致するか否かを判定する特定アドレス判定手段を備え、
前記特定アドレスを有するデータである特定データは、前記特定データ以外のデータと比べ、低い優先順位で前記主記憶メモリに書込まれる
ことを特徴とする請求項１〜４のいずれか１項に記載の不揮発性記憶装置。
【請求項７】
前記補助記憶メモリは、保持する各データが前記特定データであるか否かを示す特定領域フラグを保持する
ことを特徴とする請求項５または６記載の不揮発性記憶装置。
【請求項８】
前記特定データが保持される領域は、前記補助記憶メモリ内で自由に設定できる
ことを特徴とする請求項５〜７のいずれか１項に記載の不揮発性記憶装置。
【請求項９】
前記補助記憶メモリは、保持する各データが前記補助記憶メモリに正常に書込まれたか否かを示す書込み完了フラグを保持する
ことを特徴とする請求項１〜８のいずれか１項に記載の不揮発性記憶装置。
【請求項１０】
前記補助記憶メモリは、保持する各データが前記主記憶メモリに書込まれたか否かを示す転送完了フラグを保持する
ことを特徴とする請求項１〜９のいずれか１項に記載の不揮発性記憶装置。
【請求項１１】
前記補助記憶メモリは、不揮発性RAMである
ことを特徴とする請求項１〜１０のいずれか１項に記載の不揮発性記憶装置。
【請求項１２】
前記補助記憶メモリは、強誘電体メモリ（FeRAM）、磁性記録式随時書込み読み出しメ
モリ（MRAM）、オボニックユニファイドメモリ（OUM）またはレジスタンスRAM（RRAM）である
ことを特徴とする請求項１１記載の不揮発性記憶装置。
【請求項１３】
前記アドレス判定手段は、ハードウェアで構成される
ことを特徴とする請求項１〜４のいずれか１項に記載の不揮発性記憶装置。
【請求項１４】
外部よりセクタ単位のデータである入力データが入力され、前記セクタ単位より大きいページ単位でデータの書込みが行われる不揮発性の主記憶メモリを備える不揮発性記憶装置のデータ書込み方法であって、
前記入力データを補助記憶メモリに保持する第１保持ステップと、
前記補助記憶メモリが前記ページ単位以上のデータを保持しているか否かを判定する判定ステップと、
前記判定ステップにおいて前記補助記憶メモリが前記ページ単位以上のデータを保持していると判定された場合に、前記補助記憶メモリに保持されているデータを、前記主記憶メモリの新たなページに前記ページ単位で書込む第１書込みステップとを含み、
前記第１保持ステップでは、前記入力データと、前記入力データのアドレスとを前記補助記憶メモリに保持し、
前記データ書込み方法は、さらに、
前記補助記憶メモリが保持するアドレスと、外部からの新たな入力データのアドレスとが一致するか否かを判定するアドレス判定ステップと、
前記新たな入力データを前記補助記憶メモリへ書込む第２書込みステップと、
前記補助記憶メモリに、当該補助記憶メモリが保持する各データの書込まれた順序を示すデータ管理フラグを保持する第２保持ステップとを含み、
前記第２書込みステップでは、前記アドレス判定ステップにおいて前記補助記憶メモリが保持するアドレスと、前記新たな入力データのアドレスとが一致すると判定された場合に、前記新たな入力データを前記補助記憶メモリの前記新たな入力データと一致すると判定されたデータが保持されている領域とは異なる領域に書込み、
前記データ書込み方法は、さらに、
前記新たな入力データに対応する前記データ管理フラグに前記新たな入力データが前記新たな入力データと一致すると判定されたデータの後に書込まれたことを示す情報を設定する設定ステップと、
前記データ管理フラグに基づき、前記第１書込みステップで前記主記憶メモリに書込むデータを決定する決定ステップとを含む
ことを特徴とするデータ書込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、不揮発性記憶装置および不揮発性記憶装置のデータ書込み方法に関し、特に、補助記憶メモリと、ページ単位で書込みが行われる主記憶メモリとを備え、ページ単位より小さいセクタ単位のデータが入力される不揮発性記憶装置に関する。
【背景技術】
【０００２】
書換え可能な不揮発性の主記憶メモリを備えた不揮発性記憶装置は、半導体メモリカードを中心にその需要が広まっている。半導体メモリカードには様々な種類があり、その一つとしてＳＤメモリカード（登録商標）がある。
【０００３】
図２３は、従来の不揮発性記憶装置を含む不揮発性記憶システムの構成を示すブロック図である。図２３に示す不揮発性記憶システムは、デジタルスチルカメラまたはパソコン（パーソナルコンピュータ）等のアクセス装置１００と、不揮発性記憶装置１１１０とを備える。
【０００４】
不揮発性記憶装置１１１０は、例えば、ＳＤメモリカードであり、不揮発性の主記憶メモリ１１３０としてフラッシュメモリ１１３０と、それを制御するメモリコントローラ１１２０とを備える。メモリコントローラ１１２０は、アクセス装置１００からのデータの読出しまたは書込み指示に応じて、フラッシュメモリ１１３０に対する読出しまたは書込みの制御を行う。
【０００５】
不揮発性記憶装置１１１０（ＳＤメモリカード等）をパソコン等のアクセス装置１００に取り付け、アクセス装置１００側から不揮発性メモリ装置１１１０（ＳＤメモリカード等）をリムーバブルディスクと見なしてＦＡＴファイルシステムで管理し、データのアクセスを行う場合について説明する。
【０００６】
ＦＡＴファイルシステムは、記録デバイスへファイルまたはデータを記録する際にファイル・アロケーション・テーブル（ＦＡＴ）を用いて、通常「クラスタ」ごとにデータ読み書きを指示するシステムである。クラスタは、ＦＡＴファイルシステムにおけるデータ書込みの最小単位である「セクタ」を複数まとめた単位である。
【０００７】
フラッシュメモリ１１３０は、従来、フラッシュメモリ１１３０の書込み単位であるページサイズと、前述したＦＡＴファイルシステムにおけるデータ書込みの最小単位であるセクタサイズとが例えば５１２バイトで同一であった。しかしながら、近年、フラッシュメモリ１１３０の大容量化と高速化のニーズに伴い、ページサイズがセクタサイズより大きくなり、フラッシュメモリ１１３０へのデータ書込みの最小単位がセクタサイズではなくなっている。例えば、多値ＮＡＮＤフラッシュメモリのようにページサイズが２Ｋバイト（４セクタ）のフラッシュメモリ１１３０が主流になってきている。
【０００８】
セクタサイズより大きいページサイズのフラッシュメモリ１１３０で構成されるメモリカード等の不揮発性記憶装置１１１０において、論理セクタアドレスが０番地の１セクタ分のデータを書換える場合について説明する。なお、論理セクタアドレスが０〜３番地までの４セクタ分のデータが不揮発性記憶装置１１１０に書込み済みであるとする。
【０００９】
不揮発性記憶装置１１１０は、既にフラッシュメモリ１３０に書込み済みである論理セクタアドレスが１〜３番地の３セクタ分のデータを読み出し、読み出した３セクタ分のデータを、論理セクタアドレスが０番地の１セクタ分のデータとまとめて、フラッシュメモリ１１３０の先頭ページの空き領域に書込む。この３セクタ分の読み出しおよび書込み処理のことを、以降退避処理と呼ぶ。このような書換え処理の技術としては、例えば、特許文献１に開示されたものがある。
【００１０】
この「退避処理を伴う書換え手法」の処理手順の概略は以下の通りである。なお、フラッシュメモリ１１３０の物理ブロック内において、セクタは論理順すなわち物理ブロックの下位アドレス側（アドレス値が小さい方）から順番に、論理セクタ番号０，１，…となるように配置されている。ここで、物理ブロックとは、フラッシュメモリ１１３０のデータ消去の最小単位であり、１つの物理ブロックには、複数のページが含まれる。
【００１１】
１．アクセス装置１００から指定される論理アドレスを受取るステップ。
２．論理アドレスを主記憶メモリ上の物理アドレスに変換するステップ。
３．ページに記憶されているデータの１セクタ（例えばセクタアドレスが０番地のデータ）  のみを新データに書換える場合、変更されない旧データ（例えばセクタアドレスが１〜３  番地のデータ）をバッファ（ＳＲＡＭ）に読み出すステップ。
４．新データを、バッファ（ＳＲＡＭ）に書込むステップ。
５．バッファ（ＳＲＡＭ）に一時記憶されたデータを、前記ページを含む物理ブロックとは  別の消去済み物理ブロックに書込むステップ。
６．旧データが記録されていた物理ブロックを無効な物理ブロックに割り当てるステップ。
７．当該無効な物理ブロックの内容を消去するステップ。
【００１２】
以上のような手順でデータ書込みが行われる。
【００１３】
以上の説明からわかるように、「退避処理を伴う書換え手法」は、１セクタの書換えにもかかわらず、変更されない旧データのセクタを含む１ページ分の書込み処理が必要となる為、煩雑で時間のかかる処理となっている。
【００１４】
このような問題に対応したものとして、例えば、特許文献２に開示されている技術がある。
【００１５】
特許文献２記載の不揮発性記憶装置のフラッシュメモリは、物理ブロックのセクタ配置順は論理順という制約はなく、書込み指示がなされた順に物理ブロックの下位ページ側からデータが書込まれる。また、各セクタが書込まれたページ毎に、有効データが書込まれているか、あるいは旧データなので無効なのか、といったように、記録状態の管理がなされるものであって、「追記型書換え手法」と呼ぶことにする。
【００１６】
この追記型書換え手法では、アクセス装置からのデータ書込み指示の都度、データの退避処理が発生しないので、書込み自体は比較的高速に行われるが、あるタイミングでガーベッジコレクション（所定ブロックから有効なセクタのみ集めて別の消去済みブロックに書き写し、無効となったブロックを消去する処理）が必須となる。また、このガーベッジコレクションは、「退避処理を伴う書換え手法」においても行われる。
【特許文献１】米国特許６７６０８０５号公報
【特許文献２】特開平５−２７９２４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１７】
しかしながら、「退避処理を伴う書換え手法」および「追記型書換え手法」におけるガーベッジコレクションには比較的長い時間を要するものであり、ガーベッジコレクションが実行される回数が多いと不揮発性記憶素子の動作速度は減少することになる。
【００１８】
そこで、本発明は、上記問題点に鑑み、ガーベッジコレクションの回数を減らし、データ書込みを高速に行うことができる不揮発性記憶装置を提供することを目的とする。
【課題を解決するための手段】
【００１９】
上記目的を達成するために、本発明に係る不揮発性記憶装置は、外部よりセクタ単位のデータである入力データが入力される不揮発性記憶装置であって、前記セクタ単位より大きいページ単位でデータの書込みが行われる不揮発性の主記憶メモリと、前記入力データを、少なくともページ単位分保持する補助記憶メモリと、前記補助記憶メモリが前記ページ単位以上のデータを保持しているか否かを判定するメモリ判定手段と、前記メモリ判定手段により前記補助記憶メモリが前記ページ単位以上のデータを保持していると判定された場合に、前記補助記憶メモリに保持されているデータを、前記主記憶メモリの新たなページに前記ページ単位で書込むメモリ制御手段とを備える。
【００２０】
この構成によれば、旧データのセクタを含まないページ単位で、主記憶メモリにデータが書込まれるので、従来の旧データのセクタを含むページ単位で主記憶メモリにデータを書込む場合に比べ、無効なページの発生を低減することができる。よって、無効ページが少なくなるので、ガーベッジコレクションの回数を減らすことができる。すなわち、主記憶メモリに書込む際の退避処理を行わなくともよいので、ガーベッジコレクションの回数を減らすことができる。よって、データ書込みを高速に行うことができる。また、主記憶メモリへの書込み回数を減らすことができるので、不揮発性記憶装置の書換え寿命を向上されることができる。
【００２１】
また、前記補助記憶メモリは、前記入力データと、前記入力データのアドレスとを保持し、前記不揮発性記憶装置は、さらに、前記補助記憶メモリが保持するアドレスと、外部からの新たな入力データのアドレスとが一致するか否かを判定するアドレス判定手段と、前記新たな入力データの前記補助記憶メモリへの書込み、および、前記メモリ制御手段の制御を行うＣＰＵとを備え、前記補助記憶メモリは、保持する各データの書込まれた順序を示すデータ管理フラグを保持し、前記ＣＰＵは、前記アドレス判定手段により前記補助記憶メモリが保持するアドレスと、前記新たな入力データのアドレスとが一致すると判定された場合に、前記新たな入力データを前記補助記憶メモリの前記新たな入力データと一致すると判定されたデータが保持されている領域とは異なる領域に書込み、前記ＣＰＵは、前記新たな入力データに対応する前記データ管理フラグに前記新たな入力データが前記新たな入力データと一致すると判定されたデータの後に書込まれたことを示す情報を設定し、前記ＣＰＵは、前記データ管理フラグに基づき、前記メモリ制御手段が前記主記憶メモリに書込むデータを決定してもよい。
【００２２】
この構成によれば、同一アドレスのデータが外部より入力された場合には、複数の同一アドレスのデータを補助記憶メモリに保持しておき、新たに入力された最新のデータのみを主記憶メモリに書込むことで、主記憶メモリへの書込み回数を減らすことができる。これにより、無効なページの発生が少なくなるので、ガーベッジコレクションの回数を減らすことができる。また、補助記憶メモリが保持するデータ管理フラグを確認することで、ＣＰＵは、補助記憶メモリに保持されている同一アドレスのデータのうち最新のデータを容易に判定することができる。また、補助記憶メモリに保持されているデータと同一アドレスの入力データを補助記憶メモリに保持されている同一アドレスのデータとは別の領域に保持する。これにより、入力データの補助記憶メモリへの書込みが失敗した場合に、少なくとも補助記憶メモリに保持されている旧データは失われないという効果がある。
【００２３】
また、前記補助記憶メモリは、前記入力データと、前記入力データのアドレスとを保持し、前記不揮発性記憶装置は、さらに、前記補助記憶メモリが保持するアドレスと、外部からの新たな入力データのアドレスとが一致するか否かを判定するアドレス判定手段と、前記新たな入力データの前記補助記憶メモリへの書込み、および、前記メモリ制御手段の制御を行うＣＰＵとを備え、前記ＣＰＵは、前記アドレス判定手段により前記補助記憶メモリが保持するアドレスと、前記新たな入力データのアドレスとが一致すると判定された場合に、前記新たな入力データを前記補助記憶メモリの前記新たな入力データと一致すると判定されたデータが保持されている領域に上書きしてもよい。
【００２４】
この構成によれば、同一アドレスのデータが外部より入力された場合には、先に入力されたデータは、一時的に補助記憶メモリに記憶しておき、新たに同一アドレスのデータが外部より入力された時に、データを上書きする。これにより、新たに入力された最新のデータのみを主記憶メモリに書込むことができるので、主記憶メモリへの書込み回数を減らすことができる。これにより、無効なページの発生が少なくなるので、ガーベッジコレクションの回数を減らすことができる。よって、データ書込みを高速に行うことができる。また、主記憶メモリへの書込み回数が減ることにより、不揮発性記憶装置の書換え寿命を向上されることができる。また、補助記憶メモリにデータを上書きするので、補助記憶メモリの記憶容量を有効に用いることができる。
【００２５】
また、前記メモリ判定手段は、前記補助記憶メモリが一杯になったか否かを判定し、前記メモリ制御手段は、前記メモリ判定手段により前記補助記憶メモリが一杯になったと判定された場合に、前記補助記憶メモリが保持するデータを前記主記憶メモリに書込んでもよい。
【００２６】
この構成によれば、外部より入力されたデータが論理アドレス順ではなく、論理アドレスに対応する主記憶メモリの物理アドレスの途中や最後から転送されてきた場合にも、補助記憶メモリにデータを保持しておくことができる。よって、主記憶メモリの物理アドレスに対応したページ単位分の論理アドレスのデータが補助記憶メモリに保持されてから、主記憶メモリに書込みを行うことができる。よって、無効なページの発生が少なくなるので、ガーベッジコレクションの回数を減らすことができる。また、データ書込みの効率を上げることができる。
【００２７】
また、前記メモリ判定手段はハードウェアで構成され、前記不揮発性記憶装置は、さらに、前記メモリ判定手段による判定結果を前記ＣＰＵに通知する通知手段を備え、前記ＣＰＵは、前記通知手段により通知された前記判定結果に基づき、前記メモリ制御手段を制御し、前記ＣＰＵの制御により前記メモリ制御手段は、前記補助記憶メモリに保持されているデータを、前記主記憶メモリの新たなページに前記ページ単位で書込んでもよい。
【００２８】
この構成によれば、補助記憶メモリが一杯になったことを通知手段がＣＰＵに通知する。これにより、ＣＰＵは、補助記憶メモリの状態を確認する処理を行わなくともよいので、ＣＰＵの処理シーケンスを簡単にすることができる。
【００２９】
また、前記メモリ判定手段は、前記補助記憶メモリが保持する有効な前記データ管理フラグの数に基づき、前記補助記憶メモリが一杯になったか否かを判定してもよい。
【００３０】
この構成によれば、メモリ判定手段は、補助記憶メモリが一杯になったか否かを容易に判定することができる。
【００３１】
また、前記メモリ判定手段は、前記補助記憶メモリが一杯になったか否かを判定し、前記メモリ制御手段は、前記メモリ判定手段により前記補助記憶メモリが一杯になったと判定された場合に、前記補助記憶メモリが格納するデータを前記主記憶メモリに書込み、前記ＣＰＵは、前記メモリ判定手段の判定が行われた後に、前記新たな入力データを前記補助記憶メモリに書込んでもよい。
【００３２】
この構成によれば、メモリ判定手段による判定の後に、新たな入力データを補助記憶メモリに書込むので、新たな入力データを補助記憶メモリに書込むことで補助記憶メモリが一杯になる場合であってもその後の処理が続行される。すなわち、補助記憶メモリが一杯の状態で、次に外部から入力されたデータのアドレスと補助記憶メモリが保持するデータとを比較してから、その後の処理を決定することができる。よって、同一アドレスのデータが来た場合は、補助記憶メモリが一杯であっても、上書きをすれば良く、補助記憶メモリに書込みに行くタイミングを遅らせることができる。これにより、不揮発性記憶装置の書込みを高速化することができる。また、補助記憶メモリの容量を有効に用いることができる。
【００３３】
また、前記不揮発性記憶装置は、さらに、前記入力データが、頻繁に更新されるか否かを判定する更新判定手段を備え、前記更新判定手段により頻繁に更新されると判定されたデータである特定データは、前記特定データ以外のデータと比べ、低い優先順位で前記主記憶メモリに書込まれてもよい。
【００３４】
この構成によれば、頻繁に更新されるデータ（ディレクトリエントリや鍵情報等）は、補助記憶メモリ内で保持し、処理の最後等に主記憶メモリに書込まれる。よって、頻繁に更新されるデータが来る度に、主記憶メモリに書込む必要がなくなり、主記憶メモリへの書換え回数を減すことができる。よって、不要な書込みが行われないので、ガーベッジコレクションの回数を減らすことができる。また、不揮発性記憶装置の寿命を延ばすことができる。
【００３５】
また、前記不揮発性記憶装置は、さらに、前記入力データのアドレスが、特定アドレスと一致するか否かを判定する特定アドレス判定手段を備え、前記特定アドレスを有するデータである特定データは、前記特定データ以外のデータと比べ、低い優先順位で前記主記憶メモリに書込まれてもよい。
【００３６】
この構成によれば、頻繁に更新される特定アドレスのデータ（ＦＡＴデータ等）は、補助記憶メモリ内で保持し、処理の最後等に主記憶メモリに書込まれる。よって、頻繁に更新される特定アドレスのデータが来る度に、主記憶メモリに書込む必要がなくなり、主記憶メモリへの書換え回数を減すことができる。よって、不要な書込みが行われないので、ガーベッジコレクションの回数を減らすことができる。また、不揮発性記憶装置の寿命を延ばすことができる。
【００３７】
また、前記補助記憶メモリは、保持する各データが前記特定データであるか否かを示す特定領域フラグを保持してもよい。
【００３８】
この構成によれば、補助記憶メモリが保持する特定領域のデータを容易に判別することができる。また、複数の特定領域を任意に設定することができる。
【００３９】
また、前記特定データが保持される領域は、前記補助記憶メモリ内で自由に設定できてもよい。
【００４０】
この構成によれば、複数の特定領域を任意に設定することができる。また、任意の領域を特定領域とすることができるので補助記憶メモリの容量を有効に用いることができる。
【００４１】
また、前記補助記憶メモリは、保持する各データが前記補助記憶メモリに正常に書込まれたか否かを示す書込み完了フラグを保持してもよい。
【００４２】
この構成によれば、補助記憶メモリに正常にデータが書込まれたか否かを容易に判定することができる。よって、補助記憶メモリが保持するデータの信頼性を向上させることができる。
【００４３】
また、前記補助記憶メモリは、保持する各データが前記主記憶メモリに書込まれたか否かを示す転送完了フラグを保持してもよい。
【００４４】
この構成によれば、補助記憶メモリが保持するデータが、既に主記憶メモリに保持したデータであり上書きを行ってもよいか否かを容易に判定することができる。また、主記憶メモリに正常にデータが書込まれたか否かを容易に判定することができ、主記憶メモリが保持するデータの信頼性を向上させることができる。
【００４５】
また、前記補助記憶メモリは、不揮発性RAMであってもよい。
【００４６】
この構成によれば、補助記憶メモリにデータが書込まれた後で、主記憶メモリに当該データを書込み前において電源が落ちたとしても、補助記憶メモリにはデータが残るので不揮発性記憶装置のデータが失われることはない。また、補助記憶メモリにデータを書込んだ時点で、外部に対し、書込み完了の通知を行うことが可能となり、不揮発性記憶装置の書込み速度を向上させることができる。
【００４７】
また、前記補助記憶メモリは、強誘電体メモリ（FeRAM）、磁性記録式随時書込み読み出しメモリ（MRAM）、オボニックユニファイドメモリ（OUM）およびレジスタンスRAM（RRAM）であってもよい。
【００４８】
また、前記アドレス判定手段は、ハードウェアで構成されてもよい。
【００４９】
この構成によれば、アドレス判定手段はハード的に補助記憶メモリが保持しているデータのアドレスと、外部から新たに入力されたデータのアドレスとが一致するか否かの判定を行うことができ、動作速度を向上させることができる。また、ＣＰＵの処理を減らすことができる。
【００５０】
また、本発明に係る不揮発性記憶装置のデータ書込み方法は、外部よりセクタ単位のデータである入力データが入力され、前記セクタ単位より大きいページ単位でデータの書込みが行われる不揮発性の主記憶メモリを備える不揮発性記憶装置のデータ書込み方法であって、前記入力データを補助記憶メモリに保持する保持ステップと、前記補助記憶メモリが前記ページ単位以上のデータを保持しているか否かを判定する判定ステップと、前記判定ステップにおいて前記補助記憶メモリが前記ページ単位以上のデータを保持していると判定された場合に、前記補助記憶メモリに保持されているデータを、前記主記憶メモリの新たなページに前記ページ単位で書込む書込みステップとを含む。
【００５１】
これにより、旧データのセクタを含まないページ単位で、主記憶メモリにデータが書込まれるので、従来の旧データのセクタを含むページ単位で主記憶メモリにデータを書込む場合に比べ、無効なページの発生を低減することができる。よって、無効ページが少なくなるので、ガーベッジコレクションの回数を減らすことができる。すなわち、主記憶メモリに書込む際の退避処理を行わなくともよいので、ガーベッジコレクションの回数を減らすことができる。よって、データ書込みを高速に行うことができる。また、主記憶メモリへの書込み回数を減らすことができるので、不揮発性記憶装置の書換え寿命を向上されることができる。
【００５２】
なお、本発明のように、不揮発性の補助記憶メモリを使用する先行技術として特開平７−２００４１８号公報に記載されている技術があるが、特開平７−２００４１８号公報には前述したような退避合理化については開示されていない。
【発明の効果】
【００５３】
本発明は、ガーベッジコレクションの回数を減らし、データ書込みを高速に行うことができる不揮発性記憶装置を提供することができる。
【発明を実施するための最良の形態】
【００５４】
以下、本発明に係る不揮発性記憶装置の実施の形態について、図面を参照しながら詳細に説明する。
【００５５】
（第１の実施形態）
本実施形態における不揮発性記憶装置は、アクセス装置より入力されるセクタ単位のデータを、少なくとも１ページ分補助記憶メモリに保持し、主記憶メモリにページ単位で書込みを行う。これにより、書込み回数を減らすことができる。よって、無効ページの発生を低減できるので、ガーベッジコレクションの回数を減らすごとができ、動作速度を向上させることができる。
【００５６】
まず、本発明の第１の実施形態おける不揮発性記憶装置の構成を説明する。
【００５７】
図１は、本発明の第１の実施形態における不揮発性記憶システムの構成を示すブロック図である。図１に示す不揮発性記憶システムは、不揮発性記憶装置１１０と、アクセス装置１００とを備える。
【００５８】
アクセス装置１００は、不揮発性記憶装置１１０にセクタ単位のユーザデータ（以降、単にデータ）の読出しまたは書込み命令を送る。書込み時には、アクセス装置１００は、不揮発性記憶装置１１０に書込みデータと、書込みデータの論理アドレスを送信する。読出し時には、アクセス装置１００は、不揮発性記憶装置１１０に読出しデータの論理アドレスを送信し、データを受信する。例えば、アクセス装置１００は、デジタルスチルカメラまたはパーソナルコンピュータ等である。
【００５９】
不揮発性記憶装置１１０は、メモリコントローラ１２０と、不揮発性の主記憶メモリであるフラッシュメモリ１３０とを備える。不揮発性記憶装置１１０は、例えば、ＳＤメモリカードである。
【００６０】
メモリコントローラ１２０は、アクセス装置１００からの書込み命令に応じ、フラッシュメモリ１３０へ、アクセス装置１００から入力されたデータの書込みを行う。また、メモリコントローラ１２０は、アクセス装置１００からの読出し命令に応じ、フラッシュメモリ１３０からデータを読出し、アクセス装置１００へ出力する。メモリコントローラ１２０は、ＣＰＵ１２１と、バッファメモリ１２２と、メモリ制御部１２３とを備える。
【００６１】
ＣＰＵ１２１は、アクセス装置１００との送受信およびフラッシュメモリ１３０へのデータの書込みおよび読出しにおけるアドレス管理等全体の制御を行う。また、ＣＰＵ１２１は、バッファメモリ１２２への書込み、および、メモリ制御部１２３の制御を行う。
【００６２】
バッファメモリ１２２は、アクセス装置１００から入力された、フラッシュメモリ１３０へ書込まれる前のデータを一時的に記憶する補助記憶メモリである。バッファメモリ１２２は、アクセス装置１００から入力されたセクタ単位のデータを、少なくともフラッシュメモリ１３０の書込み単位であるページ単位分保持する。バッファメモリ１２２は、不揮発性ＲＡＭであり、例えば、強誘電体メモリ（FeRAM）、磁性記録式随時書込み読み出しメモリ（MRAM）、オボニックユニファイドメモリ（OUM）およびレジスタンスRAM（RRAM）等である。なお、バッファメモリ１２２は、揮発性メモリ（ＳＲＡＭ等）であってもよい。
【００６３】
メモリ制御部１２３は、主記憶メモリ１３０およびバッファメモリ１２２へのデータの書込みおよび読出しを制御する。
【００６４】
なお、ＣＰＵ１２１が実行する論理物理変換処理、すなわち、アクセス装置１００が指定した論理アドレスをフラッシュメモリ１３０の物理アドレスに変換する処理などのアドレス管理処理は、一般的に公知の技術であるので簡単の為に説明を省略する。
【００６５】
フラッシュメモリ１３０は、セクタ単位より大きいページ単位でデータの書込みが行われる。フラッシュメモリ１３０は、例えば、多値ＮＡＮＤフラッシュメモリである。
【００６６】
図２は、フラッシュメモリ１３０の物理ブロックの構成の一例を示す図である。図２に示すフラッシュメモリ１３０は、８つの物理ブロック２００（ＰＢ０〜ＰＢ７）から構成される。物理ブロック２００は、データ消去(イレース)の最小単位であり、例えば、２５６Ｋバイトである。
【００６７】
図３は、物理ブロック２００における物理アドレスの構成の一例を示す図である。図３に示す物理ブロック２００は、１２８個のページ２１０より構成される。ページ２１０は、フラッシュメモリ１３０のデータ書込みの最小単位であり、例えば２Ｋバイトである。各ページ２１０は、２０４８バイトのデータ領域２１１と、６４バイトの管理領域２１２とを備える。アクセス装置１００からのデータ単位であるセクタ２１３は５１２バイトであり、各ページ２１０には４セクタ分のデータが記憶される。例えば、ページ０には、ＰＳＮ０〜ＰＳＮ３の４セクタ分のデータが記録される。また、管理領域２１２は、ＣＰＵ１２１のアドレス管理処理に必要な情報が記憶される領域であるが、詳細な説明は省略する。
【００６８】
なお、図３で左上からＰＳＮ０，ＰＳＮ１，…，ＰＳＮ５１１というように物理的な配置記号を付している。ＰＳＮとはPhysical Sector Numberの頭文字をとった略号である。なお、フラッシュメモリ１３０は図２および図３に示す構成に限ったものではない。
【００６９】
図４は、バッファメモリ１２２に保持されるデータの構成を示す図である。図４に示すように、バッファメモリ１２２は物理ブロックの１セクタ分のデータと論理アドレスを一時記憶できる容量を有しており、８つのワード３０１を保持する。各ワード３０１は、データ領域３０２と、論理アドレス領域３０３と、データ管理フラグ３０４とを含む。データ領域３０２には、１セクタ分である５１２バイトのデータが保持される。論理アドレス領域３０３には、当該データのセクタ単位のアドレスが保持され、１ＧＢｙｔｅ分のセクタを識別できるビット数（２１ビット）を有している。データ管理フラグ３０４は、バッファメモリ１２２が保持する各データの書込まれた順序を示す情報である。すなわち、データ管理フラグ３０４は、同一アドレスの複数のデータがバッファメモリ１２２に保持されたときに、どのデータが最新であるかを示す。例えば、データ管理フラグ３０４は、４ビットである。図４に示すように、ワード０のデータ領域３０２にはデータＡが保持され、論理アドレス領域３０３には“００００００ｈ”が保持され、データ管理フラグ領域３０４には“１”が設定される。当該データがバッファメモリ１２２に保持されている状態で、同一論理アドレスのデータＢがアクセス装置１００より送られてくると、ワード１のデータ領域３０２にはデータＢが保持され、論理アドレス領域３０３には“００００００ｈ”が保持され、データ管理フラグ３０４にはワード１のデータはワード０のデータの後に書込まれたことを示す情報である“２”が設定される。これにより、ＣＰＵ１２１は、バッファメモリ１２２に保持されている同一アドレスのデータのデータ管理フラグ３０４を確認することで、どのデータが最新のデータであるか判定することができる。
【００７０】
以上のように構成された、本発明の第１の実施形態における不揮発性記憶装置の動作について、以下図面を用いて説明する。
【００７１】
図５は、本実施形態における不揮発性記憶装置１１０の書込み処理のフローチャートである。アクセス装置１００から転送されたデータをバッファメモリ１２２が一時記憶し、その後、一時記憶されたデータをフラッシュメモリ１３０に書込む一連の書込み動作を、図５を用いて説明する。
【００７２】
図５において、不揮発性記憶装置１１０は、アクセス装置１００からのライトコマンド（以下、ＷＣＭＤと記載する）の受信待ち状態となる（Ｓ５００）。ＣＰＵ１２１は、ＷＣＭＤを受信すると（Ｓ５００でＹｅｓ）、アクセス装置１００から新たに入力されたデータの論理セクタアドレスと、バッファメモリ１２２に保持されているデータの論理セクタアドレスとを比較し、一致するか否かを判定する（Ｓ５０１）。バッファメモリ１２２に論理アドレスが一致するデータが無い場合、すなわち新たに入力されたデータが新規アドレスのデータである場合（Ｓ５０２でＹｅｓ）、バッファメモリ１２２に1セクタ分のデータと論理セクタアドレスとが一時記憶される（Ｓ５０３）。バッファメモリ１２２に論理セクタアドレスが一致するデータがある場合、すなわち新たに入力されたデータが新規アドレスのデータでない場合（Ｓ５０２でＮｏ）、ＣＰＵ１２１は、アクセス装置１００から新たに入力されたデータのデータ管理フラグ３０４の値を、バッファメモリ１２２に保持されている論理セクタアドレスが一致したデータのデータ管理フラグ３０４の値から１インクリメントした値にし（Ｓ５０４）、バッファメモリ１２２に1セクタ分のデータと論理セクタアドレスを一時記憶させる（Ｓ５０３）。次に、ＣＰＵ１２１は、バッファメモリ１２２が一杯になったか否かを判定する（Ｓ５０５）。バッファメモリ１２２が一杯の場合（Ｓ５０５でＹｅｓ）、ＣＰＵ１２１の制御によりメモリ制御部１２３は、バッファメモリ１２２に保持されているデータをフラッシュメモリ１３０の書込み単位であるページ単位でフラッシュメモリ１３０の所定物理ブロックの新たなページに書込む（Ｓ５０６）。ここで、ＣＰＵ１２１は、各データに対応するデータ管理フラグ３０４に基づき、フラッシュメモリ１３０に書込むデータを決定する。なお、所定物理ブロックとは、ＣＰＵ１２１の論理物理変換などのアドレス管理処理によって指定した物理ブロックであり、どの物理ブロックを指定するかについては説明を省略する。
【００７３】
また、バッファメモリ１２２に空き領域がある場合は（Ｓ５０５でＮｏ）、アクセス装置から転送終了コマンド（以下ＳＴＯＰという）が転送されたかどうかをチェックする（Ｓ５０７）。ＳＴＯＰを受信した場合には（Ｓ５０７でＹｅｓ）、ＣＰＵ１２１は、アクセス装置１００に対して書込み完了を通知する（Ｓ５０８）。
【００７４】
なお、1セクタ分のデータをバッファメモリ１２２に一時記憶した時点で、アクセス装置１００に対して書込み完了を通知してもよい。また、バッファメモリ１２２以外の他のバッファメモリを用意し、ＣＰＵ１２１は、新たにアクセス装置１００から転送されたデータを一度他のバッファメモリに取り込んでから、新たにアクセス装置１００から転送されたデータの論理セクタアドレスとバッファメモリ１２２のデータの論理セクタアドレスとを比較し、その後の処理を実施してもよい。
【００７５】
以上説明した不揮発性記憶装置１１０の書込み処理に基づき、アクセス装置１００がデータを書換える例について説明する。なお、本発明と従来の発明との差異を明確にするために、まず先に、図６を用いて本発明の不揮発性記憶装置１１０のデータ書換え処理の説明をし、次に図７および図８を用いて従来の不揮発性記憶装置のデータ書換え処理の説明をする。
【００７６】
図６は、本実施形態における不揮発性記憶装置１１０の書換え処理の流れを示した図である。
【００７７】
図６において、アクセス装置１００からＷＣＭＤが３回転送される。最初のＷＣＭＤをＷＣＭＤ１、次のＷＣＭＤをＷＣＭＤ２、最後のＷＣＭＤをＷＣＭＤ３と表記する。また、フラッシュメモリ１３０の物理ブロックＰＢ５のページ０に論理セクタアドレスＬＳ０〜ＬＳ３の旧データＬＳ０Ａ〜ＬＳ３Ａが保持されており、物理ブロックＰＢ０のページ０は、データが書込まれていないとする。また、バッファメモリ１２２は、データを保持していないとする。なお、図６において、説明の単純化のため、バッファメモリ１２２が保持するワード数は５としているがこれに限らない。
【００７８】
ＷＣＭＤ１において、不揮発性記憶装置１１０は論理セクタアドレス０（ＬＳ０）のデータＬＳ０Ｂを受信し、バッファメモリ１２２に一時的に記憶する。ＬＳ０Ｂを受信した後に、アクセス装置１００よりＳＴＯＰ信号が転送されると、データを受け取ったＣＰＵ１２１は、バッファメモリ１２２に保持されているデータの論理セクタアドレスと、ＬＳ０Ｂの論理セクタアドレス（ＬＳ０）との比較を行い、一致するか否かを判定する。ＣＰＵ１２１は、一致する論理アドレスのデータがないので、ＬＳ０Ｂをバッファメモリ１２２に保持する。この時、データＬＳ０Ｂは新規のデータであるので、データＬＳ０Ｂのデータ管理フラグ３０４は“１”に設定される。
【００７９】
次に、ＷＣＭＤ２において、アクセス装置１００から、論理セクタアドレスＬＳ０の１セクタ分のデータＬＳ０Ｃが転送され、その後ＳＴＯＰ信号が転送される。ＣＰＵ１２１は、バッファメモリ１２２に保持されているデータの論理セクタアドレスと、ＬＳ０Ｃの論理セクタアドレスとの比較を行う。ＷＣＭＤ１において転送されたＬＳ０Ｂの論理セクタアドレス（ＬＳ０）とＬＳ０Ｃの論理セクタアドレス（ＬＳ０）とは一致するので、データＬＳ０Ｃに対応するデータ管理フラグ３０４の値を、バッファメモリ１２２が保持しているデータＬＳ０Ｂのデータ管理フラグ３０４の値“１”を１インクリメントした値である“２”に設定する。ＣＰＵ１２１は、バッファメモリ１２２のＬＳ０Ｂが保持されている領域とは異なる領域にＬＳ０Ｃと論理アドレス（ＬＳ０）とインクリメントしたデータ管理フラグ３０４の値“２”とを保持する。
【００８０】
その後、アクセス装置１００は、ＷＣＭＤ３を転送し、引き続き論理セクタアドレス１〜３までの３セクタ分のデータ（ＬＳ１Ｂ、ＬＳ２ＢおよびＬＳ３Ｂ）を転送する。ＬＳ１Ｂ、ＬＳ２ＢおよびＬＳ３Ｂは、バッファメモリ１２２にＬＳ０ＢおよびＬＳ０Ｃに続いて順番に一時記憶される。この時、ＬＳ１Ｂ、ＬＳ２ＢおよびＬＳ３Ｂは新規アドレスのデータであるので、ＬＳ１Ｂ、ＬＳ２ＢおよびＬＳ３Ｂに対応するデータ管理フラグ３０４の値は“１”に設定される。
【００８１】
ＬＳ３Ｂが記憶された時点で、バッファメモリ１２２が一杯になり、ＣＰＵ１２１は一杯になったことを認識する。メモリ制御部１２３は、ＣＰＵ１２１からの命令により、バッファメモリ１２２に一時記憶されたデータをフラッシュメモリ１３０に転送し、書込みを行う。ここで、ＣＰＵ１２１は、ＬＳ０ＢとＬＳ０Ｃとは同一論理アドレスのデータであることを認識し、データ管理フラグ３０４を見ることでＬＳ０Ｃが最新のデータであることを確認する。すなわち、ＣＰＵ１２１は、ＬＳ０Ｂに対応するデータ管理フラグ３０４の値“１”およびＬＳ０Ｃに対応するデータ管理フラグ３０４の値“２”から、ＬＳ０Ｂが古いデータ（先にバッファメモリ１２２に書込まれたデータ）であり無効であるという情報を得る。また、ＣＰＵ１２１は、ＬＳ０Ｃが新しいデータ（後にバッファメモリ１２２に書込まれたデータ）であり有効であるという情報を得る。ＣＰＵ１２１は、ＬＳ０Ｃが最新のデータであると判断し、ＬＳ０Ｃ、ＬＳ１Ｂ、ＬＳ２ＢおよびＬＳ３Ｂをフラッシュメモリ１３０に転送し、物理ブロックＰＢ０のページ０に一括して書込みを実施する。このように、ＬＳ０Ｃ、ＬＳ１Ｂ、ＬＳ２ＢおよびＬＳ３Ｂの新データを一括してＰＢ０のページ０に書込むため、旧データ（ＬＳ０Ａ〜ＬＳ３Ａ）の退避処理は不要となる。旧データを記憶したＰＢ５のページ０は、ある適当なタイミングで消去されることとなるが、消去動作については簡単のため省略する。
【００８２】
次に、図７を用いて従来の不揮発性記憶装置の動作を説明する。図７は、従来の不揮発性記憶装置の書換え処理の流れを示す図である。
【００８３】
図７においても、図６と同様にＷＣＭＤ１〜３がアクセス装置１００から転送される。従来の不揮発性記憶装置１１１０は、ＷＣＭＤ〜ＳＴＯＰまでの処理単位毎にバッファメモリ１１２２からフラッシュメモリ１１３０に書込みがなされ、またこの単位毎にアクセス装置１００に対して書込み完了を通知するようにしていた。また、バッファメモリ１１２２は1セクタ分の容量を有す。図７において、ＷＣＭＤ１の受信後、ＬＳ０Ｂをバッファメモリに一時記憶する。この時、物理ブロックＰＢ５のページ０にＬＳ０Ａ〜ＬＳ３Ａが既に記憶されているものとする。また新規データ書込み予定の物理ブロックＰＢ０〜ＰＢ４は消去済ブロックであるとする。
【００８４】
従来の不揮発性記憶装置１１１０は、ＷＣＭＤ１のＳＴＯＰを受信した後に、バッファメモリ１１２２のＬＳ０Ｂを物理ブロックＰＢ０のページ０のＰＳＮ０の位置に書込むと同時に、物理ブロックＰＢ５のページ０に記憶されている旧データＬＳ１Ａ〜ＬＳ３Ａを、物理ブロックＰＢ０のページ０のＰＳＮ１〜３の位置に書込む。
【００８５】
次に、ＷＣＭＤ２の直後に転送されたＬＳ０Ｃをバッファメモリ１１２２に一時記憶し、先程と同様、ＳＴＯＰを受信した後に、バッファメモリ１１２２のＬＳ０Ｃを物理ブロックＰＢ１のページ０のＰＳＮ０の位置に書込むと同時に、物理ブロックＰＢ０のページ０に保持されているＬＳ１Ａ〜ＬＳ３Ａを、物理ブロックＰＢ１のページ０のＰＳＮ１〜３の位置に書込む。
【００８６】
最後に、ＷＣＭＤ３の直後に転送されたＬＳ１Ｂ〜ＬＳ３Ｂを逐次バッファメモリ１１２２を介してＰＢ２〜ＰＢ４のページ０の所定セクタ記憶位置に書込むと同時に、旧データが記憶されているＰＢ１〜ＰＢ３の対応するセクタ記憶位置から退避する。
【００８７】
以上、図６および図７を用いて、本発明を従来の例と対比させて書換え処理について記したが、本実施形態における不揮発性記憶装置１１０の方が従来の不揮発性記憶装置１１１０よりも退避処理が不要な分、フラッシュメモリ１３０への書込み回数が減るので、書換え速度が速いことがわかる。具体的には、上述した従来の不揮発性記憶装置１１１０は、ＬＳ０ＣおよびＬＳ１Ｂ〜ＬＳ３Ｂの書換え例においては、５回のページライトが必要であったのに対して、本実施形態における不揮発性記憶装置１１０は、1回のページライトで済む。また、本実施形態における不揮発性記憶装置１１０は、従来と比べ書込み回数が少なく、書込みに使用するデータ領域も少なくなる。すなわち、無効ページの発生を低減することができるので、ガーベッジコレクションの回数を減らすことができる。また、フラッシュメモリ１３０への書込み回数が減ることにより、不揮発性記憶装置の寿命を延ばすことができる。
【００８８】
なお、図６および図７では、旧データが既に記憶されている例であったが、旧データが存在しない場合において説明する。図８は、旧データが存在しない場合の従来の不揮発性記憶装置の書込み処理の流れを示す図である。図８に示すようにバッファメモリ１１２２は、４セクタ分の容量を持つとする。
【００８９】
まず、ＷＣＭＤ１の時に物理ブロックＰＢ０のページ０の対応するセクタ記憶位置にＬＳ０Ａを書込む。次に、ＷＣＭＤ２の時に物理ブロックＰＢ０のページ１の対応するセクタ記憶位置にＬＳ０Ｂを書込む。最後に、ＷＭＣＤ３の時にＬＳ１Ｂ〜ＬＳ３ＢをＰＢ０のページ１の対応するセクタ位置に書込む。よって、図８に示すように、旧データが存在しない場合の従来の不揮発性記憶装置は、３回のページライトで済む。すなわち、旧データが存在しない場合は、同一論理セクタアドレスのデータが保持されている場合と比べると書換え速度は速くなるが、本実施形態における不揮発性記憶装置１１０と比べればフラッシュメモリへの書込み回数が多く、書換え速度が遅いことがわかる。
【００９０】
図８に示すような同じページの異なる記憶位置に時分割的に書込む方法を、分割書込みという。例えば、２値ＮＡＮＤフラッシュメモリは分割書込みが可能であるが、多値ＮＡＮＤフラッシュメモリにおいては、信頼性を確保するために、分割書込みは保証されていない。また、分割書込みが可能である場合でも、分割書込みの回数には制限がある。従って、信頼性のある不揮発性記憶装置を実現しようとすると、図８に示すような分割書込みを適用することはできない。本実施形態における不揮発性記憶装置１１０の書込みは、分割書込みを使用せずに、書込み回数を減らすことができるので、信頼性と高速動作とを両立することができる。
【００９１】
また、本実施形態における不揮発性記憶装置１１０は、バッファメモリ１２２に、旧データ(図６の例では、ＬＳ０Ｂ)を保持しておく。これにより、当該旧データと同一の論理セクタアドレスのデータ(図６の例では、ＬＳ０Ｃ)をバッファメモリ１２２に書込み中に、電源が落ちる等により書込みが失敗した場合でも、旧データは失われない。
【００９２】
なお、上記説明では、バッファメモリ１２２が一杯になった時点で、フラッシュメモリ１３０への書込みを行っているが、バッファメモリ１２２に少なくとも１ページ分のデータが保持された時点で、フラッシュメモリ１３０への書込みを行ってもよい。この場合、ＣＰＵ１２１は、ステップＳ５０５において、バッファメモリ１２２が一杯であるか否かの比較を行うのではなく、バッファメモリ１２２がページ単位分のデータを保持するか否かを判定する。
【００９３】
また、上記説明では、主記憶メモリとして多値ＮＡＮＤフラッシュメモリ１３０を用いているが、２値ＮＡＮＤフラッシュメモリであってもよいし、他の不揮発性メモリ（ＮＯＲフラッシュメモリまたはＥＥＰＲＯＭ等）を用いてもよい。
【００９４】
（第２の実施形態）
第２の実施形態における不揮発性記憶装置は、バッファメモリ１２２に同一の論理アドレスのデータが保持されている場合には、新しいデータを旧データが保持されている領域に上書きする。これにより、バッファメモリ１２２の容量を有効に活用することができる。
【００９５】
図９は、第２の実施形態における不揮発性記憶装置の書込み処理のフローチャートである。なお、第２の実施形態のおける不揮発性記憶装置の構成は図１と同様であるので説明は省略する。
【００９６】
図９に示すように、第２の実施形態における不揮発性記憶装置の書込み処理は、ステップＳ９０２においてバッファメモリ１２２に論理セクタアドレスが一致するデータがある場合（Ｓ９０２でＮｏ）に、バッファメモリ１２２の一致したデータが保持されている領域に新たにアクセス装置から入力された1セクタ分のデータと論理セクタアドレスとを上書きする（Ｓ９０６）点が第１の実施形態と異なる。ステップＳ９０６の後、アクセス装置１００からＳＴＯＰが転送されたかどうかをチェックする（Ｓ９０７）。なお、ＷＣＭＤの受信（Ｓ９００）、アドレス比較（Ｓ９０１）、アドレスが一致しなかった後の処理（Ｓ９０２でＹｅｓ〜Ｓ９０５）、ストップ受信（Ｓ９０７）および書込み完了通知（Ｓ９０８）は、第１の実施形態と同様であるので説明は省略する。
【００９７】
図１０は、第２の実施形態における不揮発性記憶装置の書換え処理の流れを示した図である。
【００９８】
図１０において、第１の実施形態における図６と同様にアクセス装置１００からＷＣＭＤが３回転送される。また、図６と同様にフラッシュメモリ１３０の物理ブロックＰＢ５のページ０に論理セクタアドレスＬＳ０〜ＬＳ３の旧データＬＳ０Ａ〜ＬＳ３Ａが保持されており、物理ブロックＰＢ０のページ０は、データが書込まれていないとする。また、バッファメモリ１２２は、データを保持していないとする。なお、図９において、説明の単純化のため、バッファメモリ１２２が保持するワード数は４としているがこれに限らない。
【００９９】
ＷＣＭＤ１において、不揮発性記憶装置１１０は、論理セクタアドレス０（ＬＳ０）のデータＬＳ０Ｂを受信し、バッファメモリ１２２に一時的に記憶する。ＬＳ０Ｂを受信した後に、ＳＴＯＰ信号が転送されると、データを受け取ったＣＰＵ１２１は、バッファメモリ１２２に保持されているデータの論理セクタアドレスと、ＬＳ０Ｂの論理セクタアドレス（ＬＳ０）との比較を行う。一致する論理セクタアドレスがないので、ＣＰＵ１２１は、ＬＳ０Ｂをバッファメモリ１２２に保持する。
【０１００】
次に、ＷＣＭＤ２において、アクセス装置１００から、論理セクタアドレスＬＳ０の１セクタ分のデータＬＳ０Ｃが転送され、その後ＳＴＯＰ信号が転送される。ＣＰＵ１２１は、バッファメモリ１２２に保持されているデータの論理セクタアドレスと、ＬＳ０Ｃの論理セクタアドレスとの比較を行う。ＷＣＭＤ１において転送されたＬＳ０Ｂの論理セクタアドレスとＬＳ０Ｃの論理セクタアドレスとは一致するので、ＣＰＵ１２１は、新規のデータ（ＬＳ０Ｃ）をバッファメモリ１２２の旧データ（ＬＳ０Ｂ）が保持されている領域に上書きする。
【０１０１】
その後、アクセス装置１００は、ＷＣＭＤ３を転送し、引き続き論理セクタアドレス１〜３（ＬＳ１〜ＬＳ３）までの３セクタ分のデータ（ＬＳ１Ｂ、ＬＳ２ＢおよびＬＳ３Ｂ）を転送する。ＬＳ１Ｂ、ＬＳ２ＢおよびＬＳ３Ｂは新規アドレスのデータであるため、バッファメモリ１２２の空き領域にＬＳ０ＢおよびＬＳ０Ｃに続いて順番に一時記憶される。
【０１０２】
ＬＳ３Ｂが記憶された時点で、バッファメモリ１２２が一杯になり、ＣＰＵ１２１は一杯になったことを認識する。メモリ制御部１２３は、ＣＰＵ１２１からの命令により、バッファメモリ１２２に一時記憶されたデータをフラッシュメモリ１３０に転送し、書込みを行う。ＣＰＵ１２１は、ＬＳ０Ｃ、ＬＳ１Ｂ、ＬＳ２ＢおよびＬＳ３Ｂをフラッシュメモリ１３０に転送し、物理ブロックＰＢ０のページ０に一括して書込みを実施する。よって、ＬＳ０Ｃ、ＬＳ１Ｂ、ＬＳ２ＢおよびＬＳ３Ｂの新データを一括してＰＢ０のページ０に書込むため、旧データの退避処理は不要となる。
【０１０３】
以上より、第２の実施形態における不揮発性記憶装置は、第１の実施形態と同様に一回のページライトでデータを書込むことができ、従来例と比較しても優れていることがわかる。また、第２の実施の形態ではバッファメモリ１２２に同一論理アドレスのデータが保持されている場合には、旧データが保持されている領域に新規データを上書きするため、バッファメモリ１２２の容量を有効活用することができる。また、データ管理フラグ３０４が不要になるという優位性がある。また、上記説明ではバッファメモリ１２２の容量を４セクタとしたが、バッファメモリ１２２の容量を更に増やすことによって、より多くのデータを一時的に保持し、同一アドレスのデータが来た場合に上書きすることができるので、更に書込みの効率化が可能になる。
【０１０４】
（第３の実施形態）
第３の実施形態における不揮発性記憶装置は、バッファメモリ１２２が一杯になったことをＣＰＵ１２１に通知する通知部を備える。これにより、ＣＰＵ１２１の処理を低減することができる。
【０１０５】
図１１は、第３の実施形態における不揮発性記憶システムの構成を示すブロック図である。なお、図１と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１０６】
図１１に示す第３の実施形態における不揮発性記憶装置１１０は、メモリコントローラ１２０が通知部１２４を備える点が図１に示す第１の実施形態と異なる。通知部１２４は、ハードウェアで構成され、バッファメモリ１２２が一杯であるか否かを判定し、判定結果をＣＰＵ１２１に通知する。ＣＰＵ１２１は、通知部１２４により通知された判定結果に基づき、メモリ制御部１２３を制御し、バッファメモリ１２２が保持するデータをフラッシュメモリ１３０に書込む。
【０１０７】
図１２は、第３の実施形態における不揮発性記憶装置１１０の書込み処理のフローチャートである。
【０１０８】
アクセス装置１００から転送されたデータをバッファメモリ１２２が一時記憶し、その後、一時記憶されたデータをフラッシュメモリ１３０に書込む一連の書込み動作を、図９を用いて説明する。
【０１０９】
図１２において、ＷＣＭＤ受信からバッファメモリ１２２が一杯であるか否かの判定（Ｓ１２００〜Ｓ１２０５）までは、図９に示す第２の実施形態と同様である。
【０１１０】
バッファメモリ１２２が一杯になった時点で（Ｓ１２０５でＹｅｓ）、通知部１２４は、ＣＰＵ１２１にバッファメモリ１２２が一杯であることを通知する（Ｓ１２０９）。ＣＰＵ１２１はその通知信号を受けて、メモリ制御部１２３を使用してフラッシュメモリ１３０の所定物理ブロックにフラッシュメモリ１３０の書込み単位であるページ単位でデータを書込む（Ｓ１２０６）。
【０１１１】
以上より、第３の実施形態における不揮発性記憶装置１１０は、通知部１２４がバッファメモリ１２２が一杯になったことをＣＰＵ１２１に通知する。これにより、バッファメモリ１２２に保持されているデータを主記憶メモリ１３０に書込みに行くタイミングを、ＣＰＵ１２１がバッファメモリ１２２に対してデータを書込む度に確認する必要がなく、バッファメモリ１２２からの信号を受けるだけでよいので、ＣＰＵ１２１の処理シーケンスを簡単にすることができる。また、通知部１２４がハード的にバッファメモリ１２２が一杯であるか否かの判定、および、ＣＰＵ１２１への判定結果の通知を行うので、処理を高速化することができる。
【０１１２】
（第４の実施形態）
第４の実施形態における不揮発性記憶装置は、バッファメモリ１２２が一杯になったか否かをデータ管理フラグ３０４により判定する。これにより、容易にバッファメモリ１２２の空き状態を判定することができる。
【０１１３】
第４の実施形態における不揮発性記憶装置１１０の構成は図１と同様であり、書込み処理のフローチャートは図５と同様である。
【０１１４】
第４の実施形態における不揮発性記憶装置１１０のＣＰＵ１２１は、図５におけるステップＳ５０５において、バッファメモリ１２２が保持する有効なデータ管理フラグ３０４の数に基づき、バッファメモリ１２２が一杯になったか否かを判定する点が第１の実施形態と異なる。例えば、不要なデータ(フラッシュメモリ１３０に書込み済みのデータ等)のデータ管理フラグ３０４の値を“０”に設定する。また、データが書込まれていない空き領域のデータ管理フラグ３０４の値も“０”に設定する。この場合、ＣＰＵ１２１は、バッファメモリ１２２のデータ管理フラグ３０４を確認し、データ管理フラグ３０４が“０”のデータが無い場合に、バッファメモリ１２２は一杯であると判定することができる。
【０１１５】
以上より、第４の実施形態における不揮発性記憶装置１１０は、データ管理フラグ３０４を確認することで、バッファメモリ１２２が一杯であるか否かをＣＰＵ１２１が容易に判定することがきる。これにより、バッファメモリ１２２が保持するデータをフラッシュメモリ１３０に書込みに行くタイミング決めるための、第３の実施形態で説明した通知部１２４等を備える必要がなくなり、不揮発性記憶装置１１０の回路構成を簡単にすることができる。
【０１１６】
（第５の実施形態）
第５の実施形態における不揮発性記憶装置は、バッファメモリ１２２が一杯であるか否かを判定した後に、バッファメモリ１２２にデータに書込む。これにより、フラッシュメモリ１３０に書込みに行くタイミングを遅らせることができるので、バッファメモリ１２２の容量を有効に用いることができる。
【０１１７】
図１３は、第５の実施形態における不揮発性記憶装置１１０の書込み処理のフローチャートである。なお、第５の実施形態における不揮発性記憶装置１１０の構成は、図１と同様である。
【０１１８】
図１３において、不揮発性記憶装置１１０は、アクセス装置１００からのライトコマンドの受信待ち状態となる（Ｓ１３００）。ＷＣＭＤを受信すると（Ｓ１３００でＹｅｓ）、ＣＰＵ１２１は、アクセス装置１００から転送されてきたデータの論理セクタアドレスと、バッファメモリ１２２に保持されているデータの論理セクタアドレスとを比較する（Ｓ１３０１）。バッファメモリ１２２に論理セクタアドレスが一致するデータが無い場合（Ｓ１３０２でＹｅｓ）、ＣＰＵ１２１は、バッファメモリ１２２が一杯になったか否かを判定する（Ｓ１３０３）。ここで、ステップＳ１３０２における不一致のアドレス数がバッファメモリ１２２に保持できるデータ数と一致した場合には、バッファメモリ１２２は、一杯であると判断される。例えば、バッファメモリ１２２は最大で８ワードのデータを保持するとする。バッファメモリ１２２に３個の有効なデータが保持されているとすると、ステップＳ１３０２における不一致のアドレス数は３個であり、バッファメモリ１２２に保持できるデータ数である８個と一致しない。すなわち、ＣＰＵ１２１は、バッファメモリ１２２は一杯でないと判定する。また、バッファメモリ１２２に８個の有効なデータが保持されているとすると、ステップＳ１３０２における不一致のアドレス数は８個であり、バッファメモリ１２２に保持できるデータ数である８個と一致する。すなわち、ＣＰＵ１２１は、バッファメモリ１２２は一杯であると判定する。
【０１１９】
バッファメモリ１２２が一杯であると（Ｓ１３０３でＹｅｓ）、バッファメモリ１２２からフラッシュメモリ１３０の所定物理ブロックにフラッシュメモリ１３０の書込み単位であるページ単位でデータが書込まれる（Ｓ１３０４）。ステップＳ１３０４の後に、バッファメモリ１２２にアクセス装置１００から入力された1セクタ分のデータと論理セクタアドレスとが一時記憶される（Ｓ１３０５）。また、バッファメモリ１２２が一杯で無い場合（Ｓ１３０３でＮｏ）は、ステップ１３０３の後に、バッファメモリ１２２にアクセス装置１００から入力された1セクタ分のデータと論理セクタアドレスとが一時記憶される（Ｓ１３０５）。なお、バッファメモリ１２２に論理セクタアドレスが一致するデータがある場合（Ｓ１３０２でＮｏ）の処理は、図９に示す第２の実施形態と同様であるので説明は省略する。
【０１２０】
以上より、第５の実施形態における不揮発性記憶装置１１０は、バッファメモリ１２２が一杯であるか否かを判定した後に、バッファメモリ１２２への新たにアクセス装置１００から入力されたデータの書込みを行う。よって、新たなにアクセス装置１００から入力されたデータをバッファメモリ１２２に書込むことでバッファメモリ１２２が一杯になる場合であってもその後の処理が続行される。すなわち、バッファメモリ１２２が一杯の状態で、次にアクセス装置１００から転送されてきたデータとバッファメモリ１２２が保持するデータとを比較してから、その後の処理を決定することができる。よって、同一アドレスのデータが来た場合は、バッファメモリ１２２が一杯であっても、上書きをすれば良く、フラッシュメモリ１３０に書込みに行くタイミングを遅らせることができる。また、バッファメモリ１２２の容量を有効に用いることができる。よって、フラッシュメモリ１３０への書込み回数を減らすことができる。
【０１２１】
また、第５の実施形態における不揮発性記憶装置１１０は、ステップＳ１３０２における不一致のアドレス数がバッファメモリ１２２に保持できるデータ数と一致した場合には、バッファメモリ１２２は一杯であると判断する。これにより、バッファメモリ１２２が保持するデータをフラッシュメモリ１３０に書込みに行くタイミング決めるための、通知部１２４等を備える必要がなくなり、システムの回路構成を簡単にすることができる。さらに、ステップ１３０２の処理で得られる情報である不一致のアドレス数からバッファメモリ１２２が一杯であるか否かを判定するので、バッファメモリ１２２が一杯であることを示すためのフラグ等を設ける必要がなく、バッファメモリ１２２の容量を削減することができる。
【０１２２】
（第６の実施形態）
第６の実施形態における不揮発性記憶装置は、頻繁に更新される論理セクタアドレスのデータのフラッシュメモリ１３０への書込みの優先順位を下げることで、フラッシュメモリ１３０への書込み回数を減らすことができる。
【０１２３】
図１４は、第６の実施形態における不揮発性記憶装置の書換え処理の流れを示した図である。なお、第６の実施形態における不揮発性記憶装置の構成は、図１と同様である。
【０１２４】
図１４において、ＷＣＭＤ１およびＷＣＭＤ２で転送されるデータＬＳＢ０ＢおよびＬＳＢ０Ｃは、フラッシュメモリ１３０のある特定領域に保持される頻繁に書換えられるデータである。また、ＷＣＭＤ３で転送されるデータＬＳＡ０Ｂ〜ＬＳＡ３Ｂは、写真データや音楽のデータ等連続的に書込まれるデータで、あまり頻繁に書換えられるデータではないとする。また、フラッシュメモリ１３０は、物理ブロックＰＢ５のページ０に論理セクタアドレスＬＳＡ０〜ＬＳＡ３のデータＬＳＡ０Ａ〜ＳＬＡ３Ａを保持しており、物理ブロックＰＢ７のページ０に論理セクタアドレスＬＳＢ０〜ＬＳＢ３のデータＬＳＢ０Ａ〜ＬＳＢ３Ａを保持している。さらに、フラッシュメモリ１３０の物理ブロックＰＢ０のページ０および物理ブロックＰＢ２のページ０は、データを保持していないとする。なお、図１４において、説明の簡単化のため、バッファメモリ１２２が保持するワード数は５としているが、これに限らない。また、バッファメモリ１２２に保持される論理セクタアドレス３０３は、論理ブロックアドレス３０３１と、論理ページアドレス３０３２とを含む。
【０１２５】
ＷＣＭＤ１において、不揮発性記憶装置１１０は論理ブロックアドレス３０３１が“０ｘ０３”であり論理セクタアドレス３０３２が“０ｘ００”（論理セクタアドレスＬＳＢ０）のデータＬＳＢ０Ｂを受信し、バッファメモリ１２２に一時的に記憶する。アクセス装置１００は、ＷＣＭＤ１において、データＬＳＢ０Ｂを転送した後に、ＳＴＯＰ信号を転送する。データＬＳＢ０Ｂを受け取ったＣＰＵ１２１は、ＬＳＢ０Ｂの論理セクタアドレスと、バッファメモリ１２２に保持されているデータの論理セクタアドレスと比較を行う。バッファメモリ１２２に一致する論理セクタアドレスのデータがないので、ＣＰＵ１２１は、ＬＳＢ０Ｂをバッファメモリに保持する。
【０１２６】
次に、アクセス装置１００は、ＷＣＭＤ２でＬＳＢ０Ｂと同一の論理セクタアドレス（論理セクタアドレスＬＳＢ０）のデータＬＳＢ０Ｃを転送し、その後ＳＴＯＰ信号を転送する。この時、ＣＰＵ１２１は、バッファメモリ１２２に保持されているデータの論理セクタアドレスとＬＳＢ０Ｃの論理セクタアドレスとの比較を行う。ＷＣＭＤ１で転送されて来たＬＳＢ０Ｃの論理セクタアドレスと、バッファメモリ１２２が保持するＬＳＢ０Ｂの論理セクタアドレスは共にＬＳＢ０（論理ブロックアドレス３０３１が“０ｘ０３”および論理セクタアドレス３０３２が“０ｘ００”）であり、一致するので、バッファメモリ１２２に保持されているＬＳＢ０ＢのデータをＷＣＭＤ２で転送されてきたＬＳＢ０Ｃに上書きする。また、ＣＰＵ１２１は、論理セクタアドレスＬＳＢ０のデータは繰り返し頻繁に更新されるデータであるか否かを判定する。論理セクタアドレスＬＳＢ０のデータは、連続してアクセス装置１００から入力されたのでＣＰＵ１２１は、論理セクタアドレスＬＳＢ０のデータを頻繁に更新される特定データと認識し、ＬＳＢ０Ｃが保持されているバッファメモリ１２２のデータおよびアドレス領域を特定領域と設定する。特定領域に保持される特定データは、特定領域以外に保持されているデータと比べ、低い優先順位でフラッシュメモリ１３０に書込まれることとなる。
【０１２７】
その後、アクセス装置１００は、ＷＣＭＤ３を転送し、論理セクタアドレスＬＳＡ０〜ＬＳＡ３までの4セクタ分のデータＬＳＡ０Ｂ〜ＬＳＡ３Ｂを転送する。データＬＳＡ０Ｂ〜ＬＳＡ３Ｂは新規アドレスのデータであるため、バッファメモリ１２２に順番に一時記憶される。
【０１２８】
ＬＳＡ３Ｂが記憶された時点で、バッファメモリ１２２が一杯になり、ＣＰＵ１２１は一杯になったことを認識する。メモリ制御部１２３は、ＣＰＵ１２１の命令により、バッファメモリ１２２に一時記憶されているデータをフラッシュメモリ１３０に転送する。すなわち、メモリ制御部１２３は、ＬＳＡ０Ｂ〜ＬＳＡ３Ｂのデータをページ単位でＰＢ０のページ０に書込む。ＬＳＢ０Ｃについては、ＣＰＵ１２１が頻繁に更新されるデータであると認識しているため、バッファメモリ１２２に留めておき、このタイミングでは転送は行わない。そして、同一論理アドレス（ＬＳＢ０）のデータがアクセス装置１００から転送される度に、バッファメモリ１２２の特定領域に保持されている論理アドレスＬＳＢ０のデータを上書きしていく。アクセス装置１００からのデータの書込みが終了した時点で、バッファメモリ１２２の特定領域に保持されたデータは、フラッシュメモリ１３０へ転送され、ＰＢ２のページ０に書込まれる。
【０１２９】
以上より、第６の実施形態における不揮発性記憶装置１１０は、頻繁に書換えられる特定データ（ディレクトリエントリや鍵情報等）の書込み時には、バッファメモリ１２２でデータを更新し、処理の最後にフラッシュメモリ１３０へ書込む。これにより、特定データが来る度に、フラッシュメモリ１３０へ書込む必要がなくなり、フラッシュメモリ１３０への書込みの速度を向上させることができる。またフラッシュメモリ１３０への書換え回数を低減することができるため、不揮発性記憶装置１１０の寿命も延ばすことができる。
【０１３０】
なお、バッファメモリ１２２の特定領域に保持するデータをＣＰＵ１２１が特定する方法としては、同一論理アドレスのデータが２回以上来た場合や、ある論理アドレスのデータが一度転送された後に、他の複数セクタ分の連続アドレスが転送され、またその後に同一論理アドレスのデータが来たとき等があるが、特に限定するものではない。
【０１３１】
また、バッファメモリ１２２の特定領域に保持されたデータをフラッシュメモリ１３０へ転送するタイミングは、アクセス装置１００からの書込みが完了した後や、新たな別の論理アドレスのデータが特定アドレスのデータであると判断された後などがあるが、特に限定するものではない。
【０１３２】
また、バッファメモリ１２２の設定する特定領域は、上記説明ではセクタ単位であるが、ページ単位でもよく、特に限定するものではない。
【０１３３】
（第７の実施形態）
第７の実施形態における不揮発性記憶装置は、特定の論理セクタアドレスのデータのフラッシュメモリ１３０への書込みの優先順位を下げることで、フラッシュメモリ１３０への書込み回数を減らすことができる。
【０１３４】
第６の実施形態では、頻繁に書換えられるデータをＣＰＵ１２１が判定し、頻繁に書換えられるデータのフラッシュメモリ１３０への書込みの優先順位を下げたが、第７の実施形態では、予め頻繁に書換えられるデータの論理セクタアドレスを特定アドレスと設定しておき、アクセス装置１００より入力されたデータの論理セクタアドレスが、特定アドレスと一致するか否かを判定する。特定アドレスと判定された場合に、特定アドレスを有するデータである特定データは、特定データ以外のデータと比べ、低い優先順位でフラッシュメモリ１３０に書込まれる。なお、第７の実施形態における書換え処理の流れは図１４と同様であり、説明は省略する。
【０１３５】
以上より、特定アドレスのデータ（ＦＡＴデータ等）の書込み時には、バッファメモリ１２２でデータを更新し、処理の最後にフラッシュメモリ１３０へ書込むために、特定アドレスのデータが来る度に、フラッシュメモリ１３０へ書込む必要がなくなるためフラッシュメモリ１３０への書込み速度を向上させることができる。またフラッシュメモリ１３０への書換え回数を低減することができるため、不揮発性記憶装置１１０の寿命も延ばすことができる。
【０１３６】
（第８の実施形態）
第８の実施形態における不揮発性記憶装置は、バッファメモリ１２２に、バッファメモリ１２２に保持されているデータが頻繁に書換えられるデータであるか否かを示す特定領域フラグを保持する。これにより、特定領域を複数設定することができ、バッファメモリ１２２の容量を有効に用いることができる。
【０１３７】
図１５は、第８の実施形態における不揮発性記憶装置１１０のバッファメモリ１２２に保持されるデータの形式を示す図である。なお、図４と同様の要素には同一の符号を付しており、詳細な説明は省略する。また、第８の実施形態における不揮発性記憶装置１１０の構成は、図１と同様である。
【０１３８】
図１５に示すように、第８の実施形態における不揮発性記憶装置１１０のバッファメモリ１２２は、各データに１ビットの特定領域フラグ３０５を含む。特定領域フラグ３０５は、各データが特定領域のデータであるか否かを示すフラグである。例えば、特定領域フラグ３０５が“０”であると通常のデータであり、特定領域フラグ３０５が“１”であると特定領域のデータである。特定領域のデータは、頻繁に書換えられるデータが設定され、例えば、ディレクトリエントリ、鍵情報またはＦＡＴデータ等である。例えば、図１５に示すようにワード０のデータは特定領域フラグ３０５が“１”であるので、論理アドレス３０３が“００００００ｈ”のデータは特定領域のデータとなる。特定領域フラグ３０５が“１”である特定データは、特定データ以外のデータと比べ、低い優先順位でフラッシュメモリ１３０に書込まれる。
【０１３９】
図１６は、第８の実施形態における不揮発性記憶装置１１０の書換え処理の流れを示す図である。
【０１４０】
図１６において、フラッシュメモリ１３０の物理ブロックＰＢ５のページ０に論理セクタアドレスＬＳＡ０〜ＬＳＡ３のデータＬＳＡ０Ａ〜ＬＳＡ３Ａが保持されており、物理ブロックＰＢ６のページ０に論理セクタアドレスＬＳＢ０〜ＬＳＢ３のデータＬＳＢ０Ａ〜ＬＳＢ３Ａが保持されており、物理ブロックＰＢ７のページ０に論理セクタアドレスＬＳＣ０〜ＬＳＣ３のデータＬＳＣ０Ａ〜ＬＳＣ３Ａが保持されている。また、物理ブロック０のページ０、物理ブロックＰＢ２のページ０および物理ブロックＰＢ４のページ０は、データが書込まれていないとする。なお、図１６において、説明の単純化のため、バッファメモリ１２２が保持するワード数は６としているがこれに限らない。
【０１４１】
また、ＷＣＭＤ１およびＷＣＭＤ２において転送されるデータＬＳＢ０ＢおよびＬＳＣ０Ｂは、フラッシュメモリ１３０のある特定領域に保持される頻繁に書換えられるデータである。また、ＷＣＭＤ３で転送されるデータＬＳＡ０Ｂ〜ＬＳＡ３Ｂは、写真データや音楽のデータ等連続的に書込まれるデータであり、あまり頻繁に書換えられるデータではないとする。
【０１４２】
ＷＣＭＤ１において、不揮発性記憶装置１１０は論理セクタアドレスＬＳＢ０（論理ブロックアドレス“０ｘ００”および論理ページアドレス“０ｘ００”）のデータＬＳＢ０Ｂを受信し、バッファメモリ１２２に一時的に記憶する。アクセス装置１００は、ＬＳＢ０Ｂを転送した後に、ＳＴＯＰ信号を転送する。データを受け取ったＣＰＵ１２１は、ＬＳＢ０Ｂの論理セクタアドレスから特定アドレスのデータと認識すると共に、バッファメモリ１２２に保持されているデータの論理セクタアドレスとＬＳＢ０Ｂの論理セクタアドレスとの比較を行う。バッファメモリ１２２に一致する論理アドレスがないので、ＣＰＵ１２１は、ＬＳＢ０Ｂをバッファメモリ１２２に保持し、保持したデータに対応する特定領域フラグ３０５を“１”に設定する。ここで、ＣＰＵ１２１が入力されたデータを特定アドレスのデータと認識する方法は、第６の実施形態のように頻繁に更新されるアドレスを判定してもよいし、第７の実施形態のように予め定めた特定アドレスとの比較により判定してもよい。
【０１４３】
次に、ＷＣＭＤ２においてアクセス装置１００は、ＬＳＣ０Ｂを転送し、その後、ＳＴＯＰ信号を転送する。ＣＰＵ１２１は、ＬＳＣ０Ｂの論理セクタアドレスから特定アドレスのデータと認識すると共に、バッファメモリ１２２に保持されているデータの論理セクタアドレスとＬＳＣ０Ｂの論理セクタアドレスとの比較を行う。一致する論理セクタアドレスがないので、ＣＰＵ１２１は、ＬＳＣ０Ｂをバッファメモリ１２２に保持し、保持したデータに対応する特定領域フラグ３０５を“１”に設定する。
【０１４４】
その後、アクセス装置１００は、ＷＣＭＤ３を転送し、論理セクタアドレスＬＳＡ０〜ＬＳＡ３までの4セクタ分のデータＬＳＡ０Ｂ、ＬＳＡ１Ｂ、ＬＳＡ２ＢおよびＬＳＡ３Ｂを転送する。ＬＳＡ０Ｂ〜ＬＳＡ３Ｂは新規アドレスのデータであるため、バッファメモリ１２２に順番に一時記憶される。ここで、ＬＳＡ０Ｂ、ＬＳＡ１Ｂ、ＬＳＡ２ＢおよびＬＳＡ３Ｂは、特定アドレスのデータではないので、対応する特定領域フラグ３０５は“０”に設定される。
【０１４５】
ＬＳＡ３Ｂが記憶された時点で、バッファメモリ１２２が一杯になり、ＣＰＵ１２１は一杯になったことを認識する。メモリ制御部１２３は、ＣＰＵ１２１の命令により、バッファメモリ１２２に一時記憶された特定領域フラグ３０５が“０”のデータをフラッシュメモリ１３０に転送する。すなわち、メモリ制御部１２３は、ＬＳＡ０Ｂ〜ＬＳＡ３Ｂのデータをページ単位でＰＢ０のページ０に書込みを行う。また、ＣＰＵ１２１が、ＬＳＢ０ＢおよびＬＳＣ０Ｂが保持されているデータ領域の特定領域フラグ３０５が“１”になっていることを認識し、バッファメモリ１２２に留めておく。これにより、同一論理アドレス（ＬＳＢ０およびＬＳＣ０）のデータがアクセス装置１００から転送される度に、バッファメモリ１２２の特定領域に保持されているデータを上書きしていく。最終的にはアクセス装置１００からのデータの書込みが終了した時点で、メモリ制御部１２３は、バッファメモリ１２２の特定領域フラグ３０５が“１”のデータをフラッシュメモリ１３０へ転送する。すなわち、メモリ制御部１２３は、ＬＳＢ０Ｂを物理ブロックＰＢ２のページ０に書き込み、ＬＳＣ０Ｂを物理ブロックＰＢ４のページ０に書込む。
【０１４６】
以上より、第８の実施形態における不揮発性記憶装置は、頻繁に書換えられる特定のデータ（ディレクトリエントリや鍵情報等、またはＦＡＴデータ）が複数転送されて来た場合についても、ＣＰＵ１２１が特定領域のデータであると判断し、バッファメモリ１２２の特定領域フラグ３０５を‘１’にして、その領域にデータを保持する。これにより、バッファメモリ１２２の特定領域の空間を自由に設定できるため、複数の特定データが転送されて来た場合でも、それぞれに特定領域を設定すればよく、バッファメモリ１２２の空間を効率的に使用することができる。また、フラッシュメモリ１３０へのデータ転送時にＣＰＵ１２１が特定領域フラグ３０５を確認するだけで、転送するべきか否かを判断することができ、ＣＰＵ１２１が特定領域を常に把握しておく必要がなくなるため、処理シーケンスを簡単にすることができる。これにより、特定データの書換えをバッファメモリ１２２内で済ませることができるため、フラッシュメモリ１３０への書込み回数を減らすことができ、不揮発性記憶装置１１０の書込み速度の向上を達成することができる。また、フラッシュメモリ１３０への書換え回数を低減することができるため、不揮発性記憶装置１１０の書換え寿命も延ばすことができる。
【０１４７】
ここで、バッファメモリ１２２の特定領域に保持されたデータをフラッシュメモリ１３０へ転送するタイミングは、アクセス装置１００からの書込みが完了した後や、ある設定された数以上の論理アドレスのデータが特定アドレスのデータであると判断された後などがあるが、特に限定するものではない。
【０１４８】
また、バッファメモリ１２２の一部の領域を特定領域に設定する手段は、今回は特定領域フラグ３０５を使用したが、ＣＰＵ１２１内で管理しても良く、特に限定するものではない。
【０１４９】
更に、バッファメモリ１２２の設定する特定領域は、今回の説明ではセクタ単位であるが、ページ単位でもかまわないし、特に限定するものではない。
【０１５０】
（第９の実施形態）
第９の実施形態おける不揮発性記憶装置は、バッファメモリ１２２に正しくデータが書込まれたか否かを示す書込み完了フラグをバッファメモリ１２２に保持する。これにより、電源が落ちる等によりバッファメモリ１２２に正しくデータが書込まれなかった場合に、どのデータが有効なデータであるかを容易に判定することができ、信頼性を向上させることができる。
【０１５１】
図１７は、第９の実施形態における不揮発性記憶装置１１０のバッファメモリ１２２に保持されるデータの形式を示す図である。なお、図４と同様の要素には同一の符号を付しており、詳細な説明は省略する。また、第９の実施形態における不揮発性記憶装置１１０の構成は、図１と同様である。
【０１５２】
図１７に示すように、第９の実施形態における不揮発性記憶装置１１０のバッファメモリ１２２は、各データに１ビットの書込み完了フラグ３０６を含む。書込み完了フラグ３０６は、各データがバッファメモリ１２２に正しく書込まれたか否かを示すフラグである。例えば、電源が落ちる等によりバッファメモリ１２２に正しく書込まれなかったデータの書込み完了フラグ３０６を“０”とし、正しくバッファメモリ１２２に書込まれたデータの書込み完了フラグ３０６を“１”とする。図１７に示すワード０のデータは、書込み完了フラグ３０６が“０”であり、バッファメモリ１２２に正しく書込まれていない無効なデータである。また、ワード１のデータは、書込み完了フラグ３０６が“１”であり、バッファメモリ１２２に正しく書込まれたデータである。また、バッファメモリ１２２のデータをフラッシュメモリ１３０に転送した後に、転送したデータの書込み完了フラグ３０６を“０”に設定する。また、データが書込まれていない領域の書込み完了フラグ３０６を“０”に設定する。これにより、ＣＰＵ１２１は、書込み完了フラグ３０６を確認することで、容易にバッファメモリ１２２のデータ保持領域の空き状態を判定することができる。
【０１５３】
図１８は、第９の実施形態における不揮発性記憶装置１１０の書換え処理の流れを示す図である。図１８において、アクセス装置１００から不揮発性記憶装置１１０にＷＣＭＤが４回転送される。最初のＷＣＭＤをＷＣＭＤ１、次のＷＣＭＤをＷＣＭＤ２、その次のＷＣＭＤをＷＣＭＤ３、最後のＷＣＭＤをＷＣＭＤ４と表記する。また、フラッシュメモリ１３０の物理ブロックＰＢ５のページ０に論理セクタアドレスＬＳ０〜ＬＳ３のデータＬＳ０Ａ〜ＬＳ３Ａが保持されており、物理ブロックＰＢ５のページ１に論理セクタアドレスＬＳ４〜ＬＳ７のデータＬＳ４Ａ〜ＬＳ７Ａが保持されている。また、物理ブロック０のページ０およびページ１は、データが書込まれていないとする。なお、図１８において、説明の単純化のため、バッファメモリ１２２が保持するワード数は４としているがこれに限らない。また、バッファメモリ１２２は、データが書込まれていない状態であり、全てのデータ領域に対応する書込み完了フラグ３０６は“０”に設定されている。
【０１５４】
ＷＣＭＤ１において、不揮発性記憶装置１１０は論理セクタアドレスＬＳ０（“０ｘ００”）のデータＬＳ０Ｂを受信し、バッファメモリ１２２に一時的に記憶する。アクセス装置１００は、ＷＣＭＤ１において、ＬＳ０Ｂを転送した後に、ＳＴＯＰ信号を転送する。データＬＳ０Ｂを受け取ったＣＰＵ１２１は、バッファメモリ１２２に保持されているデータの論理セクタアドレスとＬＳ０Ｂの論理セクタアドレスとの比較を行う。一致する論理セクタアドレスがないので、ＣＰＵ１２１は、ＬＳ０Ｂをバッファメモリ１２２に保持する。この時、正しくデータが書込まれた場合には、ＬＳ０Ｂに対応する書込み完了フラグ３０６を“１”に設定する。なお、ＬＳ０Ｂの書込み中に電源が落ちる等により、正しくデータが書込まれなかった場合は、書込み完了フラグ３０６は“０”を維持する。
【０１５５】
次に、ＷＣＭＤ２において、アクセス装置１００は、ＬＳ１Ｂ〜ＬＳ３Ｂを転送し、その後ＳＴＯＰ信号を転送する。ＣＰＵ１２１は、ＬＳ１Ｂ〜ＬＳ３Ｂの論理セクタアドレスとバッファメモリ１２２に保持されているデータの論理セクタアドレスと比較を行い、一致しないことを確認する。ＣＰＵ１２１は、バッファメモリ１２２の新しい領域にＬＳ１Ｂ〜ＬＳ３Ｂを保持し、ＬＳ０Ｂの場合と同様に、正しくデータが書込まれた場合には、ＬＳ１Ｂ〜ＬＳ３Ｂに対応するバッファメモリ１２２の書込み完了フラグ３０６を“１”に設定する。ＬＳ３Ｂが記憶された時点で、バッファメモリ１２２が一杯になり、ＣＰＵ１２１は一杯になったことを認識する。メモリ制御部１２３は、ＣＰＵ１２１の命令により、バッファメモリ１２２に一時記憶されたデータをフラッシュメモリ１３０に転送する。すなわち、メモリ制御部１２３は、ＬＳＡ０Ｂ〜ＬＳＡ３Ｂをページ単位で物理ブロックＰＢ０のページ０に書込みを行う。この時、フラッシュメモリ１３０への書込みが完了したデータＬＳ０Ｂ〜ＬＳ３Ｂのバッファメモリ１２２の書込み完了フラグ３０６の値を“０”に設定する。この書込み完了フラグの値をＣＰＵ１２１が確認することにより、ＣＵＰ１２１はバッファメモリ１２２の空き状況や、次にデータを書いてよいバッファメモリ１２２の領域を把握することができる。
【０１５６】
ＷＣＭＤ３において、アクセス装置１００は、２セクタ分のデータＬＳ４ＢおよびＬＳ５Ｂを転送し、その後ＳＴＯＰ信号を転送する。ＣＰＵ１２１は、ＷＣＭＤ１および２と同様に、ＬＳ４ＢおよびＬＳ５Ｂの論理セクタアドレスとバッファメモリ１２２が保持しているデータの論理セクタアドレスとを比較する。ＣＰＵ１２１は、バッファメモリ１２２に一致する論理セクタアドレスのデータがないことを確認し、ＬＳ４ＢおよびＬＳ５Ｂをバッファメモリ１２２の書込み完了フラグ３０６が“０”の領域に保持する。この時、バッファメモリ１２２のＬＳ４ＢおよびＬＳ５Ｂに対応する書込み完了フラグ３０６を“１”に設定する。
【０１５７】
ＷＣＭＤ４において、アクセス装置１００からＬＳ６ＢおよびＬＳ７Ｂが転送され、バッファメモリ１２２の書込み完了フラグ３０６が“０”の領域に保持される。また、ＬＳ６ＢおよびＬＳ７Ｂのバッファメモリ１２２の書込み完了フラグ３０６は“１”に設定される。バッファメモリ１２２にＬＳ６ＢおよびＬＳ７Ｂが保持されると、バッファメモリ１２２は一杯になり、ＷＣＭＤ２と同様の流れで、フラッシュメモリ１３０のＰＢ０のページ１にデータＬＳ４Ｂ〜ＬＳ７Ｂが転送される。また、ＬＳ４Ｂ〜ＬＳ７Ｂをフラッシュメモリ１３０に書込んだ後に、バッファメモリ１２２のＬＳ４Ｂ〜ＬＳ７Ｂの書込み完了フラグ３０６は“０”に設定される。
【０１５８】
以上より、第９の実施形態における不揮発性記憶装置１１０は、アクセス装置１００より転送されたデータが、バッファメモリ１２２に正しく書込まれたか否かを示す書込み完了フラグ３０６をバッファメモリ１２２に保持する。これにより、バッファメモリ１２２に送られたデータが正しくバッファメモリ１２２に書込まれたかを確認することが可能となり、書込まれるデータの信頼性を向上させることができる。また、バッファメモリ１２２のデータをフラッシュメモリ１３０へ転送した後には、バッファメモリ１２２の書込み完了フラグ３０６を“０”に設定を戻すことで、ＣＰＵ１２１は、バッファメモリ１２２のどの領域に、新たに転送されて来たデータを書込んだらいいかを把握することができる。よって、データ処理の効率化も達成することができる。
【０１５９】
（第１０の実施形態）
第１０の実施形態における不揮発性記憶装置は、バッファメモリ１２２が保持するデータが、フラッシュメモリ１３０に正しく書込まれたか否かを示す転送完了フラグを保持する。これにより、電源が落ちる等によりフラッシュメモリ１３０への書込みが失敗した場合に、どのデータが正しく書込まれていないかを判定することができ、信頼性を向上させることができる。
【０１６０】
図１９は、第１０の実施形態における不揮発性記憶装置１１０のバッファメモリ１２２に保持されるデータの形式を示す図である。なお、図４と同様の要素には同一の符号を付しており、詳細な説明は省略する。また、第１０の実施形態における不揮発性記憶装置１１０の構成は図１と同様である。
【０１６１】
図１９に示すように、第１０の実施形態における不揮発性記憶装置１１０のバッファメモリ１２２は、各データに１ビットの転送完了フラグ３０７を含む。転送完了フラグ３０７は、各データがバッファメモリ１２２からフラッシュメモリ１３０に正しく書込まれたか否かを示すフラグである。例えば、フラッシュメモリ１３０に未書込みのデータに対応する転送完了フラグ３０７を“０”とする。また、電源が落ちる等によりフラッシュメモリ１３０に正しく書込まれなかったデータに対応する転送完了フラグ３０７も“０”となる。また、フラッシュメモリ１３０に正しくバッファメモリ１２２に書込まれたデータに対応する転送完了フラグ３０７を“１”とする。例えば、図１９に示すワード０のデータは、転送完了フラグ３０７が“０”であり、フラッシュメモリ１３０に未書込みのデータ、または、フラッシュメモリ１３０に正しく書込まれなかったデータである。また、ワード２のデータは、転送完了フラグ３０７が“１”であり、フラッシュメモリ１３０に正しく書込まれたデータである。
【０１６２】
図２０は、第１０の実施形態における不揮発性記憶装置１１０の書換え処理の流れを示す図である。
【０１６３】
図２０において、アクセス装置１００からＷＣＭＤが４回転送される。最初のＷＣＭＤをＷＣＭＤ１、次のＷＣＭＤをＷＣＭＤ２、その次のＷＣＭＤをＷＣＭＤ３、最後のＷＣＭＤをＷＣＭＤ４と表記する。また、フラッシュメモリ１３０の物理ブロックＰＢ５のページ０に論理セクタアドレスＬＳ０〜ＬＳ３のデータＬＳ０Ａ〜ＬＳ３Ａが保持されており、物理ブロックＰＢ５のページ１に論理セクタアドレスＬＳ４〜ＬＳ７のデータＬＳ４Ａ〜ＬＳ７Ａが保持されている。また、物理ブロック０のページ０およびページ１は、データが書込まれていないとする。なお、図２０において、説明の単純化のため、バッファメモリ１２２が保持するワード数は４としているがこれに限らない。また、バッファメモリ１２２は、データが書込まれていない状態であり、全てのデータ領域に対応する書込み転送完了フラグ３０７は“１”に設定されている。
【０１６４】
ＷＣＭＤ１において、不揮発性記憶装置１１０は論理セクタアドレスＬＳ０（“０ｘ００”）のデータＬＳ０Ｂを受信し、バッファメモリ１２２に一時的に記憶する。アクセス装置１００は、ＷＣＭＤ１において、ＬＳ０Ｂを転送した後に、ＳＴＯＰ信号を転送する。データＬＳ０Ｂを受け取ったＣＰＵ１２１は、バッファメモリ１２２に保持されているデータの論理セクタアドレスとＬＳ０Ｂの論理セクタアドレスとの比較を行う。一致する論理セクタアドレスがないのでＬＳ０Ｂをバッファメモリ１２２に保持する。この時、ＬＳ０Ｂは、フラッシュメモリ１３０に未書込みのデータであるので、保持したデータ領域に対応する書込み転送完了フラグ３０７は“０”に設定される。
【０１６５】
次に、ＷＣＭＤ２で、アクセス装置１００は、ＬＳ１Ｂ〜ＬＳ３Ｂを転送し、その後ＳＴＯＰ信号を転送する。ＣＰＵ１２１は、ＬＳ１Ｂ〜ＬＳ３Ｂの論理セクタアドレスとバッファメモリ１２２に保持されているデータの論理セクタアドレスとの比較を行い、一致しないことを確認する。ＣＰＵ１２１は、バッファメモリ１２２の新しい領域にＬＳ１Ｂ〜ＬＳ３Ｂを保持する。ＬＳ０Ｂの場合と同様に、フラッシュメモリ１３０に未書込みのデータであるので、保持したデータ領域に対応するバッファメモリ１２２の転送完了フラグ３０７は“０”に設定される。
【０１６６】
ＬＳ３Ｂが記憶された時点で、バッファメモリ１２２が一杯になり、ＣＰＵ１２１は一杯になったことを認識する。メモリ制御部１２３は、ＣＰＵ１２１の命令により、バッファメモリ１２２に一時記憶されたデータをフラッシュメモリ１３０に転送する。すなわち、メモリ制御部１２３は、ＬＳＡ０Ｂ〜ＬＳＡ３Ｂのデータをページ単位で物理ブロックＰＢ０のページ０に書込む。この時、フラッシュメモリ１３０への書込みが完了したデータＬＳ０Ｂ〜ＬＳ３Ｂのバッファメモリ１２２の転送完了フラグ３０７の値を“１”に設定する。なお、ＬＳ０Ｂ〜ＬＳ３Ｂの書込み中に電源が落ちる等により、書込みが失敗した場合には、転送完了フラグ３０７は“０”を維持する。ＣＰＵ１２１は、転送完了フラグ３０７の値を確認することにより、バッファメモリ１２２の空き状況や、次にデータを書いてよいバッファメモリ１２２の領域を把握することができる。すなわち、ＣＰＵ１２１は、転送完了フラグ３０７が“１”のデータは、フラッシュメモリ１３０に書込み済みのデータであり、新たなデータを書込むことができると判断することができる。
【０１６７】
ＷＣＭＤ３において、アクセス装置１００は、２セクタ分のデータＬＳ４ＢおよびＬＳ５Ｂを転送し、その後ＳＴＯＰ信号を転送する。ＣＰＵ１２１は、ＷＣＭＤ１および２と同様に、ＬＳ４ＢおよびＬＳ５Ｂの論理セクタアドレスとバッファメモリ１２２が保持しているデータの論理セクタアドレスとを比較する。ＣＰＵ１２１は、バッファメモリ１２２に一致する論理セクタアドレスのデータがないことを確認する。ＣＰＵ１２１は、ＬＳ４ＢおよびＬＳ５Ｂをバッファメモリ１２２の転送完了フラグ３０７が“１”の領域に保持し、ＬＳ４ＢおよびＬＳ５Ｂに対応する転送完了フラグ３０７を“０”に設定する。
【０１６８】
ＷＣＭＤ４において、アクセス装置１００からＬＳ６ＢおよびＬＳ７Ｂが転送される。ＣＰＵ１２１は、バッファメモリ１２２の転送完了フラグ３０７が“１”であるＬＳＢ２ＢおよびＬＳＢ３Ｂが保持されている領域にＬＳ６ＢおよびＬＳ７Ｂを保持する。また、ＬＳ６ＢおよびＬＳ７Ｂのバッファメモリ１２２の転送完了フラグ３０７は“０”に設定される。バッファメモリ１２２にＬＳ６ＢおよびＬＳ７Ｂが保持されると、バッファメモリ１２２は一杯になり、ＷＣＭＤ２と同様の流れで、フラッシュメモリ１３０の物理ブロックＰＢ０のページ１にデータＬＳ４Ｂ〜ＬＳ７Ｂが転送される。また、ＬＳ４Ｂ〜ＬＳ７Ｂをフラッシュメモリに書込んだ後に、バッファメモリ１２２のＬＳ４Ｂ〜ＬＳ７Ｂに対応する転送完了フラグ３０７は“１”に設定される。
【０１６９】
以上より、第１０の実施形態における不揮発性記憶装置は、バッファメモリ１２２が保持するデータが、フラッシュメモリ１３０に正しく書込まれたか否かを示す転送完了フラグ３０７を保持する。これにより、バッファメモリ１２２に送られたデータが正しくフラッシュメモリ１３０に書込まれたかを確認することが可能となり、フラッシュメモリ１３０に書込まれるデータの信頼性を向上させることができる。また、バッファメモリ１２２が保持するデータをフラッシュメモリ１３０へ転送した後には、転送完了フラグを“１”に設定することで、バッファメモリ１２２のどの領域に、新たに転送されて来たデータを書込んだらいいかをＣＰＵ１２１は把握することができ、データ処理の効率化も達成することができる。
【０１７０】
（第１１の実施形態）
第１１の実施形態における不揮発性記憶装置は、バッファメモリ１２２が一杯になった時点で、バッファメモリ１２２が保持するデータをフラッシュメモリ１３０に書込む。これにより、フラッシュメモリ１３０への書込み回数を減らすことができる。なお、第１１の実施形態における不揮発性記憶装置１１０の構成は、図１と同様である。
【０１７１】
図２１は、第１１の実施形態における不揮発性記憶装置１１０の書換え処理の流れを示す図である。図２１において、アクセス装置１００からＷＣＭＤが４回転送される。最初のＷＣＭＤをＷＣＭＤ１、次のＷＣＭＤをＷＣＭＤ２、その次のＷＣＭＤをＷＣＭＤ３、最後のＷＣＭＤをＷＣＭＤ４と表記する。また、フラッシュメモリ１３０の物理ブロックＰＢ５のページ０に論理セクタアドレスＬＳ０〜ＬＳ３のデータＬＳ０Ａ〜ＬＳ３Ａが保持されており、物理ブロックＰＢ５のページ１に論理セクタアドレスＬＳ４〜ＬＳ７のデータＬＳ４Ａ〜ＬＳ７Ａが保持されている。また、物理ブロック０のページ０およびページ１は、データが書込まれていないとする。なお、図２１において、説明の単純化のため、バッファメモリ１２２が保持するワード数は５としているがこれに限らない。
【０１７２】
ＷＣＭＤ１において、不揮発性記憶装置１１０は論理セクタアドレスＬＳ０〜ＬＳ３のデータＬＳ０Ｂ〜ＬＳ３Ｂを受信し、バッファメモリ１２２に一時的に記憶する。アクセス装置１００は、４セクタ分のデータＬＳ０Ｂ〜ＬＳ３Ｂを転送した後に、ＳＴＯＰ信号を転送する。データを受け取ったＣＰＵ１２１は、ＬＳ０Ｂ〜ＬＳ３Ｂの論理セクタアドレスとバッファメモリ１２２に保持されている論理セクタアドレスとの比較を行い、一致する論理セクタアドレスがないので、ＬＳ０Ｂ〜ＬＳ３Ｂをバッファメモリ１２２に保持する。
【０１７３】
次に、ＷＣＭＤ２において、アクセス装置１００は、論理セクタアドレスＬＳ４のデータＬＳ４Ｂを転送し、その後ＳＴＯＰ信号を転送する。ＣＰＵ１２１は、ＬＳ４Ｂの論理セクタアドレスとバッファメモリ１２２に保持されているデータの論理セクタアドレスとの比較を行い、一致する論理アドレスがないので、ＬＳ４Ｂをバッファメモリ１２２に保持する。また同時にＣＰＵ１２１は、論理セクタアドレスＬＳ４のデータＬＳ４Ｂは、ＷＣＭＤ１で転送されたＬＳ０Ｂ〜ＬＳ３Ｂの論理セクタアドレスＬＳ０〜ＬＳ３に続く連続した論理セクタアドレスのデータであることを認識する。ＬＳ４Ｂが記憶された時点で、バッファメモリ１２２が一杯になり、ＣＰＵ１２１は一杯になったことを認識する。メモリ制御部１２３は、ＣＰＵ１２１の命令により、バッファメモリ１２１に一時記憶されたデータをフラッシュメモリ１３０に転送し、一括してＰＢ０のページ０に書込みを実施する。この時、ページ０に保持されるデータは、論理セクタアドレスＬＳ０〜ＬＳ３のデータＬＳ０Ａ〜ＬＳ３Ａなので、ＣＰＵ１２１は、ＬＳ４Ｂはページ単位にまだ揃っていないデータであると判断して、フラッシュメモリ１３０へ転送せずに、バッファメモリ１２２にデータを留めておく。
【０１７４】
その後、アクセス装置１００は、ＷＣＭＤ３を転送し、引き続き論理セクタアドレスＬＳ５〜ＬＳ７の３セクタ分のデータＬＳ５Ｂ〜ＬＳ７Ｂを転送する。ＬＳ５Ｂ〜ＬＳ７Ｂは新規アドレスのデータであるため、バッファメモリ１２２に一時記憶される。
【０１７５】
そして、ＷＣＭＤ４において、アクセス装置１００からＬＳ８Ｂが転送され、バッファメモリ１２２が一杯になる。ＣＰＵ１２１はバッファメモリ１２２が一杯になったことを認識して、メモリ制御部１２３を使用して、バッファメモリ１２２に一時記憶されたデータＬＳ４Ｂ〜ＬＳ７Ｂをフラッシュメモリ１３０に転送し、一括してＰＢ０のページ１に書込みを実施する。なお、ＬＳ８のデータは、ＣＰＵ１２１がページ単位で揃っていないデータとしてバッファメモリ１２２内に留めておく。
【０１７６】
以上より、第１１の実施形態における不揮発性記憶装置１１０は、バッファメモリ１２２が一杯になった時点で、フラッシュメモリ１２２への書込みを行う。これにより、ページ単位よりも小さい単位で連続したデータが転送されてきた場合、または、転送されてきたデータがページの先頭ではなく、途中や最後から転送されてきた場合にも、同一ページのデータを複数回に渡ってフラッシュメモリ１３０に書く必要がなくなり、一回で書込むことが可能となる。よって、データの書込み効率を上げることができる。また、フラッシュメモリ１３０への書込み回数を減らすことができるので、フラッシュメモリ１３０の書換え寿命も延ばすことが可能となる。
【０１７７】
なお、上記説明では、バッファメモリ１２２に保持されたデータをフラッシュメモリ１３０へ転送するタイミングは、バッファメモリ１２２が一杯になった時点としているが、アクセス装置１００からの書込みが完了した後でもよいし、連続的に転送されて来たデータの論理セクタアドレスが連続的な順番でなくなった時であってもよい。
【０１７８】
（第１２の実施形態）
第１２の実施形態における不揮発性記憶装置は、バッファメモリ１２２に保持されているデータの論理セクタアドレスと、アクセス装置１００より新たに転送されたデータの論理セクタアドレスとの比較を行うハードウェアで構成されたアドレス比較部１２５を備える。これにより、ＣＰＵ１２１が行う処理の負担を減らすことができる。
【０１７９】
図２２は、第１２の実施形態における不揮発性記システムのブロック図である。図２２に示す不揮発性記憶システムは、不揮発性記憶装置１１０と、アクセス装置１００とを備える。図２２に示す不揮発性記憶装置１１０は、アドレス比較部１２５を備える点が、図１に示す第１の実施形態と異なる。なお、図１と同様の要素には同一の符号を付しており、詳細な説明は省略する。
【０１８０】
アドレス比較部１２５は、アクセス装置１００より新たに転送されたデータの論理セクタアドレスと、バッファメモリ１２２に保持されているデータの論理セクタアドレスとを比較し、一致するか否かを判定する。また、アドレス比較部１２５は、ハードウェアで構成される。また、アドレス比較部１２５とＣＰＵ１２１とは専用のバスで接続される。
【０１８１】
以上より、第１２に実施形態おける不揮発性記憶装置１１０は、アクセス装置１００から転送されたデータの論理セクタアドレスとバッファメモリ１２２に保持されているデータの論理セクタアドレスとを比較する専用のアドレス比較部１２５を備える。第１の実施形態ではＣＰＵ１２１がアクセス装置１００から転送されたデータの論理セクタアドレスとバッファメモリ１２２が保持するデータの論理セクタアドレスとを比較し、その後の処理を決定する必要があるのに対し、第１２の実施形態ではアドレス比較部１２５によりハード的に比較処理を行う。さらに、ＣＰＵ１２１とアドレス比較部１２５との間に専用のバスを設けて処理を実施する。よって、ＣＰＵ１２１の負担を減らすことができる。また、比較動作の高速化が可能である。
【０１８２】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【産業上の利用可能性】
【０１８３】
本発明は、不揮発性記憶装置に適用でき、特に、静止画記録再生装置および動画記録再生装置等のポータブルＡＶ機器、または、携帯電話等のポータブル通信機器の記録媒体に用いられる不揮発性記憶装置に適用できる。
【図面の簡単な説明】
【０１８４】
【図１】第１の実施形態における不揮発性記憶システムのブロック図である。
【図２】フラッシュメモリ１３０の構成を示す図である。
【図３】フラッシュメモリ１３０の物理ブロックの構成を示す図である。
【図４】第１の実施形態におけるバッファメモリ１２２が保持するデータの構成を示す図である。
【図５】第１の実施形態における不揮発性記憶装置１１０の書込み処理のフローチャートである。
【図６】第１の実施形態における不揮発性記憶装置１１０の書換え処理の流れを示す図である。
【図７】従来の不揮発性記憶装置の書換え処理の流れを示す図である。
【図８】従来の不揮発性記憶装置の書換え処理の流れを示す図である。
【図９】第２の実施形態における不揮発性記憶装置１１０の書込み処理のフローチャートである。
【図１０】第２の実施形態における不揮発性記憶装置１１０の書換え処理の流れを示す図である。
【図１１】第３の実施形態における不揮発性記憶システムの構成を示すブロック図である。
【図１２】第３の実施形態における不揮発性記憶装置１１０の書込み処理のフローチャートである。
【図１３】第５の実施形態における不揮発性記憶装置１１０の書込み処理のフローチャートである。
【図１４】第６の実施形態における不揮発性記憶装置１１０の書換え処理の流れを示す図である。
【図１５】第８の実施形態におけるバッファメモリ１２２が保持するデータの構成を示す図である。
【図１６】第８の実施形態における不揮発性記憶装置１１０の書換え処理の流れを示す図である。
【図１７】第９の実施形態におけるバッファメモリ１２２が保持するデータの構成を示す図である。
【図１８】第９の実施形態における不揮発性記憶装置１１０の書換え処理の流れを示す図である。
【図１９】第１０の実施形態におけるバッファメモリ１２２が保持するデータの構成を示す図である。
【図２０】第１０の実施形態における不揮発性記憶装置１１０の書換え処理の流れを示す図である。
【図２１】第１１の実施形態における不揮発性記憶装置１１０の書換え処理の流れを示す図である。
【図２２】第１２の実施形態における不揮発性記憶システムの構成を示すブロック図である。
【図２３】従来の不揮発性記憶システムの構成を示すブロック図である。
【符号の説明】
【０１８５】
１００    アクセス装置
１１０、１１１０    不揮発性記憶装置
１２０、１１２０    メモリコントローラ
１２１、１１２１    ＣＰＵ
１２２、１１２２    バッファメモリ（補助記憶メモリ）
１２３、１１２３    メモリ制御部
１２４    通知部
１２５    アドレス比較部
１３０、１１３０    フラッシュメモリ（主記憶メモリ）
２００    物理ブロック
２１０    ページ
２１１    データ領域
２１２    管理領域
２１３    セクタ
３０１    ワード
３０２    データ領域
３０３    論理アドレス領域
３０４    データ管理フラグ
３０５    特定領域フラグ
３０６    書込み完了フラグ
３０７    転送完了フラグ
３０３１    論理ブロックアドレス
３０３２    論理ページアドレス
【図１】
0004418439.tif 000002
【図２】
0004418439.tif 000003
【図３】
0004418439.tif 000004
【図４】
0004418439.tif 000005
【図５】
0004418439.tif 000006
【図６】
0004418439.tif 000007
【図７】
0004418439.tif 000008
【図８】
0004418439.tif 000009
【図９】
0004418439.tif 000010
【図１０】
0004418439.tif 000011
【図１１】
0004418439.tif 000012
【図１２】
0004418439.tif 000013
【図１３】
0004418439.tif 000014
【図１４】
0004418439.tif 000015
【図１５】
0004418439.tif 000016
【図１６】
0004418439.tif 000017
【図１７】
0004418439.tif 000018
【図１８】
0004418439.tif 000019
【図１９】
0004418439.tif 000020
【図２０】
0004418439.tif 000021
【図２１】
0004418439.tif 000022
【図２２】
0004418439.tif 000023
【図２３】
0004418439.tif 000024