(57)【要約】      （修正有）【課題】マルチストリーム管理されるデータを好適に管理するメモリシステムおよび不揮発性メモリの制御方法を提供する。【解決手段】第１ストリームに関連付けられた第１ブロックにストアされた有効な第１データおよび第１ストリームに関連付けられた第２ブロックにストアされた有効な第２データをＮＡＮＤメモリ１０からリードし、リードされた第１データおよび第２データをＮＡＮＤメモリ１０の第３ブロックにライトする。したがって、ガベージコレクションによるWAF（Ｗｒｉｔｅ  Ａｍｐｌｉｆｉｃａｔｉｏｎ  Ｆａｃｔｏｒ）の増加が防止され、メモリシステムが長寿命化し、性能が向上する。【選択図】図１
2018160195.tif 000002
【特許請求の範囲】
【請求項１】
複数のブロックを有する不揮発性メモリと、
第１ストリームに関連付けられた第１ブロックにストアされた有効な第１データおよび前記第１ストリームに関連付けられた第２ブロックにストアされた有効な第２データを前記不揮発性メモリからリードし、前記リードされた第１データおよび第２データを前記不揮発性メモリの第３ブロックにライトすることを含む第１ストリームにかかる第１ガベージコレクションを実行し、
第２ストリームに関連付けられた第４ブロックにストアされた有効な第３データおよび前記第２ストリームに関連付けられた第５ブロックにストアされた有効な第４データを前記不揮発性メモリからリードし、前記リードされた第３データおよび第４データを前記不揮発性メモリの第６ブロックにライトすることを含む第２ストリームにかかる第２ガベージコレクションを実行し、
前記第１ガベージコレクションの実行に応じて前記第３ブロックを前記第１ストリームに関連付け、前記第２ガベージコレクションの実行に応じて前記第６ブロックを前記第２ストリームに関連付ける
ように動作する制御回路を備えるメモリコントローラと、
を備えるメモリシステム。
【請求項２】
前記制御回路は、
ブロック内の有効データ量または有効データ率に基づいて、前記第１ストリームに関連付けられた複数のブロックから前記第１ブロックおよび前記第２ブロックを選択し、かつ前記第２ストリームに関連付けられた複数のブロックから前記第４ブロックおよび前記第５ブロックを選択する請求項１に記載のメモリシステム。
【請求項３】
前記制御回路は、
前記第１データおよび前記第２データがライトされた前記第３ブロックの数が第１の閾値に到達した場合に、前記第１ガベージコレクションを終了し、
前記第３データおよび前記第４データがライトされた前記第６ブロックの数が前記第１の閾値に到達した場合に、前記第２ガベージコレクションを終了する
請求項１に記載のメモリシステム。
【請求項４】
前記制御回路は、
第１ストリームに関連付けられた複数のブロックのなかの、有効データ量または有効データ率が第２の閾値より小さいブロックの数が、第３の閾値より少ないことに応じて、前記第１ガベージコレクションを終了し、
第２ストリームに関連付けられた複数のブロックのなかの、有効データ量または有効データ率が前記第２の閾値より小さいブロックの数が、前記第３の閾値より少ないことに応じて、前記第２ガベージコレクションを終了する
請求項１に記載のメモリシステム。
【請求項５】
前記制御回路は、
前記第１データおよび前記第２データがライトされた前記第３ブロックの数が第１の閾値に到達した場合であって、前記第１ブロックまたは前記第２ブロックに残存する有効データ量が第４の閾値より少ない場合、前記残存する有効データを、第１ストリームおよび第２ストリームで共用される第７のブロックにライトする
請求項１に記載のメモリシステム。
【請求項６】
前記制御回路は、
前記第７のブロックに対して無効値のストリームIDを関連付ける請求項５に記載のメモリシステム。
【請求項７】
前記制御回路は、
前記第１データおよび前記第２データがライトされた前記第３ブロックの数が第１の閾値に到達した場合であって、前記第１ブロックまたは前記第２ブロックに残存する有効データ量が第４の閾値より多い場合、前記残存した有効データを前記第１ブロックまたは前記第２のブロックに残存させた状態で、前記第１ガベージコレクションを終了する
請求項１に記載のメモリシステム。
【請求項８】
前記第１ストリームに関連付けられた、ホストから受信したデータをバッファリングするライトバッファを更に備え、
前記制御回路は、
前記第１データおよび前記第２データがライトされた前記第３ブロックの数が第１の閾値に到達した場合であって、前記ライトバッファの空き容量と前記第１ブロックまたは前記第２ブロックに残存する有効データ量との差が第５の閾値より大きい場合、前記残存する有効データを前記ライトバッファにバッファリングする
請求項１に記載のメモリシステム。
【請求項９】
前記制御回路は、
前記第１ストリームに関連付けられるデータをホストから受信すると、受信したデータを前記ライトバッファにバッファリングし、
前記ライトバッファにバッファリングされたデータ量が第６の閾値を越えると、前記ライトバッファのデータを前記第１のストリームに関連付けられる第８のブロックにライトする
請求項８に記載のメモリシステム。
【請求項１０】
前記制御回路は、
前記第１データおよび前記第２データがライトされた前記第３ブロックの数が前記第１の閾値に到達した場合であって、前記差が前記第５の閾値より小さい場合、前記残存する有効データを前記第１ブロックまたは前記第２のブロックに残存させた状態で、前記第１ガベージコレクションを終了する
請求項８に記載のメモリシステム。
【請求項１１】
前記制御回路は、
前記第１ガベージコレクションでは、前記第３のブロックを一つずつ選択し、選択された１つの第３ブロックに、前記リードされた第１データおよび第２データをライトし、
前記第１ガベージコレクションの終了後に、前記第２ガベージコレクションを開始する
請求項３に記載のメモリシステム。
【請求項１２】
複数のブロックを有する不揮発性メモリの制御方法であって、
第１ストリームに関連付けられた第１ブロックにストアされた有効な第１データおよび前記第１ストリームに関連付けられた第２ブロックにストアされた有効な第２データを前記不揮発性メモリからリードし、前記リードされた第１データおよび第２データを前記不揮発性メモリの第３ブロックにライトすることを含む第１ストリームにかかる第１ガベージコレクションを実行することと、
第２ストリームに関連付けられた第４ブロックにストアされた有効な第３データおよび前記第２ストリームに関連付けられた第５ブロックにストアされた有効な第４データを前記不揮発性メモリからリードし、前記リードされた第３データおよび第４データを前記不揮発性メモリの第６ブロックにライトすることを含む第２ストリームにかかる第２ガベージコレクションを実行することと、
前記第１ガベージコレクションの実行に応じて前記第３ブロックを前記第１ストリームに関連付け、前記第２ガベージコレクションの実行に応じて前記第６ブロックを前記第２ストリームに関連付けること、
を備える不揮発性メモリの制御方法。
【請求項１３】
ブロック内の有効データ量または有効データ率に基づいて、前記第１ストリームに関連付けられた複数のブロックから前記第１ブロックおよび前記第２ブロックを選択し、かつ前記第２ストリームに関連付けられた複数のブロックから前記第４ブロックおよび前記第５ブロックを選択すること
をさらに備える請求項１２に記載の不揮発性メモリの制御方法。
【請求項１４】
前記第１データおよび前記第２データがライトされた前記第３ブロックの数が第１の閾値に到達した場合に、前記第１ガベージコレクションを終了することと、
前記第３データおよび前記第４データがライトされた前記第６ブロックの数が前記第１の閾値に到達した場合に、前記第２ガベージコレクションを終了すること
をさらに備える請求項１２に記載の不揮発性メモリの制御方法。
【請求項１５】
第１ストリームに関連付けられた複数のブロックのなかの、有効データ量または有効データ率が第２の閾値より小さいブロックの数が、第３の閾値より少ないことに応じて、前記第１ガベージコレクションを終了することと、
第２ストリームに関連付けられた複数のブロックのなかの、有効データ量または有効データ率が前記第２の閾値より小さいブロックの数が、前記第３の閾値より少ないことに応じて、前記第２ガベージコレクションを終了すること
をさらに備える請求項１２に記載の不揮発性メモリの制御方法。
【請求項１６】
前記第１データおよび前記第２データがライトされた前記第３ブロックの数が第１の閾値に到達した場合であって、前記第１ブロックまたは前記第２ブロックに残存する有効データ量が第４の閾値より少ない場合、前記残存する有効データを、第１ストリームおよび第２ストリームで共用される第７のブロックにライトすること
をさらに備える請求項１２に記載の不揮発性メモリの制御方法。
【請求項１７】
前記第１データおよび前記第２データがライトされた前記第３ブロックの数が第１の閾値に到達した場合であって、前記第１ブロックまたは前記第２ブロックに残存する有効データ量が第４の閾値より多い場合、前記残存した有効データを前記第１ブロックまたは前記第２のブロックに残存させた状態で、前記第１ガベージコレクションを終了すること
をさらに備える請求項１２に記載の不揮発性メモリの制御方法。
【請求項１８】
前記不揮発性メモリは、前記第１ストリームに関連付けられたライトバッファを更に備え、
前記第１データおよび前記第２データがライトされた前記第３ブロックの数が第１の閾値に到達した場合であって、前記ライトバッファの空き容量と前記第１ブロックまたは前記第２ブロックに残存する有効データ量との差が第５の閾値より大きい場合、前記残存する有効データを、前記ライトバッファにバッファリングすること
をさらに備える請求項１２に記載の不揮発性メモリの制御方法。
【請求項１９】
前記第１ストリームに関連付けられるデータをホストから受信すると、受信したデータを前記ライトバッファにバッファリングすることと、
前記ライトバッファにバッファリングされたデータ量が第６の閾値を越えると、前記ライトバッファのデータを前記第１のストリームに関連付けられる第８のブロックにライトすること
をさらに備える請求項１８に記載の不揮発性メモリの制御方法。
【請求項２０】
前記第１ガベージコレクションでは、前記第３のブロックを一つずつ選択し、選択された１つの第３ブロックに、前記リードされた第１データおよび第２データをライトし、
前記第１ガベージコレクションの終了後に、前記第２ガベージコレクションを開始する請求項１２に記載の不揮発性メモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、不揮発性メモリを備えるメモリシステムおよび不揮発性メモリの制御方法に関する。
【背景技術】
【０００２】
マルチストリーム制御では、ホストは、マルチストリーム管理を行い、例えばライフタイムが同じデータに同一のストリームIDを割り当てる。同じストリームIDを持つデータは、まとめて無効化される可能性が高い。しかし、ホストで行われるマルチストリーム管理は、アプリケーションや使用ユーザーによっては、適切でない可能性がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１５９０４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、マルチストリーム管理されるデータを好適に管理するメモリシステムおよび不揮発性メモリの制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、メモリシステムは、複数のブロックを有する不揮発性メモリと、制御回路を備えるメモリコントローラとを備える。前記制御回路は、第１ストリームに関連付けられた第１ブロックにストアされた有効な第１データおよび前記第１ストリームに関連付けられた第２ブロックにストアされた有効な第２データを前記不揮発性メモリからリードし、前記リードされた第１データおよび第２データを前記不揮発性メモリの第３ブロックにライトすることを含む第１ストリームにかかる第１ガベージコレクションを実行する。前記制御回路は、第２ストリームに関連付けられた第４ブロックにストアされた有効な第３データおよび前記第２ストリームに関連付けられた第５ブロックにストアされた有効な第４データを前記不揮発性メモリからリードし、前記リードされた第３データおよび第４データを前記不揮発性メモリの第６ブロックにライトすることを含む第２ストリームにかかる第２ガベージコレクションを実行する。前記制御回路は、前記第１ガベージコレクションの実行に応じて前記第３ブロックを前記第１ストリームに関連付け、前記第２ガベージコレクションの実行に応じて前記第６ブロックを前記第２ストリームに関連付ける。
【図面の簡単な説明】
【０００６】
【図１】図１は、メモリシステムの構成例を示すブロック図である。
【図２】図２は、マルチストリームのライト動作を概念的に示す図である。
【図３】図３は、ストリーム管理情報のデータ構造を示す図である。
【図４】図４は、第１の実施形態のガベージコレクションの動作手順を示すフローチャートである。
【図５】図５は、第１の実施形態のガベージコレクションの動作手順を示すフローチャートである。
【図６】図６は、破片データの書き込みの動作手順を示すフローチャートである。
【図７】図７は、第１の実施形態のガベージコレクションの動作を概念的に示す図である。
【図８】図８は、第２の実施形態のライトバッファの構成例を示すブロック図である。
【図９】図９は、第２の実施形態のガベージコレクションの動作手順を示すフローチャートである。
【図１０】図１０は、第２の実施形態のガベージコレクションの動作を概念的に示す図である。
【図１１】図１１は、ホストからマルチストリームのライト要求を受信したときのメモリシステムの動作手順を示すフローチャートである。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施の形態にかかるメモリシステムおよび不揮発性メモリの制御方法を詳細に説明する。なお、これらの実施の形態により本発明が限定されるものではない。
【０００８】
（第１の実施形態）
図１は第１の実施形態のメモリシステム１００の構成例を示すブロック図である。メモリシステム１００は、ホスト装置(以下、ホストと略す)１と通信線で接続され、ホスト１の外部記憶装置として機能する。ホスト１は、例えば、パーソナルコンピュータなどの情報処理装置、携帯電話、撮像装置であってもよいし、タブレットコンピュータやスマートフォンなどの携帯端末であってもよいし、ゲーム機器であってもよいし、カーナビゲーションシステムなどの車載端末であってもよい。
【０００９】
メモリシステム１００は、不揮発性メモリとしてのＮＡＮＤ型フラッシュメモリ（以下、ＮＡＮＤメモリと略す）１０と、メモリコントローラ２０と、ＲＡＭ(Random Access Memory)４０を備える。不揮発性メモリとしては、ＮＡＮＤ型フラッシュメモリに限らず、３次元構造フラッシュメモリ、ＲｅＲＡＭ（Resistance Random Access Memory））、ＦｅＲＡＭ（Ferroelectric Random Access Memory）、クロスポイント型メモリ、相変化型メモリ(Phase Change Memory; PCM)、磁気抵抗メモリ(Magnetoresistive Random Access Memory; MRAM)などであってもよい。
【００１０】
ＮＡＮＤメモリ１０は、複数のメモリチップを有する。各メモリチップは、複数の物理ブロックを有する。物理ブロックは、データ消去の物理的な最小単位である。各物理ブロックは、複数のメモリセルを有する。各メモリセルは多値記憶が可能である。各物理ブロックは、複数のページを含む。データのリードおよびライトは、ページ単位で実行される。ページへのデータ書き込みは、一般的に１消去サイクル当たり１回のみ可能である。また、ＮＡＮＤメモリ１０は、複数の論理ブロック#B1,#B2,…,#Bnを含む。論理ブロックは、複数のメモリチップから物理ブロックを集めて構成される。論理ブロックは、チップ並列動作を行えるように複数の物理ブロックが組み合わせられる。論理ブロックを構成する複数の物理ブロックは、同時に消去されて、データ書込み用の論理ブロックとして使用される。なお、プレーン並列動作が可能なメモリチップの場合、プレーン並列動作およびチップ並列動作が可能なように論理ブロックを構成してもよい。
【００１１】
ＮＡＮＤメモリ１０には、ホスト１から送信されるユーザデータと、メモリシステム１００の管理情報と、ファームウェアなどがストアされる。前記ファームウェアは、メモリコントローラ２０の制御部３０の機能の少なくとも一部を実現するＣＰＵ（図示せず）を動作させる。前記ファームウェアは、図示しないＲＯＭにストアされてもよい。前記管理情報は、論理物理変換情報（Ｌ２Ｐ情報）などを含む。
【００１２】
ＲＡＭ４０は、ＮＡＮＤメモリ１０よりも高速アクセスが可能な揮発性の半導体メモリである。ＲＡＭ４０としては、ＳＲＡＭ（Static Random Access Memory）やＤＲＡＭ(Dynamic Random Access Memory)が用いられる。ＲＡＭ４０は、ライトバッファ４２、ガベージコレクションバッファ(以下、GCバッファという)４３、書き込み完了カウンタ４５を有する。ＲＡＭ４０は、Ｌ２Ｐ情報４１、ストリーム管理情報４４、ブロック管理情報４６をストアする。ホスト１から受信されたデータは、ＮＡＮＤメモリ１０にライトされる前に、ライトバッファ４２に一時的にバッファリングされる。GCバッファ４３は、ＮＡＮＤメモリ１０のガベージコレクション元の論理ブロックからリードした有効データを、ガベージコレクション先の論理ブロックにライトするまでの間バッファリングする。書き込み完了カウンタ４５は、ガベージコレクションによって書き込み完了した論理ブロック数の計数値をストリームID毎に保持する。
【００１３】
Ｌ２Ｐ情報４１は、ホスト１が指定可能な論理アドレスと、ＮＡＮＤメモリ１０の物理アドレスとを関連付けるマッピング情報を含む。論理アドレスとしては、例えばＬＢＡ（Logical Block Addressing）が用いられる。物理アドレスは、データが記憶されているＮＡＮＤメモリ１０上の記憶位置を示している。
【００１４】
前記管理情報の一つであるブロック管理情報４６は、ＮＡＮＤメモリ１０に含まれる論理ブロックを管理する。ブロック管理情報では、例えば以下のブロック管理情報が管理される。
・論理ブロック単位の消去回数（erase count）
・論理ブロックがアクティブブロックかフリーブロックかを区別する情報
・論理ブロック単位の有効データ数あるいは有効データ率
・バッドブロックのブロックアドレス
・論理ブロックとストリームIDとの関連付け情報
【００１５】
論理ブロックは、アクティブブロック→フリーブロック→消去済ブロック→書き込み先ブロック→アクティブブロックという順番でサイクリックに遷移される。アクティブブロックは、１以上の有効（valid）データが記録されており、かつ有効データまたは無効データで満杯のブロックである。あるいは、アクティブブロックは、１以上の有効（valid）データが記録されており、かつこれ以上の書き込みを行わないブロックである。フリーブロックは、有効データが記録されていない。フリーブロックは、データを消去した後、消去済みブロックとして再利用可能である。有効データとはＬ２Ｐ情報４１によって論理アドレスと対応付けられているデータであり、無効データとはＬ２Ｐ情報４１によって論理アドレスが対応付けられていないデータである。消去済みブロックは書き込み先ブロックに遷移する。書き込み先ブロックに対して、書き込みが開始される。書き込み先ブロックは、データを書き込むことが可能である。アクティブブロックは、データを書き込むことができない。バッドブロックは、様々な要因で正常に動作せず、使用不可となっている。
【００１６】
ストリーム管理情報４４は、ストリームIDと、ストリームIDが付加されたデータがライトされる１または複数の書き込み先ブロックおよび／またはアクティブブロックとの対応関係を含む。
【００１７】
メモリコントローラ２０は、ホストインタフェース（ホストIF）２１と、メモリインタフェース（メモリIF）２２と、制御部３０とを備える。本実施形態は、ＲＡＭ４０をメモリコントローラ２０の外部に設けているが、ＲＡＭ４０をメモリコントローラ２０の内部に設けてもよい。
【００１８】
ホストIF２１は、ホスト１からライト要求およびリード要求を受信する。前記ライト要求は、ライトコマンド、ライトアドレス、ライトデータを含む。前記リード要求は、リードコマンド、リードアドレスを含む。ホストIF２１は、受信されたライト要求またはリード要求を制御部３０に転送する。また、ホストIF２１は、ＮＡＮＤメモリ１０から読み出されたユーザデータ、制御部３０の応答などをホスト１へ送信する。
【００１９】
制御部３０は、メモリシステム１００の各構成要素を統括的に制御する。制御部３０は、データ管理部３１、ライト制御部３２、リード制御部３３、ガベージコレクション元供給部(以下、GC元供給部という)３４、ガベージコレクション先供給部(以下、GC先供給部という)３５、ガベージコレクション書き込み部(GC書き込み部)３６を有する。制御部３０は、ＲＡＭ４０にロードされたファームウェアを実行する１または複数のＣＰＵ（プロセッサ）および周辺回路によってその機能が実現される。
【００２０】
データ管理部３１は、前記ブロック管理情報４６を使用してＮＡＮＤメモリ１０に含まれる論理ブロックの管理を実行する。データ管理部３１は、前記Ｌ２Ｐ情報４１を使ってユーザデータを管理する。ホスト１からライト要求を受信した場合、データ管理部３１は、ブロック管理情報４６を使って論理アドレスとしてのライトアドレスを物理アドレスへ変換し、ライトデータを書き込むＮＡＮＤメモリ１０上の記録位置（物理アドレス）を決定する。データ管理部３１は、論理アドレスおよび決定された物理アドレスによってＬ２Ｐ情報４１を更新する。ホスト１からリード要求を受信した場合、データ管理部３１は、Ｌ２Ｐ情報４１を使って論理アドレスとしてのリードアドレスを物理アドレスへ変換し、データをリードするＮＡＮＤメモリ１０上の記録位置（物理アドレス）を決定する。
【００２１】
ライト制御部３２は、ホスト１から受信したライト要求に従い、ＮＡＮＤメモリ１０にデータを書き込むための処理を実行する。ライト制御部３２は、ホスト１からライト要求を受信した場合、ホスト１から転送されたデータをライトバッファ４２にバッファリングする。ライト制御部３２は、ライトバッファ４２にバッファリングされたデータが所定量を超えた場合、ライトバッファ４２からデータをメモリIF２２に転送する。また、ライト制御部３２は、データを書込むべきＮＡＮＤメモリ１０上の物理アドレスをデータ管理部３１から取得し、取得された物理アドレスをメモリIF２２に出力する。
【００２２】
リード制御部３３は、ホスト１から受信したリード要求に従い、ＮＡＮＤメモリ１０からデータを読み出すための制御を行う。リード制御部３３は、リードデータの論理アドレスに対応するＮＡＮＤメモリ１０上の物理アドレスをデータ管理部３１から取得し、取得された物理アドレスをメモリIF２２に出力する。
【００２３】
GC元供給部３４、GC先供給部３５およびGC書き込み部３６は、ガベージコレクションを実行する。メモリシステム１００において、データの消去単位（ブロック）と、データの書き込み単位が異なる場合、ＮＡＮＤメモリ１０の書き換えが進むと、無効なデータによって、ブロックは断片化(fragmented)される。このような断片化されたブロックが増えると、使用可能なブロックが少なくなる。そこで、例えば、ＮＡＮＤメモリ１０のフリーブロックの数が所定の閾値より少なくなった場合、ガベージコレクションを実行し、フリーブロックを増加させる。ガベージコレクションでは、有効なデータおよび無効なデータが含まれているガベージコレクション元の１または複数の論理ブロックから有効データが集められて、ガベージコレクション先の論理ブロックに書き直される。
【００２４】
GC元供給部３４は、ストリーム管理情報４４、ブロック管理情報４６で管理される有効データ率（または有効データ量）、および書き込み完了カウンタ４５に基づいて、アクティブブロックをガベージコレクション元の論理ブロックとして選択する。
【００２５】
GC書き込み部３６は、GC元供給部３４によって指定されたGC元の論理ブロックから有効データをリードし、リードされた有効データをGCバッファ４３にバッファリングする。GC書き込み部３６は、バッファリングされた有効データを、GC先供給部３５によって指定されたGC先の論理ブロックへ書き込む。GC書き込み部３６は、論理ブロックを１つ書き込み完了する毎に、書き込み完了カウンタをインクリメントする。GC書き込み部３６は、書き込みに応じて、GC先の論理ブロックがストリームIDに対応するようにストリーム管理情報４４を更新する。
【００２６】
メモリIF２２は、ライト制御部３２から入力された物理アドレスとライトバッファ４２から入力されるライトデータをＮＡＮＤメモリ１０に出力することによって、ＮＡＮＤメモリ１０へライトデータを書き込む。また、メモリIF２２は、リード制御部３３から入力された物理アドレスをＮＡＮＤメモリ１０に出力することによって、ＮＡＮＤメモリ１０からデータをリードする。メモリIF２２は、ＥＣＣ（Error Correcting Code; ECC）回路を備えてもよい。ＥＣＣ回路は、ライトバッファ４２から転送されたデータに対して、誤り訂正の符号化処理を実施しパリティを生成する。ＥＣＣ回路は、データおよびパリティを含む符号語をＮＡＮＤメモリ１０へ出力する。ＥＣＣ回路は、ＮＡＮＤメモリ１０からリードされた符号語を用いて誤り訂正の復号化処理を実行し、復号されたデータをリード制御部３３に転送する。
【００２７】
本実施形態にかかるメモリシステム１００は、通常のライト動作に加え、前記ガベージコレクションの実行頻度を少なくするためのマルチストリームのライト動作をサポートしている。マルチストリームにおいては、ホスト１は、同じファイルに含まれるデータのような、同じライフタイムを持つデータを同じストリームIDを持つストリームに関連付ける。メモリシステム１００は、同じストリームIDに関連付けられた１以上のデータを同じグループに所属する１または複数の論理ブロックにライトする。一方、異なるストリームIDに関連付けられたデータは異なるグループに所属する論理ブロックにライトする。ホスト１がデータを削除する際、同じストリームIDに関連付けられた全データが一斉に無効化する可能性が高いため、本実施形態にかかるメモリシステム１００によるマルチストリーム制御によれば、ガベージコレクションの実行頻度を少なくすることができ、メモリシステム１００の性能劣化や寿命短縮を改善できる。
【００２８】
図２は、本実施形態にかかるマルチストリームによるライト動作を概念的に示す図である。ストリームID1が付されたデータ（LBA1、LBA2、LBA3、LBA4、LBA5によってそれぞれ指定されるデータ）は、ID1のストリーム用に割り当てられた消去済みの論理ブロック#B1にライトされる。ストリームID2が付されたデータ（LBA102、LBA103、LBA200、LBA10、LBA201によってそれぞれ指定されるデータ）は、ID2のストリーム用に割り当てられた消去済みの論理ブロック#B2にライトされる。
【００２９】
ホスト１がストリームIDを割り当てるポリシーとしては、各々のアプリケーションが任意に決めているため、ライフタイムが異なるデータが同一のストリームに割り当てられる場合や、各ストリームIDに割り当てられるデータサイズがメモリシステム１００におけるストリームデータの管理単位と一致していない場合がある。このような場合は、メモリシステム１００での書き込みが進行すると、マルチストリーム管理される論理ブロックに対してもガベージコレクションが発生する可能性がある。マルチストリーム管理される論理ブロックに対するガベージコレクションが発生した場合、例えば、有効データ率のみによってガベージコレクション元の論理ブロックを選択すると、異なるストリームIDを持つデータが同じガベージコレクション先の論理ブロックに混在して書き込まれる。この場合、WAF(Write Amplification Factor)が増加し、メモリシステム１００の寿命低下、性能低下の原因となる。
【００３０】
そこで、本実施形態では、同じストリームIDを持つ論理ブロックのみをガベージコレクション元として選択して、ガベージコレクションを実行する。すなわち、本実施形態のガベージコレクションにおいては、第１ストリームに関連付けられた第１ブロックにストアされた有効な第１データおよび前記第１ストリームに関連付けられた第２ブロックにストアされた有効な第２データをＮＡＮＤメモリ１０からリードし、前記リードされた第１データおよび第２データをＮＡＮＤメモリ１０の第３ブロックにライトする。したがって、本実施形態では、ガベージコレクションによるWAFの増加が防止され、メモリシステムの長寿命化および性能向上が実現される。
【００３１】
図３は、データ管理部３１によって管理されるストリーム管理情報４４のデータ構造を示す図である。ストリーム管理情報４４は、ストリームIDと、１または複数の書き込み先ブロックのID（論理ブロックアドレス）および１または複数のアクティブブロックのIDとの対応関係を示す情報を含む。図３では、ストリームID1に、書き込み先ブロック#B5,#B6とアクティブブロック#B1,#B300,#B301,#B302が登録され、ストリームID2に、書き込み先ブロック#B7とアクティブブロック#B2,#B400,#B401が登録された例が示されている。無効値のストリームIDには、書き込み先ブロック#B201とアクティブブロック#B600が関連付けられている。データ管理部３１は、ホスト１からマルチストリーム制御の書き込み要求を受信した場合に、新たな書き込み先ブロックを選択するときに、ストリーム管理情報４４に前記関連付け情報を登録する。また、データ管理部３１は、ガベージコレクションを実行する場合に、新たなGC先の論理ブロックを選択するときに、ストリーム管理情報４４に前記関連付け情報を登録する。また、データ管理部３１は、アクティブブロックがフリーブロックに遷移するときに、ストリーム管理情報４４におけるストリームIDとアクティブブロックのIDとの関連付けを解消する。
【００３２】
クローズストリームコマンドは、オープンされているストリームのクローズを要求するコマンドである。クローズストリームコマンドは、クローズされるストリームのストリームIDを示すパラメータを含む。データ管理部３１は、クローズストリームコマンドをホスト１から受信すると、クローズストリームコマンドによって指定されたストリームIDに対応する書き込み先ブロックを、この後、アクティブブロックとして管理する。また、ストリーム管理情報４４において、クローズストリームコマンドによって指定されたストリームIDとこのストリームIDに対応する論理ブロックとの対応付けは変更されない。そして、データ管理部３１は、コマンド完了通知を含む応答をホスト１に送信する。
【００３３】
図４は、マルチストリーム管理される論理ブロックに対するガベージコレクションが発生したときの制御部３０の動作手順を示すフローチャートである。データ管理部３１は、マルチストリーム制御の全ストリームIDで使用されるフリーブロック数を計数している。この計数値が所定の閾値Ｃ１より少なくなった場合(S100 Yes)、データ管理部３１は、GC元供給部３４、GC先供給部３５およびGC書き込み部３６に対し指示し、マルチストリーム管理される論理ブロックに対するガベージコレクションを開始させる。データ管理部３１は、GC書き込み部３６に対し、書き込み完了数の目標値Ｃ２を指示する。書き込み完了数は、書き込み完了カウンタ４５の計数値に対応する。書き込み完了数の目標値Ｃ２は、ガベージコレクション処理の１周期で書き込みを完了するGC先の論理ブロック数の目標値を示している。
【００３４】
GC元供給部３４は、ストリーム管理情報４４およびブロック管理情報４６に基づいて、マルチストリーム管理される全てのアクティブブロックのなかから有効データ率が最も低いアクティブブロックを選択する(S110)。有効データ率とは、論理ブロックのサイズに対する有効なデータのサイズの割合である。なお、有効データ量が最も少ないアクティブブロックを選択してもよい。
【００３５】
GC書き込み部３６は、書き込み完了カウンタ４５の計数値を０にリセットする(S120)。GC先供給部３５は、例えば、消去済みブロックを１つ選択し、選択された消去済みブロックのブロックアドレスをガベージコレクション先としてGC書き込み部３６に通知する(S130)。
【００３６】
GC元供給部３４は、S110で選択されたアクティブブロックのブロックアドレスをガベージコレクション元としてGC書き込み部３６に通知する。さらに、GC元供給部３４は、S110で選択されたアクティブブロックが所属するストリームIDをストリーム管理情報４４に基づいて取得し、取得されたストリームIDをガベージコレクション対象の現ストリームIDとして設定する(S140)。ガベージコレクション対象の現ストリームIDを対象ストリームIDと略して呼称することもある。
【００３７】
GC先供給部３５は、S130で選択された消去済みブロックのストリームIDを、S140で設定された前記対象ストリームIDに一致させるようにストリーム管理情報４４を更新する(S150)。具体的には、GC先供給部３５は、S140で設定された対象ストリームIDに、S130で選択された消去済みブロックのブロックアドレスを関連付ける。
【００３８】
つぎに、GC書き込み部３６は、GC元供給部３４から通知されたGC元の論理ブロックアドレスと、GC先供給部３５から通知されたGC先の論理ブロックアドレスに基づいて、対象ストリームIDについてのガベージコレクション書き込み処理を開始する(S160)。
【００３９】
図５は、S160のガベージコレクション書き込み処理の詳細手順例を示すフローチャートである。GC書き込み部３６は、メモリIF２２を制御することによってＮＡＮＤメモリ１０のガベージコレクション元の論理ブロックから有効データを一定量リードする（S200）。GC書き込み部３６は、リードされた有効データをGCバッファ４３にバッファリングする。GC書き込み部３６は、メモリIF２２を制御することによって、CPバッファ４３にバッファリングされている有効データを、ガベージコレクション先の論理ブロックに書き込む(S210)。GC書き込み部３６は、ガベージコレクション先の論理ブロックの終端まで有効データが書き込まれたか否かを判定する(S220)。S220の判定がNoである場合、GC書き込み部３６は、ガベージコレクション元の論理ブロックに有効データが残っているか否かを判定する(S230)。S230の判定がYesである場合、GC書き込み部３６は、S200,S210,S220の処理を再度繰り返す。ガベージコレクション元の論理ブロックに有効データが残っていない場合(S230 No)、GC書き込み部３６は、このガベージコレクション元の論理ブロックのブロックIDと前記対象ストリームIDとの関連付けを無効とするように、ストリーム管理情報４４を更新する(S295)。これにより、アクティブブロックが解放され、フリーブロックに遷移される。S295の処理が終了すると、図５に示した処理は完了して、処理は図４のS180に移行される。
【００４０】
S220で、ガベージコレクション先の論理ブロックの終端までデータが書き込まれた場合(S220 Yes)、GC書き込み部３６は、書き込み完了カウンタ４５の計数値をインクリメントし(S240)、終端までデータが書き込まれた書込み先ブロックをアクティブブロックとしてストリーム管理情報４４で管理するようにデータ管理部３１に要求する。また、GC書き込み部３６は、前記インクリメントした計数値が、書き込み完了数の目標値Ｃ２に達したか否かを判定する(S250)。書き込み完了カウンタ４５の計数値が目標値Ｃ２に達していない場合(S250 No)、GC書き込み部３６は、新たなガベージコレクション先の論理ブロックをGC先供給部３５に要求する。すなわち、S250の判断がNoとなるケースは、ガベージコレクション元に有効データが残った状態で(S230 Yes)、ガベージコレクション先の論理ブロックの終端までデータが書き込まれた状態で(S220 Yes)、かつ書き込み完了したGC先の論理ブロック数が目標値Ｃ２に達していないケースであるので、新たなガベージコレクション先の論理ブロックの確保が必要になる。GC書き込み部３６から要求があると、GC先供給部３５は、例えば、消去済みブロックを１つ選択し、選択された消去済みブロックのブロックアドレスをガベージコレクション先としてGC書き込み部３６に通知する(S260)。GC先供給部３５は、S260で選択された消去済みブロックが、図４のS140で設定された前記対象ストリームIDに一致するようにストリーム管理情報４４を更新する(S270)。この後、処理は、S230に移行される。
【００４１】
S250で、書き込み完了カウンタ４５の計数値が、書き込み完了数の目標値Ｃ２に達している場合(S250 Yes)、GC書き込み部３６は、ガベージコレクション元の論理ブロックに残存する有効データ量が閾値Ｃ３以上あるか否かを判定する(S280)。残存する有効データ量が閾値Ｃ３以上ある場合(S280 Yes)、GC書き込み部３６は、ガベージコレクション元の論理ブロックに残存する有効データは破片データでないと判断し、ガベージコレクション元の論理ブロックに残存する有効データをそのまま残し、次回のガベージコレクションの対象とする。この後、処理は、図４のS100に移行される。残存する有効データ量が閾値Ｃ３以上でない場合(S280 No)、ガベージコレクション元の論理ブロックに残存する有効データは破片データであると判断し、GC書き込み部３６は、破片データの書き込み処理を実行する(S290)。
【００４２】
図６は破片データの書き込み処理の詳細手順例を示すフローチャートである。GC書き込み部３６は、破片データ書き込み用の論理ブロックが未設定であるか否かを判定する。破片データ用の論理ブロックは、異なる複数のストリームIDで共用する論理ブロックである。破片データ用の論理ブロックが未設定でない（設定されている）場合(S300 No)、GC書き込み部３６は、破片データ用の論理ブロックに、破片データを書き込むための空き容量があるか否かを判定する(S305)。空き容量がある場合(S305 Yes)、GC書き込み部３６は、破片データ書き込み用の論理ブロックに破片データを書き込む(S310)。一方、S300の判定がYesである場合、またはS305の判定がNoである場合、GC書き込み部３６は、例えば、消去済みブロックを取得し、取得した消去済みブロックを破片データ書き込み用の論理ブロックに設定する(S320)。なお、破片データで満杯となった破片データ用の論理ブロックは、この後も、ストリーム管理情報４４において、ストリームIDが無効値の論理ブロック（アクティブブロック）として管理される。GC書き込み部３６は、破片データ用の論理ブロックのストリームIDを無効値に設定する(S330)。GC書き込み部３６は、新たに設定された破片データ用の論理ブロックに破片データを書き込む(S310)。破片データの書き込み処理が終了すると、ガベージコレクション元の論理ブロックには、有効データが残っていない。GC書き込み部３６は、ガベージコレクション元の論理ブロックのブロックIDと前記対象ストリームIDとの関連付けを無効とするように、ストリーム管理情報４４を更新する(S298)。これにより、アクティブブロックが解放され、フリーブロックに遷移される。この後、処理は、図４のS100に移行される。
【００４３】
GC書き込み部３６は、図５のS295の実行後、対象ストリームIDに所属する、新たなガベージコレクション元の論理ブロックをGC元供給部３４に要求する。GC元供給部３４は、ストリーム管理情報４４に基づいて対象ストリームIDに所属する論理ブロックが存在するか否かを判定する(S180)。対象ストリームIDに所属する論理ブロックが存在する場合(S180 Yes)、GC元供給部３４は、ストリーム管理情報４４およびブロック管理情報４６に基づいて、対象ストリームIDに所属する複数の論理ブロックのなかから有効データ率が最も低いアクティブブロックを選択する。GC元供給部３４は、選択されたアクティブブロックのブロックアドレスを新たなガベージコレクション元としてGC書き込み部３６に通知する(S190)。この後、前述したガベージコレクション書き込み処理が実行される(S160)。
【００４４】
図５のS240がYesとなり、S280、S290の処理が実行された場合、GC書き込み部３６は、現対象ストリームIDの論理ブロックを使用したガベージコレクションを終了する。つぎに、GC書き込み部３６は、フリーブロック数が閾値Ｃ１以上確保されたか否かをデータ管理部３１に対し確認する(S100)。フリーブロック数が閾値Ｃ１未満である場合(S100 Yes)、GC書き込み部３６は、GC元供給部３４に対し、新たな対象ストリームIDの選択を要求する。GC元供給部３４は、ストリーム管理情報４４およびブロック管理情報４６に基づいて、マルチストリーム管理される全てのアクティブブロックのなかから有効データ率が最も低いアクティブブロックを選択する(S110)。この選択の際には、有効データ率のみが判断基準であり、直前の周期にガベージコレクション対象となったストリームIDに所属するアクティブブロックが選択される可能性もあるし、直前の周期にガベージコレクション対象となっていないストリームIDに所属するアクティブブロックが選択される可能性もある。この後、次のストリームIDの論理ブロックを使用したガベージコレクションが開始される。すなわち、前記同様、書き込み完了カウンタ４５の計数値がリセットされ(S120)、新たな消去済みブロックがガベージコレクション先として１つ確保され(S130)、S110で選択されたアクティブブロックが所属するストリームIDが新たな対象ストリームIDとして設定され(S140)、設定された新たな対象ストリームIDに、消去済みブロックのブロックIDが関連付けられる。
【００４５】
また、対象ストリームIDに所属する論理ブロックが存在しない場合(S180 No)、GC書き込み部３６は、現対象ストリームIDの論理ブロックを使用したガベージコレクションを終了する。この後、手順はS100に移行され、S100の判断がYesの場合は、手順がS110から再度実行される。このような制御が繰り返され、フリーブロック数が閾値Ｃ１個、確保された段階で(S100 No)、ガベージコレクションが終了する。
【００４６】
図７は、第１の実施形態のガベージコレクションの動作手順を概念的に示す図である。図７の上側には、ガベージコレクション元の論理ブロックである論理ブロック#B100,#B101,#B102が示されている。論理ブロック#B100,#B101は、ストリームID=1のストリームに所属し、論理ブロック#B102は、ストリームID=2のストリームに所属する。図７の下側には、ガベージコレクション先の論理ブロックである論理ブロック#B200,#B201,#B202が示されている。左下がりハッチング、右下がりハッチング、クロスハッチング、あるいは複数のドットが付された小さな四角は、有効データがストアされた物理クラスタに対応する。ブランクの小さな四角は、無効データがストアされた物理クラスタに対応する。クラスタは、Ｌ２Ｐ情報４１のマッピングの最小管理単位である。
【００４７】
図７においては、ストリームID=1に所属する論理ブロック#B100にストアされた有効データがリードされて論理ブロック#B200にライトされている。これにより、論理ブロック#B100は、有効データを含まなくなるので、ストリーム管理情報４４におけるストリームID=1と論理ブロック#B100との関連付けが解消される。この後、論理ブロック#B100はフリーブロックとして管理され、フリーブロック数がプラス１される。また、ストリームID=1に所属する論理ブロック#B101にストアされた有効データの一部がリードされて論理ブロック#B200にライトされている。このライトにより論理ブロック#B200は有効データで満杯になるので、書き込み完了カウンタ４５がインクリメントされる。また、ストリーム管理情報４４において、ストリームID=1に論理ブロック#B200が関連付けられる。
【００４８】
論理ブロック#B101には有効データが残存している。残存する有効データ量が閾値Ｃ３より少ないとする。したがって、論理ブロック#B101に残存する有効データがリードされて論理ブロック#B201にライトされている。これにより、論理ブロック#B101は、有効データを含まなくなるので、ストリーム管理情報４４におけるストリームID=1と論理ブロック#B101との関連付けが解消される。この後、論理ブロック#B101はフリーブロックとして管理され、フリーブロック数がプラス１される。論理ブロック#B201は、破片データ用の論理ブロックである。クロスハッチングが付された小さな四角および複数のドットが付された小さな四角は、ストリームID=1とは異なるストリームに所属する破片データを示している。図３に示したように、ストリーム管理情報４４において、論理ブロック#B201には、無効値のストリームIDが関連付けられている。
【００４９】
ストリームID=2に所属する論理ブロック#B102にストアされた有効データがリードされて論理ブロック#B202にライトされている。これにより、論理ブロック#B102は、有効データを含まなくなるので、ストリーム管理情報４４におけるストリームID=2と論理ブロック#B102との関連付けが解消される。この後、論理ブロック#B102はフリーブロックとして管理され、フリーブロック数がプラス１される。また、ストリーム管理情報４４において、ストリームID=2に論理ブロック#B202が関連付けられる。
【００５０】
（第２の実施形態）
第２の実施形態では、破片データをライトバッファ４２に書き込むようにしている。図８は、第２の実施形態に適用されるライトバッファ４２の内部構成例を示す図である。第２の実施形態では、ライトバッファ４２は、ストリームIDによって複数のバッファ領域に分割されている。すなわち、ライトバッファ４２は、ストリームID1用のバッファ領域４２ａ、ストリームID2用のバッファ領域４２ｂ、…を有する。第２の実施形態のメモリシステムの他の構成要素の機能は、図１に示したメモリシステム１００と同様であり、重複する説明は省略する。第２の実施形態においても、マルチストリーム管理される論理ブロックに対するガベージコレクションが発生したとき、制御部３０は、図４に示した動作手順に従って動作する。図９は、図４のS160のガベージコレクション書き込み処理手順の第２の実施形態の詳細手順例を示すフローチャートである。図９のS200,S210,S220,S230,S240,S250,S260,S270,およびS295の処理内容に関しては、図５のS200,S210,S220,S230,S240,S250,S260,S270,およびS295の処理内容と同じであり、重複する説明は省略する。
【００５１】
S250で、書き込み完了カウンタ４５の計数値が、書き込み完了数の目標値Ｃ２に達している場合(S250 Yes)、GC書き込み部３６は、現対象ストリームIDがオープンであるか否かを判定する(S400)。現対象ストリームIDがオープンでなくクローズされている場合(S400 No、GC書き込み部３６は、このガベージコレクション元の論理ブロックに残存する有効データをそのまま残し、次回のガベージコレクションの対象とする。なお、ストリームをクローズするとき、データ管理部３１は、クローズされるストリームID用のバッファ領域にバッファリングされているデータを、対応するストリームIDの論理ブロックにライトして前記バッファ領域を空にした後、クローズする。現対象ストリームIDがオープンである場合(S400 Yes )、GC書き込み部３６は、現対象ストリームIDのライトバッファ４２の空き容量からガベージコレクション元の論理ブロックに残存する有効データ量を減算する。GC書き込み部３６は、この減算結果を閾値Ｃ４と比較し、減算結果が閾値Ｃ４以上あるか否かを判定する(S410)。前記減算結果が閾値Ｃ４以上ある場合(S410 Yes)、GC書き込み部３６は、ガベージコレクション元の論理ブロックに残存する有効データは破片データであると判断し、ガベージコレクション元の論理ブロックに残存する有効データを現対象ストリームIDのライトバッファ４２にバッファリングする(S420)。なお、閾値Ｃ４は、破片データを現対象ストリームIDのライトバッファ４２にバッファリングしても、前記ライトバッファ４２にホスト１からのライトデータを或る程度バッファリングできる余裕があるように、設定される。ライトバッファ４２への破片データのバッファリング処理が終了すると、ガベージコレクション元の論理ブロックには、有効データが残っていない。GC書き込み部３６は、ガベージコレクション元の論理ブロックのブロックIDと前記対象ストリームIDとの関連付けを無効とするように、ストリーム管理情報４４を更新する(S298)。これにより、アクティブブロックが解放され、フリーブロックに遷移される。この後、処理は、図４のS100に移行される。前記減算結果が閾値Ｃ４未満である場合(S410 No)、GC書き込み部３６は、ガベージコレクション元の論理ブロックに残存する有効データは破片データでないと判断し、ガベージコレクション元の論理ブロックに残存する有効データをそのまま残し、次回のガベージコレクションの対象とする。この後、処理は、図４のS100に移行される。
【００５２】
図１０は、第２の実施形態のガベージコレクションの動作手順を概念的に示す図である。図１０の上側には、ガベージコレクション元の論理ブロックである論理ブロック#B100,#B101,#B102が示されている。図１０の下側には、ガベージコレクション先の論理ブロックである論理ブロック#B200,#B202と、破片データの書き込み先であるライトバッファ４２の一部の領域が示されている。
【００５３】
図１０においては、ストリームID=1に所属する論理ブロック#B100にストアされた有効データがリードされて論理ブロック#B200にライトされている。また、ストリームID=1に所属する論理ブロック#B101にストアされた有効データの一部がリードされて論理ブロック#B200にライトされている。ストリーム管理情報４４において、ストリームID=1に論理ブロック#B200が関連付けられる。
【００５４】
論理ブロック#B101には有効データが残存している。ストリームID=1用のバッファ領域の空き容量から論理ブロック#B101に残存する有効データ量を減算した値が閾値Ｃ４以上であるとする。したがって、論理ブロック#B101に残存する有効データがリードされてストリームID=1用のバッファ領域にバッファリングされている。また、ストリームID=2に所属する論理ブロック#B102にストアされた有効データがリードされて論理ブロック#B202にライトされている。ストリーム管理情報４４において、ストリームID=2に論理ブロック#B202が関連付けられる。
【００５５】
図１１は、マルチストリームのライトコマンドを受信したときの制御部３０の動作手順を示すフローチャートである。マルチストリームのライトコマンドを受信すると(S500 Yes)、ライト制御部３２は、ライトバッファ４２に含まれる複数のバッファ領域のうちの、ライトコマンドで指定されたストリームIDに対応するバッファ領域に、ホスト１から転送されたデータをバッファリングする(S510)。各ストリームIDのバッファ領域４２ａ、４２ｂ、…には、前述したように、ガベージコレクション処理の際に、破片データがバッファリングされている可能性がある。
【００５６】
ライト制御部３２は、各バッファ領域４２ａ、４２ｂ、…にバッファリングされたデータが所定量を超えた場合(S520 Yes)、バッファリングされたデータをバッファ領域からＮＡＮＤメモリ１０にフラッシュする。すなわち、ライト制御部３２は、ストリーム管理情報４４に基づいて、ライトデータが所属するストリームIDに関連付けられた論理ブロックIDを取得し、取得された論理ブロックIDに対応する論理ブロックに、バッファ領域内のデータをライトする(S530)。これにより、ライトバッファ４２にバッファリングされた破片データは、ホスト１からのマルチストリームのライトデータと共に、対応するストリームIDに関連付けられた論理ブロックに書き込まれる。
【００５７】
このように第２の実施形態によれば、破片データを各ストリーム専用のライトバッファにバッファリングし、その後のホスト１から受信されるライトデータとともに、対応するストリームIDに関連付けられたブロックに書き込むようにしている。このため、第１の実施形態の効果の他に、ガベージコレクションの際の処理時間を短縮できるという効果を有する。
【００５８】
なお、図４に示した動作手順では、ストリーム管理情報４４に基づいて現対象ストリームIDに所属する論理ブロックが存在するか否かをS180において判定し、対象ストリームIDに所属する論理ブロックが存在しない場合に、現対象ストリームIDの論理ブロックを使用したガベージコレクションを終了し、次のストリームIDの論理ブロックを使用したガベージコレクションを行うようにしている。しかし、S180の判定基準を次のように変更してもよい。すなわち、変形例では、現対象ストリームIDに所属する論理ブロックであって、有効データ率が閾値Ｃ５未満である論理ブロックの個数Ｎａが、閾値Ｃ６以上存在する多い場合に、手順をS190に移行させ、前記個数Ｎａが閾値Ｃ６未満である場合に、手順をS100に移行させる。閾値Ｃ５を、図５のS280で使用した閾値Ｃ３と一致させてもよい。この変形例では、有効データ率が閾値Ｃ５より少ない論理ブロックのみをガベージコレクション元として使用したガベージコレクションを行うようにしており、有効データ率の大きな論理ブロックを使ったガベージコレクションが行われることがない。
【００５９】
また、第１の実施形態において、破片データを破片データ書き込み用の論理ブロックに書き込まずに、ガベージコレクション元のブロックにそのまま残すように制御してもよい。また、第２の実施形態において、破片データをライトバッファ４２に書き込むことなく、ガベージコレクション元のブロックにそのまま残すように制御してもよい。
【００６０】
なお、上記した実施形態では、論理ページ単位に、データの書き込み、ガベージコレクションを行うようにしたが、物理ページ単位にデータの書き込み、ガベージコレクションを行うように制御してもよい。
【００６１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６２】
１  ホスト装置、１０  ＮＡＮＤ型フラッシュメモリ（ＮＡＮＤメモリ）、２０  メモリコントローラ、２１  ホストIF、２２  メモリIF、３０  制御部、３１  データ管理部、３２  ライト制御部、３３  リード制御部、３４  ガベージコレクション元供給部、３５  ガベージコレクション先供給部、３６  ガベージコレクション書き込み部、４０  ＲＡＭ、４１  Ｌ２Ｐ情報、４２  ライトバッファ、４３  ガベージコレクションバッファ、４４  ストリーム管理情報、４５  書き込み完了カウンタ、１００  メモリシステム。
【図１】
2018160195.tif 000003
【図２】
2018160195.tif 000004
【図３】
2018160195.tif 000005
【図４】
2018160195.tif 000006
【図５】
2018160195.tif 000007
【図６】
2018160195.tif 000008
【図７】
2018160195.tif 000009
【図８】
2018160195.tif 000010
【図９】
2018160195.tif 000011
【図１０】
2018160195.tif 000012
【図１１】
2018160195.tif 000013