JP5814335B2 - Reduction of writing and estimation and display of remaining life of nonvolatile memory - Google Patents

Reduction of writing and estimation and display of remaining life of nonvolatile memory Download PDF

Info

Publication number
JP5814335B2
JP5814335B2 JP2013261095A JP2013261095A JP5814335B2 JP 5814335 B2 JP5814335 B2 JP 5814335B2 JP 2013261095 A JP2013261095 A JP 2013261095A JP 2013261095 A JP2013261095 A JP 2013261095A JP 5814335 B2 JP5814335 B2 JP 5814335B2
Authority
JP
Japan
Prior art keywords
lifetime
memory
life
data
volatile memory
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.)
Expired - Fee Related
Application number
JP2013261095A
Other languages
Japanese (ja)
Other versions
JP2014089734A (en
Inventor
ラドスラフ ダーニラク,
ラドスラフ ダーニラク,
Original Assignee
シーゲート テクノロジー,エルエルシー
シーゲート テクノロジー,エルエルシー
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US11/852,082 external-priority patent/US7809900B2/en
Priority claimed from US11/852,138 external-priority patent/US20080126685A1/en
Priority claimed from US11/852,104 external-priority patent/US7904619B2/en
Priority claimed from US11/852,117 external-priority patent/US7747813B2/en
Priority claimed from US11/852,129 external-priority patent/US7904764B2/en
Application filed by シーゲート テクノロジー,エルエルシー, シーゲート テクノロジー,エルエルシー filed Critical シーゲート テクノロジー,エルエルシー
Publication of JP2014089734A publication Critical patent/JP2014089734A/en
Application granted granted Critical
Publication of JP5814335B2 publication Critical patent/JP5814335B2/en
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/008Reliability or availability analysis

Description

発明の分野Field of Invention

[0001]本実施形態は、メモリに関するものであり、より具体的には、有限の寿命を有するメモリに関するものである。   [0001] This embodiment relates to a memory, and more specifically, to a memory having a finite lifetime.

背景background

[0002]メモリは、現代のエンタープライズコンピューティングシステムの性能に関する最も制限的な特徴の一つである。メモリの一つの制限的特徴は、多くのタイプのメモリが限られた寿命を示すという事実である。例えば、フラッシュなどの不揮発性メモリの寿命は、そのメモリが消去され、再書込みされるたびに、少量ではあるが減少する。時が経つにつれて、数千回の消去及び再書込みを経て、そのようなフラッシュメモリは、ますます信頼できないものになることがある。   [0002] Memory is one of the most restrictive features regarding the performance of modern enterprise computing systems. One limiting feature of memory is the fact that many types of memory have a limited lifetime. For example, the lifetime of non-volatile memory, such as flash, decreases a small amount each time the memory is erased and rewritten. As time passes, after thousands of erases and rewrites, such flash memory can become increasingly unreliable.

[0003]したがって、使用のタイプ(例えば、軽い対激しい)に応じて、フラッシュメモリの寿命が、大幅に変化する場合がある。これは、さまざまな点で問題になる可能性がある。例えば、フラッシュメモリ製造業者は、特定の長さの時間にわたる制限付き保証を提供することを期待されることが多い。そのような保証は、フラッシュメモリの軽い使用から通常の使用には十分であるかもしれないが、激しい使用(例えば、エンタープライズ応用など)の場合にフラッシュメモリの返品及び交換を必要とし得る。   [0003] Thus, depending on the type of use (eg, light versus intense), the lifetime of the flash memory may vary significantly. This can be a problem in many ways. For example, flash memory manufacturers are often expected to provide a limited warranty over a specific length of time. Such a warranty may be sufficient for light to normal use of flash memory, but may require return and replacement of flash memory for heavy use (eg, enterprise applications).

[0004]そのような状況は、フラッシュメモリ製造業者の利益に大きく影響する場合がある。具体的に言うと、激しく使用する顧客について絶え間なく保証付きフラッシュメモリを交換する必要性によって、軽い使用から通常の使用の顧客へのフラッシュメモリの販売から得られる利益が相当に減少する可能性がある。したがって、従来技術に関連する上記及び/又は他の問題に対処する必要がある。   [0004] Such a situation can have a significant impact on the benefits of flash memory manufacturers. Specifically, the need to continually replace guaranteed flash memory for heavily used customers can significantly reduce the profits gained from selling flash memory from light use to normal use customers. is there. Accordingly, there is a need to address the above and / or other problems associated with the prior art.

概要Overview

[0005]メモリの寿命を縮める動作を遅延させるシステム、方法、及びコンピュータプログラム製品を提供する。使用時に、メモリの寿命に関連する少なくとも一つの特徴が、特定される。このために、メモリの寿命を縮める少なくとも一つの動作が、この特徴に基づいて遅延される。   [0005] Systems, methods, and computer program products for delaying operations that reduce the lifetime of a memory are provided. In use, at least one characteristic related to the lifetime of the memory is identified. For this reason, at least one operation that shortens the lifetime of the memory is delayed based on this feature.

一実施形態によるメモリの寿命を縮める動作を遅延させる方法を示す図である。FIG. 3 is a diagram illustrating a method for delaying an operation that shortens the lifetime of a memory according to one embodiment. 別の実施形態によるメモリの寿命を縮める動作を遅延させる技法を示す図である。FIG. 6 illustrates a technique for delaying operations that reduce the lifetime of a memory according to another embodiment. 別の実施形態による、メモリの寿命を縮める動作を遅延させるタイムインターバルに基づく技法を示す図である。FIG. 6 illustrates a time interval based technique for delaying operations that reduce memory life, according to another embodiment. 別の実施形態による、メモリの寿命を縮める動作を遅延させる積分に基づく技法を示す図である。FIG. 6 illustrates an integration-based technique for delaying operations that reduce memory lifetime, according to another embodiment. 別の実施形態による、所望の寿命持続時間が推定された寿命持続時間を超える場合に、メモリの寿命を縮める動作を遅延させるシステムを示す図である。FIG. 6 illustrates a system for delaying an operation to reduce the lifetime of a memory when a desired lifetime duration exceeds an estimated lifetime duration according to another embodiment. 別の実施形態による、所望の寿命持続時間が推定された寿命持続時間を超える場合に、メモリの寿命を縮める動作を遅延させる方法を示す図である。FIG. 6 illustrates a method for delaying an operation that reduces the lifetime of a memory when a desired lifetime duration exceeds an estimated lifetime duration according to another embodiment. 別の実施形態による、メモリの寿命を測定するグラフィカルユーザインターフェースを示す図である。FIG. 6 illustrates a graphical user interface for measuring memory lifetime, according to another embodiment. 別の実施形態による、差情報を利用してメモリ内の書込み動作を減らす方法を示す図である。FIG. 6 illustrates a method for reducing write operations in memory using difference information according to another embodiment. 別の実施形態による、メモリ内の書込み動作を減らすシステムを示す図である。FIG. 6 illustrates a system for reducing write operations in memory according to another embodiment. 一実施形態による、差情報を使用してメモリを読み取る方法を示す図である。FIG. 6 illustrates a method for reading memory using difference information according to one embodiment. 一実施形態による、差情報を使用してメモリに書き込む方法を示す図である。FIG. 6 illustrates a method for writing to memory using difference information, according to one embodiment. プロセッサに基づくシステムを使用する実施形態を示す図である。FIG. 2 illustrates an embodiment using a processor-based system.

詳細な説明Detailed description

[0018]説明する種々の実施形態に従って、メモリの寿命を縮める様々な動作を、かかる寿命を延ばすために制御することができる。この説明では、そのような動作は、書込み動作、消去動作、プログラム動作、及び/又は前述の寿命を縮め得る全ての他の動作を指し得るものである。   [0018] In accordance with various described embodiments, various operations that reduce the lifetime of a memory can be controlled to extend such lifetime. In this description, such an operation may refer to a write operation, an erase operation, a program operation, and / or any other operation that can reduce the aforementioned lifetime.

[0019]図1に、一実施形態によるメモリの寿命を縮める動作を遅延させる方法100を示す。図示するように、メモリの寿命に関連する少なくとも一つの特徴が特定される。動作102を参照されたい。   [0019] FIG. 1 illustrates a method 100 for delaying operations that reduce the lifetime of a memory according to one embodiment. As shown, at least one feature associated with the lifetime of the memory is identified. See operation 102.

[0020]この説明では、メモリの寿命とは、その間にメモリが任意の所望の度合の使用適正を呈する全ての持続時間を含み得るものである。例えば、様々な実施形態では、そのような寿命は、所望の寿命、実際の寿命、推定された寿命などを含み得るが、間違いなくこれらに限定はされない。さらに、使用適正の度合は、まだ動作しているコンポーネント(例えば、ブロック、セルなど)のパーセンテージ、メモリ又はそのコンポーネントの信頼性、及び/又は、更に言えば任意の他のパラメータなど、全ての使用適正関連パラメータを指し得る。   [0020] In this description, the lifetime of the memory is meant to include all the durations during which the memory exhibits any desired degree of use. For example, in various embodiments, such lifetimes can include, but are not limited to, desired lifetimes, actual lifetimes, estimated lifetimes, and the like. Furthermore, the degree of suitability depends on all usage, such as the percentage of components that are still operating (eg, blocks, cells, etc.), the reliability of the memory or its components, and / or any other parameters for that matter. May refer to the relevant parameters.

[0021]また、この説明では、動作102で特定される寿命に関連する特徴は、様々な実施形態で、期間、メモリの寿命を縮める動作のレート、メモリの寿命を縮める動作の許容総回数、寿命の持続時間などを含むことができる。さらに、前述の動作の許容総回数及び選択された又は所望の寿命を考慮すれば、一つの例示的実施形態では、期間あたりの動作の回数の単位で動作の最大平均レートを直接に計算することができる。もちろん、絶対に寿命の任意の他の特徴を特定できるので、そのような例示的特徴は、例示のみのために示したものである。このことは、直ぐに明らかとなろう。   [0021] Also, in this description, the lifetime-related features identified in operation 102 include, in various embodiments, a period, a rate of operation that reduces the lifetime of the memory, an allowable total number of operations that reduce the lifetime of the memory, Lifetime duration etc. can be included. Further, given the total allowed number of operations described above and the selected or desired lifetime, in one exemplary embodiment, the maximum average rate of operations is directly calculated in units of operations per period. Can do. Of course, such exemplary features are shown for illustration only, as any other feature of lifetime can be specified. This will be clear immediately.

[0022]このために、メモリの寿命を縮める少なくとも一つの動作が、特徴に基づいて遅延される。動作104を参照されたい。したがって、そのような遅延を、動作102で特徴されるメモリ寿命の特徴の少なくとも部分的関数である任意の形で実行することができる。この説明では、動作の前述の遅延は、動作の一部だけが遅延される状況を含むものと考えられる。例えば、動作が複数のコンポーネントを含む状況では、そのような遅延を、そのような動作の一以上(又は全て)の部分に適用してもよい。   [0022] To this end, at least one operation that reduces the lifetime of the memory is delayed based on the feature. See operation 104. Accordingly, such a delay can be implemented in any form that is at least a partial function of the memory lifetime feature characterized by operation 102. In this description, the aforementioned delay of operation is considered to include situations where only a portion of the operation is delayed. For example, in situations where an operation includes multiple components, such a delay may be applied to one or more (or all) parts of such an operation.

[0023]一実施形態では、動作は、その動作を開始するコマンドを遅延させることによって、遅延され得る。例えば、書込みコマンド又は消去コマンドの特定に応答して、そのようなコマンドの実行を遅延させることができる。もちろん、他の実施形態では、動作自体を単純に遅延することができる。この設計によって、そうでなければメモリの寿命を縮めるであろう一以上の動作のそのような遅延が、少なくとも部分的に寿命の減少を少なくする。   [0023] In one embodiment, an operation may be delayed by delaying a command that initiates the operation. For example, execution of such a command can be delayed in response to the identification of a write command or an erase command. Of course, in other embodiments, the operation itself can simply be delayed. With this design, such a delay in one or more operations that would otherwise reduce the lifetime of the memory at least partially reduces the decrease in lifetime.

[0024]以下、より例示的な情報を、様々なオプションのアーキテクチャ及び特徴に関して示す。これらアーキテクチャ及び特徴は、前述のフレームワークをユーザの希望に応じて実施してもしなくてもよい。例えば、遅延は、多数の異なる技法を使用して様々な異なる方法で管理することができる。これら技法についての例については、以下に説明する。なお、以下の情報が、例示のために示すものであり、いかなる形でも限定的に解釈されてはならないことに強く留意されたい。次の特徴のいずれをも、説明する他の特徴を伴わずに又は伴って任意に組み込むことができる。   [0024] In the following, more exemplary information will be presented regarding various optional architectures and features. These architectures and features may or may not implement the framework described above as desired by the user. For example, the delay can be managed in a variety of different ways using a number of different techniques. Examples of these techniques are described below. It should be noted that the following information is provided for illustrative purposes and should not be construed as limiting in any way. Any of the following features may optionally be incorporated with or without other features described.

[0025]図2は、別の実施形態によるメモリの寿命を縮める動作を遅延させる技法200を示している。オプションとして、本技法200を、図1の方法100を実行するために実施することができる。しかし、もちろん、技法200を、任意の所望の環境で実施してもよい。前述の定義が、この説明中にあてはまり得ることにも留意されたい。   [0025] FIG. 2 illustrates a technique 200 for delaying operations that reduce the lifetime of a memory according to another embodiment. As an option, the present technique 200 may be implemented to perform the method 100 of FIG. Of course, however, technique 200 may be implemented in any desired environment. It should also be noted that the above definitions may apply during this description.

[0026]図示するように、技法200は、メモリが最小限の使用適正を示すことをもたらす動作の総回数202並びにメモリの最小の所望の寿命204を考慮に入れている。そのようなデータ点から、最小の所望の寿命204を達成する最大平均動作レート206を計算することができる。   [0026] As shown, the technique 200 takes into account the total number of operations 202 that result in the memory exhibiting minimal use suitability, as well as the minimum desired lifetime 204 of the memory. From such data points, the maximum average operating rate 206 that achieves the minimum desired lifetime 204 can be calculated.

[0027]使用中に、寿命を縮める動作の回数を、時間の進行につれて監視することができる。如何なる時でも、時間の経過に伴い動作の回数が、図示の形で最大平均動作レート206を超える場合には、全ての余分な動作(レートを超えることに寄与する)を、計算された量だけ、所定の時間だけ、又は寿命を縮める動作の以前のレート若しくは予測されたレートに基づいて適応的に、遅延することができる。この所定の時間は、一実施形態では、最大平均動作レート206を超えないことをもたらす時間とすることができる。   [0027] During use, the number of operations that shorten the life can be monitored over time. If at any time the number of operations over time exceeds the maximum average operation rate 206 in the form shown, all extra operations (contributing to exceeding the rate) are calculated by the calculated amount. Can be adaptively delayed for a predetermined amount of time or based on the previous or predicted rate of life-shortening operations. This predetermined time may in one embodiment be a time that results in not exceeding the maximum average operating rate 206.

[0028]様々な実施形態では、どの動作が遅延の対象になるか(並びに遅延自体の長さ)を、様々な要因に基づくものとすることができる。例えば、一実施形態では、遅延を、動作を開始するアプリケーションに基づくものとしてもよい。そのような実施形態では、より低い優先順位を有するアプリケーションによって開始される動作を、遅延の対象とすることができ、より高い優先順位を有するアプリケーションによって開始される動作を、必ずしも遅延の対象ではない(可能な時に)ものとすることができる。   [0028] In various embodiments, which operations are subject to delay (as well as the length of the delay itself) can be based on various factors. For example, in one embodiment, the delay may be based on the application that initiates the operation. In such embodiments, operations initiated by applications with lower priority can be subject to delay, and operations initiated by applications with higher priority are not necessarily subject to delay. (When possible).

[0029]もちろん、遅延がアプリケーション独立の形で動作にまたがって管理される他の実施形態も考えられる。例えば、遅延を、発生元のアプリケーションに拠らず、あるタイプの動作(例えば、消去動作など)の全てに適用してもよい。さらに、ハイブリッド手法を用いる実施形態も、考えられる。   [0029] Of course, other embodiments are contemplated where the delay is managed across operations in an application independent manner. For example, the delay may be applied to all of a certain type of operation (for example, an erase operation) without depending on the application that generated the delay. Furthermore, embodiments using a hybrid approach are also conceivable.

[0030]さらに、遅延される動作に、寿命の異常な短縮を引き起こす動作又は動作のパターンを含む実施形態も考えられる。一実施形態で、これらのパターンだけを遅延させることができる。例えば、ウィルス又は手荒いアプリケーション動作パターンを検出することができ、そのようなパターンからの動作だけを遅延させることができる。   [0030] In addition, embodiments are contemplated that include operations or patterns of operations that cause abnormal shortening of life in the delayed operations. In one embodiment, only these patterns can be delayed. For example, viruses or rough application behavior patterns can be detected, and only the behavior from such patterns can be delayed.

[0031]図3は、別の実施形態による、メモリの寿命を縮める動作を遅延させるタイムインターバルに基づく技法300を示している。オプションとして、この技法300を、図1の方法100を実行するために及び/又は更に図2の技法200で実施することができる。しかし、もちろん、技法300を、任意の所望の環境で実施してもよい。やはり、前述の定義が、この説明中にあてはまり得ることにも留意されたい。   [0031] FIG. 3 illustrates a time interval based technique 300 for delaying operations that reduce the lifetime of memory, according to another embodiment. As an option, the technique 300 may be implemented to perform the method 100 of FIG. 1 and / or further with the technique 200 of FIG. Of course, however, technique 300 may be implemented in any desired environment. It should also be noted that the above definitions may apply during this description.

[0032]図2の技法に類似して、技法300は、メモリが最小限の使用適正を示すことをもたらす動作の総数302並びにメモリの最小の所望の寿命304を考慮に入れる。そのようなデータ点から、最小の所望の寿命304を達成する最大平均動作レート306を計算することができる。使用中に、寿命を縮める動作の回数を、時間の進行につれて監視することができる。   [0032] Similar to the technique of FIG. 2, technique 300 takes into account the total number of operations 302 that result in the memory exhibiting minimal use suitability, as well as the minimum desired lifetime 304 of the memory. From such data points, the maximum average operating rate 306 that achieves the minimum desired lifetime 304 can be calculated. During use, the number of operations that shorten the lifetime can be monitored over time.

[0033]如何なる時でも、時間の経過に伴い複数のそのような動作が、最大平均動作レート206を超える場合には、図示する方法で、全ての過剰な動作が、必ずしも、無条件に遅延(図2の技法200のように)されない。そうではなく、そのような過剰な動作を、当該動作が開始されるタイムインターバルに基づいて条件付きで遅延することができる。そのようなタイムインターバルは、例えば、時刻、日、月などを含むことができるが、これらに限定はされない。追加の実施形態では、タイムインターバルを、適応的及び動的に最適な期間へと調整することができる。例えば、そのような適応動的調整を、あるインターバルのサブインターバルにおいて寿命を縮める動作の頻度のヒストグラムなどに基づくものとしてもよい。   [0033] When a plurality of such operations over time exceed the maximum average operation rate 206 at any given time, all excessive operations are not necessarily unconditionally delayed ( Not (like technique 200 of FIG. 2). Rather, such excessive motion can be conditionally delayed based on the time interval at which the motion is initiated. Such time intervals can include, for example, but are not limited to time, day, month, and the like. In additional embodiments, the time interval can be adaptively and dynamically adjusted to an optimal period. For example, such adaptive dynamic adjustment may be based on a histogram of the frequency of operations that shorten the life in a subinterval of a certain interval.

[0034]例えば、過剰な回数の動作が、上に示した態様で月曜、火曜、水曜、木曜などに特定される場合には、後続の金曜、土曜、及び日曜中に特定される可能性のある動作の回数がより少ないことを認識する(例えば、予想する)ことができる。したがって、そのような過剰な回数の動作を無条件に遅延するのではなく、これらを、平均動作レート(1週間にわたって行われる時の)が最大平均動作レート206を超えない尤度に応じて、即座に実行することができる。もちろん、これがそうではないとわかる場合には、ある遅延を、後続の週の間に行うことなどができる。前述の例は、週の間の日状況で示したが、週、月などにまたがるメモリ使用の変動を考慮に入れた、他のより「マクロ」な実施形態が考えられる。   [0034] For example, if an excessive number of actions are specified on Monday, Tuesday, Wednesday, Thursday, etc. in the manner shown above, they may be specified on subsequent Fridays, Saturdays, and Sundays. It can be recognized (eg, anticipated) that the number of certain actions is less. Thus, rather than unconditionally delaying such an excessive number of operations, these are dependent on the likelihood that the average operation rate (when done over a week) does not exceed the maximum average operation rate 206, Can be executed immediately. Of course, if you know this is not the case, you can make some delay during the following weeks, and so on. While the above example has been shown with day situations during the week, other more “macro” embodiments are possible that take into account variations in memory usage across weeks, months, etc.

[0035]更なる追加の実施形態では、動作の条件付き遅延を、必ずしもインターバルに基づくのではなく、その代わりに、メモリの使用履歴及び/又はメモリの予想される使用にさえ基づくように生成することができる。そのような実施形態では、将来の使用を予測するために履歴データを使用して、任意の所望の統計分析を実行し、過度な動作を遅延させることが必ずしも発生しない状況をより正確に特定すること等を行うことができる。   [0035] In a further additional embodiment, the conditional delay of operation is not necessarily based on intervals, but instead is based on memory usage history and / or even expected usage of memory. be able to. In such an embodiment, historical data is used to predict future use to perform any desired statistical analysis and more accurately identify situations where it does not necessarily delay excessive action. Can be done.

[0036]図4は、別の実施形態による、メモリの寿命を縮める動作を遅延させる積分に基づく技法400を示している。オプションとして、この技法400を、図1の方法100を実行するために、及び/又は、更に図2〜3の技法200及び300において実施することができる。しかし、もちろん、技法400を、任意の所望の環境で実施してもよい。やはり、前述の定義が、この説明中にあてはまり得ることにも留意されたい。   [0036] FIG. 4 illustrates an integration-based technique 400 that delays operations that reduce memory lifetime, according to another embodiment. As an option, the technique 400 may be implemented to perform the method 100 of FIG. 1 and / or further in the techniques 200 and 300 of FIGS. Of course, however, technique 400 may be implemented in any desired environment. It should also be noted that the above definitions may apply during this description.

[0037]以前の技法に類似して、技法400は、メモリが最小限の使用適正を示すことをもたらす動作の総回数402、及びメモリの最小の所望の寿命404を考慮に入れる。そのようなデータ点から、最小の所望の寿命404を達成する最大平均動作レート406を計算することができる。使用中に、寿命を縮める動作の回数を、時間の進行につれて監視することができる。   [0037] Similar to previous techniques, the technique 400 takes into account the total number of operations 402 that result in the memory exhibiting minimal use suitability, and the minimum desired lifetime 404 of the memory. From such data points, the maximum average operating rate 406 that achieves the minimum desired lifetime 404 can be calculated. During use, the number of operations that shorten the lifetime can be monitored over time.

[0038]如何なる時でも、時間の経過に伴い複数のそのような動作が、最大平均動作レート406を超える場合に、図示された方法で(408を参照されたい)、全ての過剰な動作が、必ずしも、無条件の形で遅延(図2の技法200のように)されない。そうではなく、そのような過剰な動作を、メモリの使用を反映する積分関数に基づいて条件的に遅延することができる。具体的には、時間の経過に伴い寿命を縮める動作の総合レートと最大平均動作レート406との間の差の積分を、進行につれて計算することができる。このために、そのような積分が、そのような動作が最大平均動作レート406を超える可能性があることを示す場合に、前述の遅延を、必ずしも行う必要がない。   [0038] At any given time, if multiple such operations over time exceed the maximum average operation rate 406, in the illustrated manner (see 408), all excess operations are It is not necessarily delayed in an unconditional manner (as in technique 200 of FIG. 2). Rather, such excessive operation can be conditionally delayed based on an integration function that reflects memory usage. Specifically, the integral of the difference between the overall rate of operation that shortens life over time and the maximum average operation rate 406 can be calculated as it progresses. For this reason, the delay described above need not necessarily be performed when such integration indicates that such operation may exceed the maximum average operation rate 406.

[0039]図5は、別の実施形態による、所望の寿命持続時間が推定された寿命持続時間を超える場合に、メモリの寿命を縮める動作を遅延させるシステム500を示している。オプションとして、このシステム500を、図1の方法100を実行し、及び/又は、更にオプションとして図2〜4の技法のいずれかを組み込むように実施することができる。しかし、もちろん、システム500を任意の所望の形で使用してもよい。   [0039] FIG. 5 illustrates a system 500 that delays an operation to reduce the lifetime of a memory when a desired lifetime duration exceeds an estimated lifetime duration, according to another embodiment. As an option, the system 500 may be implemented to perform the method 100 of FIG. 1 and / or optionally further incorporate any of the techniques of FIGS. Of course, however, the system 500 may be used in any desired manner.

[0040]図示するように、複数のストレージデバイス530、540を含むストレージシステム503が含まれている。少なくとも一つのストレージバス502が、少なくとも一つのコントローラ511を少なくとも一つのコンピュータ501に結合している。様々な実施形態では、ストレージバス502は、serial advanced technology attachment(SATA)バス、serial attached
SCSI(SAS)バス、ファイバチャネルバス、メモリバスインターフェース、フラッシュメモリバス、NANDフラッシュバス、integrated drive electronics(IDE)バス、advanced technology attachment(ATA)バス、consumer electronics(CE)バス、universal serial bus(USB)バス、スマートカードバス、マルチメディアカード(MMC)バスなどを含むことができるが、これらに限定はされない。したがって、コントローラ511を、システム(例えば、コンピュータ501)と二次ストレージ(ストレージデバイス530、540のうちの少なくとも一つなど)との間に結合することができる。さらに、ストレージデバイス530、540に関連するメモリの寿命を延ばす少なくとも一つの装置510が含まれている。
[0040] As shown, a storage system 503 including a plurality of storage devices 530, 540 is included. At least one storage bus 502 couples at least one controller 511 to at least one computer 501. In various embodiments, the storage bus 502 is a serial advanced technology attachment (SATA) bus, a serial attached.
SCSI (SAS) bus, fiber channel bus, memory bus interface, flash memory bus, NAND flash bus, integrated drive electronics (IDE) bus, advanced technology attachment (ATA) bus, consumer electronics (CE) bus, universal USBs, universal USBs ) Bus, smart card bus, multimedia card (MMC) bus, etc., but are not limited thereto. Accordingly, the controller 511 can be coupled between the system (eg, computer 501) and secondary storage (such as at least one of the storage devices 530, 540). In addition, at least one device 510 is included that extends the lifetime of the memory associated with the storage devices 530, 540.

[0041]図示するように、装置510は、それぞれ複数の対応するバス521、522を介してストレージデバイス530、540に結合されたコントローラ511を含んでいる。コントローラ511は、ストレージバス502を介してコンピュータ501から受け取ったコマンドを実行するために、複数のバス521、522を使用して、複数のストレージデバイス530、540を制御し、これらストレージデバイスとデータを交換する。ストレージデバイス530、540の各々は、データを格納する少なくとも一つのモジュール又はブロック531、532、533、541、542、543を含んでいる。さらに、前述のコマンドの少なくとも一部は、寿命を縮めるコマンドであり、少なくとも一つのモジュール又はブロック531、532、533、541、542、543への悪影響を有する。使用中に、装置510は、そのような寿命を縮めるコマンドに拠らず、ストレージデバイス530、540の寿命を延ばすように働く。   [0041] As shown, the apparatus 510 includes a controller 511 coupled to the storage devices 530, 540 via a plurality of corresponding buses 521, 522, respectively. In order to execute a command received from the computer 501 via the storage bus 502, the controller 511 uses the plurality of buses 521 and 522 to control the plurality of storage devices 530 and 540, and to transfer the data with these storage devices. Exchange. Each of the storage devices 530, 540 includes at least one module or block 531, 532, 533, 541, 542, 543 for storing data. In addition, at least some of the commands described above are commands that shorten the lifetime and have an adverse effect on at least one module or block 531, 532, 533, 541, 542, 543. In use, the device 510 serves to extend the life of the storage devices 530, 540 without relying on such a command to shorten the life.

[0042]これを達成するために、コントローラ511は、対応するバス512を介して寿命評価モジュール514に結合されている。装置510は、現在時刻を供給するためにバス518を介して寿命評価モジュール514に結合された時刻モジュール517を更に含んでいる。使用中に、寿命評価モジュール514は、ストレージバス502を介してコンピュータ501からコントローラ511に通信されるコマンドを受け取るように働く。さらに、寿命評価モジュール514は、バス512を介して受け取った(一つ又は複数の)コマンドが実行されたと仮定して推定寿命を計算する。   [0042] To accomplish this, the controller 511 is coupled to the life assessment module 514 via a corresponding bus 512. Apparatus 510 further includes a time module 517 coupled to life assessment module 514 via bus 518 to provide the current time. In use, the life assessment module 514 serves to receive commands communicated from the computer 501 to the controller 511 via the storage bus 502. Further, the life evaluation module 514 calculates the estimated life assuming that the command (s) received via the bus 512 has been executed.

[0043]図5の参照を続ける。寿命推定モジュール514は、バス515を介してスロットリングモジュール516に結合されている。寿命推定モジュール514は、バス515を使用して、コントローラ511によって現在実行されているコマンドに関する推定寿命をスロットリングモジュール516に渡す。現在実行されているコマンドは、一実施形態では、バス512を介して寿命推定モジュール514によって受け取れたコマンドと同一とすることができ、また、ストレージバス502を介してコンピュータ501からコントローラ511によって受け取られたコマンドと同一とすることができる。   [0043] Continuing to refer to FIG. The life estimation module 514 is coupled to the throttling module 516 via the bus 515. The lifetime estimation module 514 uses the bus 515 to pass the estimated lifetime for the command currently being executed by the controller 511 to the throttling module 516. The command currently being executed may be identical to the command received by the lifetime estimation module 514 via the bus 512 and received by the controller 511 from the computer 501 via the storage bus 502 in one embodiment. Can be the same command.

[0044]現在時刻モジュール517は、バス518を介してスロットリングモジュール516にも結合されている。したがって、現在時刻モジュール517からの現在時刻を、スロットリングモジュール516にも渡すことができる。一実施形態で、現在時刻モジュール517は、例えば、一定のタイムインターバルで増分される単純なカウンタなどとして実施することができる。   [0044] Current time module 517 is also coupled to throttling module 516 via bus 518. Accordingly, the current time from the current time module 517 can be passed to the throttling module 516 as well. In one embodiment, the current time module 517 can be implemented, for example, as a simple counter that is incremented at regular time intervals.

[0045]スロットリングモジュール516は、バス519を介して必要寿命モジュール520に更に結合されており、バス513を介してコントローラ511に結合されている。使用中に、必要寿命モジュール520は、所望の寿命を格納するようになっている。この設計によって、スロットリングモジュール516は、バス513を介してコントローラ511に情報を渡して、現在のコマンドの実行を遅延させるようコントローラ511に指示するように、構成することができる。   [0045] The throttling module 516 is further coupled to the required life module 520 via the bus 519 and is coupled to the controller 511 via the bus 513. In use, the required life module 520 is adapted to store a desired life. With this design, the throttling module 516 can be configured to pass information to the controller 511 via the bus 513 to instruct the controller 511 to delay execution of the current command.

[0046]一実施形態で、装置510のスロットリングモジュール516は、寿命に対する現在のコマンドの実行の影響が、推定される寿命が必要寿命モジュール520に格納された必要寿命以上になるものとなるまで、現在のコマンドの実行が遅延されるように動作することができる。スロットリングモジュール516の機能は、一実施形態で、バス515を介して受け取った推定寿命がバス519を介して受け取った必要寿命より短い場合に、コントローラ511に遅延信号を供給すること程度に単純にすることができる。   [0046] In one embodiment, the throttling module 516 of the device 510 allows the impact of the current command execution on the lifetime to be such that the estimated lifetime is greater than or equal to the required lifetime stored in the required lifetime module 520. , Can operate to delay the execution of the current command. The function of the throttling module 516 is, in one embodiment, as simple as providing a delay signal to the controller 511 when the estimated lifetime received via bus 515 is shorter than the required lifetime received via bus 519. can do.

[0047]別の実施形態では、コントローラ511、寿命評価モジュール514、及びスロットリングモジュール516の上で説明した機能を、所定のタイムインターバルにおいて受け取られるコマンドのグループに適用してもよい。そのような構成によって、システム500は、寿命を縮めるであろうコマンドの短いバーストを不必要に抑制せずに、必要寿命を満足することを可能とし得る。例えば1日としてタイムインターバルを選択することによって、そのような技法は、システム500が、寿命を縮めるコマンドのより高い瞬間的性能を提供することを可能にする。というのは、1日のある期間(例えば、夜間)においては、寿命を縮めるコマンドの平均頻度と比較して少ない頻度の寿命を減らすコマンドが存在する時間のインターバルがあり得るからである。   [0047] In another embodiment, the functions described above on controller 511, life assessment module 514, and throttling module 516 may be applied to a group of commands received in a given time interval. With such a configuration, the system 500 may be able to meet the required lifetime without unnecessarily suppressing short bursts of commands that would shorten the lifetime. By selecting the time interval as, for example, one day, such a technique allows the system 500 to provide higher instantaneous performance for commands that reduce lifetime. This is because, in a certain period of the day (for example, at night), there may be a time interval in which there are commands that reduce the service life with a lower frequency compared to the average frequency of commands that shorten the service life.

[0048]一つのオプションの実施形態では、コヒーレンシ(一貫性)を時間とともに維持することができる。コヒーレンシ法の一例として、寿命を減らすコマンドAが遅延される場合には、Aのデータ又はコマンドAの実行から生じる値に依存する全てのコマンド(寿命を減らすものであってもなくても)も、遅延される。   [0048] In one optional embodiment, coherency can be maintained over time. As an example of the coherency method, if the command A that reduces the lifetime is delayed, all commands (whether or not to reduce the lifetime) that depend on the data of A or the value resulting from the execution of the command A are also included. , Be delayed.

[0049]別の実施形態では、時刻を、ディスクがパワーアップされている時刻といったように、時刻の様々な近似に置換することができる。別の実施形態では、コンピュータ501、RAIDコントローラ、及び/又は他のデバイスが、追跡される時刻の精度を高めるために追加情報を提供することができる。したがって、ストレージデバイス530、540のうちの一以上の電源が入れられる時に、時間カウンタはカウントしていない。実時間は進みつつあるので、これは、性能を不必要に下げる可能性がある。そのようなシナリオでは、コンピュータ501、ソフトウェア、及び/又はコントローラが、そのような問題に対処するために、システム500の電源が切られる時に関する情報を提供することができる。   [0049] In another embodiment, the time can be replaced with various approximations of the time, such as the time the disk is powered up. In another embodiment, the computer 501, RAID controller, and / or other device may provide additional information to increase the accuracy of the time being tracked. Thus, the time counter is not counting when one or more of the storage devices 530, 540 are powered on. This may unnecessarily degrade performance as real time is progressing. In such a scenario, the computer 501, software, and / or controller may provide information regarding when the system 500 is turned off to address such issues.

[0050]別の実施形態では、システム500は、コストを下げ性能を改善するためにストレージデバイス内冗長性機能を備えていてもよい。そのような実施形態では、データを、個々のストレージデバイス530、540の間で、その寿命に関連する任意の特徴に基づいて移動することができる(例えば、図1の動作102などを参照されたい)。例えば、ストレージデバイスの第1の部分530が、ストレージデバイスの第2の部分540のデータに対してより頻繁に上書きされるデータのセットを含むという状況があり得る。その場合に、所定の時間の後に、そのようなデータを、第1ストレージデバイス530から第2ストレージデバイス540に移動することができ、今後、第1ストレージデバイス530又は一以上のブロック/モジュール531、532、533を、より低い頻度で書き込まれるデータを格納するために使用するか、更なる使用から退かせることができる。   [0050] In another embodiment, the system 500 may include an intra-storage device redundancy feature to reduce cost and improve performance. In such embodiments, data can be moved between individual storage devices 530, 540 based on any characteristics related to their lifetime (see, eg, operation 102 in FIG. 1). ). For example, there may be a situation where the first portion 530 of the storage device includes a set of data that is overwritten more frequently than the data in the second portion 540 of the storage device. In that case, after a predetermined time, such data can be moved from the first storage device 530 to the second storage device 540, and in the future the first storage device 530 or one or more blocks / modules 531, 532, 533 can be used to store data that is written less frequently or withdraw from further use.

