(57)【特許請求の範囲】
【請求項１】
データストレージシステムにより実行される方法であって、
フラッシュメモリの寿命を保証するステップであって、必要な最小寿命を保証するように、メモリの寿命を短縮する寿命短縮オペレーションを制御するステップと、
前記寿命を延長するステップと、を備える方法であって、
前記寿命を延長するステップが、スペア領域を増加させるステップと、該スペア領域が前記フラッシュメモリの増加量を構成できるようにするステップとを含み、
前記スペア領域を増加させるステップが、削除済みデータを検出し、前記削除済みデータで占有されている領域を使ってスペアデータの領域を増加させると共に、前記フラッシュメモリ内に格納されているデータを圧縮するステップを含む方法。
【請求項２】
前記圧縮するステップが、可逆圧縮を行うステップである、請求項１に記載の方法。
【請求項３】
前記圧縮するステップが、不可逆圧縮を行うステップである、請求項１に記載の方法。
【請求項４】
前記フラッシュメモリが複数のブロックを備えており、前記スペア領域を増加させるステップが、前記複数のブロックのうちスペアブロックの個数を増加させるステップを更に含む請求項１に記載の方法。
【請求項５】
前記複数のブロックの寿命の終わりを等化するステップをさらに含む請求項４に記載の方法。
【請求項６】
前記フラッシュメモリ内に格納されている重複データを削除することによって前記スペア領域を増加させるステップを更に含む請求項１に記載の方法。
【請求項７】
前記フラッシュメモリが、シングルビットパーセルＮＯＲ型フラッシュメモリ、マルチビットパーセルＮＯＲ型フラッシュメモリ、シングルビットパーセルＮＡＮＤ型フラッシュメモリ、及びマルチビットパーセルＮＡＮＤ型フラッシュメモリのうちの少なくとも１つを含む請求項１に記載の方法。
【請求項８】
データストレージシステムにより実行される方法であって、
フラッシュメモリの複数のブロックの少なくとも一部に格納されたデータを圧縮するステップと、
前記フラッシュメモリの前記複数のブロックのうちスペアブロックの個数を増加させるステップであって、削除済みデータを検出し、前記削除済みデータで占有されている領域を使ってスペアデータの領域を増加させると共に、前記圧縮するステップを含むステップと、
前記フラッシュメモリの前記複数のブロックの寿命の終わりを等化するステップであって、前記増加させられた個数のスペアブロックの少なくとも一部を選択することを含むステップと、
前記フラッシュメモリの寿命を延長するステップであって、前記等化するステップを含むステップと、
前記フラッシュメモリの寿命を保証するステップであって、必要な最小寿命を保証するように、メモリの寿命を短縮する寿命短縮オペレーションを制御するステップを含む方法。
【請求項９】
前記圧縮するステップが、可逆圧縮を行うステップである請求項８に記載の方法。
【請求項１０】
前記圧縮するステップが、不可逆圧縮を行うステップである請求項８に記載の方法。
【請求項１１】
前記増加させるステップが、前記フラッシュメモリ内に格納されている重複データを削除するステップを更に含む、請求項８に記載の方法。
【請求項１２】
前記フラッシュメモリが、シングルビットパーセルＮＯＲ型フラッシュメモリ、マルチビットパーセルＮＯＲ型フラッシュメモリ、シングルビットパーセルＮＡＮＤ型フラッシュメモリ、及びマルチビットパーセルＮＡＮＤ型フラッシュメモリのうちの少なくとも１つを含む請求項８に記載の方法。
【請求項１３】
必要な最小寿命を保証するように、メモリの寿命を短縮する寿命短縮オペレーションを制御することによりフラッシュメモリの寿命を保証し、前記フラッシュメモリ内のスペア領域を増加させて、前記フラッシュメモリの寿命を延長する論理回路を備える装置であって、
前記スペア領域は、前記フラッシュメモリの増加量を構成することが可能であり、
前記スペア領域が、削除済みデータを検出し、前記削除済みデータで占有されている領域を使ってスペアデータの領域を増加させることと共に、前記フラッシュメモリに格納されているデータを圧縮することによって少なくとも部分的に増加させられる、装置。
【請求項１４】
前記論理回路が、システムと前記フラッシュメモリとの間に結合される請求項１３に記載の装置。
【請求項１５】
前記圧縮が可逆圧縮である、請求項１３に記載の装置。
【請求項１６】
前記圧縮が不可逆圧縮である、請求項１３に記載の装置。
【請求項１７】
前記フラッシュメモリを更に備える請求項１３に記載の装置。
【請求項１８】
前記フラッシュメモリが、シングルビットパーセルＮＯＲ型フラッシュメモリ、マルチビットパーセルＮＯＲ型フラッシュメモリ、シングルビットパーセルＮＡＮＤ型フラッシュメモリ、及びマルチビットパーセルＮＡＮＤ型フラッシュメモリのうちの少なくとも１つを含む、請求項１７に記載の装置。
【請求項１９】
前記フラッシュメモリ内のスペア領域を増加させる前記論理回路が、削除済みデータで占有されていると識別された領域を前記スペア領域に組み込むことによって少なくとも部分的に動作する、請求項１３に記載の装置。
【請求項２０】
前記フラッシュメモリ内のスペア領域を増加させる前記論理回路が、前記フラッシュメモリ内に格納されている重複データを削除することによって更に動作する、請求項１３に記載の装置。
【請求項２１】
前記スペア領域を増加させるステップが、削除済みデータで占有されていると識別された領域を前記スペア領域に組み込むステップを更に含む、請求項１に記載の方法。
【請求項２２】
前記スペアブロックの個数に対応するスペア領域が、削除済みデータで占有されていると識別された領域を組み込むことにより増加させられる、請求項８に記載の方法。
【請求項２３】
前記スペア領域を増加させるステップが、前記フラッシュメモリ内に以前に格納されたデータを圧縮して、前記以前に格納されたデータで占有されていたブロックを前記スペア領域に組み込めるようにするステップを更に含む、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本発明は、メモリに関するものであり、より具体的には、有限寿命を有するメモリに関するものである。
【背景技術】
【０００２】
[0002]不揮発性メモリ（例えば、フラッシュメモリなど）を伴う従来技術のメモリシステムでは、そのようなメモリは、書き込みに先立って消去されなければならない。特に、格納されているデータの一部が、変更されたときに、メモリの対応するブロック全体が読み出され、次いで、そのようなブロックが消去され、変更を反映するようにデータが編集され、その後、メモリのブロック全体に新しいデータを書き込まなければならない。したがって、４ＫＢのメモリページが書き込まれる場合、例えば、５１２ＫＢのメモリが書き込まれる。
【０００３】
[0003]書き込まれなければならないデータの必要量を減らすことを目的としてデータライトを順次グループ化するための従来技術がいくつか開発されている。しかし、このような技術は、よく使われるランダムライトを行うシステム（例えば、データベースシステムなど）では欠点を有する。
【０００４】
[0004]しかし、いくつかの従来技術では、ランダムデータを順次書き込み、その後、表又は類似のデータ構造体を使用してデータが配置されている場所を追跡することによってこれらの欠点を解消している。このような技術は以前の方法を改善する一方で、古いデータ（例えば、変更され、その後、新しいロケーションに格納されたデータ）がメモリ内に格納されたままになることを許す。このような古いデータ（つまり、「ゴミ」など）を取り扱うときに、典型的には１つのプロセスがそのような古いデータを含むメモリブロックを探し、そのようなブロックから有用なデータを他のメモリページにコピーする作業を、そのような古いデータのブロックが全部集められて消去されるまで、続ける。結果として、従来技術では、書き込まれるデータの量は、古いデータの回収（例えば、ガベージコレクション）を行うため、ホストコンピュータが書き込むデータの量より多くなる。例えば、消去オペレーション用に少なくとも１つの空きブロックを作成するために、ガベージコレクションで回収されたブロックから有効なデータをコピーすることができる。
【発明の概要】
【０００５】
[0005]したがって、従来技術に関連するこれらの課題及び／又は他の課題を解決する必要がある。
【０００６】
[0006]メモリの寿命を延長するためのシステム、方法、及びコンピュータプログラム製品を提供する。オペレーション中に、メモリ内のスペア領域を増加させる。それに加えて、メモリ内のスペア領域が増える結果として、メモリの寿命も延長される。
【図面の簡単な説明】
【０００７】
【図１Ａ】一実施形態による、メモリの寿命を延長するための方法を示す図である。
【図１Ｂ】一実施形態による、寿命が延長されたメモリモジュールを示す図である。
【図１Ｃ】一実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための方法を示す図である。
【図２】他の実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための技術を示す図である。
【図３】さらに他の実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための時間間隔に基づく技術を示す図である。
【図４】さらに他の実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための積分に基づく技術を示す図である。
【図５】他の実施形態による、所望の寿命時間が推定寿命時間を超えた場合の、メモリの寿命を短縮するオペレーションを遅延させるためのシステムを示す図である。
【図６】他の実施形態による、所望の寿命時間が推定寿命時間を超えた場合の、メモリの寿命を短縮するオペレーションを遅延させるための方法を示す図である。
【図７】他の実施形態による、メモリの寿命を計測するためのグラフィカルユーザインターフェースを示す図である。
【図８】他の実施形態による、差分情報を利用して、メモリ内のライトオペレーションを減らすための方法を示す図である。
【図９】他の実施形態による、メモリ内のライトオペレーションを減らすためのシステムを示す図である。
【図１０】一実施形態による、差分情報を使用してメモリを読み出すための方法を示す図である。
【図１１】一実施形態による、差分情報を使用してメモリに書き込むための方法を示す図である。
【図１２】プロセッサに基づくシステムを使用する一実施形態を示す図である。
【発明を実施するための形態】
【０００８】
[0021]図１Ａは、一実施形態による、メモリの寿命を延長するための方法１１０を示している。図に示されているように、メモリ内のスペア領域が増加する。オペレーション１１２を参照されたい。それに加えて、メモリ内のスペア領域が増える結果として、メモリの寿命も延長される。オペレーション１１４を参照されたい。
【０００９】
[0022]本発明の説明の状況では、メモリの寿命は、そのメモリが所望の程度のユーザビリティを示す期間を含むことができる。例えば、さまざまな実施形態では、そのような寿命は、確実に限定はしないが、所望の寿命、実際の寿命、推定寿命などを含んでいてもよい。さらに、ユーザビリティの程度は、いぜんとして動作可能であるコンポーネント（例えば、ブロック、セルなど）の割合、メモリ又はメモリのコンポーネントの信頼度などのユーザビリティ関連のパラメータ、及び／又はそのようなユーザビリティに関する他のパラメータを指してもよい。
【００１０】
[0023]それに加えて、本発明の説明の状況では、メモリ内のスペア領域は、使用に供することができるメモリ内の任意の領域（例えば、ブロック、セルなど）を指す。さらに、さまざまな実施形態において、メモリとして、限定はしないが、機械式ストレージデバイス（例えば、ディスクドライブなど）、ソリッドステートストレージデバイス（例えば、ダイナミックランダムアクセスメモリ（ＤＲＡＭ）、フラッシュメモリなど）、及び／又は他の任意のストレージデバイスを挙げることができる。メモリがフラッシュメモリを含む場合、フラッシュメモリとして、限定はしないが、シングルレベルセル（ＳＬＣ）デバイス、マルチレベルセル（ＭＬＣ）デバイス、ＮＯＲ型フラッシュメモリ、ＮＡＮＤ型フラッシュメモリ、ＭＬＣ  ＮＡＮＤ型フラッシュメモリ、ＳＬＣ  ＮＡＮＤ型フラッシュメモリなどを挙げることができる。一実施形態において、不揮発性メモリデバイスは、シングルビットパーセルＮＯＲ型フラッシュメモリ、マルチビットパーセルＮＯＲ型フラッシュメモリ、シングルビットパーセルＮＡＮＤ型フラッシュメモリ、マルチビットパーセルＮＡＮＤ型フラッシュメモリ、相変化メモリ、抵抗性メモリ、カーボンナノチューブメモリ、及びエレクトロマイグレーションメモリのうちの少なくとも１つを備えることができる。
【００１１】
[0024]そこで、ユーザの望みに応じて、前記のフレームワークが実装される、又は実装されない場合のあるさまざまな任意選択のアーキテクチャ及び特徴に関する説明に役立つ情報を述べる。例えば、前記の技術は、メモリ寿命を保証するか、又は引き延ばすための仕組みとともに使用できる。以下の情報は、説明に役立てることを目的として述べられており、いかなる形でも制限するものであると解釈すべきでないことに十分留意されたい。以下の特徴はどれも、説明されている他の特徴を除外して、又は除外せずに適宜に組み込むことができる。
【００１２】
[0025]図１Ｂは、一実施形態による、寿命が延長されたメモリモジュール１５０を示している。一選択として、メモリモジュール１５０は、図１Ａの方法１５０を実行するように実装してもよい。ただし、メモリモジュール１５０を所望の任意の環境に実装できることはもちろんである。前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【００１３】
[0026]図に示されているように、メモリモジュール１５０のスペアブロック１６０の個数が増加する。メモリモジュール１５０のスペアブロック１６０の個数を増やした結果、メモリモジュール１５０の寿命が延長される。一実施形態では、メモリのスペアブロック１６０の個数は、メモリモジュール１５０内に格納されているデータを圧縮することによって増加させることができる。このような圧縮は、可逆圧縮（例えば、バローズ−ウィーラー、レンペル−ジブ（ＬＺ）、ＬＺ７７、ＬＺ７８など）、又はいくつかの実施形態では、不可逆圧縮（例えば、不可逆予測コーデック、不可逆変換コーデックなど）を含むことができる。
【００１４】
[0027]圧縮を使用してスペアブロック１６０を増やした場合、圧縮比が変化することがある。他の実施形態では、メモリのスペアブロック１６０の個数は、メモリモジュール１５０内に格納されている重複データを削除することによって増加させることができる。
【００１５】
[0028]１つの選択として、メモリモジュール１５０内に格納されているデータを圧縮し、メモリモジュール１５０内に格納されている重複データを削除することによってメモリのスペアブロック１６０の個数を増やすこともできる。この場合、重複データは、残りのデータを圧縮した後に削除することができる。もちろん、データを等しく圧縮し、その後重複データを削除することもできる。
【００１６】
[0029]他の実施形態では、削除済みデータを検出し、削除済みデータで占有されている領域を使ってスペアデータの領域を増加させることによってスペア領域を増やすことができる。１つの選択として、削除済みデータを、ホスト又はＲＡＩＤコントローラから伝送するか、又はディスク上に収められているデータからディスクコントローラによって発見することができる。さらに他の実施形態では、圧縮、重複排除、及び削除済みファイルの回収の任意の組み合わせを用いて、スペア領域の大きさを増やすことができる。
【００１７】
[0030]特定の一例として、削除済みデータの圧縮及び／又は重複排除及び／又は削除を利用して、メモリモジュール１５０内のメモリの一定の量をスペアとしてとっておくことができる。この場合、保存のコストは、さもなければスペアに使用される領域に比例して減らすことができる。例えば、複数のメモリブロック１５２内に含まれるフラッシュページ１５８にデータ１５６を書き込むことができる。
【００１８】
[0031]次いで、スペアブロック１６０の数が増えるようにデータ１５６を圧縮することができる。一実施形態では、スペアブロック１６０を使用してメモリの寿命を延長することは、メモリの寿命を保証することと併せて実現することができる。
【００１９】
[0032]１つの選択として、メモリモジュール１５０のブロックの寿命の終わりを等化することができる。例えば、スペアブロック１６０は、メモリモジュール１５０のブロックの寿命の終わりを等化できるように選択することができる。この場合、メモリモジュール１５０のブロックの寿命の終わりを等化するために、メモリモジュール１５０内の異なるブロックを利用してデータを格納することができる。
【００２０】
[0033]説明すべき異なる実施形態によれば、メモリの寿命を短縮するさまざまなオペレーションを、そのような寿命を延長することを目的として制御することができる。本発明の説明の状況では、そのようなオペレーションは、ライトオペレーション、消去オペレーション、プログラムオペレーション、及び／又は前記の寿命を短縮することができる任意の他のオペレーションを指してもよい。さらに、本実施形態では、メモリ内のスペア領域をメモリブロックによって説明したが、そのような実施形態は、メモリ（例えば、メモリセル等）内のいかなるスペア領域との関連でも等しく考察できることに留意されたい。
【００２１】
[0034]図１Ｃは、一実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための方法１００を示している。１つの選択として、方法１００は、図１Ａ〜１Ｂの詳細の状況において実装することができる。ただし、方法１００を所望の任意の環境に実装できることはもちろんである。前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【００２２】
[0035]図に示されているように、メモリの寿命に関連する少なくとも１つの態様が識別されている。オペレーション１０２を参照されたい。本発明の説明の状況では、オペレーション１０２において識別されている寿命に関連する態様は、さまざまな実施形態において、期間、メモリの寿命を短縮するオペレーションの率、メモリの寿命を短縮するオペレーションの許容される総数、寿命の持続時間などを含むことができる。さらに、オペレーションの前記の許容される総数及び選択された、又は所望の寿命が与えられた場合、例示的な一実施形態において、一定期間当たりのオペレーションの数を単位とする最大平均オペレーション率を直接計算することができる。もちろん、このような例示的な態様は、まもなく明らかになる理由から、寿命の他のいかなる態様も完全に識別できるので、例示的な目的についてのみ述べられている。
【００２３】
[0036]この目的のために、その態様に基づいて、メモリの寿命を短縮する少なくとも１つのオペレーションを遅延させる。オペレーション１０４を参照されたい。したがって、そのような遅延は、オペレーション１０２で識別されたメモリ寿命の態様に少なくとも部分的に依存する形で実行することができる。本発明の説明の状況では、オペレーションの前記の遅延は、オペレーションの一部のみが遅延される状況を包含するものとみなされる。例えば、１つのオペレーションが、複数のコンポーネントを伴う状況では、そのような遅延は、そのようなオペレーションの１つ又は複数（又はすべて）の部分に適用することができる。
【００２４】
[0037]一実施形態では、オペレーションは、そのオペレーションを開始するコマンドを遅延させることによって遅延させることができる。例えば、ライトコマンド又は消去コマンドを識別したことに応答して、そのようなコマンドの実行を遅延させることができる。もちろん、他の実施形態では、オペレーション自体を単純に遅延させることができる。この設計を用いれば、この設計を用いなかったならメモリの寿命を短縮するであろう１つ又は複数のオペレーションをそのように遅延させることで、結果として、少なくとも部分的には、そのような短縮が減少する。
【００２５】
[0038]そこで、ユーザの望みに応じて、前記のフレームワークが実装される、又は実装されない場合のあるさまざまな任意選択のアーキテクチャ及び特徴に関して説明に役立つ追加情報を述べる。例えば、遅延は、多くの異なる技術を使用してさまざまな異なる方法で施すことができ、そこで、そのいくつかの例を取りあげる。
【００２６】
[0039]図２は、他の実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための技術２００を示している。１つの選択として、本発明の技術２００は、図１Ａ〜１Ｃの詳細の状況において実装することができる。ただし、技術２００を所望の任意の環境に実装できることはもちろんである。前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【００２７】
[0040]図に示されているように、技術２００では、結果としてメモリがユーザビリティの最小の程度、並びにメモリの最小の所望の寿命２０４を示すことになるオペレーション２０２の総数を考慮する。このようなデータ点から、最小の所望の寿命２０４を達成する最大平均オペレーション率２０６を算出することができる。
【００２８】
[0041]使用中、時間の経過とともに、多数の寿命短縮オペレーションを監視することができる。任意の時点において、図に示されている形で、単位時間当たりのそのようなオペレーションの総数が、最大平均オペレーション率２０６を超えた場合、いかなる超過オペレーション（その率を超えることに関わる）も、計算量だけ、又は所定の時間の長さだけ遅延させられるか、或いは寿命短縮オペレーションの事前の、又は予測される率に適応的に基づくようにすることができる。時間のそのような所定の長さは、一実施形態では、結果として最大平均オペレーション率２０６を超えない時間とすることができる。
【００２９】
[0042]さまざまな実施形態において、どのオペレーションに対し遅延を施すか（並びに、遅延それ自体の長さ）の決定は、さまざまな因子に基づくことができる。例えば、一実施形態では、遅延は、そのオペレーションを開始するアプリケーションに基づくことができる。このような実施形態では、低い優先度のアプリケーションが開始したオペレーションには遅延を施すことができるが、高い優先度のアプリケーションが開始したオペレーションには必ずしも遅延を施すことはできない（可能な場合）。
【００３０】
[0043]もちろん、アプリケーションとは無関係にオペレーションに対し遅延が施される他の実施形態も考えられる。例えば、オペレーションの実行元のアプリケーションに関係なく、特定の種類のすべてのオペレーション（例えば、消去オペレーションなど）に遅延を適用することができる。さらに、ハイブリッド方式を伴う実施形態も考えられる。
【００３１】
[0044]さらに、遅延されたオペレーションが寿命を異常に短縮するオペレーション又はオペレーションのパターンを含むことができる実施形態も考えられる。一実施態様では、これらのパターンのみを遅延させることができる。例えば、ウイルス又は粗いアプリケーションオペレーションパターンを検出し、そのようなパターンからのオペレーションのみを遅延させることができる。
【００３２】
[0045]図３は、さらに他の実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための時間間隔に基づく技術３００を示している。１つの選択として、本発明の技術３００は、図１Ｃの方法１００を実行するように実装すること及び／又はさらに図２の技術２００の状況において実装することが可能である。ただし、技術３００を所望の任意の環境に実装できることはもちろんである。ここでもまた、前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【００３３】
[0046]図２の技術と同様に、技術３００でも、結果としてメモリがユーザビリティの最小の程度、並びにメモリの最小の所望の寿命３０４を示すことになるオペレーション３０２の総数を考慮する。このようなデータ点から、最小の所望の寿命３０４を達成する最大平均オペレーション率３０６を算出することができる。使用中、時間の経過とともに、多数の寿命短縮オペレーションを監視することができる。
【００３４】
[0047]任意の時点において、図に示されている形で、単位時間当たりのそのようなオペレーションの数が、最大平均オペレーション率３０６を超えた場合、いかなる超過オペレーションも、必ずしも、無条件に遅延されるわけではない（図２の技術２００のように）。その代わりに、そのような超過オペレーションは、オペレーションが開始した時間間隔に基づいて条件付きで遅延させることができる。そのような時間間隔には、例えば、限定はしないが、時刻、曜日、月などを含むことができる。追加のいくつかの実施形態では、時間間隔は、適応的に、また動的に、最適な期間に合わせることができる。例えば、そのような適応的及び動的な調整は、１つの間隔のいくつかの部分間隔などに関する寿命短縮オペレーションの頻度のヒストグラムに基づくことができる。
【００３５】
[0048]例えば、図に示されているようにして、月曜日、火曜日、水曜日、木曜日などに過剰な数のオペレーションが識別された場合、その後の金曜日、土曜日、及び日曜日に識別される可能性の高いオペレーションの数は少なくなることを認めることができる（例えば、予想することができる）。したがって、このような超過した数のオペレーションを無条件に遅延させる代わりに、平均オペレーション率（１週間について測定したとき）が最大平均オペレーション率３０６以下となる確率に基づいて、それらのオペレーションを即座に実行できる。もちろん、これがその場合でないとわかった場合には、その後の週等においてある程度の遅延が生じることがある。前記の例は、１週間の曜日に関連して説明されているが、数週間、数カ月などにわたってメモリの変動を考慮する他のより「巨視的な」実施形態も考えられる。
【００３６】
[0049]さらに追加の実施形態では、必ずしも時間間隔ベースではないが、その代わりにメモリの使用状況の推移、及び／又はさらにはメモリの予測使用度に基づくように、オペレーションの条件付き遅延を一般化することができる。そのようないくつかの実施形態では、将来の使用度を予測すること、より正確には、超過オペレーションを遅延させることが必ずしも行われる必要がない状況などを識別することを目的として推移データを使用して所望の統計分析を実行することができる。
【００３７】
[0050]図４は、さらに他の実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための積分に基づく技術４００を示している。１つの選択として、本発明の技術４００は、図１Ｃの方法１００を実行するように実装すること及び／又はさらに図２〜３の技術２００及び３００の状況において実装することが可能である。ただし、技術４００を所望の任意の環境に実装できることはもちろんである。ここでもまた、前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【００３８】
[0051]前の技術と同様に、技術４００では、結果としてメモリがユーザビリティの最小の程度、並びにメモリの最小の所望の寿命４０４を示すことになるオペレーション４０２の総数を考慮する。このようなデータ点から、最小の望ましい寿命４０４を達成する最大平均オペレーション率４０６を算出することができる。使用中、時間の経過とともに、多数の寿命短縮オペレーションを監視することができる。
【００３９】
[0052]任意の時点において、図に示されている形で（４０８を参照）、単位時間当たりのそのようなオペレーションの数が、最大平均オペレーション率４０６を超えた場合、超過オペレーションは、必ずしも、無条件に遅延されるわけではない（図２の技術２００のように）。その代わりに、そのような超過オペレーションは、メモリの使用度を反映する積分機能に基づいて条件付きで遅延させることができる。特に、時間の経過に応じた全体的な寿命短縮オペレーション率と最大平均オペレーション率４０６との間の差の積分を、進行中に計算することができる。この目的のために、そのような積分を行って、そのようなオペレーションが最大平均オペレーション率４０６を超えることが示された場合、前記の遅延は、必ずしも行われる必要はない。
【００４０】
[0053]図５は、他の実施形態による、所望の寿命時間が推定寿命時間を超えた場合の、メモリの寿命を短縮するオペレーションを遅延させるためのシステム５００を示している。１つの選択として、本発明のシステム５００は、図１Ｃの方法１００を実行するように実装すること及び／又は図２〜４の技術のどれかをさらに適宜組み込むように実装することが可能である。ただし、システム５００は、所望の任意の方法で使用できることはもちろんである。
【００４１】
[0054]図に示されているように、複数のストレージデバイス５３０、５４０を備えるストレージシステム５０３が具備される。少なくとも１つのストレージ用バス５０２が、少なくとも１つのコントローラ５１１を少なくとも１つのコンピュータ５０１に結合する。さまざまな実施形態において、ストレージ用バス５０２として、限定はしないが、シリアルアドバンストテクノロジーアタッチメント（ＳＡＴＡ）バス、シリアル接続ＳＣＳＩ（ＳＡＳ）バス、ファイバーチャネルバス、メモリバスインターフェース、フラッシュメモリバス、ＮＡＮＤフラッシュバス、インテグレーテッドドライブエレクトロニクス（ＩＤＥ）バス、アドバンストテクノロジーアタッチメント（ＡＴＡ）バス、民生電子（ＣＥ）バス、ユニバーサルシリアルバス（ＵＳＢ）、スマートカードバス、マルチメディアカード（ＭＭＣ）バスなどが挙げられる。したがって、コントローラ５１１は、システム（例えば、コンピュータ５０１）と二次記憶装置（ストレージデバイス５３０、５４０のうちの少なくとも１つなど）との間に結合することができる。ストレージデバイス５３０、５４０に関連するメモリの寿命を延長するための少なくとも１つの装置５１０をさらに備える。
【００４２】
[0055]図に示されているように、装置５１０は、複数の対応するバス５２１、５２２を介してそれぞれストレージデバイス５３０、５４０に結合されているコントローラ５１１を備える。ストレージバス５０２を介してコンピュータ５０１から受け取ったコマンドを実行するために、コントローラ５１１は、複数のバス５２１、５２２を使用して、複数のストレージデバイス５３０、５４０との間のデータの制御及び交換を行う。ストレージデバイス５３０、５４０は、それぞれ、データを格納するために少なくとも１つのモジュール又はブロック５３１、５３２、５３３、５４１、５４２、５４３を備える。さらに、前記のコマンドのうちの少なくとも一部は、少なくとも１つのモジュール又はブロック５３１、５３２、５３３、５４１、５４２、５４３に悪影響を及ぼす寿命短縮コマンドである。使用中に、装置５１０は、そのような寿命短縮コマンドがあっても、ストレージデバイス５３０、５４０の寿命を延長する働きをする。
【００４３】
[0056]この機能を遂行するために、コントローラ５１１は、対応するバス５１２を介して寿命推定器モジュール５１４に結合されている。装置５１０は、バス５１８を介して寿命推定器モジュール５１４に結合された時間モジュール５１７をさらに備え、これにより現在時刻が得られる。使用中に、寿命推定器モジュール５１４は、ストレージバス５０２を介してコンピュータ５０１からコントローラ５１１に伝達されたコマンドを受け取る働きをする。さらに、寿命推定器モジュール５１４は、バス５１２を通じて受け取ったコマンド（複数可）が実行されたと仮定して推定寿命を計算する。
【００４４】
[0057]図５を引き続き参照すると、寿命推定モジュール５１４は、バス５１５を介してスロットリングモジュール５１６に結合されている。寿命推定モジュール５１４は、バス５１５を使用して、スロットリングモジュール５１６に、コントローラ５１１によって現在実行されているコマンドに対する推定寿命を受け渡す。現在実行されているコマンドは、一実施形態では、バス５１２を介して寿命推定器モジュール５１４が受け取ったコマンドと同じであってもよく、さらにストレージ用バス５０２を介してコンピュータ５０１からコントローラ５１１が受け取ったコマンドと同じであってもよい。
【００４５】
[0058]現在の時間モジュール５１７は、バス５１８を介してスロットリングモジュール５１６にも結合される。したがって、現在の時間モジュール５１７から得られる現在時刻は、スロットリングモジュール５１６にも受け渡すことができる。一実施形態では、現在の時間モジュール５１７は、例えば、一定の時間間隔でインクリメントする単純なカウンターなどとして実装することができる。
【００４６】
[0059]スロットリングモジュール５１６は、バス５１９を介して必要な寿命モジュール５２０とさらに結合されるだけでなく、バス５１３を介してコントローラ５１１にも結合される。使用中に、必要な寿命モジュール５２０は、所望の寿命を格納するように構成される。この設計により、スロットリングモジュール５１６は、バス５１３を介してコントローラ５１１に情報を受け渡してコントローラ５１１に現在のコマンドの実行を遅延させるように指示するように構成することもできる。
【００４７】
[0060]一実施形態では、推定寿命が必要な寿命モジュール５２０に格納されている必要な寿命より長いか、同じになるようなコマンド実行の影響が寿命に対して及ぼされるまで現在のコマンドの実行を遅延させるように装置５１０のスロットリングモジュール５１６を動作させることができる。バス５１５を介して受け取った推定寿命がバス５１９を介して受け取った必要な寿命より短ければ、スロットリングモジュール５１６の機能は、一実施形態では、遅延信号をコントローラ５１１に送るのと同じくらい単純なものであってもよい。
【００４８】
[0061]他の実施形態では、コントローラ５１１、寿命推定器モジュール５１４、及びスロットリングモジュール５１６の上述の機能は、定義済みの時間間隔で受け取ったコマンドのグループに適用することができる。このような配置構成により、システム５００は、他の方法では寿命を短縮するであろうコマンドの短いバーストをスロットリングで不必要に抑制することなく必要な寿命条件を満たすことができる。時間間隔を、例えば、１日として選択することにより、そのような技術を用いることで、システム５００は、寿命短縮コマンドに対してより高い瞬間的性能を達成することができるが、その理由は、１日のある期間（例えば、夜間など）に、寿命短縮コマンドの頻度が寿命短縮コマンドの平均的頻度と比較して低くなる時間間隔がありうるからである。
【００４９】
[0062]任意選択の一実施形態では、時間の経過に関して一貫性を維持することができる。コヒーレンシー法の一例として、寿命短縮コマンドＡが遅延される場合、Ａのデータ、又はコマンドＡの実行の結果として得られる値に依存するすべてのコマンド（寿命短縮かどうかに関係なく）も遅延される。
【００５０】
[0063]他の実施形態では、時間を、ディスクの電源が入れられている時間などの、時間のさまざまな近似で置き換えることができる。他の実施形態では、コンピュータ５０１、ＲＡＩＤコントローラ、及び／又は他のデバイスが、追跡される時間の精度を高める追加情報を供給することができる。したがって、ストレージデバイス５３０、５４０のうちの１つ又は複数がオフにされた場合には、時間カウンターのカウントは停止している。実時間は進む一方なので、この場合、性能が不必要に低下する可能性がある。このようなシナリオの下では、そのような問題に対処するため、コンピュータ５０１、ソフトウェア、及び／又はコントローラ側で、システム５００がオフにされたときの時間に関する情報を供給することができる。
【００５１】
[0064]他の実施形態では、システム５００は、コストを低減し、性能を改善するストレージデバイス内冗長性機能を備えることができる。このような実施形態では、個別のストレージデバイス５３０と５４０との間で、ストレージデバイスの寿命に関連する任意の態様に基づき、データを移動することができる（例えば、図１Ｃのオペレーション１０２などを参照）。例えば、これらのストレージデバイスのうちの第１のストレージデバイス５３０が、これらのストレージデバイスのうちの第２のストレージデバイス５４０のデータに関してより頻繁に上書きされる一組のデータを格納するという状況もありうる。このような場合、所定の長さの時間が経過した後、又はガベージコレクションの実行中、又は寿命の終わりの等化時に、又はシステムによって決定されている他のイベントの発生時に、そのようなデータを第１のストレージデバイス５３０から第２のストレージデバイス５４０に移動し、それ以降、第１のストレージデバイス５３０又はそのストレージデバイスの１つ又は複数のブロック／モジュール５３１、５３２、５３３を、あまり頻繁に書き込まれないデータの格納に使用するか、或いはこれ以降使用しないようリタイヤさせることができる。
【００５２】
[0065]この目的のために、ストレージデバイスの余命を適切に配分して、グループの一方のストレージデバイスがグループの他のストレージデバイスに関してあまりにも早すぎる時点に故障するのを回避することができる。もちろん、本発明の技術は、異なるストレージデバイス間だけでなく、それらのストレージデバイスの一部にも適用することができる。この目的のために、そのような方法でメモリコンポーネントの寿命を管理することができる。
【００５３】
[0066]したがっていかなる場合も、ライトオペレーションを減らすこと及び／又はライトオペレーションを配分することを行うためにコントローラ５１１を装備することができる。このような特徴があるため、適切なストレージデバイス５３０、５４０の寿命を延長することができる。次に、図６の説明の際に、そのような技術を実行するための例示的な一方法を述べることにする。
【００５４】
[0067]図６は、他の実施形態による、所望の寿命時間が推定寿命時間を超えた場合の、メモリの寿命を短縮するオペレーションを遅延させるための方法６００を示している。１つの選択として、本発明の方法６００は、図５のシステム５００を使用して実行すること及び／又は図１〜４の技術のどれかをさらに適宜組み込むことが可能である。ただし、方法６００は、所望のどのような方法でも使用できることはもちろんである。さらに、前記の定義は、本発明の説明全体に適用できる。
【００５５】
[0068]オペレーション６０１を起動したとき、方法６００は、コントローラ（例えば、図５のコントローラ５１１など）によって継続され、コンピュータ（例えば、コンピュータ５０１など）によって少なくとも１つのストレージデバイス（例えば、ストレージデバイス５３０、５４０など）に発行されるコマンド６０２の到来を待つ。コントローラがコマンドを受け取った後、方法は、決定６０３に進み、そのときに、コントローラは、オペレーション６０２で受け取ったコマンドが、寿命短縮コマンド（例えば、消去オペレーション、ライトオペレーションなど）であるかどうかを判定する。決定６０３において、現在受け取っているコマンドが寿命短縮コマンドでないと判定された場合、そのようなコマンドをオペレーション６０７に従って単純に処理することができる。
【００５６】
[0069]その一方で、決定６０３で、現在受け取っているコマンドが実際に寿命短縮コマンドであると判定された場合、オペレーション６０２で受け取ったコマンド、前の寿命、及び現在の時間（例えば、時間モジュール５１７などを介して）に基づき寿命推定器モジュール（例えば、寿命推定器モジュール５１４など）により推定寿命が計算される。オペレーション６０４を参照されたい。一実施形態では、前の寿命は、寿命推定器モジュールの前の状態を表すことができる。他の実施形態では、前の寿命は、少なくとも１つのストレージデバイスの１つ又は複数の特性を測定することによって得ることができる。
【００５７】
[0070]次いで、いかなる場合も、そのような寿命推定器モジュールによって推定された寿命が、スロットリングモジュール（例えば、スロットリングモジュール５１６など）に送られる。決定６０５において、スロットリングモジュールは、寿命推定器から受け取った推定寿命がスロットリングモジュールに送られた必要な寿命より短い場合にスロットリングが必要であると判定する。スロットリングが必要な場合、方法６００は、寿命短縮コマンドを遅延する（例えば、スロットリングで抑制することなど）によってオペレーション６０６において進む。しかし、推定寿命が、必要な寿命より短くない場合、方法６００は、上で述べたように、オペレーション６０７において進む。
【００５８】
[0071]特に、オペレーション６０６において、スロットリングモジュールは、コントローラを使用して寿命短縮コマンドの実行をスロットリングで抑制することができる。一実施形態では、そのようなスロットリングは、寿命推定器によって推定された寿命が必要な寿命より長いか、又は同じになるまで、コントローラを使用して寿命短縮コマンドの実行を遅延させることにより実装することができる。
【００５９】
[0072]他の実施形態では、所定の期間内にスロットリングを決定し、その後の所定の期間内にコマンドにそのスロットリングを適用することができる。そのような実施形態では、所定の時間間隔内で寿命をどれだけ短くできるかに関する制限を設けることができる。さらに他の実施形態では、一定時間間隔内で寿命をどれだけ短くできるかに関する制限を、１つ又は複数の前の時間間隔において決定することができる。さらに他の実施形態では、スロットリングは、複数の保留オペレーションの解析結果に基づいて決定することができ、これにより、寿命短縮オペレーション又はそのような寿命短縮オペレーションに依存するオペレーションに先立って寿命短縮をもたらさないオペレーションを実行することができる。
【００６０】
[0073]この設計により、必要な最小寿命を保証するように寿命短縮オペレーションを制御するデータストレージシステムを構成することができる。こうして、そのような最小の必要な寿命に対する寿命短縮オペレーションの影響を推定し、寿命短縮オペレーションの頻度を適応的に制約することができる。
【００６１】
[0074]図７は、他の実施形態による、メモリの寿命を計測するためのグラフィカルユーザインターフェース７００を示している。１つの選択として、本発明のグラフィカルユーザインターフェース７００は、図１〜６の機能及びアーキテクチャとの関連で実装することができる。ただし、グラフィカルユーザインターフェース７００は、所望の任意の環境内で使用できることはもちろんである。ここでもまた、前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【００６２】
[0075]図に示されているように、メモリの寿命に関連する少なくとも１つの態様を反映するさまざまな印を表示することができる。一実施形態では、そのような態様は、図１Ｃのオペレーション１０２で識別されている態様であってもよい。ただし、この寿命関連の態様は、メモリの寿命に少なくとも部分的に関係する任意の所望の態様を含むことができることはもちろんである。例えば、図５のシステム５００の状況では、この態様は、処理されること、及び／又はコンピュータ５０１に単純に受け渡されることについて示されているモジュールのどれかからコントローラ５１１が取り出すことができ、次いで、ソフトウェアアプリケーションプログラム（例えば、プラグインなど）の制御の下で関連する印を表示することができる。
【００６３】
[0076]例えば、前記の印は、一実施形態では、１つ又は複数のメモリについて残っている寿命の長さを示すためのゲージ７０２を含むことができる。このような実施形態では、ゲージ７０２は、メモリの余命の長さ全体を時間の経過とともに実行された寿命短縮オペレーションの数の関数として示すことができる。さらに他の実施形態では、前記の印は、事前使用度の補外に基づき、またスロットリングオペレーションの一時停止を仮定して、寿命を示すための推定７０５を含むことができる。
【００６４】
[0077]他の実施形態では、前記の印は、１つ又は複数のメモリについて最小の長さの寿命が残っていることを示すための警告７０４を含むことができる。そのような寿命は、例えば、メモリ使用量推移データに基づいて推定してもよい。この設計により、ユーザは、所定の時間内にメモリを交換すべきである状況などの警告を受け取ることができる。もちろん、メモリの寿命に関連してさまざまな情報を報告するために所望の印が使用される他の実施形態も考えられる。
【００６５】
[0078]図８は他の実施形態による、差分情報を利用して、メモリ内のライトオペレーションを減らすための方法８００を示している。１つの選択として、本発明の方法８００は、図１〜７の機能及びアーキテクチャとの関連で実行できる場合も実行できない場合もある。ただし、方法８００を所望の任意の環境で実行できることはもちろんである。前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【００６６】
[0079]図に示されているように、メモリ内に格納されているデータに対し実行されるライトオペレーションが識別されている。オペレーション８０２を参照されたい。本発明の説明の状況において、そのようなライトオペレーションは、結果としてメモリに格納されているデータを修正することになる任意のオペレーションを含むことができる。さらに、そのようなライトオペレーションは、そのようなオペレーションに関連するライトコマンド、ライトオペレーションそれ自体などをインターセプトすることにより、任意の所望の方法で識別することができる。
【００６７】
[0080]次いで、オペレーション８０４において示されているように、ライトオペレーションの結果とメモリ内に格納されているデータとの差が決定される。本発明の説明の状況において、前記の差は、メモリ内に格納されているデータの第１の状態と前記のライトオペレーションから結果として生じる第２の状態との間のどんな差をも少なくとも部分的に反映するものとしてもよい。
【００６８】
[0081]他の実施形態では、メモリ内に格納されている任意のデータの間の差を決定することができる。例えば、ファイルの新しい修正済みバージョンを作成し、メモリ内の新しいロケーションに書き込み、これにより、メモリ内の異なるロケーションからのデータの差を決定することができる。１つの選択として、データのロケーションは、ハッシュ、ブルームフィルターなどに基づいて識別することができる。この目的のために、同じデータの異なるインスタンスがメモリ内の異なるロケーションに書き込まれる例示的な一実施形態では、決定された差は、データのロケーションを含むことができるが、データそれ自体を含むことはない。
【００６９】
[0082]一実施形態では、この差に関連する差分情報をメモリ（例えば、データが格納される同じメモリなど）に格納することができる。他の実施形態では、差分情報は、後で異なる実施形態の説明の際に詳述する方法で、別のバッファ内に格納することもできる。差分情報は、オペレーション８０４で決定された差を少なくとも部分的に記述するいかなる情報をも含むことができる。後で説明する実施形態の説明のときにすぐに明らかになるように、差分情報は、一実施形態において、命令セットを使用して格納することができる。以下でも説明するように、このような命令セットは、さまざまな実施形態において、適応的に変化すること、及び／又は動的に拡張することが可能である。
【００７０】
[0083]この目的のために、ライトオペレーションは、差分情報を使用することで、縮小することができる。オペレーション８０６を参照されたい。この設計により、ライトオペレーションのこのような縮小を適宜行うことで、結果として、メモリの寿命を延長することができる。
【００７１】
[0084]そこで、ユーザの望みに応じて、前記のフレームワークが実装される、又は実装されない場合のあるさまざまな任意選択のアーキテクチャ及び特徴に関して説明に役立つ情報をさらに述べる。例えば、差分情報に基づいてライトオペレーションを減らすという例示的な一方法を実装することについて、例示的な一システムを説明する。以下の情報は、説明に役立てることを目的として述べられており、いかなる形でも制限するものであると解釈すべきでないことに十分留意されたい。以下の特徴はどれも、説明されている他の特徴を除外して、又は除外せずに適宜に組み込むことができる。
【００７２】
[0085]図９は、他の実施形態による、メモリ内のライトオペレーションを減らすためのシステム９００を示している。１つの選択として、本発明のシステム９００は、図８の方法８００を実行するように実装すること及び／又は図１〜７の方法又は技術のどれかをさらに適宜組み込むように実装することが可能である。ただし、システム９００は、所望の任意の方法で使用できることはもちろんである。さらにここでもまた、前記の定義は、本発明の説明全体に適用できる。
【００７３】
[0086]図に示されているように、システム９００は、この後すぐに説明する方法で、入力／出力（Ｉ／Ｏ）バス９０２を介してストレージデバイス９３０に結合されたコンピュータ９０１を備える。Ｉ／Ｏバス９０２は、リードパス９０３とライトパス９０４とを備える。ストレージデバイス９３０は、複数のストレージブロック９３１、９３２、９３３を備える。ストレージブロック９３１、９３２、９３３に対し、コンピュータ９０１による読み書きが行われる。
【００７４】
[0087]この後すぐに明らかにされる理由により、ストレージブロック９３１、９３２、９３３のうちのそれぞれのブロックの所定の部分９３４を割り当てて、コンピュータ９０１によって対応するストレージブロック９３１、９３２、９３３の残りの部分９３５内に格納されているデータに加えられたいかなる変更をも反映する差分情報を格納することができる。さまざまな実施形態において、所定の部分９３４のサイズは、ユーザ側で構成することができる。さらに、その部分に格納されている差分情報はどのような形態のものであってもよい。
【００７５】
[0088]表１は、差分情報のインスタンスを表すための１つの可能なフォーマットを示している（その複数のものを、ストレージブロック９３１、９３２、９３３のそれぞれの所定の部分９３４内に格納できる）。
【表１】
0005970645.tif 000002
【００７６】
[0089]本発明の実施形態では、オペレーションコードは、対応するストレージブロック９３１、９３２、９３３の残り部分９３５内に格納されているデータに対し実行されるオペレーションを表すことができる。そのようなオペレーションの例として、限定はしないが、終了、置換、上へ移動、下へ移動、削除、挿入、及び／又はそのようなことに対する、その他のオペレーションが挙げられる。１つの選択として、そのようなオペレーションは、それぞれ、コンパクトな表現用に関連コードを有する場合がある（例えば、置換＝「００１」、上へ移動＝「０１０」など）。
【００７７】
[0090]さらに、ソース開始アドレス及びサイズは、オペレーションの対象となる対応するストレージブロック９３１、９３２、９３３の残り部分９３５内に格納されているデータのサイズ（それぞれ）を指し、またそのサイズを示すことができる。さらに、置換／修正などを命令するオペレーションが実行される状況では、データそれ自体を差分情報の一構成要素として格納することができる。さらにもう１つの選択として、より効率的な格納が行えるように圧縮アルゴリズムを差分情報に適用することができる。もう１つの選択として、データの移動を命令するオペレーションが実行される状況において、データのソースロケーションを指定することができるが、そのようなデータが元のストレージブロック内に収められているため必ずしもデータそれ自体を指定することはできない。
【００７８】
[0091]他の実施形態では、新しいオペレーションを適応的に生成することができる。例えば、第１のオペレーションの反復シーケンスを、新しい第２のオペレーションで置き換えることができる。そのような新しい第２のオペレーションは、適宜、第１のオペレーションのシーケンスを記述することができる。この方法で、新しいオペレーションを、システム９００が新しいアプリケーションに最適に適合するように適応的に作成することができる。
【００７９】
[0092]もちろん、表１のデータ構造体は、説明に役立てることのみを目的として述べられており、いかなる形でも制限するものであると解釈すべきでない。例えば、差分情報のインスタンスは、置き換えられるデータを単純に含むことができる（いかなる複雑なコマンドなどをも使用せずに）。
【００８０】
[0093]メモリ内のライトオペレーションを減らすための装置９１０をさらに備える。そのような装置９１０は、複数の集合バッファ９２１、９２２、９２３を備える集合メモリ９２０を具備する。一実施形態では、集合バッファ９２１、９２２、９２３のそれぞれのサイズは、単一のオペレーションでストレージブロック９３１、９３２、９３３のそれぞれに書き込むことができる最小のブロック部分と相関しうる所定のサイズ（例えば、４Ｋｂなど）とすることができる。さらに、さまざまな実施形態において、集合バッファ９２１は、オンチップストレージ、外部メモリ、ＤＲＡＭ、ＳＲＡＭなどを備えることができる。
【００８１】
[0094]これからすぐに明らかになるように、集合メモリバッファ９２１、９２２、９２３はそれぞれ、対応するストレージブロック９３１、９３２、及び９３３に対する差分情報のインスタンス（例えば、表１を参照）を保持する。言い換えると、複数の集合メモリバッファのうちの第１の集合メモリバッファ９２１は、複数のストレージブロックのうちの第１のストレージブロック９３１に対する差分情報のインスタンスを保持し、複数の集合メモリバッファのうちの第２の集合メモリバッファ９２２は、複数のストレージブロックのうちの第２のストレージブロック９３２に対する差分情報のインスタンスを保持し、複数の集合メモリバッファのうちの第３の集合メモリバッファ９２３は、複数のストレージブロックのうちの第３のストレージブロック９３３に対する差分情報のインスタンスを保持し、と以下同様に続く。
【００８２】
[0095]装置９１０は、集合メモリバッファ９２１、９２２、９２３に格納されている差分情報を対応するストレージブロック９３１、９３２、及び９３３に書き込むためにバス９１４を介して集合メモリ９２０に結合されている更新モジュール９１２をさらに備える。一実施形態では、そのような書き込みは、集合メモリバッファ９２１、９２２、９２３のうちの１つに差分情報の少なくとも１つのインスタンスが書き込まれた後に（そうしてストレージブロック９３１、９３２、及び９３３のうちの適切な１つのブロックへの最小書き込みサイズを構成して）開始することができる。この書き込みを遂行するために、更新モジュール９１２は、バス９１５を介してストレージデバイス９３０に結合されている。図にさらに示されているように、更新モジュール９１２の出力は、リードパス９０３を介してＩ／Ｏバス９０２に結合されている。
【００８３】
[0096]さらに、差分計算モジュール９１１は、リードパスバス９０３を介して更新モジュール９１２に結合され、ライトパスバス９０４を介してＩ／Ｏバス９０２に結合され、バス９１３を介して集合メモリ９２０にさらに結合されている。使用時に、差分計算モジュール９１１は、ストレージデバイス９３０からデータを読み出し、関連するストレージブロック９３１、９３２、及び９３３及び／又は集合メモリバッファ９２１、９２２、９２３からの差分情報を使用してそのようなデータの現在状態をさらに再構成することができる。
【００８４】
[0097]差分計算モジュール９１１は、最初にそのようなデータの現在状態を再構成することと（上記のリードオペレーションと同様）、そのような現在状態とライトオペレーション（コンピュータ９０１によって開始される）の後結果として生じるであろう状態との差異を識別することと、集合メモリバッファ９２１、９２２、９２３に、関連するストレージブロック９３１、９３２、及び９３３を更新するために使用される差分情報の１つ又は複数のインスタンスを配置することとを、適宜行うことによってデータをストレージデバイス９３０に書き込むことができる。次に、図１０及び１１の説明の際に、そのようなリードオペレーション及びライトオペレーションに関する詳細情報を述べることにする。
【００８５】
[0098]さまざまな実施形態において、差分計算モジュール９１１は、前記の差分（複数可）を識別するために所望の技術を使用することができる。例えば、さまざまな文字列照合アルゴリズム、データ動き推定技術などを利用することができる。さらに追加の実施形態では、差分をバイト毎に決定することができる。
【００８６】
[0099]さらに、差分の計算は、挿入されるバイト文字列を検索すること、削除されるバイト文字列を検索すること、置換されるバイト文字列を検索すること、コピーされるバイト文字列を検索すること、値を追加することによってバイト文字列が更新されるかどうかを判定すること、ストレージブロックのコピーを検索して、それらのコピーへの参照を作成すること、ブロック分割を検索すること、ブロックマージを検索することなどのうちの１つ又は複数を伴うことができる。
【００８７】
[00100]図１０は、一実施形態による、差分情報を使用してメモリを読み出すための方法１０００を示している。１つの選択として、本発明の方法１０００は、図９のシステム９００を使用して実行すること及び／又は図１〜８の技術のどれかをさらに適宜組み込むことが、望み通りに可能である。ただし、方法１０００は、所望のどのような方法でも使用できることはもちろんである。さらに、前記の定義は、本発明の説明全体に適用できる。
【００８８】
[00101]図に示されているように、方法１０００は、オペレーション１００１において、コンピュータ（例えば、コンピュータ９０１など）によって要求されたときに、ストレージ（例えば、ストレージデバイス９３０など）からブロック（例えば、図９のブロック９３１、９３２、９３３など）を読み出すことによって開始することができる。その後、読み出されたストレージブロックデータは、更新モジュール（例えば、更新モジュール９１２など）に送られる。次に、リードオペレーションに応答して、ストレージブロック（コンピュータの要求に関連する）に対応する集合バッファ（例えば、集合バッファ９２１、９２２、９２３など）及び／又はストレージブロックそれ自体から差分情報が読み出される。オペレーション１００２を参照されたい。差分情報の適切なソースは、要求された情報が読み出し要求が発生したときに集合バッファから対応するストレージブロックに書き込まれたかどうかに依存することがある。１つの選択として、差分情報をフラッシュ内のデータ間に散在させることができる。それに加えて、特定のデータに関係する差分を１つ又は複数のグループに分けることもできる。
【００８９】
[00102]次に、オペレーション１００３において、更新モジュールが、オペレーション１００２からの差分情報に反映されている差分をオペレーション１００１で読み出された対応するブロックに適用する。この目的のために、オペレーション１００３で再構成されたデータをリードパス（例えば、リードパス９０３など）経由でコンピュータに送ることができる。オペレーション１００４を参照されたい。
【００９０】
[00103]さまざまな実施形態において、前記のデータリードオペレーションは、論理ストレージブロック番号を物理ストレージブロック番号にマッピングすることを伴ってもよい。さらに、方法１０００は、読み出しに関連して誤り検出及び誤り訂正をさらに行うこともできる。読み出されたデータのこのような誤り検出及び訂正は、データを回復し、回復されたデータを別のストレージロケーションに再配置することを試みる再リードオペレーションをさらに含むことができる。例えば、回復されたデータのそのような再配置は、論理ストレージブロック変換を伴うこと、及び／又は候補ストレージブロックの誤り率情報に基づくこともできる。
【００９１】
[00104]図１１は、一実施形態による、差分情報を使用してメモリに書き込むための方法１１００を示している。１つの選択として、本発明の方法１１００は、図９のシステム９００を使用して実行すること及び／又は図１〜８、１０の技術のどれかをさらに適宜組み込むことが、望み通りに可能である。ただし、方法１１００は、所望のどのような方法でも使用できることはもちろんである。さらに、前記の定義は、本発明の説明全体に適用できる。
【００９２】
[00105]図１０の読み出し方法１０００と同様に、方法１１００は、オペレーション１１０１において、ストレージ（例えば、ストレージデバイス９３０など）からブロック（例えば、図９のブロック９３１、９３２、９３３など）を読み出すことによって開始することができるが、これはコンピュータ（例えば、コンピュータ９０１など）による書き出し要求を前提条件とする。その後、読み出されたストレージブロックデータは、更新モジュール（例えば、更新モジュール９１２など）に送られる。次に、オペレーション１１０２において、ストレージブロック（コンピュータの要求に関連する）に対応する集合バッファ（例えば、集合バッファ９２１、９２２、９２３など）及び／又はストレージブロックそれ自体から差分情報が読み出される。次に、オペレーション１１０３において、更新モジュールが、オペレーション１１０２からの差分情報に反映されている差分をオペレーション１１０１で読み出された対応するブロックに適用し、読み出し又は書き込みが行われるデータを再構成する。
【００９３】
[00106]この目的のために、オペレーション１１０３で再構成されたデータを差分計算モジュール（例えば、差分計算モジュール９１１など）に送り、コンピュータによって要求されたライトオペレーションの実行の結果生じるであろうデータの状態と比較することができる。オペレーション１１０４を参照されたい。この目的のために、再構成されたデータとライトオペレーションの実行の結果生じるであろうデータの状態との間の差が識別される。一実施形態では、このような差は、データを更新する場合に（コンピュータ上で実行されている）アプリケーションによって引き起こされる可能性がある。そのような更新としては、限定はしないが、バイト列の置換、バイト列の挿入、バイト列の削除、バイト列のコピーなどが挙げられる。
【００９４】
[00107]オペレーション１１０５において、オペレーション１１０４で計算された差分に関連する差分情報を、オペレーション１１０４で計算された少なくとも１つの差分があるブロックに対応する適切な集合バッファに付加することができる。そのような付加は、集合メモリにおいて集合バッファの末尾に書き込むことで実行できる。一実施形態では、そのような付加は、集合バッファの展開、データの付加、及び適切な集合バッファの再圧縮をさらに含むことができる。１つの選択として、集合バッファメモリは、オンデマンドで集合バッファに再割り当てすることができる。
【００９５】
[00108]任意選択の一実施形態では、差分情報を、データに対して実行される機能（例えば、書き込みなど）を記述するオペレーションとして格納することができる。例えば、差分情報は、Ｂツリーで実行されるオペレーションの結果として生じる変化を反映することができ、したがって、そのようなオペレーションに関する差分を表すことができる。そのようなＢツリーは、データベース、メールサーバー、ファイルシステムなどで適宜利用できる。
【００９６】
[00109]次に、決定１１０６において、集合バッファをテストして、それらのバッファが満杯かどうかを判定する。満杯の集合バッファがない場合には、方法１１００はオペレーション１１１０に進む。他方で、満杯の集合バッファが少なくとも１つある場合には、方法１１００はオペレーション１１０７に進む。オペレーション１１０７において、任意の満杯の集合バッファが差分情報に付加される。それに加えて、オペレーション１１１２で示されているように、そのような満杯の集合バッファが空にされる（再利用などのために）。
【００９７】
[00110]差分情報が満杯かどうかがさらに判定される（オペレーション１１１４）。方法１１００は、差分情報が満杯でないと判定された場合、オペレーション１１１０に進む。しかし、差分情報が満杯であるとの判定に応答して、差分情報からの変更がデータに適用される。オペレーション１１１６に注意すること。さらに、オペレーション１１１８で示されているように、変更が適用されたデータのブロックが書き込まれ、古いデータは破棄される。さらに、オペレーション１１２０で示されているように、差分情報が空にされる。この目的のために、書き込まれたデータと既存のデータとの差分を使用して、書き込みを減らし、また書き込みを複数のメモリブロックに分配して、ブロックベースのストレージの信頼性を改善するデータストレージシステムを構成することができる。
【００９８】
[00111]さまざまな実施形態において、前記の実施形態で述べたメモリとして、機械式ストレージデバイス（例えば、ＳＡＴＡディスクドライブ、ＳＡＳディスクドライブ、ファイバーチャネルディスクドライブ、ＩＤＥディスクドライブ、ＡＴＡディスクドライブ、ＣＥディスクドライブ、ＵＳＢディスクドライブ、スマートカードディスクドライブ、ＭＭＣディスクドライブなどを含むディスクドライブ）、及び／又は非機械式ストレージデバイス（例えば、半導体ベースのデバイスなど）を挙げることができる。このような非機械式メモリは、例えば、揮発性又は不揮発性メモリを含むことができる。さまざまな実施形態において、不揮発性メモリデバイスは、フラッシュメモリ（例えば、シングルビットパーセルＮＯＲ型フラッシュメモリ、マルチビットパーセルＮＯＲ型フラッシュメモリ、シングルビットパーセルＮＡＮＤ型フラッシュメモリ、マルチビットパーセルＮＡＮＤ型フラッシュメモリ、マルチレベルマルチビットパーセルＮＡＮＤ型フラッシュ、ラージブロックフラッシュメモリなど）を備えることができる。メモリのさまざまな実施例が本明細書で説明されているが、さまざまなオペレーションが実行されることで寿命が短縮する可能性のあるどのタイプのメモリにも、各種の原理を応用することができることに留意されたい。
【００９９】
[00112]図１２は、さまざまな前の実施形態のさまざまなアーキテクチャ及び／又は機能を実装できる例示的なシステム１２００を示している。例えば、例示的なシステム１２００は、前の実施形態のうちのいくつかにおいて説明されているコンピュータを表すことができる。さらに、上述のさまざまな装置でさえ、システム１２００の一コンポーネントであってもよい。
【０１００】
[00113]図に示されているように、通信バス１２０２に接続されている少なくとも１つのホストプロセッサ１２０１を備えるシステム１２００が実現される。システム１２００は、メインメモリ１２０４も備える。制御論理（ソフトウェア）及びデータは、ランダムアクセスメモリ（ＲＡＭ）の形態をとることができるメインメモリ１２０４内に格納される。
【０１０１】
[00114]システム１２００は、グラフィックスプロセッサ１２０６及びディスプレイ１２０８、つまりコンピュータモニタも備える。システム１２００は、二次記憶装置１２１０も備えることができる。二次記憶装置１２１０としては、例えば、ハードディスクドライブ及び／又はフロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブなどを表す取り外し可能ストレージドライブが挙げられる。取り外し可能ストレージドライブは、よく知られている方法で取り外し可能ストレージモジュールからの読み出し及び／又は取り外し可能ストレージモジュールへの書き込みを行う。
【０１０２】
[00115]コンピュータプログラム、又はコンピュータ制御論理アルゴリズムは、メインメモリ１２０４及び／又は二次記憶装置１２１０に格納することができる。このようなコンピュータプログラムを使用し、実行することで、システム１２００はさまざまな機能を実行することができる。メモリ１２０４、ストレージ１２１０、及び／又は他の任意のストレージは、コンピュータ可読媒体の可能ないくつかの例である。
【０１０３】
[00116]一実施形態において、さまざまな前の図のアーキテクチャ及び／又は機能は、ホストプロセッサ１２０１、グラフィックスプロセッサ１２０６、二次記憶装置１２１０、ホストプロセッサ１２０１及びグラフィックスプロセッサ１２０６の両方の機能の少なくとも一部を実行できる集積回路（図示されていない）、チップセット（つまり、関連する機能などを実行するためのモジュールとして動作し、販売されるように設計されている集積回路のグループ）、及び／又はそのような機能を実行するための他の任意の集積回路との関連で実装することができる。
【０１０４】
[00117]さらに、さまざまな前の図のアーキテクチャ及び／又は機能は、汎用コンピュータシステム、回路基板システム、娯楽目的に限定された専用ゲーム機システム、特定用途向けシステム、及び／又は他の任意の所望のシステムとの関連で実装することができる。例えば、システム１２００は、デスクトップコンピュータ、ラップトップコンピュータ、及び／又は他の任意のタイプの論理回路の形態をとることができる。さらに、システム１２００は、限定はしないが、携帯情報端末（ＰＤＡ）デバイス、携帯電話デバイス、テレビなどを含むさまざまな他のデバイスの形態をとることができる。
【０１０５】
[00118]さらに、図示されていないが、システム１２００は、通信目的でネットワーク［例えば、電気通信網、ローカルエリアネットワーク（ＬＡＮ）、無線ネットワーク、インターネットなどのワイドエリアネットワーク（ＷＡＮ）、ピアツーピアネットワーク、ケーブルネットワークなど］に結合することができる。
【０１０６】
[00119]さらに、図示されていないが、システム１２００は、通信目的でネットワーク［例えば、電気通信網、ローカルエリアネットワーク（ＬＡＮ）、無線ネットワーク、インターネットなどのワイドエリアネットワーク（ＷＡＮ）、ピアツーピアネットワーク、ケーブルネットワークなど］に結合することができる。
【０１０７】
[00120]さまざまな実施例について説明してきたが、これらは例としてのみ提示されており、限定することを意図していないことは理解されるであろう。したがって、好ましい一実施形態の程度及び範囲は、上述の例示的な実施形態により制限されるのではなく、請求項及びその等価物によってのみ画定されるべきである。
【図１Ａ】
0005970645.tif 000003
【図１Ｂ】
0005970645.tif 000004
【図１Ｃ】
0005970645.tif 000005
【図２】
0005970645.tif 000006
【図３】
0005970645.tif 000007
【図４】
0005970645.tif 000008
【図５】
0005970645.tif 000009
【図６】
0005970645.tif 000010
【図７】
0005970645.tif 000011
【図８】
0005970645.tif 000012
【図９】
0005970645.tif 000013
【図１０】
0005970645.tif 000014
【図１１】
0005970645.tif 000015
【図１２】
0005970645.tif 000016