(57)【要約】【課題】ホスト装置が不揮発性メモリの物理的な状態を把握して、少ないバッファサイズで複数のファイルを交互に高速に書き込むことが可能な不揮発性記憶装置、ホスト装置および不揮発性記憶システムを提供する。【解決手段】不揮発性記憶システム１０００では、データの書き込み順を考慮したアロケーションユニットを設定し、そのアロケーションユニット単位でアドレス変換などのメモリ領域の管理を行う。そして、不揮発性記憶システム１０００では、不揮発性記憶装置１とホスト装置２とが連続書込アロケーションユニット情報を元に不揮発性メモリの物理アロケーションユニットの状態を管理し、当該物理アロケーションユニットの状態に基づいて書き込みを制御するため、高速なデータの書込みが可能となる。【選択図】図１
2011095853.tif 000002
【特許請求の範囲】
【請求項１】
ホスト装置と通信することができるように接続されており、前記ホスト装置から発行されるコマンドに従ってデータの書き込みおよび／または読み出しを行う不揮発性記憶装置であって、
データの書き込みおよび読み出し単位である物理ページを複数含む物理ブロックであって、データの消去単位である物理ブロックを複数含む、１または複数の不揮発性メモリと、
前記不揮発性メモリに対してデータの書き込みおよび／または読み取り制御を行うメモリコントローラ部と、
前記ホスト装置とコマンドおよび／またはデータの送受信を行うホストインターフェース部と、
を備え、
前記メモリコントローラ部は、
論理アドレス空間に含まれ、前記物理ブロックの整数倍のサイズである論理アロケーションユニットと、物理アドレス空間に含まれ、前記物理ブロックの整数倍のサイズである物理アロケーションユニットと、を対応付けることにより、アドレス管理を行い、前記ホスト装置から発行される書き込みおよび／または読み出しコマンドに含まれる論理アドレスを、前記論理アロケーションユニットおよび前記物理アロケーションユニットの対応付けに基づいて、物理アドレスに変換するメモリ管理部と、
エントリ毎に、前記論理アロケーションユニットを識別する情報である論理アロケーションユニット番号と、前記物理アロケーションユニット内における次にデータを書き込むアドレスを示す情報である次書込アドレスと、当該エントリが有効であるか否かを示す有効フラグと、を含む連続書込アロケーションユニット情報を保持するための記憶領域を備え、前記ホストインターフェース部が、前記ホスト装置から、前記論理アロケーションユニット番号を指定する連続書込アロケーションユニット指定コマンドを受信すると、当該コマンドにより指定される前記論理アロケーションユニット番号を、当該コマンドで指定される前記連続書込アロケーションユニット情報のエントリに登録し、前記連続書込アロケーションユニット情報に含まれる当該エントリの有効フラグを“有効”とする連続書込アロケーションユニット管理部と、
を備える、
不揮発性記憶装置。
【請求項２】
前記メモリ管理部は、前記ホストインターフェース部が、前記ホスト装置から連続書込アロケーションユニット情報読出コマンドを受信すると、前記連続書込アロケーションユニット情報を前記ホスト装置へ送信する、
請求項１に記載の不揮発性記憶装置。
【請求項３】
前記次書込アドレスの管理単位は、前記ホスト装置と前記不揮発性記憶装置がデータ転送を行う単位であるセクタの整数倍のサイズである、
請求項１または２に記載の不揮発性記憶装置。
【請求項４】
前記次書込アドレスの単位は、前記不揮発性記憶装置の備える不揮発性メモリの物理ページのサイズである、
請求項１または２に記載の不揮発性記憶装置。
【請求項５】
前記次書込アドレスの単位は、前記ホスト装置が前記不揮発性記憶装置のファイルを管理するファイルシステムのクラスタのサイズである、
請求項１または２に記載の不揮発性記憶装置。
【請求項６】
前記連続書込アロケーションユニット管理部は、前記ホストインターフェース部が、前記ホスト装置から、前記有効フラグが“有効”を示すエントリに登録されている前記論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが前記次書込アドレスに合致する場合は、当該書き込みコマンドにより書き込まれるデータサイズに基づいて前記次書込アドレスを更新する、
請求項１から５のいずれかに記載の不揮発性記憶装置。
【請求項７】
前記連続書込アロケーションユニット管理部は、前記ホストインターフェース部が、前記ホスト装置から、前記有効フラグが“有効”を示すエントリに登録されている前記論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが前記次書込アドレスに合致し、当該書き込みコマンドで指定された書き込みサイズが前記次書込アドレスの管理単位の整数倍と一致する場合は、当該書き込みコマンドにより書き込まれるデータサイズに基づいて前記次書込アドレスを更新する、
請求項１から５のいずれかに記載の不揮発性記憶装置。
【請求項８】
前記連続書込アロケーションユニット管理部は、前記ホストインターフェース部が、前記ホスト装置から、前記有効フラグが“有効”を示すエントリに登録されている前記論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが前記次書込アドレスに合致しない場合は、前記エントリの前記有効フラグを“無効”に更新する、
請求項１から７のいずれかに記載の不揮発性記憶装置。
【請求項９】
前記連続書込アロケーションユニット管理部は、前記ホストインターフェース部が、前記ホスト装置から、前記有効フラグが“有効”を示すエントリに登録されている前記論理アロケーションユニットの全体または一部を消去対象として含む消去処理を指示するコマンドを受信した場合、前記消去処理が完了すると、前記エントリの前記有効フラグを“無効”に更新する、
請求項１から８のいずれかに記載の不揮発性記憶装置。
【請求項１０】
前記連続書込アロケーションユニット管理部は、前記ホストインターフェース部が、前記ホスト装置から、前記有効フラグが“有効”を示すエントリに登録されている前記論理アロケーションユニットへの書込みを指示するコマンドを受信した場合、当該コマンドによる書込み処理により前記論理アロケーションユニットの書込み可能な領域が所定サイズ未満になると、前記エントリの前記有効フラグを“無効”に更新する、
請求項１から９のいずれかに記載の不揮発性記憶装置。
【請求項１１】
前記メモリコントローラ部は、前記連続書込アロケーションユニット指定コマンドを受信すると、前記連続書込アロケーションユニット情報の更新が完了するまで前記ホスト装置へビジー状態を通知する、
請求項１から１０のいずれかに記載の不揮発性記憶装置。
【請求項１２】
前記メモリコントローラ部は、前記連続書込アロケーションユニット指定コマンドの引数に含まれるエントリ番号と論理アロケーションユニット番号とに基づいて、前記連続書込アロケーションユニット情報を更新する、
請求項１から１１のいずれかに記載の不揮発性記憶装置。
【請求項１３】
前記メモリコントローラ部は、前記連続書込アロケーションユニット指定コマンドと共に送られるデータに含まれるエントリ番号と論理アロケーションユニット番号とに基づいて前記連続書込アロケーションユニット情報を更新する、
請求項１から１１のいずれかに記載の不揮発性記憶装置。
【請求項１４】
前記メモリコントローラ部は、前記連続書込アロケーションユニット情報読み出しコマンドを受信すると、当該コマンドの引数に含まれるエントリ番号の示す前記連続書込アロケーションユニット情報のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスを当該コマンドへの応答で返信する、
請求項１から１３のいずれかに記載の不揮発性記憶装置。
【請求項１５】
前記メモリコントローラ部は、前記連続書込アロケーションユニット情報読み出しコマンドを受信すると、前記ホスト装置へ応答を返すと共に、当該コマンドの引数に含まれるエントリ番号の示す前記連続書込アロケーションユニット情報のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスをデータとして返信する、
請求項１から１３のいずれかに記載の不揮発性記憶装置。
【請求項１６】
前記メモリコントローラ部は、前記連続書込アロケーションユニット情報読み出しコマンドを受信すると、前記ホスト装置へ応答を返すと共に、前記連続書込アロケーションユニット情報の複数のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスをデータとして返信する、
請求項１から１３のいずれかに記載の不揮発性記憶装置。
【請求項１７】
前記メモリコントローラ部は、前記連続書込アロケーションユニット情報を更新すると、当該更新した連続書込アロケーションユニット情報を前記不揮発性メモリの所定の領域に書き込み、前記不揮発性記憶装置の電源投入時に前記不揮発性メモリの所定の領域に書き込んだ前記連続書込アロケーションユニット情報を読み出して前記メモリ管理部の記憶領域に書き込む、
請求項１から１６のいずれかに記載の不揮発性記憶装置。
【請求項１８】
請求項１から１７のいずれかに記載の不揮発性記憶装置と通信することができるように接続されており、前記不揮発性記憶装置へコマンドを発行してデータの書き込みおよび／または読み出しを行うホスト装置であって、
前記不揮発性記憶装置から読み出した連続書込アロケーションユニット情報に有効フラグが“有効”を示すエントリがある場合は、前記有効なエントリに登録されている前記論理アロケーションユニットと前記次書込みアドレスに基づいて、書込みアドレスを決定し、前記連続書込アロケーションユニット情報に有効フラグが“有効”を示すエントリが無い場合は、ファイルシステム情報に基づいて未書込みの論理アロケーションユニットを検索して書き込みアドレスとすると共に、前記検索した未書き込みの論理アロケーションユニットを連続書込アロケーションユニットとして、前記不揮発性記憶装置へ指定する、
ホスト装置。
【請求項１９】
請求項１から１７のいずれかに記載の不揮発性記憶装置と、
請求項１８に記載のホスト装置と、
を備える不揮発性記憶システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ホスト装置の命令に応じて不揮発性メモリへのデータの書き込みおよび読み出しを行う、不揮発性メモリを備えた不揮発性記憶装置、該不揮発性記憶装置と接続して不揮発性メモリへのデータの書き込みおよび読み出しを行うホスト装置、および、該ホスト装置と不揮発性記憶装置を含んで構成される不揮発性記憶システムに関する。
【背景技術】
【０００２】
近年、不揮発性メモリを用いた不揮発性記憶装置の記憶容量が増加し動画記録用途への応用が広がっている。
このような記憶装置では、不揮発性メモリとしてＮＡＮＤフラッシュメモリが多く使われている。ＮＡＮＤフラッシュメモリは、ページ単位で書き込みや読み出しを行い、ブロック単位で一括消去を行うデバイスである。ＮＡＮＤフラッシュメモリは、微細化により仕様が頻繁に変更されている。このため、ＮＡＮＤフラッシュメモリ仕様の変化によらず、常に、ホスト装置が同一のインタフェースでデータを読み書きできるように、不揮発性メモリとメモリコントローラ部とを搭載した不揮発性記憶装置が増えている。このような不揮発性記憶装置では、ホスト装置が発行する読み出しおよび書き込みコマンドに含まれる論理アドレスを、ＮＡＮＤフラッシュメモリのブロックやページ位置を示す物理アドレスに変換してデータの読み出しや書き込みを行う、いわゆる「アドレス変換処理」をメモリコントローラ部が行っている。従って、ホスト装置では、ＮＡＮＤフラッシュメモリの仕様を気にせず、論理アドレス空間上でファイルシステム情報に基づいてメモリ領域を管理してデータの読み書きを行えばよく、制御が容易となる。
【０００３】
ところで、ＮＡＮＤフラッシュメモリでは、一度データを書き込んだページを上書きするためには、そのページを含むブロックを消去する必要がある。このような場合、上書きするデータおよび元のデータが存在するブロック中の有効なデータを別のブロックにコピーした後、元のブロックの消去を行うため、ホスト装置にとっては書き込み性能が低下することになる。従って、ＮＡＮＤフラッシュメモリに対しては、ブロック内のページにできるだけ連続的にデータを追記する書き込みを行うのが最も効率がよい。
特許文献１には、ファイルシステム上で複数のブロックをまとめてユニットとして管理し、リアルタイム性が要求されるデータは、空きユニットに書き込むことで、高速な書き込みを実現する技術が開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００５−０５０３８３
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、特許文献１に開示された従来技術では、以下のような課題がある。すなわち、不揮発性記憶装置内のメモリコントローラ部がアドレス変換処理を行うため、ホスト装置は、ＮＡＮＤフラッシュメモリのブロックやページの実際の書き込み状態を知ることはできない。
例えば、不揮発性記憶装置にデータの書き込みを繰り返した後、ファイルシステム上で論理フォーマット処理を行い、データをすべて消去した場合、ＮＡＮＤフラッシュメモリのブロック、ページには、データが存在していることがある。従って、ファイルシステム上で空きユニットと判定される領域にデータを書き込んだ場合でもデータのコピー処理やブロックの消去処理が発生して書き込み性能が低下するという課題がある。
また、近年では、不揮発性記憶装置に動画を記録する機器が増加しており、不揮発性記憶装置に対して複数の動画を異なるファイルとして記録することが考えられる。このような場合、データは、論理アドレス空間上で離散的な位置に交互に記録されることになるが、特許文献１に開示された従来技術では、ユニット単位でデータを連続に書き込むため、ホスト装置では、（記録するファイル数）×（ユニットサイズ）に相当する容量のバッファを持つ必要がある。特に、ユニットサイズは、物理的なブロックサイズに依存し、ＮＡＮＤフラッシュメモリでは、微細化に伴いブロックサイズが大きくなる傾向にあるため、ホスト装置の備えるバッファサイズは、ブロックサイズ（ユニットサイズ）に比例して増大するという課題がある。
【０００６】
本発明は、以上の問題点を解決し、ホスト装置が不揮発性メモリの物理的な状態を把握して、少ないバッファサイズで複数のファイルを交互に高速に書き込むことが可能な不揮発性記憶装置、ホスト装置および不揮発性記憶システムを提供することを目的とする。
【課題を解決するための手段】
【０００７】
第１の発明は、ホスト装置と通信することができるように接続されており、ホスト装置から発行されるコマンドに従ってデータの書き込みおよび／または読み出しを行う不揮発性記憶装置であって、１または複数の不揮発性メモリと、メモリコントローラ部と、ホストインターフェース部と、を備える。
複数の不揮発性メモリは、データの書き込みおよび読み出し単位である物理ページを複数含む物理ブロックであって、データの消去単位である物理ブロックを複数含む。メモリコントローラ部は、不揮発性メモリに対してデータの書き込みおよび／または読み取り制御を行う。ホストインターフェース部は、ホスト装置とコマンドおよび／またはデータの送受信を行う。
メモリコントローラ部は、メモリ管理部と、連続書込アロケーションユニット管理部と、を備える。
【０００８】
メモリ管理部は、論理アドレス空間に含まれ、物理ブロックの整数倍のサイズである論理アロケーションユニットと、物理アドレス空間に含まれ、物理ブロックの整数倍のサイズである物理アロケーションユニットと、を対応付けることにより、アドレス管理を行い、ホスト装置から発行される書き込みおよび／または読み出しコマンドに含まれる論理アドレスを、論理アロケーションユニットおよび物理アロケーションユニットの対応付けに基づいて、物理アドレスに変換する。
連続書込アロケーションユニット管理部は、エントリ毎に、論理アロケーションユニットを識別する情報である論理アロケーションユニット番号と、物理アロケーションユニット内における次にデータを書き込むアドレスを示す情報である次書込アドレスと、当該エントリが有効であるか否かを示す有効フラグと、を含む連続書込アロケーションユニット情報を保持するための記憶領域を備える。そして、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、論理アロケーションユニット番号を指定する連続書込アロケーションユニット指定コマンドを受信すると、当該コマンドにより指定される論理アロケーションユニット番号を、当該コマンドで指定される連続書込アロケーションユニット情報のエントリに登録し、連続書込アロケーションユニット情報に含まれる当該エントリの有効フラグを“有効”とする。
【０００９】
この不揮発性記憶装置では、論理アドレス空間および物理アドレス空間において、複数の不揮発性メモリに並行してデータを書き込む場合をも考慮したアロケーションユニットを設定し、そのアロケーションユニット単位でアドレス変換などのメモリ領域の管理を行う。そして、この不揮発性記憶装置では、連続書込アロケーションユニット情報を元に不揮発性メモリの物理アロケーションユニットの状態を管理し、当該物理アロケーションユニットの状態に基づいて書き込みを制御することができるため、高速なデータの書込みが可能となる。
特に、この不揮発性記憶装置では、連続的に書き込むデータに対して、連続書込アロケーションユニット情報に基づいて、論理アロケーションユニット内の状況（データ記録状態）と物理アロケーションユニット内の状況（データ記録状態）とを一致させるように、容易に制御することができる。したがって、この不揮発性記憶装置をホスト装置とともに用いることで、ホスト装置が不揮発性メモリの物理的な状態を把握して、少ないバッファサイズで高速にデータを書き込むことが可能な不揮発性記憶システムも実現することができる。
【００１０】
なお、論理アロケーションユニットおよび物理アロケーションユニットのサイズは、次書込アドレスの管理単位の整数倍であることが好ましい。
第２の発明は、第１の発明であって、メモリ管理部は、ホストインターフェース部が、ホスト装置から連続書込アロケーションユニット情報読出コマンドを受信すると、連続書込アロケーションユニット情報をホスト装置へ送信する。
これにより、容易に、連続書込アロケーションユニット情報をホスト装置へ送信することができる。
第３の発明は、第１または第２の発明であって、次書込アドレスの管理単位は、ホスト装置と不揮発性記憶装置がデータ転送を行う単位であるセクタの整数倍のサイズである。
第４の発明は、第１または第２の発明であって、次書込アドレスの単位は、不揮発性記憶装置の備える不揮発性メモリの物理ページのサイズである。
【００１１】
第５の発明は、第１または第２の発明であって、次書込アドレスの単位は、ホスト装置が不揮発性記憶装置のファイルを管理するファイルシステムのクラスタのサイズである。
第６の発明は、第１から第５のいずれかの発明であって、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、有効フラグが“有効”を示すエントリに登録されている論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが次書込アドレスに合致する場合は、当該書き込みコマンドにより書き込まれるデータサイズに基づいて次書込アドレスを更新する。
これにより、論理アロケーションユニット内の状況（データ記録状態）と物理アロケーションユニット内の状況（データ記録状態）とを一致させることができる。
【００１２】
例えば、ホスト装置からの書き込みコマンドの書込みアドレスが０ｘ１０であり、書き込みデータサイズが次書込アドレスの管理単位である６４ＫＢであり、次書込アドレスが０ｘ１０である場合、この不揮発性記憶装置では、当該書き込みコマンドによるデータ書き込み処理を実行した後、次書込アドレスを、０ｘ１１（＝０ｘ１０＋０ｘ０１（次書込アドレスの管理単位分のデータサイズ（６４ＫＢ）に相当））に更新する。したがって、更新後においても、論理アロケーションユニット内の状況（データ記録状態）と物理アロケーションユニット内の状況（データ記録状態）とが一致する。なお、ホスト装置から指示される書き込みアドレス（例えば、書き込みコマンドにより指示される書き込みアドレス）が連続であれば、ホスト装置から指示されるデータの書き込みサイズと、次書込みアドレスの管理単位のサイズとが一致していなくてもよい。つまり、このような場合、不揮発性記憶装置では、正常なデータ書き込み処理が実行されていると判断し、当該エントリの次書込アドレスの更新処理を行うようにしてもよい。
【００１３】
第７の発明は、第１から第５のいずれかの発明であって、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、有効フラグが“有効”を示すエントリに登録されている論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが次書込アドレスに合致し、当該書き込みコマンドで指定された書き込みサイズが次書込アドレスの管理単位の整数倍と一致する場合は、当該書き込みコマンドにより書き込まれるデータサイズに基づいて次書込アドレスを更新する。
これにより、論理アロケーションユニット内の状況（データ記録状態）と物理アロケーションユニット内の状況（データ記録状態）とを一致させることができる。
例えば、ホスト装置からの書き込みコマンドの書込みアドレスが０ｘ１０であり、書き込みデータサイズが次書込アドレスの管理単位である６４ＫＢの２倍の１２８ＫＢであり、次書込アドレスが０ｘ１０である場合、この不揮発性記憶装置では、当該書き込みコマンドによるデータ書き込み処理を実行した後、次書込アドレスを、０ｘ１２（＝０ｘ１０＋０ｘ０２（次書込アドレスの管理単位２個分のデータサイズ（６４ＫＢ×２）に相当））に更新する。したがって、更新後においても、論理アロケーションユニット内の状況（データ記録状態）と物理アロケーションユニット内の状況（データ記録状態）とが一致する。
【００１４】
第８の発明は、第１から第７のいずれかの発明であって、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、有効フラグが“有効”を示すエントリに登録されている論理アロケーションユニットへの書込みを指示する書き込みコマンドを受信した場合であって、当該書き込みコマンドで指定された書込みアドレスが次書込アドレスに合致しない場合は、エントリの有効フラグを“無効”に更新する。
これにより、この不揮発性記憶装置では、論理アロケーションユニット内の状況（データ記録状態）と物理アロケーションユニット内の状況（データ記録状態）とが一致していないエントリを使用することがない。
第９の発明は、第１から第８のいずれかの発明であって、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、有効フラグが“有効”を示すエントリに登録されている論理アロケーションユニットの全部または一部を消去対象として含む消去処理を指示するコマンドを受信した場合、消去処理が完了すると、エントリの有効フラグを“無効”に更新する。
【００１５】
これにより、この不揮発性記憶装置では、論理アロケーションユニット内の状況（データ記録状態）と物理アロケーションユニット内の状況（データ記録状態）とが一致していないエントリを使用することがない。
第１０の発明は、第１から第９のいずれかの発明であって、連続書込アロケーションユニット管理部は、ホストインターフェース部が、ホスト装置から、有効フラグが“有効”を示すエントリに登録されている論理アロケーションユニットへの書込みを指示するコマンドを受信した場合、当該コマンドによる書込み処理により論理アロケーションユニットの書込み可能な領域が所定サイズ未満になると、エントリの有効フラグを“無効”に更新する。
第１１の発明は、第１から第１０のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット指定コマンドを受信すると、連続書込アロケーションユニット情報の更新が完了するまでホスト装置へビジー状態を通知する。
【００１６】
第１２の発明は、第１から第１１のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット指定コマンドの引数に含まれるエントリ番号と論理アロケーションユニット番号とに基づいて、連続書込アロケーションユニット情報を更新する。
第１３の発明は、第１から第１１のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット指定コマンドと共に送られるデータに含まれるエントリ番号と論理アロケーションユニット番号とに基づいて連続書込アロケーションユニット情報を更新する。
第１４の発明は、第１から第１３のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット情報読み出しコマンドを受信すると、当該コマンドの引数に含まれるエントリ番号の示す連続書込アロケーションユニット情報のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスを当該コマンドへの応答で返信する。
【００１７】
第１５の発明は、第１から第１３のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット情報読み出しコマンドを受信すると、ホスト装置へ応答を返すと共に、当該コマンドの引数に含まれるエントリ番号の示す連続書込アロケーションユニット情報のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスをデータとして返信する。
第１６の発明は、第１から第１３のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット情報読み出しコマンドを受信すると、ホスト装置へ応答を返すと共に、連続書込アロケーションユニット情報の複数のエントリに含まれる有効フラグ、論理アロケーションユニット番号および次書込アドレスをデータとして返信する。
【００１８】
第１７の発明は、第１から第１６のいずれかの発明であって、メモリコントローラ部は、連続書込アロケーションユニット情報を更新すると、当該更新した連続書込アロケーションユニット情報を不揮発性メモリの所定の領域に書き込み、不揮発性記憶装置の電源投入時に不揮発性メモリの所定の領域に書き込んだ連続書込アロケーションユニット情報を読み出してメモリ管理部の記憶領域に書き込む。
この不揮発性記憶装置では、連続書込アロケーションユニット情報を不揮発性メモリの所定の領域に書き込むので、不揮発性記憶装置の電源がＯＦＦになっても連続書込アロケーションユニット情報を保持することができる。したがって、この不揮発性記憶装置では、不揮発性記憶装置の電源をＯＦＦした後に、再度電源投入した場合でも、電源をＯＦＦする前の連続書込アロケーションユニット情報を取得することができ、取得した情報に基づいて書き込みを行うことができる。
【００１９】
第１８の発明は、第１から第１７のいずれかの発明である不揮発性記憶装置と通信することができるように接続されており、不揮発性記憶装置へコマンドを発行してデータの書き込みおよび／または読み出しを行うホスト装置である。このホスト装置は、不揮発性記憶装置から読み出した連続書込アロケーションユニット情報に有効フラグが“有効”を示すエントリがある場合は、有効なエントリに登録されている論理アロケーションユニットと次書込みアドレスに基づいて、書込みアドレスを決定する。一方、このホスト装置は、連続書込アロケーションユニット情報に有効フラグが“有効”を示すエントリが無い場合は、ファイルシステム情報に基づいて未書込みの論理アロケーションユニットを検索して書き込みアドレスとすると共に、検索した未書き込みの論理アロケーションユニットを連続書込アロケーションユニットとして、不揮発性記憶装置へ指定する。
【００２０】
このホスト装置では、連続的に書き込むデータに対して、連続書込アロケーションユニット情報に基づいて、論理アロケーションユニット内の状況（データ記録状態）と物理アロケーションユニット内の状況（データ記録状態）とを一致させるように、不揮発性記憶装置の制御を行うことができる。したがって、このホスト装置では、不揮発性メモリの物理的な状態を把握して、少ないバッファサイズで高速にデータを書き込むことができる。
第１９の発明は、第１から第１７のいずれかの発明である不揮発性記憶装置と、第１８の発明であるホスト装置と、を備える不揮発性記憶システムである。
【発明の効果】
【００２１】
本発明によれば、ホスト装置が不揮発性メモリの物理的な状態を把握して、少ないバッファサイズで高速にデータを書き込むことが可能な不揮発性記憶装置、ホスト装置および不揮発性記憶システムを提供することができる。
【図面の簡単な説明】
【００２２】
【図１】第１実施形態に係る不揮発性記憶システム１００の概略構成図。
【図２】不揮発性メモリ１２の構成およびアロケーションユニットを説明するための図。
【図３】物理アロケーションユニットへのデータの書込み処理を説明するための図。
【図４】論理アドレス空間の物理アドレス空間への割付を説明するための図。
【図５】連続書込アロケーションユニット管理部１１５の動作を説明するための図。
【図６】連続書込アロケーションユニット管理部１１５の動作を説明するための図。
【図７】連続書込アロケーションユニット管理部１１５の動作を説明するための図。
【図８】連続書込アロケーションユニット管理部１１５の動作を説明するための図。
【図９】連続書込アロケーションユニット情報制御用コマンドを説明するための図。
【図１０】連続書込アロケーションユニット情報制御用コマンドを説明するための図。
【図１１】ホスト装置２の書き込み処理フローを説明するための図。
【発明を実施するための形態】
【００２３】
以下、本発明の実施形態について、図面を参照しながら説明する。
［第１実施形態］
＜１．１：不揮発性記憶システムの構成＞
図１は、本発明の実施形態に係る不揮発性記憶システム（メモリシステム）１０００の構成を示すブロック図である。
図１において、本実施形態に係る不揮発性記憶システム１０００は、不揮発性記憶装置１とホスト装置２とを備え、不揮発性記憶装置１とホスト装置２とは、バス３により接続されて、双方向に通信を行うことができる。
なお、以降の説明に用いる図面においては、本発明に関連しない構成要素については図示を省略している。また、本発明は、以下に示す実施形態に限定されないことは言うまでもない。
【００２４】
（１．１．１：不揮発性記憶装置）
不揮発性記憶装置１は、図１に示すように、メモリコントローラ部１１と、１以上の不揮発性メモリ１２とを備える。
メモリコントローラ部１１は、図１に示すように、ホストＩＦ部１１１と、メモリ管理部１１２と、データ制御部１１３と、を備える。
ホストＩＦ部１１１は、ホスト装置２とバス３を介して接続されており、ホスト装置２と通信を行う。ホストＩＦ部１１１は、ホスト装置２が発行したコマンドをバス３を介して受信すると、当該コマンドを解釈してホスト装置２へ返信する応答（レスポンス）を生成し、当該応答（レスポンス）を、バス３を介して、ホスト装置２に送信する。また、ホストＩＦ部１１１は、バス３を介して、ホスト装置２とデータの送受信を行う。
【００２５】
また、ホストＩＦ部１１１は、コマンドの解釈結果や、コマンドの引数等から取得した論理アドレスなどの情報を、メモリ管理部１１２およびデータ制御部１１３へ出力する。
メモリ管理部１１２は、不揮発性メモリ１２にデータを読み書きするための不揮発性メモリ１２のメモリ領域管理を行う。
メモリ管理部１１２は、不揮発性メモリ１２のメモリ領域管理を行うための情報を保持するＲＡＭやレジスタ、および、アドレス管理部１１４を備える。
アドレス管理部１１４は、ホスト装置２の発行するコマンドに含まれる論理アドレスと不揮発性メモリ１２上の物理アドレスとの対応付けを、後述するアロケーションユニット単位で管理する。
また、アドレス管理部１１４は、ホスト装置２の指示により、後述する連続書込アロケーションユニットを管理する連続書込アロケーションユニット管理部１１５を備える。
【００２６】
データ制御部１１３は、ホストＩＦ部１１１と不揮発性メモリ１２との間のデータの入出力を行うためのバッファＲＡＭを備えており、データ制御部１１３は、当該バッファＲＡＭを用いて、メモリ管理部１１２の指示に従い、不揮発性メモリ１２に対してデータの書き込み処理／読み出し処理を行う。
なお、メモリコントローラ部１１の各機能部は、その全部または一部を、ＬＳＩ等の半導体部品で構成してもよく、あるいは一部をソフトウェアで実現してもよい。
不揮発性メモリ１２は、図２（ａ）に示すように、消去単位である複数の物理ブロック１２０により構成され、各物理ブロック１２０は、データの書き込みおよび読み出し単位である複数のページ１２１により構成されている。不揮発性メモリ１２として、例えば、ＮＡＮＤフラッシュメモリが考えられる。
【００２７】
（１．１．２：ホスト装置）
ホスト装置２は、図１に示すように、ホスト装置２全体の制御を行うＣＰＵ２１と、ＲＯＭ２２と、ＲＡＭ２３と、記憶装置１とデータの送受信を行うためのバッファＲＡＭ２４と、記憶装置１とバス３を介してコマンド・応答やデータの送受信を行う記憶装置制御部２５とを備える。
記憶装置制御部２５は、不揮発性記憶装置１に対して後述するアロケーションユニット単位での書込み制御を行うメモリユニット制御部２６を備える。
なお、ホスト装置２の各機能部は、その全部または一部をＬＳＩ等の半導体部品で構成してもよく、あるいは一部をソフトウェアで実現してもよい。
（１．１．３：バス）
バス３は、例えば、不揮発性記憶装置１とホスト装置２とがコマンド・応答、データの送受信を行うための１以上の信号線の組により構成される。本実施形態に係る不揮発性記憶システム１０００において、バス３は、クロック信号ＣＬＫを伝送するためのクロックラインと、コマンド・応答信号ＣＭＤを伝送するためのコマンドラインと、データ信号ＤＡＴを伝送するためのデータ信号ラインと、を含んで構成される。なお、バス３のデータ信号ラインは、必ずしも１本である必要はなく、バス３が、複数のデータ信号ラインを含むものであってもよい。また、バス３は、コマンド・応答信号とデータ信号とが共通の信号線で多重化されて転送されるように構成にしてもよい。
【００２８】
＜１．２：不揮発性記憶システムの動作＞
以上のように構成された不揮発性記憶システム１０００の動作について、図面を参照しながら、以下、説明する。
（１．２．１：不揮発性メモリのデータ書き込み処理）
まず、不揮発性メモリ１２におけるデータ書き込み処理について、説明する。
図２（ａ）に示すように、不揮発性メモリ１２は、消去単位である複数の物理ブロック１２０により構成され、各物理ブロック１２０は、データの書き込みおよび読み出し単位である複数のページ１２１により構成されている。図２（ａ）では、1ブロックは、Ｎページで構成されている。より具体的には、物理ブロックのサイズは、例えば、５１２ＫＢであり、物理ページのサイズは、例えば、４ＫＢである。すなわち、不揮発性メモリ１２のデータの書き込みまたは読み出しは４ＫＢ単位で行われ、データの消去は５１２ＫＢ単位で行われることになる。不揮発性メモリ１２において、５１２ＫＢより小さい範囲のデータを消去する場合には、消去するデータ以外のデータを別の物理ブロックにコピーした後に、該消去データを含むブロックが消去される。
【００２９】
図２（ｂ）、（ｃ）は、メモリコントローラ部１１と複数の不揮発性メモリ１２との接続およびデータの書き込み順を説明するための図である。図２（ｂ）、（ｃ）では、ともに、２つの不揮発性メモリ１２がメモリコントローラ部１１と接続されているが、２つの不揮発性メモリ１２に対してデータを書き込む順が異なっている。
図２（ｂ）では、不揮発性メモリ１２内の各物理ブロック１２０には、Ｎページ分（Ｎは、自然数）の連続するデータが書き込まれる。
一方、図２（ｃ）では、２つの不揮発性メモリ１２内の２つの物理ブロック１２０に対して連続する２Ｎページ分のデータがページ単位で交互に書き込まれる。
すなわち、連続するデータを基にした消去単位は、図２（ｂ）では、１つの物理ブロック１２０であるのに対し、図２（ｃ）では、２つの物理ブロック１２０となる。
【００３０】
本実施形態に係る不揮発性記憶システム１０００では、不揮発性記憶装置１、ホスト装置２ともこの連続するデータを元にした消去単位をアロケーションユニット１２２として設定し、アロケーションユニット単位でアドレス変換などのメモリ領域の管理を行う。
なお、図２（ｃ）の場合は、２つの不揮発性メモリ１２に対して、並行して（連続する）データを書き込む場合を例に挙げたが、これに限定されることはなく、例えば、２＾Ｎ（Ｎは自然数）個の不揮発性メモリ１２に対して、並行して（連続する）データを書き込む場合であっても同様である。この場合、不揮発性記憶システム１０００では、２＾Ｎ個の物理ブロック１２０が消去単位となり、この消去単位を基準にして、アロケーションユニット１２２が設定される。
また、同一の不揮発性メモリ１２内の複数ブロックに並行してデータを書く場合や、さらに、同一の不揮発性メモリ１２内の複数ブロックおよび複数の不揮発性メモリに並行してデータを書く場合も、上記と同様の手法により、アロケーションユニット１２２を設定し、アロケーションユニット単位でアドレス変換などのメモリ領域の管理を行う。
【００３１】
以下の説明では、ホスト装置２で管理する論理アドレス空間上のアロケーションユニットを「論理アロケーションユニット」と呼び、不揮発性記憶装置１内で管理される、不揮発性メモリの物理アドレス空間上のアロケーションユニットを「物理アロケーションユニット」と呼ぶ。
図３（ａ）〜（ｃ）は、ある物理アロケーションユニットへのデータの書込み処理を説明する図である。
図３（ａ）は、物理アロケーションユニット１２２１において、物理ページが２Ｎページ存在しており、その２Ｎページのうちページ１〜４にデータが書き込まれている状態を示している。
≪データ追記処理≫
図３（ｂ）は、データを追記する場合の書き込み処理を説明するための図である。具体的には、図３（ｂ）は、ホスト装置２がページ４に書いたデータの次のアドレスからデータを追記する場合の書き込み処理を説明するための図である。図３（ｂ）に示すように、ホスト装置２がページ４に書いたデータの次のアドレスからデータを追記する場合、ページ５〜２Ｎまではデータが書かれていないため、メモリコントローラ部１１は、物理アロケーションユニット１２２１のページ５〜２Ｎへ逐次データを書き込む。
【００３２】
≪データ更新処理≫
一方、図３（ｃ）は、データを上書き更新する場合の書き込み処理を説明するための図である。具体的には、図３（ｃ）は、ホスト装置２がページ１、２に書いたデータを上書き更新する場合の書き込み処理を説明するための図である。図３（ｃ）に示すように、ホスト装置２がページ１、２に書いたデータを上書き更新する場合、以下の（１）〜（３）の処理が実行される。
（１）まず、メモリコントローラ部１１は、新たな物理アロケーションユニット１２２２に対して、ページ１、２に更新後のデータを書込む。
（２）その後、更新しないページ３、４のデータを物理アロケーションユニット１２２１から別の物理アロケーションユニットである物理アロケーションユニット１２２２へコピーする。
（３）その後、物理アロケーションユニット１２２１を消去し再利用可能な状態とする。
【００３３】
ここで、物理アロケーションユニット１２２１の消去は、実際には、物理アロケーションユニット１２２１を構成する１以上の物理ブロックを、不揮発性メモリ１２の備える消去コマンドを用いて消去することを意味する。そして、消去コマンドによる消去処理では、１以上の物理ブロックを一括して消去することも、逐次消去することも可能である。
以上のようにして、不揮発性記憶システム１０００では、不揮発性メモリ１２におけるデータ書き込み処理が実行される。
（１．２．２：論理アドレス空間と物理アドレス空間との対応）
次に、論理アドレス空間と物理アドレス空間との対応について、説明する。
図４は、本実施形態に係る不揮発性記憶装置１において、メモリコントローラ部１１内のアドレス管理部１１４が行う論理アドレス空間と物理アドレス空間との対応付けを説明する図である。
【００３４】
図４において、アドレス管理部１１４は、前述したアロケーションユニット単位で論理アドレス空間と物理アドレス空間との対応付けを行う。アロケーションユニットのサイズは、不揮発性記憶装置１内での不揮発性メモリ１２へのデータの書き込み順に依存して決まる。例えば、２つの５１２ＫＢの物理ブロックに交互にデータを書き込む場合は、アロケーションユニットのサイズは１ＭＢあるいはその整数倍（例えば、４ＭＢ）となる。ホスト装置２は、不揮発性記憶装置１に対してコマンドを発行してアロケーションユニットのサイズを取得した後に、不揮発性記憶装置１との間でデータの読み出しや書き込みを行う。このアロケーションユニットサイズは、メモリ管理部１１２内のレジスタやＲＡＭなどに保持されていてもよく、不揮発性メモリ１２の所定の領域に保持されていてもよい。なお、アロケーションユニットサイズは、不揮発性記憶装置毎に異なっていてもよく、あるいは、すべての不揮発性記憶装置で共通となるよう標準化してもよい。
【００３５】
物理アロケーションユニットの構成アルゴリズムは、不揮発性メモリの制御アルゴリズムに依存し様々な方法が可能である。たとえば、決まったアドレスの物理ブロック同士を組み合わせて物理アロケーションユニットを構成するようにしてもよく、あるいは任意の消去済み物理ブロックを組み合わせて物理アロケーションユニットを構成するようにしてもよい。
図４（ａ）に示すように、アドレス管理部１１４は、アロケーションユニットサイズに基づいて論理アドレス空間および物理アドレス空間をアロケーションユニット単位で分割して論理アロケーションユニット３０、物理アロケーションユニット３１の単位での対応付けを行う。
通常は、不揮発性記憶装置１内では、不良物理ブロックの発生やウェアレベリング用の予備の物理ブロックを持つため、論理アロケーションユニット数（ここではＭ個）より物理アロケーションユニット数のほうが多くなる。
【００３６】
図４（ａ）では、アドレス管理部１１４は、論理アロケーションユニット０を物理アロケーションユニット１に、論理アロケーションユニット（Ｍ−１）を物理アロケーションユニット３に対応付けて、論理アロケーションユニット０、Ｍ−１に書かれるデータを物理アロケーションユニット１、３に書き込んでいる。
また、メモリ管理部１１２は、この対応状態を図４（ｂ）に示すテーブルとして保持している。そして、アドレス管理部１１４は、図４（ｂ）に示すテーブルによりアドレス管理を行う。
図４（ｂ）では、論理アロケーションユニット番号０〜Ｍ−１のデータが書き込まれる物理アロケーションユニット番号が保持されている。なお、物理アロケーションユニット番号ＦＦＦＦは、論理アロケーションユニットに対応する物理アロケーションユニットが未割付であることを示している。
【００３７】
（１．２．３：連続書込アロケーションユニット）
図５は、本実施形態に係る不揮発性記憶装置１において、連続書込アロケーションユニット管理部１１５が管理する連続書込アロケーションユニット情報を説明する図である。
連続書込アロケーションユニットは、ホスト装置２がデータを連続的に記録する論理アロケーションユニットであり、ホスト装置２は、不揮発性記憶装置１に対して、コマンドを用いて該アロケーションユニットの指定を行う。
連続書込アロケーションユニット管理部１１５は、ホスト装置２による連続書込アロケーションユニット指定コマンドおよびその後の書き込みコマンドに従って、連続書込アロケーションユニット情報を更新する。
以下、図５〜図８を用いて連続書込アロケーションユニット管理部１１５の動作を説明する。
【００３８】
図５〜図８は、それぞれ、連続書込アロケーションユニット管理部１１５が管理する連続書込アロケーションユニット情報とその時の論理アロケーションユニットおよび物理アロケーションユニットの状態を示す図である。
図５（ａ）は、最初の状態を示す図である（この状態を「状態Ａ」という）。
図５（ｂ）は、エントリ１に新規登録するときの状態を示す図である（この状態を「状態Ｂ」という）。
図６（ａ）は、エントリ１に書き込むときの状態を示す図である（この状態を「状態Ｃ」という）。
図６（ｂ）は、エントリ１を追記するときの状態を示す図である（この状態を「状態Ｄ」という）。
【００３９】
図７（ａ）は、フォーマット（論理フォーマット）を行うときの状態を示す図である（この状態を「状態Ｅ」という）。
図７（ｂ）は、エントリ１を消去するときの状態を示す図である（この状態を「状態Ｆ」という）。
図８（ａ）は、領域フルであるときの状態を示す図である（この状態を「状態Ｇ」という）。
図８（ｂ）は、同じアドレスに上書きするときの状態を示す図である（この状態を「状態Ｈ」という）。
図５〜図８において、連続書込アロケーションユニット情報は、エントリ、有効フラグ、論理アロケーションユニット番号、次書込アドレスを含む。
【００４０】
「エントリ」は、連続書込アロケーションユニット管理部１１５が管理する連続書込アロケーションユニットの識別子である。連続書込アロケーションユニット管理部１１５の管理するエントリの数は、レジスタやＲＡＭなど不揮発性記憶装置１内のリソースで決まる１以上の任意の整数である。あるいは、不揮発性記憶装置１の備えるエントリ数を標準化してもよい。
「有効フラグ」は、該エントリに登録されている情報が有効かどうかを示す情報であり、例えば、１ビットのフラグであれば、“１”なら有効、“０”なら無効を示す。
「論理アロケーションユニット番号」は、連続書込アロケーションユニットとして登録されている論理アロケーションユニットの番号である。
「次書込アドレス」は、該論理アロケーションユニットにおいてデータ未書き込み領域の先頭を示している。ここで、次書込アドレスの管理単位は、不揮発性記憶装置１とホスト装置２がデータ転送を行う単位であるセクタ（例えば５１２バイト）や、不揮発性メモリ１２の物理ページサイズ（例えば４ＫＢ）、あるいはファイルシステムのクラスタサイズ（例えば３２ＫＢ）や、セクタの整数倍である所定の書込ユニット（例えば６４ＫＢや１２８ＫＢ）などを用いることが可能である。以降の説明では、次書込アドレスの管理単位を書込ユニット単位として説明する。
【００４１】
図５（ａ）において、エントリ３は、有効フラグが“有効”、論理アロケーションユニット番号が０ｘ１、次書き込みアドレスが０ｘ３０となっている。このとき、不揮発性記憶装置１内では、論理アロケーションユニット１が物理アロケーションユニットＡ＋２に割り付けられており、論理アロケーションユニット１、物理アロケーションユニットＡ＋２ともに、０〜２Ｆ番目の書込みユニットにデータが書き込まれており、０ｘ３０番目の書込ユニットから該物理アロケーションユニットの最終書込ユニットまではデータが未書き込みの状態になっている。
（１．２．４：連続書き込みアロケーションユニットの指定）
図５（ｂ）において、ホスト装置２がエントリ１に新たに論理アロケーションユニット番号０ｘ４０を指定すると、連続書込アロケーションユニット管理部１１５は、エントリ１の有効フラグを“有効”とし、論理アロケーションユニット番号に０ｘ４０、次書き込みアドレスに０ｘ０を格納する。このとき、不揮発性記憶装置１内では、論理アロケーションユニット０ｘ４０が物理アロケーションユニットＢに割り付けられ、論理アロケーションユニット０ｘ４０、物理アロケーションユニットＢともに、未書き込みの状態になっている。なお、不揮発性メモリ装置１内において、指定された論理アロケーションユニットにデータがある状態（例えば、論理フォーマット後のように、論理アドレス空間と物理アドレス空間とがミスマッチしている状態）になっている場合、不揮発性記憶システム１０００では、そのデータを無効とみなす。
【００４２】
さらに、図６（ａ）において、ホスト装置２が論理アロケーションユニット０ｘ４０の先頭から１６個の書込ユニット分のデータを書き込むと、メモリコントローラ部１１では、メモリ管理部１１２とデータ制御部１１３とが動作してデータを物理アロケーションユニットＢの先頭から１６個の書込ユニット分データを書き込む。そして、その後、連続書込アロケーションユニット管理部１１５は、エントリ１の次書込アドレスを０ｘ１０に更新する。なお、不揮発性記憶システム１０００において、ホスト装置から指示される書き込みアドレス（例えば、書き込みコマンドにより指示される書き込みアドレス）が連続であれば、ホスト装置から指示されるデータの書き込みサイズと、次書込みアドレスの管理単位のサイズとが一致していなくてもよい。つまり、このような場合、不揮発性記憶システム１０００において、正常なデータ書き込み処理が実行されていると判断し、上記のように、エントリの次書込アドレスの更新処理を行うようにしてもよい。
【００４３】
（１．２．５：連続書き込みアロケーションユニットへの追記）
さらに、図６（ｂ）において、ホスト装置２が論理アロケーションユニット０ｘ４０の０ｘ１０番目の書込ユニットから１１２個（０ｘ７０個）の書込ユニット分のデータを書き込むと、メモリコントローラ部１１では、メモリ管理部１１２とデータ制御部１１３とが動作してデータを物理アロケーションユニットＢの０ｘ１０番目の書込ユニットから１１２個（０ｘ７０個）の書込ユニット分データを書き込む。そして、その後、連続書込アロケーションユニット管理部１１５は、エントリ１の次書込アドレスを０ｘ８０（＝０ｘ１０＋０ｘ７０）に更新する。
このようにして、ホスト装置２が連続書込アロケーションユニットとして指定した論理アロケーションユニットに対して書き込みを行うと、該論理アロケーションユニット、および、該論理アロケーションユニットが割り付けられた物理アロケーションユニットにおいて、同じ書込ユニット位置に同じデータが書かれる。つまり、このように処理することで、不揮発性記憶システム１０００では、論理アロケーションユニット内の状況（データ記録状態）と、物理アロケーションユニット内の状況（データ記録状態）とが、一致することが保証される。
【００４４】
（１．２．６：論理フォーマット）
図７（ａ）は、ホスト装置２が不揮発性記憶装置１に対して論理フォーマットを行った後の連続書込アロケーションユニット情報および論理アロケーションユニット、物理アロケーションユニットの状態を説明する図である。
図７（ａ）において、ホスト装置２が論理フォーマットを行うと、ファイルシステム上の操作により論理アドレス空間上の所定の領域が未書き込み領域となる。ここで、「所定の領域」とは、不揮発性記憶装置１の記憶容量や、ホスト装置２が用いるファイルシステムの種類やパラメータによって決まる領域である。
このようなフォーマット処理は、不揮発性記憶装置１では、ファイルシステムを管理する領域への書き込み処理として認識され、その他の領域のデータの状態は変化しない。
【００４５】
したがって、連続書込アロケーションユニットのエントリ１に登録された論理アロケーションユニット番号、次書込アドレスおよび有効フラグは、図６（ｂ）に示す状態（状態Ｄ）と同じ状態のままである。つまり、論理アドレス空間上では、論理アロケーションユニット０ｘ４０が未書込状態であるのに対して、対応する物理アロケーションユニットＢでは、０〜７Ｆ番目の書込ユニットまでデータが書かれた状態となっている。
したがって、ホスト装置２が論理アロケーションユニット０ｘ４０にデータを書きこむ場合に、０ｘ８０番目の書込ユニットから書き込みを行えば、図３（ａ）や図６（ｂ）（状態Ｄ）のような追記書込みが行われる。この場合、データの書き込み以外の処理が発生せず、高速な書き込みが可能となる。
一方、例えば、論理アロケーションユニット０ｘ４０の先頭書込ユニットからデータの書き込みを行うと、図３（ｃ）で説明したような書き込みと消去が不揮発性記憶装置１の中で行われる。このとき、書き込むデータのサイズやアドレスによってはデータのコピーも発生するため、データ書き込み性能が低下する。つまり、このようなデータ書き込み処理を行うと、いわゆる巻き込み退避処理（集約処理）の発生により、データ書き込み性能が低下する。
【００４６】
（１．２．７：連続書込アロケーションユニットの消去）
図７（ｂ）は、ホスト装置２が論理アロケーションユニット０ｘ４０を消去コマンドによって消去した後の連続書込アロケーションユニット情報および論理アロケーションユニット、物理アロケーションユニットの状態を説明する図である。
図７（ｂ）において、ホスト装置２が論理アロケーションユニット０ｘ４０の消去を行うと、連続書込アロケーションユニット管理部１１５は、消去処理が連続書込アロケーションユニット情報のエントリ１に“有効”として登録されている論理アロケーションユニットの消去であることを認識して、エントリ１の有効フラグを“無効”に変更する。なお、論理アロケーションユニット０ｘ４０の一部のデータを消去した場合もエントリ１の有効フラグを“無効”に変更する。
【００４７】
また、メモリコントローラ部１１では、メモリ管理部１１２が物理アロケーションユニットＢの消去処理を行い、アドレス管理部１１４が論理アロケーションユニット０ｘ４０と物理アロケーションユニットＢとの対応付けを解消する。これにより、論理アロケーションユニット０ｘ４０、および、物理アロケーションユニットＢは、ともにデータが未書き込みの状態となる。また、アドレス管理部１１４は、論理アロケーションユニット０ｘ４０に対応する物理アロケーションユニットを未割付の状態にする。これにより、論理アロケーションユニット０ｘ４０は、対応する物理アロケーションユニットが割り付けられていない状態（未割付の状態）となる。
以上の処理を行うことで、不揮発性記憶システム１０００では、連続書込アロケーションユニット情報のエントリの有効フラグが”無効”である場合、該論理アロケーションユニットと物理アロケーションユニットとの状態の一致が保証されていないことを認識することができる。
（１．２．８：連続書込アロケーションユニットの無効化）
図８（ａ）、（ｂ）は、連続書込アロケーションユニット管理部１１５が、連続書込アロケーションユニット情報に保持している有効なエントリを無効化する処理を説明する図である。
【００４８】
図８（ａ）において、エントリ０に登録されている論理アロケーションユニット０ｘ１００に対して、ホスト装置２が論理アロケーションユニット内の最終書込ユニットまでデータを書き込むと、不揮発性記憶装置１内では、物理アロケーションユニットＣ＋２の最終書込ユニットまでデータが書き込まれ、該論理アロケーションユニット、および、該物理アロケーションユニットは、ともにこれ以上データを追記できない状態となる。このようなこれ以上データを追記できない状態となった場合、連続書込アロケーションユニット管理部１１５は、エントリ０の有効フラグを"無効“にする。
また、図８（ｂ）は、エントリ３に登録されている論理アロケーションユニット０ｘ１のデータを上書きする場合を示す。
図５（ａ）（状態Ａ）では、論理アロケーションユニット０ｘ１は、物理アロケーションユニットＡ＋２に割り付けられ、０〜２Ｆ番目の書込ユニットまでデータが書き込まれていた。
【００４９】
ここで、例えば、ホスト装置２が論理アロケーションユニット０ｘ１の０〜２Ｆ番目の書込ユニットの一部または全てのデータを上書きした場合、メモリコントローラ部１１内のメモリ管理部１１２とデータ制御部１１３とが動作して、図３（ｃ）で説明したような書き込みと消去とが不揮発性記憶装置１の中で行われ、論理アロケーションユニット０ｘ１が新たに物理アロケーションユニットＡ＋４に割り付けられる（図８（ｂ）の右図の状態）。このとき、更新データのサイズやアドレスによっては、元の物理アロケーションユニットＡ＋２からデータのコピーも発生する。このような書き込み処理が実行された場合、連続書込アロケーションユニット管理部１１５は、連続書込アロケーションユニット情報に登録された論理アロケーションユニットに対して、次書込アドレス以外への書き込み（連続書込アロケーションユニット情報の「次書込アドレス」に相当する物理アドレス以外の物理アドレスへの書き込み）が発生したことを認識して、エントリ３の有効フラグを“無効”にする。
【００５０】
なお、この「連続書込アロケーションユニット情報に登録された論理アロケーションユニットに対して次書込アドレス以外への書き込み」に加えて、書き込みデータサイズが次書き込みアドレスの管理単位（この場合書き込みユニット）のサイズ未満の場合も有効フラグを“無効”としてもよい。例えば、次書き込みアドレスの管理単位が、書き込みユニットのサイズであり、６４ＫＢである場合に、書き込みデータサイズが３２ＫＢであると、当該３２ＫＢのデータを書き込んだ後の論理アロケーションユニット内の状況（データ記録状態）と、物理アロケーションユニット内の状況（データ記録状態）とが、一致しなくなる。このため、書き込みデータサイズが次書き込みアドレスの管理単位（この場合書き込みユニット）のサイズ未満の場合、有効フラグを“無効”にすることが好ましい。
また、ホスト装置２から不揮発性記憶装置１に対して発行される書き込みコマンドにより指定された、有効なエントリの論理アロケーションユニット内の書込アドレスと、当該エントリの論理アロケーションユニット内の書込アドレス（連続書込アロケーションユニット情報の「次書込アドレス」）と、が不一致である場合、当該エントリの有効フラグを“無効”としてもよい。
【００５１】
例えば、図８（ａ）の場合において、ホスト装置２から不揮発性記憶装置１に対して、エントリ３（有効なエントリ）（論理アロケーションユニット番号０ｘ１）に次書込アドレスを０ｘ２０として、データ書き込み処理を指示する書き込みコマンドが発行されたとする。この場合、図８（ａ）に示すように、エントリ３の「次書込アドレス」は、０ｘ３０であり、０ｘ２０と一致しない。したがって、この場合、当該エントリ（エントリ３）の有効フラグを“無効”としてもよい。このようにすることで、不揮発性記憶システム１０００では、不正規なコマンド（例えば、間違った書込アドレスを指定する書込コマンド）が発行された場合等にも対応することができる。なお、不揮発性記憶システム１０００において、以下の基準により、エントリの有効フラグを“無効”とするようにしてもよい。すなわち、
（１）書込みコマンドの指示するアドレスと次書込みアドレスとが不一致の場合、常に、エントリの有効フラグを“無効”とする。
（２）（書込みコマンドの指示するアドレス）＜（次書込みアドレス）の場合（つまり、データを上書きする場合）のみ、エントリの有効フラグを“無効”とし、それ以外の場合については、エントリの有効フラグを“無効”としない。
【００５２】
以上のように、不揮発性記憶システム１０００では、不揮発性記憶装置１が、連続書込アロケーションユニット情報を用いて、追記可能な論理アロケーションユニットを物理アロケーションユニットの状態に基づいて管理・更新する。つまり、不揮発性記憶システム１０００では、論理アロケーションユニット内の状況（データ記録状態）と、物理アロケーションユニット内の状況（データ記録状態）とが、一致するように、不揮発性記憶装置１が、追記可能な論理アロケーションユニットを物理アロケーションユニットの状態に基づいて管理・更新する。
したがって、ホスト装置２は、連続書込アロケーションユニット情報によって、不揮発性メモリ１２の物理アロケーションユニットの状態を知ることができ、追記が可能な論理アロケーションユニットを選択して書き込み（データ書き込み処理）を行うことで、不揮発性記憶装置１内でのデータコピーや消去処理の発生を抑えて高速にデータを書き込むことが可能となる。
【００５３】
連続書込アロケーションユニット管理部１１５は、連続アロケーションユニット情報をアドレス管理部１１４のレジスタまたはＲＡＭに保持してもよく、さらに、所定のタイミング（例えば情報を更新するたびや、有効フラグをかきかえるたび、など）に不揮発性メモリ１２の所定の領域に格納してもよい。この場合は、不揮発性記憶装置１の電源がいったんＯＦＦされてからＯＮされると、メモリコントローラ部１１のアドレス管理部１１４が起動処理を行う際に連続アロケーションユニット情報を不揮発性メモリ１２から読み出してレジスタまたはＲＡＭに格納する。
＜１．３：連続書込アロケーションユニット制御用コマンド＞
次に、不揮発性記憶システム１０００で用いられる連続書込アロケーションユニット制御用コマンドについて、説明する。
【００５４】
図９は、本実施形態に係るホスト装置２が、不揮発性記憶装置１に対して、連続書込アロケーションユニットを指定し、あるいは、不揮発性記憶装置１の保持する連続書込アロケーションユニット情報を読み出すためのコマンド、応答、データの構成を説明する図である。
（１．３．１：連続書込アロケーションユニット指定コマンド）
図９（ａ）、（ｂ）は、ホスト装置２が、不揮発性記憶装置１に対して、連続書込アロケーションユニットを指定するための、連続書込アロケーションユニット指定コマンドを説明する図である。
図９（ａ）に示すように、ホスト装置２は、コマンドとして、コマンド番号、エントリ番号、論理アロケーションユニット番号を含むコマンドを不揮発性記憶装置１へ送信する。
【００５５】
ここで、「コマンド番号」は、当該コマンドが連続書込アロケーションユニット指定コマンドであることを示す識別子である。
「エントリ番号」は、図５〜図８で説明した連続書込アロケーションユニット情報のエントリの番号である。なお、コマンドで、エントリ番号を指示しない（エントリ番号を含めない）ようにしてもよい。この場合、不揮発性記憶システム１０００において、不揮発性記憶装置１では、以下の（１）、（２）の処理を行うようにしてもよい。
（１）空きエントリがあれば、その空きエントリを連続書込アロケーションユニット情報に登録する。
（２）空きエントリがなければ、いずれかのエントリと入れ替えて、その入れ替えたエントリを連続書込アロケーションユニット情報に登録する。この場合、例えば、一番残量が少ないエントリ、あるいは、一番古いエントリ、などを入れ替えるエントリの候補として選び、その候補の中から入れ替えるエントリを決定するようにしてもよい。なお、入れ替えエントリの候補は、上記例に限定されないことは言うまでもない。
【００５６】
「論理アロケーションユニット番号」は、当該コマンドで指定したエントリに連続書込アロケーションユニットとして登録する論理アロケーションユニット番号である。
また、図９（ｂ）に示すように、エントリ番号および論理アロケーションユニット番号は、コマンドではなくデータとして不揮発性記憶装置１へ送られてもよい。この場合、図９（ｂ）の（ｉ）および（ｉｉ）に示したように、エントリ番号および論理アロケーションユニット番号は、１または複数個を指定することができる。
図９（ａ）、（ｂ）のいずれの場合も、不揮発性記憶装置１は、ホスト装置２へ応答を返し、連続書込アロケーションユニット情報を更新する。この際、不揮発性記憶装置１内の制御情報やステータス更新のために、不揮発性メモリ１２への書き込み処理や消去処理が発生する場合は、不揮発性記憶装置１は、ホスト装置２へ処理が完了するまでビジー状態であることを通知する。
【００５７】
（１．３．２：連続書込アロケーションユニット情報読出コマンド）
図１０（ａ）〜（ｃ）は、ホスト装置２が、不揮発性記憶装置１から、連続書込アロケーションユニット情報を読み出すための、連続書込アロケーションユニット情報読出コマンドを説明する図である。
図１０（ａ）、（ｂ）に示すように、ホスト装置２は、コマンドとしてコマンド番号、エントリ番号を含むコマンドを不揮発性記憶装置１へ送信する。
ここで、「コマンド番号」は、当該コマンドが連続書込アロケーションユニット情報読出コマンドであることを示す識別子である。
「エントリ番号」は、図５〜図８で説明した連続書込アロケーションユニット情報のエントリの番号である。当該コマンドを受信すると、不揮発性記憶装置１は、コマンドで指定されたエントリ番号と有効フラグ、当該エントリに保持している論理アロケーションユニット番号および次書込アドレスを、図１０（ａ）では応答で、図１０（ｂ）ではデータで、それぞれ、ホスト装置２へ返信する。
【００５８】
あるいは、図１０（ｃ）に示すように、ホスト装置２は、エントリ番号指定無しで連続書込アロケーションユニット情報読出コマンドを不揮発性記憶装置１へ送信することも可能である。この場合、不揮発性記憶装置１は、保持する連続書込アロケーションユニット情報をデータとしてホスト装置２へ返信する。この場合、返信するデータには、複数のエントリの有効フラグ、論理アロケーションユニット番号、次書込アドレスが含まれる。
このようにして、不揮発性記憶システム１０００では、不揮発性記憶装置１とホスト装置２とがコマンドを用いて連続書込アロケーションユニット情報を読み出し、あるいは更新することで、図５〜図８を用いて説明したように高速な書き込みを実現することができる。
＜１．４：書込アドレス決定処理フロー＞
次に、不揮発性記憶システム１０００における書込アドレス決定処理について、図１１を用いて説明する。
【００５９】
図１１は、本実施形態に係るホスト装置２が不揮発性記憶装置１へデータを書き込む際の書込アドレス決定と書き込みの処理フローを説明する図である。
図１１に示すように、ホスト装置２は、まず、連続書込アロケーションユニット情報を不揮発性記憶装置１から読み出す（Ｓ６０１）。なお、ホスト装置２は、書き込みを行う際に、その都度、連続書込アロケーションユニット情報を読み出してもよく、あるいは読み出した情報をホスト装置２内のＲＡＭに保持して自ら更新するようにしてもよい。
ホスト装置２は、読み出した連続書込アロケーションユニット情報を参照して（Ｓ６０２）、有効なエントリがあれば、当該エントリに保持されている論理アロケーションユニット番号と次書込アドレスとを、書込アドレスとして使用する（Ｓ６０３）。
一方、有効なエントリがない場合、ホスト装置２は、ファイルシステム情報に基づいて空き論理アロケーションユニットを検索し、見つかった論理アロケーションユニットを書込アドレスとして選択する（Ｓ６０４）。この場合、当該論理アロケーションユニットの先頭から書き込みが開始される。そして、ホスト装置２は、不揮発性記憶装置１に対して、連続書込アロケーションユニット指定コマンドを発行して、当該論理アロケーションユニットを任意のエントリに登録する（Ｓ６０５）。
【００６０】
このようにして書込アドレスを決定した後、ホスト装置２は、不揮発性記憶装置１に対して、書き込みコマンドとデータとを送信してデータの書き込みを行う（Ｓ６０６）。
データの書き込みにおいては、未書き込みデータが残っているか（Ｓ６０７）、および、書き込みを行う論理アロケーションユニットの終端までデータを書いたか（Ｓ６０８）の確認を行い、未書き込みデータがなくなれば処理を終了する。なお、不揮発性記憶システム１０００において、Ｓ６０８の処理で、書き込みを行う論理アロケーションユニットの終端までデータを書き込まれていない状態であっても、当該論理アロケーションユニットの残容量（データ記録残容量）がある一定量より少なくなったら、連続書込アロケーションユニット情報の該エントリの有効フラグを”無効”にするようにしてもよい。例えば、不揮発性記憶システム１０００において、次書込みアドレスをセクター単位で管理しているが、書き込みサイズがクラスタ単位である場合（クラスタ単位でデータ書き込みを行う場合）、当該論理アロケーションユニットの残容量（データ記録残容量）がクラスタサイズ未満になったら、連続書込アロケーションユニット情報の該エントリの有効フラグを”無効”にするようにしてもよい。
【００６１】
また、未書き込みデータが残っていて書き込みを行う論理アロケーションユニットの終端までデータを書いた場合には、再度連続書込アロケーションユニット情報を元に書き込みアドレスを決定する処理（Ｓ６０１〜Ｓ６０５）を行った後に、データ書き込みを継続する。
以上説明したように、不揮発性記憶システム１０００では、複数の不揮発性メモリに並行してデータを書き込む場合をも考慮したアロケーションユニットを設定し、そのアロケーションユニット単位でアドレス変換などのメモリ領域の管理を行う。そして、不揮発性記憶システム１０００では、不揮発性記憶装置１とホスト装置２とが連続書込アロケーションユニット情報を元に不揮発性メモリの物理アロケーションユニットの状態を管理し、当該物理アロケーションユニットの状態に基づいて書き込みを制御するため、高速なデータの書込みが可能となる。
【００６２】
また、不揮発性記憶システム１０００では、ホスト装置が複数ファイルのデータを交互に不揮発性記憶装置１へ書き込む場合でも、連続書込アロケーションユニット情報の複数のエントリに登録されている有効な論理アロケーションユニットに対して、次書込アドレスから順にデータを書込ユニット単位で追記できるため、ホスト装置２は複数ファイルを少ないバッファサイズで高速に書き込むことができる。
つまり、従来のデータ書き込み処理では、論理アロケーションユニット内の状況（データ記録状態）と物理アロケーションユニット内の状況（データ記録状態）とが一致している保証がないため、不揮発性記憶装置１からすると、論理アドレス空間において連続するアドレスにデータを記録している場合であっても、ランダムアクセスしているようなデータ書き込み処理を行わなければならず、高速データ書き込み処理を実現しにくい。
【００６３】
また、従来のデータ書き込み処理では、１つの物理アロケーションユニット内において先頭から終端まで連続的にデータを書き込むので、複数のファイルのデータを書き込む場合、１つの物理アロケーションユニット内において先頭から終端まで連続的にデータを書き込んだ後、別の物理アロケーションユニット内において先頭から終端まで連続的にデータを書き込む、という処理を繰り返すことで、複数のファイルのデータを書き込む。したがって、不揮発性記憶システムにおいて、実際に物理アロケーションユニットにデータ書き込み処理を行うまでの待ち時間分のバッファを持つ必要がある。
それに対して、本実施形態の不揮発性記憶システム１０００では、論理アロケーションユニット内の状況（データ記録状態）と物理アロケーションユニット内の状況（データ記録状態）とが一致していることが保証されているため、ホスト装置が複数ファイルのデータを交互に不揮発性記憶装置１へ書き込む場合でも、連続書込アロケーションユニット情報の複数のエントリに登録されている有効な論理アロケーションユニットに対して、次書込アドレスから順にデータを書込ユニット単位で追記できる。したがって、不揮発性記憶システム１０００において、ホスト装置２は、複数ファイルを少ないバッファサイズで高速に書き込むことができる。
【００６４】
［他の実施形態］
なお、上記実施形態で説明した不揮発性記憶システム、不揮発性記憶装置およびホスト装置において、各ブロックは、ＬＳＩなどの半導体装置により個別に１チップ化されても良いし、一部又は全部を含むように１チップ化されても良い。
なお、ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。
また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを利用しても良い。
【００６５】
さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適用等が可能性としてあり得る。
また、上記実施形態の各処理をハードウェアにより実現してもよいし、ソフトウェアにより実現してもよい。さらに、ソフトウェアおよびハードウェアの混在処理により実現しても良い。なお、上記実施形態に係る不揮発性記憶システム、不揮発性記憶装置およびホスト装置をハードウェアにより実現する場合、各処理を行うためのタイミング調整を行う必要があるのは言うまでもない。上記実施形態においては、説明便宜のため、実際のハードウェア設計で生じる各種信号のタイミング調整の詳細については省略している。
なお、本発明の具体的な構成は、前述の実施形態に限られるものではなく、発明の要旨を逸脱しない範囲で種々の変更および修正が可能である。
【産業上の利用可能性】
【００６６】
本発明によると、ホスト装置のバッファサイズ増大を抑えながら、複数ファイルのリアルタイム記録が可能な不揮発性記憶装置、ホスト装置およびメモリシステムを提供することができ、特に大容量の不揮発性メモリに動画を記録するテレビやＤＶＲなどのホスト装置と、リムーバブルなメモリカードやエンベデッドデバイスなど不揮発性メモリを有する不揮発性記憶装置に有用である。
【符号の説明】
【００６７】
１０００    不揮発性記憶システム（メモリシステム）
１          不揮発性記憶装置
１１              メモリコントローラ部
１１１      ホストＩＦ部
１１２            メモリ管理部
１１３      データ制御部
１１４            アドレス管理部
１１５            連続書込アロケーションユニット管理部
１２              不揮発性メモリ
１２０            物理ブロック
１２１            物理ページ
１２２            アロケーションユニット
２                ホスト装置
２１              ＣＰＵ
２２              ＲＯＭ
２３              ＲＡＭ
２４              バッファＲＡＭ
２５              記憶装置制御部
２６        メモリユニット制御部
３                バス
３０        論理アロケーションユニット
３１        物理アロケーションユニット
【図１】
2011095853.tif 000003
【図２】
2011095853.tif 000004
【図３】
2011095853.tif 000005
【図４】
2011095853.tif 000006
【図５】
2011095853.tif 000007
【図６】
2011095853.tif 000008
【図７】
2011095853.tif 000009
【図８】
2011095853.tif 000010
【図９】
2011095853.tif 000011
【図１０】
2011095853.tif 000012
【図１１】
2011095853.tif 000013