[0051]このために、ストレージデバイスウェアを適当に分散させて、あるストレージデバイスが、グループの他のストレージデバイスに対してあまりにも早すぎる時点で障害を発生することを防ぐことができる。もちろん、本技法は、異なるストレージデバイスの間だけではなく、その一部にも適用することができる。このために、任意のメモリコンポーネントの寿命を、そのような形で管理することができる。   [0051] To this end, storage deviceware can be appropriately distributed to prevent one storage device from failing too early relative to the other storage devices in the group. Of course, the technique can be applied not only between different storage devices, but also part thereof. For this reason, the lifetime of any memory component can be managed in such a way.

[0052]何れの場合であっても、コントローラ511は、書込みを減らし、及び/又は書込みを分散するために構成され得る。この特徴によって、適当なストレージデバイス530、540の寿命を延ばすことができる。そのような技法を実行する一つの例示的方法を、図6の説明中に示す。   [0052] In any case, the controller 511 may be configured to reduce writes and / or distribute writes. This feature can extend the life of a suitable storage device 530, 540. One exemplary method for performing such a technique is shown in the description of FIG.

[0053]図6は、別の実施形態による、所望の寿命持続時間が推定された寿命持続時間を超える場合に、メモリの寿命を縮める動作を遅延させる方法600を示している。オプションとして、本方法600を、図5のシステム500を使用して実行することができ、及び/又は、更なるオプションでは図1〜4の技法のいずれかを組み込むことができる。しかし、もちろん、方法600を任意の所望の形で実行することができる。それでも、前述の定義が、この説明中にあてはまり得る。   [0053] FIG. 6 illustrates a method 600 for delaying an operation to reduce the lifetime of a memory when a desired lifetime duration exceeds an estimated lifetime duration according to another embodiment. As an option, the present method 600 may be performed using the system 500 of FIG. 5 and / or further options may incorporate any of the techniques of FIGS. Of course, however, the method 600 can be performed in any desired manner. Nevertheless, the above definitions may apply in this description.

