(57)【要約】  メモリの複数のブロックの寿命を向上させるシステム、方法、及びコンピュータプログラム製品を提供する。動作の際に、メモリの複数のブロックの寿命に影響を及ぼす少なくとも１つの因子を識別する。さらに、その少なくとも１つの因子に基づいて、書き込むための複数のブロックを選択する。【選択図】  図１
2011503741.tif 000002
【特許請求の範囲】
【請求項１】
メモリの複数のブロックの寿命に影響を及ぼす少なくとも１つの因子を識別するステップと、
前記少なくとも１つの因子に基づいて、書き込むための前記複数のブロックのうちのいずれかを選択するステップと
を含む方法。
【請求項２】
前記少なくとも１つの因子が、メモリの前記ブロックのうちの少なくとも１つに関係する読取り操作中のいくつかの誤りを含む請求項１に記載の方法。
【請求項３】
前記誤りが、検出した誤りである請求項２に記載の方法。
【請求項４】
前記誤りが、訂正した誤りである請求項２に記載の方法。
【請求項５】
前記少なくとも１つの因子が、メモリの前記ブロックのうちの少なくとも１つに関係するプログラム操作と読取り操作との間の期間を含む請求項１に記載の方法。
【請求項６】
前記少なくとも１つの因子が、メモリの前記ブロックのうちの少なくとも１つを消去する回数を含む請求項１に記載の方法。
【請求項７】
前記少なくとも１つの因子が、メモリの前記ブロックのうちの少なくとも１つを消去するのに必要な期間を含む請求項１に記載の方法。
【請求項８】
前記少なくとも１つの因子が、メモリの前記ブロックのうちの少なくとも１つをプログラムするのに必要な期間を含む請求項１に記載の方法。
【請求項９】
前記少なくとも１つの因子が、メモリの前記ブロックのうちの少なくとも１つをプログラムするのに必要ないくつかの再試行を含む請求項１に記載の方法。
【請求項１０】
前記少なくとも１つの因子が、メモリの前記ブロックのうちの少なくとも１つのページのいくつかの介在読取りを含む請求項１に記載の方法。
【請求項１１】
前記少なくとも１つの因子が、隣接するページでのいくつかの介在読取りを含む請求項１に記載の方法。
【請求項１２】
前記少なくとも１つの因子に基づいてスコアを計算するステップをさらに含む請求項１に記載の方法。
【請求項１３】
選択する前記ステップが前記スコアに基づく請求項１２に記載の方法。
【請求項１４】
選択する前記ステップが複数の前記因子に基づく請求項１に記載の方法。
【請求項１５】
推定寿命がより長い、前記ブロックのうちの第１ブロックが、推定寿命がより短い前記ブロックのうちの第２ブロックよりも前に書き込まれる請求項１に記載の方法。
【請求項１６】
前記推定寿命がより短い、前記ブロックのうちの前記第２ブロックが、しきい値を超える請求項１５に記載の方法。
【請求項１７】
前記推定寿命がより長い、前記ブロックのうちの前記第１ブロックが、しきい値未満である請求項１６に記載の方法。
【請求項１８】
前記メモリが機械式記憶装置を含む請求項１に記載の方法。
【請求項１９】
前記メモリが揮発性メモリ装置を含む請求項１に記載の方法。
【請求項２０】
前記メモリが不揮発性メモリ装置を含む請求項１に記載の方法。
【請求項２１】
前記不揮発性メモリ装置が、セル当たり単一ビットＮＯＲフラッシュメモリ、セル当たり多ビットＮＯＲフラッシュメモリ、セル当たり単一ビットＮＡＮＤフラッシュメモリ、及びセル当たり多ビットＮＡＮＤフラッシュメモリのうちの少なくとも１つを含む請求項２０に記載の方法。
【請求項２２】
メモリの前記複数のブロックの使用の履歴を格納するステップをさらに含む請求項１に記載の方法。
【請求項２３】
コンピュータ可読媒体上で実施されるコンピュータプログラム製品であって、
メモリの複数のブロックの寿命に影響を及ぼす少なくとも１つの因子を識別するコンピュータコードと、
前記少なくとも１つの因子に基づいて、書き込むための前記複数のブロックのうちのいずれかを選択するコンピュータコードと
を含む、コンピュータプログラム製品。
【請求項２４】
メモリの複数のブロックの寿命に影響を及ぼす少なくとも１つの因子に基づいて、書き込むための前記複数のブロックのうちのいずれかを選択する論理機構を備える装置。
【請求項２５】
前記論理機構が、システムとメモリとの間に結合される請求項２４に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明はメモリに関し、より詳細には、有限の寿命を有するメモリに関する。
【背景技術】
【０００２】
[0002]メモリは、現代の企業コンピューティングシステムの性能の最も制限的な側面の１つである。メモリの１つの制限的な側面は、多くのタイプのメモリが限られた寿命を示すことである。例えば、フラッシュなどの不揮発性メモリの寿命は、消去され、再書込みされるごとに低下する。時間の経過、並びに数千回の消去及び再書込みにつれて、そのようなフラッシュメモリの信頼性が次第に低下する可能性がある。
【０００３】
[0003]メモリ寿命の低下を低減する１つの一般的な従来技術の技法は、ウェアレベリングである。ウェアレベリングは、記憶装置内の各ブロックを概ね等しい回数だけ消去し、書き込むことを可能にする。これにより、あるブロックがより頻繁に使用され、寿命の終わりに達し、使用を中止しなければならない状況が回避される。これにより、装置全体の記憶容量が低下する。記憶装置は予備ブロックを有することができるが、予備ブロックが枯渇し、装置のメモリ容量が低下し、それによって記憶装置を使用することができない。
【０００４】
[0004]メモリベンダはしばしば、一定の割合のメモリの期待寿命を保証する。例えば、フラッシュメモリベンダは、１０００００回のプログラム及び消去サイクルの後に（すなわち耐久性）、誤り訂正要件の超過に基づいて使用不能となるブロックが１％未満であることを保証することができる。この場合、誤り訂正要件は、フラッシュ装置について５１２バイト当たり単一のビット誤りを訂正するように設定することができる。最近開発された装置には、ずっと低い耐久性を有するものもある。こうした装置は、より大きい誤り訂正要件を必要とする。
【０００５】
[0005]さらに、メモリブロックの寿命は変化することがある。したがって、いくつかのプログラム消去サイクルがレベリングされるウェアレベリングを使用すると、記憶装置は、指定の割合のブロックだけが不良となったとき（例えば１％）に寿命の終わりに達することがある。しかし、記憶装置に含まれる大部分のブロックはまだ動作可能であることがある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
[0006]したがって、こうした問題及び／又は従来技術に関連する他の問題に対処することが求められている。
【課題を解決するための手段】
【０００７】
[0007]メモリの複数のブロックの寿命を向上させるシステム、方法、及びコンピュータプログラム製品を提供する。動作の際に、メモリの複数のブロックの寿命に影響を及ぼす少なくとも１つの因子を識別する。さらに、その少なくとも１つの因子に基づいて、書き込むための複数のブロックを選択する。
【図面の簡単な説明】
【０００８】
【図１】一実施形態による、メモリの複数のブロックの寿命を向上させる方法を示す図である。
【図２】別の実施形態による、メモリの複数のブロックの寿命を向上させる技法を示す図である。
【図３】別の実施形態による、メモリの複数のブロックの寿命を向上させる方法を示す図である。
【図４】一実施形態による、書込み頻度に基づいて相異なる記憶装置にデータを書き込む方法を示す図である。
【図５】様々な従来の実施形態の様々なアーキテクチャ及び／又は機能を実装することのできる例示的システムを示す図である。
【発明を実施するための形態】
【０００９】
[0013]図１は、一実施形態による、メモリの複数のブロックの寿命を向上させる方法１００を示す。図示するように、メモリの複数のブロックの寿命に影響を及ぼす少なくとも１つの因子を識別する。動作１０２を参照されたい。さらに、その少なくとも１つの因子に基づいて、書き込むための複数のブロックを選択する。動作１０４を参照されたい。
【００１０】
[0014]この説明の状況では、メモリの寿命は、メモリが任意の所望の程度のユーザビリティを示す任意の期間を含むことができる。例えば、様々な実施形態では、そのような寿命は、全く限定はしないが、所望の寿命、実際の寿命、推定寿命などを含むことができる。さらに、ユーザビリティの程度は、まだ動作可能な構成要素（例えば、ブロック、セルなど）の割合、メモリ又はその構成要素の信頼性、並びに／或いはそれに関する任意の他のパラメータなどの任意のユーザビリティ関連パラメータを指すことができる。
【００１１】
[0015]さらに、様々な実施形態では、メモリは、限定はしないが、機械式記憶装置（例えばディスクドライブなど）、固体記憶装置（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、フラッシュメモリなど）、及び／又は任意の他の記憶装置を含むことができる。メモリがフラッシュメモリを含む場合、フラッシュメモリは、限定はしないが、シングルレベルセル（ＳＬＣ）装置、マルチレベルセル（ＭＬＣ）装置、ＮＯＲフラッシュメモリ、ＮＡＮＤフラッシュメモリ、ＭＬＣ  ＮＡＮＤフラッシュメモリ、ＳＬＣ  ＮＡＮＤフラッシュメモリなどを含むことができる。一実施形態では、不揮発性メモリ装置は、セル当たり単一ビットＮＯＲフラッシュメモリ、セル当たり多ビットＮＯＲフラッシュメモリ、セル当たり単一ビットＮＡＮＤフラッシュメモリ、及びセル当たり多ビットＮＡＮＤフラッシュメモリのうちの少なくとも１つを含むことができる。
【００１２】
[0016]さらに、この説明の状況では、因子は、メモリブロックの寿命に直接的又は間接的に影響を及ぼす可能性のある任意の因子を含むことができる。例えば、様々な実施形態では、因子は、限定はしないが、メモリのブロックのうちの少なくとも１つに関係する読取り動作中のいくつかの誤り（例えば、検出した誤り、訂正した誤りなど）、メモリのブロックのうちの少なくとも１つに関係するプログラム動作と読取り動作との間の期間、メモリのブロックのうちの少なくとも１つを消去する回数、メモリのブロックのうちの少なくとも１つを消去するのに必要な期間、メモリのブロックのうちの少なくとも１つをプログラムするのに必要な期間、メモリのブロックのうちの少なくとも１つをプログラムするのに必要ないくつかの再試行、メモリのブロックのうちの少なくとも１つのページのいくつかの介在読取り、隣接するページでのいくつかの介在読取り、メモリの構造及び編成、並びに／或いは上記の定義を満たす任意の他の因子を含むことができる。任意選択として、メモリのブロックの使用の履歴を格納することができる。この場合、使用の履歴を使用して、因子を決定することができる。
【００１３】
[0017]次に、ユーザの要望に従って上記のフレームワークがそれと共に実装されることがあり、又は実装されないことのある様々な任意選択のアーキテクチャ及び機能に関するより例示的な情報を説明する。以下の情報は、例示のために説明されるものであり、いかなる形でも限定として解釈されるべきでないことに強く留意されたい。任意選択で、以下の機能のいずれかを、記載の他の機能を除外して、又は除外することなく組み込むことができる。
【００１４】
[0018]図２は、別の実施形態による、メモリの複数のブロックの寿命を向上させる技法２００を示す。任意選択として、この技法２００は、図１の詳細の状況で実装することができる。しかし、もちろん技法２００は任意の所望の環境で実装することができる。上述の定義は、この説明の間に適用することができることにも留意されたい。
【００１５】
[0019]図示するように、複数のメモリブロック２０４の耐久性２０２を監視することができる。この場合、図２の棒は、特定のブロック２０４についての書込み数を表す。この説明の状況では、耐久性２０２は、各メモリブロック２０４についての書込み及び消去サイクルの数を指す。したがって、耐久性２０２は、メモリブロック２０４の使用量に対応する。一実施形態では、書込み及び／又は消去の数を監視及び記録することができる。
【００１６】
[0020]ブロック２０４の書込み数を監視することにより、どのブロックがより頻繁に使用されたかを判定することができる。一実施形態では、監視を使用して、ブロック２０４のいずれかについての書込み数がしきい値２０６を超えたかどうかを判定することができる。さらに、そのような監視によって使用量の等化を可能にすることができ、それによって、あるブロックについての書込み数がしきい値２０６に達したとき、しきい値２０６未満の他のブロックを書込みのために使用することができる。例えば、どのブロックに書き込み、再利用するかに関する順序を変更して、ブロック間の耐久性値の差があるならばそれを最小限に抑えることができる。
【００１７】
[0021]動作の際に、メモリの複数のブロック２０４の寿命に影響を及ぼす少なくとも１つの因子を識別及び／又は監視することができる。次いで、その少なくとも１つの因子に基づいて、書き込むための複数のブロックを選択することができる。様々な実施形態では、寿命の観点からブロック２０４の状態を示す複数の因子が存在することがある。一実施形態では、因子は、各ブロック２０４に関連するいくつかの訂正した誤りを含むことができる。そのような訂正した誤りは、例えばデータの読取りに対応することができる。
【００１８】
[0022]様々なケースでは、因子は、複数の別の因子の影響を受けることがある。例えば、訂正した誤りの数は、プログラム動作から読取りまでどれだけの時間が経過したか、及びどれだけの読取りを実行したかに影響を受けることがある。さらに、ブロックを消去及びプログラムする回数も、訂正した誤りの数に影響を与えることがある。
【００１９】
[0023]もちろん、他の多数の因子も、訂正した誤りの数に影響を及ぼすことがある。様々な実施形態では、因子は、ブロック２０４の使用の期間、書込みの頻度、動作速度、許可される合計の動作数、及び寿命の期間などに対応することができる。もちろん、このような例示的態様は例示のために説明したに過ぎない。因子は、メモリのブロックの期待寿命に影響を及ぼすことのある任意の側面に対応することができるからである。
【００２０】
[0024]一実施形態では、スコアを使用して、どのブロック２０４に書き込み、再利用するかについての順序を変更するかどうかを判定することができる。例えば、各ブロック２０４は、少なくとも１つの因子に基づく、対応するスコア関数を有することができる。スコア関数を使用して、各ブロック２０４についてのスコアを求めることができる。
【００２１】
[0025]このスコアを使用して、ブロック２０４のスコア関数間の値の差を最小限に抑えることができる。任意選択として、スコアは、ブロック２０４の寿命に影響を及ぼす１つの因子に基づくことができる。別の任意選択として、スコアは、ブロック２０４の寿命に影響を及ぼす複数の因子に基づくことができる。
【００２２】
[0026]例えば、２つのメモリブロックの場合、一方のメモリブロックがしきい値２０６を超えるスコアを有することがあり、一方がしきい値２０６未満のスコアを有することがある。この場合、各スコアは、ブロックの寿命に影響を及ぼす少なくとも１つの因子に対応することができる。スコアは、上記のように任意の数の因子に対応することができることに留意されたい。
【００２３】
[0027]一実施形態では、スコアは、ブロックの期待寿命に関する少なくとも１つの因子に対応する値を示すことができる。この場合、値の差は、ブロックの期待寿命の差を反映することができる。したがって、２つのブロックを等化することができる。
【００２４】
[0028]一実施形態では、等化は、しきい値２０６未満のブロックを使用する（例えば書き込む）と共に、しきい値２０６を超えるブロックを使用しないことを含むことができる。このことを、２つのブロックが等しい値、又はほぼ等しい値に対応する時点まで行うことができる。その時点で、しきい値２０６を上げて、両方のメモリブロックを使用することができる。
【００２５】
[0029]当初、すべてのブロック２０４はしきい値２０６未満でもよい。ブロックがしきい値２０６を超過したとき、ブロックを、しきい値２０６を超えたブロックと標識付けし、或いは識別することができる。次いで、しきい値２０６未満のブロック２０４がしきい値２０６に達し、又はしきい値２０６を超過するまで、しきい値２０６未満のブロック２０４を使用することができる。
【００２６】
[0030]このことを、しきい値２０６未満のすべてのブロック２０４が枯渇するまで続行することができる。この時点で、すべての既存のブロック２０４が新しいしきい値未満となるように新しいしきい値を設定することができる。このことを、ブロック２０４の寿命全体を通して反復することができる。
【００２７】
[0031]任意選択として、消去され、書き込まれるブロック２０４の合計量を最小限に抑えるために、ブロック２０４間の変動の等化中に、空きスペースのカウント割合を使用することができる。さらに、ブロック間の変動の等化と共に、様々な他の技法を使用して、消去され、書き込まれるブロックの合計量を最小限に抑えることができる（すなわちブロック再利用）。さらに、様々な他の等化技法を使用してブロック２０４間の変動を等化することができる。
【００２８】
[0032]一実施形態では、システムで複数のメモリモジュールを使用することができる。この場合、メモリモジュールは、相異なる寿命を有するメモリモジュールを含むことができる。したがって、システムの全メモリ寿命は、最小の寿命を有するメモリモジュールに限定されるのではなく、最高でメモリの寿命の和となることができる。
【００２９】
[0033]一実施形態では、寿命推定器モジュールが、記憶バスを介してシステムのコントローラに通信されたコマンドを受け取る働きをすることができる。寿命推定器モジュールは、バスを介して受け取ったコマンドが実行されたと仮定して、推定寿命を計算することができる。一実施形態では、寿命推定器を使用して、メモリブロック２０４の寿命に影響を及ぼす書込み数及び／又は他の因子を監視することができる。厳密には任意選択として、寿命推定器モジュールを使用してしきい値２０６を設定することができる。
【００３０】
[0034]もちろん、様々な技法を使用してしきい値２０６を設定することができる。一実施形態では、しきい値２０６は所定のしきい値でよい。別の実施形態では、しきい値２０６を動的に設定することができる。任意選択として、しきい値は、メモリブロック２０６のうちの少なくとも１つに関連する装置の寿命（例えば期待寿命、所望の寿命など）に直接的に相関することができる。
【００３１】
[0035]一実施形態では、コストを削減し、性能を改善するために、記憶装置内冗長機能を使用することができる。そのような実施形態では、個々の記憶装置間で、記憶装置の寿命に関連する任意の因子に基づいてデータを移動することができる。例えば、状況が、記憶装置のうちの第１の記憶装置が１組のデータを含み、その１組のデータが記憶装置のうちの第２の記憶装置のデータに対してより頻繁に上書きされることを含むことができる。そのような場合、寿命に関連する少なくとも１つの因子のしきい値を超過した後、そのようなデータを第１記憶装置から第２記憶装置に移動することができ、その後は第１記憶装置又は第１記憶装置の１つ又は複数のブロック／モジュールを使用して、あまり頻繁に書き込まれないデータを格納することができ、又はそれ以上使用することから引退させることができる。
【００３２】
[0036]この目的で、ある記憶装置又は記憶装置の一部がグループの他の記憶装置に対して非常に時期尚早な時点で故障することを回避するために、記憶装置寿命を適切に分散させることができる。もちろん、この技法は、相異なる記憶装置の間だけでなく、記憶装置の各部分の間でも適用することができる。この目的で、任意のメモリ構成要素の寿命をそのような方式で管理することができる。
【００３３】
[0037]図３は、別の実施形態による、メモリの複数のブロックの寿命を向上させる方法３００を示す。任意選択として、この方法３００は、図１〜２の機能の状況で実施することができる。しかし、もちろん方法３００は任意の所望の環境で実施することができる。上述の定義は、この説明の間に適用することができることにも留意されたい。
【００３４】
[0038]図示するように、メモリのすべてのブロックがしきい値未満となるようにしきい値を定義する。動作３０２を参照されたい。一実施形態では、しきい値は、ブロックの使用量に対応することができる。例えば、ブロックが使用されるとき、ブロックに関連する使用量の値は、しきい値に近づくことができる。別の実施形態では、しきい値は、ブロックのセットの期待寿命に関連する少なくとも１つの他の因子に対応することができる。
【００３５】
[0039]例えば、しきい値は、ブロックに関するいくつかの訂正した誤りに対応することができる。この場合、ブロックが使用されるとき、ブロックに関連する訂正した誤りの数の値がしきい値に近づくことができる。もちろん、しきい値は、ブロックの寿命に影響を及ぼす任意の数の因子に対応することができる。
【００３６】
[0040]各ブロックがそれ未満となる初期しきい値を識別した後は、ブロックを再利用する必要があるかどうかを判定する。動作３０４を参照されたい。例えば、ブロック又はブロックのグループがしきい値を超えており、又は他のブロックに対して不均衡に使用されていることを因子が示す場合、１つ又は複数のブロックを再利用する必要があると判定することができる。
【００３７】
[0041]この説明の状況では、ブロック再利用は、ガーベッジコレクション、読取り妨害、スクラビング、訂正した誤りの数、又は他のイベントでトリガすることができ、少なくとも１つの因子に基づいてブロック間の変動を等化することを指す。例えば、様々な実施形態では、ブロック再利用は、読取り／書込み中に検出したいくつかの誤り、読取り／書込み中に訂正したいくつかの誤り、ブロックを消去するための時間の長さ、ブロックをプログラムするための時間の長さ、プログラミング中に使用されるいくつかのエントリ、ページのいくつかの介在読取り、隣接するページでのいくつかの介在読取り、ブロックのいくつかの消去及びプログラムサイクル、及び／又は任意の他の因子に基づいてブロック間の変動を等価することを含むことができる。
【００３８】
[0042]ブロックを再利用する必要があると判定した場合、しきい値未満のブロックセット内のブロックを書込みのために割り振る。動作３０６を参照されたい。例えば、しきい値を超えるブロックセット内のブロック（複数可）ではなく、しきい値未満のブロックをメモリ操作で使用することができる。
【００３９】
[0043]しきい値未満のブロックセット内のブロック（複数可）を書込みのために割り振った後は、しきい値を超えるブロックがあるかどうかを判定する。動作３０８を参照されたい。例えば、ブロックがしきい値を超過すると判定するまで、しきい値未満のブロックセット内のブロックに書き込むことができる。
【００４０】
[0044]ブロックがしきい値を超過したと判定した場合、しきい値を超えるブロックに対応するブロックのセット内にブロックを配置することができる。動作３１０を参照されたい。ブロックがしきい値を超過していない場合、ブロックは、しきい値未満のブロックセット内にとどまることができ、引き続き使用することができる。
【００４１】
[0045]次いで、しきい値未満のブロックのすべてが枯渇したかどうかを判定する。動作３１２を参照されたい。言い換えれば、しきい値未満のブロックに対応するブロックのセット内のすべてのブロックが、しきい値を超えるブロックに対応するブロックの組に含まれているかどうかを判定する。
【００４２】
[0046]しきい値未満のすべてのブロックが枯渇した場合、新しいしきい値を設定し、すべての既存のブロックがその新しいしきい値未満となるように定義する。動作３１４を参照されたい。新しいしきい値を設定した後は、ブロックを再利用する必要があるかどうかを再び判定する。任意選択として、これをメモリブロックの寿命にわたって続行することができる。
【００４３】
[0047]新しいしきい値及び初期しきい値は、様々な基準に基づいて設定できることに留意されたい。例えば、しきい値は、ブロックの予想使用量に基づいて設定することができる。一実施形態では、しきい値は所定のしきい値でもよい。別の実施形態では、しきい値は、メモリブロック使用量に基づいて決定することができる。
【００４４】
[0048]図４は、一実施形態による、書込み頻度に基づいて様々な記憶装置にデータを書き込む方法４００を示す。任意選択として、この方法４００は、図１〜３の機能及びアーキテクチャの状況で実施することができる。しかし、もちろん方法４００は任意の所望の環境で実装することができる。上述の定義は、この説明の間に適用することができることにも留意されたい。
【００４５】
[0049]図示するように、データが書き込まれる頻度を識別する。動作４０２を参照されたい。さらに、頻度に基づいて、データを書き込むために相異なるタイプの複数の記憶装置から選択を行う。動作４０４を参照されたい。
【００４６】
[0050]一実施形態では、選択はしきい値に基づくことができる。例えば、データが書き込まれる頻度がしきい値を超過する場合、一定の記憶装置を選択してデータを書き込むことができる。任意選択として、相異なるタイプの記憶装置は、ＳＬＣ及びＭＬＣ装置、ＭＬＣ及び相異なる耐久性を有するＭＬＣ、ＳＬＣ及びＤＲＡＭ、ＭＬＣ及びＤＲＡＭを含むことができる。もちろん、様々な別の実施形態では、相異なるタイプの記憶装置は、様々な異なるタイプのメモリを含む任意の数の装置を含むことができる。
【００４７】
[0051]別の実施形態では、少なくとも２つの異なるタイプのメモリを１つの装置に一体化することができる。例えば、フラッシュＭＬＣ及びＳＬＣメモリを１つの装置上で組み合わせることができる。別の例として、２つの異なるタイプのフラッシュＭＬＣを１つの装置に一体化することができる。さらに別の例として、１つの装置でのメモリタイプの混合をプログラム式に決定することができる。ある場合には、ＳＬＣフラッシュメモリに関連する記憶装置の一部を決定することができ、ＭＬＣフラッシュメモリに関連する記憶装置の一部を決定することができる。
【００４８】
[0052]特定の例として、特定のアプリケーション又はプログラムからのデータが高頻度で書き込まれると判定することができる。この場合、ＳＬＣ装置を選択してデータを書き込むことができる。一方、特定のアプリケーション又はプログラムからのデータ、或いはディスクの特定の場所からのデータ、或いは特定のアクセスパターンからのデータが低頻度で書き込まれると判定することができる。この場合、ＭＬＣ装置を選択してデータを書き込むことができる。もちろん、識別した頻度に基づいて任意の数の装置を選択することができるので、これは一例に過ぎない。
【００４９】
[0053]一実施形態では、寿命推定器モジュールは、記憶バスを介してシステムのコントローラに通信されたコマンドを受け取る働きをすることができる。寿命推定器モジュールは、頻度を監視することができ、バスを介して受信したコマンド（複数可）が実行されたと仮定して、推定寿命を計算することができる。もちろん、頻度は様々な方式で求めることができ、寿命推定器モジュールで識別されるものに限定されない。
【００５０】
[0054]様々な実施形態では、上記の実施形態で述べたメモリは、機械式記憶装置（例えば、ＳＡＴＡディスクドライブ、ＳＡＳディスクドライブ、ファイバチャネルディスクドライブ、ＩＤＥディスクドライブ、ＡＴＡディスクドライブ、ＣＥディスクドライブ、ＵＳＢディスクドライブ、スマートカードディスクドライブ、ＭＭＣディスクドライブなどを含むディスクドライブ）及び／又は非機械式記憶装置（例えば半導体ベースの記憶装置など）を含むことができることに留意されたい。そのような非機械式メモリは、例えば揮発性又は不揮発性メモリを含むことができる。様々な実施形態では、不揮発性メモリ装置は、フラッシュメモリ（例えば、セル当たり単一ビットＮＯＲフラッシュメモリ、セル当たり多ビットＮＯＲフラッシュメモリ、セル当たり単一ビットＮＡＮＤフラッシュメモリ、セル当たり多ビットＮＡＮＤフラッシュメモリ、マルチレベル及び／又はセル当たり多ビットＮＡＮＤフラッシュ、大規模ブロックフラッシュメモリ、抵抗型メモリ、相変化メモリ、磁気メモリなど）を含むことができる。メモリの様々な例を本明細書で述べたが、メモリに対して実施される様々な操作のために寿命が低下する可能性のある任意のタイプのメモリに様々な原理を適用することができることに留意されたい。
【００５１】
[0055]図５は、先の様々な実施形態の様々なアーキテクチャ及び／又は機能を実装することのできる例示的システム５００を示す。例えば、例示的システム５００は、先の実施形態のうちのいくつかで述べたコンピュータを表すことができる。さらに、上述の様々な機器は、システム５００の構成要素でもよい。
【００５２】
[0056]図示するように、通信バス５０２に接続される少なくとも１つのホストプロセッサ５０１を含むシステム５００が設けられる。システム５００はまた、メインメモリ５０４をも含む。制御論理機構（ソフトウェア）及びデータがメインメモリ５０４内に格納され、メインメモリ５０４は、ランダムアクセスメモリ（ＲＡＭ）の形態を取ることができる。
【００５３】
[0057]システム５００はまた、グラフィックスプロセッサ５０６、及びディスプレイ５０８すなわちコンピュータモニタをも含むことができる。システム５００はまた、２次ストレージ５１０をも含むことができる。２次ストレージ５１０は、例えばハードディスクドライブ、及び／又はフロッピィディスクドライブ、磁気テープドライブ、コンパクトディスクドライブなどを表す取外し可能ストレージドライブを含む。取外し可能ストレージドライブは、周知の方式で取外し可能ストレージモジュールから読み取り、及び／又は取外し可能ストレージモジュールに書き込む。
【００５４】
[0058]コンピュータプログラム、又はコンピュータ制御論理アルゴリズムは、メインメモリ５０４及び／又は２次ストレージ５１０内に格納することができる。そのようなコンピュータプログラムは、実行されたときに、システム５００が様々な機能を実施することを可能にする。メモリ５０４、ストレージ５１０、及び／又は任意の他のストレージが、コンピュータ可読媒体の可能な例である。
【００５５】
[0059]一実施形態では、先の様々な図のアーキテクチャ及び／又は機能は、ホストプロセッサ５０１、グラフィックスプロセッサ５０６、２次ストレージ５１０、ホストプロセッサ５０１とグラフィックスプロセッサ５０６の両方の機能の少なくとも一部が可能な集積回路（図示せず）、チップセット（すなわち、関連機能を実施するためのモジュールとして機能するように設計され、販売される一群の集積回路など）、及び／又はそれに関する任意の他の集積回路の状況で実装することができる。
【００５６】
[0060]さらに、先の様々な図のアーキテクチャ及び／又は機能は、一般的コンピュータシステム、回路板システム、エンターテイメント目的専用のゲームコンソールシステム、特定用途向けシステム、及び／又は任意の他の所望のシステムの状況で実装することができる。例えば、システム５００は、デスクトップコンピュータ、ラップトップコンピュータ、及び／又は任意の他のタイプの論理機構の形態を取ることができる。さらに、システム５００は、限定はしないが携帯情報端末（ＰＤＡ）装置、携帯電話装置、テレビジョンなどを含む様々な他の装置の形態を取ることができる。
【００５７】
[0061]さらに、図示していないが、通信のためにシステム５００をネットワーク［例えば、遠隔通信ネットワーク、ローカルエリアネットワーク（ＬＡＮ）、ワイヤレスネットワーク、インターネットなどの広域ネットワーク（ＷＡＮ）、ピアツーピアネットワーク、ケーブルネットワークなど］に結合することができる。
【００５８】
[0062]様々な実施形態を上記で説明したが、それらは限定としてではなく、例示として提示したものであることを理解されたい。したがって、好ましい実施形態の広さ及び範囲は、上述の例示的実施形態のいずれによっても限定されず、以下の特許請求の範囲及びその均等物だけに従って定義されるものとする。
【図１】
2011503741.tif 000003
【図２】
2011503741.tif 000004
【図３】
2011503741.tif 000005
【図４】
2011503741.tif 000006
【図５】
2011503741.tif 000007
【国際調査報告】
2011503741.tif 000008