(57)【要約】【課題】メモリシステムのメモリ寿命を延ばす。【解決手段】本実施形態に係る不揮発性メモリの制御方法は、不揮発性メモリを制御するコントローラが、不揮発性メモリに含まれる複数のメモリ領域ごとの有効データのデータ量を検出することと、コントローラが、複数のメモリ領域ごとに、複数のメモリ領域の書き込み順序又は書き込みからの経過時間に応じて変化するしきい値を設定することと、コントローラが、複数のメモリ領域ごとのデータ量と前記しきい値とに基づいて、データ量がしきい値より小さいメモリ領域を選択することと、コントローラが、選択されたメモリ領域の有効データを他のメモリ領域に移動し、選択されたメモリ領域を消去することと、を含む。【選択図】  図１
2018181374.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性メモリの制御方法であって、
前記不揮発性メモリを制御するコントローラが、前記不揮発性メモリに含まれる複数のメモリ領域ごとの有効データのデータ量を検出することと、
前記コントローラが、前記複数のメモリ領域ごとに、前記複数のメモリ領域の書き込み順序又は書き込みからの経過時間に応じて変化するしきい値を設定することと、
前記コントローラが、前記複数のメモリ領域ごとの前記データ量と前記しきい値とに基づいて、前記データ量が前記しきい値より小さいメモリ領域を選択することと、
前記コントローラが、選択された前記メモリ領域の有効データを他のメモリ領域に移動し、選択された前記メモリ領域を消去することと、
を具備する方法。
【請求項２】
前記コントローラは、
前記複数のメモリ領域の前記書き込み順序又は前記書き込みからの経過時間を示す順序情報を管理し、
前記順序情報に基づいて、前記複数のメモリ領域のうちの第１のメモリ領域のしきい値を、前記第１のメモリ領域よりも後に書き込まれた前記複数のメモリ領域のうちの第２のメモリ領域のしきい値より大きくなるように設定する、
請求項１の方法。
【請求項３】
前記コントローラは、前記複数のメモリ領域ごとに前記しきい値から前記データ量を引いた値を計算し、前記値が最も大きいメモリ領域を選択する、
請求項２の方法。
【請求項４】
前記コントローラは、前記複数のメモリ領域ごとに前記しきい値から前記データ量を引いた値を計算し、前記値が設定値以上のメモリ領域を選択する、
請求項２の方法。
【請求項５】
前記順序情報は、前記複数のメモリ領域ごとに書き込み順序を示す昇順の番号を割り当てた情報である、
請求項２の方法。
【請求項６】
前記コントローラは、最新の番号と前記第１のメモリ領域に対応する第１の番号との差が、前記最新の番号と前記第２のメモリ領域に対応する第２の番号との差より大きいことに基づいて、前記第１のメモリ領域に対する書き込みが前記第２のメモリ領域に対する書き込みより前であることを識別する、
請求項５の方法。
【請求項７】
不揮発性メモリの制御方法であって、
前記不揮発性メモリを制御するコントローラが、前記不揮発性メモリに含まれる複数のメモリ領域ごとの有効データのデータ量を検出することと、
前記コントローラが、前記複数のメモリ領域ごとにしきい値を設定することと、
前記コントローラが、前記複数のメモリ領域ごとの前記データ量と前記しきい値とに基づいて、前記データ量が前記しきい値より小さいメモリ領域を選択することと、
前記コントローラが、選択された前記メモリ領域の有効データを他のメモリ領域に移動し、選択された前記メモリ領域を消去することと、
を具備する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、不揮発性メモリの制御方法に関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）は、不揮発性半導体メモリを備え、ハードディスクドライブ（ＨＤＤ）と同様のインタフェースを持つ。例えば、ＳＳＤは、データ書き込み時に、書き込みコマンド、書き込み先のLogical Block Addressing（ＬＢＡ）、書き込みデータを情報処理装置から受け、Look Up Table（ＬＵＴ）に基づいて、ＬＢＡをPhysical Block Addressing（ＰＢＡ）に変換し、ＰＢＡの示す位置に書き込みデータを書き込む。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第８２８５９４６号明細書
【特許文献２】米国特許出願公開第２００７／００３３３２４号明細書
【特許文献３】米国特許出願公開第２０１４／００９５７７５号明細書
【特許文献４】特表２０１３−５１３８８１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
実施形態は、不揮発性メモリのメモリ寿命を延ばす制御方法を提案する。
【課題を解決するための手段】
【０００５】
実施形態によれば、不揮発性メモリの制御方法は、不揮発性メモリを制御するコントローラが、不揮発性メモリに含まれる複数のメモリ領域ごとの有効データのデータ量を検出することと、コントローラが、複数のメモリ領域ごとに、複数のメモリ領域の書き込み順序又は書き込みからの経過時間に応じて変化するしきい値を設定することと、コントローラが、複数のメモリ領域ごとのデータ量と前記しきい値とに基づいて、データ量がしきい値より小さいメモリ領域を選択することと、コントローラが、選択されたメモリ領域の有効データを他のメモリ領域に移動し、選択されたメモリ領域を消去することと、を含む。
【図面の簡単な説明】
【０００６】
【図１】第１の実施形態に係る情報処理システムの構成の一例を示すブロック図。
【図２】第１の実施形態に係る順序情報の一例を示すデータ構造図。
【図３】第１の実施形態に係るデータ量情報の一例を示すデータ構造図。
【図４】第１の実施形態に係るしきい値情報の一例を示すデータ構造図。
【図５】第１の実施形態に係る書き込み順序と有効データ量としきい値との関係の例を示すグラフ。
【図６】第１の実施形態に係るメモリシステムで実行されるガベージコレクション処理の一例を示すフローチャート。
【図７】第２の実施形態に係る情報処理システムの具体的構成の一例を示すブロック図。
【図８】第２の実施形態に係るストレージシステムの一例を示す斜視図。
【発明を実施するための形態】
【０００７】
以下、図面を参照して実施形態について説明する。以下の説明において、略同一の機能及び構成要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
［第１の実施形態］
本実施形態においては、ガベージコレクションを実行するメモリ領域を選択するメモリシステムについて説明する。
【０００８】
本実施形態に係るメモリシステムは、例えばＳＳＤなどのようなメモリ装置であるとする。しかしながら、本実施形態に係るメモリシステムと同様の構成は、メモリカード、ＨＤＤ、ＨＤＤとＳＳＤとを含むハイブリッド型メモリ装置、光ディスクなどの各種メモリ装置に適用可能である。
【０００９】
メモリシステムは、不揮発性メモリを含む。本実施形態では、不揮発性メモリがＮＡＮＤ型フラッシュメモリを含む場合について説明する。しかしながら、不揮発性メモリは、例えば、ＮＯＲ型フラッシュメモリ、ＭＲＡＭ（Magnetoresistive Random Access Memory）、ＰＲＡＭ（Phase change Random Access Memory）、ＲｅＲＡＭ（Resistive Random Access Memory）、又は、ＦｅＲＡＭ（Ferroelectric Random Access Memory）などＮＡＮＤ型フラッシュメモリではない他の種別のメモリを含むとしてもよい。
【００１０】
本実施形態において、不揮発性メモリは、消去単位領域ごとに、データが一括して消去される。消去単位領域は、複数の書き込み単位領域及び複数の読み出し単位領域を含む。不揮発性メモリがＮＡＮＤ型フラッシュメモリの場合、消去単位領域はブロックに相当する。書き込み単位領域及び読み出し単位領域はページに相当する。
【００１１】
本実施形態において、アクセスとは、メモリへデータを書き込むこと、及び、メモリからデータを読み出すことの双方を意味する。
本実施形態において、メモリ領域は、例えば、ガベージコレクションの実行単位で区分けされた領域である。例えば、ガベージコレクションの実行単位とは、ガベージコレクションの実行対象となるメモリの範囲である。より具体的には、ガベージコレクションの実行単位とは、１回のガベージコレクションで不要な領域の解放が実行される対象となる範囲である。例えば、ガベージコレクションの実行単位は、複数の書き込み単位領域を含む１つ又は複数の消去単位領域としてもよい。本実施形態においては、メモリ領域がブロックであるとして説明する。しかしながら、メモリ領域は、例えば２以上のブロックを含むなど、他の単位としてもよい。例えば、不揮発性メモリ５が複数のネームスペースに分割されている場合、各メモリ領域は、各ネームスペースに対応するとしてもよい。本実施形態において、ネームスペースとは、不揮発性メモリ５に含まれる複数のブロックを任意に区分けすることによって得られるメモリのスペースである。コントローラ４は、ネームスペースＩＤを用いて不揮発性メモリ５に対する各種の制御を行うことにより、不揮発性メモリ５における特定のスペースのみを制御可能である。
【００１２】
図１は、本実施形態に係る情報処理システムの一例を示すブロック図である。
情報処理システム１は、情報処理装置２とメモリシステム３とを含む。本実施形態において、情報処理装置２は、メモリシステム３に対応するホスト装置として動作する。
メモリシステム３は、情報処理装置２に内蔵されてもよく、情報処理装置２とメモリシステム３とは、ネットワークなどにより通信可能に接続されるとしてもよい。メモリシステム３は、複数の情報処理装置２と通信可能に接続されてもよい。また、複数のメモリシステム３が、１以上の情報処理装置２と通信可能に接続されてもよい。
メモリシステム３は、コントローラ４と不揮発性メモリ５とを含む。
【００１３】
不揮発性メモリ５は、複数のブロックＢ0〜ＢNを含む。
コントローラ４は、インタフェース部６、記憶部７Ａ、７Ｂ、プロセッサ８、メモリコントローラ９を含む。コントローラ４は、例えば、情報処理装置２との間でデータ、情報、信号、コマンド、アドレスなどを送受信するためのインタフェースに依存する部分であるフロントエンドと、当該インタフェースに依存しないバックエンドとに分けられるとしてもよい。この場合、例えば、フロントエンドは、インタフェース部６を含む。例えば、バックエンドは、記憶部７Ａ，７Ｂ、プロセッサ８、メモリコントローラ９を含む。
【００１４】
インタフェース部６は、例えば情報処理装置２などのような外部装置との間で、データ、情報、信号、コマンド、アドレスなどの送信及び受信を行う。
記憶部７Ａは、プロセッサ８が実行するプログラム７１、アドレス変換データ７２、順序情報７３、データ量情報７４、しきい値情報７５を格納する。なお、プログラム７１、アドレス変換データ７２、順序情報７３、データ量情報７４、しきい値情報７５の一部又は全部は、プロセッサ８内のメモリなどのような他のメモリに格納されてもよく、不揮発性メモリ５に書き込まれていてもよい。プログラム７１は、例えば、ファームウェア、アプリケーションプログラム、又は、オペレーティングシステムとしてもよい。アドレス変換データ７２は、情報処理装置２から受信された書き込みデータの論理アドレスと記憶部７Ｂ又は不揮発性メモリ５の物理アドレスとを関係付けている。アドレス変換データ７２は、例えばＬＵＴ（Look Up Table）である。アドレス変換データ７２は、テーブル形式のデータ構造を持つとしてもよく、リスト構造により論理アドレスと物理アドレスとを関連付けてもよい。
【００１５】
記憶部７Ａは、例えば不揮発性メモリとする。しかしながら、記憶部７Ａの一部又は全部は、例えばＤＲＡＭ（Dynamic Random Access Memory）又はＳＲＡＭ（Static Random Access Memory）などのような揮発性メモリでもよい。記憶部７Ａが揮発性メモリを含む場合、メモリシステム３の電源切断時に、揮発性メモリに格納されているプログラム又はデータは、例えば不揮発性メモリ５などのような不揮発性メモリに書き込まれるとしてもよい。
【００１６】
記憶部７Ｂは、例えば作業用メモリとして使用される。記憶部７Ｂは、ライトバッファメモリＷＢ、ガベージコレクションバッファメモリＧＢを含む。
ライトバッファメモリＷＢは、情報処理装置２から受信された書き込みデータを一時的に格納する。ガベージコレクションバッファメモリＧＢは、後述するガベージコレクションの際にデータ（有効データ）を一時的に格納する。
記憶部７Ｂは、揮発性メモリでもよく、不揮発性メモリでもよく、不揮発性メモリと揮発性メモリとの組み合わせでもよい。
【００１７】
メモリコントローラ９は、例えばプロセッサ８、記憶部７Ｂなどの各種のモジュールから、データ、情報、信号、コマンド、アドレスなどを受信し、不揮発性メモリ５に対する書き込み、読み出し、消去を実行する。
【００１８】
プロセッサ８は、メモリシステム３を全体的に制御する。プロセッサ８は、プログラム７１を実行することにより、書き込み部８１、アドレス変換部８２、順序管理部８３、検出部８４、しきい値管理部８５、選択部８６、ガベージコレクション部８７として機能する。本実施形態において、書き込み部８１、アドレス変換部８２、順序管理部８３、検出部８４、しきい値管理部８５、選択部８６、ガベージコレクション部８７のうちの一部又は全部は、ハードウェアとしてメモリシステム３に実装されてもよい。
【００１９】
プロセッサ８は、情報処理装置２からインタフェース部６経由で、コマンド、論理アドレス、データサイズ、書き込みデータ、を受ける。
【００２０】
書き込み部８１は、書き込みコマンドが受け付けられた場合に、ライトバッファメモリＷＢへ書き込みデータを格納する。
また、書き込み部８１は、不揮発性メモリ５への書き込みに適したデータ量の書き込みデータがライトバッファメモリＷＢに格納されると、ライトバッファメモリＷＢのデータをメモリコントローラ９経由で不揮発性メモリ５へ書き込む。
【００２１】
アドレス変換部８２は、書き込みデータがライトバッファメモリＷＢへ格納された場合に、書き込みデータの論理アドレスと、書き込みデータが格納されたライトバッファメモリＷＢの物理アドレスとを関係付けて、アドレス変換データ７２を更新する。
また、アドレス変換部８２は、ライトバッファメモリＷＢのデータが不揮発性メモリ５に書き込まれた場合に、当該データの論理アドレスと、当該データが書き込まれた不揮発性メモリ５の物理アドレスとを関係付けて、アドレス変換データ７２を更新する。
さらに、アドレス変換部８２は、ガベージコレクションによって不揮発性メモリ５のデータが移動した場合に、移動したデータの論理アドレスと、ガベージコレクションによる移動先の物理アドレスとを関係付けて、アドレス変換データ７２を更新する。
【００２２】
順序管理部８３は、ブロックＢ0〜ＢNの書き込み順序を示す順序情報７３を管理する。例えば、順序管理部８３は、ブロックＢ0〜ＢNの識別情報に、書き込み順序を示す昇順のシーケンシャル番号を割り当てた順序情報７３を記憶部７Ａに格納する。
【００２３】
検出部８４は、ブロックＢ0〜ＢNごとの有効データのデータ量（以下、有効データ量という）を検出し、ブロックＢ0〜ＢNの識別情報に、有効データ量を割り当てたデータ量情報７４を記憶部７Ａに格納する。
【００２４】
有効データとは、少なくとも利用可能性のあるデータであるとする。本実施形態において、有効データは、例えば、不揮発性メモリ５に含まれている複数のブロックのうちのあるブロックに対するガベージコレクションが実行された場合に当該ガベージコレクションが実行されたブロックではない複数のブロックのうちの他のブロックに書き込まれるデータであるとする。
より具体的に説明すると、有効データとは、例えば、アドレス変換データ７２によって参照されるデータである。有効データの一例としては、書き込みコマンドとともに論理アドレス及び当該論理アドレスに対応する書き込みデータが情報処理装置２からメモリシステム３に受信された後、情報処理装置２から同一の論理アドレスを指定した上書きコマンドが受信されていないデータがある。換言すると、例えば、同じ論理アドレスに対応するデータが複数位置に格納又は書き込まれている場合に、最新のデータが有効データであるとする。
【００２５】
これに対して、無効データとは、少なくとも利用可能性のないデータであるとする。本実施形態において、無効データは、例えば、あるブロックに対するガベージコレションが実行された場合に当該ガベージコレクションが実行されたブロックではない他のブロックに書き込まれる必要がなく、そのまま消去されてもよいデータであるとする。無効データの一例としては、更新が発生した場合の更新前のデータがある。
【００２６】
本実施形態において、ブロックＢ0〜ＢNごとの有効データ量は、例えば、ブロックＢ0〜ＢN内の有効データの合計のサイズである。例えば、複数の有効データが同じサイズを持つ場合、ブロックＢ0〜ＢNごとの有効データの数により、ブロックＢ0〜ＢNごとの有効データ量が管理されてもよい。
【００２７】
しきい値管理部８５は、ブロックＢ0〜ＢNごとに設定されているしきい値を管理する。しきい値は、ガベージコレクションを実行するか否かを判断する基準として用いられる値である。本実施形態では、ガベージコレクションを実行した方がよいほど有効データのデータ量が少ないか否かを判断する観点から、しきい値が設定される。例えば、しきい値管理部８５は、ブロックＢ0〜ＢNの識別情報に、しきい値を割り当てたしきい値情報７５を記憶部７Ａに格納する。例えば、しきい値管理部８５は、ブロックＢ0〜ＢNに対する書き込み順序に応じて、ブロックＢ0〜ＢNに対するしきい値を変化させる。より具体的には、しきい値管理部８５は、順序情報７３に基づいて、書き込み順序が前のブロック（書き込みが古いブロック）のしきい値が、書き込み順序が後のブロック（書き込みが新しいブロック）のしきい値より大きくなるように、ブロックＢ0〜ＢNごとにしきい値を設定する。複数のしきい値のうちの一部は、等しい値でもよい。
【００２８】
選択部８６は、データ量情報７４としきい値情報７５とに基づいて、ブロックＢ0〜ＢNごとに有効データ量がしきい値より小さいか判断し、有効データ量がしきい値より小さいブロックをガベージコレクション対象のブロックとして選択する。
例えば、選択部８６は、各ブロックＢ0〜ＢNのしきい値から各ブロックＢ0〜ＢNの有効データ量を引いた値を計算し、ブロックＢ0〜ＢNごとに計算された値のうち最も大きい値に対応するブロックをガベージコレクション対象のブロックとして選択してもよい。
【００２９】
例えば、選択部８６は、各ブロックＢ0〜ＢNのしきい値から各ブロックＢ0〜ＢNの有効データ量を引いた値を計算し、ブロックＢ0〜ＢNごとに計算された値の大きさによってグループ分けし、値が大きいグループの中からガベージコレクション対象のブロックを選択してもよい。より具体的には、選択部８６は、各ブロックＢ0〜ＢNのしきい値から各ブロックＢ0〜ＢNの有効データ量を引いた値を計算し、ブロックＢ0〜ＢNごとに計算された値のうちガベージコレクションの実行を許可する設定値以上の値に対応するブロックを選択してもよい。
選択部８６は、１つのブロックを選択してもよく、複数のブロックを選択してもよい。
【００３０】
ガベージコレクション部８７は、選択部８６によって選択されたブロックに対してガベージコレクションを実行する。本実施形態において、ガベージコレクションとは、メモリの不要な領域を解放する処理とする。より具体的に説明すると、ガベージコレクション部８７は、不揮発性メモリ５から選択部８６によって選択されたブロックの有効データをガベージコレクションバッファメモリＧＢに一時的に格納し、選択されたブロックを消去し、不揮発性メモリ５から有効データの移動先として空き領域を選択し、ガベージコレクションバッファメモリＧＢの有効データを選択された空き領域に書き込む。ここで、空き領域とは、データを書き込み可能な領域とする。空き領域の一例としては、フローブロックがある。フリーブロックとは、データが消去されており、有効データが書き込まれていないブロックである。
【００３１】
不揮発性メモリ５がＮＡＮＤ型フラッシュメモリの場合には、メモリの不要な領域を解放するために、ガベージコレクション対象のブロックの有効データは他のブロックに移動され、ガベージコレクション対象のブロックは消去される。このため、不揮発性メモリ５がＮＡＮＤ型フラッシュメモリの場合には、ガベージコレクションとともにコンパクションが実行されてもよい。したがって、本実施形態においては、ガベージコレクション部８７に代えて、コンパクションを実行するコンパクション部を備えるとしてもよい。コンパクションとは、メモリの不要な領域を集めて、連続した書き込み可能な領域を増やす処理とする。コンパクション部は、選択部８６によって選択された複数のブロックの有効データを記憶部７Ｂに一時的に格納し、記憶部７Ｂに一時的に格納された有効データを選択された空き領域に書き込む。
【００３２】
図２は、本実施形態に係る順序情報７３の一例を示すデータ構造図である。
順序情報７３は、ブロックＢ0〜ＢNの識別情報と、書き込み順序を示す昇順のシーケンシャルな番号とを関連付けている。
この図２では、ブロックＢ0〜ＢNの順で書き込みが実行され、ブロックＢ0に番号Ｋが関連付けられており、ブロックＢ1に番号Ｋ＋１が関連付けられており、ブロックＢNに番号Ｋ＋Ｎが関連付けられている。
【００３３】
この順序情報７３により、最大の番号Ｋ＋Ｎと関連付けられているブロックＢNに対して、最新の書き込みが実行されたことを認識可能である。
また、最大の番号Ｋ＋ＮとブロックＢ0に関連付けられている番号Ｋとの差はＮであり、最大の番号Ｋ＋ＮとブロックＢ1に関連付けられている番号Ｋ＋１との差はＮ−１であり、差の大きいブロックＢ0が、差の小さいブロックＢ1の前に書き込まれたことを認識可能である。
【００３４】
なお、順序情報７３は、書き込みの順序を昇順の番号ではない他の情報により管理してもよい。例えば、順序情報７３は、ブロックＢ0〜ＢNの識別情報と、書き込みの発生した時間情報とを関連付けてもよい。
【００３５】
図３は、本実施形態に係るデータ量情報７４の一例を示すデータ構造図である。
データ量情報７４は、各ブロックＢ0〜ＢNの識別情報と、各ブロックＢ0〜ＢNの有効データ量（有効データの合計サイズ）Ｚ0〜ＺNとを関連付けている。書き込み順序が前のブロックほど、有効データ量は小さくなる傾向にある。
【００３６】
図４は、本実施形態に係るしきい値情報７５の一例を示すデータ構造図である。
しきい値情報７５は、各ブロックＢ0〜ＢNの識別情報と、有効データ量Ｚ0〜ＺNと比較されるしきい値ＴＨ0〜ＴＨNとを関連付けている。しきい値ＴＨ0〜ＴＨNは、書き込み順序が前のブロックに関連付けられるしきい値ほど大きく、書き込み順序が後のブロックに関連付けられるしきい値ほど小さくなるように、設定される。本実施形態においては、ブロックＢ0〜ＢNの順で書き込みが実行されているため、ブロックＢ0〜ＢNに対応するしきい値は、ＴＨ0＞ＴＨ1＞ＴＨ2＞…＞ＴＨNの関係を持つ。しかしながら、しきい値ＴＨ0〜ＴＨNのうちの一部は、等しい値でもよい。
【００３７】
図５は、本実施形態に係る書き込み順序と有効データ量としきい値との関係の例を示すグラフである。
この図５においては、ブロックＢ0〜ＢNの順に書き込みが実行されている。書き込み順序が後のブロックほど書き込み順序が前のブロックよりも有効データ量が多い傾向にあるが、有効データ量はメモリシステム３の使用状況に影響される。したがって、部分的には、書き込み順序が前のブロックであっても書き込み順序が後のブロックよりも有効データ量が多い場合もある。
【００３８】
書き込み順序が前のブロックのしきい値は、書き込み順序が後のブロックのしきい値より大きく設定される。しかしながら、部分的には、書き込み順序が前のブロックのしきい値は、書き込み順序が後のブロックのしきい値と同じでもよい。
この図５では、ブロックＢ0〜Ｂ3において、有効データ量Ｚ0〜Ｚ3がしきい値ＴＨ0〜ＴＨ3よりも小さい。そこで、ブロックＢ0〜Ｂ3に対して、各ブロックＢ0〜Ｂ3のしきい値ＴＨ0〜ＴＨ3から各ブロックＢ0〜Ｂ3の有効データ量Ｚ0〜Ｚ3を引き算した値（差）Ｄ0〜Ｄ3を計算する。
【００３９】
計算の結果、ブロックＢ1の値Ｄ1が他のブロックＢ0，Ｂ2，Ｂ3の値Ｄ0，Ｄ2，Ｄ3よりも大きい。
したがって、図５のような関係を持つ場合には、ブロックＢ1がガベージコレクション対象のブロックとして選択される。
【００４０】
図６は、本実施形態に係るメモリシステム３で実行されるガベージコレクション処理の一例を示すフローチャートである。
ステップ６０１において、選択部８６は、記憶部７Ａの順序情報７３、データ量情報７４、しきい値情報７５を読み出す。
ステップ６０２において、選択部８６は、各ブロックＢ0〜ＢNのしきい値ＴＨ0〜ＴＨNと各ブロックＢ0〜ＢNの有効データ量Ｚ0〜ＺNとを比較する
ステップＳ６０３において、選択部８６は、有効データ量がしきい値よりも小さいブロックがあるか否か判断する。
【００４１】
有効データ量がしきい値よりも小さいブロックがない場合には、処理が終了する。
有効データ量がしきい値よりも小さいブロックがある場合、ステップ６０４において、選択部８６は、有効データ量がしきい値よりも小さいブロックに対して、有効データ量からしきい値を引き算した値を計算する。
【００４２】
ステップ６０５において、選択部８６は、計算された値のうちで最も大きい値に対応するブロックをガベージコレクション対象のブロックとして選択する。
ステップ６０６において、ガベージコレクション部８７は、選択されたブロックの有効データを、メモリコントローラ９経由で読み出し、読み出された有効データをガベージコレクションバッファメモリＧＢに格納する。
【００４３】
ステップ６０７において、ガベージコレクション部８７は、メモリコントローラ９経由で選択されたブロックを消去する。
ステップ６０８において、ガベージコレクション部８７は、メモリコントローラ９経由で、不揮発性メモリ５のいずれかのブロックに、ガベージコレクションバッファメモリＧＢのデータを、書き込む。
【００４４】
ステップ６０９において、アドレス変換部８２は、ガベージコレクション部８７によって不揮発性メモリ５に書き込まれた有効データの論理アドレスと物理アドレスとを関連付けてアドレス変換データ７２を更新する。
【００４５】
以上説明した本実施形態においては、ある程度の期間書き込みが発生しておらず、かつ、有効データの少ないブロックに対して、ガベージコレクションを実行することができる。
例えば、書き込み順序が前であっても有効データの多いブロックに対してガベージコレクションを実行すると、移動が必要なデータ量が多くなり、ガベージコレクションが効率的に実行されない場合がある。
しかしながら、本実施形態においては、書き込み順序がある程度前であり、かつ、有効データ量の少ないブロックに対して、ガベージコレクションを実行することができ、メモリシステム３の使用状態に応じてガベージコレクションの効率化を図ることができる。
【００４６】
上記のように、本実施形態においては、ブロックＢ0〜ＢNごとの、しきい値ＴＨ0〜ＴＨNから有効データ量Ｚ0〜ＺNをそれぞれ引き算した値に基づいて、ガベージコレクション対象のブロックが選択される。しかしながら、有効データ量Ｚ0〜ＺNに代えて、例えば、ブロックＢ0〜ＢNごとの、書き込まれたデータの量に対する有効データ量の割合（以下、有効データ率という）を用いてもよい。この場合、例えば、ブロックＢ0〜ＢNごとの、しきい値から有効データ率を引き算した値に基づいて、ガベージコレクション対象のブロックが選択される。
本実施形態では、ブロックＢ0〜ＢNに対する書き込み順序に応じてしきい値が設定される場合を説明したが、例えば、ブロックＢ0〜ＢNごとの最後の書き込みが発生してからの経過時間に応じてしきい値が設定されるとしてもよい。この場合、書き込みが発生してからの経過時間が長いほど、しきい値が大きくなる。
【００４７】
［第２の実施形態］
本実施形態においては、上記第１の実施形態で説明した情報処理システム１の具体的構成の例について説明する。
図７は、本実施形態に係る情報処理システム１の具体的構成の一例を示すブロック図である。
情報処理システム１は、情報処理装置２とメモリシステム３とを含む。
上記第１の実施形態に係るメモリシステム３のプロセッサ８は、例えば、ＣＰＵ（Central Processing Unit）４３Ｆ，４３Ｂに対応する。
【００４８】
インタフェース部６は、ホストインタフェース４１に対応する。
記憶部７Ａは、ＤＲＡＭ４７に対応する。
アドレス変換データ７２は、ＬＵＴ４５に対応する。
メモリコントローラ９は、ＮＡＮＤＣ（NAND Controller）５０に対応する。
【００４９】
情報処理装置２は、メモリシステム３のホスト装置として機能する。
メモリシステム３のコントローラ４は、フロントエンドＦＥと、バックエンドＢＥとを備える。
フロントエンド（ホスト通信部）ＦＥは、ホストインタフェース４１、ホストインタフェースコントローラ４２、暗号化／復号化部（Advanced Encryption Standard (AES)）４４、及びＣＰＵ４３Ｆを備える。
【００５０】
ホストインタフェース４１は、情報処理装置２との間で、要求（書き込みコマンド、読み出しコマンド、消去コマンドなど）、ＬＢＡ、データなどを通信する。
ホストインタフェースコントローラ（制御部）４２は、ＣＰＵ４３Ｆの制御に基づいて、上記ホストインタフェース４１の通信を制御する。
【００５１】
暗号化／復号化部４４は、データ書き込み動作において、ホストインタフェースコントローラ４２から送信される書き込みデータ（平文）を暗号化する。暗号化／復号化部４４は、データ読み出し動作において、バックエンドＢＥのリードバッファメモリＲＢから送信される暗号化された読み出しデータを復号化する。なお、この暗号化／復号化部４４を介さずに、書き込みデータ及び読み出しデータを送信することも、必要に応じて可能である。
【００５２】
ＣＰＵ４３Ｆは、フロントエンドＦＥの上記各構成４１，４２，４４を制御し、フロントエンドＦＥの全体の動作を制御する。
バックエンド（メモリ通信部）ＢＥは、ライトバッファメモリＷＢ、ガベージコレクションバッファメモリＧＢ、リードバッファメモリＲＢ、ＬＵＴ４５、ＤＤＲＣ４６、ＤＲＡＭ４７、ＤＭＡＣ４８、ＥＣＣ４９、ランダマイザＲＺ、ＮＡＮＤＣ５０、及びＣＰＵ４３Ｂを備える。
【００５３】
ライトバッファメモリ（ライトデータ転送部）ＷＢは、情報処理装置２から送信された書き込みデータを一時的に格納する。具体的には、ライトバッファメモリＷＢは、当該書き込みデータが不揮発性メモリ５に適した所定のデータサイズになるまで、一時的にデータを格納する。
【００５４】
リードバッファメモリ（リードデータ転送部）ＲＢは、不揮発性メモリ５から読み出された読み出しデータを一時的に格納する。具体的には、リードバッファメモリＲＢにおいて、読み出しデータは、情報処理装置２に適した順序（情報処理装置２が指定した論理アドレスＬＢＡの順序）になるように並び替えられる。
【００５５】
ガベージコレクションバッファメモリＧＢは、ガベージコレクションの際にデータを一時的に格納する。
ＬＵＴ４５は、論理アドレスＬＢＡを物理アドレスＰＢＡに変換するためのテーブルである。
ＤＤＲＣ４６は、ＤＲＡＭ４７におけるＤＤＲ（Double Data Rate）を制御する。
【００５６】
ＤＲＡＭ４７は、例えば、ＬＵＴ４５を格納する揮発性のメモリである。
ＤＭＡＣ（Direct Memory Access Controller）４８は、内部バスＩＢを介して、書き込みデータや読み出しデータなどを転送する。図７においては１つのＤＭＡＣ４８が図示されているが、コントローラ４は、２以上のＤＭＡＣ４８を備えるとしてもよい。ＤＭＡＣ４８は、必要に応じて、コントローラ４内の様々な位置に設定される。
【００５７】
ＥＣＣ４９は、ライトバッファメモリＷＢから送信される書き込みデータにＥＣＣ（Error Correcting Code）を付加する。ＥＣＣ４９は、リードバッファメモリＲＢに送信する際に、付加したＥＣＣを用いて、不揮発性メモリ５から読み出した読み出しデータを必要に応じて訂正する。
【００５８】
ランダマイザＲＺ（又はスクランブラ）は、データ書き込み動作の際に、書き込みデータが不揮発性メモリ５の特定のページ又はワード線方向などに偏らないように、書き込みデータを分散させる。このように、書き込みデータを分散させることで、書き込み回数を平準化でき、不揮発性メモリ５のメモリセルのセル寿命を長期化できる。そのため、不揮発性メモリ５の信頼性を向上できる。また、ランダマイザＲＺは、データ読み出し動作の際に、書き込み時のランダマイズ処理の逆処理を実行し、元のデータを復元する。
【００５９】
ＮＡＮＤＣ５０は、所定の速度の要求を満たすため、複数のチャンネル（ここでは、４つのチャンネルＣＨ０〜ＣＨ３）を用いて、並列に不揮発性メモリ５にアクセスする。
ＣＰＵ４３Ｂは、バックエンドＢＥの上記各構成（４５〜５０，ＲＺ）を制御し、バックエンドＢＥの全体の動作を制御する。
【００６０】
メモリシステム３と情報処理装置２との間の通信で用いられるプロトコルは、例えば、ＳＡＳ（Serial Attached SCSI）、ＰＣＩｅ（PCI Express）、ＮＶＭｅ（NVM Express）、又は、ＡＨＣＩ（Advanced Host Controller Interface）等であってもよい。例えば、ＮＶＭｅインタフェースにしたがってメモリシステム３の内部でデータが送受信されるとしてもよい。
【００６１】
なお、図７に示したコントローラ４の構成は例示であり、この構成に限定されることはない。
図８は、本実施形態に係るストレージシステムの一例を示す斜視図である。
ストレージシステム１００は、ＳＳＤとしてのメモリシステム３を備える。
メモリシステム３は、例えば比較的小型のモジュールである。なお、メモリシステム３の大きさ及び寸法は、種々の大きさのものに適宜変更可能である。
【００６２】
また、メモリシステム３は、例えば、企業（エンタープライズ）で運用されるデータセンター又はクラウドコンピューティングシステムにおいて、サーバのような情報処理装置２に装着されて使用可能である。そのため、メモリシステム３は、エンタープライズ用ＳＳＤ（ｅＳＳＤ）であってもよい。
【００６３】
メモリシステム３は、例えば上方に開口した複数のコネクタ（例えばスロット）１０１を備える。例えば、複数のコネクタ１０１は、ＳＡＳコネクタとしてもよい。複数のコネクタ１０１がＳＡＳコネクタの場合には、情報処理装置２と各メモリシステム３とが互いに高速通信を行うことが可能である。
【００６４】
複数のメモリシステム３は、情報処理装置２のコネクタ１０１にそれぞれ装着され、略垂直方向に起立した姿勢で互いに並べて支持される。このような構成によれば、複数のメモリシステム３をコンパクトに纏めて実装可能であり、メモリシステム３の小型化を図ることができる。さらに、本実施形態に係るメモリシステム３の各形状は、２．５型のＳＦＦ（Small Form Factor)である。このような形状により、メモリシステム３は、エンタープライズ用ＨＤＤ（ｅＨＤＤ）と互換形状（コンパチ形状）を図ることができ、ｅＨＤＤとの容易なシステム互換性を実現することができる。
【００６５】
なお、メモリシステム３は、エンタープライズ用に限られない。例えば、メモリシステム３は、ノートブック型ポータブルコンピュータ又はタブレット型端末のようなコンシューマ用の電子機器の記憶媒体としても適用可能である。
以上説明したように、本実施形態で説明した構成を持つ情報処理システム１及びストレージシステム１００においては、大容量の記憶に、上記第１の実施形態と同様の効果を得ることができる。
【００６６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００６７】
１：情報処理システム、２：情報処理装置、３：メモリシステム、４：コントローラ、５：不揮発性メモリ、Ｂ0〜ＢN：ブロック、６：インタフェース部、７Ａ/７Ｂ：記憶部、ＷＢ：ライトバッファメモリ、ＧＢ：ＧＣバッファメモリ、８：プロセッサ、８３：順序管理部、８４：検出部、８５：しきい値管理部、８６：選択部、８７：ガベージコレクション部、９：メモリコントローラ、ＧＣ：ガベージコレクション
【図１】
2018181374.tif 000003
【図２】
2018181374.tif 000004
【図３】
2018181374.tif 000005
【図４】
2018181374.tif 000006
【図５】
2018181374.tif 000007
【図６】
2018181374.tif 000008
【図７】
2018181374.tif 000009
【図８】
2018181374.tif 000010