[0054]動作601を開始すると、方法600は、コントローラ(例えば、図5のコントローラ511など)によって継続され、コンピュータ(例えば、コンピュータ501など)によって少なくとも一つのストレージデバイス(例えば、ストレージデバイス530、540など)へ発行されるコマンドを待つ602。コマンドがコントローラによって受け取られると、この方法は、判断603に進み、この時に、コントローラは、動作602で受け入れられたコマンドが寿命を縮めるコマンド(例えば、消去動作、書込み動作など)であるか否かを判定する。判断603で、現在受け取られているコマンドが寿命を縮めるものではないと判定される場合には、そのようなコマンドは、動作607によって単純に処理することができる。   [0054] Upon initiating operation 601, method 600 is continued by a controller (eg, controller 511 of FIG. 5) and at least one storage device (eg, storage devices 530, 540) by a computer (eg, computer 501). 602 for a command issued to If a command is received by the controller, the method proceeds to decision 603, where the controller determines whether the command accepted in operation 602 is a command that shortens life (eg, an erase operation, a write operation, etc.). Determine. If the decision 603 determines that the currently received command does not reduce life, such a command can simply be processed by the operation 607.

[0055]一方、判断603で、現在受け取られているコマンドが実際に寿命を縮めるものであると判定される場合には、推定寿命を、動作602で受け取られたコマンド、以前の寿命、及び現在時刻(例えば、時刻モジュール517を介してなど)に基づいて、寿命評価モジュール(例えば、寿命エスティメータモジュール514など)によって計算する。動作604を参照されたい。一実施形態では、以前の寿命は、寿命推定モジュールの以前の状態を表すことができる。別の実施形態では、以前の寿命は、少なくとも一つのストレージデバイスの一以上の特性を測定することによって得ることができる。   [0055] On the other hand, if the decision 603 determines that the currently received command is actually one that shortens the lifetime, then the estimated lifetime is calculated as the command received at the operation 602, the previous lifetime, and the current Based on the time (eg, via the time module 517, etc.), the life evaluation module (eg, life estimator module 514, etc.) calculates. See operation 604. In one embodiment, the previous life may represent a previous state of the life estimation module. In another embodiment, the previous lifetime can be obtained by measuring one or more characteristics of at least one storage device.

