(57)【要約】      （修正有）【課題】フラッシュメモリデバイスのための消耗管理方法を提供する。【解決手段】フラッシュストレージシステムを管理するための機械実装方法は、データ操作のためのコマンドを受信すること２１０を含む。方法は、フラッシュストレージシステムにおける複数のフラッシュメモリデバイスのそれぞれのための予定寿命値を決定することを含み、複数のフラッシュメモリデバイスのうちの少なくとも１つのための予定寿命値は、複数のフラッシュメモリデバイスのうちの少なくとも別の１つのための予定寿命値よりも高い２２０。また、複数のフラッシュメモリデバイスのうちの１つのフラッシュメモリブロックを、複数のフラッシュメモリデバイスのためのそれぞれの予定寿命値に基づいて、データ操作のために選択すること２３０を含む。【選択図】図２
2017084341.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュストレージシステムを管理するための機械実装方法であって、
データ操作のためのコマンドを受信することと、
前記フラッシュストレージシステムにおける複数のフラッシュメモリデバイスのそれぞれのための予定寿命値を決定することであって、前記複数のフラッシュメモリデバイスのうちの少なくとも１つのための前記予定寿命値は、前記複数のフラッシュメモリデバイスのうちの少なくとも別の１つのための前記予定寿命値よりも高い、決定することと、
前記複数のフラッシュメモリデバイスのうちの１つのフラッシュメモリブロックを、前記複数のフラッシュメモリデバイスのための前記それぞれの予定寿命値に基づいて、前記データ操作のために選択することと
を含む、機械実装方法。
【請求項２】
それぞれのフラッシュメモリデバイスのための前記予定寿命値は、前記それぞれのフラッシュメモリデバイス上の各フラッシュメモリブロックに関連付けられ、
前記予定寿命値は、前記対応するフラッシュメモリデバイス内の前記フラッシュメモリブロックの故障前に、前記対応するフラッシュメモリデバイス内のフラッシュメモリブロック上で実行されると予想されるプログラム−消去サイクル数である、請求項１に記載のフラッシュストレージシステムを管理するための機械実装方法。
【請求項３】
前記フラッシュメモリブロックは、前記予定寿命値に基づいて決定された残りのプログラム−消去サイクル数及び前記フラッシュメモリブロックに関連付けられたプログラム−消去サイクルカウントに基づいて選択される、請求項２に記載のフラッシュストレージシステムを管理するための機械実装方法。
【請求項４】
前記複数のメモリデバイスのうちの前記少なくとも１つ上のフラッシュメモリブロックは、前記複数のフラッシュメモリデバイスのうちの前記少なくとも別の１つ上のフラッシュメモリブロックよりも頻繁にデータ操作のために選択される、請求項１に記載のフラッシュストレージシステムを管理するための機械実装方法。
【請求項５】
前記複数のフラッシュメモリデバイスのうちの前記少なくとも別の１つ上の前記フラッシュメモリブロックが選択される割合と比較して、前記複数のフラッシュメモリデバイスのうちの前記少なくとも１つ上の前記フラッシュメモリブロックが選択される割合は、前記複数のフラッシュメモリデバイスのうちの前記少なくとも１つと前記複数のフラッシュメモリデバイスのうちの前記少なくとも別の１つとの前記予定寿命値の比率に対応する、請求項４に記載のフラッシュストレージシステムを管理するための機械実装方法。
【請求項６】
前記選択されたフラッシュメモリブロック上で前記データ操作を実行することを更に含み、
前記データ操作は、前記選択されたフラッシュメモリブロック内の無効なメモリ位置を解放するためのガベージコレクションプロセス、又はホストから受信したホストデータを前記選択されたフラッシュメモリブロックに書込むための書込み操作を含む、請求項１に記載のフラッシュストレージシステムを管理するための機械実装方法。
【請求項７】
前記複数のフラッシュメモリデバイスのそれぞれのための前記予定寿命値は、前記複数のフラッシュメモリデバイスのそれぞれにおけるそれぞれの試験フラッシュメモリブロックから測定される試験値に基づく、請求項１に記載のフラッシュストレージシステムを管理するための機械実装方法。
【請求項８】
フラッシュストレージシステムであって、
複数のフラッシュメモリデバイスであって、前記複数のフラッシュメモリデバイスのそれぞれは、予定寿命値を有し、前記複数のフラッシュメモリデバイスのうちの少なくとも１つの前記予定寿命値は、前記複数のフラッシュメモリデバイスのうちの少なくとも別の１つの前記予定寿命値よりも高い、複数のフラッシュメモリデバイスと、
コントローラであって、
データ操作のためのコマンドを受信することと、
前記複数のフラッシュメモリデバイスのうちの１つ上のフラッシュメモリブロックを、複数のフラッシュメモリブロックを備える前記複数のフラッシュメモリデバイスの前記それぞれの予定寿命値に基づいて、前記データ操作のために選択することと
を行うように構成される、コントローラと
を備える、フラッシュストレージシステム。
【請求項９】
それぞれのフラッシュメモリデバイスのための前記予定寿命値は、前記それぞれのフラッシュメモリデバイス上の各フラッシュメモリブロックに関連付けられ、
前記予定寿命値は、前記対応するフラッシュメモリデバイス内の前記フラッシュメモリブロックの故障前に、前記対応するフラッシュメモリデバイス内のフラッシュメモリブロック上で実行されると予想されるプログラム−消去サイクル数である、請求項８に記載のフラッシュストレージシステム。
【請求項１０】
前記フラッシュメモリブロックは、前記予定寿命値に基づいて決定された残りのプログラム−消去サイクル数及び前記フラッシュメモリブロックに関連付けられたプログラム−消去サイクルカウントに基づいて選択される、請求項９に記載のフラッシュストレージシステム。
【請求項１１】
前記複数のメモリデバイスのうちの前記少なくとも１つ上のフラッシュメモリブロックは、前記複数のフラッシュメモリデバイスのうちの前記少なくとも別の１つ上のフラッシュメモリブロックよりも頻繁にデータ操作のために選択される、請求項８に記載のフラッシュストレージシステム。
【請求項１２】
前記複数のフラッシュメモリデバイスのうちの前記少なくとも別の１つ上の前記フラッシュメモリブロックが選択される割合と比較して、前記複数のフラッシュメモリデバイスのうちの前記少なくとも１つ上の前記フラッシュメモリブロックが選択される割合は、前記複数のフラッシュメモリデバイスのうちの前記少なくとも１つと前記複数のフラッシュメモリデバイスのうちの前記少なくとも別の１つとの前記予定寿命値の比率に対応する、請求項１１に記載のフラッシュストレージシステム。
【請求項１３】
前記コントローラは、前記選択されたフラッシュメモリブロック上で前記データ操作を実行するように更に構成され、
前記データ操作は、前記選択されたフラッシュメモリブロック内の無効なメモリ位置を解放するためのガベージコレクションプロセス、又はホストから受信したホストデータを前記選択されたフラッシュメモリブロックに書込むための書込み操作を含む、請求項８に記載のフラッシュストレージシステム。
【請求項１４】
前記複数のフラッシュメモリデバイスのそれぞれのための前記予定寿命値は、前記複数のフラッシュメモリデバイスのそれぞれにおけるそれぞれの試験フラッシュメモリブロックから測定される試験値に基づく、請求項８に記載のフラッシュストレージシステム。
【請求項１５】
機械読取り可能媒体であって、プロセッサによって実行される場合、
フラッシュストレージシステムにおける複数のフラッシュメモリデバイスのそれぞれのための予定寿命値に基づいて、前記フラッシュストレージシステムにおける前記複数のフラッシュメモリデバイスの順序を決定することであって、前記複数のフラッシュメモリデバイスのうちの少なくとも１つの前記予定寿命値は、前記複数のフラッシュメモリデバイスのうちの少なくとも別の１つの前記予定寿命値よりも高い、決定することと、
データ操作のためのコマンドを受信することと、
前記複数のフラッシュメモリデバイスのうちの１つを、前記複数のフラッシュメモリデバイスの前記順序に基づいて選択することと、
前記データ操作のために前記複数のフラッシュメモリデバイスのうちの選択された１つ上のフラッシュメモリブロックを選択することと
を含む操作を前記プロセッサに実行させる実行可能命令と共に符号化される、機械読取り可能媒体。
【請求項１６】
それぞれのフラッシュメモリデバイスのための前記予定寿命値は、前記それぞれのフラッシュメモリデバイス上の各フラッシュメモリブロックに関連付けられ、
前記予定寿命値は、前記対応するフラッシュメモリデバイス内の前記フラッシュメモリブロックの故障前に、前記対応するフラッシュメモリデバイス内のフラッシュメモリブロック上で実行されると予想されるプログラム−消去サイクル数である、請求項１５に記載の機械読取り可能媒体。
【請求項１７】
前記順序は、前記予定寿命値に基づいて決定された残りのプログラム−消去サイクル数及び前記フラッシュメモリブロックに関連付けられたプログラム−消去サイクルカウントに基づいて決定される、請求項１６に記載の機械読取り可能媒体。
【請求項１８】
前記複数のフラッシュメモリデバイスのうちの前記少なくとも１つ上のフラッシュメモリブロックは、前記複数のフラッシュメモリデバイスのうちの前記少なくとも別の１つ上のフラッシュメモリブロックよりも頻繁にデータ操作のために選択される、請求項１５に記載の機械読取り可能媒体。
【請求項１９】
前記複数のフラッシュメモリデバイスのうちの少なくとも別の１つ上の前記フラッシュメモリブロックが選択される割合と比較して、前記複数のフラッシュメモリデバイスのうちの前記少なくとも１つ上の前記フラッシュメモリブロックが選択される割合は、前記複数のフラッシュメモリデバイスのうちの前記少なくとも１つと前記複数のフラッシュメモリデバイスのうちの前記少なくとも別の１つとの前記予定寿命値の比率に対応する、請求項１８に記載の機械読取り可能媒体。
【請求項２０】
前記複数のフラッシュメモリデバイスのそれぞれのための前記予定寿命値は、前記複数のフラッシュメモリデバイスのそれぞれにおけるそれぞれの試験フラッシュメモリブロックから測定される試験値に基づく、請求項１５に記載の機械読取り可能媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、フラッシュストレージシステムに関し、より詳細には、フラッシュメモリデバイスのための最適化されたウェアレベリングに関する。
【背景技術】
【０００２】
ソリッドステートドライブ（ＳＳＤ）等のフラッシュストレージシステムは、不揮発性ストレージ媒体としてフラッシュメモリを用いている。フラッシュストレージシステムは、複数のフラッシュメモリデバイスを含んでいてもよい。フラッシュメモリデバイスは、データが格納される際にプログラムされ（例えば、書込まれ）、フラッシュメモリデバイス上の空間が解放される場合に消去される。フラッシュメモリデバイスは、フラッシュメモリデバイスが使用できなくなる前に耐えることができる限られた数のプログラム／消去（Ｐ／Ｅ）サイクルを有している。
【発明の概要】
【課題を解決するための手段】
【０００３】
主題技術は、フラッシュメモリデバイスのための予定寿命値に基づいて、データ操作のためのフラッシュメモリデバイスを選択することによって、フラッシュストレージシステムにおけるデータウェアレベリングを最適化する。予定寿命値は、フラッシュメモリデバイスを試験することを通じて決定されてもよい。
【０００４】
主題技術の態様によれば、フラッシュストレージシステムを管理するための機械実装方法が提供される。方法は、データ操作のためのコマンドを受信することを含む。方法は、また、フラッシュストレージシステムにおける複数のフラッシュメモリデバイスのそれぞれのための予定寿命値を決定することも含み、複数のフラッシュメモリデバイスのうちの少なくとも１つのための予定寿命値は、複数のフラッシュメモリデバイスのうちの少なくとも別の１つのための予定寿命値よりも高い。方法は、また、複数のフラッシュメモリデバイスのうちの１つのフラッシュメモリブロックを、複数のフラッシュメモリデバイスのためのそれぞれの予定寿命値に基づいて、データ操作のために選択することも含む。
【０００５】
主題技術の他の態様によれば、フラッシュストレージシステムが提供される。フラッシュストレージシステムは、複数のフラッシュメモリデバイスと、コントローラとを含んでいる。複数のフラッシュメモリデバイスのそれぞれは、予定寿命値を有し、複数のフラッシュメモリデバイスのうちの少なくとも１つのための予定寿命値は、複数のフラッシュメモリデバイスのうちの少なくとも別の１つのための予定寿命値よりも高い。コントローラは、データ操作のためのコマンドを受信することと、複数のフラッシュメモリデバイスのうちの１つ上のフラッシュメモリブロックを、複数のフラッシュメモリブロックを備える複数のフラッシュメモリデバイスのそれぞれの予定寿命値に基づいて、データ操作のために選択することとを行うように構成される。
【０００６】
主題技術の他の態様によれば、機械読取り可能媒体は、プロセッサによって実行される場合、操作をプロセッサに実行させる実行可能命令と共に符号化される。操作は、フラッシュストレージシステムにおける複数のフラッシュメモリデバイスのそれぞれのための予定寿命値に基づいて、複数のフラッシュメモリデバイスの順序を決定することを含み、複数のフラッシュメモリデバイスのうちの少なくとも１つのための予定寿命値は、複数のフラッシュメモリデバイスのうちの少なくとも別の１つのための予定寿命値よりも高い。操作は、また、データ操作のためのコマンドを受信することも含む。操作は、また、複数のフラッシュメモリデバイスのうちの１つを、複数のフラッシュメモリデバイスの順序に基づいて選択することも含む。操作は、また、データ操作のために複数のフラッシュメモリデバイスのうちの選択された１つ上のフラッシュメモリブロックを選択することを含む。
【０００７】
主題技術の他の構成は、以下の詳細な説明から当業者に容易に明らかとなることが理解され、ここで、主題技術の様々な構成が実例によって示され且つ説明される。認識されるように、主題技術は、他の及び異なる構成が可能であり、その幾つかの詳細は、すべて主題技術の適用範囲から逸脱することなく、様々な他の箇所において変形が可能である。従って、図面及び詳細な説明は、本質において例示的なものとして見なされるべきであり、限定するものとして見なされるべきではない。
【図面の簡単な説明】
【０００８】
【図１】主題技術の態様によるフラッシュストレージシステムの構成部品を示すブロック図である。
【図２】主題技術の態様によるフラッシュストレージシステムを管理するための方法を示すフローチャートである。
【図３Ａ】主題技術の態様による均一ウェアレベリングスキームにおけるＰ／Ｅサイクルを示すテーブルである。
【図３Ｂ】主題技術の態様による最適ウェアレベリングスキームにおけるＰ／Ｅサイクルを示すテーブルである。
【図４】主題技術の態様によるフラッシュストレージシステムを管理するための方法を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下で述べる詳細な説明は、主題技術の様々な構成を説明するように意図されており、主題技術が実施され得る唯一の構成を表すことを意図していない。添付図面は、本明細書中に組込まれ、詳細な説明の一部を構成する。詳細な説明は、主題技術の完全な理解を提供する目的のために特定の詳細を含んでいる。しかし、主題技術は、これらの特定の詳細なしに実施されてもよい。幾つかの例において、主題技術の概念を不明瞭にすることを避けるために、構造及び構成部品をブロック図の形式で示す。
【００１０】
ソリッドステートドライブ（ＳＳＤ）等のフラッシュストレージシステムは、１つ以上のフラッシュメモリデバイスを含み、そのそれぞれが、１つ以上のダイを備えていてもよい。各フラッシュメモリデバイス又はダイは、フラッシュメモリセルのアレイを備えている。各メモリセルは、１ビット以上のデータを格納するために用いられるフローティングゲートトランジスタを含んでいる。フラッシュメモリセルは、ブロックに分けて構成されてもよく、各物理ブロックは、多数のページを備えている。データは、ページの書込み単位でフラッシュメモリに書込まれる。データは、ブロックの消去単位でフラッシュメモリから消去される。消耗によりブロック内のデータストレージの完全性及び信頼性が悪化する前に、各ブロックが有限数のＰ／Ｅサイクルを有するように、各Ｐ／Ｅサイクルは、ブロックのフラッシュメモリセルを物理的に劣化又は消耗させる恐れがある。
【００１１】
フラッシュストレージシステムは、フラッシュストレージシステムにおけるブロックのＰ／Ｅサイクル限界に対応する予想寿命に基づいて、格付けされるか、又は階層化されてもよい。ある特定の予想寿命のフラッシュストレージシステムを構築するために、類似の予想寿命を有するフラッシュメモリデバイスが、フラッシュストレージシステムのために選択される。フラッシュメモリデバイスのメーカーは、試験用にダイのバッチから少量のダイのサンプルを選択してもよく、試験に基づいて、メーカー寿命値によりバッチ内のすべてのダイを指定してもよい。メーカー寿命値は、バッチ内のダイに対して予想される最も低い寿命値（例えば、Ｐ／Ｅサイクル数）に対応してもよい。換言すれば、メーカー寿命値は、Ｐ／Ｅサイクル数に対応してもよく、少なくとも最小数のブロックが、Ｐ／Ｅサイクル数の性能を提供するように、９０％又は９９％等の高い確信度まで期待される。ダイにおける各ブロック、又はダイにおける最小数のブロック、又はダイにおけるブロック間の平均的なブロックは、指定されたメーカー寿命値と少なくとも同程度に長く存続するように期待される。例えば、メーカーは、試験したバッチを３０，０００回のＰ／Ｅサイクルに格付けしてもよい。試験したバッチ内のフラッシュメモリデバイスの各ブロックは、平均して少なくとも３０，０００回のＰ／Ｅサイクルに耐えるように予想される。例えば、ある特定のブロックは、３０，０００Ｐ／Ｅサイクルを超えて耐えることができ、ある特定の他のブロックは、３０，０００Ｐ／Ｅサイクル未満を耐えることができ、平均で、ブロックは３０，０００Ｐ／Ｅサイクルを耐えることができる。
【００１２】
フラッシュストレージシステムは、メーカー寿命値に基づいてフラッシュメモリデバイスを利用してもよい。しかし、フラッシュストレージシステム内の各フラッシュメモリデバイスは、メーカー寿命値とは異なる実際の寿命値を有していてもよい。個々のデバイス試験により決定される実際の寿命値の推定であってもよい各フラッシュメモリデバイスのための予定寿命値は、メーカー寿命値よりも正確に実際の寿命値を表してもよい。フラッシュストレージシステムは、予定寿命値に基づき、異なるようにフラッシュメモリデバイスを利用してもよい。
【００１３】
従来のウェアレベリングスキームは、フラッシュストレージシステム内のすべてのフラッシュメモリデバイスが、メーカー寿命値に基づいて、同じ予想寿命を有しているという仮定の下に運用されてもよい。フラッシュメモリデバイスの同じブロックが、フラッシュストレージシステム内の他のブロックよりも頻繁にデータ操作のために選択された（例えば、プログラム／消去された）場合、選択されたブロックは、他のブロックよりも早く故障する恐れがある。フラッシュメモリデバイス内の十分な数のブロックが故障した場合、フラッシュメモリデバイスは、不安定になる恐れがある。フラッシュストレージシステムは、消耗を良好に分散させるために、データ操作のためのフラッシュメモリデバイスのブロックを選択する場合に、ウェアレベリングスキームを利用し、１つ以上のブロック及び／又はフラッシュメモリデバイスが、フラッシュストレージシステム内の他のブロック及び／又はフラッシュメモリデバイスよりも著しく早く故障しないように防いでいる。ブロック及び／又はフラッシュメモリデバイスの故障は、フラッシュストレージシステムの性能を損なう。
【００１４】
ウェアレベリングスキームは、フラッシュメモリデバイスのすべてが、従来はメーカー寿命値に対応していた同じ時間のあたりで故障するように、消耗を分散させてもよい。しかし、メーカー寿命値は、最も低い予想寿命値を表す慎重な下限値であり得るため、各フラッシュメモリデバイスのための実際の寿命値は、メーカー寿命値とは異なり得る。１つ以上のフラッシュメモリデバイスの実際の寿命値が、メーカー寿命値よりも大きい場合、追加の寿命（例えば、メーカー寿命値を超過するＰ／Ｅサイクル）は、使用されない恐れがある。ウェアレベリングスキームは、フラッシュメモリデバイスの異なる実際の寿命値を利用するために、予定寿命値に基づいてフラッシュメモリデバイスを異なるように活用することによって最適化されてもよい。
【００１５】
図１は、主題技術の態様によるフラッシュストレージシステム１１０の構成部品を示すブロック図である。図１に示すように、フラッシュストレージシステム１１０は、インターフェース１１５と、コントローラ１２０と、フラッシュメモリデバイス１３０Ａ及びフラッシュメモリデバイス１３０Ｂ（総称してフラッシュメモリデバイス１３０）と、メモリ１２５とを含んでいる。インターフェース１１５は、フラッシュストレージシステム１１０とホスト１５０との間のデータ、コマンド、及び／又は制御信号の通信を容易にする。コントローラ１２０は、ホスト１５０から受信したコマンドに従って、フラッシュメモリデバイス１３０内にデータを格納し、取り出すように、フラッシュストレージシステム１１０の動作を制御する。コントローラ１２０は、プロセッサを含んでいてもよい。ランダムアクセスメモリ（ＲＡＭ）であってもよいメモリ１２５は、コマンドを処理し、ホスト１５０とフラッシュメモリデバイス１３０との間でデータを転送するように、コントローラ１２０のための一時的なストレージ空間を提供する。これらの構成部品のそれぞれの動作は、以下でより詳細に説明する。
【００１６】
インターフェース１１５は、ホスト１５０とフラッシュストレージシステム１１０との間の物理的及び電気的接続を提供する。インターフェース１１５は、物理的及び電気的接続を介したホスト１５０とフラッシュストレージシステム１１０との間のデータ、コマンド、及び／又は制御信号の通信を容易にするように構成されている。インターフェース１１５との接続及び通信は、ユニバーサルシリアルバス（ＵＳＢ）、スモールコンピュータシステムインターフェース（ＳＣＳＩ）、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）等の標準インターフェースに基づいてもよい。代替として、接続及び／又は通信は、プロプライエタリインターフェースに基づいてもよいが、主題技術は、何らかの特定の種類のインターフェースに限定されない。
【００１７】
ホスト１５０は、コンピュータ／サーバ、スマートフォン、又はデータをフラッシュストレージシステム１１０から読取り、データをそれに書込む任意のその他の電子デバイス等の演算デバイスであってもよい。ホスト１５０は、オペレーティングシステム、又は読取り及び書込みコマンドをフラッシュストレージシステム１１０に発行する他のソフトウェアを有していてもよい。フラッシュストレージシステム１１０は、ホスト１５０に組込まれてもよく、又はホスト１５０の外部にあってもよい。フラッシュストレージシステム１１０は、ホスト１５０にワイヤレスで接続されてもよく、又はホスト１５０に物理的に接続されてもよい。
【００１８】
図１は、２つのフラッシュメモリデバイス１３０（フラッシュメモリデバイス１３０Ａ及びフラッシュメモリデバイス１３０Ｂ）を示している。しかし、フラッシュストレージシステム１１０は、３つ以上のフラッシュメモリデバイス１３０を含んでいてもよく、２つのフラッシュメモリデバイス１３０に限定されない。フラッシュメモリデバイス１３０は、それぞれ単一のフラッシュメモリチップ又はダイを含んでいてもよい。フラッシュメモリデバイス１３０は、データがコントローラ１２０によってフラッシュメモリデバイス１３０から読出され、それに書込まれる複数のチャンネル間で構築されるか、又は単一のチャンネルに結合されてもよい。フラッシュメモリデバイス１３０は、ＮＡＮＤフラッシュメモリを用いて実装されてもよい。フラッシュメモリデバイス１３０は、それぞれレジスタ１３５を備えていてもよく、それは、各フラッシュメモリデバイス１３０の操作パラメータ等のデータを格納するための１つ以上のレジスタであってもよい。操作パラメータは、初期パルス値、増分パルス値、及びパルス幅等の書込み操作パラメータと、初期パルス値、増分パルス値、及びパルス幅等の消去操作パラメータと、読取りレベル電圧等の読取り操作パラメータとを含んでいてもよい。
【００１９】
フラッシュメモリデバイス１３０は、フラッシュメモリブロック１４０等のストレージブロックに区分された複数のメモリセルを備えている。図１は、それぞれが２つのフラッシュメモリブロック１４０を有するフラッシュメモリデバイス１３０を示しているが、フラッシュメモリデバイス１３０は、より多く又はより少ないフラッシュメモリブロック１４０を有していてもよく、フラッシュメモリデバイス１３０は、それぞれ同じ又は異なる数のフラッシュメモリブロック１４０を有していてもよい。フラッシュメモリブロック１４０は、データブロック又はメモリブロックと呼ばれてもよく、物理ブロックアドレスを用いてコントローラ１２０によってアドレス指定が可能である。フラッシュメモリブロック１４０のそれぞれは、更に、物理ページアドレスを用いてコントローラ１２０によってアドレス指定が可能な複数のデータセグメント又はページに分割され、参照されたページを含むストレージブロックの物理ブロックアドレスからオフセットされる。ページは、セクタ又は他のホストデータ単位を格納してもよい。フラッシュメモリブロック１４０は、一回の消去操作においてフラッシュメモリデバイス１３０内部で消去されるデータの単位を表す。ページは、読取り又は書込み操作においてフラッシュメモリデバイス１３０から読取られ、又はそれに書込まれるデータの単位を表す。フラッシュメモリデバイス１３０は、ブロック及びページによって説明されるが、フラッシュストレージデバイス内部のこれらのデータ単位に言及するために、他の用語が用いられてもよい。
【００２０】
主題技術は、何らかの特定容量のフラッシュメモリに限定されない。例えば、ストレージブロックは、それぞれ３２、６４、１２８、又は５１２ページ、又は任意のその他のページ数を備えていてもよい。加えて、ページはそれぞれ、例えば、５１２バイト、２ＫＢ、４ＫＢ、又は３２ＫＢを含んでもよい。セクタはそれぞれ、例えば、５１２バイト、４ＫＢ、又は他のサイズを含んでもよい。１ページ当たりに１つ以上のセクタが存在していてもよい。
【００２１】
図１において、メモリ１２５は、フラッシュストレージシステム１１０の動作中にコントローラ１２０に結合され、それによって用いられる揮発性メモリを表している。コントローラ１２０は、メモリ１２５内にコマンド及び／又はデータをバッファ格納してもよい。コントローラ１２０は、また、ホスト１５０によって用いられる論理データアドレスを、フラッシュメモリデバイス１３０の一部に対応する仮想及び／又は物理アドレスに変換するために用いられるアドレスマッピングテーブル又はルックアップテーブルを格納するために、メモリ１２５を用いてもよい。フラッシュメモリデバイス１３０を管理するために用いられる他の種類のテーブル、データ、ステータスインジケータ等も、コントローラ１２０によってメモリ１２５に格納されてもよい。例えば、フラッシュメモリデバイス１３０の特性は、各フラッシュメモリブロック１４０のためのＰ／Ｅサイクルカウント、各フラッシュメモリブロック１４０のためのエラーカウント、及び各フラッシュメモリブロック１４０のための保持時間等、ウェアレベリングのために用いられるデータを含んでいる。メモリ１２５は、主題技術の適用範囲から逸脱することなく、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、スタティックランダムアクセスメモリ（ＳＲＡＭ）、又は他の種類の揮発性ランダムアクセスメモリを用いて実装されてもよい。コントローラ１２０は、フラッシュストレージシステム１１０の電源を切る前等、定期的にメモリ１２５の内容を１つ以上の指定されたフラッシュメモリブロック１４０に格納してもよい。
【００２２】
コントローラ１２０は、ホスト１５０とフラッシュメモリデバイス１３０との間のデータの流れを管理する。コントローラ１２０は、インターフェース１１５を介してホスト１５０からコマンド及びデータを受信するように構成されている。例えば、コントローラ１２０は、ホスト１５０からデータ及び書込みコマンドを受信してデータをフラッシュメモリデバイス１３０に書込んでもよい。コントローラ１２０は、更に、インターフェース１１５を介してホスト１５０へデータを送信するように構成されている。例えば、コントローラ１２０は、データをフラッシュメモリデバイス１３０から読取り、読取りコマンドに応じてデータをホスト１５０へ送信してもよい。コントローラ１２０は、更に、内部制御アルゴリズム又はホスト１５０から受信されてもよい他の種類のコマンドに基づいて、フラッシュメモリデバイス１３０及びメモリ１２５に格納されたデータを管理するように構成されている。例えば、コントローラ１２０は、ガベージコレクション（ＧＣ）、エラー訂正、及びウェアレベリング等の操作を実行するように構成されている。当業者は、フラッシュストレージデバイス内のコントローラによって実行される他の操作に精通しており、それらを本明細書中で詳細に説明はしない。
【００２３】
コントローラ１２０は、本明細書中で説明する操作及び機能を実行するように設計及び構成された汎用プロセッサ、マイクロコントローラ、デジタル信号プロセッサ（ＤＳＰ）、システムオンチップ（ＳｏＣ）、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）又は他のプログラマブル論理デバイス、ディスクリートゲート又はトランジスタロジックデバイス、ディスクリートハードウェアコンポーネント、又はそれらの何らかの組合せにより実装されてもよい。コントローラ１２０は、機械／コンピュータ読取り可能媒体上に格納された１つ以上の命令のシーケンスを実行することによって、本明細書中で説明する操作及び機能を実行してもよい。機械／コンピュータ読取り可能媒体は、フラッシュメモリデバイス１３０、メモリ１２５、又はコントローラ１２０が命令又はコードを読取ることができる他の種類の媒体であってもよい。例えば、フラッシュストレージシステム１１０は、フラッシュストレージシステム１１０の動作中にコントローラ１２０によって読取られ、実行される１つ以上の命令のシーケンスを含むファームウェア／ソフトウェアにより符号化されるＥＰＲＯＭ又はＥＥＰＲＯＭ等の読出し専用メモリ（ＲＯＭ）を含んでいてもよい。
【００２４】
コントローラ１２０は、ホスト１５０からのコマンド間等のアイドル時間中にフラッシュメモリデバイス１３０上でメンテナンス操作を実行してもよい。例えば、コントローラ１２０は、データ操作のためにフラッシュメモリブロック１４０のうちの１つを解放するのに、ＧＣが必要であるかを決定してもよい。フラッシュメモリブロック１４０は、ウェアレベリングスキームに基づいてＧＣのために選択されてもよい。ブロックの限られたＰ／Ｅサイクルのため、特定のブロックを他のブロックよりも頻繁に用いることにより、その特定のブロックが他のブロックの前に故障する原因となる恐れがある。故障は、ブロックが回復不能な読取りエラーを生じた場合に判断されてもよい。
【００２５】
コントローラ１２０は、ウェアレベリング目的のために、各フラッシュメモリブロック１４０のＰ／Ｅサイクルカウントの経過を追ってもよい。均一なウェアレベリングスキームにおいて、最も低いＰ／Ｅサイクルカウントを有するフラッシュメモリブロック１４０を有するフラッシュメモリデバイス１３０が、データ操作のために選択されて、Ｐ／Ｅサイクルからの消耗を均一に分散させてもよい。均一なウェアレベリングスキームは、フラッシュメモリデバイスの実際又は予定寿命値を考慮せず、フラッシュストレージシステム１１０が、概して、可能性のあるばらつきを補償することなく、類似の予想寿命を有するフラッシュメモリデバイスを備えているという仮定の下に動作してもよい。
【００２６】
しかし、それぞれ個々のフラッシュメモリデバイス１３０は、メーカー寿命値を上回る又は下回る実際寿命値を有していてもよい。従って、均一なウェアレベリングスキームは、最適性能未満につながる恐れがある。例えば、１つ以上のフラッシュメモリデバイス１３０がメーカー寿命値を下回る実際寿命値を有していた場合、フラッシュストレージシステム１１０は、予想よりも早く故障する恐れがある。１つ以上のフラッシュメモリデバイス１３０がメーカー寿命値を上回る実際寿命値を有していた場合、メーカー寿命値を超える追加Ｐ／Ｅサイクルは、活用されない恐れがある。最適なウェアレベリングスキームは、メーカー寿命値を超える追加サイクルを利用するように、フラッシュメモリデバイスのための実際寿命値と類似していてもよい予定寿命値に基づいていてもよい。
【００２７】
加えて、フラッシュストレージシステムは、フラッシュストレージシステムの予想寿命に基づいて格付け又は等級分けされてもよい。高い予想Ｐ／Ｅサイクルを有するフラッシュメモリデバイスは、企業用ストレージシステムにおける使用に対して長い寿命を有すると予想されてもよく、又は高速なプログラム／消去速度のために長い寿命を犠牲にする高性能システムにおいて用いられてもよい。低い予想Ｐ／Ｅサイクルを有するフラッシュメモリデバイスは、低い予想寿命又は遅い速度を有する低性能システムにおいて用いられてもよい。
【００２８】
予定寿命値は、フラッシュメモリブロックの故障前にフラッシュメモリデバイスのフラッシュメモリブロック上で実行されると予想されるＰ／Ｅサイクル数に対応していてもよい。各フラッシュメモリデバイスの個々の試験は、メーカー寿命値よりも正確な実際寿命値の推定であってもよい予定寿命値を決定してもよい。
【００２９】
バッチ試験中にメーカーによって用いられる従来の試験方法は、各フラッシュメモリデバイスを個別に試験することに対して非実用的であるか、又は実現不可能である恐れがある。従来の試験は、従来のパラメータに基づいて従来の書込み又は消去電圧を印加することに基づき得る。フラッシュメモリデバイス上で使用可能な従来のパラメータは、フラッシュメモリデバイスのアセンブリの試験を可能にしてもよい。高電圧は、従来の書込み電圧及び従来の消去電圧のうちの１つ又はその両方よりも大きい電圧、例えば、フラッシュメモリデバイス上で使用可能な最大電圧であってもよい。
【００３０】
高電圧試験は、従来の試験より速くてもよく、従って、それぞれ個々のフラッシュメモリデバイス上で実施することがより可能であってもよい。高電圧試験は、ブロックのメモリセルにおける電荷捕捉を早め、電荷捕捉の飽和点に到達するために、高電圧を長時間（例えば、従来のパルス持続時間よりも長い時間）及び／又は多重パルスで印加することを含んでいてもよい。加えて、パルス間の冷却期間に待機するのではなく、パルスを連続的に印加してもよく、これにより、飽和点に到達するまでの時間を更に早めてもよい。高電圧におけるパルス数等の電圧パラメータは、メーカー寿命値よりも実際寿命値に近い予定寿命値を決定するように、測定され、用いられてもよい。例えば、実験データは、飽和点と予想寿命とを関連付けるシミュレーション又は実験室データから導き出されてもよく、又は種々のフラッシュメモリデバイス上で高電圧試験を行うことにより集められて、電圧パラメータ、飽和点に到達する時間、及び他の特性を予想Ｐ／Ｅサイクルカウントに関連付けてもよい。予定寿命値は、予想Ｐ／Ｅサイクルカウントに対応している。
【００３１】
高電圧試験は、試験ブロックの寿命の最後まで行ってもよいが、試験ブロックを不安定にする。しかし、フラッシュメモリデバイスは、ブロック故障に備えるか、又はメンテナンス操作において用いるための余分なブロックと共に製造されてもよい。ブロック内部の位置のばらつきの影響を低減させるために、各フラッシュメモリデバイス上の同じ位置の同じブロックを試験してもよい。
【００３２】
予定寿命値を用いて、フラッシュメモリデバイスは、フラッシュストレージシステム内での組立てに対してより良好に対応されてもよい。代替として、フラッシュストレージシステムは、各フラッシュメモリデバイスのための予定寿命値が試験される前に組立てられてもよい。予定寿命値は、フラッシュストレージシステムの性能階層をより良好に決定してもよい。例えば、フラッシュストレージシステムのフラッシュメモリデバイスの予定寿命値が、（フラッシュストレージシステムの初期アセンブリに対して用いられた可能性がある）メーカー寿命値に基づく予想よりも概してすべて高いか、又はすべて低い場合、フラッシュストレージシステムは、それに応じて、より高い階層又はより低い階層に格付けされてもよい。幾つかの予定寿命値がメーカー寿命値よりも高く、幾つかの予定寿命値がメーカー寿命値よりも低いように、予定寿命値が混在している場合、メーカー寿命値よりも高い予定寿命値を有するフラッシュメモリデバイスのより高い性能により、メーカー寿命値よりも低い予定寿命値を有するフラッシュメモリデバイスのより低い性能を補ってもよく、フラッシュストレージシステムは、従って、平均化された性能に基づいて格付けすることができる。
【００３３】
最適なウェアレベリングスキームは、メーカー寿命値を超過した利用可能なＰ／Ｅサイクルの使用を最適化してもよい。図２は、主題技術の態様によるウェアレベリングスキームのためのフローチャート２００を示している。図２におけるプロセスは、例えば、フラッシュストレージシステム１１０のコントローラ１２０によって実行されてもよい。フラッシュストレージシステム１１０は、同じか、又は類似したメーカー寿命値を有する複数のフラッシュメモリデバイス１３０と共に組立てられる。各フラッシュメモリデバイス１３０は、高電圧試験により個々に試験されて、それぞれの予定寿命値を決定し、その値は、メモリ１２５に格納され、メモリ１２５に関連付けられた指定のフラッシュメモリブロック１４０に格納されてもよい。予定寿命値は、（予定寿命値が反映されるか、そうでなければ、それぞれのフラッシュメモリブロック１４０に関連付けられるように）各フラッシュメモリデバイス１３０に対して格納されるか、又は対応するフラッシュメモリデバイス１３０に基づいて、各フラッシュメモリブロック１４０に対して格納されてもよい。予定寿命値のうちの少なくとも１つは、メーカー寿命値とは異なっている。例えば、フラッシュメモリデバイス１３０Ａの予定寿命値は、メーカー寿命値よりも高い。
【００３４】
２１０において、データ操作のためのコマンドが受信される。コントローラ１２０は、ホストデータをホスト１５０からフラッシュメモリブロック１４０に書込むための書込み操作等の読取り、書込み、消去コマンドをホスト１５０から受信してもよい。代替として、コマンドをホストから受信するのではなく、コマンドは、フラッシュメモリブロック１４０内の無効なメモリ位置を解放するためのＧＣプロセス等のコントローラ１２０によって実行されるべきメンテナンス操作のためのものであってもよい。
【００３５】
２２０において、予定寿命値が、フラッシュストレージシステムにおける複数のフラッシュメモリデバイスのそれぞれのために決定され、ここで、複数のフラッシュメモリデバイスのうちの少なくとも１つのための予定寿命値は、複数のフラッシュメモリデバイスのうちの少なくとも別の１つのための予定寿命値よりも高い。フラッシュメモリデバイスは、類似するメーカー寿命値に基づいて、フラッシュストレージシステム内に取り込むために最初に選択されてもよいが、個々のダイ試験により、各フラッシュメモリデバイスのための予定寿命値のばらつきが明らかにされてもよい。個々のダイ試験は、予定寿命値がメーカー寿命値とは異なり、また、フラッシュメモリデバイス間でも異なっていてもよいことを明らかにしてもよい。
【００３６】
予定寿命値は、高電圧試験により予め計算され、フラッシュストレージシステムのメモリに格納されてもよい。予定寿命値は、コントローラに関連付けられたメモリ等のメモリに格納されるか、対応するフラッシュメモリデバイス上の指定ブロックに格納されるか、又はフラッシュストレージシステム内の別のメモリに格納された値を読取ることによって決定されてもよい。代替として、予定寿命値は、間接的に決定されてもよい。例えば、コントローラは、データ構造を介してフラッシュメモリデバイスを常時監視してもよい。コントローラは、予定寿命値に基づいて、連結リスト内のフラッシュメモリデバイスを並べ替えてもよい。連結リスト内のフラッシュメモリデバイスのための位置は、残りのサイクルがより多いフラッシュメモリデバイスが連結リストの先頭近くに位置決めされるように、対応するフラッシュメモリデバイスの予定寿命値に対応していてもよい。連結リストは、データ操作のために選択されたフラッシュメモリデバイスが、データ操作後に連結リスト内で再配置されるように、それぞれのデータ操作後に更新されてもよい。再配置は、残りのサイクルに対する更新された値に基づいてもよい。
【００３７】
フラッシュストレージシステム１１０において、コントローラ１２０は、メモリ１２５内に格納されたフラッシュメモリデバイス１３０のための予定寿命値を読取ることによって、フラッシュメモリデバイス１３０の予定寿命値を決定する。予定寿命値は、指定されたフラッシュメモリブロック１４０上に予め格納されていてもよく、次いで、メモリ１２５内に読込まれてもよい。フラッシュメモリデバイス１３０のための予定寿命値は、それぞれのフラッシュメモリデバイス１３０上の各フラッシュメモリブロック１４０に関連付けられる。予定寿命値は、対応するフラッシュメモリデバイス１３０内のフラッシュメモリブロック１４０の故障前に、対応するフラッシュメモリデバイス１３０内のフラッシュメモリブロック１４０上で実行されると予想されるＰ／Ｅサイクル数に対応していてもよい。図１において、フラッシュメモリデバイス１３０Ａは、フラッシュメモリデバイス１３０Ｂの予定寿命値よりも高い予定寿命値を有している。
【００３８】
２３０において、複数のフラッシュメモリデバイスのうちの１つのフラッシュメモリブロックが、複数のフラッシュメモリデバイスのための各予定寿命値に基づいて、データ操作のために選択される。フラッシュメモリブロックは、すべてのブロックに対する使用された寿命（例えば、予定寿命値からの使用されたサイクル数）の割合が、ある範囲内で、例えば、５％又は１０％残るように選択されてもよい。例えば、ブロックがその予定寿命の２５％使用された（例えば、使用されたサイクル数が予定寿命値の２５％と等しい）場合、選択されたブロックは、データ操作が行われた後、すべてのブロックが２０〜３０％以内の使用された寿命の割合を有するように選択されてもよい。ブロックのうちの少なくとも２つが異なる予定寿命値を有しているため、ブロックは、異なる使用サイクルカウントを有し得るが、依然として、使用寿命の割合の範囲内にある。代替として、最も高い割合の残り寿命（例えば、予定寿命値からの残りのサイクル数）を有するブロックは、データ操作が行われた後、すべてのブロックが５％又は１０％等の範囲内の残りの寿命の割合を有するように選択されてもよい。
【００３９】
フラッシュメモリブロック１４０は、予定寿命値に基づいて決定された残りのＰ／Ｅサイクル数及び各フラッシュメモリブロック１４０に関連付けられたＰ／Ｅサイクルカウントに基づいて選択されてもよい。例えば、残りのＰ／Ｅサイクル数は、各フラッシュメモリブロック１４０のための予定寿命値とＰ／Ｅサイクルカウントとの間の差から決定されてもよい。実装において、最も高い残りのＰ／Ｅサイクル数を有するフラッシュメモリブロック１４０が、次いで、選択されてもよい。連結リストを用いる実装において、連結リストの先頭近くのフラッシュメモリデバイスのフラッシュメモリブロックが選択されてもよい。例えば、連結リストの先頭近くのフラッシュメモリデバイスが選択されてもよく、選択されたメモリデバイスのフラッシュメモリブロックが選択されてもよい。フラッシュメモリブロックは、連結リスト等のそれぞれのデータ構造で並び替えられてもよい。フラッシュメモリブロックは、フラッシュメモリデバイスと同様に、連結リストがそれぞれのデータ操作後に更新されるように常時監視されてもよい。
【００４０】
１つのフラッシュメモリデバイス１３０が、別のフラッシュメモリデバイス１３０よりも高い予定寿命値を有している場合、高い予定寿命値を有するフラッシュメモリデバイス１３０のフラッシュメモリブロック１４０が、データ操作のために、低い予定寿命値を有するフラッシュメモリデバイス１３０のフラッシュメモリブロック１４０よりも頻繁に選択されてもよい。例えば、図１において、フラッシュメモリデバイス１３０Ａ上のフラッシュメモリブロック１４０が選択される割合は、フラッシュメモリデバイス１３０Ｂ上のフラッシュメモリブロック１４０が選択される割合と比較して、フラッシュメモリデバイス１３０Ａの予定寿命値とフラッシュメモリデバイス１３０Ｂの予定寿命値との比率に対応していてもよい。
【００４１】
フラッシュメモリデバイス１３０Ａの予定寿命値が３６，０００サイクルであり、フラッシュメモリデバイス１３０Ｂの予定寿命値が２４，０００サイクルであった場合、その比率は３：２である。フラッシュメモリデバイス１３０Ａのフラッシュメモリブロック１４０は、フラッシュメモリデバイス１３０Ｂのフラッシュメモリブロック１４０が選択される２回毎に対して、３回選択されてもよい。例えば、フラッシュメモリデバイス１３０Ａ及び１３０Ｂは、それぞれ各フラッシュメモリデバイスが選択されるとインクリメントするカウンタに関連付けられてもよい。連結リストを用いる実装において、連結リスト内のフラッシュメモリデバイスの位置は、より高い予定寿命値を有するフラッシュメモリデバイスが、概して、比率によって、より低い予定寿命値を有するフラッシュメモリデバイスと比較して、連結リストの先頭近くにより頻繁に配置されるように、比率に基づいてもよい。代替として、連結リストは、フラッシュメモリデバイス１３０Ａのための３つのエントリ及びフラッシュメモリデバイス１３０Ｂのための２つのエントリ等の比率に基づく各フラッシュメモリデバイスのための複数のエントリが入力されてもよい。
【００４２】
コントローラ１２０は、概して、３：２の比率を準拠してもよいが、実際の選択は、ウェアレベリングに優先してもよい他の考慮により、３：２の比率を厳格に準拠しなくてもよい。たとえフラッシュメモリデバイス１３０が予定寿命値に基づく選択の候補であるとしても、データ操作は、別のフラッシュメモリデバイス１３０が選択されることを必要としてもよい。例えば、ＧＣ操作において、フラッシュメモリデバイス１３０Ｂ（より低い予定寿命値を有する）は、フラッシュメモリデバイス１３０Ｂがフラッシュメモリデバイス１３０Ａより高い割合の無効メモリ位置を含んでいた場合、フラッシュメモリデバイス１３０Ａ（より高い予定寿命値を有する）に優先して選択されてもよい。
【００４３】
コントローラ１２０がフラッシュメモリブロック１４０を選択した後、コントローラ１２０は、フラッシュメモリブロック１４０上でデータ操作を実行してもよい。データ操作は、ＧＣプロセス、書込み操作、又は他のメンテナンス操作であってもよい。選択されたフラッシュメモリブロック１４０に対応するフラッシュメモリデバイス１３０のための特性及び／又はパラメータは、更新されてもよい。例えば、Ｐ／Ｅサイクルカウント又は残りのサイクルカウントが更新されてもよい。代替として、連結リストにおけるフラッシュメモリデバイス１３０の位置は、比率に基づいて調整されてもよい。
【００４４】
図３Ａは、均一なウェアレベリングスキームの簡単な実施例における異なるフラッシュメモリデバイスからの２つのブロックのためのＰ／Ｅサイクルのテーブル３１０を示している。ブロック１は２４Ｋの予定寿命値を有し、ブロック２は３６Ｋの予定寿命値を有している。しかし、６０Ｋサイクルの全使用量がデバイスに対して期待されるように、各ブロックに対するメーカー寿命値は、３０Ｋサイクルである。開始時、すなわち、０回のＰ／Ｅサイクルが経過している時に、ブロック１は、２４Ｋサイクルの残りと０サイクルの使用とを有している。残りのサイクルは、予定寿命値から使用したサイクルを減算することによって計算されてもよい。ブロック２は、３６Ｋサイクルの残りと０サイクルの使用とを有している。２４Ｋサイクルが経過した後、２４Ｋサイクルは、各ブロックが１２Ｋサイクル使用されているように、ブロック１とブロック２との間で均一に配分された。更に２４Ｋサイクル後（４８Ｋサイクル時）、サイクルは、各ブロックが２４Ｋサイクル使用されているように、再度、均一に配分された。しかし、ブロック１の残りは、０サイクルである。次の２４Ｋサイクルに対する実行は、ブロック１がもはや使用できないため、二分割される。換言すれば、完全な性能は、最初の４８Ｋサイクルの間のみ利用可能である。代替として、メーカー寿命値が（デバイスのための４８Ｋサイクルの全使用量に対して）２４Ｋサイクルであった場合、４８Ｋサイクル後、２４Ｋサイクルを超えるブロック２のサイクルは、使用されないまま残ることになる。
【００４５】
図３Ｂは、主題技術による最適なウェアレベリングスキームの簡単な実施例における、図３Ａの２つのブロックのための６０Ｋ回のＰ／Ｅサイクルのテーブル３２０を示している。開始時、すなわち、０回のＰ／Ｅサイクルが経過している時に、ブロック１は、２４Ｋサイクルの残りと０サイクルの使用とを有している。ブロック２は、３６Ｋサイクルの残りと０サイクルの使用とを有している。２０Ｋサイクルが経過した後、２０Ｋサイクルは、ブロック１が８Ｋサイクル使用され、ブロック２が１２Ｋサイクル使用されているように、それぞれの予定寿命値に基づいて、ブロック１とブロック２との間で配分された。８Ｋ：１２Ｋの比率（２：３）は、予定寿命値２４Ｋ：３６Ｋ（２：３）に対応している。更に２０Ｋサイクル後（４０Ｋサイクル時）、サイクルは、ブロック１が１６Ｋサイクル使用され、ブロック２が２４Ｋサイクル使用されているように、再度、予定寿命値によって配分された。使用量１６：２４は、２：３の比率に対応している。別の２０Ｋサイクル後（６０Ｋサイクル時）、両ブロックの残りは、０サイクルである。換言すれば、完全な性能は、フラッシュストレージシステムの全体の６０Ｋサイクル寿命の間に利用可能である。従って、均一なウェアレベリングスキームとは異なり、最適なウェアレベリングスキームは、予定寿命値を用いてブロックからより多くのサイクルを活用している。
【００４６】
図４は、主題技術の態様によるウェアレベリングスキームのためのフローチャート４００を示している。図４におけるプロセスは、例えば、フラッシュストレージシステム１１０のコントローラ１２０によって実行されてもよい。フラッシュストレージシステム１１０は、同じか、又は類似したメーカー寿命値を有する複数のフラッシュメモリデバイス１３０と共に組立てられる。各フラッシュメモリデバイス１３０は、高電圧試験により個々に試験されて、それぞれの予定寿命値を決定し、その値は、メモリ１２５に格納され、メモリ１２５に関連付けられた指定のフラッシュメモリブロック１４０に格納されてもよい。予定寿命値は、（予定寿命値が反映されるか、そうでなければ、それぞれのフラッシュメモリブロック１４０に関連付けられるように）各フラッシュメモリデバイス１３０に対して格納されるか、又は対応するフラッシュメモリデバイス１３０に基づいて、各フラッシュメモリブロック１４０に対して格納されてもよい。予定寿命値のうちの少なくとも１つは、メーカー寿命値とは異なっている。例えば、フラッシュメモリデバイス１３０Ａの予定寿命値は、メーカー寿命値よりも高い。
【００４７】
４１０において、フラッシュストレージシステム内のフラッシュメモリデバイスの順序は、各フラッシュメモリデバイスのためのそれぞれの予定寿命値に基づいて決定される。フラッシュメモリデバイスのうちの少なくとも１つは、複数のフラッシュメモリデバイスのうちの少なくとも別の１つの予定寿命値よりも高い予定寿命値を有している。コントローラ１２０は、予定寿命値に基づいて、フラッシュメモリデバイス１３０の順序リストを維持してもよい。順序リスト内のフラッシュメモリデバイス１３０の位置は、より多くの残り寿命サイクルを有するフラッシュメモリデバイスが、連結リストの先頭近くに位置決めされ、データ操作のために選択される可能性が高いように、予定寿命値に基づいていてもよい。
【００４８】
４２０において、データ操作のためのコマンドが受信される。例えば、コントローラ１２０は、書込み又は消去コマンドを受信してもよい。４３０において、フラッシュメモリデバイスのうちの１つが、フラッシュメモリデバイスの順序に基づいて選択される。例えば、コントローラ１２０は、連結リスト内の先頭のフラッシュメモリデバイス１３０を選択してもよい。４４０において、選択されたフラッシュメモリデバイス上のフラッシュメモリブロックが、データ操作のために選択される。例えば、コントローラ１２０は、フラッシュメモリデバイスの連結リストに類似した予定寿命値に基づいて並び替えられてもよい、各フラッシュメモリデバイス１３０のフラッシュメモリブロック１４０のための連結リストを維持してもよい。データ操作が行われている間、又はその後、フラッシュメモリデバイスの順序は更新されてもよい。例えば、コントローラ１２０は、他のフラッシュメモリデバイスの残りサイクルと比較した残りサイクルに基づいて、選択されたフラッシュメモリブロック１４０を連結リストの最後近くに移動してもよい。コントローラ１２０は、また、同様に、フラッシュメモリブロックの連結リストを更新してもよい。
【００４９】
本明細書中で説明した様々な実例のブロック、モジュール、構成要素、構成部品、方法、及びアルゴリズムは、電子的なハードウェア、コンピュータソフトウェア、又はその両方の組合せとして実装されてもよい。このハードウェア及びソフトウェアの互換性を例証するため、様々な実例のブロック、モジュール、構成要素、構成部品、方法、及びアルゴリズムを、それらの機能性の観点から一般的に上で説明してきた。かかる機能性がハードウェア又はソフトウェアとして実装されるかどうかは、システム全体に課せられる特定の用途及び設計の制約によって決まる。説明した機能性は、それぞれ特定の用途に対して様々な方法で実装されてもよい。種々の構成部品及びブロックは、主題技術の適用範囲から逸脱することなく、すべて異なるように配置されてもよい（例えば、異なる順序で配置されるか、又は異なる方法で分割されてもよい）。
【００５０】
開示したプロセスにおけるステップの特定の順序及び階層が例示のアプローチの実例であることが理解される。設計の選択に基づいて、プロセスにおけるステップの特定の順序及び階層が再編成されてもよいことが理解される。ステップのうちの幾つかは、同時に実行されてもよい。付随する方法は、実例の順序における様々なステップの存在する構成要素を主張するものであり、提示した特定の順序及び階層を限定する意図はない。
【００５１】
先の説明は、当業者が本明細書中で説明された様々な態様を実施することができるように提供されている。これらの態様に対する様々な改良形態は、当業者にとって容易に明らかとなり、本明細書中で定義した一般的な原則は、他の態様に適用されてもよい。従って、特許請求の範囲は、本明細書中に示した態様に限定されることを意図していないが、特許請求の範囲の言語と整合性のある完全な適用範囲と一致することを意図しており、単数形での構成要素に対する引用は、特に指定のない限り、「１つ及び唯一」を意味するのではなく、「１つ以上」を意味することを意図している。特に指定がない限り、用語「幾つか」は、１つ以上のものを指す。男性形の代名詞（例えば、彼の）は、女性形及び中性形（例えば、彼女の及びその）を含み、逆の場合も同様である。表題及び副題は、もしあれば、利便性のためにのみ用いられており、本発明を限定するものではない。
【００５２】
「態様」等の語句は、かかる態様が主題技術にとって必須であるか、又はかかる態様が主題技術のすべての構成に適用されることを含意するものではない。態様に関する開示は、すべての構成又は１つ以上の構成に適用されてもよい。態様等の語句は、１つ以上の態様を指してもよく、逆の場合も同様である。「構成」等の語句は、かかる構成が主題技術にとって必須であるか、又はかかる構成が主題技術のすべての構成に適用されることを含意するものではない。構成に関する開示は、すべての構成又は１つ以上の構成に適用されてもよい。構成等の語句は、１つ以上の構成を指してもよく、逆の場合も同様である。
【００５３】
用語「例示的」は、「実施例又は例示として機能すること」を意味するように本明細書中において用いられる。「例示的」として本明細書中で説明する何らかの態様又は設計は、必ずしも他の態様又は設計よりも好ましい、又は利点があるものとして解釈するべきではない。
【００５４】
当業者にとって公知であるか、又は後に公知となる本開示の全体を通して説明した様々な態様の構成要素に対するすべての構造的及び機能的均等物は、引用によって本明細書中に明示的に組込まれ、特許請求の範囲によって包含されることを意図している。更に、本明細書中に開示したいずれのものも、かかる開示が特許請求の範囲において明示的に説明されているかどうかに関わらず、公用に供する意図はない。いずれの請求項の構成要素も、構成要素が「〜するための手段」といった語句を用いて明示的に説明されていない限り、又は方法クレームの場合、構成要素が「〜するためのステップ」といった語句を用いて説明されていない限り、米国特許法第１１２条第６項の規定の下で解釈すべきではない。更に、「含む」、「有する」等の用語が説明又は特許請求の範囲で用いられている範囲内において、かかる用語は、「備える」が請求項内の移行句として用いられる場合に解釈されるような用語「備える」と類似の方法で包括的であることを意図している。
【符号の説明】
【００５５】
１１０  フラッシュストレージシステム
１１５  インターフェース
１２０  コントローラ
１２５  メモリ
１３０  フラッシュメモリデバイス
１３５  レジスタ
１４０  フラッシュメモリブロック
１５０  ホスト
２００、４００  フローチャート
３１０、３２０  テーブル
【図１】
2017084341.tif 000003
【図２】
2017084341.tif 000004
【図３Ａ】
2017084341.tif 000005
【図３Ｂ】
2017084341.tif 000006
【図４】
2017084341.tif 000007
【外国語明細書】
2017084341000001.pdf