(57)【特許請求の範囲】
【請求項１】
ページ単位でのデータ書き込みが可能な複数の記憶単位を有し、各記憶単位に複数ページ分の書込みデータを多値化して記憶可能なメモリと、
前記メモリに対してデータを書き込む場合、前記メモリの複数の記憶単位から書き込み先の記憶単位を選択し、選択した前記メモリの各記憶単位に、当該書き込みに係るデータのページを含む複数のページによる２ビット以上のデータを多値化して書き込む制御部と
を有し、
前記制御部は、
複数ページ分の書込みデータを前記メモリに書き込む場合、当該複数ページ分の書込みデータを、ページ毎に多値化し、
前記メモリの未使用の第１記憶単位群、または、前記メモリ以外の他のメモリの未使用の記憶単位群を仮想領域として、該仮想領域の互いに異なる未使用の複数の記憶単位に前記多値化された複数ページ分の書込みデータを１ページずつ書き込み、
前記仮想領域へのデータ書き込み後に、当該書き込まれたデータを前記メモリの前記第１記憶単位群とは異なる第２記憶単位群へコピーし、
前記コピーの後に前記仮想領域のデータを消去する、
記憶装置。
【請求項２】
前記制御部は、
前記第２記憶単位群へのデータのコピーに際し、未使用の記憶単位群を選択して、選択した未使用の記憶単位群に第１記憶単位群に書き込まれているデータをコピーする、
請求項１記載の記憶装置。
【請求項３】
前記書込みデータの種類を判断し、当該書込みデータがシステムデータである場合、当該システムデータが１ページずつ書き込まれる前記メモリの第２記憶単位群に対して、他のページのデータの追加書き込みをしない、
請求項１または２記載の記憶装置。
【請求項４】
前記制御部は、
前記複数のページによる２ビット以上のデータを多値化して書き込む場合に、当該多値がとり得る複数の値のうちの１個の値の書込み処理として、前記仮想領域の各未使用の第１記憶単位群に前記書込みデータを１ページずつ書き込む、
請求項１から３のいずれか一項記載の記憶装置。
【請求項５】
前記制御部は、
複数ページ分の書込みデータを前記メモリの複数のページに１ページずつ書き込む場合、前記多値化された複数ページ分の書込みデータを、前記メモリの前記第１記憶単位群で構成される仮想ブロックへ１ページずつ書き込み、
前記仮想ブロックに書き込まれたデータを、前記メモリの前記仮想ブロックに属さない前記第２記憶単位群で構成される他のブロックにコピーし、当該他のブロックへのコピーが完了した後に前記仮想ブロックからデータを消去する、
請求項１から４のいずれか一項記載の記憶装置。
【請求項６】
前記制御部は、
前記メモリに対する複数ページ分の書込みデータの書込み処理を、前記仮想ブロックへの書込み完了により終了し、
前記書込み処理以外のバックグランド処理により、前記仮想ブロックから前記他のブロックへデータを移動する、
請求項５記載の記憶装置。
【請求項７】
ページ単位でのデータ書き込みが可能な複数の記憶単位を有し、各記憶単位に複数ページ分の書込みデータを多値化して記憶可能なメモリに対して、複数ページ分の書込みデータを書き込む場合に、前記メモリの複数の記憶単位から、書き込み先となる未使用の第１記憶単位群を選択する工程と、
前記書込みデータの各ページを、１ページずつ別々に多値化する工程と、
前記書込みデータの各ページについて多値化されたデータを、選択した前記未使用の第１記憶単位群に１ページずつ書き込む工程と、
前記第１記憶単位群へのデータ書き込み後に、当該書き込まれたデータを前記メモリの前記第１記憶単位群とは異なる第２記憶単位群へコピーする工程と、
前記第２記憶単位群へのコピーの後に前記第１記憶単位群のデータを消去する工程と、
を有するデータの書込み方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データを多値化して記憶する記憶装置およびデータの書込み方法に関する。
【背景技術】
【０００２】
フラッシュメモリなどの記憶装置では、各セルに、２ビット以上のデータを多値化して記憶させることができる。たとえば、特許文献１の記憶装置では、２ビットのデータを多値化して各セルに記憶させている。
このように２ビット以上のデータを多値化して各セルに記憶させることにより、記憶装置の記憶容量を倍増できる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２９９９１９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、２ビット以上のデータを多値化して記憶する記憶装置において、データの書込みに失敗すると、記憶装置に既に記憶させたデータが消失する可能性がある。
特に、記憶装置においてページ単位でデータを書き込む場合、ページ単位でデータが消失する可能性がある。
ページ単位で消失したデータは、通常のエラー訂正処理などにより復旧することは難しい。
【０００５】
このように２ビット以上のデータを多値化して記憶する記憶装置では、データの書込み処理の信頼性を改善することが求められている。
【課題を解決するための手段】
【０００６】
本発明の第１の観点の記憶装置は、ページ単位でのデータ書き込みが可能な複数の記憶単位を有し、各記憶単位に複数ページ分の書込みデータを多値化して記憶可能なメモリと、前記メモリに対してデータを書き込む場合、前記メモリの複数の記憶単位から書き込み先の記憶単位を選択し、選択した前記メモリの各記憶単位に、当該書き込みに係るデータのページを含む複数のページによる２ビット以上のデータを多値化して書き込む制御部とを有し、前記制御部は、複数ページ分の書込みデータを前記メモリに書き込む場合、当該複数ページ分の書込みデータを、ページ毎に多値化し、前記メモリの未使用の第１記憶単位群、または、前記メモリ以外の他のメモリの未使用の記憶単位群を仮想領域として、該仮想領域の互いに異なる未使用の複数の記憶単位に前記多値化された複数ページ分の書込みデータを１ページずつ書き込み、前記仮想領域へのデータ書き込み後に、当該書き込まれたデータを前記メモリの前記第１記憶単位群とは異なる第２記憶単位群へコピーし、前記コピーの後に前記仮想領域のデータを消去する。
以下、メモリの記憶単位も、データ単位であるページと同様、「ページ」と称する。
【０００７】
第１の観点では、複数ページ分の書込みデータをメモリに書き込む場合、当該複数ページ分の書込みデータは、メモリの互いに異なる未使用の複数のページに１ページずつ書き込まれる。
よって、第１の観点では、書込みデータの書込み処理において、既にデータが書き込まれているメモリのページに対して、書込みデータの別のページを書き込まない。
【０００８】
本発明の第２の観点のデータの書込み方法は、ページ単位でのデータ書き込みが可能な複数の記憶単位を有し、各記憶単位に複数ページ分の書込みデータを多値化して記憶可能なメモリに対して、複数ページ分の書込みデータを書き込む場合に、前記メモリの複数の記憶単位から、書き込み先となる未使用の第１記憶単位群を選択する工程と、前記書込みデータの各ページを、１ページずつ別々に多値化する工程と、前記書込みデータの各ページについて多値化されたデータを、選択した前記未使用の第１記憶単位群に１ページずつ書き込む工程と、前記第１記憶単位群へのデータ書き込み後に、当該書き込まれたデータを前記メモリの前記第１記憶単位群とは異なる第２記憶単位群へコピーする工程と、前記第２記憶単位群へのコピーの後に前記第１記憶単位群のデータを消去する工程と、を有する。
【発明の効果】
【０００９】
本発明では、２ビット以上のデータを多値化して記憶する記憶装置において、データ書込み処理の信頼性を改善できる。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の第１実施形態に係る記憶装置を含むデータ処理システムのブロック図である。
【図２】図２は、図１のフラッシュメモリの概略ブロック図である。
【図３】図３は、図２のメモリアレイに書き込まれる４種類の閾値電圧の一例の説明図である。
【図４】図４は、図１のフラッシュメモリのページとブロックとの対応関係の説明図である。
【図５】図５は、２ページの書込みデータがフラッシュメモリの１ページに書き込まれる例でのページ対応関係の説明図である。
【図６】図６は、図５のページ対応関係の下でのデータ消失例の説明図である。
【図７】図７は、図１のフラッシュメモリへのデータ書込み時に使用する仮想ブロックの説明図である。
【図８】図８は、図１の記憶装置の書込み処理のフローチャートである。
【図９】図９は、図８のステップＳＴ４の詳細なフローチャートである。
【図１０】図１０は、本発明の第２実施形態での仮想ブロックのデータの移動処理のフローチャートである。
【図１１】図１１は、第２実施形態での書込み処理のフローチャートである。
【発明を実施するための形態】
【００１１】
以下、本発明の実施の形態を図面に関連付けて説明する。
説明は以下の順に行う。
１．第１実施形態（データの書込み時には不揮発性メモリの仮想ブロックへデータを書き込み、その後に仮想ブロックから最終的な格納先のブロックへデータを移動する例。）
２．第２実施形態（仮想ブロックから最終的な格納先のブロックへのデータ移動処理を、バックグランドで処理する例。）
【００１２】
＜１．第１実施形態＞
［記憶装置１の全体構成］
図１は、本発明の第１実施形態に係る記憶装置１を含むデータ処理システムの構成を示すブロック図である。
図１の記憶装置１は、インタフェース部（Ｉ／Ｆ部）１１、ＣＰＵ（Central Processing Unit）１２、内部ＲＡＭ（Random Access Memory）１３、アクセス制御部１４、バッファＲＡＭ１５、およびフラッシュメモリ１６を有する。
図１の記憶装置１は、ホスト装置２に接続して使用するカード型の記憶装置１である。ホスト装置２は、たとえばコンピュータ装置である。
カード型の記憶装置１には、たとえばホスト装置２に対して着脱可能に装着されるＭｅｍｏｒｙ  Ｓｔｉｃｋ（登録商標）、ＳＤなどがある。
そして、記憶装置１は、複数ページのデータを多値化してフラッシュメモリ１６に記憶する。
また、記憶装置１は、複数のページのデータの書込み処理において、まず、複数のページの書込みデータを１ページずつ別々に多値化して仮想ブロックに書き込む。その後、記憶装置１は、仮想ブロックから実際の格納先のブロックへ書込みデータを移動する。
【００１３】
インタフェース部１１は、コネクタを有し、ホスト装置２のインタフェース部１１に接続される。
インタフェース部１１は、たとえばＭｅｍｏｒｙ  Ｓｔｉｃｋ（登録商標）、ＳＤなどの規格に準拠したものである。
これにより、記憶装置１は、ホスト装置２に接続される。
ホスト装置２は、記憶装置１にアクセスし、記憶装置１にデータを書き込み、記憶装置１からデータを読み出す。
【００１４】
フラッシュメモリ１６は、たとえばＮＡＮＤ型のフラッシュメモリ１６、ＮＯＲ型のフラッシュメモリ１６などの不揮発性の半導体メモリである。
フラッシュメモリ１６は、電源供給が遮断された後にも、書き込まれたデータを保持記憶する。
フラッシュメモリ１６は、後述するように複数のセルからなるページ（Page）単位で、データの書込みおよび読出しが可能である。
また、フラッシュメモリ１６は、複数のページからなるブロック（Block）単位でデータの消去（初期化）が可能である。
【００１５】
内部ＲＡＭ１３は、たとえばＳＲＡＭ、ＤＲＡＭなどである。
内部ＲＡＭ１３は、インタフェース部１１と、アクセス制御部１４とに接続される。
そして、内部ＲＡＭ１３は、記憶装置１とホスト装置２との間で送受するデータを記憶する。
たとえば内部ＲＡＭ１３は、ホスト装置２から記憶装置１に書き込まれた書込みデータを記憶する。
また、内部ＲＡＭ１３は、フラッシュメモリ１６から読み出した読出しデータを記憶する。
なお、内部ＲＡＭ１３は、たとえばフラッシュメモリ１６の１ブロック分のデータを記憶できる容量であればよい。
【００１６】
バッファＲＡＭ１５は、たとえばＳＲＡＭ、ＤＲＡＭなどである。
バッファＲＡＭ１５は、アクセス制御部１４と、フラッシュメモリ１６とに接続される。
そして、バッファＲＡＭ１５は、フラッシュメモリ１６に書き込むデータ、またはフラッシュメモリ１６から読み出すデータを記憶する。
なお、バッファＲＡＭ１５は、たとえばフラッシュメモリ１６の１ページ分のデータを記憶できる容量であればよい。
【００１７】
アクセス制御部１４は、ＣＰＵ１２、インタフェース部１１、内部ＲＡＭ１３、およびバッファＲＡＭ１５に接続される。
そして、アクセス制御部１４は、フラッシュメモリ１６へのアクセスを管理し実行する。
たとえばアクセス制御部１４は、フラッシュメモリ１６に対するページ単位での書込み処理、ページ単位での読み出し処理、ブロック単位での消去（初期化）処理を実行する。
【００１８】
具体的にはたとえば、ＣＰＵ１２からデータの書込みが指示されると、アクセス制御部１４は、内部ＲＡＭ１３から書込みデータを読み込む。
また、アクセス制御部１４は、フラッシュメモリ１６の書き込み先のページを選択し、内部ＲＡＭ１３から読み込んだ書込みデータをバッファＲＡＭ１５に書き込む。
フラッシュメモリ１６は、バッファＲＡＭ１５から書込みデータを読み込んで多値化し、アクセス制御部１４により選択されたページに書込み保存する。
書込みデータをフラッシュメモリ１６に書き込むと、アクセス制御部１４は、論物変換テーブルを作成または更新する。
なお、論物変換テーブルは、データの論理アドレスをフラッシュメモリ１６の物理アドレスへ変換するためのテーブルである。
論物変換テーブルは、たとえばバッファＲＡＭ１５などに記憶される。
【００１９】
また、ＣＰＵ１２からデータの読出しが指示されると、アクセス制御部１４は、フラッシュメモリ１６から、読出しデータを含むページを読み込む。
具体的には、アクセス制御部１４は、論物変換テーブルを用いて読出しデータのアドレスに対応するページを特定し、当該ページの読出しをフラッシュメモリ１６に指示する。
フラッシュメモリ１６は、読出しデータを含むページのデータをバッファＲＡＭ１５に書き込む。
アクセス制御部１４は、バッファＲＡＭ１５から、読出しデータを読み込み、内部ＲＡＭ１３に書き込む。
【００２０】
また、アクセス制御部１４は、フラッシュメモリ１６の複数のブロックの使用状況を管理する。
そして、たとえば未使用の初期化されたブロックが不足している場合には、アクセス制御部１４は、同一論理ページについての古いデータを記憶するブロックを探索し、当該ブロックからデータを消去する。
消去処理されたブロックは、初期化され、未使用のブロックになる。
【００２１】
ＣＰＵ１２は、アクセス制御部１４とともに記憶装置１の制御部として機能する。
ＣＰＵ１２は、インタフェース部１１と、アクセス制御部１４とに接続される。
そして、ＣＰＵ１２は、インタフェース部１１を通じてホスト装置２と通信し、ホスト装置２から受信したアクセスコマンドを解釈し、コマンドを実行する。
また、ＣＰＵ１２は、アクセス制御部１４に対して、フラッシュメモリ１６へのアクセスを指示する。
【００２２】
たとえばインタフェース部１１から書込みコマンドが入力されると、ＣＰＵ１２は、アクセス制御部１４に書き込み処理を指示する。
アクセス制御部１４は、インタフェース部１１から内部ＲＡＭ１３に保存された書込みデータをページ単位で読み込み、フラッシュメモリ１６に書き込む。
アクセス制御部１４による書込み処理が完了すると、ＣＰＵ１２は、インタフェース部１１からホスト装置２へ書込み完了を通知する。
【００２３】
また、インタフェース部１１から読み出しコマンドが入力されると、ＣＰＵ１２は、アクセス制御部１４に読み出し処理を指示する。
アクセス制御部１４は、フラッシュメモリ１６から読出しデータを読み込み、内部ＲＡＭ１３に書き込む。
内部ＲＡＭ１３に読出しデータが保存されると、ＣＰＵ１２は、インタフェース部１１からホスト装置２へ読出し準備完了を通知する。
【００２４】
［フラッシュメモリ１６の構造］
図２は、図１のフラッシュメモリ１６の概略ブロック図である。
フラッシュメモリ１６は、メモリアレイ２１、ロー回路 （Row Circuit） ２２、カラム回路 （Column Circuit） ２３、ウェル電圧制御回路２４を有する。
これらの回路２１〜２４は、たとえば図２のレイアウトにより、図示しない半導体基板に形成される。
【００２５】
メモリアレイ２１は、複数のブロックを有する。複数のブロックは、複数のページを有する。
図２のメモリアレイ２１は、ｍ個のブロックＢＬＫ（１）〜ＢＬＫ（ｍ）を有し、各ブロックはｎ個のページＰ（１）〜Ｐ（ｎ）を有する。
通常、フラッシュメモリ１６は、数千個のブロックを有する。
各ページは、図示しない複数のセルを有する。
セルは、フローティングゲートを有する複数のトランジスタを有する。
そして、セルは、このフローティングゲートにより、たとえば２ビットのデータが多値化された４種類の閾値電圧を保持する。
【００２６】
複数のセルは、半導体基板のメモリアレイ２１の形成領域において、二次元マトリクスに配列される。
複数のセルには、その配列にしたがって複数のワード線ＷＬが接続される。複数のワード線ＷＬは、ロー回路２２に接続される。
複数のセルには、その配列にしたがって複数のビット線ＢＬが接続される。複数のビット線ＢＬは、カラム回路２３に接続される。
ロー回路２２およびカラム回路２３は、複数のメモリセルを、ページ単位またはブロック単位で選択する。
そして、カラム回路２３は、たとえば選択したページの各セルの閾値電圧を読み込み、各セルの閾値電圧に対応する２ビットのデータを生成し、読出しデータとして出力する。
ウェル電圧制御回路２４は、複数のセルが形成される、たとえばＮ型の半導体基板のＰウェルの電圧を制御する。
Ｐウェルの電圧を制御することにより、各セルには、２ビットに対応する４種類の閾値電圧のいずれかの電圧が書き込まれる。
【００２７】
図３は、図２のメモリアレイ２１の各セルに書き込まれる４種類の閾値電圧の一例の説明図である。
図３の縦軸は閾値電圧であり、横軸は複数のセルでの閾値電圧の分布割合である。
図３には、各セルに書き込む４種類の閾値電圧として、第１閾値電圧ＴＨ１、第２閾値電圧ＴＨ２、第３閾値電圧ＴＨ３、第４閾値電圧ＴＨ４が記載されている。
第１閾値電圧ＴＨ１は、０Ｖより低い閾値電圧であり、２ビットの値、たとえば「１１」に対応する。
第１閾値電圧ＴＨ１は、ブロック単位での消去処理によりセルに書き込まれる。
第２閾値電圧ＴＨ２は、は、０Ｖより高い閾値電圧であり、２ビットの値、たとえば「１０」に対応する。
第２閾値電圧ＴＨ２は、ページ単位でのデータ書込み処理によりセルに書き込まれる。
第３閾値電圧ＴＨ３は、第２閾値電圧ＴＨ２より高い閾値電圧であり、２ビットの値、たとえば「０１」に対応する。
第３閾値電圧ＴＨ３は、ページ単位でのデータ書込み処理によりセルに書き込まれる。
第４閾値電圧ＴＨ４は、第３閾値電圧ＴＨ３より高い閾値電圧であり、２ビットの値、たとえば「００」に対応する。
第４閾値電圧ＴＨ４は、ページ単位でのデータ書込み処理によりセルに書き込まれる。
【００２８】
そして、書込みデータの書込み処理では、２ページのデータを多値化し、その多値化データに対応する閾値電圧をセルに保持させる必要がある。
そのため、２ビットを多値化したデータを書き込む処理では、第１閾値電圧ＴＨ１が書き込まれたセルに対して、第２閾値電圧ＴＨ２の第１サイクルと、第３閾値電圧ＴＨ３の第２サイクルと、第４閾値電圧ＴＨ４の第３サイクルとを実行する必要がある。
【００２９】
図４は、図１のフラッシュメモリ１６のページとブロックとの対応関係の説明図である。
図４には、複数のブロックPhysical Block 0、Physical Block 1、・・・が図示されている。図４において、各行が１個のブロックに対応する。各行のブロックは、複数のページPhysical Page 0、Physical Page 1、・・・により構成されている。
そして、たとえば図４の最も上の第１行の左端２個のページは、多値化され、フラッシュメモリ１６の共通するセル群に書き込まれる。すなわち、フラッシュメモリ１６の１個のページに書込まれる。
たとえば、左端から１番目のページのビットの値が０であり、２番目のページのビットの値が１である場合、これら２ビットの値が書き込まれるセルには、図３の第３閾値電圧ＴＨ３が書き込まれる。
【００３０】
図５は、２ページ分の書込みデータがフラッシュメモリ１６の１個のページに書き込まれる場合の一例のページ対応図である。
図５には、書込みデータの複数のページPhysical Page 0〜Physical Page 15が図示されている。
図５において、書込みデータの複数のページは、グループ１（Group 1）とグループ２（Group 2）とに分類される。図５において同一行に図示されたグループ１のページとグループ２のページとは、多値化され、フラッシュメモリ１６の１個のページに書込まれる。
図５においては、１６個の書込みデータのページPhysical Page 0〜Physical Page 15は、フラッシュメモリ１６の８個のページＰ１〜Ｐ８に書き込まれる。
たとえば書込みデータのページ０（Physical Page 0）およびページ１（Physical Page 1）は、フラッシュメモリ１６の第１ページＰ１に書き込まれる。
【００３１】
図６は、図５のページ対応関係の下でのデータ消失の一例の説明図である。
図６には、図５の１６個の書込みデータのページ（Physical Page 0〜15）が、フラッシュメモリ１６の１個のブロック（Physical Block）に対応するように展開して描画されている。
【００３２】
ここで仮に、アクセス制御部１４は、たとえば書込みデータの第６ページ（Physical Page 6）を書き込んだ後に、第７ページ（Physical Page 7）を書き込むものとする。
この場合において書込みデータの第７ページ（Physical Page 7）の書込み処理に失敗すると、第７ページと共通するセル群に既に書き込まれた第６ページ（Physical Page 6）のデータは消失する可能性がある。
よって、書込みデータの第６ページ（Physical Page 6）は、書込みデータの第７ページ（Physical Page 7）の書込み処理の失敗によりダメージを受けることになる。
このように図５のGroup1とGroup2とで同じ行となっている組み合わせのページ（例：Physical Page0とPhysical Page1）は、フラッシュメモリ１６上の同じページに保存される。よって、片方の書き込み時にエラーが発生すると、もう片方のデータも一緒に破損してしまう可能性がある。
また、図５において同じ行となっている組み合わせのページには、書き込みが早いページと、遅いページとが傾向的に存在する。
以下では、図５のGroup1のページの書き込みが、Group２のページよりも早く、最初に書き込みがなされるものとして説明する。
【００３３】
第１実施形態では、このようなデータ書込み時のデータ消失を防止するために、仮想ブロック （Virtual Block）を使用する。
図７は、図１のＣＰＵ１２が、フラッシュメモリ１６へのデータ書込み時に使用する仮想ブロック３１の説明図である。
図７（Ａ）および（Ｂ）は、フラッシュメモリ１６についての初期化された未使用のブロックPhysical Block A，Physical Block Bである。
各ブロックは、１６個の未使用のページＰ０〜Ｐ１５で構成される。
【００３４】
そして、図７（Ｃ）に示すように、アクセス制御部１４は、図７（Ａ）および（Ｂ）のフラッシュメモリ１６の未使用の２個のブロックについて、仮想ブロック３１を生成する。
なお、アクセス制御部１４は、フラッシュメモリ１６の複数組のブロックについて、複数の仮想ブロック３１を生成してもよい。
仮想ブロック３１は、図７（Ａ）のブロックＡから選択された８個の未使用のページＰ０、Ｐ２、Ｐ４、Ｐ６、・・・、Ｐ１４と、図７（Ｂ）のブロックＢから選択された８個の未使用のページＰ０、Ｐ２、Ｐ４、Ｐ６、・・・、Ｐ１４とで構成される。
ところで、仮想ブロック３１は、フラッシュメモリ１６の各組のブロックにおいて、書き込みの早いグループ（図５で言うグループ１）のページだけを使用して設定される。
これにより、フラッシュメモリ１６の１個のブロックのすべてのページを仮想ブロック３１に設定する場合より、各ページの平均的な書込み速度は、向上する。
また、フラッシュメモリ１６の各ブロックについてデータが書き込まれるページを考えた場合、仮想ブロック３１の各ページは、図５のグループ１とグループ２とのようにペアの関係に無い。
よって、仮想ブロック３１の１個のページにおいて書込みエラーが仮に発生しても、その書き込み中のページのデータが破損するだけである。
仮想ブロック３１の他のページのデータは、消失するおそれがない。
【００３５】
また、本実施形態とは異なり、３ビットを多値化してフラッシュメモリ１６の各セルに閾値電圧を書き込む場合、仮想ブロック３１は、フラッシュメモリ１６の３個の未使用のブロックにより定義すればよい。
同様に、４ビットを多値化する場合には、仮想ブロック３１は、フラッシュメモリ１６の４個の未使用のブロックにより定義すればよい。
また、５ビットを多値化する場合には、仮想ブロック３１は、フラッシュメモリ１６の５個の未使用のブロックにより定義すればよい。
【００３６】
そして、ＣＰＵ１２は、新たな書込みデータをフラッシュメモリ１６に書き込む場合、この未使用の仮想ブロック３１に対してページ単位でのデータ書込みを実行する。
この未使用の仮想ブロック３１に対する書込み処理を実行することにより、仮想ブロック３１に対応するフラッシュメモリ１６の未使用のブロックの各セル群には、当該各セル群に書き込み可能な２ページのデータ内の、第１ページ分のデータのみが書き込まれる。
なお、仮想ブロック３１は、たとえば内部ＲＡＭ１３、バッファＲＡＭ１５、フラッシュメモリ１６などの記憶領域に、ＣＰＵ１２およびアクセス制御部１４などの記憶装置１の制御部によりアクセス可能に保存されればよい。
【００３７】
［書込みデータの書込み処理］
次に、図１の記憶装置１の書込み処理について詳しく説明する。
図８は、図１の記憶装置１の書込みデータの書込み処理のフローチャートである。
【００３８】
ホスト装置２が記憶装置１へ書込みデータを出力すると、記憶装置１は、インタフェース部１１により書込みデータを受信する（ステップＳＴ１）。
記憶装置１が受信した書込みデータは、内部ＲＡＭ１３に書き込まれる。
ホスト装置２が記憶装置１に書き込む書込みデータは、内部ＲＡＭ１３に蓄積保存される。
【００３９】
次に、記憶装置１のＣＰＵ１２は、内部ＲＡＭ１３に蓄積された書込みデータをフラッシュメモリ１６への書込み処理を開始する（ステップＳＴ２）。
ＣＰＵ１２は、たとえばホスト装置２からの書き込み指示がインタフェース部１１から入力されたり、または内部ＲＡＭ１３に所定量以上のデータが蓄積されたりすることにより、書込み処理を開始する。
ＣＰＵ１２は、フラッシュメモリ１６について設定された複数の仮想ブロック３１から、未使用の仮想ブロック３１を選択する。
そして、ＣＰＵ１２は、アクセス制御部１４に、選択した仮想ブロック３１へのデータ書込みを指示する。
【００４０】
未使用の仮想ブロック３１は、データが消去されて初期化されたフラッシュメモリ１６の複数のブロックにより構成されるブロックである。
よって、未使用の仮想ブロック３１に対応するフラッシュメモリ１６の複数のブロックは、書込みデータを記憶していない。
そして、アクセス制御部１４は、内部ＲＡＭ１３に記憶された書込みデータを１ページずつ読み込み、仮想ブロック３１の未使用の各ページに書込む。実際には、アクセス制御部１４は、仮想ブロック３１の未使用の各ページに対応するフラッシュメモリ１６の各ページに、書込みデータを１ページずつ書き込む。
この仮想ブロック３１の各ページへの書込み処理では、フラッシュメモリ１６についての図５のグループ１のページのみに書込み、グループ２のページには書込まない。
このため、アクセス制御部１４は、たとえば各書き込み処理において、第１閾値電圧ＴＨ１が書き込まれたセルに対して、たとえば図３に示す４個の閾値のうち、第３閾値電圧ＴＨ３をセルに書き込む書込みサイクルのみを実行すればよい。
これにより、書込み後のセルには、２ビットのデータ「０１」に対応する第３閾値電圧ＴＨ３、または２ビットのデータ「１１」に対応する第１閾値電圧ＴＨ１が保持される。
この場合、２ビットのデータの内の上位ビットが、内部ＲＡＭ１３から読み込んだデータのビットに対応する。
これにより、２ページ分を多値化して書込む場合のように、第３閾値電圧ＴＨ３の第２サイクルと、第４閾値電圧ＴＨ４の第３サイクルとを実行する必要が無くなり、仮想ブロック３１の各ページへの書込み処理を高速化できる。
【００４１】
アクセス制御部１４は、仮想ブロック３１の各ページに対応するフラッシュメモリ１６のページへの書込み処理を正常に終了すると、仮想ブロック３１への書込み処理を終了する。
なお、いずれかのページでの書込み処理が正常に終了しなかった場合、アクセス制御部１４は、当該ページを内部ＲＡＭ１３から再度読み込み、再書込み処理を実行する。
【００４２】
アクセス制御部１４による仮想ブロック３１への書込み処理が終了すると、ＣＰＵ１２は、ホスト装置２へ書込み完了を通知する（ステップＳＴ３）。
ＣＰＵ１２は、インタフェース部１１からホスト装置２へ書込み完了通知を送信する。
【００４３】
仮想ブロック３１への書込みデータの書込み処理を終了すると、アクセス制御部１４は、仮想ブロック３１から、フラッシュメモリ１６のブロックへのデータの移動処理を実行する。
アクセス制御部１４は、まず、仮想ブロック３１からフラッシュメモリ１６のブロックへのデータのコピー処理を実行する（ステップＳＴ４）。
【００４４】
図９は、図１のアクセス制御部１４による仮想ブロック３１からフラッシュメモリ１６のブロックへのデータコピー処理（図８のステップＳＴ４）のフローチャートである。
【００４５】
データコピー処理において、アクセス制御部１４は、まず、フラッシュメモリ１６の未使用のブロックを選択する（ステップＳＴ１１）。
そして、アクセス制御部１４は、仮想ブロック３１の有効ページを未使用のブロックへコピーする処理を開始する（ステップＳＴ１２）。
具体的には、アクセス制御部１４は、仮想ブロック３１から、有効ページのデータを読み込む（ステップＳＴ１３）。
また、アクセス制御部１４は、読み込んだ有効ページのデータを、選択したフラッシュメモリ１６の未使用のブロックに書き込む（ステップＳＴ１４）。
なお、有効ページとは、同一論理アドレスの最新のページを意味する。
【００４６】
そして、仮想ブロック３１のすべての有効ページのコピーが完了すると（ステップＳＴ１５）、アクセス制御部１４は、データコピー処理が成功したか否かを判断する（ステップＳＴ１６）。
データコピー処理が成功している場合、アクセス制御部１４は、当該処理を終了する。
いずれかの有効ページのデータコピー処理が成功していない場合、アクセス制御部１４は、ステップＳＴ１１からＳＴ１６までの処理を繰り返す。
なお、コピーするデータがシステムデータである場合、アクセス制御部１４は、仮想ブロック３１からフラッシュメモリ１６のブロックへのデータコピー処理は、１ページずつ多値化し、フラッシュメモリ１６の各ページに１ページずつ書き込む。
よって、コピー後のシステムデータは、図７（Ａ）および（Ｂ）のブロックと同様の状態で、フラッシュメモリ１６の他のブロックにコピーされる。
【００４７】
仮想ブロック３１からのデータコピー処理が完了すると、図８に示すように、アクセス制御部１４は、仮想ブロック３１の消去処理を実行する。
なお、データコピー処理に失敗したフラッシュメモリ１６のブロックが存在する場合、アクセス制御部１４は、仮想ブロック３１とともに当該ブロックの消去処理を実行する（ステップＳＴ５）。
【００４８】
仮想ブロック３１のデータの移動処理を完了すると、アクセス制御部１４は、書き込んだデータの種類を判断する（ステップＳＴ６）。
そして、書き込んだデータがシステムデータである場合、アクセス制御部１４は、コピー先のブロックについて、追加データの書込み禁止を設定する（ステップＳＴ７）。
なお、システムデータには、たとえばFAT、Directory Entry、システムのセキュリティデータなどがある。
システムデータが破損すると、記憶装置１に記憶させたファイルが見えなくなったり、記憶装置１を用いた起動処理ができなくなったりする可能性がある。
【００４９】
なお、図９のステップＳＴ１４のコピー処理において、アクセス制御部１４は、書込みデータを仮想ブロック３１へ書込んだ場合のように、フラッシュメモリ１６の各ブロックの未使用の第１ページ（図５を参照）のみに書き込みを行うようにしてもよい。
この場合には、アクセス制御部１４は、図８のステップＳＴ６、ＳＴ７を実行する必要が無い。図８のステップＳＴ６、ＳＴ７のデータの種類に応じた特別な判断および処理をしなくとも、データが書込まれた第１ページと組になっている第２ページへのデータ追加書込みの失敗により、第１ページのデータが消失することはない。
【００５０】
以上のように、第１実施形態では、複数のページによる２ビット以上のデータを多値化して記憶装置１に記憶させるので、記憶装置１の記憶容量を倍増できる。
これにより、第１実施形態では、単位ビット当たりのコストを大幅に削減できる。
【００５１】
また、第１実施形態では、データ書込み時にはメモリの未使用のページ（仮想ブロック３１）に対して１ページずつ書き込む。
しかも、第１実施形態では、仮想ブロック３１への各ページのデータの書き込み時には書込みサイクルを省略することにより、書込みデータの単位ページ当たりの書込み時間を削減している。
よって、第１実施形態では、データを多値化して記憶する記憶装置１において不利となる書込み速度の低下を抑制し、かつ、書込み後のデータ保持の信頼性を向上できる。
【００５２】
また、第１実施形態では、複数ページ分の書込みデータをフラッシュメモリ１６に書き込む場合、当該複数ページ分の書込みデータは、ページ毎にフラッシュメモリ１６の別々の未使用のページに１ページずつ書き込まれる。
よって、第１実施形態では、書込み処理中に、メモリ中の既にデータを記憶しているページに対しての追加データの書込み処理が発生しない。
そのため、第１実施形態では、追加ページの書込み処理による、当該書込み対象のページからのデータ消失を防止できる。
フラッシュメモリ１６に書き込んだデータは、フラッシュメモリ１６への書き込み処理の完了時に消失することがなくなり、確実にフラッシュメモリ１６に記憶される。
これに対して、たとえば複数ページ分の書込みデータを、フラッシュメモリ１６の各ページに複数ページずつ書き込む場合に、各ページの２回目以降の書込みに失敗すると、当該各ページに既に書き込まれたデータがページ単位で消失する可能性がある。
【００５３】
また、第１実施形態では、データの書込み処理において、仮想ブロック３１を用い、フラッシュメモリ１６の未使用のページのみを使用して書き込みデータの各ページを書き込む。
よって、第１実施形態では、フラッシュメモリ１６の各ページに対する書込み処理において、フラッシュメモリ１６の各ページに対して最も効率の良い書込み処理を採用できる。
具体的には、第１実施形態では、フラッシュメモリ１６の未使用のページに１ページ分のデータを書き込む場合、たとえば第３閾値の１種類の値の書込み処理を実行する。
すなわち、第１実施形態では、書込みデータの各ページの書込み処理において、フラッシュメモリ１６の各ページに対して１ビット分のデータのみを書き込む場合と同様の１サイクルの書込み処理を採用する。
このため、第１実施形態では、フラッシュメモリ１６の各ページへの書込み処理において、多値データがとり得る値（ここでは４個）のすべての値の書込みサイクル（たとえば３サイクル）を実行する必要が無くなる。
その結果、第１実施形態では、フラッシュメモリ１６の各ページに対して書込みデータの複数のページを書き込む場合に比べて、書き込みデータの１ページ当たりの書込み時間を短縮できる。
第１実施形態では、複数ページの書込みデータをフラッシュメモリ１６に書き込む場合の書込み時間を総合的に短縮できる。
【００５４】
また、第１実施形態では、システムデータを記憶するフラッシュメモリ１６のブロックに対して、他のページのデータの追加書き込みをしない。
これにより、第１実施形態では、システムデータと他のデータとを混在して記憶する記憶装置１において、システムデータの保持の信頼性をさらに向上できる。
これに対して、システムデータ以外のデータを記憶するページについては、他のページのデータの追加書き込みがされる。
そのため、このページについては、通常通り、他のページのデータが追加書込みされる。
よって、第１実施形態では、多値化による記憶容量の倍増効果を損なうことなく、システムデータの信頼性を向上できる。
【００５５】
また、第１実施形態では、仮想ブロック３１に一時記憶させたデータを、フラッシュメモリ１６の他のブロックへ移動する。
この際、第１実施形態では、仮想ブロック３１に一時記憶させたデータについての他のブロックへの書き込みが完了した後に、仮想ブロック３１から当該データが消去される。
よって、第１実施形態では、仮想ブロック３１から他のブロックへのデータの移動処理中には、フラッシュメモリ１６に書き込まれたデータが仮想ブロック３１において存在する。
そのため、第１実施形態では、当該他のブロックへのデータ移動に失敗し、当該他のブロックに既に書き込んだデータが消失することがあっても、仮想ブロック３１に保持しているデータを用いて、当該他のブロックに対して消失したデータを再書込みできる。
第１実施形態では、この一連の処理により、フラッシュメモリ１６に書き込む１ブロック分の書込みデータを、フラッシュメモリ１６の１つのブロックに保存することができる。
【００５６】
＜２．第２実施形態＞
第２実施形態に係る記憶装置１の構成は、図１から図７に示す第１実施形態の記憶装置１と同様である。
ただし、仮想ブロック３１の消去処理と、書込みデータの書込み処理とが、第１実施形態と異なる。
具体的には、仮想ブロック３１からフラッシュメモリ１６の他のブロックへのデータ移動処理を、データ書込み処理とは別のバックグランド処理により実行する。
なお、第２実施形態に係る記憶装置１の各構成要素は、第１実施形態の同名の構成要素と同じ機能を有するものであり、第１実施形態と同一の符号を使用してその説明を省略する。
【００５７】
図１０は、本発明の第２実施形態のアクセス制御部１４による仮想ブロック３１のデータ移動処理のフローチャートである。
アクセス制御部１４は、図１０の処理を、書込み処理とは別に繰り返し実行する。
【００５８】
仮想ブロック３１のデータ移動処理において、アクセス制御部１４は、まず、すべての仮想ブロック３１について使用状況を確認する（ステップＳＴ２１）。
そして、アクセス制御部１４は、空いている未使用の空きの仮想ブロック３１が存在するか否かを判断する（ステップＳＴ２２）。
未使用の仮想ブロック３１が残存する場合、アクセス制御部１４は、仮想ブロック３１のデータコピー処理を終了する。
【００５９】
これに対して、空いている未使用の仮想ブロック３１が無い場合、アクセス制御部１４は、書き込みが一番古い仮想ブロック３１を選択する（ステップＳＴ２３）。
アクセス制御部１４は、選択した仮想ブロック３１のデータを、フラッシュメモリ１６の他のブロックへのコピー処理を実行する（ステップＳＴ２４）。
このコピー処理は、図９に示すコピー処理でよい。
仮想ブロック３１のデータについてのフラッシュメモリ１６の他のブロックへのコピー処理が完了すると、アクセス制御部１４は、当該仮想ブロック３１の消去処理を実行する（ステップＳＴ２５）。
これにより、アクセス制御部１４は、未使用の仮想ブロック３１を生成する。
【００６０】
図１１は、第２実施形態に係る記憶装置１の書込み処理のフローチャートである。
記憶装置１がホスト装置２から書込みデータを受信すると（ステップＳＴ３１）、記憶装置１は、インタフェース部１１により書込みデータを受信し、内部ＲＡＭ１３に蓄積保存する。
次に、記憶装置１のＣＰＵ１２は、内部ＲＡＭ１３に蓄積された書込みデータをフラッシュメモリ１６への書込み処理を開始する。
ＣＰＵ１２は、たとえばホスト装置２からの書き込み指示がインタフェース部１１から入力されたり、または内部ＲＡＭ１３に所定量以上のデータが蓄積されると、フラッシュメモリ１６へ書込み処理を開始する。
【００６１】
ＣＰＵ１２は、まず、仮想ブロック３１をチェックし、未使用の空きとなる仮想ブロック３１が残っているか否かを判断する（ステップＳＴ３２、ＳＴ３３）。
そして、未使用の空きとなる仮想ブロック３１が残っていない場合、ＣＰＵ１２は、書込み処理とは別の指示により、仮想ブロック３１のデータ移動処理をアクセス制御部１４に指示する。
アクセス制御部１４は、図１０の処理により、仮想ブロック３１のデータをフラッシュメモリ１６の他のブロックへコピーする（ステップＳＴ３４）。
また、アクセス制御部１４は、当該仮想ブロック３１のデータを消去する（ステップＳＴ３５）。
これにより、アクセス制御部１４は、未使用の仮想ブロック３１を生成する。
【００６２】
未使用の仮想ブロック３１が残っている場合、または、未使用の仮想ブロック３１が生成されると、ＣＰＵ１２は、仮想ブロック３１への書込みデータの書込み処理を開始する。
ＣＰＵ１２は、まず、未使用の仮想ブロック３１を選択し、選択した仮想ブロック３１へのデータ書込みをアクセス制御部１４に指示する（ステップＳＴ３６）。
アクセス制御部１４による仮想ブロック３１への書込み処理が終了すると、ＣＰＵ１２は、ホスト装置２へ書込み完了を通知する（ステップＳＴ３７）。
ＣＰＵ１２は、インタフェース部１１からホスト装置２へ書込み完了通知を送信する。
【００６３】
なお、図１１の仮想ブロック３２への書込み処理を実行するためには、原則、複数の仮想ブロック３１が予め準備されている必要がある。
この場合、ＣＰＵ１２は、たとえばフラッシュメモリ１６のすべてのブロックについて仮想ブロック３１を設定すればよい。
これにより、書込みデータの書込み処理では、アクセス制御部１４は、フラッシュメモリ１６の約半分の容量の仮想ブロック３１について順番に且つ高速に大量のデータを書き込むことができる。
また、アクセス制御部１４は、必要に応じて適宜、図１０の未使用の仮想ブロック３１の生成処理を実行することにより、データロストを避けつつ、データの書込み速度の向上を図ることができる。
【００６４】
以上のように、第２実施形態では、仮想ブロック３１へのデータ書込み完了により、フラッシュメモリ１６へのデータ書込み処理を終了する。
すなわち、フラッシュメモリ１６へのデータ書込み時の書き込み処理は、フラッシュメモリ１６に対する１回の書込み処理により終了する。
よって、第２実施形態では、フラッシュメモリ１６への書込みデータの書込み時間を短縮できる。
これに対して、第１実施形態では、仮想ブロック３１への書込みデータの書込み処理と、仮想ブロック３１からフラッシュメモリ１６の他のブロックへのデータ移動処理とをシーケンシャルに実施しているため、１つのデータについて２回の書込み処理が発生する。
【００６５】
上記各実施形態は、本発明の好適な実施形態の例であるが、本発明はこれに限定されるものではなく、発明の要旨を逸脱しない範囲において種々の変形または変更が可能である。
【００６６】
たとえば上記実施形態では、書込みデータの２ページについての２ビットのデータを多値化し、フラッシュメモリ１６に記憶させている。
この他にも例えば、フラッシュメモリ１６は、書込みデータの３ページ以上についての３ビット以上のデータを多値化し、フラッシュメモリ１６に記憶させてもよい。
この場合、制御部は、フラッシュメモリ１６の未使用のページに最初に書込まれる第１ページを組み合わせて仮想ブロック３１を準備し、書込みデータの書込み処理においては、この仮想ブロック３１に対してデータを書き込めばよい。
【００６７】
上記実施形態では、ＣＰＵ１２などの制御部は、仮想ブロック３１を用いて、書込みデータの書込み処理を実行している。
この他にも例えば、制御部は、仮想ブロック３１によらずに、フラッシュメモリ１６の未使用のページを個別に選択し、選択した当該ページに対して、１ページ分の書込みデータを書き込んでもよい。
【００６８】
上記実施形態では、書込みデータを仮想ブロック３１へ書き込む場合、制御部は、仮想ブロック３１の各ページとともに多値化される他のページの書込みデータが所定の固定値（たとえば１）であるとしてデータを多値化している。
この他にも例えば、制御部は、仮想ブロック３１の各ページとともに多値化される他のページの書込みデータが任意の値であるとしてデータを多値化してもよい。
さらに他にも例えば、制御部は、仮想ブロック３１の各ページに対応するフラッシュメモリ１６のページに、多値化処理していない１ビットのデータを書き込んでもよい。
【００６９】
上記実施形態の記憶装置１は、フラッシュメモリ１６を有し、このフラッシュメモリ１６に書込みデータを書き込んで保持する。
この他にも例えば、記憶装置１は、ＵＶ−ＥＰＲＯＭ、ＥＥＰＲＯＭなどの不揮発性メモリを有し、これらの不揮発性メモリにデータを書き込んで保持してもよい。
また、記憶装置１は、ＲＡＭなどの揮発性メモリを有し、この揮発性メモリにデータを書き込んでもよい。
【００７０】
上記実施形態の記憶装置１は、カード型の記憶装置１である。
この他にも例えば、記憶装置１は、ＵＳＢメモリ、ＳＳＤ、ｅＭＭＣなどの内蔵型の記憶モジュールなどであってもよい。ｅＭＭＣには、ブート可能な記憶モジュールがある。
【００７１】
上記実施形態のホスト装置２は、たとえばコンピュータ装置である。
この他にも例えば、ホスト装置２は、携帯電話機、電子機器などであってもよい。
【符号の説明】
【００７２】
１・・・記憶装置、１２・・・ＣＰＵ（制御部）、１４・・・アクセス制御部（制御部）、１６・・・フラッシュメモリ（メモリ）、３１・・・仮想ブロック、Ｐ（１）〜Ｐ（ｎ）・・・フラッシュメモリのページ、ＢＬＫ（１）〜ＢＬＫ（ｍ）・・・フラッシュメモリのブロック
【図１】
0005556189.tif 000002
【図２】
0005556189.tif 000003
【図３】
0005556189.tif 000004
【図４】
0005556189.tif 000005
【図５】
0005556189.tif 000006
【図６】
0005556189.tif 000007
【図７】
0005556189.tif 000008
【図８】
0005556189.tif 000009
【図９】
0005556189.tif 000010
【図１０】
0005556189.tif 000011
【図１１】
0005556189.tif 000012