[0056]如何なる場合でも、そのような寿命評価モジュールによって推定される寿命は、その後、スロットリングモジュール(例えば、スロットリングモジュール516など)に供給される。判断605では、スロットリングモジュールが、寿命評価モジュールから受け取られた推定寿命がスロットリングモジュールに送られた必要寿命より短い場合に、スロットリングが必要であると判定する。スロットリングが必要な場合には、方法600は、動作606において、寿命を縮めるコマンドを遅延させる(例えば、抑制などによって)ことによって進行する。しかし、推定寿命が必要寿命より短くはない場合には、方法600は、上で示した動作607に進む。   [0056] In any case, the lifetime estimated by such a lifetime assessment module is then provided to a throttling module (eg, throttling module 516, etc.). At decision 605, the throttling module determines that throttling is necessary if the estimated life received from the life assessment module is shorter than the required life sent to the throttling module. If throttling is required, the method 600 proceeds at operation 606 by delaying (eg, by suppressing) a command that shortens life. However, if the estimated lifetime is not shorter than the required lifetime, the method 600 proceeds to operation 607 shown above.

[0057]具体的には、動作606で、スロットリングモジュールが、コントローラを使用して、寿命を縮めるコマンドの実行を抑制することができる。一実施形態で、そのような抑制は、寿命評価モジュールによって推定される寿命が必要寿命以上になるまで、コントローラを使用して寿命を縮めるコマンドの実行を遅延させることによって実施することができる。   [0057] Specifically, at operation 606, the throttling module can use the controller to suppress execution of a command that shortens life. In one embodiment, such suppression can be implemented by using the controller to delay execution of a command that reduces the lifetime until the lifetime estimated by the lifetime assessment module is greater than or equal to the required lifetime.

[0058]別の実施形態では、抑制を、所定の時間期間内に判定し、後続の所定の時間期間にコマンドに適用することができる。そのような実施形態では、所定のタイムインターバル内で寿命をどれほど縮めることができるかに関して限度を設けることができる。更に別の実施形態では、あるタイムインターバル内にどれほど寿命を縮めることができるかに関する限度を、一以上の以前のタイムインターバルにおいて判定することができる。更に別の実施形態では、抑制を、複数の保留中の動作の分析に基づいて決定し、寿命を縮めない動作を、寿命を縮める動作又はそのような寿命を縮める動作に依存する動作の前に実行することを可能とし得る。   [0058] In another embodiment, the suppression can be determined within a predetermined time period and applied to the command during a subsequent predetermined time period. In such an embodiment, a limit can be placed on how much the lifetime can be shortened within a given time interval. In yet another embodiment, a limit on how much life can be shortened within a time interval can be determined in one or more previous time intervals. In yet another embodiment, the suppression is determined based on an analysis of a plurality of pending actions, and an action that does not reduce life is prior to an action that shortens or relies on such action to reduce the life. It may be possible to perform.

[0059]この設計によって、必要最小寿命を保証するために寿命を縮める動作を制御するデータストレージシステムを提供することができる。したがって、そのような最小必要寿命に対して寿命を縮める動作の影響を推定することができ、寿命を縮める動作の頻度を、適応的に制約することができる。   [0059] This design can provide a data storage system that controls operations that reduce the life to guarantee the required minimum life. Therefore, it is possible to estimate the influence of the operation that shortens the lifetime with respect to the minimum required lifetime, and it is possible to adaptively restrict the frequency of the operation that shortens the lifetime.

[0060]図7は、別の実施形態による、メモリの寿命を測定するグラフィカルユーザインターフェース700を示している。オプションとして、このグラフィカルユーザインターフェース700を、図1〜6の機能及びアーキテクチャの下で実施することができる。しかし、もちろん、グラフィカルユーザインターフェース700を任意の所望の環境で実施してもよい。やはり、前述の定義が、この説明中にあてはまり得ることにも留意されたい。   [0060] FIG. 7 illustrates a graphical user interface 700 for measuring memory lifetime, according to another embodiment. As an option, this graphical user interface 700 may be implemented under the functions and architecture of FIGS. Of course, however, the graphical user interface 700 may be implemented in any desired environment. It should also be noted that the above definitions may apply during this description.

[0061]図示するように、様々な表示を、メモリの寿命に関連する少なくとも一つの特徴を反映して提示することができる。一実施形態で、そのような特徴は、図1の動作102で特定されるものであってもよい。しかし、もちろん、この寿命関連の特徴は、メモリの寿命に少なくとも部分的に関連する任意の所望の特徴であってもよい。例えば、図5のシステム500では、この特徴を、処理され及び/又はコンピュータ501に単純に渡されるために図示のモジュールのいずれかからコントローラ511によって取り出されるものとすることができ、そしてこのコンピュータ501は、ソフトウェアアプリケーションプログラム(例えば、プラグインなど)の制御の下で関連する表示を提示することができる。   [0061] As shown, various displays can be presented reflecting at least one characteristic associated with the lifetime of the memory. In one embodiment, such features may be those identified in operation 102 of FIG. However, of course, this lifetime related feature may be any desired feature that is at least partially related to the lifetime of the memory. For example, in the system 500 of FIG. 5, this feature may be retrieved by the controller 511 from any of the illustrated modules to be processed and / or simply passed to the computer 501 and the computer 501. Can present relevant displays under the control of a software application program (eg, a plug-in, etc.).

[0062]例えば、前述の表示は、一実施形態では、一以上のメモリについて残っている寿命の量を示すゲージ702を含むことができる。そのような実施形態では、ゲージ702は、時間の経過に伴い実行された寿命を縮める動作の回数の関数として残っている総メモリ寿命の長さを示すことができる。別の実施形態では、前述の表示は、以前の使用の外挿に基づき、抑制動作の一時停止を仮定した寿命を示す推定値705を示すことができる。   [0062] For example, the foregoing display may include a gauge 702 that, in one embodiment, indicates the amount of life remaining for one or more memories. In such an embodiment, the gauge 702 can indicate the length of total memory life remaining as a function of the number of operations that reduce the life performed over time. In another embodiment, the above display may show an estimate 705 indicating a lifetime assuming a pause in the restraining operation based on extrapolation of previous usage.

[0063]別の実施形態では、前述の表示は、一以上のメモリについて最小限の量の寿命が残っていることを示す警告704を含むことができる。そのような寿命は、例えば、メモリ使用量履歴データに基づいて推定することができる。この設計によって、ユーザは、所定の時間の間にメモリを交換しなければならない状況などについて警告を受けることができる。もちろん、任意の所望の表示を使用して、メモリの寿命に関連する様々な情報を報告する他の実施形態が考えられる。   [0063] In another embodiment, the aforementioned indication may include a warning 704 indicating that a minimum amount of lifetime remains for one or more memories. Such a lifetime can be estimated based on, for example, memory usage history data. This design allows the user to be warned about situations such as when the memory must be replaced during a predetermined time. Of course, other embodiments are contemplated that use any desired display to report various information related to the lifetime of the memory.

[0064]図8は、別の実施形態による、差情報を利用してメモリ内の書込み動作を減らす方法800を示している。オプションとして、この方法800を、図1〜7の機能及びアーキテクチャに関連して実行してもしなくてもよい。しかし、もちろん、方法800を、任意の所望の環境で実施してもよい。やはり、前述の定義が、この説明中にあてはまり得ることにも留意されたい。   [0064] FIG. 8 illustrates a method 800 that utilizes difference information to reduce write operations in memory, according to another embodiment. As an option, the method 800 may or may not be performed in connection with the functionality and architecture of FIGS. Of course, however, the method 800 may be performed in any desired environment. It should also be noted that the above definitions may apply during this description.

[0065]図示するように、まず、メモリに格納されたデータに対して実行される書込み動作が特定される。動作802を参照されたい。この説明では、そのような書込み動作は、メモリに格納されたデータの変更をもたらす全ての動作を含み得る。さらに、そのような書込み動作を、そのような動作に関連する書込みコマンド、書込み動作自体などを傍受することによって任意の所望の方法で特定することができる。   [0065] As shown, a write operation to be performed on data stored in memory is first identified. See operation 802. In this description, such a write operation may include all operations that result in modification of data stored in memory. Further, such a write operation can be identified in any desired manner by intercepting a write command associated with such an operation, the write operation itself, and the like.

[0066]動作804に示すように、次に、書込み動作の結果とメモリに格納されたデータとの間の差を求める。この説明では、前述の差は、少なくとも部分的に、メモリに格納されたデータの第1状態と、前述の書込み動作から生じる第2状態との間の全ての差を反映することができる。   [0066] As shown in operation 804, the difference between the result of the write operation and the data stored in the memory is then determined. In this description, the aforementioned differences can reflect, at least in part, all differences between the first state of data stored in the memory and the second state resulting from the aforementioned write operation.

[0067]別の実施形態では、メモリに格納された任意のデータの間の差を、求めることができる。例えば、メモリの異なる位置からのデータの差を求めるように、ファイルの新しい変更された版が、作成され、メモリの新しい位置に書き込まれてもよい。オプションとして、データの位置を、ハッシュ、ブルームフィルタなどに基づいて特定することができる。このために、同一データの異なるインスタンスがメモリ内の異なる位置に書き込まれる一つの例示的実施形態では、求められた差が、データの位置を含んでいてもよく、必ずしもデータ自体を含まなくてもよい。   [0067] In another embodiment, the difference between any data stored in memory can be determined. For example, a new modified version of the file may be created and written to a new location in memory to determine the difference in data from different locations in memory. Optionally, the location of the data can be identified based on a hash, Bloom filter, etc. For this reason, in one exemplary embodiment where different instances of the same data are written to different locations in memory, the determined difference may include the location of the data, but not necessarily the data itself. Good.

