(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5819610
(24)【登録日】2015年10月9日
(45)【発行日】2015年11月24日
(54)【発明の名称】異なる記憶装置にデータを書き込む方法及び装置
(51)【国際特許分類】
G11C 16/02 20060101AFI20151104BHJP
G11C 16/04 20060101ALI20151104BHJP
G06F 12/16 20060101ALI20151104BHJP
【FI】
G11C17/00 601C
G11C17/00 641
G11C17/00 622E
G11C17/00 601B
G06F12/16 310A
【請求項の数】41
【全頁数】15
(21)【出願番号】特願2010-534014(P2010-534014)
(86)(22)【出願日】2008年10月23日
(65)【公表番号】特表2011-503768(P2011-503768A)
(43)【公表日】2011年1月27日
(86)【国際出願番号】US2008012033
(87)【国際公開番号】WO2009067138
(87)【国際公開日】20090528
【審査請求日】2011年10月24日
(31)【優先権主張番号】11/942,640
(32)【優先日】2007年11月19日
(33)【優先権主張国】US
【前置審査】
(73)【特許権者】
【識別番号】306036277
【氏名又は名称】シーゲート テクノロジー,エルエルシー
(74)【代理人】
【識別番号】100107456
【弁理士】
【氏名又は名称】池田 成人
(74)【代理人】
【識別番号】100148596
【弁理士】
【氏名又は名称】山口 和弘
(74)【代理人】
【識別番号】100123995
【弁理士】
【氏名又は名称】野田 雅一
(74)【代理人】
【識別番号】100139000
【弁理士】
【氏名又は名称】城戸 博兒
(74)【代理人】
【識別番号】100152191
【弁理士】
【氏名又は名称】池田 正人
(72)【発明者】
【氏名】ダニラック, ラドスラヴ
【審査官】
岩間 直純
(56)【参考文献】
【文献】
特開2001−067881(JP,A)
【文献】
特開2000−112818(JP,A)
【文献】
特開2004−348332(JP,A)
【文献】
特開平11−110297(JP,A)
【文献】
特開2002−074983(JP,A)
【文献】
米国特許出願公開第2007/0180186(US,A1)
【文献】
米国特許出願公開第2006/0080359(US,A1)
【文献】
国際公開第2001/022232(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G11C 16/02
G06F 12/16
G11C 16/04
(57)【特許請求の範囲】
【請求項1】
異なる記憶装置にデータを書き込むシステムによって実行される方法であって、
複数の記憶技術を備えるメモリの複数の部分の寿命に影響を及ぼす複数の因子を監視するステップであって、各部分が前記異なる記憶装置の各々に対応し、各部分が、前記複数の記憶技術のうち特定の記憶技術を備え、対応する寿命を有しており、前記複数の因子は、(i)各部分へのデータの書込みの頻度値と、(ii)各部分に関連する訂正済み誤りの数と、を含む、ステップと、
前記複数の部分の前記監視された複数の因子の少なくとも一つの特定因子に基づいて前記複数の部分間のばらつきを均一化するために、各部分に関連する前記特定因子がしきい値に近づくように、前記データが書き込まれる前記部分として前記しきい未満である前記特定因子を有する前記複数の部分の第2の部分を動的に選択するステップであって、前記しきい値は、前記しきい未満である前記特定因子を有する全部分が使い果たされた場合に、新しいしきい値に設定され前記全部分に関連する前記特定因子が前記新しいしきい値未満となり、前記特定因子は前記訂正済み誤りの数を含む、ステップと
を含む方法。
【請求項2】
前記動的に選択するステップが、前記しきい値に更に少なくとも部分的に基づく請求項1に記載の方法。
【請求項3】
前記しきい値を求めるステップを更に含む請求項1に記載の方法。
【請求項4】
前記複数の部分のうち第1の部分にデータが書き込まれる頻度が前記しきい値を超過する場合、前記複数の部分のうち前記第2の部分にデータが書き込まれる請求項3に記載の方法。
【請求項5】
前記第1の部分が、前記複数の記憶技術のうちシングルレベルセル(SLC)記憶技術を備える請求項4に記載の方法。
【請求項6】
前記複数の部分のうち第1の部分にデータが書き込まれる頻度が前記しきい値を超過しない場合、前記複数の部分のうち前記第2の部分にデータが書き込まれる請求項3に記載の方法。
【請求項7】
前記第1の部分が、前記複数の記憶技術のうちマルチレベルセル(MLC)記憶技術を備える請求項4に記載の方法。
【請求項8】
前記頻度値が寿命推定器モジュールによって監視される請求項1に記載の方法。
【請求項9】
前記部分は記憶装置に対応しており、前記寿命推定器モジュールが、前記記憶装置の推定寿命を計算する請求項8に記載の方法。
【請求項10】
前記部分は記憶装置に対応しており、前記寿命推定器モジュールが、記憶コマンドに基づいて前記記憶装置の推定寿命を計算する請求項8に記載の方法。
【請求項11】
前記複数の記憶技術が機械式記憶技術を含む請求項1に記載の方法。
【請求項12】
前記機械式記憶技術がディスクドライブを含む請求項11に記載の方法。
【請求項13】
前記複数の記憶技術が固体記憶技術を含む請求項1に記載の方法。
【請求項14】
前記固体記憶技術がフラッシュメモリ技術を含む請求項13に記載の方法。
【請求項15】
前記フラッシュメモリ技術がNANDフラッシュメモリを含む請求項14に記載の方法。
【請求項16】
前記複数の記憶技術が、シングルレベルセル(SLC)フラッシュメモリ記憶技術及びマルチレベルセル(MLC)フラッシュメモリ記憶技術を含んでおり、前記SLCフラッシュメモリ記憶技術及び前記MLCフラッシュメモリ記憶技術が1つの装置に集積されている請求項1に記載の方法。
【請求項17】
前記複数の部分のうち少なくとも1つの部分の前記特定の記憶技術をプログラム的に定めるステップをさらに含む請求項16に記載の方法。
【請求項18】
前記複数の記憶技術が、2つの異なるタイプのシングルレベルセル(SLC)フラッシュメモリ記憶技術を含んでおり、前記2つの異なるタイプのSLCフラッシュメモリ記憶技術が1つの装置に集積されている請求項1に記載の方法。
【請求項19】
前記複数の記憶技術が揮発性メモリを含む請求項1に記載の方法。
【請求項20】
前記複数の記憶技術が不揮発性メモリを含む請求項1に記載の方法。
【請求項21】
異なる記憶装置にデータを書き込む装置であって、
複数の記憶技術を備えるメモリの複数の部分の寿命に影響を及ぼす複数の因子を監視する手段であって、各部分が前記異なる記憶装置の各々に対応し、各部分が、前記複数の記憶技術のうち特定の記憶技術を備え、対応する寿命を有しており、前記複数の因子は、(i)各部分へのデータの書込みの頻度値と、(ii)各部分に関連する訂正済み誤りの数と、を含む、手段と、
前記部分の前記監視された複数の因子の少なくとも一つの特定因子に基づいて前記複数の部分間のばらつきを均一化するために、各部分に関連する前記特定因子がしきい値に近づくように、前記データが書き込まれる前記部分として前記しきい未満である前記特定因子を有する前記複数の部分の第2の部分を動的に選択する手段であって、前記しきい値は、前記しきい未満である前記特定因子を有する全部分が使い果たされた場合に、新しいしきい値に設定され前記全部分に関連する前記特定因子が前記新しいしきい値未満となり、前記特定因子は前記訂正済み誤りの数を含む、手段と
を含む装置。
【請求項22】
少なくとも前記監視する手段が、システムと前記メモリとの間に結合される請求項21に記載の装置。
【請求項23】
前記動的な選択が、前記しきい値に更に少なくとも部分的に基づく請求項21に記載の装置。
【請求項24】
前記しきい値を求める手段を更に含む請求項21に記載の装置。
【請求項25】
前記複数の部分のうち第1の部分にデータが書き込まれる頻度が前記しきい値を超過する場合、前記複数の部分のうち前記第2の部分にデータが書き込まれる請求項24に記載の装置。
【請求項26】
前記第1の部分が、前記複数の記憶技術のうちシングルレベルセル(SLC)記憶技術を備える請求項25に記載の装置。
【請求項27】
前記複数の部分のうち第1の部分にデータが書き込まれる頻度が前記しきい値を超過しない場合、前記複数の部分のうち前記第2の部分にデータが書き込まれる請求項24に記載の装置。
【請求項28】
前記第1の部分が、前記複数の記憶技術のうちマルチレベルセル(MLC)記憶技術を備える請求項25に記載の装置。
【請求項29】
前記頻度値が寿命推定器モジュールによって監視される請求項21に記載の装置。
【請求項30】
前記部分は記憶装置に対応しており、前記寿命推定器モジュールが、前記記憶装置の推定寿命を計算する請求項29に記載の装置。
【請求項31】
前記部分は記憶装置に対応しており、前記寿命推定器モジュールが、記憶コマンドに基づいて前記記憶装置の推定寿命を計算する請求項29に記載の装置。
【請求項32】
前記複数の記憶技術が機械式記憶技術を含む請求項21に記載の装置。
【請求項33】
前記機械式記憶技術がディスクドライブを含む請求項32に記載の装置。
【請求項34】
前記複数の記憶技術が固体記憶技術を含む請求項21に記載の装置。
【請求項35】
前記固体記憶技術がフラッシュメモリ技術を含む請求項34に記載の装置。
【請求項36】
前記フラッシュメモリ技術がNANDフラッシュメモリを含む請求項35に記載の装置。
【請求項37】
前記複数の記憶技術が、シングルレベルセル(SLC)フラッシュメモリ記憶技術及びマルチレベルセル(MLC)フラッシュメモリ記憶技術を含んでおり、前記SLCフラッシュメモリ記憶技術及び前記MLCフラッシュメモリ記憶技術が1つの装置に集積されている請求項21に記載の装置。
【請求項38】
前記複数の部分のうち少なくとも1つの部分の前記特定の記憶技術をプログラム的に定める手段をさらに含む請求項37に記載の装置。
【請求項39】
前記複数の記憶技術が、2つの異なるタイプのシングルレベルセル(SLC)フラッシュメモリ記憶技術を含んでおり、前記2つの異なるタイプのSLCフラッシュメモリ記憶技術が1つの装置に集積されている請求項21に記載の装置。
【請求項40】
前記複数の記憶技術が揮発性メモリを含む請求項21に記載の装置。
【請求項41】
前記複数の記憶技術が不揮発性メモリを含む請求項21に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
[0001]本発明はメモリに関し、より詳細には、有限の寿命を有するメモリに関する。
【背景技術】
【0002】
[0002]メモリは、現代の企業コンピューティングシステムの性能の最も制限的な側面の1つである。メモリの1つの制限的な側面は、多くのタイプのメモリが限られた寿命を示すことである。例えば、フラッシュなどの不揮発性メモリの寿命は、消去され、再書込みされるごとに低下する。時間の経過、並びに数千回の消去及び再書込みに
伴い、そのようなフラッシュメモリの信頼性が次第に低下する可能性がある。
【0003】
[0003]メモリ寿命の低下を低減する1つの一般的な従来技術の技法は、ウェアレベリングである。ウェアレベリングは、記憶装置内の各ブロックを概ね等しい回数だけ消去し、書き込むことを可能にする。これにより、あるブロックがより頻繁に使用され、寿命の終わりに達し、使用を中止しなければならない状況が回避される。
この手法は、装置全体の記憶容量
を低下
させる。記憶装置
は予備ブロックを有
しているかもしれないが、予備ブロック
は使い果たされ、装置の
記憶容量が低下し
て、記憶装置を使用
できなくなる。
【0004】
[0004]メモリベンダはしばしば、一定の割合のメモリの
寿命期待値を保証する。例えば、フラッシュメモリベンダは、100000回のプログラム及び消去サイクルの後に(すなわち耐久性)、誤り訂正要件の超過に基づいて使用不能となるブロックが1%未満であることを保証する
かもしれない。この場合、誤り訂正
条件は、フラッシュ装置について512バイト当たり
1ビット
の誤りを訂正するように設定
されるかもしれない。最近開発された装置には、ずっと低い耐久性を有するものもある。こうした装置は、より大きい誤り訂正
条件を必要とする。
【0005】
[0005]さらに、メモリブロックの寿命は
互いに異なることがある。したがって
、プログラム消去サイクル
の数が
平準化されるウェアレベリングを使用すると、記憶装置は、指定の割合のブロック
(例えば1%)だけが不良となったと
きに寿命の終わりに達することがある。しかし、記憶装置に含まれる大部分のブロック
がまだ動作可能
な場合がある。
【発明の概要】
【発明が解決しようとする課題】
【0006】
[0006]したがって、こうした問題及び/又は従来技術に関連する他の問題に対処することが求められている。
【課題を解決するための手段】
【0007】
[0007]書込み頻度に基づいて、相異なる記憶装置にデータを書き込むシステム、方法、及びコンピュータプログラム製品を提供する。動作の際に、データが書き込まれる頻度を
特定する。さらに、
その頻度に基づいて、データを書き込むために、相異なるタイプの複数の記憶装置から選択を行う。
【図面の簡単な説明】
【0008】
【
図1】一実施形態による、メモリの複数のブロックの寿命を向上させる方法を示す図である。
【
図2】別の実施形態による、メモリの複数のブロックの寿命を向上させる技法を示す図である。
【
図3】別の実施形態による、メモリの複数のブロックの寿命を向上させる方法を示す図である。
【
図4】一実施形態による、書込み頻度に基づいて相異なる記憶装置にデータを書き込む方法を示す図である。
【
図5】様々な従来の実施形態の様々なアーキテクチャ及び/又は機能を実装することのできる例示的システムを示す図である。
【発明を実施するための形態】
【0009】
[0013]
図1は、一実施形態による、メモリの複数のブロックの寿命を向上させる方法100を示す。図示するように、メモリの複数のブロックの寿命に影響を及ぼす少なくとも1つの因子を
特定する。
工程102を参照されたい。さらに、その少なくとも1つの因子に基づいて、
書込み用の複数のブロックを選択する。
工程104を参照されたい。
【0010】
[0014]この説明の状況では、メモリの寿命は、メモリが任意の所望の程度のユーザビリティを示す任意の期間を含
んでもよい。例えば、様々な実施形態では、そのような寿命は、全く限定はしないが、
希望寿命、
実寿命、推定寿命などを含
んでもよい。さらに、ユーザビリティの程度は、
依然として動作可能な構成要素(例えば、ブロック、セルなど)の割合、メモリ又はその構成要素の信頼性、並びに/或いはそれに関する任意の他のパラメータなどの任意のユーザビリティ関連パラメータを指
してもよい。
【0011】
[0015]さらに、様々な実施形態では、メモリは、限定はしないが、機械式記憶装置(例えばディスクドライブなど)、固体記憶装置(例えば、ダイナミックランダムアクセスメモリ(DRAM)、フラッシュメモリなど)、及び/又は任意の他の記憶装置を含
んでもよい。メモリがフラッシュメモリを含む場合、フラッシュメモリは、限定はしないが、シングルレベルセル(SLC)装置、マルチレベルセル(MLC)装置、NORフラッシュメモリ、NANDフラッシュメモリ、MLC NANDフラッシュメモリ、SLC NANDフラッシュメモリなどを含
んでもよい。一実施形態では、不揮発性メモリ装置は、セル当たり単一ビットNORフラッシュメモリ、セル当たり多ビットNORフラッシュメモリ、セル当たり単一ビットNANDフラッシュメモリ、及びセル当たり多ビットNANDフラッシュメモリのうちの少なくとも1つを含
んでもよい。
【0012】
[0016]さらに、この説明の状況では、因子は、メモリブロックの寿命に直接的又は間接的に影響を及ぼす可能性のある任意の因子を含
んでもよい。例えば、様々な実施形態では、因子は、限定はしないが、メモリのブロックのうちの少なくとも1つに関係する
読出し操作中
の誤り(例えば、検出
済み誤り、訂正
済み誤りなど)
の数、メモリのブロックのうちの少なくとも1つに関係するプログラム
操作と
読出し操作との間の期間、メモリのブロックのうちの少なくとも1つを消去する回数、メモリのブロックのうちの少なくとも1つを消去するのに必要な期間、メモリのブロックのうちの少なくとも1つをプログラムするのに必要な期間、メモリのブロックのうちの少なくとも1つをプログラムするのに必要
な再試行
の数、メモリのブロックのうちの少なくとも1つの
1ページ
の介在
読出しの数、隣接するページで
の介在
読出しの数、メモリの構造及び編成、並びに/或いは上記の定義を満たす任意の他の因子を含むことができる。
一つの選択
肢として、メモリのブロックの使
用履歴を
記憶してもよい。この場合、使
用履歴を使用して、因子を決定
してもよい。
【0013】
[0017]次に、ユーザの要望に従って上記のフレームワークがそれと共に実装されることがあり、又は実装されないことのある様々な任意選択のアーキテクチャ及び機能に関するより例示的な情報を説明する。以下の情報は、例示のために説明されるものであり、いかなる形でも限定として解釈されるべきでないことに強く留意されたい
。以下の機能のいずれかを、
説明される他の機能を除外して、又は除外することなく
任意選択的に組み込
んでよい。
【0014】
[0018]
図2は、別の実施形態による、メモリの複数のブロックの寿命を向上させる技法200を示す。
一つの選択
肢として、この技法200は、
図1の詳細の状況で実装することができる。しかし、もちろん技法200は任意の所望の環境で実装することができる。上述の定義は、この説明
を通じて適用することができることにも留意されたい。
【0015】
[0019]図示するように、複数のメモリブロック204の耐久性202を監視
してもよい。この場合、
図2の棒は、特定のブロック204についての書込み数を表す。この説明の状況では、耐久性202は、各メモリブロック204についての書込み及び消去サイクルの数を指す。したがって、耐久性202は、メモリブロック204の使用量に対応する。一実施形態では、書込み及び/又は消去の数を監視及び記録
してもよい。
【0016】
[0020]ブロック204の書込み数を監視することにより、どのブロックがより頻繁に使用されたかを
判断してもよい。一実施形態では、監視を使用して、ブロック204のいずれかについての書込み数がしきい値206を超えたかどうかを
判断してもよい。さらに、そのような監視によって使用量
を均一化し、それによって、あるブロックについての書込み数がしきい値206に達したとき
に、しきい値206未満の他のブロックを書込みのために使
用できる
ようにしてもよい。例えば
、ブロック
が書込み
及び再利用
(リサイクル)される順序を変更して、ブロック間の耐久性値の差
を最小限に抑え
てもよい。
【0017】
[0021]動作の際に、メモリの複数のブロック204の寿命に影響を及ぼす少なくとも1つの因子を
特定及び/又は監視
してもよい。
その場合、その少なくとも1つの因子に基づいて、書き込
み用の複数のブロックを選択
してもよい。様々な実施形態では、寿命の観点からブロック204の状態を示す複数の因子が存在
してもよい。一実施形態では、因子は、各ブロック204に関連する訂正
済み誤り
の数を含
んでいてもよい。そのような訂正
済み誤りは、例えばデータの
読出しに対応
していてもよい。
【0018】
[0022]様々なケースでは、因子は、複数の別の因子の影響を受けることがある。例えば、訂正
済み誤りの数は、プログラム
操作から
読出しまでどれだけの時間が経過したか、及び
読出しを
何回実行したかに影響を受けることがある。さらに、ブロックを消去及びプログラムする回数も、訂正
済み誤りの数に影響を与えることがある。
【0019】
[0023]もちろん、他の多数の因子も、訂正した誤りの数に影響を及ぼすことがある。様々な実施形態では、因子は、ブロック204の使用の期間、書込みの頻度、
操作率、
操作の総許容数、及び寿命の期間などに対応
していてもよい。もちろん、このような例示的態様は例示のために説明したに過ぎない。因子は、メモリのブロックの
寿命期待値に影響を及ぼす
可能性のある任意の
特徴に対応
してよいからである。
【0020】
[0024]一実施形態では、スコアを使用して
、ブロック204
が書き込み
及び再利用され
る順序を変更するかどうかを
判断してもよい。例えば、各ブロック204は、少なくとも1つの因子に基づく、対応するスコア関数を有
していてもよい。スコア関数を使用して、各ブロック204についてのスコアを求め
てもよい。
【0021】
[0025]このスコアを使用して、ブロック204のスコア関数間の値の差を最小限に抑え
てもよい。
1つの選択肢として、スコアは、ブロック204の寿命に影響を及ぼす1つの因子に基づ
いていてもよい。別の
選択肢として、スコアは、ブロック204の寿命に影響を及ぼす複数の因子に基づ
いていてもよい。
【0022】
[0026]例えば、2つのメモリブロックの場合、一方のメモリブロックがしきい値206を超えるスコアを有することがあり、一方がしきい値206未満のスコアを有することがある。この場合、各スコアは、ブロックの寿命に影響を及ぼす少なくとも1つの因子に対応
していてよい。スコアは、上記のように任意の数の因子に対応
していてよいことに留意されたい。
【0023】
[0027]一実施形態では、スコアは、ブロックの
寿命期待値に関する少なくとも1つの因子に対応する値を示
してもよい。この場合、値の差は、ブロックの
寿命期待値の差を反映
してもよい。
こうして、2つのブロックを
均一化することができる。
【0024】
[0028]一実施形態では、
均一化は、しきい値206未満のブロックを使用する(例えば書き込む)と共に、しきい値206を超えるブロックを使用しないことを含
んでもよい。このことを、2つのブロックが等しい値、又はほぼ等しい値に対応する時点まで行
ってもよい。その時点
になったら、しきい値206を上げて、両方のメモリブロックを使用
してもよい。
【0025】
[0029]当初、すべてのブロック204はしきい値206未満でもよい。
あるブロックがしきい値206を超過した
ら、
そのブロックを、しきい値206を超えたブロックとして
ラベル付けし、或いは
他の方法で特定してもよい。
その場合、しきい値206未満のブロック204がしきい値206に達し、又はしきい値206を超過するまで、しきい値206未満のブロック204を使用
してもよい。
【0026】
[0030]このことを、しきい値206未満のすべてのブロック204が
使い果たされるまで続行
してもよい。
使い果たされた時点で、すべての既存のブロック204が新しいしきい値未満となるように新しいしきい値を設定
してもよい。このことを、ブロック204の寿命全体を通して反復
してもよい。
【0027】
[0031]
1つの選択
肢として、消去され
書込みされるブロック204の
総量を最小限に抑えるために、ブロック204間の
ばらつきが均一化される間、
あるカウント割合の空きスペー
スを利用してもよい。さらに
、様々な他の技法を使用して、ブロック間の
ばらつきを均一化(すなわちブロック再生)すると共に、消去
及び書
込みされるブロックの
総量を最小限に抑え
てもよい。さらに、様々な他の
均一化技法を使用してブロック204間の
ばらつきを
均一化してもよい。
【0028】
[0032]一実施形態では、システムで複数のメモリモジュールを使用
してもよい。この場合、メモリモジュールは、相異なる寿命を有するメモリモジュールを含むことができる。したがって、システムの全メモリ寿命は、最小の寿命を有するメモリモジュールに限定されるのではなく、
最大でメモリの寿命の
合計であってもよい。
【0029】
[0033]一実施形態では、寿命推定器モジュールが、記憶バスを介してシステムのコントローラに通信されたコマンドを受け取る
ように動作してもよい。寿命推定器モジュールは、バスを介して受け取ったコマンドが実行されたと仮定して、推定寿命を計算
してもよい。一実施形態では、寿命推定器を使用して、メモリブロック204の寿命に影響を及ぼす書込み数及び/又は他の因子を監視
してもよい。厳密
に任意選択として、寿命推定器モジュールを使用してしきい値206を設定
してもよい。
【0030】
[0034]もちろん、様々な技法を使用してしきい値206を設定
してもよい。一実施形態では、しきい値206は所定のしきい値でよい。別の実施形態では、しきい値206を動的に設定
してもよい。
1つの選択
肢として、しきい値は、メモリブロック206のうちの少なくとも1つに関連する装置の寿命(例えば期待寿命、
希望寿命など)に直接的に相関
してもよい。
【0031】
[0035]一実施形態では、コストを削減し、性能を改善するために、記憶装置内冗長機能を使用
してもよい。そのような実施形態では、個々の記憶装置間で、記憶装置の寿命に関連する任意の因子に基づいてデータを移動
してもよい。例えば、状況が、記憶装置のうちの第1の記憶装置が1組のデータを含み、その1組のデータが記憶装置のうちの第2の記憶装置のデータに対してより頻繁に上書きされることを含
んでもよい。そのような場合、寿命に関連する少なくとも1つの因子のしきい値を超過した後
は、そのようなデータを第1記憶装置から第2記憶装置に移動
し、
それ以降は、第1記憶装置又は第1記憶装置の1つ又は複数のブロック/モジュール
を、あまり頻繁に書き込まれないデータを格納
するために使用してもよいし、あるいは今後使用
しないようにしてもよい。
【0032】
[0036]この目的
のため、
記憶装置寿命を適切に分散させて、ある記憶装置又は記憶装置の一部がグループの他の記憶装置に
比べて非常に
早い時点で故障することを回避
してもよい。もちろん、この技法は、相異なる記憶装置の間だけでなく、記憶装置の各部分の間でも適用
してもよい。この目的で、任意のメモリ構成要素の寿命をそのような方式で管理
してもよい。
【0033】
[0037]
図3は、別の実施形態による、メモリの複数のブロックの寿命を向上させる方法300を示す。
1つの選択
肢として、この方法300は、
図1〜2の機能の状況で実施することができる。しかし、もちろん方法300は任意の所望の環境で実施
してもよい。上述の定義は、
本説明
を通じて適用することができることにも留意されたい。
【0034】
[0038]図示するように、メモリのすべてのブロックがしきい値未満となるようにしきい値を定義する。
工程302を参照されたい。一実施形態では、しきい値は、ブロックの使用量に対応
していてもよい。例えば、ブロックが使用される
につれて、
それらのブロックに関連する使用量の値
が、しきい値に近づ
いてもよい。別の実施形態では、しきい値は、ブロックのセットの
寿命期待値に関連する少なくとも1つの他の因子に対応
してもよい。
【0035】
[0039]例えば、しきい値は、ブロックに関する訂正
済み誤り
の数に対応
していてもよい。この場合、
複数のブロックが使用される
につれて、
それらのブロックに関連する訂正
済み誤りの数の値がしきい値に近づ
いてもよい。もちろん、しきい値は、ブロックの寿命に影響を及ぼす任意の数の因子に対応
していてもよい。
【0036】
[0040]各ブロックが
下回る初期しきい値
が特定されると、ブロックを
再生(reclaim)する必要があるかどうかを
判断する。
工程304を参照されたい。例えば、ブロック又はブロックのグループがしきい値を超えており、又は他のブロックに対して不均衡に使用されていることを因子が示す場合
に、1つ又は複数のブロックを
再生する必要があると
判断してもよい。
【0037】
[0041]この説明の状況では、ブロック
再生(block reclaiming)は、ガーベッジコレクション、
読出し妨害、スクラビング、訂正
済み誤りの数、又は他のイベントでトリガすることができ、少なくとも1つの因子に基づいてブロック間の
ばらつきを
均一化することを指す。例えば、様々な実施形態では、ブロック
再生は、
読出し/書込み中に検出
された誤り
の数、
読出し/書込み中に訂正
された誤り
の数、ブロックを消去するための時間の長さ、ブロックをプログラムするための時間の長さ、プログラミング中に使用され
るエントリ
の数、ページ
の介在
読出しの数、隣接するページで
の介在
読出しの数、ブロック
の消去及びプログラムサイクル
の数、及び/又は任意の他の因子に基づいてブロック間の
ばらつきを
均一化することを含
んでよい。
【0038】
[0042]ブロックを
再生する必要があると
判断した場合、しきい値未満のブロックセット内のブロックを書込みのために割り振る。
工程306を参照されたい。例えば、しきい値を超えるブロックセット内のブロック(複数可)ではなく、しきい値未満のブロックをメモリ操作で使用
してもよい。
【0039】
[0043]しきい値未満のブロックセット内のブロック(複数可)を書込みのために割り振った後は、しきい値を超えるブロックがあるかどうかを
判断する。
工程308を参照されたい。例えば、ブロックがしきい値を超過すると
判断するまで、しきい値未満のブロックセット内のブロックに書
込みを行ってもよい。
【0040】
[0044]ブロックがしきい値を超過したと
判断した場合、しきい値を超えるブロックに対応するブロックのセット内にブロックを配置
してもよい。
工程310を参照されたい。ブロックがしきい値を超過していない場合、ブロックは、しきい値未満のブロックセット内にとどまることができ、引き続き使用することができる。
【0041】
[0045]次いで、しきい値未満のブロックのすべてが
使い果たされたかどうかを
判断する。
工程312を参照されたい。言い換えれば、しきい値未満のブロックに対応するブロックのセット内のすべてのブロックが、しきい値を超えるブロックに対応するブロックの
セットに含まれているかどうかを
判断する。
【0042】
[0046]しきい値未満のすべてのブロックが
使い果たされた場合、新しいしきい値を設定し、すべての既存のブロック
をその新しいしきい値未満となるように定義する。
工程314を参照されたい。新しいしきい値を設定した後は、ブロックを
再生する必要があるかどうかを再び
判断する。
1つの選択
肢として、これをメモリブロックの寿命にわたって続行
してもよい。
【0043】
[0047]新しいしきい値及び初期しきい値は、様々な基準に基づいて設定できることに留意されたい。例えば、しきい値は、ブロックの予想使用量に基づいて設定
してもよい。一実施形態では、しきい値は所定のしきい値でもよい。別の実施形態では、しきい値は、メモリブロック使用量に基づいて決定
してもよい。
【0044】
[0048]
図4は、一実施形態による、書込み頻度に基づいて様々な記憶装置にデータを書き込む方法400を示す。
1つの選択
肢として、この方法400は、
図1〜3の機能及びアーキテクチャの状況で実施することができる。しかし、もちろん方法400は任意の所望の環境で実装することができる。上述の定義は、
本説明
を通じて適用することができることにも留意されたい。
【0045】
[0049]図示するように、データが書き込まれる頻度を
特定する。
工程402を参照されたい。さらに、頻度に基づいて、データを書き込むために相異なるタイプの複数の記憶装置から選択を行う。
工程404を参照されたい。
【0046】
[0050]一実施形態では、選択はしきい値に基づ
いてもよい。例えば、データが書き込まれる頻度がしきい値を超過する場合、一定の記憶装置を選択してデータを書き込
んでもよい。
1つの選択
肢として、
この相異なるタイプの記憶装置は、SLC及びMLC装置
、相異なる耐久性を有するMLC
同士、SLC及びDRAM、
並びにMLC及びDRAMを含
んでもよい。もちろん、様々な別の実施形態では、
この相異なるタイプの記憶装置は、様々な異なるタイプのメモリを含む任意の数の装置を含
んでもよい。
【0047】
[0051]別の実施形態では、少なくとも2つの異なるタイプのメモリを1つの装置に
集積することができる。例えば、フラッシュMLC及びSLCメモリを1つの装置上で組み合わせることができる。別の例として、2つの異なるタイプのフラッシュMLCを1つの装置に
集積することができる。さらに別の例として、1つの装置でのメモリタイプの混合をプログラム
的に
定めてもよい。
一例では、SLCフラッシュメモリに関連する記憶装置の一部を
定め、MLCフラッシュメモリに関連する記憶装置の一部を
定めてもよい。
【0048】
[0052]特定の例として、特定のアプリケーション又はプログラムからのデータが高頻度で書き込まれると
判断してもよい。この場合、SLC装置を選択してデータを書き込
んでもよい。一方、特定のアプリケーション又はプログラムからのデータ、或いはディスクの特定の場所からのデータ、或いは特定のアクセスパターンからのデータが低頻度で書き込まれると
判断してもよい。この場合、MLC装置を選択してデータを書き込
んでもよい。もちろん、
特定した頻度に基づいて任意の数の装置を選択
してよいので、これは一例に過ぎない。
【0049】
[0053]一実施形態では、寿命推定器モジュールは、記憶バスを介してシステムのコントローラに
伝達されたコマンドを受け取る
ように働いてもよい。寿命推定器モジュールは、頻度を監視する
とともに、バスを介して
受け取ったコマンド(複数可)が実行されたと仮定して、推定寿命を計算
してもよい。もちろん、頻度は様々な方式で求めることができ、寿命推定器モジュールで
特定されるものに限定されない。
【0050】
[0054]様々な実施形態では、上記の実施形態で述べたメモリは、機械式記憶装置(例えば、SATAディスクドライブ、SASディスクドライブ、ファイバチャネルディスクドライブ、IDEディスクドライブ、ATAディスクドライブ、CEディスクドライブ、USBディスクドライブ、スマートカードディスクドライブ、MMCディスクドライブなどを含むディスクドライブ)及び/又は非機械式記憶装置(例えば半導体ベースの記憶装置など)を含
んでよいことに留意されたい。そのような非機械式メモリは、例えば揮発性又は不揮発性メモリを含
んでよい。様々な実施形態では、不揮発性メモリ装置は、フラッシュメモリ(例えば、セル当たり単一ビットNORフラッシュメモリ、セル当たり多ビットNORフラッシュメモリ、セル当たり単一ビットNANDフラッシュメモリ、セル当たり多ビットNANDフラッシュメモリ、マルチレベル及び/又はセル当たり多ビットNANDフラッシュ、大規模ブロックフラッシュメモリ、抵抗型メモリ、相変化メモリ、磁気メモリなど)を含
んでよい。メモリの様々な例を本明細書で述べたが、メモリに対して実施される様々な操作のために寿命が低下する可能性のある任意のタイプのメモリに様々な原理を適用することができることに留意されたい。
【0051】
[0055]
図5は、先の様々な実施形態の様々なアーキテクチャ及び/又は機能を実装することのできる例示的システム500を示す。例えば、例示的システム500は、先の実施形態のうちのいくつかで述べたコンピュータを表
してもよい。さらに、上述の様々な
装置は、システム500の構成要素でもよい。
【0052】
[0056]図示するように、通信バス502に接続される少なくとも1つのホストプロセッサ501を含むシステム500が設けられる。システム500はまた、メインメモリ504をも含む。制御
ロジック(ソフトウェア)及びデータがメインメモリ504内に格納され、メインメモリ504は、ランダムアクセスメモリ(RAM)の形態を取
ってもよい。
【0053】
[0057]システム500はまた、グラフィックスプロセッサ506、及びディスプレイ508すなわちコンピュータモニタをも含むことができる。システム500はまた、2次ストレージ510をも含むことができる。2次ストレージ510は、例えばハードディスクドライブ、及び/又はフロッピィディスクドライブ、磁気テープドライブ、コンパクトディスクドライブなどを表す取外し可能ストレージドライブを含む。取外し可能ストレージドライブは、周知の方式で取外し可能ストレージモジュールから読み取り、及び/又は取外し可能ストレージモジュールに書き込む。
【0054】
[0058]コンピュータプログラム、又はコンピュータ制御論理アルゴリズムは、メインメモリ504及び/又は2次ストレージ510内に格納
されてもよい。そのようなコンピュータプログラムは、実行されたときに、システム500が様々な機能を実施することを可能にする。メモリ504、ストレージ510、及び/又は任意の他のストレージが、コンピュータ可読媒体の可能な例である。
【0055】
[0059]一実施形態では、先の様々な図のアーキテクチャ及び/又は機能は、ホストプロセッサ501、グラフィックスプロセッサ506、2次ストレージ510、ホストプロセッサ501とグラフィックスプロセッサ506の両方の機能の少なくとも一部が可能な集積回路(図示せず)、チップセット(すなわち、関連機能を実施するためのモジュールとして機能するように設計され、販売される一群の集積回路など)、及び/又はそれに関する任意の他の集積回路の状況で実装することができる。
【0056】
[0060]さらに、先の様々な図のアーキテクチャ及び/又は機能は、一般的コンピュータシステム、回路板システム、エンターテイメント目的専用のゲームコンソールシステム、特定用途向けシステム、及び/又は任意の他の所望のシステムの状況で実装することができる。例えば、システム500は、デスクトップコンピュータ、ラップトップコンピュータ、及び/又は任意の他のタイプの論理機構の形態を取ることができる。さらに、システム500は、限定はしないが携帯情報端末(PDA)装置、携帯電話装置、テレビジョンなどを含む様々な他の装置の形態を取ることができる。
【0057】
[0061]さらに、図示していないが、通信のためにシステム500をネットワーク[例えば、遠隔通信ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスネットワーク、インターネットなどの広域ネットワーク(WAN)、ピアツーピアネットワーク、ケーブルネットワークなど]に
接続してもよい。
【0058】
[0062]様々な実施形態を上記で説明したが、それらは限定としてではなく、例示として提示したものであることを理解されたい。したがって、好ましい実施形態の広さ及び範囲は、上述の例示的実施形態のいずれによっても限定されず、以下の特許請求の範囲及びその均等物だけに従って定義されるものとする。
[発明の例]
[例1]
データが書き込まれる頻度を特定するステップと、
前記頻度に基づいて、前記データを書き込むために、相異なるタイプの複数の記憶装置から選択を行うステップとを含む方法。
[例2]
選択を行う前記ステップがさらにしきい値に基づく例1に記載の方法。
[例3]
しきい値を求めるステップをさらに含む例1に記載の方法。
[例4]
前記頻度が前記しきい値を超過する場合、前記データが、第1のタイプの記憶装置に書き込まれる例3に記載の方法。
[例5]
前記第1のタイプの記憶装置がシングルレベルセル(SLC)記憶装置を含む例4に記載の方法。
[例6]
前記頻度が前記しきい値を超過しない場合、前記データが、第2のタイプの記憶装置に書き込まれる例4に記載の方法。
[例7]
前記第1のタイプの記憶装置がマルチレベルセル(MLC)記憶装置を含む例4に記載の方法。
[例8]
前記頻度が寿命推定器モジュールによって監視される例1に記載の方法。
[例9]
前記寿命推定器モジュールが、前記記憶装置の推定寿命を計算する例8に記載の方法。
[例10]
前記寿命推定器モジュールが、記憶コマンドに基づいて前記記憶装置の推定寿命を計算する例8に記載の方法。
[例11]
前記記憶装置が機械式記憶装置を含む例1に記載の方法。
[例12]
前記機械式記憶装置がディスクドライブを含む例11に記載の方法。
[例13]
前記記憶装置が固体記憶装置を含む例1に記載の方法。
[例14]
前記固体記憶装置がフラッシュメモリを含む例13に記載の方法。
[例15]
前記フラッシュメモリがNANDフラッシュメモリを含む例14に記載の方法。
[例16]
前記記憶装置のうちの少なくとも1つが、シングルレベルセル(SLC)フラッシュメモリ及びマルチレベルセル(MLC)フラッシュメモリを同一の記憶装置上に含む例1に記載の方法。
[例17]
前記シングルレベルセル(SLC)フラッシュメモリに関連する前記少なくとも1つの記憶装置の一部と、前記マルチレベルセル(MLC)フラッシュメモリに関連する前記少なくとも1つの記憶装置の一部とを定めるステップをさらに含む例16に記載の方法。
[例18]
前記記憶装置のうちの少なくとも1つが、2つの異なるタイプのシングルレベルセル(SLC)フラッシュメモリ装置を同一の記憶装置上に含む例1に記載の方法。
[例19]
前記記憶装置が揮発性メモリを含む例1に記載の方法。
[例20]
前記記憶装置が不揮発性メモリを含む例1に記載の方法。
[例21]
コンピュータ可読媒体上で実施されるコンピュータプログラム製品であって、
データが書き込まれる頻度を特定し、
前記頻度に基づいて、前記データを書き込むために、相異なるタイプの複数の記憶装置から選択を行うコンピュータコードを含む、コンピュータプログラム製品。
[例22]
データが書き込まれる頻度を特定し、前記頻度に基づいて、前記データを書き込むために、相異なるタイプの複数の記憶装置から選択を行う回路を備える装置。
[例23]
前記回路が、システムとメモリとの間に結合される例22に記載の装置。