JP2011503741A5 - - Google Patents
Download PDFInfo
- Publication number
- JP2011503741A5 JP2011503741A5 JP2010534015A JP2010534015A JP2011503741A5 JP 2011503741 A5 JP2011503741 A5 JP 2011503741A5 JP 2010534015 A JP2010534015 A JP 2010534015A JP 2010534015 A JP2010534015 A JP 2010534015A JP 2011503741 A5 JP2011503741 A5 JP 2011503741A5
- Authority
- JP
- Japan
- Prior art keywords
- blocks
- block
- memory
- score
- life
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 description 8
- 230000000875 corresponding Effects 0.000 description 6
- 210000003414 Extremities Anatomy 0.000 description 4
- 239000003795 chemical substances by application Substances 0.000 description 2
- 238000010420 art technique Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 230000002596 correlated Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 230000004059 degradation Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000000265 homogenisation Methods 0.000 description 1
- 238000002156 mixing Methods 0.000 description 1
- 230000002093 peripheral Effects 0.000 description 1
- 238000005201 scrubbing Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000001960 triggered Effects 0.000 description 1
Images
Description
[0001]本発明はメモリに関し、より詳細には、有限の寿命を有するメモリに関する。
[0002]メモリは、現代の企業コンピューティングシステムの性能の最も制限的な側面の1つである。メモリの1つの制限的な側面は、多くのタイプのメモリが限られた寿命を示すことである。例えば、フラッシュなどの不揮発性メモリの寿命は、消去され、再書込みされるごとに低下する。時間の経過、並びに数千回の消去及び再書込みに伴い、そのようなフラッシュメモリの信頼性が次第に低下する可能性がある。
[0003]メモリ寿命の低下を低減する1つの一般的な従来技術の技法は、ウェアレベリングである。ウェアレベリングは、記憶装置内の各ブロックを概ね等しい回数だけ消去し、書き込むことを可能にする。これにより、あるブロックがより頻繁に使用され、寿命の終わりに達し、使用を中止しなければならない状況が回避される。この手法は、装置全体の記憶容量を低下させる。記憶装置は予備ブロックを有しているかもしれないが、予備ブロックは使い果たされ、装置の記憶容量が低下して、記憶装置を使用できなくなる。
[0004]メモリベンダはしばしば、一定の割合のメモリの寿命期待値を保証する。例えば、フラッシュメモリベンダは、100000回のプログラム及び消去サイクルの後に(すなわち耐久性)、誤り訂正要件の超過に基づいて使用不能となるブロックが1%未満であることを保証するかもしれない。この場合、誤り訂正条件は、フラッシュ装置について512バイト当たり1ビットの誤りを訂正するように設定されるかもしれない。最近開発された装置には、ずっと低い耐久性を有するものもある。こうした装置は、より大きい誤り訂正条件を必要とする。
[0005]さらに、メモリブロックの寿命は互いに異なることがある。したがって、プログラム消去サイクルの数が平準化されるウェアレベリングを使用すると、記憶装置は、指定の割合のブロック(例えば1%)だけが不良となったときに寿命の終わりに達することがある。しかし、記憶装置に含まれる大部分のブロックがまだ動作可能な場合がある。
[0006]したがって、こうした問題及び/又は従来技術に関連する他の問題に対処することが求められている。
[0007]メモリの複数のブロックの寿命を向上させるシステム、方法、及びコンピュータプログラム製品を提供する。動作の際に、メモリの複数のブロックの寿命に影響を及ぼす少なくとも1つの因子を特定する。さらに、その少なくとも1つの因子に基づいて、書込み用の複数のブロックを選択する。
[0013]図1は、一実施形態による、メモリの複数のブロックの寿命を向上させる方法100を示す。図示するように、メモリの複数のブロックの寿命に影響を及ぼす少なくとも1つの因子を特定する。工程102を参照されたい。さらに、その少なくとも1つの因子に基づいて、書込み用の複数のブロックを選択する。工程104を参照されたい。
[0014]この説明の状況では、メモリの寿命は、メモリが任意の所望の程度のユーザビリティを示す任意の期間を含んでもよい。例えば、様々な実施形態では、そのような寿命は、全く限定はしないが、希望寿命、実寿命、推定寿命などを含んでもよい。さらに、ユーザビリティの程度は、依然として動作可能な構成要素(例えば、ブロック、セルなど)の割合、メモリ又はその構成要素の信頼性、並びに/或いはそれに関する任意の他のパラメータなどの任意のユーザビリティ関連パラメータを指してもよい。
[0015]さらに、様々な実施形態では、メモリは、限定はしないが、機械式記憶装置(例えばディスクドライブなど)、固体記憶装置(例えば、ダイナミックランダムアクセスメモリ(DRAM)、フラッシュメモリなど)、及び/又は任意の他の記憶装置を含んでもよい。メモリがフラッシュメモリを含む場合、フラッシュメモリは、限定はしないが、シングルレベルセル(SLC)装置、マルチレベルセル(MLC)装置、NORフラッシュメモリ、NANDフラッシュメモリ、MLC NANDフラッシュメモリ、SLC NANDフラッシュメモリなどを含んでもよい。一実施形態では、不揮発性メモリ装置は、セル当たり単一ビットNORフラッシュメモリ、セル当たり多ビットNORフラッシュメモリ、セル当たり単一ビットNANDフラッシュメモリ、及びセル当たり多ビットNANDフラッシュメモリのうちの少なくとも1つを含んでもよい。
[0016]さらに、この説明の状況では、因子は、メモリブロックの寿命に直接的又は間接的に影響を及ぼす可能性のある任意の因子を含んでもよい。例えば、様々な実施形態では、因子は、限定はしないが、メモリのブロックのうちの少なくとも1つに関係する読出し操作中の誤り(例えば、検出済み誤り、訂正済み誤りなど)の数、メモリのブロックのうちの少なくとも1つに関係するプログラム操作と読出し操作との間の期間、メモリのブロックのうちの少なくとも1つを消去する回数、メモリのブロックのうちの少なくとも1つを消去するのに必要な期間、メモリのブロックのうちの少なくとも1つをプログラムするのに必要な期間、メモリのブロックのうちの少なくとも1つをプログラムするのに必要な再試行の数、メモリのブロックのうちの少なくとも1つの1ページの介在読出しの数、隣接するページでの介在読出しの数、メモリの構造及び編成、並びに/或いは上記の定義を満たす任意の他の因子を含むことができる。一つの選択肢として、メモリのブロックの使用履歴を記憶してもよい。この場合、使用履歴を使用して、因子を決定してもよい。
[0017]次に、ユーザの要望に従って上記のフレームワークがそれと共に実装されることがあり、又は実装されないことのある様々な任意選択のアーキテクチャ及び機能に関するより例示的な情報を説明する。以下の情報は、例示のために説明されるものであり、いかなる形でも限定として解釈されるべきでないことに強く留意されたい。以下の機能のいずれかを、説明される他の機能を除外して、又は除外することなく任意選択的に組み込んでよい。
[0018]図2は、別の実施形態による、メモリの複数のブロックの寿命を向上させる技法200を示す。一つの選択肢として、この技法200は、図1の詳細の状況で実装することができる。しかし、もちろん技法200は任意の所望の環境で実装することができる。上述の定義は、この説明を通じて適用することができることにも留意されたい。
[0019]図示するように、複数のメモリブロック204の耐久性202を監視してもよい。この場合、図2の棒は、特定のブロック204についての書込み数を表す。この説明の状況では、耐久性202は、各メモリブロック204についての書込み及び消去サイクルの数を指す。したがって、耐久性202は、メモリブロック204の使用量に対応する。一実施形態では、書込み及び/又は消去の数を監視及び記録してもよい。
[0020]ブロック204の書込み数を監視することにより、どのブロックがより頻繁に使用されたかを判断してもよい。一実施形態では、監視を使用して、ブロック204のいずれかについての書込み数がしきい値206を超えたかどうかを判断してもよい。さらに、そのような監視によって使用量を均一化し、それによって、あるブロックについての書込み数がしきい値206に達したときに、しきい値206未満の他のブロックを書込みのために使用できるようにしてもよい。例えば、ブロックが書込み及び再利用(リサイクル)される順序を変更して、ブロック間の耐久性値の差を最小限に抑えてもよい。
[0021]動作の際に、メモリの複数のブロック204の寿命に影響を及ぼす少なくとも1つの因子を特定及び/又は監視してもよい。その場合、その少なくとも1つの因子に基づいて、書き込み用の複数のブロックを選択してもよい。様々な実施形態では、寿命の観点からブロック204の状態を示す複数の因子が存在してもよい。一実施形態では、因子は、各ブロック204に関連する訂正済み誤りの数を含んでいてもよい。そのような訂正済み誤りは、例えばデータの読出しに対応していてもよい。
[0022]様々なケースでは、因子は、複数の別の因子の影響を受けることがある。例えば、訂正済み誤りの数は、プログラム操作から読出しまでどれだけの時間が経過したか、及び読出しを何回実行したかに影響を受けることがある。さらに、ブロックを消去及びプログラムする回数も、訂正済み誤りの数に影響を与えることがある。
[0023]もちろん、他の多数の因子も、訂正した誤りの数に影響を及ぼすことがある。様々な実施形態では、因子は、ブロック204の使用の期間、書込みの頻度、操作率、操作の総許容数、及び寿命の期間などに対応していてもよい。もちろん、このような例示的態様は例示のために説明したに過ぎない。因子は、メモリのブロックの寿命期待値に影響を及ぼす可能性のある任意の特徴に対応してよいからである。
[0024]一実施形態では、スコアを使用して、ブロック204が書き込み及び再利用される順序を変更するかどうかを判断してもよい。例えば、各ブロック204は、少なくとも1つの因子に基づく、対応するスコア関数を有していてもよい。スコア関数を使用して、各ブロック204についてのスコアを求めてもよい。
[0025]このスコアを使用して、ブロック204のスコア関数間の値の差を最小限に抑えてもよい。1つの選択肢として、スコアは、ブロック204の寿命に影響を及ぼす1つの因子に基づいていてもよい。別の選択肢として、スコアは、ブロック204の寿命に影響を及ぼす複数の因子に基づいていてもよい。
[0026]例えば、2つのメモリブロックの場合、一方のメモリブロックがしきい値206を超えるスコアを有することがあり、一方がしきい値206未満のスコアを有することがある。この場合、各スコアは、ブロックの寿命に影響を及ぼす少なくとも1つの因子に対応していてよい。スコアは、上記のように任意の数の因子に対応していてよいことに留意されたい。
[0027]一実施形態では、スコアは、ブロックの寿命期待値に関する少なくとも1つの因子に対応する値を示してもよい。この場合、値の差は、ブロックの寿命期待値の差を反映してもよい。こうして、2つのブロックを均一化することができる。
[0028]一実施形態では、均一化は、しきい値206未満のブロックを使用する(例えば書き込む)と共に、しきい値206を超えるブロックを使用しないことを含んでもよい。このことを、2つのブロックが等しい値、又はほぼ等しい値に対応する時点まで行ってもよい。その時点になったら、しきい値206を上げて、両方のメモリブロックを使用してもよい。
[0029]当初、すべてのブロック204はしきい値206未満でもよい。あるブロックがしきい値206を超過したら、そのブロックを、しきい値206を超えたブロックとしてラベル付けし、或いは他の方法で特定してもよい。その場合、しきい値206未満のブロック204がしきい値206に達し、又はしきい値206を超過するまで、しきい値206未満のブロック204を使用してもよい。
[0030]このことを、しきい値206未満のすべてのブロック204が使い果たされるまで続行してもよい。使い果たされた時点で、すべての既存のブロック204が新しいしきい値未満となるように新しいしきい値を設定してもよい。このことを、ブロック204の寿命全体を通して反復してもよい。
[0031]1つの選択肢として、消去され書込みされるブロック204の総量を最小限に抑えるために、ブロック204間のばらつきが均一化される間、あるカウント割合の空きスペースを利用してもよい。さらに、様々な他の技法を使用して、ブロック間のばらつきを均一化(すなわちブロック再生)すると共に、消去及び書込みされるブロックの総量を最小限に抑えてもよい。さらに、様々な他の均一化技法を使用してブロック204間のばらつきを均一化してもよい。
[0032]一実施形態では、システムで複数のメモリモジュールを使用してもよい。この場合、メモリモジュールは、相異なる寿命を有するメモリモジュールを含むことができる。したがって、システムの全メモリ寿命は、最小の寿命を有するメモリモジュールに限定されるのではなく、最大でメモリの寿命の合計であってもよい。
[0033]一実施形態では、寿命推定器モジュールが、記憶バスを介してシステムのコントローラに通信されたコマンドを受け取るように動作してもよい。寿命推定器モジュールは、バスを介して受け取ったコマンドが実行されたと仮定して、推定寿命を計算してもよい。一実施形態では、寿命推定器を使用して、メモリブロック204の寿命に影響を及ぼす書込み数及び/又は他の因子を監視してもよい。厳密に任意選択として、寿命推定器モジュールを使用してしきい値206を設定してもよい。
[0034]もちろん、様々な技法を使用してしきい値206を設定してもよい。一実施形態では、しきい値206は所定のしきい値でよい。別の実施形態では、しきい値206を動的に設定してもよい。1つの選択肢として、しきい値は、メモリブロック206のうちの少なくとも1つに関連する装置の寿命(例えば期待寿命、希望寿命など)に直接的に相関してもよい。
[0035]一実施形態では、コストを削減し、性能を改善するために、記憶装置内冗長機能を使用してもよい。そのような実施形態では、個々の記憶装置間で、記憶装置の寿命に関連する任意の因子に基づいてデータを移動してもよい。例えば、状況が、記憶装置のうちの第1の記憶装置が1組のデータを含み、その1組のデータが記憶装置のうちの第2の記憶装置のデータに対してより頻繁に上書きされることを含んでもよい。そのような場合、寿命に関連する少なくとも1つの因子のしきい値を超過した後は、そのようなデータを第1記憶装置から第2記憶装置に移動し、それ以降は、第1記憶装置又は第1記憶装置の1つ又は複数のブロック/モジュールを、あまり頻繁に書き込まれないデータを格納するために使用してもよいし、あるいは今後使用しないようにしてもよい。
[0036]この目的のため、記憶装置寿命を適切に分散させて、ある記憶装置又は記憶装置の一部がグループの他の記憶装置に比べて非常に早い時点で故障することを回避してもよい。もちろん、この技法は、相異なる記憶装置の間だけでなく、記憶装置の各部分の間でも適用してもよい。この目的で、任意のメモリ構成要素の寿命をそのような方式で管理してもよい。
[0037]図3は、別の実施形態による、メモリの複数のブロックの寿命を向上させる方法300を示す。1つの選択肢として、この方法300は、図1〜2の機能の状況で実施することができる。しかし、もちろん方法300は任意の所望の環境で実施してもよい。上述の定義は、本説明を通じて適用することができることにも留意されたい。
[0038]図示するように、メモリのすべてのブロックがしきい値未満となるようにしきい値を定義する。工程302を参照されたい。一実施形態では、しきい値は、ブロックの使用量に対応していてもよい。例えば、ブロックが使用されるにつれて、それらのブロックに関連する使用量の値が、しきい値に近づいてもよい。別の実施形態では、しきい値は、ブロックのセットの寿命期待値に関連する少なくとも1つの他の因子に対応してもよい。
[0039]例えば、しきい値は、ブロックに関する訂正済み誤りの数に対応していてもよい。この場合、複数のブロックが使用されるにつれて、それらのブロックに関連する訂正済み誤りの数の値がしきい値に近づいてもよい。もちろん、しきい値は、ブロックの寿命に影響を及ぼす任意の数の因子に対応していてもよい。
[0040]各ブロックが下回る初期しきい値が特定されると、ブロックを再生(reclaim)する必要があるかどうかを判断する。工程304を参照されたい。例えば、ブロック又はブロックのグループがしきい値を超えており、又は他のブロックに対して不均衡に使用されていることを因子が示す場合に、1つ又は複数のブロックを再生する必要があると判断してもよい。
[0041]この説明の状況では、ブロック再生(block reclaiming)は、ガーベッジコレクション、読出し妨害、スクラビング、訂正済み誤りの数、又は他のイベントでトリガすることができ、少なくとも1つの因子に基づいてブロック間のばらつきを均一化することを指す。例えば、様々な実施形態では、ブロック再生は、読出し/書込み中に検出された誤りの数、読出し/書込み中に訂正された誤りの数、ブロックを消去するための時間の長さ、ブロックをプログラムするための時間の長さ、プログラミング中に使用されるエントリの数、ページの介在読出しの数、隣接するページでの介在読出しの数、ブロックの消去及びプログラムサイクルの数、及び/又は任意の他の因子に基づいてブロック間のばらつきを均一化することを含んでよい。
[0042]ブロックを再生する必要があると判断した場合、しきい値未満のブロックセット内のブロックを書込みのために割り振る。工程306を参照されたい。例えば、しきい値を超えるブロックセット内のブロック(複数可)ではなく、しきい値未満のブロックをメモリ操作で使用してもよい。
[0043]しきい値未満のブロックセット内のブロック(複数可)を書込みのために割り振った後は、しきい値を超えるブロックがあるかどうかを判断する。工程308を参照されたい。例えば、ブロックがしきい値を超過すると判断するまで、しきい値未満のブロックセット内のブロックに書込みを行ってもよい。
[0044]ブロックがしきい値を超過したと判断した場合、しきい値を超えるブロックに対応するブロックのセット内にブロックを配置してもよい。工程310を参照されたい。ブロックがしきい値を超過していない場合、ブロックは、しきい値未満のブロックセット内にとどまることができ、引き続き使用することができる。
[0045]次いで、しきい値未満のブロックのすべてが使い果たされたかどうかを判断する。工程312を参照されたい。言い換えれば、しきい値未満のブロックに対応するブロックのセット内のすべてのブロックが、しきい値を超えるブロックに対応するブロックのセットに含まれているかどうかを判断する。
[0046]しきい値未満のすべてのブロックが使い果たされた場合、新しいしきい値を設定し、すべての既存のブロックをその新しいしきい値未満となるように定義する。工程314を参照されたい。新しいしきい値を設定した後は、ブロックを再生する必要があるかどうかを再び判断する。1つの選択肢として、これをメモリブロックの寿命にわたって続行してもよい。
[0047]新しいしきい値及び初期しきい値は、様々な基準に基づいて設定できることに留意されたい。例えば、しきい値は、ブロックの予想使用量に基づいて設定してもよい。一実施形態では、しきい値は所定のしきい値でもよい。別の実施形態では、しきい値は、メモリブロック使用量に基づいて決定してもよい。
[0048]図4は、一実施形態による、書込み頻度に基づいて様々な記憶装置にデータを書き込む方法400を示す。1つの選択肢として、この方法400は、図1〜3の機能及びアーキテクチャの状況で実施することができる。しかし、もちろん方法400は任意の所望の環境で実装することができる。上述の定義は、本説明を通じて適用することができることにも留意されたい。
[0049]図示するように、データが書き込まれる頻度を特定する。工程402を参照されたい。さらに、頻度に基づいて、データを書き込むために相異なるタイプの複数の記憶装置から選択を行う。工程404を参照されたい。
[0050]一実施形態では、選択はしきい値に基づいてもよい。例えば、データが書き込まれる頻度がしきい値を超過する場合、一定の記憶装置を選択してデータを書き込んでもよい。1つの選択肢として、この相異なるタイプの記憶装置は、SLC及びMLC装置、相異なる耐久性を有するMLC同士、SLC及びDRAM、並びにMLC及びDRAMを含んでもよい。もちろん、様々な別の実施形態では、この相異なるタイプの記憶装置は、様々な異なるタイプのメモリを含む任意の数の装置を含んでもよい。
[0051]別の実施形態では、少なくとも2つの異なるタイプのメモリを1つの装置に集積することができる。例えば、フラッシュMLC及びSLCメモリを1つの装置上で組み合わせることができる。別の例として、2つの異なるタイプのフラッシュMLCを1つの装置に集積することができる。さらに別の例として、1つの装置でのメモリタイプの混合をプログラム的に定めてもよい。一例では、SLCフラッシュメモリに関連する記憶装置の一部を定め、MLCフラッシュメモリに関連する記憶装置の一部を定めてもよい。
[0052]特定の例として、特定のアプリケーション又はプログラムからのデータが高頻度で書き込まれると判断してもよい。この場合、SLC装置を選択してデータを書き込んでもよい。一方、特定のアプリケーション又はプログラムからのデータ、或いはディスクの特定の場所からのデータ、或いは特定のアクセスパターンからのデータが低頻度で書き込まれると判断してもよい。この場合、MLC装置を選択してデータを書き込んでもよい。もちろん、特定した頻度に基づいて任意の数の装置を選択してよいので、これは一例に過ぎない。
[0053]一実施形態では、寿命推定器モジュールは、記憶バスを介してシステムのコントローラに伝達されたコマンドを受け取るように働いてもよい。寿命推定器モジュールは、頻度を監視するとともに、バスを介して受け取ったコマンド(複数可)が実行されたと仮定して、推定寿命を計算してもよい。もちろん、頻度は様々な方式で求めることができ、寿命推定器モジュールで特定されるものに限定されない。
[0054]様々な実施形態では、上記の実施形態で述べたメモリは、機械式記憶装置(例えば、SATAディスクドライブ、SASディスクドライブ、ファイバチャネルディスクドライブ、IDEディスクドライブ、ATAディスクドライブ、CEディスクドライブ、USBディスクドライブ、スマートカードディスクドライブ、MMCディスクドライブなどを含むディスクドライブ)及び/又は非機械式記憶装置(例えば半導体ベースの記憶装置など)を含んでよいことに留意されたい。そのような非機械式メモリは、例えば揮発性又は不揮発性メモリを含んでよい。様々な実施形態では、不揮発性メモリ装置は、フラッシュメモリ(例えば、セル当たり単一ビットNORフラッシュメモリ、セル当たり多ビットNORフラッシュメモリ、セル当たり単一ビットNANDフラッシュメモリ、セル当たり多ビットNANDフラッシュメモリ、マルチレベル及び/又はセル当たり多ビットNANDフラッシュ、大規模ブロックフラッシュメモリ、抵抗型メモリ、相変化メモリ、磁気メモリなど)を含んでよい。メモリの様々な例を本明細書で述べたが、メモリに対して実施される様々な操作のために寿命が低下する可能性のある任意のタイプのメモリに様々な原理を適用することができることに留意されたい。
[0055]図5は、先の様々な実施形態の様々なアーキテクチャ及び/又は機能を実装することのできる例示的システム500を示す。例えば、例示的システム500は、先の実施形態のうちのいくつかで述べたコンピュータを表してもよい。さらに、上述の様々な装置は、システム500の構成要素でもよい。
[0056]図示するように、通信バス502に接続される少なくとも1つのホストプロセッサ501を含むシステム500が設けられる。システム500はまた、メインメモリ504をも含む。制御ロジック(ソフトウェア)及びデータがメインメモリ504内に格納され、メインメモリ504は、ランダムアクセスメモリ(RAM)の形態を取ってもよい。
[0057]システム500はまた、グラフィックスプロセッサ506、及びディスプレイ508すなわちコンピュータモニタをも含むことができる。システム500はまた、2次ストレージ510をも含むことができる。2次ストレージ510は、例えばハードディスクドライブ、及び/又はフロッピィディスクドライブ、磁気テープドライブ、コンパクトディスクドライブなどを表す取外し可能ストレージドライブを含む。取外し可能ストレージドライブは、周知の方式で取外し可能ストレージモジュールから読み取り、及び/又は取外し可能ストレージモジュールに書き込む。
[0058]コンピュータプログラム、又はコンピュータ制御論理アルゴリズムは、メインメモリ504及び/又は2次ストレージ510内に格納されてもよい。そのようなコンピュータプログラムは、実行されたときに、システム500が様々な機能を実施することを可能にする。メモリ504、ストレージ510、及び/又は任意の他のストレージが、コンピュータ可読媒体の可能な例である。
[0059]一実施形態では、先の様々な図のアーキテクチャ及び/又は機能は、ホストプロセッサ501、グラフィックスプロセッサ506、2次ストレージ510、ホストプロセッサ501とグラフィックスプロセッサ506の両方の機能の少なくとも一部が可能な集積回路(図示せず)、チップセット(すなわち、関連機能を実施するためのモジュールとして機能するように設計され、販売される一群の集積回路など)、及び/又はそれに関する任意の他の集積回路の状況で実装することができる。
[0060]さらに、先の様々な図のアーキテクチャ及び/又は機能は、一般的コンピュータシステム、回路板システム、エンターテイメント目的専用のゲームコンソールシステム、特定用途向けシステム、及び/又は任意の他の所望のシステムの状況で実装することができる。例えば、システム500は、デスクトップコンピュータ、ラップトップコンピュータ、及び/又は任意の他のタイプの論理機構の形態を取ることができる。さらに、システム500は、限定はしないが携帯情報端末(PDA)装置、携帯電話装置、テレビジョンなどを含む様々な他の装置の形態を取ることができる。
[0061]さらに、図示していないが、通信のためにシステム500をネットワーク[例えば、遠隔通信ネットワーク、ローカルエリアネットワーク(LAN)、ワイヤレスネットワーク、インターネットなどの広域ネットワーク(WAN)、ピアツーピアネットワーク、ケーブルネットワークなど]に接続してもよい。
[0062]様々な実施形態を上記で説明したが、それらは限定としてではなく、例示として提示したものであることを理解されたい。したがって、好ましい実施形態の広さ及び範囲は、上述の例示的実施形態のいずれによっても限定されず、以下の特許請求の範囲及びその均等物だけに従って定義されるものとする。
Claims (22)
- メモリの複数のブロックの各々についての寿命期待値スコアを、前記ブロックの各々の空きスペースのカウント割合に少なくとも部分的に基づいて計算するステップと、
前記寿命期待値スコアの少なくとも一部に少なくとも部分的に基づいて、前記ブロックの書込み及び再利用の順序を決定するステップとを含み、
前記ブロック間の寿命期待値スコアのばらつきが均一化される間、消去及び書込みされる前記ブロックの総量が最小限に抑えられる、方法。 - 前記計算するステップが、前記ブロックの各々に関係する読出し操作中の誤りの数に更に少なくとも部分的に基づいている請求項1に記載の方法。
- 前記誤りが、検出済みの誤りである請求項2に記載の方法。
- 前記誤りが、訂正済みの誤りである請求項2に記載の方法。
- 前記計算するステップが、前記ブロックの各々に関係するプログラム操作と読出し操作との間の期間に更に少なくとも部分的に基づいている請求項1に記載の方法。
- 前記計算するステップが、前記ブロックの各々が消去される回数に更に少なくとも部分的に基づいている請求項1に記載の方法。
- 前記計算するステップが、前記ブロックの各々を消去するのに必要な期間に更に少なくとも部分的に基づいている請求項1に記載の方法。
- 前記計算するステップが、前記ブロックの各々をプログラムするのに必要な期間に更に少なくとも部分的に基づいている請求項1に記載の方法。
- 前記計算するステップが、前記ブロックの各々をプログラムするのに必要な再試行の数に更に少なくとも部分的に基づいている請求項1に記載の方法。
- 前記計算するステップが、前記ブロックの各々に関連するページの介在読出しの数に更に少なくとも部分的に基づいている請求項1に記載の方法。
- 前記計算するステップが、前記ブロックの各々に関連する、隣接するページでの介在読出しの数に更に少なくとも部分的に基づいている請求項1に記載の方法。
- 前記ブロックのうち、より長い推定寿命を有する第1ブロックが、前記ブロックのうち、より短い推定寿命を有する第2ブロックよりも前に書き込まれる請求項1に記載の方法。
- 前記ブロックのうち、より短い推定寿命を有する前記第2ブロックについての前記寿命期待値スコアが、寿命期待値スコアのために設定されたしきい値を超える請求項12に記載の方法。
- 前記ブロックのうち、より長い推定寿命を有する前記第1ブロックについての寿命期待値スコアが、前記寿命期待値スコアのために設定された前記しきい値未満である請求項13に記載の方法。
- 前記メモリが機械式記憶装置を含む請求項1に記載の方法。
- 前記メモリが揮発性メモリ装置を含む請求項1に記載の方法。
- 前記メモリが不揮発性メモリ装置を含む請求項1に記載の方法。
- 前記不揮発性メモリ装置が、セル当たり単一ビットNORフラッシュメモリ、セル当たり多ビットNORフラッシュメモリ、セル当たり単一ビットNANDフラッシュメモリ、及びセル当たり多ビットNANDフラッシュメモリのうちの少なくとも1つを含む請求項17に記載の方法。
- 前記複数のブロックの使用履歴を記憶するステップをさらに含む請求項1に記載の方法。
- メモリの複数のブロックの各々についての寿命期待値スコアを、前記ブロックの各々の空きスペースのカウント割合に少なくとも部分的に基づいて計算する手段と、
前記寿命期待値スコアの少なくとも一部に少なくとも部分的に基づいて、前記ブロックの書込み及び再利用の順序を決定する手段とを備え、
前記ブロック間の寿命期待値スコアのばらつきが均一化される間、消去及び書込みされる前記ブロックの総量が最小限に抑えられる、装置。 - 前記メモリが不揮発性メモリ装置を含む請求項20に記載の装置。
- 前記不揮発性メモリ装置が、セル当たり単一ビットNORフラッシュメモリ、セル当たり多ビットNORフラッシュメモリ、セル当たり単一ビットNANDフラッシュメモリ、及びセル当たり多ビットNANDフラッシュメモリのうちの少なくとも1つを含む請求項21に記載の装置。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/942,631 US7903486B2 (en) | 2007-11-19 | 2007-11-19 | System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory |
PCT/US2008/012044 WO2009067139A1 (en) | 2007-11-19 | 2008-10-23 | Increasing a lifetime of a plurality of blocks of memory |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014168546A Division JP2014241158A (ja) | 2007-11-19 | 2014-08-21 | メモリの複数のブロックの寿命の向上 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2011503741A JP2011503741A (ja) | 2011-01-27 |
JP2011503741A5 true JP2011503741A5 (ja) | 2011-12-15 |
Family
ID=40641792
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010534015A Pending JP2011503741A (ja) | 2007-11-19 | 2008-10-23 | メモリの複数のブロックの寿命の向上 |
JP2014168546A Pending JP2014241158A (ja) | 2007-11-19 | 2014-08-21 | メモリの複数のブロックの寿命の向上 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014168546A Pending JP2014241158A (ja) | 2007-11-19 | 2014-08-21 | メモリの複数のブロックの寿命の向上 |
Country Status (5)
Country | Link |
---|---|
US (10) | US7903486B2 (ja) |
JP (2) | JP2011503741A (ja) |
CN (1) | CN101874240B (ja) |
TW (1) | TWI474335B (ja) |
WO (1) | WO2009067139A1 (ja) |
Families Citing this family (112)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7809900B2 (en) * | 2006-11-24 | 2010-10-05 | Sandforce, Inc. | System, method, and computer program product for delaying an operation that reduces a lifetime of memory |
US7747813B2 (en) * | 2006-11-24 | 2010-06-29 | Sandforce, Inc. | Multi-memory device system and method for managing a lifetime thereof |
US7904619B2 (en) | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for reducing memory write operations using difference information |
US7904672B2 (en) | 2006-12-08 | 2011-03-08 | Sandforce, Inc. | System and method for providing data redundancy after reducing memory writes |
US7849275B2 (en) | 2007-11-19 | 2010-12-07 | Sandforce, Inc. | System, method and a computer program product for writing data to different storage devices based on write frequency |
US7903486B2 (en) | 2007-11-19 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory |
US9183133B2 (en) | 2007-11-28 | 2015-11-10 | Seagate Technology Llc | System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory |
KR100954039B1 (ko) * | 2008-08-11 | 2010-04-20 | (주)인디링스 | 플래시 메모리 제어 방법 및 제어 장치 |
US8082386B2 (en) * | 2008-10-21 | 2011-12-20 | Skymedi Corporation | Method of performing wear leveling with variable threshold |
KR101586047B1 (ko) | 2009-03-25 | 2016-01-18 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그것의 프로그램 방법 |
US8140712B2 (en) * | 2009-07-17 | 2012-03-20 | Sandforce, Inc. | System, method, and computer program product for inserting a gap in information sent from a drive to a host device |
US8516166B2 (en) | 2009-07-20 | 2013-08-20 | Lsi Corporation | System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory |
US8438361B2 (en) * | 2010-03-10 | 2013-05-07 | Seagate Technology Llc | Logical block storage in a storage device |
US8458417B2 (en) * | 2010-03-10 | 2013-06-04 | Seagate Technology Llc | Garbage collection in a storage device |
US8725931B1 (en) | 2010-03-26 | 2014-05-13 | Western Digital Technologies, Inc. | System and method for managing the execution of memory commands in a solid-state memory |
US9183134B2 (en) | 2010-04-22 | 2015-11-10 | Seagate Technology Llc | Data segregation in a storage device |
US8782327B1 (en) | 2010-05-11 | 2014-07-15 | Western Digital Technologies, Inc. | System and method for managing execution of internal commands and host commands in a solid-state memory |
US9026716B2 (en) | 2010-05-12 | 2015-05-05 | Western Digital Technologies, Inc. | System and method for managing garbage collection in solid-state memory |
US9170933B2 (en) * | 2010-06-28 | 2015-10-27 | International Business Machines Corporation | Wear-level of cells/pages/sub-pages/blocks of a memory |
US9021192B1 (en) | 2010-09-21 | 2015-04-28 | Western Digital Technologies, Inc. | System and method for enhancing processing of memory access requests |
US9164886B1 (en) | 2010-09-21 | 2015-10-20 | Western Digital Technologies, Inc. | System and method for multistage processing in a memory storage subsystem |
JP2012089085A (ja) * | 2010-10-22 | 2012-05-10 | Toshiba Corp | 半導体メモリ装置および半導体メモリシステム |
KR101467939B1 (ko) | 2011-04-26 | 2014-12-02 | 엘에스아이 코포레이션 | 비휘발성 저장부에 대한 가변 오버프로비저닝 |
KR101861184B1 (ko) | 2011-11-02 | 2018-05-28 | 삼성전자주식회사 | 스토리지의 동작 성능 조절방법 및 그에 따른 반도체 저장장치 |
KR20130061967A (ko) * | 2011-12-02 | 2013-06-12 | 삼성전자주식회사 | 메모리 시스템 및 그것의 웨어 레벨링 방법 |
TWI455140B (zh) * | 2012-02-21 | 2014-10-01 | Fluiditech Ip Ltd | Flash memory usage period assessment method |
US11232093B2 (en) * | 2012-03-02 | 2022-01-25 | Pure Storage, Inc. | Slice migration in a dispersed storage network |
US20130262942A1 (en) * | 2012-03-27 | 2013-10-03 | Yung-Chiang Chu | Flash memory lifetime evaluation method |
CN102915764A (zh) * | 2012-09-04 | 2013-02-06 | 邹粤林 | 提高闪存芯片缺陷容忍度的方法、闪存存储系统及其控制器 |
US9329948B2 (en) | 2012-09-15 | 2016-05-03 | Seagate Technology Llc | Measuring cell damage for wear leveling in a non-volatile memory |
US9652376B2 (en) * | 2013-01-28 | 2017-05-16 | Radian Memory Systems, Inc. | Cooperative flash memory control |
KR102089532B1 (ko) | 2013-02-06 | 2020-03-16 | 삼성전자주식회사 | 메모리 컨트롤러, 메모리 시스템 및 메모리 시스템의 동작 방법 |
CN104008061B (zh) * | 2013-02-22 | 2018-01-23 | 华为技术有限公司 | 内存回收方法及装置 |
US8976589B2 (en) | 2013-03-14 | 2015-03-10 | Kabushiki Kaisha Toshiba | Storage device |
GB2514354A (en) * | 2013-05-20 | 2014-11-26 | Ibm | Managing storage devices having a lifetime of a finite number of operations |
US9501393B2 (en) | 2014-01-27 | 2016-11-22 | Western Digital Technologies, Inc. | Data storage system garbage collection based on at least one attribute |
CN104866429B (zh) * | 2014-02-26 | 2018-02-02 | 群联电子股份有限公司 | 存储器管理方法、存储器控制电路单元与存储器存储装置 |
US9348520B2 (en) | 2014-03-24 | 2016-05-24 | Western Digital Technologies, Inc. | Lifetime extension of non-volatile semiconductor memory for data storage device |
US9690696B1 (en) | 2014-05-14 | 2017-06-27 | Western Digital Technologies, Inc. | Lifetime extension of memory for data storage system |
KR102291507B1 (ko) | 2014-05-20 | 2021-08-20 | 삼성전자주식회사 | 메모리 컨트롤러의 동작 방법 |
KR102318561B1 (ko) | 2014-08-19 | 2021-11-01 | 삼성전자주식회사 | 스토리지 장치, 스토리지 장치의 동작 방법 |
US9251909B1 (en) * | 2014-09-29 | 2016-02-02 | International Business Machines Corporation | Background threshold voltage shifting using base and delta threshold voltage shift values in flash memory |
CN104317671A (zh) * | 2014-10-24 | 2015-01-28 | 杭州帅锐电子科技有限公司 | 一种提升非易失存储使用寿命的掉电数据保存恢复算法 |
CN104376875B (zh) * | 2014-11-19 | 2017-09-05 | 华为数字技术(苏州)有限公司 | 存储设备寿命预测、确定方法及装置 |
US9372628B1 (en) | 2015-01-23 | 2016-06-21 | International Business Machines Corporation | Deduplication tracking for accurate lifespan prediction |
JP6541369B2 (ja) * | 2015-02-24 | 2019-07-10 | キヤノン株式会社 | メモリのデータ処理を行なうデータ処理装置、データ処理方法、及びプログラム |
US10452302B2 (en) * | 2015-04-09 | 2019-10-22 | Hitachi, Ltd. | Storage system and data control method |
KR102456104B1 (ko) | 2015-08-24 | 2022-10-19 | 삼성전자주식회사 | 데이터 신뢰성에 따라 동작 조건을 변경하는 저장 장치의 동작 방법 |
KR102393323B1 (ko) | 2015-08-24 | 2022-05-03 | 삼성전자주식회사 | 재사용 주기를 이용하여 사용자 데이터를 쓰기 위한 워드라인을 결정하는 저장 장치의 동작 방법 |
KR102333746B1 (ko) | 2015-09-02 | 2021-12-01 | 삼성전자주식회사 | 재사용 주기에 따라 마모도를 관리하는 저장 장치의 동작 방법 |
US9934174B2 (en) | 2015-09-18 | 2018-04-03 | Seagate Technology Llc | Selectively enable data transfer based on accrued data credits |
US9734912B2 (en) * | 2015-11-25 | 2017-08-15 | Macronix International Co., Ltd. | Reprogramming single bit memory cells without intervening erasure |
US9898202B2 (en) * | 2015-11-30 | 2018-02-20 | Samsung Electronics Co., Ltd. | Enhanced multi-streaming though statistical analysis |
US10359933B2 (en) * | 2016-09-19 | 2019-07-23 | Micron Technology, Inc. | Memory devices and electronic systems having a hybrid cache including static and dynamic caches with single and multiple bits per cell, and related methods |
US10956415B2 (en) | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11023463B2 (en) | 2016-09-26 | 2021-06-01 | Splunk Inc. | Converting and modifying a subquery for an external data system |
US11620336B1 (en) * | 2016-09-26 | 2023-04-04 | Splunk Inc. | Managing and storing buckets to a remote shared storage system based on a collective bucket size |
US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
US11003714B1 (en) | 2016-09-26 | 2021-05-11 | Splunk Inc. | Search node and bucket identification using a search node catalog and a data store catalog |
US11243963B2 (en) | 2016-09-26 | 2022-02-08 | Splunk Inc. | Distributing partial results to worker nodes from an external data system |
US11294941B1 (en) | 2016-09-26 | 2022-04-05 | Splunk Inc. | Message-based data ingestion to a data intake and query system |
US11580107B2 (en) | 2016-09-26 | 2023-02-14 | Splunk Inc. | Bucket data distribution for exporting data to worker nodes |
US11615104B2 (en) | 2016-09-26 | 2023-03-28 | Splunk Inc. | Subquery generation based on a data ingest estimate of an external data system |
US10776355B1 (en) | 2016-09-26 | 2020-09-15 | Splunk Inc. | Managing, storing, and caching query results and partial query results for combination with additional query results |
US11461334B2 (en) | 2016-09-26 | 2022-10-04 | Splunk Inc. | Data conditioning for dataset destination |
US11416528B2 (en) | 2016-09-26 | 2022-08-16 | Splunk Inc. | Query acceleration data store |
US11593377B2 (en) | 2016-09-26 | 2023-02-28 | Splunk Inc. | Assigning processing tasks in a data intake and query system |
US11599541B2 (en) | 2016-09-26 | 2023-03-07 | Splunk Inc. | Determining records generated by a processing task of a query |
US11874691B1 (en) | 2016-09-26 | 2024-01-16 | Splunk Inc. | Managing efficient query execution including mapping of buckets to search nodes |
US11567993B1 (en) | 2016-09-26 | 2023-01-31 | Splunk Inc. | Copying buckets from a remote shared storage system to memory associated with a search node for query execution |
US11126632B2 (en) | 2016-09-26 | 2021-09-21 | Splunk Inc. | Subquery generation based on search configuration data from an external data system |
US20180089324A1 (en) | 2016-09-26 | 2018-03-29 | Splunk Inc. | Dynamic resource allocation for real-time search |
US11106734B1 (en) | 2016-09-26 | 2021-08-31 | Splunk Inc. | Query execution using containerized state-free search nodes in a containerized scalable environment |
US11860940B1 (en) | 2016-09-26 | 2024-01-02 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets |
US11281706B2 (en) | 2016-09-26 | 2022-03-22 | Splunk Inc. | Multi-layer partition allocation for query execution |
US11269939B1 (en) | 2016-09-26 | 2022-03-08 | Splunk Inc. | Iterative message-based data processing including streaming analytics |
US11663227B2 (en) | 2016-09-26 | 2023-05-30 | Splunk Inc. | Generating a subquery for a distinct data intake and query system |
US11314753B2 (en) | 2016-09-26 | 2022-04-26 | Splunk Inc. | Execution of a query received from a data intake and query system |
US11586627B2 (en) | 2016-09-26 | 2023-02-21 | Splunk Inc. | Partitioning and reducing records at ingest of a worker node |
US10726009B2 (en) | 2016-09-26 | 2020-07-28 | Splunk Inc. | Query processing using query-resource usage and node utilization data |
US11321321B2 (en) | 2016-09-26 | 2022-05-03 | Splunk Inc. | Record expansion and reduction based on a processing task in a data intake and query system |
US11562023B1 (en) | 2016-09-26 | 2023-01-24 | Splunk Inc. | Merging buckets in a data intake and query system |
US10353965B2 (en) | 2016-09-26 | 2019-07-16 | Splunk Inc. | Data fabric service system architecture |
US10795884B2 (en) | 2016-09-26 | 2020-10-06 | Splunk Inc. | Dynamic resource allocation for common storage query |
US11550847B1 (en) | 2016-09-26 | 2023-01-10 | Splunk Inc. | Hashing bucket identifiers to identify search nodes for efficient query execution |
US10984044B1 (en) | 2016-09-26 | 2021-04-20 | Splunk Inc. | Identifying buckets for query execution using a catalog of buckets stored in a remote shared storage system |
US11163758B2 (en) | 2016-09-26 | 2021-11-02 | Splunk Inc. | External dataset capability compensation |
US12013895B2 (en) | 2016-09-26 | 2024-06-18 | Splunk Inc. | Processing data using containerized nodes in a containerized scalable environment |
US11250056B1 (en) | 2016-09-26 | 2022-02-15 | Splunk Inc. | Updating a location marker of an ingestion buffer based on storing buckets in a shared storage system |
US10977260B2 (en) | 2016-09-26 | 2021-04-13 | Splunk Inc. | Task distribution in an execution node of a distributed execution environment |
US11232100B2 (en) | 2016-09-26 | 2022-01-25 | Splunk Inc. | Resource allocation for multiple datasets |
US11442935B2 (en) | 2016-09-26 | 2022-09-13 | Splunk Inc. | Determining a record generation estimate of a processing task |
US11604795B2 (en) | 2016-09-26 | 2023-03-14 | Splunk Inc. | Distributing partial results from an external data system between worker nodes |
US10740227B2 (en) * | 2017-04-28 | 2020-08-11 | Vmware, Inc. | Reclaiming storage resources |
CN107193493A (zh) * | 2017-05-19 | 2017-09-22 | 惠州佰维存储科技有限公司 | Nand闪存块的管理方法及其系统 |
US11989194B2 (en) | 2017-07-31 | 2024-05-21 | Splunk Inc. | Addressing memory limits for partition tracking among worker nodes |
US11921672B2 (en) | 2017-07-31 | 2024-03-05 | Splunk Inc. | Query execution at a remote heterogeneous data store of a data fabric service |
US11151137B2 (en) | 2017-09-25 | 2021-10-19 | Splunk Inc. | Multi-partition operation in combination operations |
US10896182B2 (en) | 2017-09-25 | 2021-01-19 | Splunk Inc. | Multi-partitioning determination for combination operations |
CN108073362B (zh) * | 2017-12-20 | 2021-04-09 | 北京兆易创新科技股份有限公司 | 一种延长PairBlock使用寿命的方法及装置 |
US11210166B1 (en) * | 2017-12-22 | 2021-12-28 | Pliops Ltd. | Efficient redundancy management in key-value NAND flash storage |
US11106391B2 (en) * | 2018-04-25 | 2021-08-31 | Micron Technology, Inc. | Managing a memory system including memory devices with different characteristics |
US11334543B1 (en) | 2018-04-30 | 2022-05-17 | Splunk Inc. | Scalable bucket merging for a data intake and query system |
US11132247B2 (en) * | 2018-07-30 | 2021-09-28 | Micron Technology, Inc. | Selective bad block untag and bad block reuse |
WO2020220216A1 (en) | 2019-04-29 | 2020-11-05 | Splunk Inc. | Search time estimate in data intake and query system |
US11715051B1 (en) | 2019-04-30 | 2023-08-01 | Splunk Inc. | Service provider instance recommendations using machine-learned classifications and reconciliation |
US11494380B2 (en) | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
US11922222B1 (en) | 2020-01-30 | 2024-03-05 | Splunk Inc. | Generating a modified component for a data intake and query system using an isolated execution environment image |
CN111312326B (zh) * | 2020-03-09 | 2021-11-12 | 宁波三星医疗电气股份有限公司 | 闪存寿命测试方法、装置、电力采集终端及存储介质 |
CN111833948A (zh) * | 2020-07-16 | 2020-10-27 | 浪潮(北京)电子信息产业有限公司 | Nand闪存的擦写能力测试方法、装置、设备及介质 |
US11561907B2 (en) * | 2020-08-18 | 2023-01-24 | Micron Technology, Inc. | Access to data stored in quarantined memory media |
US11704313B1 (en) | 2020-10-19 | 2023-07-18 | Splunk Inc. | Parallel branch operation using intermediary nodes |
Family Cites Families (120)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03250499A (ja) | 1990-02-27 | 1991-11-08 | Nec Corp | データ記憶回路 |
GB2251324B (en) | 1990-12-31 | 1995-05-10 | Intel Corp | File structure for a non-volatile semiconductor memory |
US5768182A (en) | 1991-05-21 | 1998-06-16 | The Regents Of The University Of California | Ferroelectric nonvolatile dynamic random access memory device |
US6230233B1 (en) | 1991-09-13 | 2001-05-08 | Sandisk Corporation | Wear leveling techniques for flash EEPROM systems |
US6347051B2 (en) * | 1991-11-26 | 2002-02-12 | Hitachi, Ltd. | Storage device employing a flash memory |
TW261687B (ja) | 1991-11-26 | 1995-11-01 | Hitachi Seisakusyo Kk | |
JP2610737B2 (ja) | 1991-12-20 | 1997-05-14 | シャープ株式会社 | 記録再生装置 |
US5592415A (en) | 1992-07-06 | 1997-01-07 | Hitachi, Ltd. | Non-volatile semiconductor memory |
US5341339A (en) | 1992-10-30 | 1994-08-23 | Intel Corporation | Method for wear leveling in a flash EEPROM memory |
US5337275A (en) | 1992-10-30 | 1994-08-09 | Intel Corporation | Method for releasing space in flash EEPROM memory array to allow the storage of compressed data |
US5485595A (en) | 1993-03-26 | 1996-01-16 | Cirrus Logic, Inc. | Flash memory mass storage architecture incorporating wear leveling technique without using cam cells |
JPH08124393A (ja) | 1994-10-20 | 1996-05-17 | Fujitsu Ltd | データ消去回数に制限のあるメモリの制御方法及びこの方法を用いた装置 |
WO1996028826A1 (fr) | 1995-03-15 | 1996-09-19 | Hitachi, Ltd. | Dispositif a memoire a semiconducteur dote d'une fonction de determination de la deterioration |
US5568423A (en) | 1995-04-14 | 1996-10-22 | Unisys Corporation | Flash memory wear leveling system providing immediate direct access to microprocessor |
US5805809A (en) | 1995-04-26 | 1998-09-08 | Shiva Corporation | Installable performance accelerator for maintaining a local cache storing data residing on a server computer |
US5621687A (en) | 1995-05-31 | 1997-04-15 | Intel Corporation | Programmable erasure and programming time for a flash memory |
US5835935A (en) | 1995-09-13 | 1998-11-10 | Lexar Media, Inc. | Method of and architecture for controlling system data with automatic wear leveling in a semiconductor non-volatile mass storage memory |
EP0862762B1 (en) * | 1996-08-16 | 2002-10-09 | Tokyo Electron Device Limited | Semiconductor memory device having error detection and correction |
US5956473A (en) | 1996-11-25 | 1999-09-21 | Macronix International Co., Ltd. | Method and system for managing a flash memory mass storage system |
US5963970A (en) | 1996-12-20 | 1999-10-05 | Intel Corporation | Method and apparatus for tracking erase cycles utilizing active and inactive wear bar blocks having first and second count fields |
US6085248A (en) | 1997-02-11 | 2000-07-04 | Xaqtu Corporation | Media access control transmitter and parallel network management system |
US6000006A (en) | 1997-08-25 | 1999-12-07 | Bit Microsystems, Inc. | Unified re-map and cache-index table with dual write-counters for wear-leveling of non-volatile flash RAM mass storage |
JP3557511B2 (ja) * | 1997-08-27 | 2004-08-25 | 沖電気工業株式会社 | 半導体ディスク装置の寿命算出方法 |
JP3898305B2 (ja) | 1997-10-31 | 2007-03-28 | 富士通株式会社 | 半導体記憶装置、半導体記憶装置の制御装置及び制御方法 |
US6305014B1 (en) | 1998-06-18 | 2001-10-16 | International Business Machines Corporation | Lifetime-sensitive instruction scheduling mechanism and method |
KR100533140B1 (ko) | 1998-09-04 | 2005-12-02 | 하이퍼스톤 아게 | 제한된 소거빈도의 메모리의 액세스제어방법 |
FR2787601A1 (fr) | 1998-12-22 | 2000-06-23 | Gemplus Card Int | Systeme de memorisation comprenant des moyens de gestion d'une memoire avec anti-usure et procede de gestion anti-usure d'une memoire |
US6145069A (en) | 1999-01-29 | 2000-11-07 | Interactive Silicon, Inc. | Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices |
US6314026B1 (en) | 1999-02-08 | 2001-11-06 | Kabushiki Kaisha Toshiba | Nonvolatile semiconductor device using local self boost technique |
US7628622B2 (en) | 1999-08-04 | 2009-12-08 | Super Talent Electronics, Inc. | Multi-level cell (MLC) slide flash memory |
US6405295B1 (en) | 1999-09-07 | 2002-06-11 | Oki Electric Industry, Co., Ltd. | Data storage apparatus for efficient utilization of limited cycle memory material |
US7130807B1 (en) | 1999-11-22 | 2006-10-31 | Accenture Llp | Technology sharing during demand and supply planning in a network-based supply chain environment |
US6484228B2 (en) | 2000-04-19 | 2002-11-19 | Motorola, Inc. | Method and apparatus for data compression and decompression for a data processor system |
JP2001306543A (ja) | 2000-04-19 | 2001-11-02 | Nec Corp | マイクロコンピュータ及びフラッシュメモリのデータ書換え方法 |
US6256232B1 (en) | 2000-07-07 | 2001-07-03 | Institute For Information Industry | Data access method capable of reducing the number of erasing to flash memory and data patch and access device using the same |
US6732221B2 (en) | 2001-06-01 | 2004-05-04 | M-Systems Flash Disk Pioneers Ltd | Wear leveling of static areas in flash memory |
TW520514B (en) | 2001-08-02 | 2003-02-11 | Macronix Int Co Ltd | Circuit and method of qualification test for non-volatile memory |
US6948026B2 (en) | 2001-08-24 | 2005-09-20 | Micron Technology, Inc. | Erase block management |
US6717847B2 (en) * | 2001-09-17 | 2004-04-06 | Sandisk Corporation | Selective operation of a multi-state non-volatile memory system in a binary mode |
US20030058681A1 (en) | 2001-09-27 | 2003-03-27 | Intel Corporation | Mechanism for efficient wearout counters in destructive readout memory |
US7000063B2 (en) | 2001-10-05 | 2006-02-14 | Matrix Semiconductor, Inc. | Write-many memory device and method for limiting a number of writes to the write-many memory device |
US20030120841A1 (en) | 2001-12-21 | 2003-06-26 | Chang Matthew C.T. | System and method of data logging |
US6735673B2 (en) | 2002-01-10 | 2004-05-11 | Hewlett-Packard Development Company, L.P. | Apparatus and methods for cache line compression |
US6640283B2 (en) | 2002-01-16 | 2003-10-28 | Hewlett-Packard Development Company, L.P. | Apparatus for cache compression engine for data compression of on-chip caches to increase effective cache size |
US6606273B1 (en) * | 2002-04-11 | 2003-08-12 | Advanced Micro Devices, Inc. | Methods and systems for flash memory tunnel oxide reliability testing |
US6775751B2 (en) | 2002-08-06 | 2004-08-10 | International Business Machines Corporation | System and method for using a compressed main memory based on degree of compressibility |
NZ520786A (en) | 2002-08-14 | 2005-06-24 | Daniel James Oaeconnell | Method of booting a computer system using a memory image of the post boot content of the system RAM memory |
KR100484485B1 (ko) | 2002-10-01 | 2005-04-20 | 한국전자통신연구원 | 비휘발성 메모리에의 데이터 저장 방법 및 장치 |
US6910106B2 (en) | 2002-10-04 | 2005-06-21 | Microsoft Corporation | Methods and mechanisms for proactive memory management |
US20040135903A1 (en) | 2002-10-11 | 2004-07-15 | Brooks Lane C. | In-stream lossless compression of digital image sensor data |
CA2408979A1 (en) | 2002-10-18 | 2004-04-18 | Richard Egon Schauble | Tamper-evident use-indicating odometer and engine-timer |
US6973531B1 (en) | 2002-10-28 | 2005-12-06 | Sandisk Corporation | Tracking the most frequently erased blocks in non-volatile memory systems |
US7035967B2 (en) | 2002-10-28 | 2006-04-25 | Sandisk Corporation | Maintaining an average erase count in a non-volatile storage system |
US7103732B1 (en) | 2002-10-28 | 2006-09-05 | Sandisk Corporation | Method and apparatus for managing an erase count block |
US6985992B1 (en) | 2002-10-28 | 2006-01-10 | Sandisk Corporation | Wear-leveling in non-volatile storage systems |
US7096313B1 (en) | 2002-10-28 | 2006-08-22 | Sandisk Corporation | Tracking the least frequently erased blocks in non-volatile memory systems |
US6831865B2 (en) | 2002-10-28 | 2004-12-14 | Sandisk Corporation | Maintaining erase counts in non-volatile storage systems |
JP4518951B2 (ja) | 2002-10-28 | 2010-08-04 | サンディスク コーポレイション | 不揮発性記憶システムにおける自動損耗均等化 |
US6925523B2 (en) | 2003-03-03 | 2005-08-02 | Agilent Technologies, Inc. | Managing monotonically increasing counter values to minimize impact on non-volatile storage |
US7203874B2 (en) * | 2003-05-08 | 2007-04-10 | Micron Technology, Inc. | Error detection, documentation, and correction in a flash memory device |
US7320100B2 (en) * | 2003-05-20 | 2008-01-15 | Cray Inc. | Apparatus and method for memory with bit swapping on the fly and testing |
TWI248570B (en) * | 2003-05-29 | 2006-02-01 | Accton Technology Corp | Method and system for storing data |
US7143238B2 (en) | 2003-09-30 | 2006-11-28 | Intel Corporation | Mechanism to compress data in a cache |
US7188228B1 (en) * | 2003-10-01 | 2007-03-06 | Sandisk Corporation | Hybrid mapping implementation within a non-volatile memory system |
US20070067366A1 (en) | 2003-10-08 | 2007-03-22 | Landis John A | Scalable partition memory mapping system |
US7032087B1 (en) | 2003-10-28 | 2006-04-18 | Sandisk Corporation | Erase count differential table within a non-volatile memory system |
JP2005147749A (ja) * | 2003-11-12 | 2005-06-09 | Toshiba Corp | スキャン回路を備える半導体集積回路、スキャン回路システムおよびスキャンテストシステム |
US7480760B2 (en) | 2003-12-17 | 2009-01-20 | Wegener Communications, Inc. | Rotational use of memory to minimize write cycles |
JP4357304B2 (ja) | 2004-01-09 | 2009-11-04 | 株式会社バッファロー | 外部記憶装置 |
US7222214B2 (en) | 2004-03-25 | 2007-05-22 | Lucent Technologies Inc. | Device-level address translation within a programmable non-volatile memory device |
US7595796B2 (en) | 2004-04-23 | 2009-09-29 | Hewlett-Packard Development Company, L.P. | Optimizing lifetime of a display |
US7664796B2 (en) | 2004-10-13 | 2010-02-16 | Microsoft Corporation | Electronic labeling for offline management of storage devices |
KR100917064B1 (ko) | 2004-11-08 | 2009-09-15 | 이노패스 소프트웨어, 아이엔시. | 정적 파일 시스템 디프런싱 및 업데이트 방법, 장치,시스템 |
US7433994B2 (en) | 2004-12-07 | 2008-10-07 | Ocz Technology Group, Inc. | On-device data compression to increase speed and capacity of flash memory-based mass storage devices |
US20060149891A1 (en) * | 2004-12-30 | 2006-07-06 | Rudelic John C | Relocated reclaim block |
US7224604B2 (en) | 2005-03-14 | 2007-05-29 | Sandisk Il Ltd. | Method of achieving wear leveling in flash memory using relative grades |
US20060209684A1 (en) | 2005-03-18 | 2006-09-21 | Via Technologies, Inc. | Data rate controller, and method of control thereof |
US7206230B2 (en) | 2005-04-01 | 2007-04-17 | Sandisk Corporation | Use of data latches in cache operations of non-volatile memories |
JP2007011839A (ja) * | 2005-07-01 | 2007-01-18 | Hitachi Computer Peripherals Co Ltd | メモリ管理方法及びメモリ管理システム |
KR100705220B1 (ko) * | 2005-09-15 | 2007-04-06 | 주식회사 하이닉스반도체 | 프로그램 속도를 증가시키기 위한 플래시 메모리 장치의소거 및 프로그램 방법 |
JP2007094734A (ja) | 2005-09-28 | 2007-04-12 | Canon Inc | 半導体ディスク装置、該装置へのデータ書き込み方法、プログラム及び記憶媒体 |
US7761854B2 (en) * | 2005-12-22 | 2010-07-20 | International Business Machines Corporation | Adaptive profiling by progressive refinement |
US7457178B2 (en) | 2006-01-12 | 2008-11-25 | Sandisk Corporation | Trimming of analog voltages in flash memory devices |
US20070180186A1 (en) * | 2006-01-27 | 2007-08-02 | Cornwell Michael J | Non-volatile memory management |
US7512847B2 (en) * | 2006-02-10 | 2009-03-31 | Sandisk Il Ltd. | Method for estimating and reporting the life expectancy of flash-disk memory |
US8848789B2 (en) | 2006-03-27 | 2014-09-30 | Qualcomm Incorporated | Method and system for coding and decoding information associated with video compression |
US7653778B2 (en) | 2006-05-08 | 2010-01-26 | Siliconsystems, Inc. | Systems and methods for measuring the useful life of solid-state storage devices |
JP2007316779A (ja) | 2006-05-23 | 2007-12-06 | Sharp Corp | 不揮発性メモリシステム |
US8412682B2 (en) | 2006-06-29 | 2013-04-02 | Netapp, Inc. | System and method for retrieving and using block fingerprints for data deduplication |
US7555575B2 (en) | 2006-07-27 | 2009-06-30 | Hitachi, Ltd. | Method and apparatus for migrating data between storage volumes of different data pattern |
US7561482B2 (en) * | 2006-09-07 | 2009-07-14 | Sandisk Corporation | Defective block isolation in a non-volatile memory system |
US7904764B2 (en) | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | Memory lifetime gauging system, method and computer program product |
US7747813B2 (en) | 2006-11-24 | 2010-06-29 | Sandforce, Inc. | Multi-memory device system and method for managing a lifetime thereof |
US7904619B2 (en) | 2006-11-24 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for reducing memory write operations using difference information |
CN101578587B (zh) | 2006-11-24 | 2015-02-25 | Lsi公司 | 延迟缩减存储器寿命的操作 |
US7809900B2 (en) | 2006-11-24 | 2010-10-05 | Sandforce, Inc. | System, method, and computer program product for delaying an operation that reduces a lifetime of memory |
US20080126685A1 (en) | 2006-11-24 | 2008-05-29 | Radoslav Danilak | System, method, and computer program product for reducing memory write operations using an instruction set |
US8090980B2 (en) | 2006-12-08 | 2012-01-03 | Sandforce, Inc. | System, method, and computer program product for providing data redundancy in a plurality of storage devices |
US7904672B2 (en) | 2006-12-08 | 2011-03-08 | Sandforce, Inc. | System and method for providing data redundancy after reducing memory writes |
KR20080090021A (ko) | 2007-04-03 | 2008-10-08 | 삼성테크윈 주식회사 | 데이터 전송 속도가 다른 인터페이스들을 갖는 데이터 저장모듈 및 이의 데이터 전송방법 |
US7743203B2 (en) * | 2007-05-11 | 2010-06-22 | Spansion Llc | Managing flash memory based upon usage history |
US20080294813A1 (en) | 2007-05-24 | 2008-11-27 | Sergey Anatolievich Gorobets | Managing Housekeeping Operations in Flash Memory |
US7934072B2 (en) * | 2007-09-28 | 2011-04-26 | Lenovo (Singapore) Pte. Ltd. | Solid state storage reclamation apparatus and method |
TW200917123A (en) | 2007-10-03 | 2009-04-16 | Guo-Lang Zhang | USB flash disk for computer boot up and method of loading programs in the USB flash disk |
TWI373772B (en) | 2007-10-04 | 2012-10-01 | Phison Electronics Corp | Wear leveling method and controller using the same |
US20090125645A1 (en) | 2007-11-12 | 2009-05-14 | Gemalto Inc | System and method for supporting multiple tokens having a smart card to control parameters of a flash memory device |
US7849275B2 (en) | 2007-11-19 | 2010-12-07 | Sandforce, Inc. | System, method and a computer program product for writing data to different storage devices based on write frequency |
US7903486B2 (en) | 2007-11-19 | 2011-03-08 | Sandforce, Inc. | System, method, and computer program product for increasing a lifetime of a plurality of blocks of memory |
US7870105B2 (en) | 2007-11-20 | 2011-01-11 | Hitachi, Ltd. | Methods and apparatus for deduplication in storage system |
US9183133B2 (en) | 2007-11-28 | 2015-11-10 | Seagate Technology Llc | System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory |
WO2009072102A2 (en) | 2007-12-05 | 2009-06-11 | Densbits Technologies Ltd. | System and methods employing mock thresholds to generate actual reading thresholds in flash memory devices |
US7827320B1 (en) | 2008-03-28 | 2010-11-02 | Western Digital Technologies, Inc. | Serial ATA device implementing intra-command processing by detecting XRDY primitive while in the XRDY state |
US7970978B2 (en) | 2008-05-27 | 2011-06-28 | Initio Corporation | SSD with SATA and USB interfaces |
US20100017650A1 (en) | 2008-07-19 | 2010-01-21 | Nanostar Corporation, U.S.A | Non-volatile memory data storage system with reliability management |
US8140739B2 (en) | 2008-08-08 | 2012-03-20 | Imation Corp. | Flash memory based storage devices utilizing magnetoresistive random access memory (MRAM) to store files having logical block addresses stored in a write frequency file buffer table |
US8291131B2 (en) | 2009-07-06 | 2012-10-16 | Micron Technology, Inc. | Data transfer management |
US8516166B2 (en) | 2009-07-20 | 2013-08-20 | Lsi Corporation | System, method, and computer program product for reducing a rate of data transfer to at least a portion of memory |
JP2012033047A (ja) * | 2010-07-30 | 2012-02-16 | Toshiba Corp | 情報処理装置、メモリ管理装置、メモリ管理方法、及びプログラム |
US9355023B2 (en) * | 2011-03-15 | 2016-05-31 | Anirudh Badam | Virtual address pager and method for use with a bulk erase memory |
US8738882B2 (en) * | 2011-06-03 | 2014-05-27 | Apple Inc. | Pre-organization of data |
-
2007
- 2007-11-19 US US11/942,631 patent/US7903486B2/en not_active Expired - Fee Related
-
2008
- 2008-10-23 JP JP2010534015A patent/JP2011503741A/ja active Pending
- 2008-10-23 WO PCT/US2008/012044 patent/WO2009067139A1/en active Application Filing
- 2008-10-23 CN CN2008801168271A patent/CN101874240B/zh active Active
- 2008-11-18 TW TW97144480A patent/TWI474335B/zh not_active IP Right Cessation
-
2011
- 2011-03-07 US US13/042,242 patent/US8339881B2/en active Active
-
2012
- 2012-08-10 US US13/572,257 patent/US8531900B2/en active Active
-
2013
- 2013-08-08 US US13/962,779 patent/US8699287B2/en active Active
-
2014
- 2014-04-08 US US14/247,399 patent/US9165682B2/en active Active
- 2014-08-21 JP JP2014168546A patent/JP2014241158A/ja active Pending
-
2015
- 2015-09-23 US US14/862,195 patent/US9323666B2/en active Active
-
2016
- 2016-04-25 US US15/138,064 patent/US9489303B2/en active Active
- 2016-11-04 US US15/343,576 patent/US9921761B2/en active Active
-
2018
- 2018-02-21 US US15/901,339 patent/US10579278B2/en active Active
-
2020
- 2020-01-10 US US16/739,294 patent/US20200167083A1/en not_active Abandoned
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5819610B2 (ja) | 異なる記憶装置にデータを書き込む方法及び装置 | |
US20200167083A1 (en) | Techniques for controlling recycling of blocks of memory | |
JP2011503741A5 (ja) | ||
JP2011503768A5 (ja) | ||
US8103820B2 (en) | Wear leveling method and controller using the same | |
US10592134B1 (en) | Open block stability scanning | |
US8332696B2 (en) | Defect management method for storage medium and system thereof | |
US10048863B1 (en) | Open block refresh management | |
US20170039141A1 (en) | Mapping table updating method, memory storage device and memory control circuit unit | |
US10545700B2 (en) | Memory management method, memory storage device and memory control circuit unit | |
US11733909B2 (en) | Secure-erase prediction for data storage devices |