[0068]一実施形態では、差に関連する差情報を、メモリ(例えば、データが格納されるのと同一のメモリなど)に格納することができる。別の実施形態では、差情報を、後に異なる実施形態の説明中に詳しく述べる態様で、別々のバッファに格納することもできる。差情報が、少なくとも部分的に動作804で求められる差を記述する全ての情報を含むことができることに留意されたい。後に説明する実施形態の議論においてやがて明白になるように、差情報は、一実施形態では、命令セットを利用して格納することができる。やはり以下に説明するように、そのような命令セットは、様々な実施形態では、適応的に変更し、及び/又は動的に拡張することができる。   [0068] In one embodiment, difference information related to the difference may be stored in a memory (eg, the same memory in which the data is stored, etc.). In another embodiment, the difference information may be stored in separate buffers in a manner that will be detailed later in the description of the different embodiments. Note that the difference information can include all information that describes the difference determined at least in part at operation 804. As will become apparent in the discussion of embodiments described below, the difference information may be stored using an instruction set in one embodiment. As also described below, such instruction sets can be adaptively modified and / or dynamically expanded in various embodiments.

[0069]このために、書込み動作を、差情報を利用して減らすことができる。動作806を参照されたい。この設計によって、書込み動作のそのような減少が、オプションで、メモリの寿命をのばすことができる。   [0069] To this end, write operations can be reduced utilizing difference information. See operation 806. With this design, such a reduction in write operations can optionally extend the life of the memory.

[0070]以下、より例示的な情報を、様々なオプションのアーキテクチャ及び特徴に関して示す。なお、前述のフレームワークを、ユーザの希望に従って、これらのアーキテクチャ及び特徴を用いて、実施してもしなくてもよい。例えば、一つの例示的システムを、差情報に基づいて書込み情報を減らす一つの例示的な方法の実施について示す。以下の情報が、例示のために示され、いかなる形でも限定的と解釈されてはならないことに強く留意されたい。次の特徴のいずれをも、説明される他の特徴を除外して又は除外せずにオプションで組み込むことができる。   [0070] In the following, more exemplary information is presented regarding various optional architectures and features. Note that the above-described framework may or may not be implemented using these architectures and features according to the user's wishes. For example, one exemplary system is shown for implementation of one exemplary method for reducing write information based on difference information. It is strongly noted that the following information is presented for illustrative purposes and should not be construed as limiting in any way. Any of the following features may optionally be incorporated with or without the other features described.

[0071]図9は、別の実施形態による、メモリ内の書込み動作を減らすシステム900を示している。オプションとして、このシステム900を、図8の方法800を実行し、及び/又は、更なるオプションで図1〜7の方法又は技法のいずれかを組み込むために実施することができる。しかし、もちろん、システム900を、任意の所望の態様で使用してもよい。やはり、前述の定義が、この説明中にあてはまり得る。   [0071] FIG. 9 illustrates a system 900 that reduces write operations in memory, according to another embodiment. As an option, the system 900 may be implemented to perform the method 800 of FIG. 8 and / or to optionally incorporate any of the methods or techniques of FIGS. Of course, however, the system 900 may be used in any desired manner. Again, the above definitions may apply during this description.

[0072]図示するように、システム900は、下に説明する態様で入出力(I/O)バス902を介してストレージデバイス930に結合されたコンピュータ901を含んでいる。I/Oバス902は、読取り経路903及び書込み経路904を含んでいる。ストレージデバイス930は、複数のストレージブロック931、932、933を含んでいる。ストレージブロック931、932、933は、コンピュータ901によって書き込まれ、読み取られる。   [0072] As shown, system 900 includes a computer 901 coupled to a storage device 930 via an input / output (I / O) bus 902 in the manner described below. The I / O bus 902 includes a read path 903 and a write path 904. The storage device 930 includes a plurality of storage blocks 931, 932, and 933. The storage blocks 931, 932, and 933 are written and read by the computer 901.

[0073]やがて明白になるように、ストレージブロック931、932、933の各々の所定の部分934を、差情報を格納するために割り振ることができる。当該差情報は、対応するストレージブロック931、932、933の残りの部分935に格納されたデータに対して行われる、コンピュータ901による全ての変更を反映するものである。様々な実施形態では、所定の部分934のサイズは、ユーザが設定することができる。さらに、そこに格納される差情報は、任意の形態をとることができる。   [0073] As will become apparent, a predetermined portion 934 of each of the storage blocks 931, 932, 933 can be allocated to store difference information. The difference information reflects all changes made by the computer 901 to the data stored in the remaining portion 935 of the corresponding storage block 931, 932, 933. In various embodiments, the size of the predetermined portion 934 can be set by the user. Furthermore, the difference information stored therein can take any form.

[0074]表1は、差情報の例を表す一つの候補フォーマットを示している(複数の差情報を、ストレージブロック931、932、933の各所定の部分934に格納することができる)。

Figure 0005814335

[0074] Table 1 shows one candidate format that represents an example of difference information (a plurality of difference information can be stored in each predetermined portion 934 of storage blocks 931, 932, 933).
Figure 0005814335

[0075]この実施形態では、オペレーションコードは、対応するストレージブロック931、932、933の残りの部分935に格納されたデータに対して実行される動作を表すことができる。そのような動作の例は、end(終了)、replace(置換)、move up(上に移動)、move down(下に移動)、delete(削除)、insert(挿入)、及び/又はさらに言えば任意の他の動作を含むことができるが、これらに限定はされない。オプションとして、そのような動作のそれぞれが、コンパクト表現用の関連するコード(例えば、replace=‘001’、move up=‘010’など)を有し得る。   [0075] In this embodiment, the operation code may represent an operation to be performed on the data stored in the remaining portion 935 of the corresponding storage block 931, 932, 933. Examples of such operations include end, replace, move up, move down, move down, delete, insert, and / or more Any other action may be included, but is not limited to these. Optionally, each such operation may have associated code for a compact representation (eg, replace = '001', move up = '010', etc.).

[0076]さらに、ソース開始アドレス及びサイズが、動作の対象になるべき、対応するストレージブロック931、932、933の残りの部分935内に格納されたデータを指し、そのサイズを示す(それぞれ)ことができる。さらに、動作が、データの置換/変更などを要求する状況では、データ自体を、差情報の構成要素として格納することができる。更に別のオプションとして、圧縮アルゴリズムを、より効率的なストレージのために差情報に適用することができる。別のオプションとして、動作がデータの移動を要求する状況では、データが元のストレージブロックに含まれているので、必ずしもデータ自体ではなく、データのソース位置を指定することができる。   [0076] Further, the source start address and size refer to the data stored in the remaining portion 935 of the corresponding storage block 931, 932, 933 to be operated on, and indicate its size (respectively) Can do. Further, in situations where the operation requires data replacement / change, etc., the data itself can be stored as a component of the difference information. As yet another option, a compression algorithm can be applied to the difference information for more efficient storage. As another option, in situations where the operation requires data movement, the source location of the data can be specified, not necessarily the data itself, since the data is contained in the original storage block.

[0077]別の実施形態では、新しい動作を、適応的に作成することができる。例えば、第1動作の繰り返しシーケンスを、新しい第2動作によって置換することができる。そのような新しい第2動作は、第1動作のシーケンスを記述するものであってもよい。このように、新しい動作を適応的に作成することができ、システム900が、新しい応用例にそれ自体を最適に適応させることができる。   [0077] In another embodiment, new actions can be created adaptively. For example, the repeating sequence of the first action can be replaced by a new second action. Such a new second action may describe a sequence of the first actions. In this way, new actions can be created adaptively and system 900 can optimally adapt itself to new applications.

[0078]もちろん、表1のデータ構造は、例示のみのために示したものであって、いかなる形であれ限定的と解釈されてはならない。例えば、差情報のインスタンスを、単純に、置換されるデータに含める(複雑なコマンドなどを伴わずに)ことができる。   [0078] Of course, the data structure in Table 1 is shown for illustrative purposes only and should not be construed as limiting in any way. For example, an instance of difference information can simply be included in the data to be replaced (without complicated commands or the like).

[0079]さらに、メモリ内の書込み動作を減らすために、装置910が設けられている。かかる装置910は、複数の一体化バッファ921、922、923を含む一体化メモリ920を含んでいる。一実施形態では、一体化バッファ921、922、923のそれぞれのサイズを、所定のサイズ(例えば、4Kbなど)を有するものとすることができる。当該所定のサイズは、単一の動作でストレージブロック931、932、933のそれぞれに書き込み得る最小ブロック部分に相関するサイズであってもよい。さらに、様々な実施形態では、一体化バッファ921は、オンチップストレージ、外部メモリ、DRAM、SRAMなどであってもよい。   [0079] Furthermore, an apparatus 910 is provided to reduce write operations in the memory. Such a device 910 includes an integrated memory 920 that includes a plurality of integrated buffers 921, 922, 923. In one embodiment, each size of the integrated buffers 921, 922, 923 may have a predetermined size (eg, 4 Kb). The predetermined size may be a size that correlates to a minimum block portion that can be written to each of the storage blocks 931, 932, and 933 in a single operation. Further, in various embodiments, the integrated buffer 921 may be on-chip storage, external memory, DRAM, SRAM, and the like.

[0080]すぐに明白になるように、一体化メモリバッファ921、922、923は、それぞれ、対応するストレージブロック931、932、933の差情報(例えば、表1を参照されたい)のインスタンスを保持する。即ち、複数の一体化メモリバッファうちの第1のバッファ921は、複数のストレージブロックのうちの第1のブロック931の差情報のインスタンスを保持し、複数の一体化メモリバッファのうちの第2のバッファ922は、複数のストレージブロックのうちの第2のブロック932の差情報のインスタンスを保持し、複数の一体化メモリバッファのうちの第3のバッファ923は、複数のストレージブロックのうちの第3のブロック933の差情報のインスタンスを保持し、以下同様である。   [0080] As will be readily apparent, the unified memory buffers 921, 922, 923 hold instances of difference information (eg, see Table 1) for the corresponding storage blocks 931, 932, 933, respectively. To do. That is, the first buffer 921 of the plurality of integrated memory buffers holds an instance of the difference information of the first block 931 among the plurality of storage blocks, and the second buffer of the plurality of integrated memory buffers. The buffer 922 holds an instance of the difference information of the second block 932 of the plurality of storage blocks, and the third buffer 923 of the plurality of integrated memory buffers is the third of the plurality of storage blocks. Hold the instance of the difference information in block 933, and so on.

[0081]装置910は、バス914を介して一体化メモリ920に結合された更新モジュール912を更に含んでいる。更新モジュール912は、一体化メモリバッファ921、922、923に格納された差情報を対応するストレージブロック931、932、及び933に書き込むためのものである。一実施形態では、そのような書込みは、一体化メモリバッファ921、922、923のうちの一つに差情報の少なくとも一つのインスタンスが書き込まれる(したがって、ストレージブロック931、932、及び933のうち適当な一つへの最小書込みサイズを構成する)時に開始し得る。この書込みを達成するために、更新モジュール912は、バス915を介してストレージデバイス930に結合されている。更に図示するように、更新モジュール912の出力は、読取り経路903を介してI/Oバス902に結合されている。   [0081] Apparatus 910 further includes an update module 912 that is coupled to integrated memory 920 via bus 914. The update module 912 is for writing the difference information stored in the integrated memory buffers 921, 922, and 923 into the corresponding storage blocks 931, 932, and 933. In one embodiment, such writing causes at least one instance of the difference information to be written to one of the unified memory buffers 921, 922, 923 (and thus suitable of storage blocks 931, 932, and 933). Configure a minimum write size to one). To accomplish this write, update module 912 is coupled to storage device 930 via bus 915. As further shown, the output of update module 912 is coupled to I / O bus 902 via read path 903.

[0082]さらに、差計算モジュール911が、読取り経路バス903を介して更新モジュール912に結合され、書込み経路バス904を介してI/Oバス902に結合され、さらに、バス913を介して一体化メモリ920に結合されている。使用中に、差計算モジュール911は、ストレージデバイス930からデータを読み取ることができ、さらに、関連するストレージブロック931、932、及び933及び/又は一体化メモリバッファ921、922、923からの差情報を使用して、そのようなデータの現在の状態を再構成することができる。   [0082] Further, a difference calculation module 911 is coupled to the update module 912 via the read path bus 903, coupled to the I / O bus 902 via the write path bus 904, and further integrated via the bus 913. Coupled to memory 920. In use, the difference calculation module 911 can read data from the storage device 930 and can also provide difference information from the associated storage blocks 931, 932, and 933 and / or the integrated memory buffers 921, 922, 923. Can be used to reconstruct the current state of such data.

