(57)【特許請求の範囲】
【請求項１】
ソリッドステートドライブ（ＳＳＤ）であり、
前記ＳＳＤに関連付けられた複数の論理アドレスのそれぞれに格納されるデータの更新に基づいて前記複数の論理アドレスからなる複数のグループを形成するＳＳＤ制御モジュール
を備え、
前記複数のグループを形成することは、
前記複数の論理アドレスのそれぞれに格納される前記データがどのくらい最近に更新されるのかを示す、前記複数の論理アドレスのリストを生成することと、
前記リスト内の前記複数の論理アドレスに関する複数の異なる範囲を複数のゾーンへと配置することであって、前記複数のゾーンのそれぞれが、前記複数の論理アドレスの異なる範囲を含み、かつ前記複数の論理アドレスのうち少なくとも１つを含むように、前記複数のゾーンのそれぞれが前記リスト内の前記複数の論理アドレスにおける前記複数の異なる範囲のそれぞれに対応する、配置することと、
前記リストに基づいて前記複数のゾーンを含むゾーンリストを生成することと
を含み、
前記ＳＳＤが、更に、
前記データを、前記ゾーンリストに基づいてＳＳＤ記憶領域のブロック内の物理アドレスに書き換えるメモリ制御モジュール
を備える、ソリッドステートドライブ。
【請求項２】
前記ＳＳＤ制御モジュールは、
前記リストを生成するＬＲＵモジュールと、
前記ゾーンリストを生成するゾーン制御モジュールと
を有する、請求項１に記載のソリッドステートドライブ。
【請求項３】
前記複数の論理アドレスは複数の論理ブロックアドレス（ＬＢＡ）を含む、請求項１または２に記載のソリッドステートドライブ。
【請求項４】
前記メモリ制御モジュールは、前記複数のゾーンのうち第１ゾーンに関連付けられた第１論理アドレスの第１データを、前記ＳＳＤ記憶領域の第１ブロックに書き換え、前記複数のゾーンのうち第２ゾーンに関連付けられた第２論理アドレスの第２データを、前記ＳＳＤ記憶領域の第２ブロックに書き換える、請求項１から３のいずれか１項に記載のソリッドステートドライブ。
【請求項５】
前記ＳＳＤ記憶領域はフラッシュメモリアレイを含む、請求項１から４のいずれか１項に記載のソリッドステートドライブ。
【請求項６】
前記ＳＳＤ制御モジュールは、ファームウェアを実行するプロセッサを有する、請求項１から５のいずれか１項に記載のソリッドステートドライブ。
【請求項７】
前記リストおよび前記ゾーンリストは、揮発性メモリと不揮発性メモリとのうち少なくとも一方に格納される、請求項１から６のいずれか１項に記載のソリッドステートドライブ。
【請求項８】
前記ＳＳＤに関連付けられた第１の数の物理アドレスは、第２の数の前記複数の論理アドレスよりも多く、
前記第１の数と前記第２の数との差の、前記第２の数に対する比率は５％未満である、請求項１から７のいずれか１項に記載のソリッドステートドライブ。
【請求項９】
前記ＳＳＤの書き込み増幅率は約１．１である、請求項８に記載のソリッドステートドライブ。
【請求項１０】
ソリッドステートドライブ（ＳＳＤ）の動作方法であり、
前記ＳＳＤに関連付けられた複数の論理アドレスのそれぞれに格納されるデータの更新に基づいて前記複数の論理アドレスからなる複数のグループを形成する段階
を備え、
前記複数のグループを形成する段階は、
前記ＳＳＤに関連付けられた前記複数の論理アドレスのそれぞれに格納される前記データがどのくらい最近に更新されるのかを示す、前記複数の論理アドレスのリストを生成する段階と、
前記リスト内の前記複数の論理アドレスに関する複数の異なる範囲を複数のゾーンへと配置することであって、前記複数のゾーンのそれぞれが、前記複数の論理アドレスの異なる範囲を含み、かつ前記複数の論理アドレスのうち少なくとも１つを含むように、前記複数のゾーンのそれぞれが前記複数の論理アドレスにおける前記複数の異なる範囲のそれぞれに対応する、配置する段階と、
前記リストに基づいて前記複数のゾーンを含むゾーンリストを生成する段階と
を有し、
前記動作方法が、更に
前記データを、前記ゾーンリストに基づいてＳＳＤ記憶領域のブロック内の物理アドレスに書き換える段階
を備える、方法。
【請求項１１】
前記複数の論理アドレスは複数の論理ブロックアドレス（ＬＢＡ）を含む、請求項１０に記載の方法。
【請求項１２】
前記複数のゾーンのうち第１ゾーンに関連付けられた第１論理アドレスの第１データを、前記ＳＳＤ記憶領域の第１ブロックに書き換え、前記複数のゾーンのうち第２ゾーンに関連付けられた第２論理アドレスの第２データを、前記ＳＳＤ記憶領域の第２ブロックに書き換える段階をさらに備える、請求項１０または１１に記載の方法。
【請求項１３】
前記ＳＳＤ記憶領域はフラッシュメモリアレイを含む、請求項１０から１２のいずれか１項に記載の方法。
【請求項１４】
前記リストおよび前記ゾーンリストは、揮発性メモリと不揮発性メモリとのうち少なくとも一方に格納される、請求項１０から１３のいずれか１項に記載の方法。
【請求項１５】
前記ＳＳＤに関連付けられた第１の数の物理アドレスは、第２の数の前記複数の論理アドレスよりも多く、
前記第１の数と前記第２の数との差の、前記第２の数に対する比率は５％未満である、請求項１０から１４のいずれか１項に記載の方法。
【請求項１６】
前記ＳＳＤの書き込み増幅率は約１．１である、請求項１５に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願の相互参照］
本願は、２０１２年５月２日に提出された米国登録実用新案第１３／４６１，８９９号公報の優先権と、２０１１年５月２４日に提出された米国仮出願第６１／４８９，６２８号の便益とを主張する。上記出願の開示はそれらの全体が参照により本明細書に組み込まれる。
【０００２】
本開示は、記憶デバイスにおける書き込み増幅率の最小化に関する。
【背景技術】
【０００３】
本セクションで示される背景技術は、本開示の背景を一般的に示すことを目的としている。この背景技術のセクションで説明される範囲において、本願発明の発明者らによる研究は、および提出時点において先行技術として見なされ得ない説明の態様は、本開示の先行技術として明示的にも暗示的にも認められない。
【０００４】
ソリッドステートドライブ（ＳＳＤ）などの記憶デバイスは、１以上のフラッシュメモリデバイスを含みうる。あくまで例としてではあるが、フラッシュメモリデバイスはＮＡＮＤベースのフラッシュメモリを含みうる。典型的には、フラッシュメモリの記憶領域は、アドレス指定可能なページにそれぞれ区分けされた複数のブロック内に配置されている。フラッシュメモリにおいてデータは、ブロック内でページ毎に書き込まれ格納される。逆に、データを書き換える、または消去する場合、対応するブロック全体が消去される。
【０００５】
特定のページに格納されたデータが更新される場合、対応するブロック内の有効なデータの全て（つまり、変更または更新されていないデータを格納するあらゆるページ）を消去し書き換える必要がある。無効なデータ（つまり、変更または更新され、よって既に他の場所に書き換えられたデータを格納するあらゆるページ）は単純に消去され得る。例えば、記憶デバイスに書き込みを行うホストは、論理ブロックアドレス（ＬＢＡ）など論理アドレスにデータを書き込む。逆に、記憶デバイスは、当該論理アドレスに対応する物理アドレスに当該データをマッピングし書き込む。記憶デバイスが、特定の物理アドレス（つまり、ブロック内の１以上のページ）のデータを更新する必要がある場合、ブロック全体が消去され同じかまたは異なるブロックに書き込まれるが、対応する論理アドレスは同じままである。したがって、記憶デバイスを含むシステムは、ホストが行うよりも多く書き込み動作を行うことになる。
【０００６】
言い換えると、物理的書き込みの回数は、論理的書き込みの回数よりも多い。論理的書き込みの回数に対する物理的書き込みの回数の比率は、書き込み増幅率（ＷＡ）とも呼ばれ得る。書き込み増幅率が比較的高い（例えばＷＡが５より大きい）場合、記憶デバイスの劣化の度合いが高くなり、よって、記憶デバイスの寿命が短くなる。逆に、書き込み増幅率が比較的低い（例えばＷＡが１に近い）場合、記憶デバイスの性能および寿命が向上する。
【０００７】
記憶デバイスは、書き込み増幅率を最小化すべくウェアレベリングおよびオーバープロビジョニングを実施し得る。例えば、オーバープロビジョニングとは、ホストに関連付けられた論理アドレスの対応する数（つまり、ホストの論理容量）よりも多く、記憶デバイス内に物理的位置を設けることを指す。言い換えると、記憶デバイスは、ホストが含む論理的位置よりも多くの物理的位置を含む。余剰の物理的位置が設けられることによって、余剰物理容量を記憶デバイスに提供する。記憶デバイスの全物理容量（およびホストの論理容量）に対する記憶デバイスの余剰物理容量の比率は、オーバープロビジョニング比率（ＯＰＲ）と呼ばれる。例えば記憶デバイスの全物理容量が１００ギガバイト（ＧＢ）であり、ホストの論理容量が７５ＧＢである場合、ＯＰＲは２５：１００、つまり２５％となる。
【発明の概要】
【発明が解決しようとする課題】
【０００８】
記憶デバイスのＯＰＲは、記憶デバイスの書き込み増幅率に直接的に関連し得る。例えば、フラッシュメモリデータの１つのページに格納されるデータが更新される場合、現在当該データを格納しているブロック全体を消去する代わりに、当該データは、フラッシュメモリの異なるブロック内の余剰の物理的位置の空きページに書き換えられ得る。当該データを格納している元のページは、ブロック全体を完全に書き換えることを避けるべく、単に、古いまたは無効であるものとしてマークされ得る。この処理は、ブロック全体が無効なデータで埋められるまで、または、有効なデータに対する無効なデータの比率が閾値よりも大きくなるまで、および／または、クリーンアップおよびマージ動作（例えばガーベジコレクション）に従って、更なる書き込みに関して繰り返される。したがって、記憶デバイスのＯＰＲが大きくなると、更なる書き換えの回数を減らすことが出来るので当該記憶デバイスの書き込み増幅率は小さくなる。あくまで例としてではあるが、１０％のＯＰＲは約５の書き込み増幅率に対応し、２５％のＯＰＲは約２の書き込み増幅率に対応し、５０％のＯＰＲは、１に近い書き込み増幅率に対応する。
【課題を解決するための手段】
【０００９】
ソリッドステートドライブ（ＳＳＤ）は、ＳＳＤに関連付けられた複数の論理アドレスのそれぞれに格納されるデータがどのくらい頻繁に更新されるのかに対応する頻度を判断し、頻度に基づいて論理アドレスからなる複数のグループを形成するＳＳＤ制御モジュールと、データを、複数のグループに基づいてＳＳＤ記憶領域のブロック内の物理アドレスに書き換えるメモリ制御モジュールとを含む。
【００１０】
ソリッドステートドライブ（ＳＳＤ）の動作方法は、ＳＳＤに関連付けられた複数の論理アドレスのそれぞれに格納されるデータがどのくらい頻繁に更新されるのかに対応する頻度を判断する段階と、頻度に基づいて論理アドレスからなる複数のグループを形成する段階と、データを、複数のグループに基づいてＳＳＤ記憶領域のブロック内の物理アドレスに書き換える段階とを含む。
【００１１】
本開示の適用可能な領域は、発明を実施するための形態、特許請求の範囲、および図面から明らかとなる。詳細な説明および特定の例は、例示のみを目的としており、本開示の範囲を限定することを目的としていない。
【図面の簡単な説明】
【００１２】
本開示は、発明を実施するための形態および添付の図面から、より完全に理解されるであろう。
【図１】本開示の原理に従う、記憶ドライブシステムの機能ブロック図である。
【図２】本開示の原理に従う、ソリッドステートドライブ制御モジュールの機能ブロック図である。
【図３Ａ】本開示の原理に従う、論理アドレスゾーンリストの例を示す。
【図３Ｂ】本開示の原理に従う、論理アドレスゾーンリストの例を示す。
【図４Ａ】ゾーンリストに従って再配置することなくデータを格納するフラッシュメモリブロックを示す。
【図４Ｂ】ゾーンリストに従って再配置することなくデータを格納するフラッシュメモリブロックを示す。
【図５Ａ】ゾーンリストに従ってデータを格納するフラッシュメモリブロックを示す。
【図５Ｂ】ゾーンリストに従ってデータを格納するフラッシュメモリブロックを示す。
【図６】本開示の原理に従う、ソリッドステートドライブ制御方法を示す。
【発明を実施するための形態】
【００１３】
本開示に係るシステムは、オーバープロビジョニングを少なくしつつ、記憶デバイス（例えば、ＮＡＮＤベースのフラッシュメモリを含むソリッドステートドライブまたはＳＳＤ）の書き込み増幅率（ＷＡ）を小さくする。あくまで例としてではあるが、記憶デバイスは、ホストに対して１テラバイト（ＴＢ）の論理容量を提供し、オーバープロビジョニング比率（ＯＰＲ）に対応する余剰物理容量は１６ギガバイト（ＧＢ）だけであり得る。これにより、１．１という比較的低い書き込み増幅率が実現され得る。
【００１４】
システムは、より動的である（つまり、頻繁に書き込まれ、書き換えられる）記憶デバイスの論理領域に対しより多くの余剰物理容量を割り当てる。逆に、システムはより静的な（つまり頻繁に書き換えられない）記憶デバイスの論理領域に対しより少ない余剰物理容量を割り当てる。結果的に、ＯＰＲはより動的な論理領域に関して比較的高くなり、オーバープロビジョニングをそれ程必要とせず、よってそれ程高い書き込み増幅率を必要としない、より静的な論理領域に関して比較的低くなる。システムは、ホストの利用パターンに動的に基づいて、各論理領域に関してＯＰＲを調整してよい。例えば、利用パターンはホストのオペレーティングシステム、ホストのアプリケーション、および、特定の論理領域の利用に関連する他の要因に基づいて異なり得る。
【００１５】
本開示はＳＳＤに関するシステムを説明するが、当該システムの原理は、書き込み性能を向上させ、クリーンアップ／マージ動作のオーバーヘッドを低減し、オーバープロビジョニングに関連するコストを削減すべく、ハードディスクドライブ（ＨＤＤ）など他の記憶デバイスに関して実装されてもよい。
【００１６】
図１において、記憶ドライブシステム１００は、ホストインタフェース１１２を介してホスト１０８と通信を行うソリッドステートドライブ（ＳＳＤ）１０４を含む。ホストインタフェース１１２は、ＳＳＤ１０４へ格納されるデータをホスト１０８から（例えば書き込み動作を介して）受信し、ＳＳＤ１０４に格納されたデータをホスト１０８へ（例えば読み取り動作を介して）送信する。
【００１７】
ＳＳＤ１０４は、メモリ制御モジュール１２０と、ＳＳＤ制御モジュール１２４と、フラッシュメモリアレイ１２８などのＳＳＤ記憶領域とを含む。書き込み動作の間、メモリ制御モジュール１２０はホスト１０８からのデータをフラッシュメモリアレイ１２８に書き込む。例えば、書き込み動作によって、論理ブロックアドレス（ＬＢＡ）などの論理アドレスにデータが書き込まれる。メモリ制御モジュール１２０は、フラッシュメモリアレイ内の物理アドレスに各ＬＢＡをマッピングし、対応する物理アドレスに当該データを書き込む。あくまで例としてではあるが、揮発性メモリ１３２、不揮発性メモリ１３６、または他のメモリ（例えば、メモリ制御モジュール１２０内のメモリ）が、各ＬＢＡを物理アドレスと関連付けるマッピング情報を格納する。逆に、読み取り動作の間、ホスト１０８はＬＢＡからのデータを要求し、メモリ制御モジュール１２０は、フラッシュメモリアレイ１２８内の対応する物理アドレスから当該データを読み取る。ホストインタフェース１１２、メモリ制御モジュール１２０、ＳＳＤ制御モジュール１２４、揮発性メモリ１３２、および不揮発性メモリ１３６など、ＳＳＤ１０４のコンポーネントのうち１以上は、システムオンチップ（ＳＯＣ）に配置されてもよい。
【００１８】
フラッシュメモリアレイ１２８は、１以上のフラッシュメモリデバイス１４０−１、１４０−２、・・・、１４０−ｎを含み得る。これら１以上のフラッシュメモリデバイスは総じてフラッシュメモリデバイス１４０と呼ぶ。各フラッシュメモリデバイス１４０は、複数のブロック内にデータを格納し、複数のブロックのうちそれぞれは、複数のアドレス指定可能なページを含む。アドレス指定可能なページのうちのそれぞれは、物理アドレスに対応する物理メモリ位置である。そして物理アドレスは、ＬＢＡと関連付けられている。したがって、ホスト１０８により書き込まれる、または読み取られる各ＬＢＡは、複数のアドレス指定可能なページのうちの１つに従ってアクセスされる複数のフラッシュメモリデバイスのうちの１つのフラッシュメモリデバイス内の物理的位置に対応する。あくまで例としてではあるが、フラッシュメモリデバイス１４０はＮＡＮＤベースのフラッシュメモリセルを実装し得る。
【００１９】
ＳＳＤ制御モジュール１２４は、本開示の原理に従ってオーバープロビジョニングの割り当てを実施する。ＳＳＤ制御モジュール１２４は、どのＬＢＡが比較的静的であり、どのＬＢＡが比較的動的であるかを判断する。言い換えると、比較的静的なＬＢＡはそれ程頻繁に更新（例えば、書き込みおよび書き換え）がされず、比較的動的なＬＢＡは、より頻繁に更新される。あくまで例としてではあるが、比較的静的なＬＢＡは、プログラムまたはアプリケーションファイル、写真、音楽、若しくは他のマルチメディアファイルなどのデータに対応し得る。逆に、比較的動的なＬＢＡは、ユーザによって頻繁に更新されるデータに対応し得る。
【００２０】
ＳＳＤ制御モジュール１２４は、更新頻度に基づいて配置されたＬＢＡの全てを含むリストを保持し得る。当該リストは、通常動作時には揮発性メモリ１３２に格納され得、データ損失を避けるべく、定期的に不揮発性メモリ１３６に格納され得る。リストは、それぞれ異なる更新頻度に対応する複数の異なるゾーンにＬＢＡを配置し得る。各ゾーンは複数のＬＢＡを含む。あくまで例としてではあるが、リストは、それぞれＬＢＡの１０％を含む１０のゾーンを含みうる。若しくは、リストは、それぞれＬＢＡの１％を含む１００のゾーンを含みうる。ＳＳＤ制御モジュール１２４は対応するゾーンに基づいてＬＢＡを再配置する。あくまで例としてではあるが、ＳＳＤ制御モジュール１２４は、不揮発性メモリ１３６に格納されたファームウェアを実行する１以上のプロセッサを含みうる。
【００２１】
図２において、例としてのＳＳＤ制御モジュール２００は、ＬＢＡゾーン制御モジュール２０４と、低利用頻度（ＬＲＵ）モジュール２０８とを含む。ＬＢＡゾーン制御モジュール２０４は、ＬＢＡのそれぞれホスト１０８によってどのくらい頻繁に更新されているかに基づいて、各ゾーンにどのＬＢＡが属するかを判断する。ＳＳＤ制御モジュール２００がＬＢＡをフラッシュメモリアレイ１２８内の対応する対応する物理アドレスにリマッピングする際、ＳＳＤ制御モジュール２００は、ゾーンに従ってフラッシュメモリアレイ１２８のブロック内にＬＢＡを配置する。
【００２２】
例えば、ＳＳＤ制御モジュール２００は定期的に、ガーベジコレクションまたは他のメンテナンス手順の間、物理ゾーンへのＬＢＡのマッピングに基づいてフラッシュメモリアレイ１２８に格納されたあらゆる有効なデータを再配置するようメモリ制御モジュール２１２に指示し得る。データの再配置には、１以上の第１ブロックのデータの部分（つまり、有効なデータに対応する部分）を第２ブロックに書き換え、第１ブロックのデータを消去することが含まれうる。したがって、フラッシュメモリアレイ１２８の特定の物理的位置に格納された有効なデータは、同じＬＢＡを保持するが、ＬＢＡは新たな物理的位置にマッピングされ得る。
【００２３】
ＬＢＡゾーン制御モジュール２０４は、例えばＬＲＵモジュール２０８から受信した情報に基づいて、どのＬＢＡをどのゾーンに割り当てるかを決定する。ＬＲＵモジュール２０８は、各ＬＢＡがどれだけ直近で用いられたかに基づいて順序が付けられたＬＲＵリストにＬＢＡを配置するＬＲＵエンジンまたはアルゴリズムを実装してよい。例えば、ＬＲＵリストの最上部のＬＢＡは、書き込みが行われたのが最も前であるＬＢＡに対応し、ＬＲＵリストの最下部のＬＢＡは、書き込みが行われたのが最も最近であるＬＢＡに対応する。あくまで例としてではあるが、あるＬＢＡに書き込みが行われると、当該ＬＢＡは、ＬＲＵリストの最下部に下げられる。このようにして、書き込みが行われたのが最も最近であるＬＢＡは、ＬＲＵリストの最下部近くに配置されるようになり、比較的動的なＬＢＡに対応することとなる。逆に、書き込みが行われたのが最も前であるＬＢＡは、ＬＲＵリストの最上部近くに配置されるようになり、比較的静的なＬＢＡに対応することとなる。ＬＲＵモジュール２０８はメモリ２１６内にＬＲＵリストを格納してもよく、および／または、当該ＬＲＵリストをＬＢＡゾーン制御モジュール２０４へ送信してもよい。あくまで例としてではあるが、メモリ２１６は、図１に示すように揮発性メモリ１３２および／または不揮発性メモリ１３６に対応してもよい。
【００２４】
ＬＢＡゾーン制御モジュール２０４は、ＬＲＵモジュール２０８から受信したＬＲＵリストに基づいてゾーンリストを保持してもよい。例えば、ゾーンリストは、それぞれＬＢＡの１０％を含む１０のゾーンを含みうる。あくまで例としてではあるが、書き込みを行われたのが最も前であるＬＢＡの最初の１０％に対応するＬＢＡ（つまり、ＬＲＵリストの最上部の１０％のＬＢＡ）は、ゾーン１に割り当てられる。書き込みを行われたのが最も前であるＬＢＡの次の１０％は、ゾーン２に割り当てられる。逆に、最後の１０％（つまり、ＬＲＵリストの最下部の１０％のＬＢＡ）は、ゾーン１０に割り当てられる。
【００２５】
図３Ａは、１０のゾーンを含むゾーンリスト３００の例を示す。図３Ｂは、１００のゾーンを含むゾーンリスト３２０の例を示す。用いられるゾーンの数はどのようなものであってもよいことは理解されよう。例えば、ゾーンリストは２つのゾーンだけを含んでもよく、この場合、１つのゾーンは静的ゾーンを表し、他方のゾーンは動的ゾーンを表してもよい。さらに、ＬＢＡはどのような割合で各ゾーンに割り当てられてもよい。言い換えると、各ゾーンは同じ数のＬＢＡを含んでいる必要はない。例えば、ゾーンリストが２つのゾーンのみを含む場合、静的ゾーンを表す第１ゾーンは７５％のＬＢＡを含んでもよい。逆に、動的ゾーンを表す第２ゾーンは、２５％のＬＢＡを含んでもよい。
【００２６】
図４Ａおよび図４Ｂは、ゾーンリストに従って再配置することなくデータを格納したフラッシュメモリブロック４００、４０４、４０８、４１２を示す。説明を単純にすべく、２つのゾーン（ゾーン１およびゾーン２）のみが用いられているが、ゾーンの数はどのようなものであってもよい。同様に、９つのアドレス指定可能なページをそれぞれ有する４つのブロックのみが示されているが、ブロックの数も、各ブロックが有するアドレス指定可能なページの数もどのようなものであってもよい。
【００２７】
図４Ａに示すように、ブロック４００は、１Ａ、１Ｂ、および１Ｃを含むゾーン１のデータ、並びに、２Ａおよび２Ｂを最初は含むゾーン２のデータを格納し得る。続いて、ゾーン２のデータは更新され、よって、２Ａ'および２Ｂ'として書き換えられる。したがって、２Ａおよび２Ｂに対応するページは無効なデータを格納していることになる。ゾーン２のデータが更新され再び２Ａ''および２Ｂ''として書き換えられた場合、２Ａ'および２Ｂ'に対応するページも無効なデータを格納していることになる。したがって、ゾーン２のデータを何度か書き換えた後、ブロック４００は全体が埋められた状態になるが、無効なデータを格納する４つのページを含むことになる。
【００２８】
同様に、ブロック４０４は、１Ｄ、１Ｅ、および１Ｆを含むゾーン１のデータ、並びに、２Ｃ、２Ｄ、および２Ｅを最初は含むゾーン２のデータを格納し得る。続いて、ゾーン２のデータは更新され、同じ論理アドレス２Ｃ、２Ｄ、および２Ｅにそれぞれ対応する２Ｃ'、２Ｄ'、および２Ｅ'として書き換えられる。したがって、２Ｃ、２Ｄ、および２Ｅに対応するページは、無効なデータを格納していることになる。したがって、ゾーン２のデータの１以上の書き換えの後、ブロック４０４は全体が埋められた状態になるが、無効なデータを格納する３つのページを含むことになる。ブロック４０８、４１２は全く埋められてない状態であり、ブロック４００、４０４のためのオーバープロビジョニングとして用いられ得る。言い換えると、クリーンアップ／マージ動作の前にブロック４００、４０４内のゾーン２のデータのいずれかに対して更なる書き換えが行われる場合、ブロック４００、４０４に有効なゾーン１のデータと無効なゾーン２のデータとが依然として格納されたまま、ゾーン２のデータはブロック４０８、４１２に書き換えられる。
【００２９】
図４Ｂを参照すると、ブロック４００、４０４に格納された有効なデータはブロック４０８、４１２に書き換えられ、ブロック４００、４０４は完全に消去される。したがって、ゾーン１のデータ、および有効なゾーン２までもが消去され書き換えられる。しかし、続いて行われるゾーン２のデータの更新により、新たなゾーン２のデータおよび無効なゾーン２のデータによって、ブロック４０８、４１２が比較的直ぐ埋められることになる。よって、書き換えに対応するべく更なるオーバープロビジョニングが必要となり、そのようなオーバープロビジョニングに対応すべく、複数のブロックが必要となるであろう。さらに、ゾーン１のデータが静的であり有効であるにも関わらず、更新されるゾーン２のデータによってブロックの１つが埋められる度に、ゾーン１のデータを格納する各ページの消去が行われ書き換えられる。
【００３０】
示されるように、２つのブロックからのデータが２つの異なるブロックに書き換えられているが、２以上のブロックからのデータを１つのブロック内で組み合わせてもよく、若しくは、最適な格納となるよう再配置されてもよい。
【００３１】
図５Ａおよび図５Ｂは、ゾーンリストに従ってデータを格納するフラッシュメモリブロック５００、５０４、５０８、５１２を示す。図５Ａに示すように、ブロック５００は、１Ａ、１Ｂ、および１Ｃを含むゾーン１のデータ、並びに、２Ａおよび２Ｂを最初は含むゾーン２のデータを格納し得る。続いて、ゾーン２のデータは更新され、よって、２Ａ'および２Ｂ'として書き換えられる。したがって、２Ａおよび２Ｂに対応するページは無効なデータを格納していることになる。ゾーン２のデータが更新され再び２Ａ''および２Ｂ''として書き換えられた場合、２Ａ'および２Ｂ'に対応するページも無効なデータを格納していることになる。したがって、ゾーン２のデータを何度か書き換えた後、ブロック５００は全体が埋められた状態になるが、無効なデータを格納する４つのページを含むことになる。
【００３２】
同様に、ブロック５０４は、１Ｄ、１Ｅ、および１Ｆを含むゾーン１のデータ、並びに、２Ｃ、２Ｄ、および２Ｅを最初は含むゾーン２のデータを格納し得る。続いて、ゾーン２のデータは更新され、２Ｃ'、２Ｄ'、および２Ｅ'として書き換えられる。したがって、２Ｃ、２Ｄ、および２Ｅに対応するページは、無効なデータを格納していることになる。したがって、ゾーン２のデータの１以上の書き換えの後、ブロック５０４は全体が埋められた状態になるが、無効なデータを格納する３つのページを含むことになる。ブロック５０８、５１２は全く埋められてない状態であり、ブロック５００、５０４のためのオーバープロビジョニングとして用いられ得る。言い換えると、クリーンアップ／マージ動作の前にブロック５００、５０４内のゾーン２のデータのいずれかに対して更なる書き換えが行われる場合、ブロック５００、５０４に有効なゾーン１のデータと無効なゾーン２のデータが依然として格納されたまま、ゾーン２のデータはブロック５０８、５１２に書き換えられる。
【００３３】
図５Ｂを参照すると、ブロック５００、５０４に格納された有効なデータはブロック５０８、５１２に書き換えられ、ブロック５００、５０４は完全に消去される。しかし、図４Ａおよび図４Ｂとは対照的に、データはゾーンリストに従って再配置される。例えば、図３Ａおよび図３Ｂに示されるＬＲＵリストおよびゾーンリストに基づいて、ゾーン１のデータはまとめてブロック５０８に格納される。逆に、ＬＲＵリストおよびゾーンリストに基づいてゾーン２のデータはまとめてブロック５１２に格納される。
【００３４】
したがって、ブロック５０８に格納された静的なゾーン１のデータは書き換えを避けられ、１つのブロックがゾーン１のデータとゾーン２のデータとの両方を格納する場合よりもより長い時間、オーバープロビジョニングを避けることが出来る。例えば、特定のタイプのゾーン１のデータは更新されることはない。続いて行われる他のブロックの書き込み動作または書き換え動作の間、更なるゾーン１のデータが、ブロック５０８内の空きページに書き込まれ得る。しかし、ブロック５０８のためのオーバープロビジョニングが低減されることを理解されよう。より詳細には、ブロック５０８に格納されたデータは静的なゾーン１のデータのみであるので、更新は頻繁には行われない。よって、ブロック５０８が無効なデータで埋められてしまい、オーバープロビジョニングされた記憶領域を必要とする可能性は非常に低くなる。
【００３５】
逆に、ブロック５１２に格納された動的なゾーン２のデータは、より頻繁に更新され得る。よって、ブロック５１２が無効なデータで埋められてしまい、オーバープロビジョニングされた記憶領域を必要とする可能性はより高い。しかし、ブロック５０８がオーバープロビジョニングを必要とする可能性が低いので、ブロック５１２、および／または動的なゾーン２のデータを格納する更なるブロックのためにオーバープロビジョニングを行うべく必要とされるのはブロック５００、５０４のうちの一方だけであり得る。したがって、比較的少ない余剰容量が提供され、ＯＰＲは最小化され、オーバープロビジョニングされた記憶領域は動的ゾーンに含まれるＬＢＡに対して、より多く割り当てられ得る。例えば、ＯＰＲは５％未満であり得る。あくまで例としてではあるが、ＯＰＲは約１．５％であり得、約１．１の書き込み増幅率を実現し得る。
【００３６】
図６を参照すると、ＳＳＤ制御方法６００は６０４から開始される。方法６００の６０８において、各論理アドレスがどのくらい頻繁に用いられているか判断される。例えば方法６００において、論理アドレスのＬＲＵリストが生成され保持される。方法６００の６１２において、ＬＲＵリストに基づいて、異なる複数のゾーンに論理アドレスが配置される。各ゾーンは、それぞれの論理アドレスがどのくらい頻繁に更新されているか（つまり、書き込まれているか）に対応する。例えば、方法６００において、論理アドレスのためのゾーンリストが生成され保持される。方法６００の６１６において、フラッシュメモリの複数のブロックに対してクリーンアップ／マージ、または他のメンテナンス動作が行われる。方法６００の６２０において、複数のブロックに格納されたデータがゾーンリストに基づいて書き換えられる。例えば、方法６００において、同じゾーン内の論理アドレスに対応するデータは、同じブロックに格納される。方法６００は６２４で終了する。
【００３７】
上記の説明は、単なる例に過ぎず、本開示の内容、用途または使用を限定することを意図していない。本開示の幅広い教示を、様々な形式で実装可能である。したがって、本開示は特定の例を含むが、本開示の真の範囲はこれら特定の例に限定されず、図面、明細書および添付の特許請求の範囲を参照することにより、その他の変形例が明らかとなるであろう。説明を明確にすることを目的として、図面において同様な要素には同じ参照番号が付与されている。本明細書で使用されている、"Ａ、ＢおよびＣのうちの少なくとも１つ"という表現は、非排他的論理ＯＲを使用して、論理の（ＡまたはＢまたはＣ）という意味に解釈されるべきである。方法の１以上の段階は、本開示の原理を変更することなく、異なる順番で（または同時に）実行されてもよいことは明らかである。
【００３８】
本明細書で用いるモジュールという用語は、特定用途向け集積回路（ＡＳＩＣ）、電子回路、組み合せ論理回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、コードを実行するプロセッサ（共有、専用、またはグループ）、説明される機能を実現する適した他のハードウェアコンポーネント、或いはシステムオンチップなどにおけるこれらのいくつかまたは全ての組み合せを言及してもよく、これらの一部であってもよく、若しくはこれらを含んでもよい。モジュールという用語は、プロセッサによって実行されるコードを格納するメモリ（共有、専用、グループ）を含んでもよい。
【００３９】
上記で用いたコードという用語は、ソフトウェア、ファームウェア、および／またはマイクロコードを含んでもよく、プログラム、ルーチン、機能、クラス、および／またはオブジェクトを指してもよい。上記で用いた共有という用語は、複数のモジュールからのいくつか、または全てのコードが、単一の（共有）プロセッサを用いて実行され得ることを意味する。加えて、複数のモジュールからのいくつか、または全てのコードは、単一の（共有）メモリに格納されてもよい。上記で用いたグループという用語は、単一のモジュールからのいくつかの、または全てのコードが、１グループの複数のプロセッサを用いて実行され得ることを意味する。加えて、単一のモジュールからのいくつか、または全てのコードは、１グループの複数のメモリに格納されてもよい。
【００４０】
本明細書で開示した装置および方法は、１以上のプロセッサにより実行される１以上のコンピュータプログラムによって実行され得る。コンピュータプログラムは、非一時的な有形のコンピュータ可読媒体に格納された、プロセッサ実行可能命令を含む。コンピュータプログラムは格納されたデータも含む。非一時的な有形のコンピュータ可読媒体の非限定的な例は、不揮発性メモリ、磁気記憶装置、および光学記憶装置を含む。
【図１】
0006016137.tif 000002
【図２】
0006016137.tif 000003
【図３Ａ】
0006016137.tif 000004
【図３Ｂ】
0006016137.tif 000005
【図４Ａ】
0006016137.tif 000006
【図４Ｂ】
0006016137.tif 000007
【図５Ａ】
0006016137.tif 000008
【図５Ｂ】
0006016137.tif 000009
【図６】
0006016137.tif 000010