(57)【特許請求の範囲】
【請求項１】
不揮発性メモリと、
ホストが指定する論理アドレスと前記不揮発性メモリ上での物理アドレスとの対応を管理単位毎に保持する論物変換テーブルを備えた記憶手段と、
前記管理単位より小さいデータ量を単位として論理アドレスの削除領域を指定した削除通知を前記ホストから受け取った場合に、前記管理単位に満たない前記削除領域を含む管理単位と前記論物変換テーブルにおいて対応する前記不揮発性メモリ上の第１領域のデータを前記記憶手段に読み出し、前記記憶手段上で前記データの前記削除領域に対応する箇所に所定のデータパターンを上書きし、上書き後の前記データを前記不揮発性メモリ上の前記管理単位に対応する第２領域であって、前記第１領域とは別の前記第２領域に書き込むコントローラと
を備えたことを特徴とするメモリシステム。 
【請求項２】
前記不揮発性メモリから読み出されたデータの中から所定のデータパターンを検出する検出部を備え、
前記検出部の検出結果に基づいて、前記不揮発性メモリから読み出されたデータの中に前記管理単位が全て前記所定のデータパターンである解放可能な管理単位が存在する場合は、当該解放可能な管理単位の領域に前記論物変換テーブルにて対応する物理アドレスが書き込まれる前記論物変換テーブルの位置に無効値を書き込むことにより、当該解放可能な管理単位の論理アドレスの領域を解放する
ことを特徴とする請求項１に記載のメモリシステム。 
【請求項３】
前記コントローラは、
前記ホストから前記所定のデータパターンの書き込み要求を受け取った場合は、前記所定のデータパターンを前記不揮発性メモリに書き込み、
前記論物変換テーブルにおいて対応する物理アドレスが書き込まれる位置に無効値が書き込まれた論理アドレスに対する前記ホストからの読み出し要求があった場合は、前記所定のデータパターンを読み出しデータとして前記ホストに返す
ことを特徴とする請求項１または２に記載のメモリシステム。 
【請求項４】
ホストが指定する論理アドレスと不揮発性メモリ上での物理アドレスとの対応を保持する論物変換テーブルの管理単位より小さいデータ量を単位として論理アドレスの削除領域を指定した削除通知を前記ホストから受け取った場合に、
前記管理単位に満たない前記削除領域を含む管理単位と前記論物変換テーブルにおいて対応する前記不揮発性メモリ上の第１領域のデータを前記記憶手段に読み出し、前記記憶手段上で前記データの前記削除領域に対応する箇所に所定のデータパターンを上書きし、上書き後の前記データを前記不揮発性メモリ上の前記管理単位に対応する第２領域であって、前記第１領域とは別の前記第２領域に書き込む
ことを特徴とするコントローラ。
【請求項５】
前記不揮発性メモリから読み出されたデータの中から所定のデータパターンの有無を検出し、前記不揮発性メモリから読み出されたデータの中に前記管理単位が全て前記所定のデータパターンである解放可能な管理単位が存在する場合は、当該解放可能な管理単位の領域に前記論物変換テーブルにて対応する物理アドレスが書き込まれる前記論物変換テーブルの位置に無効値を書き込むことにより、当該解放可能な管理単位の論理アドレスの領域を解放する
ことを特徴とする請求項４に記載のコントローラ。 
【請求項６】
前記ホストから前記所定のデータパターンの書き込み要求を受け取った場合は、前記所定のデータパターンを前記不揮発性メモリに書き込み、
前記論物変換テーブルにおいて対応する物理アドレスが書き込まれる位置に無効値が書き込まれた論理アドレスに対する前記ホストからの読み出し要求があった場合は、前記所定のデータパターンを読み出しデータとして前記ホストに返す
ことを特徴とする請求項４または５に記載のコントローラ。 
【請求項７】
不揮発性メモリと、ホストが指定する論理アドレスと前記不揮発性メモリ上での物理アドレスとの対応を管理単位毎に保持する論物変換テーブルを備えた記憶手段とを備えたメモリシステムの制御方法であって、
前記管理単位より小さいデータ量を単位として論理アドレスの削除領域を指定した削除通知を前記ホストから受け取った場合に、前記管理単位に満たない前記削除領域を含む管理単位と前記論物変換テーブルにおいて対応する前記不揮発性メモリ上の第１領域のデータを前記記憶手段に読み出し、前記記憶手段上で前記データの前記削除領域に対応する箇所に所定のデータパターンを上書きし、上書き後の前記データを前記不揮発性メモリ上の前記管理単位に対応する第２領域であって、前記第１領域とは別の前記第２領域に書き込む
ことを特徴とするメモリシステムの制御方法。 
【請求項８】
前記不揮発性メモリから読み出されたデータの中から所定のデータパターンの有無を検出し、
前記不揮発性メモリから読み出されたデータの中に前記管理単位が全て前記所定のデータパターンである解放可能な管理単位が存在する場合は、当該解放可能な管理単位の領域に前記論物変換テーブルにて対応する物理アドレスが書き込まれる前記論物変換テーブルの位置に無効値を書き込むことにより、当該解放可能な管理単位の論理アドレスの領域を解放する
ことを特徴とする請求項７に記載のメモリシステムの制御方法。 
【請求項９】
前記ホストから前記所定のデータパターンの書き込み要求を受け取った場合は、前記所定のデータパターンを前記不揮発性メモリに書き込み、
前記論物変換テーブルにおいて対応する物理アドレスが書き込まれる位置に無効値が書き込まれた論理アドレスに対する前記ホストからの読み出し要求があった場合は、前記所定のデータパターンを読み出しデータとして前記ホストに返す
ことを特徴とする請求項７または８に記載のメモリシステムの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステム、コントローラ、およびメモリシステムの制御方法に関する。
【背景技術】
【０００２】
二次記憶装置としてのメモリシステムでは、ホストからセクタ単位でデータの読み書き指示がされるが、ホストから書き込まれるデータは、通常はセクタよりも大きなサイズを持つ所定の管理単位でメモリシステム内部の不揮発性半導体メモリに記憶される。メモリシステムは、各セクタが不揮発性半導体メモリ上のどこに格納されているかを管理するため、論理アドレスとしてのＬＢＡ（Logical Block Address）と不揮発性半導体メモリ上の位置との管理単位での対応表である論物変換テーブルを保持している。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−２１８２９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の一つの実施形態は、トリム要求によりセクタ単位で不要であることが通知された領域について、フラグ用の追加記憶領域を要さずに不要か否かの情報を保持することが可能なメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００５】
本発明の一つの実施形態のメモリシステムは、不揮発性メモリと、ホストが指定する論理アドレスと前記不揮発性メモリ上での物理アドレスとの対応を管理単位毎に保持する論物変換テーブルを備えた記憶手段を備える。メモリシステムは、前記管理単位より小さいデータ量を単位として論理アドレスの削除領域を指定した削除通知を前記ホストから受け取った場合に、当該削除領域に含まれる前記管理単位に満たない領域と前記論物変換テーブルにおいて対応する物理アドレスの前記不揮発性メモリ上の領域に所定のデータパターンを書き込むコントローラを備える。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態にかかるメモリシステム（ＳＳＤ）のシステム構成を示すブロック図である。
【図２】図２は、実施形態における管理単位にアラインされたＬＢＡとＮＡＮＤフラッシュメモリ上において管理単位に割り振られているデータ領域との対応関係を示す図である。
【図３】図３は、実施形態における論物変換テーブルを示す図である。
【図４】図４は、実施形態においてトリム要求を受け取ったときのメモリシステムの処理を示すフローチャートである。
【図５】図５は、実施形態においてトリム要求されたＬＢＡに対応する領域に所定のデータパターンを書き込む処理を示すフローチャートである。
【図６】図６は、実施形態においてトリム要求されたＬＢＡに対応する領域に所定のデータパターンを書き込む処理を示す概念図である。
【図７】図７は、実施形態において管理単位の全てが所定のデータパターンとなった場合に当該管理単位が解放できることを示す概念図である。
【図８】図８は、実施形態において管理単位のデータを移動するときに、解放可能な管理単位を解放する処理を示すフローチャートである。
【発明を実施するための形態】
【０００７】
ある管理単位内の全てのセクタについて、一度もデータが書き込まれていない場合には当該管理単位の論理アドレスに対応する不揮発性半導体メモリ上の位置は「未割り当て」になっている。未割り当ての管理単位に含まれるセクタに対しホストからデータが書き込まれると、該当する論理アドレスを含む管理単位は「割り当て済み」になり、実際のデータが存在する不揮発性半導体メモリ上の位置が物理アドレスとして保存される。メモリシステムは、データの断片化を解消する目的などで不揮発性半導体メモリ上のデータを移動することがある。ホストから不要になったデータ領域の通知を受けて、「割り当て済み」の管理単位を「未割り当て」に戻すことで、不要なデータの移動を削減することができる。
【０００８】
従来のメモリシステムでは、ホストから不要となった領域の通知、たとえば、ＩＮＣＩＴＳ  ＡＴＡ８−ＡＣＳで採用されたData Set Management Command(通称トリム要求)による通知（以下、トリム要求と呼称する）をセクタ単位で受け取り、トリム要求で通知された領域のうち、管理単位にアラインされた領域（管理単位と同じ大きさの領域）については当該管理単位を「割り当て済み」から「未割り当て」に変更し、不要なデータの移動が起こらないようにすることができる。一方、トリム要求のうちで管理単位にアラインされていない領域、即ち管理単位未満のトリム要求をされた領域については「未割り当て」にすることができず、トリム要求の情報を利用できない。
【０００９】
セクタ単位で領域が不要かどうかを示すフラグを別途導入すれば、後続のトリム要求の情報と組み合わせて管理単位の不要な領域ができた際に当該領域を未割り当てにすることができる。しかしながら、この場合はフラグの情報を記憶するための追加の記憶領域が必要となり、また、フラグ書き込みのための特別な処理を導入する必要がある。
【００１０】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよびメモリシステムの制御方法を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【００１１】
（実施形態）
図１は、実施形態にかかるメモリシステムとしてのＳＳＤ（Solid State Drive）２の構成の一例を示すブロック図である。半導体記憶装置であるＳＳＤ２は、管理情報記憶部４０を含むＲＡＭ４、以下に説明するデータパターン検出部５、実際にデータを記憶するＮＡＮＤフラッシュメモリ６、およびそれらを制御するコントローラ３を備える。ＳＳＤ２は、図示せぬインタフェースを介して、ホスト１からの読み書き指示を受ける。ホスト１とＳＳＤ２とのインタフェースは、例えば、ＳＡＴＡ（Serial ATA）規格に準拠するが、これに限定されるものではない。データパターン検出部５はハードウェアとして実装しても良いし、コントローラ３が実行するファームウェアモジュールとして実装しても良い。
【００１２】
ＮＡＮＤフラッシュメモリ６は、複数の不揮発性メモリセルが行列上に配置されたメモリセルアレイ及び当該メモリセルアレイに対する書込み、読み出し、消去動作を制御するための周辺回路を含む。メモリセルアレイは、データ消去の最小単位であるブロックを複数配列して構成されている。各々のブロックは、データ書込み及び読み出しの最小単位であるページを複数配列して構成されている。１ブロックの記憶容量は例えば１０２４ＫＢであり、１ページの記憶容量は例えば８ＫＢである。各々のメモリセルは、１ビットを記憶するように構成されていても良いし、２ビット以上を記憶するように構成されていても良い。ＮＡＮＤフラッシュメモリ６では、ブロック内の同一ページに対する再書き込みは、一度当該ページを含むブロック全体を消去した後でなければ許可されない。
【００１３】
ホストとメモリシステムの間でデータをやりとりするための規格であるＡＴＡ規格のData Set Management Commandにおいて、Trimという属性が定義されている。これにより、ホストは不要になった領域をセクタ単位でメモリシステムに通知することができる。これについてはＡＴＡコマンドの規格を参照することとし(http://www.t13.org/Documents/UploadedDocuments/docs2009/d2015r1a-ATAATAPI_Command_Set_-_2_ACS-2.pdf)、ここではその詳細は説明しない。このようなコマンドを、以降トリムコマンド（トリム要求）と呼称する。このコマンドによれば、不要になった記憶領域は、先頭論理アドレス（ＬＢＡ）とセクタサイズとで指定される。本実施形態は、ＡＴＡ規格のトリム要求だけでなく、ＡＴＡ以外の規格であっても同様の仕様を持つコマンドであれば適用できる。
【００１４】
図１に戻り説明を続ける。ホスト１から書き込まれたデータは所定の管理単位でＮＡＮＤフラッシュメモリ６に記憶される。論理アドレス空間上の連続したアドレスを論物変換（論理アドレスと物理アドレスとの変換）の単位として、当該連続したアドレスをまとめてＮＡＮＤフラッシュメモリ６上の物理的な領域に割り当てる。この管理単位は、上述したトリム要求が指定するセクタ単位よりも大きく、当該管理単位内においては、論理アドレスが連続する複数のセクタが順に配置されている。管理単位の大きさは任意であるが、例えば、ＮＡＮＤフラッシュメモリ６のページサイズやブロックサイズ、あるいはホスト１が採用するファイルシステムのクラスタサイズ等に一致させることができる。
【００１５】
ホスト１から書き込まれた更新データが管理単位にアラインされていない場合には、ＮＡＮＤフラッシュメモリ６上の管理単位の大きさの領域に既に記憶されているデータと、管理単位の大きさに満たない新たに書き込まれた更新データとをＲＡＭ４上でマージし、管理単位のデータを作成した上でＮＡＮＤフラッシュメモリ６の空き領域に書き込む（リードモディファイライト）。ホスト１から書き込まれたデータがＮＡＮＤフラッシュメモリ６上のどこに書き込まれるかは動的に変化するものであり、その対応関係が後述する論物変換テーブルによって管理される。論理アドレスとしては、例えば、論理容量に対してセクタ単位で０から通し番号が付されたＬＢＡ（Logical Block Address）が採用される。セクタサイズは、例えば５１２Ｂである。
【００１６】
図２は、管理単位でアラインされたＬＢＡとＮＡＮＤフラッシュメモリ上において管理単位に割り振られているデータ領域との対応関係を示す図である。図２のように、ホスト１が書き込み要求で指定するＬＢＡはセクタ単位であるが、ＳＳＤ２内部では当該ＬＢＡは管理単位の大きさ（例えば、ページサイズ）でアラインされ、当該管理単位内の連続するＬＢＡに対応するセクタが、ＮＡＮＤフラッシュ６の管理単位の領域にまとめて記憶される。例えば、管理単位の大きさがページサイズに等しい場合、ページサイズでアラインされたＬＢＡに対応する複数のセクタが、ＮＡＮＤフラッシュメモリ６のページサイズ分の領域に書き込まれる。
【００１７】
図３は、実施形態における論物変換テーブルを示す図である。管理情報記憶部４０は、ＬＢＡで指定されるデータがＮＡＮＤフラッシュメモリ６のどこに書き込まれているかという対応関係を示す論物変換テーブルを記憶している。図３の論物変換テーブルは、論理アドレスとしてホスト１が指定するＬＢＡを管理単位でアラインした値と、また物理アドレスとしてＮＡＮＤフラッシュメモリ６の物理アドレスを管理単位でアラインした値とを含んでいる。例えば、管理単位がページサイズに等しければ、物理アドレスとして物理ページ番号が登録される。また例えば、管理単位がブロックサイズに等しければ、物理アドレスとして物理ブロック番号が登録される。
【００１８】
管理単位でアラインされたあるＬＢＡについて、ホスト１から一度もデータが書き込まれていないとき、論物変換テーブルの当該ＬＢＡに対応する物理アドレスの位置には、無効値が書き込まれるなどして「未割り当て」状態となっている。管理単位内のセクタにデータが書き込まれると、当該管理単位は「割り当て済み」となりＮＡＮＤフラッシュメモリ６上の位置が論物変換テーブルに記録される。ＳＳＤ２は、データの断片化を解消する目的などで、「割り当て済み」となっている管理単位のデータを移動することがある。ホスト１から不要になった領域の通知を受けとり、使わないことになった管理単位を「未割り当て」にすることで、不要なデータの移動を削減することができる。
【００１９】
図４は、トリム要求を受け取ったときのメモリシステムの処理を示すフローチャートである。コントローラ３は、ホスト１からトリム要求を受け取る（ステップＳ１１）。トリム要求は上述した通り、トリム対象領域の先頭ＬＢＡ及びセクタサイズを含む。なお、１つのトリム要求で複数のトリム対象領域を設定しても良い。
【００２０】
コントローラ３は、トリム対象領域として指定されたＬＢＡ範囲が、少なくとも１つの管理単位の領域全体を含むか否かを判定する。管理単位の領域を複数含む場合は、それら全てに対して以下ステップ１３の処理を適用する。（ステップＳ１２）。管理単位の領域を含む場合（ステップＳ１２：Ｙｅｓ）、コントローラ３は論物変換テーブルを操作し、当該管理単位のＬＢＡを「未割り当て」に変更し、当該管理単位のＬＢＡに割り当てられていたＮＡＮＤフラッシュメモリ６上の領域を解放する（ステップＳ１３）。
【００２１】
コントローラ３は、トリム対象領域として指定されたＬＢＡ範囲が、管理単位未満の領域を含むか否かを判定する（ステップＳ１４）。管理単位未満のトリム対象領域が存在する場合（ステップＳ１４：Ｙｅｓ）、コントローラ３は当該管理単位未満のトリム対象領域に対して「所定のデータパターン」を書き込む（ステップＳ１５）。本実施形態においては「所定のデータパターン」が書き込まれていることを、当該領域が不要であることのフラグとして利用する。
【００２２】
ここで、上記ステップＳ１５の処理の詳細について説明する。なお、ここで説明する処理はトリム要求で「所定のデータパターン」を書き込む場合に限ったものではなく、図１のホスト１から通常のデータが書き込まれた場合でも、同様の処理でＮＡＮＤフラッシュメモリ６に書き込みがなされる。
【００２３】
ＳＳＤ２がＮＡＮＤフラッシュメモリ６にデータを書き込む際には以下のような制約がある。コントローラ３は、論物変換テーブルの解像度、即ちセクタ単位よりも大きい所定の管理単位でしかデータを管理することができない。即ち、セクタ単位でばらばらの位置にデータを書き込むことはできない。さらに、ＮＡＮＤフラッシュメモリ６はデータの上書きができない。これらの制約の下での、管理単位未満の（管理単位にアラインされていない）データを書き込むステップＳ１５の処理手順（リードモディファイライト）の詳細を、図１、図５のフローチャート、および図６に示した概念図を用いて説明する。
【００２４】
図５は、トリム要求されたＬＢＡに対応する領域に所定のデータパターンを書き込む処理を示すフローチャートである。また、図６は、トリム要求されたＬＢＡに対応する領域に所定のデータパターンを書き込む処理を示す概念図である。ホスト１から管理単位よりも小さい領域５０に対してトリム要求があると、コントローラ３は、トリム要求されたセクタを含む管理単位６１全体のデータをＮＡＮＤフラッシュメモリ６から読み出して、ＲＡＭ４に保持する（図５、ステップＳ２１）。管理単位６１は、論物変換テーブルにおいて、トリム要求されたＬＢＡを管理単位でアラインした値に関連付けられたＮＡＮＤフラッシュメモリ６上の領域を示しており、以前にホスト１から書き込まれたデータを記憶している。
【００２５】
コントローラ３は、ＲＡＭ４において、管理単位６１から読み出されたデータのトリム要求された領域に「所定のデータパターン」７７を上書きすることにより、管理単位６１に書き込まれていたトリム対象領域以外のデータと「所定のデータパターン」７７とをマージする（ステップＳ２２）。ここでのマージ作業は、一般にホスト１から書き込まれた更新データを管理単位６１に書き込まれていたデータに上書きする場合も同様である。ここでは、管理単位６１の大きさに満たないトリム要求に対して、管理単位６１に書き込まれていたデータの中でトリム要求があった範囲のセクタに対して「所定のデータパターン」７７を上書きする。
【００２６】
コントローラ３は、このようにしてＲＡＭ４上でマージされた新しいデータを、ＮＡＮＤフラッシュメモリ６の空き領域（消去済みの新しい管理単位６８）に書き込む（ステップＳ２３）。コントローラ３は、図３の論物変換テーブルを操作して、トリム対象領域を含む管理単位でアラインされたＬＢＡに対して、管理単位６８に対応する物理アドレスを記録する。以前にホスト１から書き込まれた古いデータが記憶されている管理単位６１は、ＬＢＡとの関連付けから解放されて無効化され、データ消去後には空き領域として取り扱われる（ステップＳ２４）。
【００２７】
図７は、管理単位の全てが所定のデータパターンとなった場合に当該管理単位が解放できることを示す概念図である。上記したように、トリム対象領域に対応する「所定のデータパターン」７７は、通常のホスト１からの書き込みと同様に、ＮＡＮＤフラッシュメモリ６上の管理単位のデータとマージされ、ＮＡＮＤフラッシュメモリ６に書き込まれる。コントローラ３は、マージの結果、図７に示すように、管理単位内の全てのセクタが「所定のデータパターン」になった場合に、当該管理単位の論理アドレスを「未割り当て」に変更して解放することができる。
【００２８】
図８は、管理単位のデータを移動するときに、解放可能な管理単位の領域を解放する処理を示すフローチャートである。コントローラ３がＮＡＮＤフラッシュメモリ６上のデータを移動する際などに、移動対象のデータから管理単位分のデータを読み込んだとき（ステップＳ３１）、データパターン検出部５は、管理単位内のセクタ全てに「所定のデータパターン」が書き込まれているかどうかを判定する（ステップＳ３２）。
【００２９】
データ移動は、例えば、無効化された古いデータが増えて新たにデータを書き込むことができる領域が減少した場合に、「割り当て済み」の領域に記憶されている管理単位のデータを特定のブロックに集め、古いデータだけになったブロックを消去して空き領域を増加させる際に行われる（コンパクション、またはガベージコレクションと呼ばれる）。あるいは、メモリセルに書き込みが行われた後に長時間経過してデータが劣化したときに、別の空き領域にデータを書き直すことで信頼性を向上させるために行われる（リフレッシュと呼ばれる）。
【００３０】
データパターン検出部５は、管理単位内のセクタ全てが「所定のデータパターン」になっていると検出した場合（ステップＳ３２:Ｙｅｓ）、その旨をコントローラ３に通知する。コントローラ３は、データパターン検出部５からの通知を受けて、当該管理単位を「未割り当て」に変更し、当該管理単位のＬＢＡに割り当てられていたＮＡＮＤフラッシュメモリ６上の領域を解放する（ステップＳ３３）。
【００３１】
データパターン検出部５は、管理単位内のセクタ全てが「所定のデータパターン」となっているわけではない場合（ステップＳ３２:Ｎｏ）、その旨をコントローラ３に通知する。コントローラ３は、データパターン検出部５からの通知を受けて、読み出したデータをＮＡＮＤフラッシュメモリ６上の移動先にそのまま書き込む（ステップＳ３４）。
【００３２】
ステップＳ３３およびＳ３４の後、コントローラ３は移動対象のデータを全て読み出したか否か判定する（ステップＳ３５）。全て読み出していない場合は（ステップＳ３５:Ｎｏ）はステップＳ３１にもどる。移動対象のデータを全て読み出したら（ステップＳ３５:Ｙｅｓ）、データ移動処理を終了する。
【００３３】
また、本実施形態のメモリシステムが上記のような動作を実行した場合にメモリシステムとして円滑に機能させるために、さらに以下の動作を実行することが好ましい。即ち、ホスト１からトリム要求としてではなく「所定のデータパターン」がＮＡＮＤフラッシュメモリ６に書き込まれた場合に対してもデータの不一致が発生しないようにする。
【００３４】
具体的には、図３の論物変換テーブルの物理アドレスの位置に無効値が書き込まれた「未割り当て」のＬＢＡに対しホスト１から読み出し要求があった場合には、「所定のデータパターン」をホスト１に返すようにする。これにより、半導体記憶装置であるＳＳＤ２はトリム要求により「所定のデータパターン」が書き込まれた場合と、ホスト１から実際に「所定のデータパターン」の書き込み要求が来た場合とを区別しないで済む。
【００３５】
従って、トリム要求ではなくホスト１から管理単位にアラインされたサイズの「所定のデータパターン」が書き込まれた場合に、図８のフローに従いステップＳ３３にて当該管理単位を解放しても矛盾は生じない。当該解放された領域に対応するＬＢＡに読み出し要求があった場合は、現実のデータは無効化されて存在しないものの、「所定のデータパターン」を返すことで書き込みデータを保証することが可能だからである。
【００３６】
以上説明してきたように本実施形態にかかるメモリシステムは、ホストからトリム要求を受け取ると、トリム要求されて不要となった領域のうちメモリシステムのデータ管理単位にアラインされた領域を即座に解放する。不要となった領域がデータの管理単位にアラインされていない場合には不要となった領域に「所定のデータパターン」を書き込むことで当該領域が不要であるという情報を保持しておく。その後、後続のトリム要求と組み合わせて管理単位が全て「所定のデータパターン」である解放可能な領域ができたときに当該領域を解放する。即ち、その後データを読み込んだ際にデータの管理単位にアラインされた「所定のデータパターン」を検出したら、当該領域を解放する。これにより、トリム要求の情報を最大限に活用することができる。
【００３７】
また、本実施形態により「所定のデータパターン」が書き込まれた管理単位を不要であるとみなして解放することで、メモリシステムが利用できる領域を増やすことができる。ホストが偶然「所定のデータパターン」を書き込んだ場合でも、トリム要求を受けたことによりコントローラが書き込んだ場合でも、特に区別する必要はない。「所定のデータパターン」をトリム対象領域のフラグとして利用するので、各セクタが不要かどうかを示すフラグを保存する追加の記憶領域を必要としない。
【００３８】
また、トリム要求のうち、従来は破棄、或いは記憶領域を追加して記憶していた管理単位にアラインされていない領域の情報を、追加の記憶領域を必要とせずに記憶し、トリム要求の全ての情報を活用できるようになる。管理単位にアラインされていないトリム要求を複数個組み合わせて管理単位を解放し、利用できる不揮発性半導体メモリの領域を増やすことができる。
【００３９】
なお、上記実施形態においてはセクタよりも大きな管理単位が１種類であるとして説明したが、例えばクラスタ（例えば、セクタの２以上の自然数倍）およびトラック（例えば、クラスタの２以上の自然数倍）などとセクタよりも大きな管理単位が複数種類ある場合において、小さな管理単位から大きな管理単位にデフラグする場合などには、そのときに上述した無効化処理を実行するようにしてもかまわない。具体的には、ある上位の管理単位を構成する下位の管理単位が全て「所定のデータパターン」となった場合に、当該上位の管理単位を解放することなどが考えられる。
【００４０】
また、上記実施形態では「所定のデータパターン」を書き込むコマンドとしてトリムコマンドを例に挙げて説明したが、これに限定されるものではない。例えば、不良セクタの位置を示す情報がホストから送られた場合に、当該不良セクタに対応するＬＢＡに「所定のデータパターン」を書き込むことにしても良い。
【００４１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４２】
１  ホスト、２  ＳＳＤ、３  コントローラ、４  ＲＡＭ、５  データパターン検出部、６  ＮＡＮＤフラッシュメモリ、４０  管理情報記憶部。
【図１】
0005581256.tif 000002
【図２】
0005581256.tif 000003
【図３】
0005581256.tif 000004
【図４】
0005581256.tif 000005
【図５】
0005581256.tif 000006
【図６】
0005581256.tif 000007
【図７】
0005581256.tif 000008
【図８】
0005581256.tif 000009