[0083]差計算モジュール911は、必要に応じて、まずデータの現在の状態を再構成し(上の読取り動作に類似する)、そのような現在の状態と書込み動作(コンピュータ901によって開始される)の後に生じる状態との間の差を特定し、関連するストレージブロック931、932、及び933を更新するのに使用される差情報の一以上のインスタンスを一体化メモリバッファ921、922、923に移植することによって、そのようなデータをストレージデバイス930に書きこむことが更に可能である。そのような読取り動作及び書込み動作に関するさらなる情報を、以下、図10及び11の説明中に示す。   [0083] The difference calculation module 911 first reconstructs the current state of the data as needed (similar to the read operation above), and such current state and write operation (initiated by the computer 901). ) And the one or more instances of the difference information used to update the associated storage blocks 931, 932, and 933 into the unified memory buffers 921, 922, 923. By porting, it is further possible to write such data to the storage device 930. Further information regarding such read and write operations is provided below in the description of FIGS.

[0084]様々な実施形態では、差計算モジュール911は、前述の差を特定するために任意の所望の技法を使用することができる。例えば、様々なストリング照合アルゴリズム、データ移動推定技法などを、例えば利用することができる。さらなる追加の実施形態では、差を、バイト単位で求めることができる。   [0084] In various embodiments, the difference calculation module 911 can use any desired technique to identify the aforementioned differences. For example, various string matching algorithms, data movement estimation techniques, etc. can be utilized, for example. In yet additional embodiments, the difference can be determined in bytes.

[0085]さらに、差の計算は、どのバイトストリングが挿入されるかを検出すること、どのバイトストリングが削除されるかを検出すること、どのバイトストリングが置換されるかを検出すること、どのバイトストリングがコピーされるかを検出すること、バイトストリングが値の追加によって更新されるか否かを判定すること、ストレージブロックのコピーを検出しそれらへの参照を作成すること、ブロック分割を検出すること、ブロック結合を検出することなどのうちの任意の一以上のステップを用いてもよい。   [0085] Further, the difference calculation detects which byte string is inserted, detects which byte string is deleted, detects which byte string is replaced, which Detect whether byte strings are copied, determine whether byte strings are updated by adding values, detect copies of storage blocks and create references to them, detect block splits Any one or more of the following steps may be used: detecting a block combination.

[0086]図10は、一実施形態による、差情報を使用してメモリを読み取る方法1000を示している。オプションとして、この方法1000を、図9のシステム900を使用して実行し、及び/又は更なるオプションでは、必要に応じて図1〜8の技法のいずれかを組み込むことができる。しかし、もちろん、方法1000を、任意の所望の態様で使用してもよい。ここでも、前述の定義が、この説明中にあてはまり得る。   [0086] FIG. 10 illustrates a method 1000 for reading memory using difference information, according to one embodiment. Optionally, the method 1000 may be performed using the system 900 of FIG. 9, and / or further options may incorporate any of the techniques of FIGS. Of course, however, the method 1000 may be used in any desired manner. Again, the above definitions may apply during this description.

[0087]図示するように、方法1000は、コンピュータ(例えば、コンピュータ901など)による要求に従ってストレージ(例えば、ストレージデバイス930など)からブロック(例えば、図9のブロック931、932、933など)を読み取ることによって動作1001で開始し得る。読み取られたストレージブロックデータは、次に、更新モジュール(例えば、更新モジュール912など)に送られる。次に、読取り動作に応答して、差情報が、ストレージブロック(コンピュータ要求に関連する)に対応する一体化バッファ(例えば、合体するバッファ921、922、923など)から及び/又はストレージブロック自体から読み取られる。動作1002を参照されたい。差情報の適当なソースは、要求された情報が一体化バッファから対応するストレージブロックに読取り要求時に書き込まれたか否かに依存し得る。オプションとして、差情報を、フラッシュ内のデータの間に散在させることができる。さらに、特定のデータに関する差を、一以上のグループにグループ化してもよい。   [0087] As illustrated, the method 1000 reads blocks (eg, blocks 931, 932, 933, etc. of FIG. 9) from a storage (eg, storage device 930, etc.) as requested by a computer (eg, computer 901, etc.). To start at operation 1001. The read storage block data is then sent to an update module (eg, update module 912, etc.). Then, in response to the read operation, the difference information is obtained from an integrated buffer (eg, buffered buffers 921, 922, 923, etc.) corresponding to the storage block (related to the computer request) and / or from the storage block itself. Read. See operation 1002. The appropriate source of difference information may depend on whether the requested information was written from the unified buffer to the corresponding storage block at the time of the read request. Optionally, the difference information can be interspersed between data in the flash. Furthermore, differences regarding specific data may be grouped into one or more groups.

[0088]次に、動作1003で、更新モジュールは、動作1001で読み取られた対応のブロックに対して、動作1002からの差情報に反映された差を適用する。このために、動作1003で再構成されたデータを、読取り経路(例えば、読取り経路903など)を介してコンピュータに送ることができる。動作1004を参照されたい。   [0088] Next, at operation 1003, the update module applies the difference reflected in the difference information from operation 1002 to the corresponding block read at operation 1001. For this purpose, the data reconstructed in operation 1003 can be sent to the computer via a read path (eg, read path 903, etc.). See operation 1004.

[0089]様々な実施形態では、前述のデータ読取り動作は、論理ストレージブロック番号から物理ストレージブロック番号へのマッピングを含み得る。さらに、方法1000は、読取りに関連する誤り検出及び誤り訂正を提供することができる。そのような読取りデータの誤り検出及び誤り訂正は、さらに、データを回復し、回復されたデータを別のストレージ位置に再配置することを試みる再読取り動作を含むことができる。例えば、回復されたデータのそのような再配置は、論理ストレージブロック変換を用いることができ、及び/又は候補ストレージブロックの誤り率情報に基づくものとすることができる。   [0089] In various embodiments, the data read operation described above may include a mapping from logical storage block numbers to physical storage block numbers. Further, the method 1000 can provide error detection and error correction associated with reading. Such error detection and error correction of read data may further include a reread operation that attempts to recover the data and relocate the recovered data to another storage location. For example, such relocation of recovered data can use logical storage block conversion and / or can be based on error rate information of candidate storage blocks.

[0090]図11は、一実施形態による、差情報を使用してメモリに書き込む方法1100を示している。オプションとして、この方法1100を、図9のシステム900を使用して実行し、及び/又は、更なるオプションでは、必要に応じて図1〜8、10の技法のいずれかを組み込むことができる。しかし、もちろん、方法1100を、任意の所望の態様で使用してもよい。さらに、前述の定義が、この説明中にあてはまり得る。   [0090] FIG. 11 illustrates a method 1100 for writing to memory using difference information, according to one embodiment. As an option, the method 1100 may be performed using the system 900 of FIG. 9 and / or further options may incorporate any of the techniques of FIGS. Of course, however, the method 1100 may be used in any desired manner. Furthermore, the above definitions may apply during this description.

[0091]図10の読取り方法1000に類似して、方法1100は、コンピュータ(例えば、コンピュータ901など)による書込み要求の対象であるストレージ(例えば、ストレージデバイス930など)からブロック(例えば、図9のブロック931、932、933など)を読み取ることによって、動作1101で開始し得る。読み取られたストレージブロックデータは、その後、更新モジュール(例えば、更新モジュール912など)に送られる。次に、動作1102で、差情報を、ストレージブロック(コンピュータ要求に関連する)に対応する一体化バッファ(例えば、合体するバッファ921、922、923など)から及び/又はストレージブロック自体から読み取る。次に、動作1103で、更新モジュールが、動作1101で読み取られた対応のブロックに動作1102からの差情報に反映された差を適用して、読み取られ又は書き込まれるデータを再構成する。   [0091] Similar to the reading method 1000 of FIG. 10, the method 1100 includes a block (eg, of FIG. 9) from a storage (eg, a storage device 930) that is subject to a write request by a computer (eg, the computer 901, etc.). Reading block 931, 932, 933, etc.) may begin at operation 1101. The read storage block data is then sent to an update module (eg, update module 912). Next, at operation 1102, the difference information is read from the unified buffer (eg, coalesced buffers 921, 922, 923, etc.) corresponding to the storage block (associated with the computer request) and / or from the storage block itself. Next, at operation 1103, the update module applies the difference reflected in the difference information from operation 1102 to the corresponding block read at operation 1101 to reconstruct the data to be read or written.

[0092]このために、動作1103で再構成されるデータを、差計算モジュール(例えば、差計算モジュール911など)に送り、コンピュータによって要求された書込み動作の実行から生じるはずのデータの状態と比較することができる。動作1104を参照されたい。このために、再構成されたデータと書込み動作の実行から生じるはずのデータの状態との間の差が、特定される。一実施形態では、そのような差は、データを更新するためのアプリケーション(コンピュータ上で動作する)によって引き起こされる可能性がある。そのような更新は、バイトのストリングの置換、バイトのストリングの挿入、バイトのストリングの削除、バイトのストリングのコピーなどを含むことができるが、これらに限定はされない。   [0092] To this end, the data reconstructed in operation 1103 is sent to a difference calculation module (eg, difference calculation module 911, etc.) and compared with the state of the data that should result from the execution of the write operation requested by the computer. can do. See operation 1104. For this, the difference between the reconstructed data and the state of the data that should result from performing the write operation is identified. In one embodiment, such a difference may be caused by an application (running on a computer) for updating data. Such updates can include, but are not limited to, replacing a string of bytes, inserting a string of bytes, deleting a string of bytes, copying a string of bytes, and the like.

[0093]動作1105では、動作1104で計算された差に関連する差情報を、動作1104で計算された少なくとも一つの差が存在するブロックに対応する適切な一体化バッファに付加することができる。そのような付加は、一体化メモリ内の一体化バッファの末尾に書き込むことによって達成することができる。一実施形態では、そのような付加は、さらに、一体化バッファの圧縮解除、データの付加、及び適当な一体化バッファの再圧縮を含むことができる。オプションとして、一体化バッファメモリを、オンデマンドで一体化バッファに再割振りすることができる。   [0093] In operation 1105, difference information associated with the difference calculated in operation 1104 may be added to an appropriate unified buffer corresponding to the block in which at least one difference calculated in operation 1104 exists. Such addition can be accomplished by writing to the end of the unified buffer in the unified memory. In one embodiment, such additions may further include unified buffer decompression, data addition, and appropriate unified buffer recompression. Optionally, the unified buffer memory can be reallocated to the unified buffer on demand.

[0094]オプションの実施形態では、差情報を、データに対して実行される機能(例えば、書込みなど)を記述する動作として格納することができる。例えば、差情報は、Bツリー内で実行される動作から生じる変化を反映することができ、したがって、そのような動作に関する差を表すことができる。そのようなBツリーは、オプションで、データベース、メールサーバ、ファイルシステムなどによって利用することができる。   [0094] In an optional embodiment, the difference information may be stored as an operation that describes a function (eg, writing) performed on the data. For example, the difference information can reflect changes resulting from operations performed within the B-tree, and thus can represent differences for such operations. Such B-trees can optionally be used by databases, mail servers, file systems, and the like.

[0095]次に、判断1106で、一体化バッファをテストして、それらが満杯であるかどうかを判定する。どの一体化バッファも満杯ではない場合に、方法1100は、動作1110に進む。一方で、少なくとも一つの一体化バッファが満杯である場合には、方法1100は、動作1107に進む。動作1107では、全ての満杯の一体化バッファを、差情報に付加する。さらに、そのような満杯の一体化バッファは、動作1112に示すように空にされる(再利用などのために)。   [0095] Next, decision 1106 tests the unified buffers to determine if they are full. If no unified buffer is full, the method 1100 proceeds to operation 1110. On the other hand, if at least one unified buffer is full, method 1100 proceeds to operation 1107. In operation 1107, all full unified buffers are added to the difference information. Further, such a full unified buffer is emptied (for reuse, etc.) as shown in operation 1112.

[0096]さらに、差情報が満杯であるか否かを判定する(動作1114)。方法1100は、差情報が満杯ではないと判定される場合には動作1110に進む。しかし、差情報が満杯であるとの判定に応答して、差情報からの変化をデータに適用する。動作1116に留意されたい。さらに、動作1118に示すように、適用された変更を有するデータのブロックを書き込み、古いデータを破棄する。さらに、動作1120に示すように、差情報を空にする。このために、書き込みを減らし、ブロックに基づくストレージの信頼性を改善するためにメモリブロックにまたがって書き込みを分散させるために、書き込まれるデータと既存データとの間の差を使用するデータストレージシステムを、提供することができる。   [0096] Further, it is determined whether the difference information is full (operation 1114). Method 1100 proceeds to operation 1110 if the difference information is determined not to be full. However, in response to determining that the difference information is full, changes from the difference information are applied to the data. Note operation 1116. Further, as shown in operation 1118, the block of data having the applied changes is written and the old data is discarded. Further, as shown in operation 1120, the difference information is emptied. To this end, a data storage system that uses the difference between written data and existing data to reduce writes and distribute writes across memory blocks to improve block-based storage reliability. Can be offered.

