(57)【要約】【課題】効率的な性能評価を可能にすること【解決手段】メモリシステムは、不揮発性のメモリとコントローラとを備える。メモリは、第１ブロックと第２ブロックとを備え、第１ブロックと第２ブロックはそれぞれ複数の第１単位領域を備える。コントローラは、第１ブロックが備える複数の第１単位領域のうちの第１の数の第１単位領域のそれぞれを第２単位領域に設定し、第２ブロックが備える複数の第１単位領域のうちの第２の数の第１単位領域のそれぞれを第２単位領域に設定する。そして、コントローラは、第１ブロックおよび第２ブロックに含まれるそれぞれの第２単位領域に、複数の論理アドレスのそれぞれを一対一に対応付ける。【選択図】図６
2018124725.tif 000002
【特許請求の範囲】
【請求項１】
ホストに接続可能なメモリシステムであって、
第１ブロックと第２ブロックとを備え、前記第１ブロックと前記第２ブロックはそれぞれ複数の第１単位領域を備える不揮発性のメモリと、
前記第１ブロックが備える複数の第１単位領域のうちの第１の数の第１単位領域のそれぞれを第２単位領域に設定し、前記第２ブロックが備える複数の第１単位領域のうちの第２の数の第１単位領域のそれぞれを前記第２単位領域に設定し、前記第１ブロックおよび前記第２ブロックに含まれるそれぞれの前記第２単位領域に、複数の論理アドレスのそれぞれを一対一に対応付ける、コントローラと、
を備えるメモリシステム。
【請求項２】
前記コントローラは、前記複数の論理アドレスのそれぞれと前記第１ブロックおよび前記第２ブロックに含まれる複数の前記第２単位領域のそれぞれとの対応関係を示す翻訳情報を生成する、
請求項１に記載のメモリシステム。
【請求項３】
前記コントローラは、前記第１の数および前記第２の数を示す分布情報を前記ホストから受信する、
請求項１に記載のメモリシステム。
【請求項４】
前記分布情報は、論理アドレスが対応付けられた前記第２単位領域の数を前記第１ブロックと前記第２ブロック毎に示す情報である、
請求項３に記載のメモリシステム。
【請求項５】
前記コントローラは、それぞれ異なる余裕率と対応付けられた少なくとも２つの分布情報と、自身を備えるメモリシステムの余裕率と、に基づいて前記第１の数および前記第２の数を決定する、
請求項４に記載のメモリシステム。
【請求項６】
前記コントローラは、前記複数の論理アドレスをランダムにまたは擬似的にランダムに配列し、前記複数の論理アドレスのそれぞれを、前記第１ブロックおよび前記第２ブロックに含まれるそれぞれの第２単位領域に、配列された順で対応付ける、
請求項１に記載のメモリシステム。
【請求項７】
前記コントローラは、前記複数の論理アドレスをランダムにまたは擬似的にランダムに配列した配列情報を前記ホストから受信し、前記複数の論理アドレスのそれぞれを、前記第１ブロックおよび前記第２ブロックに含まれるそれぞれの第２単位領域に、前記配列情報において配列された順で対応付ける、
請求項１に記載のメモリシステム。
【請求項８】
前記コントローラは、それぞれの前記第２単位領域を前記第１のブロック内および前記第２のブロック内で均一に分散させる、
請求項１に記載のメモリシステム。
【請求項９】
前記コントローラは、前記ホストから受信していないデータを、少なくとも前記第１ブロックおよび前記第２ブロックに含まれるそれぞれの前記第２単位領域に書き込む、
請求項１に記載のメモリシステム。
【請求項１０】
前記コントローラは、前記翻訳情報を生成した後、前記ホストからのアクセスコマンドに応じて前記翻訳情報を参照または更新する、
請求項２に記載のメモリシステム。
【請求項１１】
メモリコントローラが、第１ブロックと第２ブロックとを備え、前記第１ブロックと前記第２ブロックは複数の第１単位領域を備える不揮発性のメモリを具備するメモリシステムにおいて前記メモリを制御する方法であって、
前記第１ブロックが備える複数の第１単位領域のうちの第１の数の第１単位領域のそれぞれを第２単位領域に設定することと、
前記第２ブロックが備える複数の第１単位領域のうちの第２の数の第１単位領域のそれぞれを前記第２単位領域に設定することと、
前記第１ブロックおよび前記第２ブロックに含まれるそれぞれの前記第２単位領域に、複数の論理アドレスのそれぞれを一対一に対応付けることと、
を備える方法。
【請求項１２】
前記複数の論理アドレスと前記第１ブロックおよび前記第２ブロックに含まれる複数の前記第２単位領域との対応関係を示す翻訳情報を生成すること、
をさらに備える、
請求項１１に記載の方法。
【請求項１３】
前記第１の数および前記第２の数を示す分布情報をホストから受信すること、
をさらに備える、
請求項１１に記載の方法。
【請求項１４】
前記分布情報は、論理アドレスが対応付けられた前記第２単位領域の数を前記第１ブロックと前記第２ブロック毎に示す情報である、
請求項１３に記載の方法。
【請求項１５】
それぞれ異なる余裕率と対応付けられた少なくとも２つの分布情報を前記ホストから受信し、前記２つの分布情報と、自身を備えるメモリシステムの余裕率と、に基づいて前記第１の数および前記第２の数を決定すること、
をさらに備える、
請求項１４に記載の方法。
【請求項１６】
前記複数の論理アドレスをランダムにまたは擬似的にランダムに配列し、前記複数の論理アドレスのそれぞれを、前記第１ブロックおよび前記第２ブロックに含まれるそれぞれの第２単位領域に、配列された順で対応付けること、
をさらに備える、
請求項１１に記載の方法。
【請求項１７】
前記複数の論理アドレスをランダムにまたは擬似的にランダムに配列した配列情報をホストから受信し、前記複数の論理アドレスのそれぞれを、前記第１ブロックおよび前記第２ブロックに含まれるそれぞれの第２単位領域に、前記配列情報において配列された順で対応付けること、
をさらに備える、
請求項１１に記載の方法。
【請求項１８】
それぞれの前記第２単位領域を前記第１ブロック内で均一に分散させることと、
それぞれの前記第２単位領域を前記第２ブロック内で均一に分散させること、
をさらに備える、
請求項１１に記載の方法。
【請求項１９】
ホストから受信していないデータを、少なくとも前記第１ブロックおよび前記第２ブロックに含まれるそれぞれの前記第２単位領域に書き込むこと、
をさらに備える、
請求項１１に記載の方法。
【請求項２０】
第１ブロックと第２ブロックとを備え、各ブロックは複数の第１単位領域を備える不揮発性のメモリと、
外部からのライトコマンドを要することなく、前記第１ブロックが備える複数の第１単位領域のうちの第１の数の第１単位領域と、前記第２ブロックが備える複数の第１単位領域のうちの第２の数の第１単位領域と、のそれぞれと、前記外部からの前記ライトコマンドにおいて指定可能な複数の論理アドレスのそれぞれと、を一対一に対応付けるコントローラと、
を備えるメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、メモリシステムおよび方法に関する。
【背景技術】
【０００２】
従来、メモリシステムとして、NAND型のフラッシュメモリ（以降、NANDメモリ）を備えるSSDが知られている。NANDメモリは、不揮発性のメモリの一例である。
【０００３】
SSDは、使い始めにおいて最大の性能を発揮する。そして、SSDに対するデータの書き込みを繰り返していくと、性能が急激に低下し、その後、性能が定常状態になる。定常状態での性能を効率的に評価するために、SSDの性能が使い始めの状態から定常状態に至るまでの時間を短縮することが要望される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特許第４４６１１８７号公報
【特許文献２】米国特許出願公開第２０１４／００９５７７３号明細書
【特許文献３】米国特許第８９９０４７７号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
一つの実施形態は、効率的に性能評価されることが可能なメモリシステムを得ることを目的とする。
【課題を解決するための手段】
【０００６】
一つの実施形態によれば、メモリシステムは、ホストに接続可能である。メモリシステムは、不揮発性のメモリとコントローラとを備える。メモリは、第１ブロックと第２ブロックとを備え、第１ブロックと第２ブロックはそれぞれ複数の第１単位領域を備える。コントローラは、第１ブロックが備える複数の第１単位領域のうちの第１の数の第１単位領域のそれぞれを第２単位領域に設定し、第２ブロックが備える複数の第１単位領域のうちの第２の数の第１単位領域のそれぞれを第２単位領域に設定する。そして、コントローラは、第１ブロックおよび第２ブロックに含まれるそれぞれの第２単位領域に、複数の論理アドレスのそれぞれを一対一に対応付ける。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態のメモリシステムの構成例を示す図である。
【図２】図２は、一般的なメモリシステムの性能の推移の一例を示すグラフである。
【図３】図３は、一般的なメモリシステムにおける有効クラスタ数分布の推移を説明するための図である。
【図４】図４は、CPU１１の機能構成を説明する図である。
【図５】図５は、第１の実施形態のメモリシステム１の動作の全体の概要を示すシーケンス図である。
【図６】図６は、第１の実施形態の準備モードでのメモリシステム１の動作を示すフローチャートである。
【図７】図７は、第１クラスタおよび第２クラスタの第１の実施形態の設定方法を説明するための図である。
【図８】図８は、第３状態での有効クラスタ数分布の例を示すグラフである。
【図９】図９は、第２の実施形態の演算された目標分布を説明するための図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、実施形態にかかるメモリシステムおよび方法を詳細に説明する。なお、これらの実施形態により本発明が限定されるものではない。
【０００９】
（第１の実施形態）
図１は、第１の実施形態のメモリシステムの構成例を示す図である。メモリシステム１は、通信路３を介してホスト２に接続される。ホスト２は、例えばコンピュータ又はサーバ装置である。コンピュータとは、パーソナルコンピュータ、ポータブルコンピュータ、または、携帯通信機器を含む。メモリシステム１は、ホスト２の外部記憶装置として機能する。通信路３のインタフェース規格としては任意の規格が採用可能である。
【００１０】
メモリシステム１は、ホスト２に対し、論理的な記憶領域である論理アドレス空間を提供する。論理アドレス空間内の各位置は、論理アドレスによって特定される。メモリシステム１がホスト２に提供する論理アドレス空間の容量は、表記容量（User  Capacity）と呼ばれる。
【００１１】
ホスト２は、メモリシステム１に対してアクセスコマンド（ライトコマンドおよびリードコマンド）を発行することができる。アクセスコマンドは、論理アドレス空間内のアクセス位置を指定する論理アドレスを含む。
【００１２】
メモリシステム１は、メモリコントローラ１０と、ストレージとして用いられるNAND型のフラッシュメモリ（NANDメモリ）２０と、RAM（Random  Access  Memory）３０とを備えている。なお、ストレージとして用いられるメモリの種類は、不揮発性のメモリであれば任意の種類のメモリが採用可能である。例えば、NOR型のフラッシュメモリ、ReRAM(Resistance  Random  Access  Memory)、またはMRAM(Magnetoresistive  Random  Access  Memory)などが採用可能である。RAM３０としては、任意の種類のメモリが採用可能である。例えば、揮発性のメモリである、DRAM（Dynamic  Random  Access  Memory）またはSRAM（Static  Random  Access  Memory）が採用可能である。
【００１３】
NANDメモリ２０は、メモリセルアレイを有する１以上のNANDチップ２１を備える。本図の例では、NANDメモリ２０は、４つのNANDチップ２１を備える。各メモリセルアレイは、複数の物理ブロックを備える。１つの物理ブロックに保持されている全データは、一括して消去される。各物理ブロックは、複数の物理ページを備える。NANDメモリ２０に対するライトおよびリードは、ページ毎に実行される。
【００１４】
なお、所定数の物理ブロックが１つの論理ブロックを構成し、論理ブロック単位でデータの消去が実行されてもよい。また、所定数の物理ページが１つの論理ページを構成し、論理ページ単位でデータのライトおよびリードが実行されてもよい。以降、データの消去の単位の記憶領域を、単に、ブロックと表記する。また、データのライトおよびリードの単位の記憶領域を、単に、ページと表記する。
【００１５】
メモリコントローラ１０は、ホスト２からコマンドを受信する。そして、メモリコントローラ１０は、受信したコマンドに応じて、ホスト２とNANDメモリ２０との間のデータ転送を実行する。
【００１６】
RAM３０は、ホスト２とNANDメモリ２０との間のデータ転送のバッファとして機能し得る。また、RAM３０は、翻訳情報３１を記憶する。翻訳情報３１は、論理アドレスとNANDメモリ２０内でのデータの記録位置（物理アドレス）とのマッピングを保持する情報である。
【００１７】
ホスト２から送られてきたデータのNANDメモリ２０へのライト、またはNANDメモリ２０内でのデータの転記の際、翻訳情報３１が更新されることにより、対応する論理アドレスのマッピングが更新される。具体的には、その論理アドレスに新しい記録位置がマッピングされることによって、更新の前までその論理アドレスがマッピングされていた記録位置（古い記録位置）はいずれの論理アドレスもマッピングされていない状態となる。その結果、ホスト２は、新しい記録位置に格納されたデータをメモリシステム１からリードすることが可能であるが、古い記録位置に格納されたデータをリードすることができなくなる。
【００１８】
以降、論理アドレスがマッピングされている位置に記録されているデータの状態を、「有効」と表記する。また、論理アドレスがマッピングされていない位置に記録されているデータの状態を、「無効」と表記する。
【００１９】
なお、論理アドレス空間において、論理アドレスが割り当てられる単位と、翻訳情報３１によって管理される単位とは、同じであってもよいし、異なっていてもよい。ここでは一例として、論理アドレスは、セクタと呼ばれる領域毎に割り当てられ、翻訳情報３１は、クラスタと呼ばれる、セクタよりも大きいサイズの領域毎に管理される、として説明する。クラスタは、論理アドレスが連続する複数のセクタを含む。
【００２０】
また、以降の説明において、クラスタは、ホスト２から送られてくるデータがクラスタ単位で格納され得るNANDメモリ２０内の記憶領域を指す場合がある。特に、論理アドレスがマッピングされているNANDメモリ２０内のクラスタを、有効クラスタと表記し、いずれの論理アドレスもマッピングされてないNANDメモリ２０内のクラスタを、無効クラスタと表記する。
【００２１】
なお、翻訳情報３１が論理アドレスと物理アドレスとを一対一に対応付けることができる限り、翻訳情報３１のデータ構造は特定のデータ構造に限定されない。例えば、翻訳情報３１は、クラスタ単位の物理アドレスが、対応する物理アドレスの順で配列されたデータ構造を備える。翻訳情報３１は、論理アドレスが、対応する物理アドレスの順で配列されたデータ構造を有していてもよい。また、翻訳情報３１は、複数レイヤーのテーブルによって構成されてもよい。また、翻訳情報３１は、必ずしも全部がRAM３０に保持されていなくてもよい。例えば翻訳情報３１の本体がNANDメモリ２０に格納され、RAM３０には翻訳情報３１の一部がキャッシュされてもよい。
【００２２】
メモリコントローラ１０は、CPU（Central  Processing  Unit）１１、ホストインタフェース（Host  I/F）１２、RAMコントローラ（RAMC）１３、およびNANDコントローラ（NANDC）１４を備える。CPU１１、Host  I/F１２、RAMC１３、およびNANDC１４は、バスで互いに接続されている。
【００２３】
Host  I/F１２は、通信路３の制御を実行する。また、Host  I/F１２は、ホスト２からのコマンドを受け付ける。また、Host  I/F１２は、ホスト２とRAM３０との間のデータ転送を実行する。
【００２４】
RAMC１３は、メモリコントローラ１０がRAM３０にアクセスするためのコントローラである。
【００２５】
CPU１１は、ファームウェアプログラムに従って、メモリコントローラ１０全体の制御を実行する。ファームウェアプログラムは、例えばNANDメモリ２０に予め格納されており、CPU１１は、起動時に、ファームウェアプログラムをNANDメモリ２０からRAM３０にロードする。そして、CPU１１は、RAM３０上のファームウェアプログラムを実行する。
【００２６】
NANDC１４は、CPU１１から受信したコマンドに応じた要求をNANDメモリ２０へ送信する。また、NANDC１４は、RAM３０とNANDメモリ２０との間のデータ転送を実行する。
【００２７】
上述したように、新たなデータの書き込みによって、NANDメモリ２０内の古いデータは無効になる。よって、継続的な書き込みを可能とするためには、メモリシステム１は、表記容量を超えた容量の記憶領域が必要になる。表記容量を超えた分の容量は、余裕容量（over-provisioning  capacity）と呼ばれる。
【００２８】
余裕容量分のブロックを使い尽くした場合、メモリコントローラ１０は、無効なデータを消去することによって、書き込み可能なブロックを生成する。１つのブロックに記憶される全てのデータが無効であることは稀であるため、実際には、メモリコントローラ１０は、ブロック内に残っている有効なデータを別のブロックに転記（コピー）し、その後、転記元のブロックに記憶される全てのデータを消去又は無効化する。この有効なデータを転記するプロセスは、ガベージコレクションと呼ばれる。有効なデータの転記によって有効なデータを全く含まなくなったブロックは、フリーブロックと呼ばれる。
【００２９】
ガベージコレクションが開始されると、NANDメモリ２０に対し、ホスト２からのデータの書き込みのほかに、この書き込みとは異なりデータの転記に起因する書き込みが発生する。このデータの転記に起因する書き込みは、メモリシステム１の性能を低下させる。
【００３０】
図２は、一般的なメモリシステムの性能の推移の一例を示すグラフである。このグラフの縦軸は、性能を示している。この例では、性能とは、ランダムライトの性能であり、IOPS（Input/Output  Per  Second）で表される。ランダムライトとは、それぞれに含まれている論理アドレスの連続性が乏しい複数のライトコマンドを逐次実行することである。このグラフの横軸は、使い始めからの経過時間を示している。
【００３１】
使い始めの状態では、フリーブロックが大量に存在するため、ガベージコレクションが実行されない。そのため、メモリシステムは最大の性能を示す。この状態を、第１状態と表記する。
【００３２】
その後、余裕容量分の全てのブロックがデータでいっぱいになると、ガベージコレクションが開始される。これにより、性能が急激に低下し、それからしばらくの間、性能が安定しない。この状態を、第２状態と表記する。
【００３３】
その後、書き込みがしばらく続くにつれて性能の変動が少なくなり、やがて性能がほぼ一定となる。この状態を、第３状態と表記する。
【００３４】
上記の状態の推移は、有効クラスタ数分布の推移と関係する。有効クラスタ数分布とは、それぞれのブロックに含まれる有効クラスタの数の配列である。図３は、一般的なメモリシステムにおける有効クラスタ数分布の推移を説明するための図である。ここでは、有効クラスタ数分布は各ブロックに含まれる有効クラスタの数を大きい方から順に配列した分布図として説明する。
【００３５】
本図において、有効ブロック数がゼロであるブロックは、フリーブロックを表している。第１状態においては、分布図３０１に示されるように、フリーブロックが多く存在する。
【００３６】
第２状態以降では、ガベージコレクションが実行される。例えば、フリーブロックの数が、十分に小さい所定数で安定するように、ガベージコレクションの実行頻度が制御される。すなわち、フリーブロックの数が所定数より少なくなった場合、ガベージコレクションが実行され、フリーブロックの数が所定数まで回復した場合、ガベージコレクションが停止し得る。
【００３７】
ガベージコレクションが開始されてから間もないころ、有効クラスタ数分布は、分布図３０２に示されるように、波打った状態になる。ガベージコレクションにおいては、含まれている有効クラスタの数が最も少ないブロックが、有効なデータの転記元のブロック（以降、ソースブロック）として選択される。有効クラスタ数分布が波打っている場合、ソースブロックが設定される毎に、転記すべき有効なデータの量が変動する。その結果、ガベージコレクションの実行頻度が時間的に変動し、性能が不安定になる。
【００３８】
書き込みがさらに継続すると、分布図３０３に示されるように、フリーブロックを除く複数ブロックの有効クラスタ数分布が、直線の形状に近づく。このような場合、転記すべき有効なデータの量が、順次選択されるソースブロック間で一定となるので、ガベージコレクションの実行頻度が時間的に一定になり、性能が安定する。第３状態においては、有効クラスタ数分布は、分布図３０３に示される状態になっている。
【００３９】
メモリシステムの性能を第３状態に示されるような安定した状態で測定するための処理は、プリコンディショニングと呼ばれる。ホスト２からのランダムライトによってプリコンディショニングを行う場合、表記容量と余裕容量とを合計した容量を大幅に上回る量のデータのランダムライトが必要であり、非常に長い時間がかかる。
【００４０】
本実施形態では、プリコンディショニングに要する時間を短縮するために、メモリシステム１は、ガベージコレクションを実行しながらホスト２からのアクセスコマンドに基づいてNANDメモリ２０に対するアクセスを行うモード（以降、通常モード）のほかに、準備モードで動作することが可能である。
【００４１】
準備モードは、論理アドレスと物理アドレスとのマッピングをメモリシステム１の内部で決定することによって、有効クラスタと無効クラスタとを擬似的に生成するモードである。準備モードでは、メモリコントローラ１０は、各ブロックのそれぞれのクラスタを、第１クラスタまたは第２クラスタに設定し、第１クラスタの物理アドレスに論理アドレスを対応付け、第２クラスタの物理アドレスに論理アドレスを対応付けない。これにより、第１クラスタは、有効クラスタとして見なされる状態になり、第２クラスタは、無効クラスタとして見なされる状態になる。
【００４２】
準備モードにおいては、ホスト２から送られてきたデータではなく、内部的に生成されたデータが各クラスタに格納される。各クラスタに格納されるデータは、任意のデータであり、例えばオール１であってもよい。即ち、準備モードでは、ホスト２からのデータのライトは必要ない。また、準備モードでは、ガベージコレクションは実行されない。準備モードにおいてNANDメモリ２０に書き込まれるデータを、ダミーデータと表記する。
【００４３】
メモリコントローラ１０は、準備モードにおいて、有効クラスタ数分布が分布図３０３に示されるような分布となるように、翻訳情報３１を生成する。準備モードにおいて翻訳情報３１が生成された後に通常モードに遷移すると、メモリシステム１は、遷移した直後から第３状態の性能を発揮することが可能である。
【００４４】
準備モードにおいては、表記容量と余裕容量との合計の容量の全ての領域に対して、ダミーデータがNANDメモリ２０に書き込まれる。よって、ランダムライトの繰り返しによってプリコンディショニングを行う場合に比べ、第３状態を実現するまでに要する時間が短縮される。
【００４５】
なお、ランダムライトが繰り返し実行された場合、連続する複数の論理アドレスのそれぞれがマッピングされた物理アドレスは連続せず、かつ各ブロック内のランダムな位置に無効クラスタが発生する傾向がある。準備モードにおいては、メモリコントローラ１０は、翻訳情報３１をランダムライトが繰り返し実行された後と類似した状態にするために、連続する複数の論理アドレスをできるだけ連続しない複数の物理アドレスにマッピングする。また、メモリコントローラ１０は、各ブロック内で無効クラスタをできるだけ均一に分散させる。
【００４６】
準備モードにおいては、実現目標である第３状態の有効クラスタ数分布は、内部的に生成され得るし、外部から設定され得る。第１の実施形態では、実現目標の有効クラスタ数分布が外部（一例としてホスト２）から入力される。以降、実現目標の有効クラスタ数分布を、目標分布と表記する。
【００４７】
図４は、第１の実施形態のCPU１１の機能構成を説明する図である。CPU１１は、ファームウェアプログラムを実行することによって、アドレス制御部１１１およびデータ制御部１１２として機能する。
【００４８】
アドレス制御部１１１は、準備モードにおいては、翻訳情報３１の生成を行う。アドレス制御部１１１は、通常モードにおいては、翻訳情報３１の更新および参照を実行する。
【００４９】
データ制御部１１２は、通常モードにおいては、ホスト２からのアクセスコマンドに応じたデータ転送と、ガベージコレクションに起因するブロック間のデータの転記とを実行する。データ制御部１１２は、準備モードにおいては、ダミーデータのNANDメモリ２０への書き込みを実行する。
【００５０】
次に、第１の実施形態のメモリシステム１の動作を説明する。
【００５１】
図５は、第１の実施形態のメモリシステム１とホスト２との動作の概要を示すシーケンス図である。まず、ホスト２は、メモリシステム１に対し、準備コマンドを送信する（Ｓ１０１）。準備コマンドは、準備モードを開始するためのコマンドである。準備コマンドは、他のコマンドとは独立した専用のコマンドであってもよいし、既存のコマンドのコマンドオプションとして用意されてもよい。例えば、準備コマンドは、フォーマットコマンドのコマンドオプションとして用意されてもよい。
【００５２】
Ｓ１０１の処理に続いて、ホスト２は、メモリシステム１に、目標分布を送信する（Ｓ１０２）。
【００５３】
目標分布は、有効クラスタ数の数列で表現されたデータ構造を有していてもよいし、関数のデータ構造を有していてもよい。ホスト２は、プリコンディショニングが完了した他のメモリシステムから有効クラスタ数分布を予め取得し、取得した有効クラスタ数分布を目標分布として用いてもよい。当該他のメモリシステムでは、例えばランダムライトの繰り返しによってプリコンディショニングが実行されてもよい。目標分布は、実験または計算によって演算され、ホスト２に予め保持されていてもよい。
【００５４】
メモリシステム１は、準備コマンドと目標分布とをホスト２から受信すると、準備モードでの動作を開始する（Ｓ１０３）。なお、前述したように、準備モードでは、ガベージコレクションの実行は禁止されると共に、アクセスコマンドの処理は実行されない。
【００５５】
メモリシステム１は、準備モードでの動作が完了すると、ホスト２にプリコンディショニングの完了を通知する（Ｓ１０４）。そして、メモリシステム１は、通常モードに遷移する（Ｓ１０５）。通常モードでは、メモリシステム１は、アクセスコマンドの処理およびガベージコレクションを実行することができる。また、メモリシステム１は、通常モードに遷移後、第３状態の性能を発揮することができる。よって、ホスト２は、完了の通知を受信すると、すぐに第３状態での性能の計測を行うことができる。
【００５６】
図６は、第１の実施形態のメモリシステム１の準備モードでの動作を示すフローチャートである。
【００５７】
まず、アドレス制御部１１１は、論理アドレス列を生成する（Ｓ２０１）。論理アドレス列は、論理アドレス空間内の全クラスタ分の論理アドレスの数列である。論理アドレス列では、全クラスタ分の論理アドレスができるだけランダムに並べられており、同一の論理アドレスの重複は禁止されている。
【００５８】
一例では、アドレス制御部１１１は、下記の式(1)を用いることによって論理アドレス列を生成する。
LA_i=(i-(i  mod  Nb)]/Nb+(Nt-(Nt  mod  Nb))/Nb*(i  mod  Nb)    ・・・(1)
【００５９】
ここで、LA_iは、論理アドレス列の先頭からi番目の要素である。Ntは、論理アドレス空間内のクラスタの総数である。Nbは、１ブロック内のクラスタの総数である。
【００６０】
なお、論理アドレス列を生成するアルゴリズムは、上記の例だけに限定されない。例えばアドレス制御部１１１は、乱数発生器を用いることによって、論理アドレス空間内の全クラスタ分の論理アドレスをランダムに配列した論理アドレス列を生成してもよい。
【００６１】
図６に戻り、（Ｓ２０１）の処理に続いて、アドレス制御部１１１は、各クラスタに論理アドレスを割り当てる処理に移る。この処理は、一例として、ブロック毎に実行される。
【００６２】
アドレス制御部１１１は、まず、１つのブロック（以降、対象ブロック）を選択する（Ｓ２０２）。なお、Ｓ２０２〜Ｓ２１０は、ブロック単位で実行されるループ処理を構成する。初回の実行の場合、任意の基準に基づいて対象ブロックが選択される。２回目以降の実行の場合、まだ対象ブロックとして選択されていないブロックのうちから、対象ブロックが選択される。
【００６３】
続いて、アドレス制御部１１１は、目標分布から、１つの有効クラスタ数を選択する（Ｓ２０３）。例えば、アドレス制御部１１１は、未選択の有効クラスタ数のうちから最も大きい有効クラスタ数を選択する。
【００６４】
そして、アドレス制御部１１１は、第１クラスタの数が選択した有効クラスタ数と一致するように、対象ブロックに含まれる全クラスタのそれぞれを、第１クラスタおよび第２クラスタの何れかに設定する（Ｓ２０４）。
【００６５】
例えば、アドレス制御部１１１は、各ブロック内で、第１クラスタをできるだけ均一に分散させる。図７は、第１の実施形態における第１クラスタおよび第２クラスタの設定方法を説明するための図である。本図は、１つのブロック内のクラスタの物理アドレス順の配列を示している。各行において、紙面右方に向かって物理アドレスが昇順に増加する。各行の右端のクラスタの物理アドレスには、次の行の左端のクラスタの物理アドレスが後続する。
【００６６】
斜線を施された矩形４０１は、第１クラスタを示しており、白抜きの矩形４０２は、第２クラスタを示している。例えばブロックに含まれるクラスタの数が１４００００個であり、第１クラスタの数が１２００００個である場合、アドレス制御部１１１は、本図に示されるように、物理アドレスが連続する６個のクラスタを第１クラスタに設定し、その次の１個のクラスタを第２クラスタに設定する。これにより、第１クラスタ及び第２クラスタが対象ブロック内に均一に分散する。
【００６７】
Ｓ２０４の処理に続いて、アドレス制御部１１１は、対象ブロック内の１つの第１クラスタを選択し（Ｓ２０５）、１つの論理アドレスを選択する（Ｓ２０６）。そして、アドレス制御部１１１は、選択された第１クラスタを示す物理アドレスと選択された論理アドレスとを対にして保持する（Ｓ２０７）。例えば、アドレス制御部１１１は、RAM３０上に一時的なファイルを用意し、そのファイルに対を追加形式で記録する。ファイルのデータ構造は、特定のデータ構造に限定されない。例えばファイルはテーブルのデータ構造を有していてもよい。
【００６８】
Ｓ２０５の処理においては、アドレス制御部１１１は、対象ブロック内の未選択の複数の第１クラスタのうちから物理アドレスの順で１つの第１クラスタを選択する。Ｓ２０６の処理においては、アドレス制御部１１１は、論理アドレス列内の未選択の論理アドレスから、論理アドレス列内の並びの順で１つの論理アドレスを選択する。
【００６９】
続いて、アドレス制御部１１１は、論理アドレス列に含まれる全ての論理アドレスが選択済みであるか否かを判定する（Ｓ２０８）。論理アドレス列内に未選択の論理アドレスが残っている場合（Ｓ２０８、Ｎｏ）、アドレス制御部１１１は、対象ブロック内の全ての第１クラスタが選択済みであるか否かを判定する（Ｓ２０９）。対象ブロック内に未選択の第１クラスタが残っている場合（Ｓ２０９、Ｎｏ）、Ｓ２０５の処理が再び実行される。
【００７０】
対象ブロック内の全ての第１クラスタが選択済みである場合（Ｓ２０９、Ｙｅｓ）、データ制御部１１２は、ダミーデータを少なくとも対象ブロックの全ての第１クラスタに書き込む（Ｓ２１０）。Ｓ２１０の処理の後、Ｓ２０２の処理が再び実行される。なお、データ制御部１１２は、第２クラスタにはダミーデータを書き込まなくてもよい。
【００７１】
論理アドレス列に含まれる全ての論理アドレスが選択済みである場合（Ｓ２０８、Ｙｅｓ）、データ制御部１１２は、ダミーデータを少なくとも対象ブロックの全ての第１クラスタに書き込む（Ｓ２１１）。なお、Ｓ２１０及びＳ２１１では、例えば、データ制御部１１２は、対象ブロック内の先頭のページから最後に選択された第１クラスタを含むページまで、ダミーデータの書き込みを実行する。Ｓ２１１においても、データ制御部１１２は、第２クラスタにはダミーデータを書き込まなくてもよい。
【００７２】
そして、アドレス制御部１１１は、保持されている全ての対に基づいて翻訳情報３１を生成する（Ｓ２１２）。例えば翻訳情報３１のデータ構造が論理アドレスから物理アドレスに変換するルックアップテーブルである場合、アドレス制御部１１１は、それぞれの対を論理アドレスの順番に並び替えることによって、翻訳情報３１を生成することができる。
【００７３】
以上の例では、アドレス制御部１１１は、連続する複数の論理アドレスを、連続しない複数の物理アドレスに対応付けるために、一例として、論理アドレスをランダムに配列した数列を生成し、連続する複数の物理アドレスのそれぞれに、数列の各要素を、その数列内の順番で対応付ける。連続する複数の論理アドレスを、連続しない複数の物理アドレスに対応付けるアルゴリズムは、これに限定されない。
【００７４】
このように、第１の実施形態によれば、アドレス制御部１１１は、複数のブロックのそれぞれに対し、第１クラスタ（有効クラスタ）の数を選択する（図６のＳ２０３）。なお、複数のブロックは、少なくとも２つのブロックである。アドレス制御部１１１は、選択した数の第１クラスタを複数のブロックのそれぞれに設定する（図６のＳ２０４）。そして、アドレス制御部１１１は、設定したそれぞれの第１クラスタに複数の論理アドレスのそれぞれを一対一に対応付ける。よって、メモリシステム１は、ランダムライトの繰り返しを行うことなく分布図３０３の有効クラスタ分布を実現することができるので、プリコンディショニングに要する時間が短縮される。換言すると、効率的に性能評価されることが可能になる。
【００７５】
なお、アドレス制御部１１１は、複数の論理アドレスのそれぞれと第１クラスタのそれぞれとの対応関係を示す翻訳情報３１を生成する。よって、アドレス制御部１１１は、翻訳情報３１を使用することによって、ホスト２からのアクセスコマンドの処理を実行することが可能である。アドレス制御部１１１は、通常モードにおいて、即ち翻訳情報３１を生成した後、ホスト２からのアクセスコマンドに応じて翻訳情報３１を参照または更新する。
【００７６】
また、アドレス制御部１１１は、ホスト２から目標分布および準備コマンドを受信したことに応答して翻訳情報３１の生成を開始する（図５のＳ１０１〜１０３）。よって、プリコンディショニングの動作をホスト２から制御することが可能である。
【００７７】
また、目標分布は、有効クラスタ数をブロック毎に示す情報であり、他のメモリシステムから得られた情報である。プリコンディショニング済みのメモリシステムから得られた有効クラスタ数分布を目標分布として使用することが可能であるので、多数のメモリシステムを性能評価する場合に、性能評価の効率が向上する。
【００７８】
また、アドレス制御部１１１は、複数の論理アドレスをランダムにまたは擬似的なランダムに配列し（図６のＳ２０１）、複数の論理アドレスのそれぞれを、第１クラスタのそれぞれに、配列された順番で対応付ける（図６のＳ２０５〜Ｓ２０９、Ｎｏ）。
【００７９】
なお、論理アドレス列は、他のコンピュータで予め生成され、メモリシステム１に送られてもよい。例えば、メモリシステム１は、準備コマンドおよび目標分布とともに論理アドレス列をホスト２から受信してもよい。
【００８０】
また、アドレス制御部１１１は、それぞれの第１クラスタをブロック内で均一に分散させる（図６のＳ２０４）。よって、翻訳情報３１の状態をランダムライトが繰り返し実行された後の状態と類似した状態にすることが可能である。即ち、翻訳情報３１を、ランダムライトが繰り返し実行された後の状態と類似した状態にすることが可能である。
【００８１】
また、データ制御部１１２は、ダミーデータをそれぞれのブロックに書き込む（図６のＳ２１０，Ｓ２１１）。よって、メモリシステム１は、通常モードに遷移した後、リードコマンドに応答してダミーデータをホスト２に送信することが可能である。なお、データ制御部１１２は、第２クラスタ（無効クラスタ）にはダミーデータを書き込まなくてもよい。
【００８２】
（第２の実施形態）
第１の実施形態では、ホスト２がメモリシステム１に目標分布を送信する例を説明した。第２の実施形態では、メモリシステム１が内部で目標分布を演算する例について説明する。
【００８３】
表記容量が同じである場合、性能の変動が小さい状態である第３状態での有効クラスタ数分布は、余裕率に応じて異なる。余裕率とは、余裕容量を表記容量で除算して得られる値である。
【００８４】
図８は、第３状態での有効クラスタ数分布の例を示すグラフである。本図には、余裕率が１０％の場合の有効クラスタ数分布と余裕率が２５％の場合の有効クラスタ数分布が示されている。余裕率が２５％の場合、余裕率が１０％の場合に比べて、有効クラスタ数分布の傾きが急にになっている。これは、余裕率が大きいほど利用可能なブロックの数が多いためである。
【００８５】
第２の実施形態では、アドレス制御部１１１は、２つの有効クラスタ数分布と、自身のメモリシステム１の余裕率と、に基づいて、目標分布を演算する。以下に、目標分布の演算方法の一例を説明する。目標分布の演算に使用される２つの有効クラスタ数分布を、モデル分布と表記する。
【００８６】
予め用意された２つのモデル分布のうち、一方（第１モデル分布）は、余裕率がOP1の場合の有効クラスタ数分布であり、他方（第２モデル分布）は、余裕率がOP2の場合の有効クラスタ数分布である。ただし、ここでは、OP1はOP2よりも大きいこととする。
【００８７】
各モデル分布および目標分布は、下記の一次式で近似される。
y=-A*x+B  ・・・(2)
【００８８】
自身のメモリシステム１の余裕率をOPt、第１モデル分布の傾きAをA1、第１モデル分布のy切片BをB1、第２モデル分布の傾きAをA2、第２モデル分布のy切片BをB2とすると、アドレス制御部１１１は、目標分布の傾きAtおよび目標分布のy切片Btを、下記の式(3)、(4)によって演算する。
At=A1+|A1-A2|*((OP1-OPt)/(OP1-OP2))  ・・・(3)
Bt=B1-(B1-B2)*((OP1-OPt)/(OP1-OP2))  ・・・(4)
【００８９】
図９は、第２の実施形態の演算された目標分布を説明するための図である。図１０の例では、余裕率が１０％の場合のモデル分布と、余裕率が２５％である場合のモデル分布から、メモリシステム１の余裕率が１５％である場合のモデル分布が演算されている。
【００９０】
なお、アドレス制御部１１１は、それぞれが傾きとy切片との組み合わせによって表された２つのモデル分布を取得してもよいし、それぞれが有効クラスタ数の配列によって表された２つのモデル分布を取得してもよい。後者の場合、アドレス制御部１１１は、各有効クラスタ数分布を式(2)の一次式で近似することによって、傾きとy切片とを演算する。
【００９１】
２つのモデル分布は、準備コマンドとともにホスト２からメモリシステム１に送られてきてもよいし、予めNANDメモリ２０などに格納されていてもよい。アドレス制御部１１１は、例えば、図６のＳ２０２〜２１０のループ処理を開始する前に目標分布を演算する。
【００９２】
このように、第２の実施形態によれは、アドレス制御部１１１は、それぞれ異なる余裕率に対応付けられた２つのモデル分布と、自身を備えるメモリシステム１の余裕率と、に基づいて目標分布を演算する。２つのモデル分布から任意の余裕率の目標分布を演算することが可能であるので、メモリシステム１ごとに、目標分布を用意しておく必要がなくなる。
【００９３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００９４】
１  メモリシステム、２  ホスト、３  通信路、１０  メモリコントローラ、１１  CPU、１２  Host  I/F、１３  RAMC、１４  NANDC、２０  NANDメモリ、２１  NANDチップ、３０  RAM、３１  翻訳情報、１１１  アドレス制御部、１１２  データ制御部、３０１，３０２，３０３  分布図、４０１，４０２  矩形。
【図１】
2018124725.tif 000003
【図２】
2018124725.tif 000004
【図３】
2018124725.tif 000005
【図４】
2018124725.tif 000006
【図５】
2018124725.tif 000007
【図６】
2018124725.tif 000008
【図７】
2018124725.tif 000009
【図８】
2018124725.tif 000010
【図９】
2018124725.tif 000011