(57)【要約】【課題】書込み時間の高速化と書込み可能容量の大容量化を実現すること。【解決手段】メモリシステムは、不揮発性のメモリと、コントローラとを備える。メモリは、第１モードでデータが書き込まれる複数の第１ブロックおよび第１モードまたは第１モードよりも単位体積当たりの記憶容量が大きい第２モードでデータが書き込まれる複数の第２ブロックを備える。複数の第１ブロックは、有効データを記憶していない第３ブロックを備え、複数の第２ブロックは、有効データを記憶していない第４ブロックを備える。コントローラは、ホストから書き込み要求されたデータを、第３ブロックの数が第１のしきい値よりも小さい場合には第３ブロックに書込み、第３ブロックの数が第１のしきい値よりも大きい場合には第４ブロックに書き込む。【選択図】図７
2015088121.tif 000002
【特許請求の範囲】
【請求項１】
第１モードでデータが書き込まれる複数の第１ブロックおよび第１モードまたは前記第１モードよりもメモリセル当たりの記憶容量が大きい第２モードでデータが書き込まれる複数の第２ブロックを備える複数のメモリセルからなる不揮発性のメモリと、
コントローラと、
を備え、
前記複数の第１ブロックは、有効データを記憶していない第３ブロックを備え、
前記複数の第２ブロックは、有効データを記憶していない第４ブロックを備え、
前記コントローラは、ホストから書き込み要求されたデータを、
前記第３ブロックの数が第１のしきい値よりも大きい場合には前記第３ブロックに書込み、
前記第３ブロックの数が第１のしきい値よりも小さい場合には前記第４ブロックに書き込む、
ことを特徴とするメモリシステム。
【請求項２】
前記コントローラは、
前記第４ブロックの数が第２のしきい値よりも小さい場合には、前記ホストから書き込み要求されたデータを、前記第４ブロックに第２モードで書き込む、
ことを特徴とする請求項１に記載のメモリシステム。
【請求項３】
前記複数の第２ブロックは、第１モードで書き込まれたデータを記憶する第５ブロックを備え、
前記コントローラは、前記第５ブロックの数が第３のしきい値よりも大きい場合には、前記ホストから書込み要求されたデータを、前記第４ブロックに第２モードで書き込む、
ことを特徴とする請求項１または請求項２に記載のメモリシステム。
【請求項４】
前記複数の第１ブロックは、第１モードで書き込まれたデータを記憶する第６ブロックを備え、
前記コントローラは、前記第３ブロックの数が前記第１のしきい値よりも大きい第４のしきい値よりも小さい場合、第１の転記処理を実行し、
前記第１の転記処理は、前記第６ブロックのうちの少なくとも１つを選択し、前記選択した第６ブロックに記憶されている有効データを前記第４ブロックに転記するとともに前記選択した第６ブロックに記憶されている有効データを無効化する、処理である、
ことを特徴とする請求項１乃至請求項３の何れか一項に記載のメモリシステム。
【請求項５】
前記コントローラは、
前記選択した第６ブロックに記憶されている有効データを転記する際、前記選択した第６ブロックに記憶されている有効データを前記第４ブロックに第２モードで書き込む、
ことを特徴とする請求項４に記載のメモリシステム。
【請求項６】
前記ホストと通信するためのインタフェース部をさらに備え、
前記コントローラは、前記インタフェース部が非通信中となってからの経過時間を計測し、前記経過時間が所定時間を越えた場合、第２の転記処理を開始し、
前記第２の転記処理は、前記第５ブロックまたは前記６ブロックのうちの少なくとも１つを選択し、前記選択したブロックに記憶されている有効データを前記第３ブロックまたは前記第４ブロックに転記するとともに前記選択したブロックに記憶されている有効データを無効化する、処理である、
ことを特徴とする請求項１乃至請求項５の何れか一項に記載のメモリシステム。
【請求項７】
前記コントローラは、前記第３ブロックの数、前記第４ブロックの数、または前記第３ブロックの数と前記第４ブロックの数の合計が、第５のしきい値よりも小さい場合、前記第２の転記処理を開始する、
ことを特徴とする請求項６に記載のメモリシステム。
【請求項８】
前記第５ブロックの数が前記第３のしきい値と等しい場合の前記メモリの総容量が前記ホストに対する表示容量より大きくなるように前記第３のしきい値は予め設定される、
ことを特徴とする請求項３に記載のメモリシステム。
【請求項９】
第１モードでデータが書き込まれる複数の第１ブロックおよび前記第１モードまたは前記第１モードよりも単位体積当たりの記憶容量が大きい第２モードでデータが書き込まれる複数の第２ブロックを備える不揮発性のメモリと、
コントローラと、
ホストからの書込み要求を受信するインタフェース部と、
を備え、
前記書込み要求は、付帯情報を備え、
前記複数の第１ブロックは、有効データを記憶していない第３ブロックを備え、
前記複数の第２ブロックは、有効データを記憶していない第４ブロックを備え、
前記コントローラは、ホストから書き込み要求されたデータを、前記第３ブロックまたは前記第４ブロックのうちの前記付帯情報に応じたブロックに書き込む、
ことを特徴とするメモリシステム。
【請求項１０】
前記コントローラは、前記ホストから書き込み要求されたデータを前記第４ブロックに書き込む際、前記第１モードまたは前記第２モードのうちの前記付帯情報に応じたモードで書き込む、
ことを特徴とする請求項９に記載のメモリシステム。
【請求項１１】
複数のブロックを備える不揮発性のメモリをコントローラが制御する方法であって、前記複数のブロックは、第１モードでデータが書き込まれる複数の第１ブロックと、第１モードまたは第２モードでデータが書き込まれる複数の第２ブロックとを備え、
前記コントローラが、ホストからデータの書き込み要求を受信する受信ステップと、
前記コントローラが、前記複数の第１ブロックのうちの有効データを記憶していない第３ブロックの数と第１のしきい値とを比較する第１比較ステップと、
前記第３ブロックの数が前記第１のしきい値よりも大きい場合には、前記コントローラが、前記ホストから書込み要求されたデータを前記第３ブロックに書込み、前記第３ブロックの数が前記第１のしきい値よりも小さい場合には、前記コントローラが、前記ホストから書込み要求されたデータを前記複数の第２ブロックのうちの有効データを記憶していない第４ブロックに書き込む、第１書込みステップと、
を備えることを特徴とする方法。
【請求項１２】
前記第１書込みステップは、
前記コントローラが、前記第４ブロックの数と第２のしきい値とを比較する第２ステップと、
前記第４ブロックの数が第２のしきい値よりも小さい場合には、前記コントローラが、前記ホストから書き込み要求されたデータを前記第４ブロックに第２モードで書き込む、第２書込みステップと、
を備えることを特徴とする請求項１１に記載の方法。
【請求項１３】
前記複数の第２ブロックは、第１モードで書き込まれたデータを記憶する第５ブロックを備え、
前記第１書込みステップは、
前記コントローラが、前記第５ブロックの数と第３のしきい値とを比較する第３ステップと、
前記第５ブロックの数が第３のしきい値よりも大きい場合には、前記コントローラが、前記ホストから書込み要求されたデータを前記第４ブロックに第２モードで書き込む、第３書込みステップと、
を備えることを特徴とする請求項１１または請求項１２に記載の方法。
【請求項１４】
前記複数の第１ブロックは、第１モードで書き込まれたデータを記憶する第６ブロックを備え、
前記コントローラが、前記第３ブロックの数と前記第１のしきい値よりも大きい第４のしきい値とを比較する第４比較ステップと、
前記第３ブロックの数が前記第４のしきい値よりも小さい場合、前記コントローラが、前記第６ブロックのうちの少なくとも１つを選択し、前記選択した第６ブロックに記憶されている有効データを前記第４ブロックに転記するとともに前記選択した第６ブロックに記憶されている有効データを無効化する、第１転送ステップと、
をさらに備えることを特徴とする請求項１１乃至請求項１３の何れか一項に記載の方法。
【請求項１５】
前記第１転送ステップは、
前記コントローラが、前記選択した第６ブロックに記憶されている有効データを転記する際、前記選択した第６ブロックに記憶されている有効データを前記第４ブロックに第２モードで書き込む、第３書込みステップ
を備えることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記コントローラが、前記ホストとの間が非通信中となってからの経過時間を計測するとともに前記経過時間と所定時間とを比較する第５比較ステップと、
前記経過時間が所定時間を越えた場合、前記コントローラが、前記第５ブロックまたは前記６ブロックのうちの少なくとも１つを選択し、前記選択したブロックに記憶されている有効データを前記第３ブロックまたは前記第４ブロックに転記するとともに前記選択したブロックに記憶されている有効データを無効化する、第２転送ステップと、
をさらに備えることを特徴とする請求項１１乃至請求項１５の何れか一項に記載の方法。
【請求項１７】
前記コントローラが、前記第３ブロックの数、前記第４ブロックの数、または前記第３ブロックの数および前記第４ブロックの数の合計と第５のしきい値を比較する第６比較ステップをさらに備え、
前記合計が前記第５のしきい値よりも小さい場合、前記コントローラが前記第２転送ステップを実行する、
ことを特徴とする請求項１６に記載の方法。
【請求項１８】
前記第５ブロックの数が前記第３のしきい値と等しい場合の前記メモリの総容量が前記ホストに対する表示容量より大きくなるように前記第３のしきい値は予め設定される、
ことを特徴とする請求項１３に記載の方法。
【請求項１９】
複数のブロックを備える不揮発性のメモリをコントローラが制御する方法であって、前記複数のブロックは、第１モードでデータが書き込まれる複数の第１ブロックと、第１モードまたは第２モードでデータが書き込まれる複数の第２ブロックとを備え、
前記コントローラが、ホストからデータの書き込み要求を付帯情報とともに受信する受信ステップと、
前記コントローラが、前記複数の第１ブロックのうちの有効データを記憶していない第３ブロックと、前記複数の第２ブロックのうちの有効データを記憶していない第４ブロックと、のうちの１つを前記付帯情報に応じて選択する選択ステップと、
前記コントローラが、前記ホストから書込み要求されたデータを前記選択したブロックに書き込む第１書込みステップと、
を備えることを特徴とする方法。
【請求項２０】
前記第１書込みステップは、
前記コントローラが、前記第１モードおよび前記第２モードのうちの１つを前記付帯情報に応じて選択する第２選択ステップと、
前記コントローラが、前記ホストから書き込み要求されたデータを前記選択したモードで前記選択したブロックに書き込む、第２書込みステップと、
を備えることを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、メモリシステムおよび方法に関する。
【背景技術】
【０００２】
ＮＡＮＤフラッシュメモリの容量を大きくする技術として多値記録（ＭＬＣ：Ｍｕｌｔｉ  −Ｌｅｖｅｌ  Ｃｅｌｌ）方式がある。一方近年では、書込みの高速化または信頼性向上のため、ＭＬＣ方式のフラッシュメモリに対して擬似的に２値記録（ＳＬＣ：Ｓｉｎｇｌｅ−Ｌｅｖｅｌ  Ｃｅｌｌ）方式で書き込みを行う場合がある。ＳＬＣ方式（以下、ＳＬＣモードという）では、記録単位である１つのセルに１ビットが記録されるのに対し、ＭＬＣ方式（以下、ＭＬＣモードという）では、１つのセルにＮビット（Ｎ＞１）を記録することができる。したがって、例えば２ビット記録のフラッシュメモリでは、１つのセルが４値を表すことができ、３ビット記録のフラッシュメモリでは、１つのセルが８値を表すことができる。
【０００３】
このような同じ物理的記憶領域（セル）で記憶する情報量が比較的多いフラッシュメモリは、同じ物理的記憶領域（セル）で記憶する情報量が比較的少ないフラッシュメモリよりも面積あるいは体積あたりの記録容量を大きくでき、また、記録容量あたりのコストを抑えられるというメリットがある。一方、同じ記憶領域で比較的記憶する情報量が少ないフラッシュメモリは、同じ記憶領域で比較的記憶する情報量が多いフラッシュメモリに比べ、書込みのアクセス時間が短く、また、信頼性が高いというメリットがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第５０６６２４１号公報
【特許文献２】特開２０１２−３３００２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の一つの実施形態は、書込み時間の高速化と書込み可能容量の大容量化を実現したメモリシステムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の一つの実施形態によれば、メモリシステムは、不揮発性のメモリと、コントローラとを備える。メモリは、第１モードでデータが書き込まれる複数の第１ブロックおよび第１モードまたは第１モードよりも単位体積当たりの記憶容量が大きい第２モードでデータが書き込まれる複数の第２ブロックを備える。複数の第１ブロックは、有効データを記憶していない第３ブロックを備え、複数の第２ブロックは、有効データを記憶していない第４ブロックを備える。コントローラは、ホストから書き込み要求されたデータを、第３ブロックの数が第１のしきい値よりも大きい場合には第３ブロックに書込み、第３ブロックの数が第１のしきい値よりも小さい場合には第４ブロックに書き込む。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態のメモリシステムの動作の概要を示す図である。
【図２】図２は、第１の実施形態のメモリシステムの動作の概要を示す図である。
【図３】図３は、第１の実施形態のメモリシステムの動作の概要を示す図である。
【図４】図４は、第１の実施形態のメモリシステムを搭載可能な、情報処理装置の一例を示す概観図である。
【図５】図５は、第１の実施形態のメモリシステムの構成を示す図である。
【図６】図６は、ホスト機器からデータの書込み要求があった際の第１の実施形態のメモリシステムの動作を示すフローチャートである。
【図７】図７は、割当て処理を説明するフローチャートである。
【図８】図８は、第１転記処理を説明するフローチャートである。
【図９】図９は、第２転記処理を説明するフローチャートである。
【図１０】図１０は、ホスト機器から連続してデータ書込みが要求された場合の書込み性能の推移を示す図である。
【図１１】図１１は、第２の実施形態のバッファメモリ部のメモリ構成を示す図である。
【図１２】図１２は、ホスト機器からデータの書込み要求があった際の第２の実施形態のメモリシステムの動作を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
第１の実施形態で使用するＮＡＮＤフラッシュメモリは、例えば、データ書込みの動作モードを変更可能なフラッシュメモリ１１２である。動作モードとしては、第１モードと第２モードとを用いる。第１モードは、第２モードよりも同一の記憶領域に書込む情報量が少ない（つまり、第２モードは、第１モードよりも同一の記憶領域に書込む情報量が多い）。例えば、第２モードは、第１モードよりも１つのセルに書込めるビット数が大きなモードである。さらに詳細例としては、第１モードは、ＳＬＣモードもしくはＭＬＣモードである。第２モードは、第１モードよりも１つのセルに書込めるビット数が大きなＭＬＣモードである。以下の説明では、第１モードをＳＬＣモードとし、第２モードをＭＬＣモードとして説明する。ただし、ＭＬＣモードは、１つに限らず、複数であってもよい。すなわち、４値モードと８値モードまたはそれ以上の記録値のモードとで変更可能であってもよい。
【００１０】
フラッシュメモリ１１２に限らず、１つのＮＡＮＤフラッシュメモリチップの記憶領域は、複数のブロックで構成されている。ブロックとは、所定の単位の記憶領域であり、データの消去単位である。したがって、あるブロックへ新たにデータを書込む際、その前に、そのブロック内のデータを一括して消去する必要がある。
【００１１】
各ブロックは、複数のページから構成される。データの書込みと読出しは、ページ単位で行われる。データを書込むページの順序には規則がある。このため、ブロック単位でデータ消去後、特定のページ順序でデータをブロックに書込む必要がある。すなわち、ブロックにデータを書込んだ後は、ブロック内のデータを消去せずに特定のページだけを上書きすることや、ブロックのデータを消去後であってもブロック内でランダムのページにデータを書込むことはできない。
【００１２】
また、各ＮＡＮＤフラッシュメモリの動作モードは、ブロック毎に独立して設定することが可能である。ただし、１ブロック内での各ページの動作モードが同じである必要がある。このため、ページ単位で動作モードを切り替えることはできない。すなわち、あるブロックに対してページ書込みを行った後は、その後、ブロック内データの一括消去をするまでの間、そのブロックの動作モードを切り替えることができない。
【００１３】
各動作モードでは、ブロックに対して書込めるデータ量が異なる。言い換えれば、ブロックの容量（以下、ブロック容量という）が動作モードに応じて変化する。具体的には、各ページのページサイズは同じで、ページ数が変化する。例えば２ビット／セル記録方式のフラッシュメモリの場合、４値モードのＭＬＣブロックに対して２値モードのＳＬＣブロックでは、ページ数およびブロック容量が１／２倍となる。
【００１４】
第１の実施形態では、図１〜図３に示すように、フラッシュメモリ１１２は、第１モードでのみ使用されることが設定されているブロックからなる第１ブロック群と、第１モードと第２モードとの何れかで切り替えて使用されるブロックからなる第２ブロック群と、を備える。第１ブロック群を構成するブロックの数は、固定されている。第１ブロック群は、有効データが格納されていない第１フリーブロックＢ＿ｆｒｅｅ１と、第１モードで書込まれた有効データを保持する第１ＳＬＣブロックＢ＿ＳＬＣ１と、を備えている。第２ブロック群は、有効データが格納されていいない第２フリーブロックＢ＿ｆｒｅｅ２と、第１モードで書込まれた有効データを保持する第２ＳＬＣブロックＢ＿ＳＬＣ２と、第２モードで書込まれた有効データを保持するＭＬＣブロックＢ＿ＭＬＣと、を備える。
【００１５】
また、各ブロックは、グループに分類されて管理される。第１フリーブロックＢ＿ｆｒｅｅ１は、第１フリーブロック群として管理され、第１ＳＬＣブロックＢ＿ＳＬＣ１は、第１ＳＬＣブロック群として管理される。第２フリーブロックＢ＿ｆｒｅｅ２は、第２フリーブロック群として管理され、第２ＳＬＣブロックＢ＿ＳＬＣ２は、第２ＳＬＣブロック群として管理され、ＭＬＣブロックＢ＿ＭＬＣは、ＭＬＣブロック群として管理される。
【００１６】
第１の実施形態において、図１に示すように、ホスト機器からデータＤ１の書込みが要求されると（Ｓ１１）、そのデータＤ１は、新規データ書込み用のブロックとして割当てられた第１フリーブロックＢ＿ｆｒｅｅ１に（Ｓ１２）、ＳＬＣモードで書込まれる。データＤ１が書込まれた新規データ書込ブロックＢ＿Ｄ１は、第１ＳＬＣブロック群に登録される（Ｓ１３）。この結果、第１フリーブロック群で管理される第１フリーブロックＢ＿ｆｒｅｅ１の数が１つ減少し、代わりに、第１ＳＬＣブロック群で管理される第１ＳＬＣブロックＢ＿ＳＬＣ１の数が１つ増加する。第１フリーブロックＢ＿ｆｒｅｅ１に対するＳＬＣモードでのデータ書込みは、第１フリーブロック群において管理される第１フリーブロックＢ＿ｆｒｅｅ１の数が、予め設定されたしきい値Ｔａより少なくなるまで実行される。
【００１７】
第１フリーブロック群において管理される第１フリーブロックＢ＿ｆｒｅｅ１の数がしきい値Ｔａよりも少ない場合においては、図２に示すように、ホスト機器からデータＤ２の書込みが要求されると（Ｓ２１）、そのデータＤ２は、新規データ書込み用のブロックとして割当てられた第２フリーブロックＢ＿ｆｒｅｅ２に（Ｓ２２）、ＳＬＣモードで書込まれる。データＤ２が書込まれた新規データ書込ブロックＢ＿Ｄ２は、第２ＳＬＣブロック群に登録される（Ｓ２３）。第２フリーブロック群で管理される第２フリーブロックＢ＿ｆｒｅｅ２の数が１つ減少し、代わりに、第２ＳＬＣブロック群で管理される第２ＳＬＣブロックＢ＿ＳＬＣ２の数が１つ増加する。第２フリーブロックＢ＿ｆｒｅｅ２に対するＳＬＣモードでのデータ書込みは、第２フリーブロック群において管理される第２フリーブロックＢ＿ｆｒｅｅ２の数が予め設定されたしきい値Ｔｂより大きく、かつ、第２ＳＬＣブロック群において管理される第２ＳＬＣブロックＢ＿ＳＬＣ２の数が予め設定されたしきい値Ｔｃよりも小さい場合に、実行される。
【００１８】
第２フリーブロック群において管理される第２フリーブロックＢ＿ｆｒｅｅ２の数が予め設定されたしきい値Ｔｂより小さいか、または、第２ＳＬＣブロック群において管理される第２ＳＬＣブロックＢ＿ＳＬＣ２の数が予め設定されたしきい値Ｔｃよりも大きい場合においては、図３に示すように、ホスト機器からデータＤ３の書込みが要求されると（Ｓ３１）、そのデータＤ３は、新規データ書込み用のブロックとして割当てられた第２フリーブロックＢ＿ｆｒｅｅ２に（Ｓ３２）、ＭＬＣモードで書込まれる。データＤ３が書込まれた新規データ書込ブロックＢ＿ＭＬＣは、ＭＬＣブロック群に登録される（Ｓ３３）。第２フリーブロック群で管理される第２フリーブロックＢ＿ｆｒｅｅ２の数が１つ減少し、代わりに、ＭＬＣブロック群で管理されるＭＬＣブロックＢ＿ＭＬＣの数が１つ増加する。
【００１９】
図４は、第１の実施形態のメモリシステムを搭載可能な、情報処理装置の一例を示す概観図である。図４に例示されるパーソナルコンピュータ１０は、主として、本体１１と、表示ユニット１２とから構成される。本体１１は、たとえば、筐体１５、キーボード装置１６、ポインティングデバイスであるタッチパッド１７、メモリカード１９などが着脱可能なカードスロットやＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）などの外部インタフェース１８、メイン回路基板、およびＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）であるメモリシステム１を備える。
【００２０】
メイン回路基板には、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やノースブリッジやサウスブリッジなどの主要部品が搭載される。本体１１は、その他にも、ＯＤＤ（Ｏｐｔｉｃａｌ  Ｄｉｓｋ  Ｄｒｉｖｅ）ユニットや各種外部インタフェースなどを備えてもよい。
【００２１】
表示ユニット１２は、ディスプレイハウジング１３と、このディスプレイハウジング１３に収容された表示装置１４と、を備える。なお、図４では、所謂ノート型パーソナルコンピュータを例に挙げたが、これに限定されるものではない。すなわち、第１の実施形態にかかるメモリシステムは、フラッシュメモリをストレージとして搭載または装着可能なあらゆるコンピュータに対して適用することが可能である。
【００２２】
図４において、メモリシステム１は、記録媒体として書き換え可能な不揮発性メモリを用いた記憶装置である。このメモリシステム１は、パーソナルコンピュータ１０に内蔵されても、外部インタフェース１８を介してパーソナルコンピュータ１０に外付けされてもよい。以下に、第１の実施形態によるメモリシステム１を、図面を参照して詳細に説明する。
【００２３】
図５に示すように、メモリシステム１は、大別して、コントローラ部１００、不揮発性メモリ部１１０、バッファメモリ部１２０、および、インタフェース部１３０を備える。各部１００〜１３０は、共通バスまたは専用線等の、信号線１４０を介して相互に接続され得る。また、信号線１４０には、パーソナルコンピュータまたはワークステーションなど、不揮発性メモリ部１１０へのデータの書込み／読出しを要求するホスト機器１５０も接続され得る。
【００２４】
インタフェース部１３０は、信号線１４０を介してホスト機器１５０と通信する。このインタフェース部１３０は、ホスト機器１５０からリード、ライト、フラッシュ、データ削除等のコマンドを受信し、このコマンド受信をコントローラ部１００に通知する。また、インタフェース部１３０は、コントローラ部１００からの指示に従い、ホスト機器１５０との間でデータを送受信する。
【００２５】
バッファメモリ部１２０には、ランダムアクセス性が高く高速なメモリ、例えばＳＲＡＭまたはＤＲＡＭ等が用いられる。不揮発性メモリである必要はない。バッファメモリ部１２０は、インタフェース部１３０がホスト機器１５０との間で送受信したデータや、不揮発性メモリ部１１０に対して読出し／書込みを行うデータを一時的に格納する。また、バッファメモリ部１２０は、データ以外にも、各種管理用の情報を格納してもよい。
【００２６】
不揮発性メモリ部１１０は、１つ以上のフラッシュメモリ１１２およびＮＡＮＤコントローラ１１１から構成される。フラッシュメモリ１１２は、たとえばＮＡＮＤフラッシュメモリである。１つのフラッシュメモリ１１２は、１つのチップで構成されてもよい。通常、不揮発性メモリ部１１０の総記憶容量は、表記容量（ホスト機器に対して提供する最大容量）よりも大きな容量である必要がある。そこで不揮発性メモリ部１１０は、総記憶容量に応じて複数のフラッシュメモリ１１２を搭載し得る。また、ＮＡＮＤコントローラ１１１は、複数のフラッシュメモリ１１２に対して並列にデータ転送が可能であるとよい。これは、たとえば１つのフラッシュメモリ１１２ではＳＳＤとして要求されるデータ転送性能を満たせない場合に有効である。
【００２７】
図５に戻り説明する。コントローラ部１００は、ユーザデータの管理や各部の制御を行う機能を備える。コントローラ部１００は、これらの機能が回路として組み込まれたＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  ａ  Ｃｈｉｐ）であってもよい。また、コントローラ部１００は、ハードウェアとしての汎用プロセッサがこれらの機能を具現するためのソフトウェアを実行することで実現されてもよい。
【００２８】
コントローラ部１００は、その機能ブロックとして、アドレス変換テーブル記憶部１０１と、ブロック管理部１０２と、読出コマンド処理部１０４と、書込コマンド処理部１０５と、削除コマンド処理部１０６と、ブロック数削減処理部１０７と、を備える。
【００２９】
アドレス変換テーブル記憶部１０１は、ホスト機器１５０から指定される論理アドレスとメモリシステム１内でのデータの記録位置（物理アドレス）とのマッピングを保持するアドレス変換テーブル１０１Ａを記憶する。ある論理アドレスのデータに関して、ホスト機器１５０からの書込み若しくは削除、または、メモリシステム１内での転記があると、アドレス変換テーブル１０１Ａの論理アドレスのマッピングが更新される。この結果、新しい記録位置のデータが有効データとなり、古い記録位置にあるデータは無効データとなる。アドレス変換テーブル１０１Ａによるマッピングの単位は、例えばブロックよりも小さい単位である。アドレス変換テーブル１０１Ａによるマッピングの単位は、例えばページサイズであってよい。
【００３０】
ブロック管理部１０２は、ブロックを分類して管理するためのブロック群を管理する。各ブロックは、第１ブロック群または第２ブロック群のいずれかに属する。各ブロックが第１ブロック群または第２ブロック群のいずれに属するかは、予め設定され、固定されている。第１ブロック群に属する各ブロックは、第１ブロック設定情報１０２Ａに登録されている。第２ブロック群に属する各ブロックは、第２ブロック設定情報１０２Ｂに登録されている。ブロック管理部１０２は、第１ブロック群に属する複数のブロックのうちの、有効データを記憶していないブロック（第１フリーブロック）を第１フリーブロック群、ＳＬＣモードで書込まれたデータを記憶しているブロック（第１ＳＬＣブロック）を第１ＳＬＣブロック群に、夫々登録する。また、ブロック管理部１０２は、第２ブロック群に属する複数のブロックのうちの、有効データを記憶していないブロック（第２フリーブロック）を第２フリーブロック群、ＳＬＣモードで書込まれたデータを記憶しているブロック（第２ＳＬＣブロック）を第２ＳＬＣブロック群、ＭＬＣモードで書込まれたデータ（ＭＬＣブロック）を記憶しているブロックをＭＬＣブロック群に、それぞれ登録する。ブロック管理部１０２は、各ブロック群の管理情報として、各ブロック群に含まれるブロックの情報（例えば物理アドレス）とブロック数とを保持する。具体的には、第１フリーブロックは第１フリーブロック管理情報１０２Ｃに、第１ＳＬＣブロックは第１ＳＬＣブロック管理情報１０２Ｄに、第２フリーブロックは第２フリーブロック管理情報１０２Ｅに、第２ＳＬＣブロックは第２ＳＬＣブロック管理情報１０２Ｆに、ＭＬＣブロックはＭＬＣブロック管理情報１０２Ｇに、夫々登録される。
【００３１】
読出コマンド処理部１０４は、インタフェース部１３０から読出しコマンド受信の通知を受けると、読出しコマンドで指定された論理アドレスに対応する不揮発性メモリ部１１０内の記録位置をアドレス変換テーブル１０１Ａから検索し、その記録位置に記録されたデータをバッファメモリ部１２０に読み出す。これにより、バッファメモリ部１２０には、読出しコマンドで指定された範囲のデータが一時的に格納される。その後、読出しコマンド処理部１０４は、バッファメモリ部１２０に一時的に格納されたデータをホスト機器１５０に送信するようにインタフェース部１３０を制御する。
【００３２】
書込コマンド処理部１０５は、インタフェース部１３０から書込みコマンド受信の通知を受けると、バッファメモリ部１２０上に空き領域を確保するとともに、ホスト機器１５０からデータを受信するようにインタフェース部１３０を制御する。その後、バッファメモリ部１２０に十分な量のデータが蓄積されると、新規データ書込み用のブロックにバッファメモリ部１２０内のデータを書込む。その後、書込コマンド処理部１０５は、書込んだデータの論理アドレスに対応する記録位置をアドレス変換テーブル１０１Ａに登録することで、マッピングを更新する。なお、書込コマンド処理部１０５は、ブロック管理部１０２から第１フリーブロックまたは第２フリーブロックを新規データ書込み用のブロックとして取得し、この新規データ書込み用のブロックに書込みを実行する。
【００３３】
削除コマンド処理部１０６は、インタフェース部１３０から削除コマンド（例えば、トリムコマンド）受信の通知を受けると、アドレス変換テーブル１０１Ａに対して、指定された論理アドレスに対応する記録位置のデータを無効化するように、マッピングを更新する。
【００３４】
ブロック数削減処理部１０７は、有効データを格納する使用ブロックのうち、１つ以上の使用ブロック（以下、これを転記元ブロックという）を選択し、選択した転記元ブロック中の有効データをフリーブロックに転記する。
【００３５】
ブロック数削減処理部１０７による転記の開始タイミングは、次の通りである。即ち、ブロック数削減処理部１０７は、書込コマンド処理部１０５がブロック管理部１０２から第１フリーブロックを新規データ書込み用のブロックとして取得した結果、残りの第１フリーブロック数がしきい値Ｔｄを下回る場合に、転記を開始することができる（第１転記処理）。なお、しきい値Ｔｄは、しきい値Ｔａよりも大きい予め設定された値である。また、ブロック数削減処理部１０７は、インタフェース部１３０がホスト機器１５０と通信中であるか非通信中であるかを監視し、インタフェース部１３０が非通信中の状態となってからの経過時間を計測する。そして、ブロック数削減処理部１０７は、非通信中の状態となってからの経過時間が所定時間よりも大きくなったとき、転記を開始する（第２転記処理）。
【００３６】
ブロック数削減処理部１０７は、有効データの転記の結果、フリーブロックとなった転記元ブロック、すなわち有効データ量が‘０’となった転記元ブロックを新たなフリーブロックとして回収する。転記したデータについては、転記先の論理アドレスに対応する記録位置をアドレス変換テーブル１０１Ａに登録することでマッピングを更新する。なお、フリーブロックとして登録される際に、ブロック内の無効データを消去してもよいし、フリーブロックとして登録される際にはブロック内の無効データを消去せず、次回の書込みで使用ブロックとして割り当てられ、最初のページに書き込みを行う直前までの間に消去を行うこととしてもよい。
【００３７】
図６は、ホスト機器１５０からデータの書込み要求があった際の動作を示すフローチャートである。なお、図６に示す動作では、初期状態として、新規データ書込みブロックが割当て済みであるとする。
【００３８】
書込コマンド処理部１０５は、まず、インタフェース部１３０へホスト機器１５０からの新規データの書込みコマンドが入力されるのを待機する（Ｓ１０１、Ｎｏ）。書込みコマンドを受けると（Ｓ１０１、Ｙｅｓ）、書込コマンド処理部１０５は、バッファメモリ部１２０上にデータ格納領域を確保し（Ｓ１０２）、続いて、ホスト機器１５０から送信された新規データをバッファメモリ部１２０に確保しておいたデータ格納領域に格納する（Ｓ１０３）。
【００３９】
次に、書込コマンド処理部１０５は、バッファメモリ部１２０に格納された未書込みの新規データのデータ量を確認し（Ｓ１０４）、データ量がページサイズ未満である場合（Ｓ１０４、Ｎｏ）、Ｓ１０１の処理を再び実行する。一方、データ量がページサイズ以上である場合（Ｓ１０４、Ｙｅｓ）、書込コマンド処理部１０５は、バッファメモリ部１２０内の未書込みデータからページサイズ分のデータを選択し、この選択されたデータを不揮発性メモリ部１１０内の割当てておいた新規データ書込みブロックに、Ｓ１１０の割当て処理によって設定された動作モードで、ページ書込みする（Ｓ１０５）。
【００４０】
なお、Ｓ１１０の割当て処理において新規データ書込みブロックが第１ＳＬＣブロック群または第２ＳＬＣブロック群に登録されている場合には、ＳＬＣモードが動作モードとして設定される。Ｓ１１０の割当て処理において新規データ書込みブロックがＭＬＣブロック群に登録されている場合には、ＭＬＣモードが動作モードとして設定される。Ｓ１１０の割当て処理については後ほど詳述する。
【００４１】
Ｓ１０５の処理に続いて、書込コマンド処理部１０５は、書込んだデータの論理アドレスと記録位置（物理アドレス）とをアドレス変換テーブル１０１Ａに登録することで（Ｓ１０６）、マッピングを更新する。そして、書込コマンド処理部１０５は、バッファメモリ部１２０における書込んだデータが格納されていた領域を解放する（Ｓ１０７）。
【００４２】
次に、書込コマンド処理部１０５は、新規データ書込みブロックにデータが書込まれていないページ、すなわち未書込みページが存在するか否かを判断する（Ｓ１０８）。新規データ書込みブロックに未書込みページが存在する場合（Ｓ１０８、Ｎｏ）、書込コマンド処理部１０５は、Ｓ１０４の処理を再び実行する。
【００４３】
一方、未書込みページが存在しない場合（Ｓ１０８、Ｙｅｓ）、すなわち新規データ書込みブロックの最大ページまでデータの書込みが完了していたら、書込コマンド処理部１０５は、新規データ書込みブロックを、第１ＳＬＣブロック管理情報１０２Ｄ、第２ＳＬＣブロック管理情報１０２Ｆ、またはＭＬＣブロック管理情報１０２Ｇに登録する登録処理を実行する（Ｓ１０９）。ここで、新規データ書込みブロックが第１ブロック群に属している場合には、書込コマンド処理部１０５は、新規データ書込みブロックを第１ＳＬＣブロック管理情報１０２Ｄに登録する。新規データ書込みブロックが第２ブロック群に属し、かつ、動作モードがＳＬＣモードに設定されている場合には、書込コマンド処理部１０５は、新規データ書込みブロックを第２ＳＬＣブロック管理情報１０２Ｆに登録する。新規データ書込みブロックが第２ブロック群に属し、かつ、動作モードがＭＬＣモードに設定されている場合には、書込コマンド処理部１０５は、新規データ書込みブロックをＭＬＣブロック管理情報１０２Ｇに登録する。
【００４４】
次に、書込みコマンド処理部１０５は、次の新規データ書込みブロックの割当て処理を実行する（Ｓ１１０）。Ｓ１１０の処理の後、書込みコマンド処理部１０５は、Ｓ１０１の処理を再び実行する。
【００４５】
図７は、Ｓ１１０の割当て処理を説明するフローチャートである。
【００４６】
まず、書込コマンド処理部１０５は、第１フリーブロック管理情報１０２Ｃを参照することによって、第１フリーブロックの数がしきい値Ｔａよりも大きいか否かを判断する（Ｓ１２１）。第１フリーブロックの数がしきい値Ｔａよりも大きい場合（Ｓ１２１、Ｙｅｓ）、書込コマンド処理部１０５は、第１フリーブロック管理情報１０２Ｃにおいて第１フリーブロックを１つ取得して、この第１フリーブロックを次の新規データ書込みブロックに割当てる（Ｓ１２２）。そして、書込コマンド処理部１０５は、動作モードをＳＬＣモードに設定して（Ｓ１２３）、割当て処理を終了する。
【００４７】
第１フリーブロックの数がしきい値Ｔａよりも小さい場合（Ｓ１２１、Ｎｏ）、書込コマンド処理部１０５は、第２フリーブロック管理情報１０２Ｅにおいて第２フリーブロックを１つ取得して、この第２フリーブロックを次の新規データ書込みブロックに割当てる（Ｓ１２４）。そして、書込コマンド処理部１０５は、第２フリーブロック管理情報１０２Ｅを参照することによって、第２フリーブロックの数がしきい値Ｔｂよりも小さいか否かを判断する（Ｓ１２５）。第２フリーブロックの数がしきい値Ｔｂよりも大きい場合（Ｓ１２５、Ｎｏ）、書込コマンド処理部１０５は、第２ＳＬＣブロック群管理情報１０２Ｄを参照することによって、第２ＳＬＣブロックの数がしきい値Ｔｃよりも小さいか否かを判断する（Ｓ１２６）。第２ＳＬＣブロックの数がしきい値Ｔｃよりも小さい場合（Ｓ１２６、Ｙｅｓ）、書込コマンド処理部１０５は、動作モードをＳＬＣモードに設定して（Ｓ１２７）、割当て処理を終了する。第２フリーブロックの数がしきい値Ｔｂよりも小さい場合（Ｓ１２５、Ｙｅｓ）、または、第２ＳＬＣブロックの数がしきい値Ｔｃよりも大きい場合（Ｓ１２６、Ｎｏ）、書込コマンド処理部１０５は、動作モードをＭＬＣモードに設定して（Ｓ１２８）、割当て処理を終了する。
【００４８】
図８は、第１転記処理を説明するフローチャートである。
【００４９】
ブロック数削減処理部１０７は、第１フリーブロック管理情報１０２Ｃを定期的に参照することによって、第１フリーブロックの数がしきい値Ｔｄよりも小さくなったか否かを判断する（Ｓ１３１）。第１フリーブロックの数がしきい値Ｔｄよりも大きい場合（Ｓ１３１、Ｎｏ）、ブロック数削減処理部１０７は、Ｓ１３１の処理を再び実行する。第１フリーブロックの数がしきい値Ｔｄよりも小さい場合（Ｓ１３１、Ｙｅｓ）、ブロック数削減処理部１０７は、第１ＳＬＣブロック群から転記元ブロックを選択する（Ｓ１３２）。
【００５０】
転記元ブロックの選択方法は任意である。例えば、ブロック数削減処理部１０７は、有効データが最も少ない第１ＳＬＣブロックを転記元ブロックとして選択してよい。また、ブロック数削減処理部１０７は、書込みが最も古い第１ＳＬＣブロックを転記元ブロックとして選択してよい。また、ブロック数削減処理部１０７は、Ｓ１３２の処理において転記元ブロックを複数選択してもよい。
【００５１】
次に、ブロック数削減処理部１０７は、第２フリーブロック群から転記先ブロックを選択する（Ｓ１３３）。Ｓ１３２の処理において複数の転記元ブロックが選択されている場合には、複数の転記元ブロックに格納されている有効ブロックの合計の容量に応じた数の転記先ブロックが選択される。
【００５２】
次に、ブロック数削減処理部１０７は、バッファメモリ部１２０上に少なくとも１ページ分のデータ格納領域を確保し、続いて、選択されたＭ個の転記元ブロックに格納されている１ページ分の有効データをバッファメモリ部１２０に確保されたデータ格納領域に読み出す（Ｓ１３４）。そして、ブロック数削減処理部１０７は、バッファメモリ部１２０上に読み出した有効データを転記先ブロックとして選択されているフリーブロックにＭＬＣモードでページ書込みする（Ｓ１３５）。
【００５３】
次に、ブロック数削減処理部１０７は、転記元ブロックの全ての有効データを転記し終えたか否かを判定し（Ｓ１３６）、転記し終えていない場合（Ｓ１３６、Ｎｏ）、Ｓ１３４の処理を再び実行する。一方、転記し終えている場合（Ｓ１３６、Ｙｅｓ）、ブロック数削減処理部１０７は、転記した有効データについて、論理アドレスに対応する転記先の記録位置（物理アドレス）をアドレス変換テーブル１０１Ａに登録することで、マッピングを更新する（Ｓ１３７）。これにより、転記元ブロック内の有効データが全て無効データとなる。続いて、ブロック数削減処理部１０７は、データ転記済みの転記元ブロックを第１フリーブロック管理情報１０２Ｃに登録するとともに（Ｓ１３８）、新たに有効データが格納された転記先ブロックをＭＬＣブロック管理情報１０２Ｇに登録する（Ｓ１３９）。その後、ブロック数削減処理部１０７は、Ｓ１３１の処理を再び実行する。
【００５４】
図９は、第２転記処理を説明するフローチャートである。
【００５５】
ブロック数削減処理部１０７は、インタフェース部１３０を監視しており、インタフェース部１３０が非動作中の時間が所定時間を越えたか否かを判断する（Ｓ１４１）。インタフェース部１３０が非動作中の時間が所定時間を越えていない場合（Ｓ１４１、Ｎｏ）、ブロック数削減処理部１０７は、Ｓ１４１の処理を再び実行する。
【００５６】
インタフェース部１３０が非動作中の時間が所定時間を越えた場合（Ｓ１４１、Ｙｅｓ）、ブロック数削減処理部１０７は、第１ＳＬＣブロック群、第２ＳＬＣブロック群、またはＭＬＣブロック群から転記元ブロックを選択する（Ｓ１４２）。ここで、ブロック数削減処理部１０７は、第１ＳＬＣブロック群、第２ＳＬＣブロック群、およびＭＬＣブロック群のうちの何れから転記元ブロックを選択してもよい。例えば、ブロック数削減処理部１０７は、第１ＳＬＣブロック群、第２ＳＬＣブロック群、およびＭＬＣブロック群に分類されているブロックうちの、有効データが最も少ないブロックまたは書込みが最も古いブロックを転記元ブロックとして選択してもよい。また、ブロック数削減処理部１０７は、第２ＳＬＣブロックおよびＭＬＣブロックと、第１ＳＬＣブロックとでは、第２ＳＬＣブロックおよびＭＬＣブロックを優先的に転記先ブロックとして選択してもよい。また、ブロック数削減処理部１０７は、第２ＳＬＣブロックとＭＬＣブロックとでは、第２ＳＬＣブロックを優先的に転記先ブロックとして選択してもよい。なお、ブロック数削減処理部１０７は、Ｓ１４２の処理において転記元ブロックを複数選択してもよい。
【００５７】
次に、ブロック数削減処理部１０７は、第２フリーブロック群から転記先ブロックを選択する（Ｓ１４３）。Ｓ１４２の処理において複数の転記元ブロックが選択されている場合には、複数の転記元ブロックに格納されている有効ブロックの合計の容量に応じた数の転記先ブロックが選択される。
【００５８】
次に、ブロック数削減処理部１０７は、バッファメモリ部１２０上に少なくとも１ページ分のデータ格納領域を確保し、続いて、選択されたＭ個の転記元ブロックに格納されている１ページ分の有効データをバッファメモリ部１２０に確保されたデータ格納領域に読み出す（Ｓ１４４）。そして、ブロック数削減処理部１０７は、バッファメモリ部１２０上に読み出した有効データを転記先ブロックとして選択されているフリーブロックにＭＬＣモードでページ書込みする（Ｓ１４５）。
【００５９】
次に、ブロック数削減処理部１０７は、転記元ブロックの全ての有効データを転記し終えたか否かを判定し（Ｓ１４６）、転記し終えていない場合（Ｓ１４６、Ｎｏ）、Ｓ１４４の処理を再び実行する。一方、転記し終えている場合（Ｓ１４６、Ｙｅｓ）、ブロック数削減処理部１０７は、転記した有効データについて、論理アドレスに対応する転記先の記録位置（物理アドレス）をアドレス変換テーブル１０１Ａに登録することで、マッピングを更新する（Ｓ１４７）。
【００６０】
次に、ブロック数削減処理部１０７は、データ転記済みの転記元ブロックを第１フリーブロック管理情報１０２Ｃまたは第２フリーブロック管理情報１０２Ｅに登録するとともに（Ｓ１４８）、新たに有効データが格納された転記先ブロックをＭＬＣブロック管理情報１０２Ｇに登録する（Ｓ１４９）。その後、ブロック数削減処理部１０７は、Ｓ１４１の処理を再び実行する。
【００６１】
なお、ＭＬＣモードにおいて１つのセルにＮビットの値が記録される場合には、ＭＬＣブロックのブロック容量は、第１ＳＬＣブロックおよび第２ＳＬＣブロックのブロック容量のＮ倍の容量を有する。したがって、しきい値Ｔｃをいかに設定するかに応じて不揮発性メモリ部１１０の総容量が決まる。しきい値Ｔｃは、第２ブロック群に属するブロックのうちのＴｃ個のブロックの全てにＳＬＣモードで書込まれ、かつ、第２ブロック群に属するブロックのうちの他のどのブロックもＳＬＣモードで書込まれないケースを仮定し、そのケースにおける不揮発性メモリ部１１０の総容量が、表記容量よりも大きくなるように（条件１）、しきい値Ｔｃが設定されるとよい。
【００６２】
図１０は、出荷状態のメモリシステム１に対してホスト機器１５０から連続してデータ書込みが要求された場合の書込み性能の推移を示す図である。図１０において、縦軸は、書込み速度、横軸は、書込み済みのデータ量を示す。また、実線は、条件１を満たすようにしきい値Ｔｃ（Ｔｃ１）が設定された場合の性能を示し、一点鎖線は、条件１を満たさないようにしきい値Ｔｃ（Ｔｃ２）が設定された場合の性能を示す。Ｔｃ１は、Ｔｃ２よりも小さい。ＭＬＣモードでの書込み速度は、ＳＬＣモードでの書込み速度よりも遅い。したがって、しきい値ＴｃにＴｃ１が設定された場合には、ＳＬＣモードで書込めるブロックが、しきい値ＴｃにＴｃ２が設定された場合よりも早く枯渇する。そして、ＳＬＣモードで書込めるブロックが枯渇したタイミングで、書込み速度が、ＳＬＣモードでの書込み速度からＭＬＣモードでの書込み速度まで低下する。これに対し、しきい値ＴｃにＴｃ２が設定された場合には、しきい値ＴｃにＴｃ１が設定された場合よりも長くＳＬＣモードでの書込み速度を維持することができるが、書込み可能な容量が表記容量に至らないために第１ＳＬＣブロックに書込まれた有効データをＭＬＣモードで転記する必要が生じる。転記は、コントローラ部１００のリソースを消費するために、転記中はＭＬＣモードでの書込み速度よりも書込み性能が低下する。したがって、出荷状態のメモリシステム１に対して連続したデータ書込みが行われる場合には、一点鎖線に示すように、書込み速度のアンダーシュートが発生する。即ち、条件１を満たすようにしきい値Ｔｃが設定されることによって、連続してデータ書込みが要求された場合において、書込み速度のアンダーシュートの発生を抑制することができるようになる。
【００６３】
以上述べたように、第１の実施形態によれば、メモリシステム１は、不揮発性メモリ部１１０と、コントローラ部１００とを備える。不揮発性メモリ部１１０は、第１モードでデータが書き込まれる複数の第１ブロックと、第１モードまたは第２モードでデータが書き込まれる複数の第２ブロックとを備える。複数の第１ブロックは、有効データを記憶していない第１フリーブロックを備える。複数の第２ブロックは、有効データを記憶していない第２フリーブロックを備える。コントローラ部１００は、ホスト機器１５０から書き込み要求されたデータを、第１フリーブロックの数がしきい値Ｔａよりも大きい場合には第１フリーブロックに書込み、第１フリーブロックの数がしきい値Ｔａよりも小さい場合には第２フリーブロックに書き込む。第１フリーブロックの数が余っている場合には書込み速度が高速なＳＬＣモードでの書込みが実行され、第１フリーブロックの数が少なくなってきたとき、ＳＬＣモードでもＭＬＣモードでも書込みが可能に設定されている第２フリーブロックに対する書込みが実行されるので、書込み時間の高速化と書込み可能容量の大容量化とが実現される。
【００６４】
また、コントローラ部１００は、第２フリーブロックの数がしきい値Ｔｂよりも小さい場合には、ホスト機器１５０から書き込み要求されたデータを第２フリーブロックに第２モードで書き込む。第２フリーブロックの数が少なくなってきた場合には体積当たりの記憶容量が大きいモードで書込みが実行されるので、書込みが進んでも書込み可能な容量の枯渇を防止することができる。
【００６５】
また、コントローラ部１００は、第２ＳＬＣブロックの数がしきい値Ｔｃよりも大きい場合には、ホスト機器１５０から書込み要求されたデータを第２フリーブロックに第２モードで書き込む。第２ＳＬＣブロックの数が多い場合には体積当たりの記憶容量が大きいモードで書込みが実行されるので、書込みが進んでも書込み可能な容量の枯渇を防止することができる。
【００６６】
また、コントローラ部１００は、第１フリーブロックの数がしきい値Ｔａよりも大きいしきい値Ｔｄよりも小さい場合、第１転記処理を実行する。第１転記処理は、第１ＳＬＣブロックのうちの少なくとも１つを選択し、選択した第１ＳＬＣブロックに記憶されている有効データを第２フリーブロックに第２モードで転記するとともに選択した第１ＳＬＣブロックに記憶されている有効データを無効化する処理である。これにより、書込みが進んでも書込み可能な容量の枯渇を防止することができる。
【００６７】
なお、コントローラ部１００は、第１転記処理において、転記対象の有効データを第２フリーブロックに第１モードで転記するようにしてもよい。
【００６８】
また、コントローラ部１００は、インタフェース部１３０が非通信中となってからの経過時間を計測し、経過時間が所定時間を越えた場合、第２転記処理を開始する。第２転記処理は、第１ＳＬＣブロック、第２ＳＬＣブロックまたはＭＬＣブロックのうちの少なくとも１つを選択し、選択したブロックに記憶されている有効データを第２フリーブロックに転記するとともに選択したブロックに記憶されている有効データを無効化する、処理である。これにより、書込みが進んでフリーブロックが少なくなった場合に、フリーブロックを生成することができるようになる。
【００６９】
なお、コントローラ部１００は、転記対象の有効データを第１フリーブロックに書込んでもよい。また、第１ＳＬＣブロックに記憶されている有効データは第１転記処理による転記対象となるので、第２転記処理においては第１ＳＬＣブロックを転記元ブロックに選択されなくてもよい。
【００７０】
なお、コントローラ部１００は、第１フリーブロックの数、第２フリーブロックの数、または第１フリーブロックの数と第２フリーブロックの数の合計が、しきい値Ｔｅよりも小さく、かつ、インタフェース部１３０が非通信中となってからの経過時間が所定時間を越えた場合、第２転記処理を開始してもよい。
【００７１】
（第２の実施形態）
第２の実施形態においては、メモリシステム１は、ホスト機器１５０からの書込み要求に付帯された情報（付帯情報）に応じて、書込み要求されたデータを第１ブロック群に書込むか、第２ブロック群に書込むかを決めることができる。また、メモリシステム１は、付帯情報に応じて、第２ブロック群に、ＳＬＣモードで書き込むか、ＭＬＣモードで書き込むかを決めることができる。なお、付帯情報とは、例えば更新頻度に応じたパラメータであってよい。更新頻度に応じたパラメータは、例えば特許文献２に開示されているように、データの区分（txt領域に配置されたデータ、stack領域に配置されたデータ、heap領域に配置されたデータ、data領域に配置されたデータ）に応じて設定されてもよい。また、メモリシステム１は、更新頻度「高」の旨の付帯情報を伴って書込み要求されたデータを第１ブロック群に、更新頻度「低」の旨の付帯情報を伴って書込み要求されたデータを第２ブロック群に書込んでもよい。また、メモリシステム１は、第２ブロック群に書込む際、更新頻度「高」の旨の付帯情報を伴って書込み要求されたデータをＳＬＣモードで、更新頻度「低」の旨の付帯情報を伴って書込み要求されたデータをＭＬＣモードで書込んでもよい。
【００７２】
第２の実施形態のメモリシステム１の構成を説明する。第２の実施形態においては、メモリシステム１は、付帯情報に応じて書込み先を切り替えることができるように、ブロック群（第１ＳＬＣブロック群、第２ＳＬＣブロック群、ＭＬＣブロック群）毎にメモリ領域がバッファメモリ部１２０に確保される。図１１は、第２の実施形態のバッファメモリ部１２０のメモリ構成を示す図である。図示するように、バッファメモリ部１２０には、第１メモリ領域１２０ａ、第２メモリ領域１２０ｂ、および第３メモリ領域１２０ｃが確保されている。第１メモリ領域１２０ａは、第１フリーブロックにＳＬＣモードで書込まれるデータが蓄積される。第２メモリ領域１２０ｂは、第２フリーブロックにＳＬＣモードで書込まれるデータが蓄積される。第３メモリ領域１２０ｃは、第２フリーブロックにＭＬＣモードで書込まれるデータが蓄積される。
【００７３】
図１２は、ホスト機器１５０からデータの書込み要求があった際の動作を示すフローチャートである。なお、図１２に示す動作では、初期状態として、新規データ書込みブロックがメモリ領域（第１メモリ領域１２０ａ、第２メモリ領域１２０ｂ、第３メモリ領域１２０ｃ）毎に個別に割当て済みであるとする。
【００７４】
書込コマンド処理部１０５は、まず、インタフェース部１３０へホスト機器１５０からの新規データの書込みコマンドが入力されるのを待機する（Ｓ１５１、Ｎｏ）。書込みコマンドを受けると（Ｓ１５１、Ｙｅｓ）、書込コマンド処理部１０５は、書込みコマンドの付帯情報に基づいて、書込み先のブロック群と書込み時の動作モードとを選択する（Ｓ１５２）。ここで、書込みコマンド処理部１０５は、第１ＳＬＣブロック群または第２ＳＬＣブロック群のうちのどちらを書込み先のブロック群とするかを、付帯情報に基づいて選択することができる。第１ブロックＳＬＣ群を選択した場合、書込コマンド処理部１０５は、書込み時の動作モードとしてＳＬＣモードを選択する。第２ブロックＳＬＣ群を選択した場合、書込コマンド処理部１０５は、書込み時の動作モードとしてＳＬＣモードまたはＭＬＣモードのうちの１つを付帯情報に基づいて選択することができる。
【００７５】
次に、書込コマンド処理部１０５は、Ｓ１５２において選択された事項（選択事項）に応じたメモリ領域上にデータ格納領域を確保する（Ｓ１５３）。そして、ホスト機器１５０から送信された新規データをメモリ領域に確保しておいたデータ格納領域に格納し（Ｓ１５４）、そのメモリ領域に格納された未書込みの新規データのデータ量を確認する（Ｓ１５５）。データ量がページサイズ未満である場合（Ｓ１５５、Ｎｏ）、書込コマンド処理部１０５は、Ｓ１５１の処理を再び実行する。一方、データ量がページサイズ以上である場合（Ｓ１５５、Ｙｅｓ）、書込コマンド処理部１０５は、メモリ領域内の未書込みデータからページサイズ分のデータを選択し、この選択されたデータを選択事項に対応する新規データ書込みブロックに、選択された動作モードでページ書込みする（Ｓ１５６）。
【００７６】
続いて、書込コマンド処理部１０５は、書込んだデータの論理アドレスと記録位置（物理アドレス）とをアドレス変換テーブル１０１Ａに登録することで（Ｓ１５７）、マッピングを更新する。そして、書込コマンド処理部１０５は、メモリ領域における書込んだデータが格納されていた領域を解放する（Ｓ１５８）。
【００７７】
次に、書込コマンド処理部１０５は、新規データ書込みブロックにデータが書込まれていないページ、すなわち未書込みページが存在するか否かを判断する（Ｓ１５９）。新規データ書込みブロックに未書込みページが存在する場合（Ｓ１５９、Ｎｏ）、書込コマンド処理部１０５は、Ｓ１５５の処理を再び実行する。
【００７８】
一方、未書込みページが存在しない場合（Ｓ１５９、Ｙｅｓ）、すなわち新規データ書込みブロックの最大ページまでデータの書込みが完了していたら、書込コマンド処理部１０５は、その新規データ書込みブロックを、第１ＳＬＣブロック管理情報１０２Ｄ、第２ＳＬＣブロック管理情報１０２Ｆ、またはＭＬＣブロック管理情報１０２Ｇのうちの選択事項に応じた管理情報に登録する登録処理を実行する（Ｓ１６０）。
【００７９】
次に、書込みコマンド処理部１０５は、次の新規データ書込みブロックの割当て処理を実行する（Ｓ１６１）。Ｓ１６１の割当て処理においては、書込みコマンド処理部１０５は、登録予定のブロック群（第１ＳＬＣブロック群、第２ＳＬＣブロック群、ＭＬＣブロック群）毎に新規データ書込みブロックを割当てる。Ｓ１６１の処理の後、書込みコマンド処理部１０５は、Ｓ１５１の処理を再び実行する。
【００８０】
このように、第２の実施形態によれば、メモリシステム１は、付帯情報を伴う書込み要求を受信することができる。コントローラ部１００は、ホスト機器１５０から書き込み要求されたデータを、第１ブロック群または第２ブロック群のうちの付帯情報に応じたブロックに書き込む。これにより、ホスト機器１５０は、更新頻度が高いデータを第１ブロック群にＳＬＣモードで書き込ませ、更新頻度が低いデータを第２ブロック群にＳＬＣモードまたはＭＬＣモードで書き込ませるといった運用が可能となる。
【００８１】
また、コントローラ部１００は、ホスト機器１５０から書き込み要求されたデータを第２ブロック群に書き込む際、ＳＬＣモードおよびＭＬＣモードのうちの付帯情報に応じた動作モードで書き込むようにしてもよい。
【００８２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００８３】
１  メモリシステム、１０  パーソナルコンピュータ、１１  本体、１２  表示ユニット、１３  ディスプレイハウジング、１４  表示装置、１５  筐体、１６  キーボード装置、１７  タッチパッド、１８  外部インタフェース、１９  メモリカード、１００  コントローラ部、１０１  アドレス変換テーブル記憶部、１０１Ａ  アドレス変換テーブル、１０２  ブロック管理部、１０４  読出コマンド処理部、１０５  書込コマンド処理部、１０６  削除コマンド処理部、１０７  ブロック数削減処理部、１１０  不揮発性メモリ部、１１０  コントローラ部、１１１  ＮＡＮＤコントローラ、１１２  フラッシュメモリ、１２０  バッファメモリ部、１３０  インタフェース部、１４０  信号線、１５０  ホスト機器。
【図１】
2015088121.tif 000003
【図２】
2015088121.tif 000004
【図３】
2015088121.tif 000005
【図４】
2015088121.tif 000006
【図５】
2015088121.tif 000007
【図６】
2015088121.tif 000008
【図７】
2015088121.tif 000009
【図８】
2015088121.tif 000010
【図９】
2015088121.tif 000011
【図１０】
2015088121.tif 000012
【図１１】
2015088121.tif 000013
【図１２】
2015088121.tif 000014