[0097]様々な実施形態では、前述の実施形態で述べたメモリは、機械的ストレージデバイス(例えば、SATAディスクドライブ、SASディスクドライブ、ファイバチャネルディスクドライブ、IDEディスクドライブ、ATAディスクドライブ、CEディスクドライブ、USBディスクドライブ、スマートカードディスクドライブ、MMCディスクドライブなど)及び/又は非機械的ストレージデバイス(例えば、半導体に基づくものなど)を含むことができる。そのような非機械的メモリは、例えば、揮発性メモリ又は不揮発性メモリを含むことができる。様々な実施形態では、不揮発性メモリデバイスは、フラッシュメモリを含むことができる(例えば、セルあたり単一ビットのNORフラッシュメモリ、セルあたり複数ビットのNORフラッシュメモリ、セルあたり単一ビットのNANDフラッシュメモリ、セルあたり複数ビットのNANDフラッシュメモリ、セルあたり複数レベル複数ビットのNANDフラッシュ、大ブロックフラッシュメモリなど)。メモリの様々な例を本明細書で示すが、様々な原理を、その寿命がそれに対して実行される様々な動作に起因して減らされ得る任意のタイプのメモリに適用できることに留意されたい。   [0097] In various embodiments, the memory described in the previous embodiments is a mechanical storage device (eg, SATA disk drive, SAS disk drive, Fiber Channel disk drive, IDE disk drive, ATA disk drive, CE disk drive). USB disk drives, smart card disk drives, MMC disk drives, etc.) and / or non-mechanical storage devices (eg, semiconductor based ones). Such non-mechanical memory can include, for example, volatile memory or non-volatile memory. In various embodiments, the non-volatile memory device can include flash memory (eg, single bit NOR flash memory per cell, multiple bit NOR flash memory per cell, single bit NAND flash memory per cell) Multi-bit NAND flash memory per cell, multi-level multi-bit NAND flash per cell, large block flash memory, etc.). Although various examples of memory are shown herein, it should be noted that various principles can be applied to any type of memory whose lifetime can be reduced due to various operations performed thereon.

[0098]図12は、様々なアーキテクチャ及び/又は様々な前の実施形態の機能を実施できる例示的システム1200を示している。例えば、例示的システム1200は、前の実施形態のいくつかで示したコンピュータであってもよい。また、上に示した様々な装置を、システム1200のコンポーネントとしてもよい。   [0098] FIG. 12 illustrates an example system 1200 that can implement various architectures and / or functions of various previous embodiments. For example, the exemplary system 1200 may be the computer shown in some of the previous embodiments. Also, the various devices shown above may be components of the system 1200.

[0099]図示するように、システム1200は、通信バス1202に接続された少なくとも一つのホストプロセッサ1201を含んで提供される。また、システム1200は、メインメモリ1204を含む。制御論理(ソフトウェア)及びデータが、メインメモリ1204に格納され、メインメモリ1204は、ランダムアクセスメモリ(RAM)の形をとることができる。   [0099] As shown, a system 1200 is provided that includes at least one host processor 1201 connected to a communication bus 1202. The system 1200 also includes a main memory 1204. Control logic (software) and data are stored in main memory 1204, which can take the form of random access memory (RAM).

[00100]システム1200は、また、グラフィックスプロセッサ1206及びディスプレイ1208すなわちコンピュータモニタを含む。システム1200は、二次ストレージ1210を含むこともできる。二次ストレージ1210は、例えば、ハードディスクドライブ及び/又は、フロッピディスクドライブ、磁気テープドライブ、コンパクトディスクドライブなどを表すリムーバブルストレージドライブを含む。リムーバブルストレージドライブは、周知の方法でリムーバブルストレージモジュールから読み取り、及び/又はこれに書き込む。   [00100] The system 1200 also includes a graphics processor 1206 and a display 1208 or computer monitor. System 1200 can also include secondary storage 1210. Secondary storage 1210 includes, for example, hard disk drives and / or removable storage drives representing floppy disk drives, magnetic tape drives, compact disk drives, and the like. The removable storage drive reads from and / or writes to the removable storage module in a well-known manner.

[00101]コンピュータプログラム、又はコンピュータ制御論理アルゴリズムを、メインメモリ1204及び/又は二次ストレージ1210に格納することができる。そのようなコンピュータプログラムは、実行時に、システム1200が様々な機能を実行することを可能にする。メモリ1204、ストレージ1210、及び/又は任意の他のストレージは、コンピュータ可読媒体の可能な例である。   [00101] Computer programs or computer control logic algorithms may be stored in main memory 1204 and / or secondary storage 1210. Such a computer program enables system 1200 to perform various functions when executed. Memory 1204, storage 1210, and / or any other storage are possible examples of computer-readable media.

[00102]一実施形態で、様々な前の図面のアーキテクチャ及び/又は機能を、ホストプロセッサ1201、グラフィックスプロセッサ1206、二次ストレージ1210、ホストプロセッサ1201とグラフィックスプロセッサ1206の双方の能力の少なくとも一部が可能な集積回路(図示せず)、チップセット(すなわち、関連する機能を実行するモジュールとして働くように設計され、そのようなモジュールとして販売される集積回路のグループなど)、並びに/或いは、さらに言えば任意の他の集積回路で実施することができる。   [00102] In one embodiment, the architecture and / or functionality of the various previous drawings is changed to at least one of the capabilities of the host processor 1201, graphics processor 1206, secondary storage 1210, both host processor 1201 and graphics processor 1206. Integrated circuit (not shown), a chipset (ie, a group of integrated circuits designed and marketed as modules that perform related functions), and / or Furthermore, it can be implemented in any other integrated circuit.

[00103]さらに、様々な先述の図面のアーキテクチャ及び/又は機能を、汎用コンピュータシステム、回路基板システム、エンターテイメント目的の専用ゲーム機システム、特定用途向けシステム、及び/又は任意の他の所望のシステムで実施することができる。例えば、システム1200は、デスクトップコンピュータ、ラップトップコンピュータ、及び/又は任意の他のタイプの論理の形態をとることができる。さらに、システム1200は、携帯情報端末(PDA)デバイス、携帯電話機デバイス、テレビジョンなどを含むがこれらに限定はされない様々な他のデバイスの形態をとることができる。   [00103] In addition, the architecture and / or functionality of the various previous drawings may be used in general purpose computer systems, circuit board systems, dedicated gaming machine systems for entertainment purposes, application specific systems, and / or any other desired system. Can be implemented. For example, system 1200 can take the form of a desktop computer, a laptop computer, and / or any other type of logic. Further, system 1200 can take the form of various other devices including, but not limited to, personal digital assistant (PDA) devices, mobile phone devices, televisions, and the like.

[00104]さらに、図示しないが、システム1200を、通信のためにネットワーク[例えば、遠隔通信ネットワーク、ローカルエリアネットワーク(LAN)、無線ネットワーク、インターネットなどの広域ネットワーク(WAN)、ピアツーピアネットワーク、ケーブルネットワークなど]に結合することができる。   [00104] Further, although not shown, system 1200 may be configured to communicate with a network [eg, a telecommunication network, a local area network (LAN), a wireless network, a wide area network (WAN) such as the Internet, a peer-to-peer network, a cable network, etc. ] Can be combined.

[00105]様々な実施形態を上に説明したが、これらが、限定ではなく例としてのみ提供されたことを理解されたい。したがって、好ましい実施形態の広さ及び範囲は、上に説明した例示的実施形態によって限定されるのではなく、添付の特許請求の範囲及びその均等物に従ってのみ定義されなければならない。   [00105] While various embodiments have been described above, it should be understood that these are provided by way of example only and not limitation. Accordingly, the breadth and scope of the preferred embodiments should not be limited by the exemplary embodiments described above, but should be defined only in accordance with the appended claims and their equivalents.

Claims (20)

一以上の不揮発性メモリにおける書込み動作の回数を削減するステップと、
前記不揮発性メモリの少なくとも一部の残っている寿命を推定するステップと、
推定された前記残っている寿命及び前記寿命に関連する特徴グラフィカルユーザインターフェースで視覚的に表示するステップであって、前記特徴が、期間あたりの前記動作の回数の単位で示された動作レートを含む、ステップと、
を備え、前記推定するステップが前記削減するステップに関連して実行される方法。
Reducing the number of write operations in one or more non-volatile memories;
Estimating a remaining lifetime of at least a portion of the non-volatile memory;
Visually displaying the estimated remaining life and characteristics associated with the life on a graphical user interface , wherein the characteristics represent an operation rate indicated in units of the number of operations per period. Including, steps ,
And wherein the estimating step is performed in connection with the reducing step.
前記書込み動作の回数を削減するステップは、書込み動作の結果と前記不揮発性メモリに格納されたデータとの間の差を求めることを含んでいる、請求項1に記載の方法。 Step includes determining the difference between the stored result of the write operation as in the non-volatile memory data, The method according to claim 1 to reduce the number of times of the write operation. 前記書込み動作の回数を削減するステップは、少なくとも部分的にコントローラによって実行され、前記コントローラは、ストレージバスを介してコンピュータからコマンドを受け取ることが可能であり、かつ前記不揮発性メモリを制御し、前記不揮発性メモリとデータを交換することが可能である、請求項1に記載の方法。 The step of reducing the number of write operations is performed at least in part by a controller, the controller being capable of receiving commands from a computer via a storage bus and controlling the non-volatile memory, The method of claim 1, wherein data can be exchanged with non-volatile memory. 前記残っている寿命の推定は、以前の寿命に少なくとも部分的に基づく、請求項1に記載の方法。   The method of claim 1, wherein the remaining lifetime estimate is based at least in part on a previous lifetime. 少なくとも一つのストレージデバイスの一以上の特性を測定して前記以前の寿命を取得するステップを更に備える請求項4に記載の方法。   The method of claim 4, further comprising measuring one or more characteristics of at least one storage device to obtain the previous lifetime. 前記視覚的に表示するステップが、ゲージを用いて表示するステップである、請求項1に記載の方法。   The method according to claim 1, wherein the step of visually displaying is a step of displaying using a gauge. 前記不揮発性メモリがフラッシュメモリを含んでいる、請求項1に記載の方法。   The method of claim 1, wherein the non-volatile memory includes flash memory. ストレージバスを介してコンピュータからコマンドを受け取ることが可能なコントローラであって、一以上の不揮発性メモリを制御し、該不揮発性メモリとデータを交換することが可能なコントローラと、
前記コントローラから受け取ったコマンド情報に少なくとも部分的に基づいて、前記不揮発性メモリの残っている寿命を推定することの可能な寿命推定モジュールと、
推定された前記残っている寿命及び前記寿命に関連する特徴グラフィカルユーザインターフェースで示すことの可能な視覚表示であって、前記特徴が、期間あたりの前記動作の回数の単位で示された動作レートを含む、視覚表示と、
を備えるシステムであって、前記コントローラは、前記不揮発性メモリへの書込み動作を削減して、推定された前記残っている寿命を増加することが更に可能である、システム。
A controller capable of receiving commands from a computer via a storage bus, the controller capable of controlling one or more nonvolatile memories and exchanging data with the nonvolatile memories;
A lifetime estimation module capable of estimating a remaining lifetime of the non-volatile memory based at least in part on command information received from the controller;
A visual display capable of showing in a graphical user interface the estimated remaining remaining life and characteristics associated with the life , wherein the characteristics are indicated in units of the number of times of the movement per period Including visual display ,
The controller is further capable of reducing write operations to the non-volatile memory to increase the estimated remaining lifetime.
現在の状態と、書込み動作の後に生じる状態との間の差を特定することの可能な差計算モジュールを更に備える請求項8に記載のシステム。   9. The system of claim 8, further comprising a difference calculation module capable of identifying a difference between a current state and a state that occurs after a write operation. 前記寿命推定モジュールは、以前の寿命に少なくとも部分的に基づいて、前記残っている寿命を推定することが可能である、請求項8に記載のシステム。   The system of claim 8, wherein the lifetime estimation module is capable of estimating the remaining lifetime based at least in part on a previous lifetime. 前記以前の寿命が、少なくとも一つのストレージデバイスの一以上の特性を測定することにより取得される、請求項10に記載のシステム。   The system of claim 10, wherein the previous lifetime is obtained by measuring one or more characteristics of at least one storage device. 前記視覚表示がゲージを含んでいる、請求項8に記載のシステム。   The system of claim 8, wherein the visual indication includes a gauge. 前記不揮発性メモリがフラッシュメモリを含んでいる、請求項8に記載のシステム。   The system of claim 8, wherein the non-volatile memory includes flash memory. 前記フラッシュメモリを更に備える請求項13に記載のシステム。   The system of claim 13, further comprising the flash memory. コンピュータシステムに含まれる有形コンピュータ可読媒体に実装されたコンピュータプログラムであって、当該プログラムは、実行されると、
一以上の不揮発性メモリにおける書込み動作の回数を削減する機能と、
前記不揮発性メモリの少なくとも一部の残っている寿命を推定する機能と、
推定された前記残っている寿命及び前記寿命に関連する特徴グラフィカルユーザインターフェースで視覚的に表示する機能であって、前記特徴が、期間あたりの前記動作の回数の単位で示された動作レートを含む、機能と、
を前記コンピュータシステムに実行させ、前記残っている寿命の推定が、前記書込み動作の回数の削減に関連して実行される、コンピュータプログラム。
A computer program implemented on a tangible computer-readable medium included in a computer system, the program being executed,
A function to reduce the number of write operations in one or more nonvolatile memories;
A function of estimating a remaining lifetime of at least a part of the nonvolatile memory;
A function of visually displaying the estimated remaining remaining life and characteristics related to the life on a graphical user interface , wherein the characteristics have an operation rate indicated in units of the number of operations per period; Including, functions ,
A computer program, wherein the remaining life estimation is performed in connection with reducing the number of write operations .
前記書込み動作の回数の削減は、書込み動作の結果と前記不揮発性メモリに格納されたデータとの間の差を求めることを含んでいる、請求項15に記載のコンピュータプログラム。 The reduction in the number of write operations includes determining the difference between the stored result of the write operation as in the non-volatile memory data, the computer program of claim 15. 前記残っている寿命の推定は、以前の寿命に少なくとも部分的に基づく、請求項15に記載のコンピュータプログラム。   The computer program product of claim 15, wherein the remaining lifetime estimate is based at least in part on a previous lifetime. 少なくとも一つのストレージデバイスの一以上の特性を測定して前記以前の寿命を取得する機能を更に前記コンピュータシステムに実行させる、請求項17に記載のコンピュータプログラム。   The computer program product of claim 17, further causing the computer system to perform a function of measuring one or more characteristics of at least one storage device to obtain the previous lifetime. 前記視覚的に表示する機能が、ゲージを用いて表示する、請求項15に記載のコンピュータプログラム。   The computer program according to claim 15, wherein the visually displaying function displays using a gauge. 前記不揮発性メモリがフラッシュメモリを含んでいる、請求項15に記載のコンピュータプログラム。   The computer program according to claim 15, wherein the non-volatile memory includes a flash memory.
JP2013261095A 2006-11-24 2013-12-18 Reduction of writing and estimation and display of remaining life of nonvolatile memory Expired - Fee Related JP5814335B2 (en)

Applications Claiming Priority (14)

Application Number Priority Date Filing Date Title
US86084306P 2006-11-24 2006-11-24
US60/860,843 2006-11-24
US87824207P 2007-01-03 2007-01-03
US60/878,242 2007-01-03
US11/852,138 2007-09-07
US11/852,082 US7809900B2 (en) 2006-11-24 2007-09-07 System, method, and computer program product for delaying an operation that reduces a lifetime of memory
US11/852,138 US20080126685A1 (en) 2006-11-24 2007-09-07 System, method, and computer program product for reducing memory write operations using an instruction set
US11/852,104 US7904619B2 (en) 2006-11-24 2007-09-07 System, method, and computer program product for reducing memory write operations using difference information
US11/852,117 US7747813B2 (en) 2006-11-24 2007-09-07 Multi-memory device system and method for managing a lifetime thereof
US11/852,104 2007-09-07
US11/852,117 2007-09-07
US11/852,129 2007-09-07
US11/852,082 2007-09-07
US11/852,129 US7904764B2 (en) 2006-11-24 2007-09-07 Memory lifetime gauging system, method and computer program product

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2012243564A Division JP5448013B2 (en) 2006-11-24 2012-11-05 System, method, and computer program product for delaying operations that reduce memory life

Publications (2)

Publication Number Publication Date
JP2014089734A JP2014089734A (en) 2014-05-15
JP5814335B2 true JP5814335B2 (en) 2015-11-17

Family

ID=39430372

Family Applications (4)

Application Number Title Priority Date Filing Date
JP2009538408A Expired - Fee Related JP5171840B2 (en) 2006-11-24 2007-11-21 Method and storage system for delaying operation to shorten memory life
JP2012243564A Expired - Fee Related JP5448013B2 (en) 2006-11-24 2012-11-05 System, method, and computer program product for delaying operations that reduce memory life
JP2013261095A Expired - Fee Related JP5814335B2 (en) 2006-11-24 2013-12-18 Reduction of writing and estimation and display of remaining life of nonvolatile memory
JP2013261097A Pending JP2014078262A (en) 2006-11-24 2013-12-18 Techniques for multi-memory device lifetime management

Family Applications Before (2)

Application Number Title Priority Date Filing Date
JP2009538408A Expired - Fee Related JP5171840B2 (en) 2006-11-24 2007-11-21 Method and storage system for delaying operation to shorten memory life
JP2012243564A Expired - Fee Related JP5448013B2 (en) 2006-11-24 2012-11-05 System, method, and computer program product for delaying operations that reduce memory life

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2013261097A Pending JP2014078262A (en) 2006-11-24 2013-12-18 Techniques for multi-memory device lifetime management

Country Status (4)

Country Link
JP (4) JP5171840B2 (en)
CN (1) CN101578587B (en)
TW (1) TWI475569B (en)
WO (1) WO2008063647A2 (en)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7904619B2 (en) 2006-11-24 2011-03-08 Sandforce, Inc. System, method, and computer program product for reducing memory write operations using difference information
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
US7904672B2 (en) 2006-12-08 2011-03-08 Sandforce, Inc. System and method for providing data redundancy after reducing memory writes
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
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
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
US8291152B2 (en) * 2009-01-07 2012-10-16 Silicon Motion, Inc. Method for operating non-volatile memory and data storage system using the same
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
US8392648B2 (en) * 2009-07-22 2013-03-05 Hitachi, Ltd. Storage system having a plurality of flash packages
JP5002719B1 (en) 2011-03-10 2012-08-15 株式会社東芝 Information processing device, external storage device, host device, relay device, control program, and information processing device control method
JP5405513B2 (en) 2011-03-22 2014-02-05 株式会社東芝 MEMORY SYSTEM, NONVOLATILE MEMORY DEVICE, NONVOLATILE MEMORY DEVICE CONTROL METHOD, AND PROGRAM
CN103890724B (en) 2011-08-19 2017-04-19 株式会社东芝 Information processing apparatus, method for controlling information processing apparatus, host device, and performance evaluation method used for external storage device
US9064579B2 (en) 2012-07-16 2015-06-23 Kabushiki Kaisha Toshiba Semiconductor memory apparatus, data transmission device, and recording method
US10037172B2 (en) 2016-02-09 2018-07-31 Toshiba Memory Corporation Memory system and controlling method
CN106980566B (en) * 2017-03-27 2020-05-26 联想(北京)有限公司 Display control method and storage device

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0573435A (en) * 1991-09-12 1993-03-26 Nagano Oki Denki Kk Storage element monitoring/protecting device
JP3938208B2 (en) * 1991-11-28 2007-06-27 株式会社日立製作所 Information equipment with flash memory
JPH06338195A (en) * 1993-05-31 1994-12-06 Nec Corp Device for managing number of writing times of electrically erasable nonvolatile memory
JPH0764868A (en) * 1993-08-24 1995-03-10 Melco:Kk Storage updating device
JPH0765592A (en) * 1993-08-25 1995-03-10 Nec Corp Nonvolatile memory
JPH09237162A (en) * 1996-02-23 1997-09-09 Hewlett Packard Co <Hp> Scanning data storage system, its stylus and medium abrasion managing methods and remaining life display device
JPH10187548A (en) * 1996-12-24 1998-07-21 Toyota Autom Loom Works Ltd Storage device
JPH113287A (en) * 1997-06-12 1999-01-06 Hitachi Ltd Storage device and storage area management method used for the device
JP4079506B2 (en) * 1997-08-08 2008-04-23 株式会社東芝 Method for controlling nonvolatile semiconductor memory system
JP3557511B2 (en) * 1997-08-27 2004-08-25 沖電気工業株式会社 Semiconductor disk drive life calculation method
JP3544859B2 (en) * 1998-05-11 2004-07-21 富士通株式会社 Secondary storage device using nonvolatile semiconductor memory
JP3242890B2 (en) * 1998-12-16 2001-12-25 株式会社ハギワラシスコム Storage device
US6427186B1 (en) * 1999-03-30 2002-07-30 Frank (Fong-Long) Lin Memory, interface system and method for mapping logical block numbers to physical sector numbers in a flash memory, using a master index table and a table of physical sector numbers
US7130807B1 (en) * 1999-11-22 2006-10-31 Accenture Llp Technology sharing during demand and supply planning in a network-based supply chain environment
TW520514B (en) * 2001-08-02 2003-02-11 Macronix Int Co Ltd Circuit and method of qualification test for non-volatile 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
KR100484485B1 (en) * 2002-10-01 2005-04-20 한국전자통신연구원 Method for storing data in non-volatile memory and apparatus therefor
US6910106B2 (en) * 2002-10-04 2005-06-21 Microsoft Corporation Methods and mechanisms for proactive memory management
JP2004145934A (en) * 2002-10-22 2004-05-20 Matsushita Electric Ind Co Ltd Disk storage device and system thereof
US7035967B2 (en) * 2002-10-28 2006-04-25 Sandisk Corporation Maintaining an average erase count in a non-volatile storage system
US6973531B1 (en) * 2002-10-28 2005-12-06 Sandisk Corporation Tracking the most frequently erased blocks in non-volatile memory systems
JP2004151944A (en) * 2002-10-30 2004-05-27 Denso Corp Method for writing data in non-volatile storage device, its program and device, and onboard electronic controller
JP2004341989A (en) * 2003-05-19 2004-12-02 Matsushita Electric Ind Co Ltd Memory card pack and memory card
TWI220031B (en) * 2003-07-01 2004-08-01 Delta Electronics Inc Method and apparatus for time-relevant accessing a non-volatile memory in an electrical equipment
US7480760B2 (en) * 2003-12-17 2009-01-20 Wegener Communications, Inc. Rotational use of memory to minimize write cycles
JP4211627B2 (en) * 2004-02-12 2009-01-21 日本電気株式会社 File recording method and file system
JP4527456B2 (en) * 2004-07-06 2010-08-18 Necインフロンティア株式会社 Memory life warning device and information processing method
JP2006092070A (en) * 2004-09-22 2006-04-06 Nec Corp Disk array device, its control method and control program
KR100917064B1 (en) * 2004-11-08 2009-09-15 이노패스 소프트웨어, 아이엔시. Static file system differencing and updating
TWI257044B (en) * 2004-11-26 2006-06-21 Hon Hai Prec Ind Co Ltd Apparatus and method for prolonging useful life of non-volatile memory
JP2006235960A (en) * 2005-02-24 2006-09-07 Fujitsu Ltd Method for increasing speed of garbage collection
JP2006236210A (en) * 2005-02-28 2006-09-07 Oki Data Corp Memory writing device
US7447944B2 (en) * 2005-04-29 2008-11-04 Freescale Semiconductor, Inc. Predictive methods and apparatus for non-volatile memory

Also Published As

Publication number Publication date
JP5171840B2 (en) 2013-03-27
JP2014078262A (en) 2014-05-01
JP2014089734A (en) 2014-05-15
JP2013084275A (en) 2013-05-09
WO2008063647A9 (en) 2008-11-27
CN101578587B (en) 2015-02-25
JP5448013B2 (en) 2014-03-19
WO2008063647A2 (en) 2008-05-29
WO2008063647A3 (en) 2008-10-16
CN101578587A (en) 2009-11-11
JP2010511225A (en) 2010-04-08
TWI475569B (en) 2015-03-01
TW200834601A (en) 2008-08-16

Similar Documents

Publication Publication Date Title
JP5814335B2 (en) Reduction of writing and estimation and display of remaining life of nonvolatile memory
US10732857B2 (en) Techniques for reducing memory write operations using coalescing memory buffers and difference information
US8230183B2 (en) Techniques for prolonging a lifetime of memory by controlling operations that affect the lifetime of the memory
US8230164B2 (en) Techniques for multi-memory device lifetime management
US8171356B2 (en) Reducing writes, and estimating and displaying estimated remaining lifetime of non-volatile memories
US10318181B2 (en) System, method, and computer program product for increasing spare space in memory to extend a lifetime of the memory
US20080126685A1 (en) System, method, and computer program product for reducing memory write operations using an instruction set
US9916087B2 (en) Method and system for throttling bandwidth based on temperature
JP4487978B2 (en) Semiconductor memory device management system, program, and semiconductor memory device management method

Legal Events

Date Code Title Description
A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140424

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140430

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140523

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140528

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20140627

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20140702

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140711

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20141111

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150311

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150311

A911 Transfer of reconsideration by examiner before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20150727

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150818

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150917

R150 Certificate of patent or registration of utility model

Ref document number: 5814335

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees