(58)【調査した分野】(Int.Cl.,DB名)
前記フラッシュメモリが複数のブロックを備えており、前記スペア領域を増加させるステップが、前記複数のブロックのうちスペアブロックの個数を増加させるステップを更に含む請求項1に記載の方法。
前記フラッシュメモリが、シングルビットパーセルNOR型フラッシュメモリ、マルチビットパーセルNOR型フラッシュメモリ、シングルビットパーセルNAND型フラッシュメモリ、及びマルチビットパーセルNAND型フラッシュメモリのうちの少なくとも1つを含む請求項1に記載の方法。
前記フラッシュメモリが、シングルビットパーセルNOR型フラッシュメモリ、マルチビットパーセルNOR型フラッシュメモリ、シングルビットパーセルNAND型フラッシュメモリ、及びマルチビットパーセルNAND型フラッシュメモリのうちの少なくとも1つを含む請求項8に記載の方法。
必要な最小寿命を保証するように、メモリの寿命を短縮する寿命短縮オペレーションを制御することによりフラッシュメモリの寿命を保証し、前記フラッシュメモリ内のスペア領域を増加させて、前記フラッシュメモリの寿命を延長する論理回路を備える装置であって、
前記スペア領域は、前記フラッシュメモリの増加量を構成することが可能であり、
前記スペア領域が、削除済みデータを検出し、前記削除済みデータで占有されている領域を使ってスペアデータの領域を増加させることと共に、前記フラッシュメモリに格納されているデータを圧縮することによって少なくとも部分的に増加させられる、装置。
前記フラッシュメモリが、シングルビットパーセルNOR型フラッシュメモリ、マルチビットパーセルNOR型フラッシュメモリ、シングルビットパーセルNAND型フラッシュメモリ、及びマルチビットパーセルNAND型フラッシュメモリのうちの少なくとも1つを含む、請求項17に記載の装置。
前記フラッシュメモリ内のスペア領域を増加させる前記論理回路が、削除済みデータで占有されていると識別された領域を前記スペア領域に組み込むことによって少なくとも部分的に動作する、請求項13に記載の装置。
前記フラッシュメモリ内のスペア領域を増加させる前記論理回路が、前記フラッシュメモリ内に格納されている重複データを削除することによって更に動作する、請求項13に記載の装置。
前記スペア領域を増加させるステップが、前記フラッシュメモリ内に以前に格納されたデータを圧縮して、前記以前に格納されたデータで占有されていたブロックを前記スペア領域に組み込めるようにするステップを更に含む、請求項1に記載の方法。
【発明を実施するための形態】
【0008】
[0021]
図1Aは、一実施形態による、メモリの寿命を延長するための方法110を示している。図に示されているように、メモリ内のスペア領域が増加する。オペレーション112を参照されたい。それに加えて、メモリ内のスペア領域が増える結果として、メモリの寿命も延長される。オペレーション114を参照されたい。
【0009】
[0022]本発明の説明の状況では、メモリの寿命は、そのメモリが所望の程度のユーザビリティを示す期間を含むことができる。例えば、さまざまな実施形態では、そのような寿命は、確実に限定はしないが、所望の寿命、実際の寿命、推定寿命などを含んでいてもよい。さらに、ユーザビリティの程度は、いぜんとして動作可能であるコンポーネント(例えば、ブロック、セルなど)の割合、メモリ又はメモリのコンポーネントの信頼度などのユーザビリティ関連のパラメータ、及び/又はそのようなユーザビリティに関する他のパラメータを指してもよい。
【0010】
[0023]それに加えて、本発明の説明の状況では、メモリ内のスペア領域は、使用に供することができるメモリ内の任意の領域(例えば、ブロック、セルなど)を指す。さらに、さまざまな実施形態において、メモリとして、限定はしないが、機械式ストレージデバイス(例えば、ディスクドライブなど)、ソリッドステートストレージデバイス(例えば、ダイナミックランダムアクセスメモリ(DRAM)、フラッシュメモリなど)、及び/又は他の任意のストレージデバイスを挙げることができる。メモリがフラッシュメモリを含む場合、フラッシュメモリとして、限定はしないが、シングルレベルセル(SLC)デバイス、マルチレベルセル(MLC)デバイス、NOR型フラッシュメモリ、NAND型フラッシュメモリ、MLC NAND型フラッシュメモリ、SLC NAND型フラッシュメモリなどを挙げることができる。一実施形態において、不揮発性メモリデバイスは、シングルビットパーセルNOR型フラッシュメモリ、マルチビットパーセルNOR型フラッシュメモリ、シングルビットパーセルNAND型フラッシュメモリ、マルチビットパーセルNAND型フラッシュメモリ、相変化メモリ、抵抗性メモリ、カーボンナノチューブメモリ、及びエレクトロマイグレーションメモリのうちの少なくとも1つを備えることができる。
【0011】
[0024]そこで、ユーザの望みに応じて、前記のフレームワークが実装される、又は実装されない場合のあるさまざまな任意選択のアーキテクチャ及び特徴に関する説明に役立つ情報を述べる。例えば、前記の技術は、メモリ寿命を保証するか、又は引き延ばすための仕組みとともに使用できる。以下の情報は、説明に役立てることを目的として述べられており、いかなる形でも制限するものであると解釈すべきでないことに十分留意されたい。以下の特徴はどれも、説明されている他の特徴を除外して、又は除外せずに適宜に組み込むことができる。
【0012】
[0025]
図1Bは、一実施形態による、寿命が延長されたメモリモジュール150を示している。一選択として、メモリモジュール150は、
図1Aの方法150を実行するように実装してもよい。ただし、メモリモジュール150を所望の任意の環境に実装できることはもちろんである。前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【0013】
[0026]図に示されているように、メモリモジュール150のスペアブロック160の個数が増加する。メモリモジュール150のスペアブロック160の個数を増やした結果、メモリモジュール150の寿命が延長される。一実施形態では、メモリのスペアブロック160の個数は、メモリモジュール150内に格納されているデータを圧縮することによって増加させることができる。このような圧縮は、可逆圧縮(例えば、バローズ−ウィーラー、レンペル−ジブ(LZ)、LZ77、LZ78など)、又はいくつかの実施形態では、不可逆圧縮(例えば、不可逆予測コーデック、不可逆変換コーデックなど)を含むことができる。
【0014】
[0027]圧縮を使用してスペアブロック160を増やした場合、圧縮比が変化することがある。他の実施形態では、メモリのスペアブロック160の個数は、メモリモジュール150内に格納されている重複データを削除することによって増加させることができる。
【0015】
[0028]1つの選択として、メモリモジュール150内に格納されているデータを圧縮し、メモリモジュール150内に格納されている重複データを削除することによってメモリのスペアブロック160の個数を増やすこともできる。この場合、重複データは、残りのデータを圧縮した後に削除することができる。もちろん、データを等しく圧縮し、その後重複データを削除することもできる。
【0016】
[0029]他の実施形態では、削除済みデータを検出し、削除済みデータで占有されている領域を使ってスペアデータの領域を増加させることによってスペア領域を増やすことができる。1つの選択として、削除済みデータを、ホスト又はRAIDコントローラから伝送するか、又はディスク上に収められているデータからディスクコントローラによって発見することができる。さらに他の実施形態では、圧縮、重複排除、及び削除済みファイルの回収の任意の組み合わせを用いて、スペア領域の大きさを増やすことができる。
【0017】
[0030]特定の一例として、削除済みデータの圧縮及び/又は重複排除及び/又は削除を利用して、メモリモジュール150内のメモリの一定の量をスペアとしてとっておくことができる。この場合、保存のコストは、さもなければスペアに使用される領域に比例して減らすことができる。例えば、複数のメモリブロック152内に含まれるフラッシュページ158にデータ156を書き込むことができる。
【0018】
[0031]次いで、スペアブロック160の数が増えるようにデータ156を圧縮することができる。一実施形態では、スペアブロック160を使用してメモリの寿命を延長することは、メモリの寿命を保証することと併せて実現することができる。
【0019】
[0032]1つの選択として、メモリモジュール150のブロックの寿命の終わりを等化することができる。例えば、スペアブロック160は、メモリモジュール150のブロックの寿命の終わりを等化できるように選択することができる。この場合、メモリモジュール150のブロックの寿命の終わりを等化するために、メモリモジュール150内の異なるブロックを利用してデータを格納することができる。
【0020】
[0033]説明すべき異なる実施形態によれば、メモリの寿命を短縮するさまざまなオペレーションを、そのような寿命を延長することを目的として制御することができる。本発明の説明の状況では、そのようなオペレーションは、ライトオペレーション、消去オペレーション、プログラムオペレーション、及び/又は前記の寿命を短縮することができる任意の他のオペレーションを指してもよい。さらに、本実施形態では、メモリ内のスペア領域をメモリブロックによって説明したが、そのような実施形態は、メモリ(例えば、メモリセル等)内のいかなるスペア領域との関連でも等しく考察できることに留意されたい。
【0021】
[0034]
図1Cは、一実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための方法100を示している。1つの選択として、方法100は、
図1A〜1Bの詳細の状況において実装することができる。ただし、方法100を所望の任意の環境に実装できることはもちろんである。前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【0022】
[0035]図に示されているように、メモリの寿命に関連する少なくとも1つの態様が識別されている。オペレーション102を参照されたい。本発明の説明の状況では、オペレーション102において識別されている寿命に関連する態様は、さまざまな実施形態において、期間、メモリの寿命を短縮するオペレーションの率、メモリの寿命を短縮するオペレーションの許容される総数、寿命の持続時間などを含むことができる。さらに、オペレーションの前記の許容される総数及び選択された、又は所望の寿命が与えられた場合、例示的な一実施形態において、一定期間当たりのオペレーションの数を単位とする最大平均オペレーション率を直接計算することができる。もちろん、このような例示的な態様は、まもなく明らかになる理由から、寿命の他のいかなる態様も完全に識別できるので、例示的な目的についてのみ述べられている。
【0023】
[0036]この目的のために、その態様に基づいて、メモリの寿命を短縮する少なくとも1つのオペレーションを遅延させる。オペレーション104を参照されたい。したがって、そのような遅延は、オペレーション102で識別されたメモリ寿命の態様に少なくとも部分的に依存する形で実行することができる。本発明の説明の状況では、オペレーションの前記の遅延は、オペレーションの一部のみが遅延される状況を包含するものとみなされる。例えば、1つのオペレーションが、複数のコンポーネントを伴う状況では、そのような遅延は、そのようなオペレーションの1つ又は複数(又はすべて)の部分に適用することができる。
【0024】
[0037]一実施形態では、オペレーションは、そのオペレーションを開始するコマンドを遅延させることによって遅延させることができる。例えば、ライトコマンド又は消去コマンドを識別したことに応答して、そのようなコマンドの実行を遅延させることができる。もちろん、他の実施形態では、オペレーション自体を単純に遅延させることができる。この設計を用いれば、この設計を用いなかったならメモリの寿命を短縮するであろう1つ又は複数のオペレーションをそのように遅延させることで、結果として、少なくとも部分的には、そのような短縮が減少する。
【0025】
[0038]そこで、ユーザの望みに応じて、前記のフレームワークが実装される、又は実装されない場合のあるさまざまな任意選択のアーキテクチャ及び特徴に関して説明に役立つ追加情報を述べる。例えば、遅延は、多くの異なる技術を使用してさまざまな異なる方法で施すことができ、そこで、そのいくつかの例を取りあげる。
【0026】
[0039]
図2は、他の実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための技術200を示している。1つの選択として、本発明の技術200は、
図1A〜1Cの詳細の状況において実装することができる。ただし、技術200を所望の任意の環境に実装できることはもちろんである。前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【0027】
[0040]図に示されているように、技術200では、結果としてメモリがユーザビリティの最小の程度、並びにメモリの最小の所望の寿命204を示すことになるオペレーション202の総数を考慮する。このようなデータ点から、最小の所望の寿命204を達成する最大平均オペレーション率206を算出することができる。
【0028】
[0041]使用中、時間の経過とともに、多数の寿命短縮オペレーションを監視することができる。任意の時点において、図に示されている形で、単位時間当たりのそのようなオペレーションの総数が、最大平均オペレーション率206を超えた場合、いかなる超過オペレーション(その率を超えることに関わる)も、計算量だけ、又は所定の時間の長さだけ遅延させられるか、或いは寿命短縮オペレーションの事前の、又は予測される率に適応的に基づくようにすることができる。時間のそのような所定の長さは、一実施形態では、結果として最大平均オペレーション率206を超えない時間とすることができる。
【0029】
[0042]さまざまな実施形態において、どのオペレーションに対し遅延を施すか(並びに、遅延それ自体の長さ)の決定は、さまざまな因子に基づくことができる。例えば、一実施形態では、遅延は、そのオペレーションを開始するアプリケーションに基づくことができる。このような実施形態では、低い優先度のアプリケーションが開始したオペレーションには遅延を施すことができるが、高い優先度のアプリケーションが開始したオペレーションには必ずしも遅延を施すことはできない(可能な場合)。
【0030】
[0043]もちろん、アプリケーションとは無関係にオペレーションに対し遅延が施される他の実施形態も考えられる。例えば、オペレーションの実行元のアプリケーションに関係なく、特定の種類のすべてのオペレーション(例えば、消去オペレーションなど)に遅延を適用することができる。さらに、ハイブリッド方式を伴う実施形態も考えられる。
【0031】
[0044]さらに、遅延されたオペレーションが寿命を異常に短縮するオペレーション又はオペレーションのパターンを含むことができる実施形態も考えられる。一実施態様では、これらのパターンのみを遅延させることができる。例えば、ウイルス又は粗いアプリケーションオペレーションパターンを検出し、そのようなパターンからのオペレーションのみを遅延させることができる。
【0032】
[0045]
図3は、さらに他の実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための時間間隔に基づく技術300を示している。1つの選択として、本発明の技術300は、
図1Cの方法100を実行するように実装すること及び/又はさらに
図2の技術200の状況において実装することが可能である。ただし、技術300を所望の任意の環境に実装できることはもちろんである。ここでもまた、前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【0033】
[0046]
図2の技術と同様に、技術300でも、結果としてメモリがユーザビリティの最小の程度、並びにメモリの最小の所望の寿命304を示すことになるオペレーション302の総数を考慮する。このようなデータ点から、最小の所望の寿命304を達成する最大平均オペレーション率306を算出することができる。使用中、時間の経過とともに、多数の寿命短縮オペレーションを監視することができる。
【0034】
[0047]任意の時点において、図に示されている形で、単位時間当たりのそのようなオペレーションの数が、最大平均オペレーション率306を超えた場合、いかなる超過オペレーションも、必ずしも、無条件に遅延されるわけではない(
図2の技術200のように)。その代わりに、そのような超過オペレーションは、オペレーションが開始した時間間隔に基づいて条件付きで遅延させることができる。そのような時間間隔には、例えば、限定はしないが、時刻、曜日、月などを含むことができる。追加のいくつかの実施形態では、時間間隔は、適応的に、また動的に、最適な期間に合わせることができる。例えば、そのような適応的及び動的な調整は、1つの間隔のいくつかの部分間隔などに関する寿命短縮オペレーションの頻度のヒストグラムに基づくことができる。
【0035】
[0048]例えば、図に示されているようにして、月曜日、火曜日、水曜日、木曜日などに過剰な数のオペレーションが識別された場合、その後の金曜日、土曜日、及び日曜日に識別される可能性の高いオペレーションの数は少なくなることを認めることができる(例えば、予想することができる)。したがって、このような超過した数のオペレーションを無条件に遅延させる代わりに、平均オペレーション率(1週間について測定したとき)が最大平均オペレーション率306以下となる確率に基づいて、それらのオペレーションを即座に実行できる。もちろん、これがその場合でないとわかった場合には、その後の週等においてある程度の遅延が生じることがある。前記の例は、1週間の曜日に関連して説明されているが、数週間、数カ月などにわたってメモリの変動を考慮する他のより「巨視的な」実施形態も考えられる。
【0036】
[0049]さらに追加の実施形態では、必ずしも時間間隔ベースではないが、その代わりにメモリの使用状況の推移、及び/又はさらにはメモリの予測使用度に基づくように、オペレーションの条件付き遅延を一般化することができる。そのようないくつかの実施形態では、将来の使用度を予測すること、より正確には、超過オペレーションを遅延させることが必ずしも行われる必要がない状況などを識別することを目的として推移データを使用して所望の統計分析を実行することができる。
【0037】
[0050]
図4は、さらに他の実施形態による、メモリの寿命を短縮するオペレーションを遅延させるための積分に基づく技術400を示している。1つの選択として、本発明の技術400は、
図1Cの方法100を実行するように実装すること及び/又はさらに
図2〜3の技術200及び300の状況において実装することが可能である。ただし、技術400を所望の任意の環境に実装できることはもちろんである。ここでもまた、前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【0038】
[0051]前の技術と同様に、技術400では、結果としてメモリがユーザビリティの最小の程度、並びにメモリの最小の所望の寿命404を示すことになるオペレーション402の総数を考慮する。このようなデータ点から、最小の望ましい寿命404を達成する最大平均オペレーション率406を算出することができる。使用中、時間の経過とともに、多数の寿命短縮オペレーションを監視することができる。
【0039】
[0052]任意の時点において、図に示されている形で(408を参照)、単位時間当たりのそのようなオペレーションの数が、最大平均オペレーション率406を超えた場合、超過オペレーションは、必ずしも、無条件に遅延されるわけではない(
図2の技術200のように)。その代わりに、そのような超過オペレーションは、メモリの使用度を反映する積分機能に基づいて条件付きで遅延させることができる。特に、時間の経過に応じた全体的な寿命短縮オペレーション率と最大平均オペレーション率406との間の差の積分を、進行中に計算することができる。この目的のために、そのような積分を行って、そのようなオペレーションが最大平均オペレーション率406を超えることが示された場合、前記の遅延は、必ずしも行われる必要はない。
【0040】
[0053]
図5は、他の実施形態による、所望の寿命時間が推定寿命時間を超えた場合の、メモリの寿命を短縮するオペレーションを遅延させるためのシステム500を示している。1つの選択として、本発明のシステム500は、
図1Cの方法100を実行するように実装すること及び/又は
図2〜4の技術のどれかをさらに適宜組み込むように実装することが可能である。ただし、システム500は、所望の任意の方法で使用できることはもちろんである。
【0041】
[0054]図に示されているように、複数のストレージデバイス530、540を備えるストレージシステム503が具備される。少なくとも1つのストレージ用バス502が、少なくとも1つのコントローラ511を少なくとも1つのコンピュータ501に結合する。さまざまな実施形態において、ストレージ用バス502として、限定はしないが、シリアルアドバンストテクノロジーアタッチメント(SATA)バス、シリアル接続SCSI(SAS)バス、ファイバーチャネルバス、メモリバスインターフェース、フラッシュメモリバス、NANDフラッシュバス、インテグレーテッドドライブエレクトロニクス(IDE)バス、アドバンストテクノロジーアタッチメント(ATA)バス、民生電子(CE)バス、ユニバーサルシリアルバス(USB)、スマートカードバス、マルチメディアカード(MMC)バスなどが挙げられる。したがって、コントローラ511は、システム(例えば、コンピュータ501)と二次記憶装置(ストレージデバイス530、540のうちの少なくとも1つなど)との間に結合することができる。ストレージデバイス530、540に関連するメモリの寿命を延長するための少なくとも1つの装置510をさらに備える。
【0042】
[0055]図に示されているように、装置510は、複数の対応するバス521、522を介してそれぞれストレージデバイス530、540に結合されているコントローラ511を備える。ストレージバス502を介してコンピュータ501から受け取ったコマンドを実行するために、コントローラ511は、複数のバス521、522を使用して、複数のストレージデバイス530、540との間のデータの制御及び交換を行う。ストレージデバイス530、540は、それぞれ、データを格納するために少なくとも1つのモジュール又はブロック531、532、533、541、542、543を備える。さらに、前記のコマンドのうちの少なくとも一部は、少なくとも1つのモジュール又はブロック531、532、533、541、542、543に悪影響を及ぼす寿命短縮コマンドである。使用中に、装置510は、そのような寿命短縮コマンドがあっても、ストレージデバイス530、540の寿命を延長する働きをする。
【0043】
[0056]この機能を遂行するために、コントローラ511は、対応するバス512を介して寿命推定器モジュール514に結合されている。装置510は、バス518を介して寿命推定器モジュール514に結合された時間モジュール517をさらに備え、これにより現在時刻が得られる。使用中に、寿命推定器モジュール514は、ストレージバス502を介してコンピュータ501からコントローラ511に伝達されたコマンドを受け取る働きをする。さらに、寿命推定器モジュール514は、バス512を通じて受け取ったコマンド(複数可)が実行されたと仮定して推定寿命を計算する。
【0044】
[0057]
図5を引き続き参照すると、寿命推定モジュール514は、バス515を介してスロットリングモジュール516に結合されている。寿命推定モジュール514は、バス515を使用して、スロットリングモジュール516に、コントローラ511によって現在実行されているコマンドに対する推定寿命を受け渡す。現在実行されているコマンドは、一実施形態では、バス512を介して寿命推定器モジュール514が受け取ったコマンドと同じであってもよく、さらにストレージ用バス502を介してコンピュータ501からコントローラ511が受け取ったコマンドと同じであってもよい。
【0045】
[0058]現在の時間モジュール517は、バス518を介してスロットリングモジュール516にも結合される。したがって、現在の時間モジュール517から得られる現在時刻は、スロットリングモジュール516にも受け渡すことができる。一実施形態では、現在の時間モジュール517は、例えば、一定の時間間隔でインクリメントする単純なカウンターなどとして実装することができる。
【0046】
[0059]スロットリングモジュール516は、バス519を介して必要な寿命モジュール520とさらに結合されるだけでなく、バス513を介してコントローラ511にも結合される。使用中に、必要な寿命モジュール520は、所望の寿命を格納するように構成される。この設計により、スロットリングモジュール516は、バス513を介してコントローラ511に情報を受け渡してコントローラ511に現在のコマンドの実行を遅延させるように指示するように構成することもできる。
【0047】
[0060]一実施形態では、推定寿命が必要な寿命モジュール520に格納されている必要な寿命より長いか、同じになるようなコマンド実行の影響が寿命に対して及ぼされるまで現在のコマンドの実行を遅延させるように装置510のスロットリングモジュール516を動作させることができる。バス515を介して受け取った推定寿命がバス519を介して受け取った必要な寿命より短ければ、スロットリングモジュール516の機能は、一実施形態では、遅延信号をコントローラ511に送るのと同じくらい単純なものであってもよい。
【0048】
[0061]他の実施形態では、コントローラ511、寿命推定器モジュール514、及びスロットリングモジュール516の上述の機能は、定義済みの時間間隔で受け取ったコマンドのグループに適用することができる。このような配置構成により、システム500は、他の方法では寿命を短縮するであろうコマンドの短いバーストをスロットリングで不必要に抑制することなく必要な寿命条件を満たすことができる。時間間隔を、例えば、1日として選択することにより、そのような技術を用いることで、システム500は、寿命短縮コマンドに対してより高い瞬間的性能を達成することができるが、その理由は、1日のある期間(例えば、夜間など)に、寿命短縮コマンドの頻度が寿命短縮コマンドの平均的頻度と比較して低くなる時間間隔がありうるからである。
【0049】
[0062]任意選択の一実施形態では、時間の経過に関して一貫性を維持することができる。コヒーレンシー法の一例として、寿命短縮コマンドAが遅延される場合、Aのデータ、又はコマンドAの実行の結果として得られる値に依存するすべてのコマンド(寿命短縮かどうかに関係なく)も遅延される。
【0050】
[0063]他の実施形態では、時間を、ディスクの電源が入れられている時間などの、時間のさまざまな近似で置き換えることができる。他の実施形態では、コンピュータ501、RAIDコントローラ、及び/又は他のデバイスが、追跡される時間の精度を高める追加情報を供給することができる。したがって、ストレージデバイス530、540のうちの1つ又は複数がオフにされた場合には、時間カウンターのカウントは停止している。実時間は進む一方なので、この場合、性能が不必要に低下する可能性がある。このようなシナリオの下では、そのような問題に対処するため、コンピュータ501、ソフトウェア、及び/又はコントローラ側で、システム500がオフにされたときの時間に関する情報を供給することができる。
【0051】
[0064]他の実施形態では、システム500は、コストを低減し、性能を改善するストレージデバイス内冗長性機能を備えることができる。このような実施形態では、個別のストレージデバイス530と540との間で、ストレージデバイスの寿命に関連する任意の態様に基づき、データを移動することができる(例えば、
図1Cのオペレーション102などを参照)。例えば、これらのストレージデバイスのうちの第1のストレージデバイス530が、これらのストレージデバイスのうちの第2のストレージデバイス540のデータに関してより頻繁に上書きされる一組のデータを格納するという状況もありうる。このような場合、所定の長さの時間が経過した後、又はガベージコレクションの実行中、又は寿命の終わりの等化時に、又はシステムによって決定されている他のイベントの発生時に、そのようなデータを第1のストレージデバイス530から第2のストレージデバイス540に移動し、それ以降、第1のストレージデバイス530又はそのストレージデバイスの1つ又は複数のブロック/モジュール531、532、533を、あまり頻繁に書き込まれないデータの格納に使用するか、或いはこれ以降使用しないようリタイヤさせることができる。
【0052】
[0065]この目的のために、ストレージデバイスの余命を適切に配分して、グループの一方のストレージデバイスがグループの他のストレージデバイスに関してあまりにも早すぎる時点に故障するのを回避することができる。もちろん、本発明の技術は、異なるストレージデバイス間だけでなく、それらのストレージデバイスの一部にも適用することができる。この目的のために、そのような方法でメモリコンポーネントの寿命を管理することができる。
【0053】
[0066]したがっていかなる場合も、ライトオペレーションを減らすこと及び/又はライトオペレーションを配分することを行うためにコントローラ511を装備することができる。このような特徴があるため、適切なストレージデバイス530、540の寿命を延長することができる。次に、
図6の説明の際に、そのような技術を実行するための例示的な一方法を述べることにする。
【0054】
[0067]
図6は、他の実施形態による、所望の寿命時間が推定寿命時間を超えた場合の、メモリの寿命を短縮するオペレーションを遅延させるための方法600を示している。1つの選択として、本発明の方法600は、
図5のシステム500を使用して実行すること及び/又は
図1〜4の技術のどれかをさらに適宜組み込むことが可能である。ただし、方法600は、所望のどのような方法でも使用できることはもちろんである。さらに、前記の定義は、本発明の説明全体に適用できる。
【0055】
[0068]オペレーション601を起動したとき、方法600は、コントローラ(例えば、
図5のコントローラ511など)によって継続され、コンピュータ(例えば、コンピュータ501など)によって少なくとも1つのストレージデバイス(例えば、ストレージデバイス530、540など)に発行されるコマンド602の到来を待つ。コントローラがコマンドを受け取った後、方法は、決定603に進み、そのときに、コントローラは、オペレーション602で受け取ったコマンドが、寿命短縮コマンド(例えば、消去オペレーション、ライトオペレーションなど)であるかどうかを判定する。決定603において、現在受け取っているコマンドが寿命短縮コマンドでないと判定された場合、そのようなコマンドをオペレーション607に従って単純に処理することができる。
【0056】
[0069]その一方で、決定603で、現在受け取っているコマンドが実際に寿命短縮コマンドであると判定された場合、オペレーション602で受け取ったコマンド、前の寿命、及び現在の時間(例えば、時間モジュール517などを介して)に基づき寿命推定器モジュール(例えば、寿命推定器モジュール514など)により推定寿命が計算される。オペレーション604を参照されたい。一実施形態では、前の寿命は、寿命推定器モジュールの前の状態を表すことができる。他の実施形態では、前の寿命は、少なくとも1つのストレージデバイスの1つ又は複数の特性を測定することによって得ることができる。
【0057】
[0070]次いで、いかなる場合も、そのような寿命推定器モジュールによって推定された寿命が、スロットリングモジュール(例えば、スロットリングモジュール516など)に送られる。決定605において、スロットリングモジュールは、寿命推定器から受け取った推定寿命がスロットリングモジュールに送られた必要な寿命より短い場合にスロットリングが必要であると判定する。スロットリングが必要な場合、方法600は、寿命短縮コマンドを遅延する(例えば、スロットリングで抑制することなど)によってオペレーション606において進む。しかし、推定寿命が、必要な寿命より短くない場合、方法600は、上で述べたように、オペレーション607において進む。
【0058】
[0071]特に、オペレーション606において、スロットリングモジュールは、コントローラを使用して寿命短縮コマンドの実行をスロットリングで抑制することができる。一実施形態では、そのようなスロットリングは、寿命推定器によって推定された寿命が必要な寿命より長いか、又は同じになるまで、コントローラを使用して寿命短縮コマンドの実行を遅延させることにより実装することができる。
【0059】
[0072]他の実施形態では、所定の期間内にスロットリングを決定し、その後の所定の期間内にコマンドにそのスロットリングを適用することができる。そのような実施形態では、所定の時間間隔内で寿命をどれだけ短くできるかに関する制限を設けることができる。さらに他の実施形態では、一定時間間隔内で寿命をどれだけ短くできるかに関する制限を、1つ又は複数の前の時間間隔において決定することができる。さらに他の実施形態では、スロットリングは、複数の保留オペレーションの解析結果に基づいて決定することができ、これにより、寿命短縮オペレーション又はそのような寿命短縮オペレーションに依存するオペレーションに先立って寿命短縮をもたらさないオペレーションを実行することができる。
【0060】
[0073]この設計により、必要な最小寿命を保証するように寿命短縮オペレーションを制御するデータストレージシステムを構成することができる。こうして、そのような最小の必要な寿命に対する寿命短縮オペレーションの影響を推定し、寿命短縮オペレーションの頻度を適応的に制約することができる。
【0061】
[0074]
図7は、他の実施形態による、メモリの寿命を計測するためのグラフィカルユーザインターフェース700を示している。1つの選択として、本発明のグラフィカルユーザインターフェース700は、
図1〜6の機能及びアーキテクチャとの関連で実装することができる。ただし、グラフィカルユーザインターフェース700は、所望の任意の環境内で使用できることはもちろんである。ここでもまた、前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【0062】
[0075]図に示されているように、メモリの寿命に関連する少なくとも1つの態様を反映するさまざまな印を表示することができる。一実施形態では、そのような態様は、
図1Cのオペレーション102で識別されている態様であってもよい。ただし、この寿命関連の態様は、メモリの寿命に少なくとも部分的に関係する任意の所望の態様を含むことができることはもちろんである。例えば、
図5のシステム500の状況では、この態様は、処理されること、及び/又はコンピュータ501に単純に受け渡されることについて示されているモジュールのどれかからコントローラ511が取り出すことができ、次いで、ソフトウェアアプリケーションプログラム(例えば、プラグインなど)の制御の下で関連する印を表示することができる。
【0063】
[0076]例えば、前記の印は、一実施形態では、1つ又は複数のメモリについて残っている寿命の長さを示すためのゲージ702を含むことができる。このような実施形態では、ゲージ702は、メモリの余命の長さ全体を時間の経過とともに実行された寿命短縮オペレーションの数の関数として示すことができる。さらに他の実施形態では、前記の印は、事前使用度の補外に基づき、またスロットリングオペレーションの一時停止を仮定して、寿命を示すための推定705を含むことができる。
【0064】
[0077]他の実施形態では、前記の印は、1つ又は複数のメモリについて最小の長さの寿命が残っていることを示すための警告704を含むことができる。そのような寿命は、例えば、メモリ使用量推移データに基づいて推定してもよい。この設計により、ユーザは、所定の時間内にメモリを交換すべきである状況などの警告を受け取ることができる。もちろん、メモリの寿命に関連してさまざまな情報を報告するために所望の印が使用される他の実施形態も考えられる。
【0065】
[0078]
図8は他の実施形態による、差分情報を利用して、メモリ内のライトオペレーションを減らすための方法800を示している。1つの選択として、本発明の方法800は、
図1〜7の機能及びアーキテクチャとの関連で実行できる場合も実行できない場合もある。ただし、方法800を所望の任意の環境で実行できることはもちろんである。前記の定義は、本発明の説明全体に適用できることにも留意されたい。
【0066】
[0079]図に示されているように、メモリ内に格納されているデータに対し実行されるライトオペレーションが識別されている。オペレーション802を参照されたい。本発明の説明の状況において、そのようなライトオペレーションは、結果としてメモリに格納されているデータを修正することになる任意のオペレーションを含むことができる。さらに、そのようなライトオペレーションは、そのようなオペレーションに関連するライトコマンド、ライトオペレーションそれ自体などをインターセプトすることにより、任意の所望の方法で識別することができる。
【0067】
[0080]次いで、オペレーション804において示されているように、ライトオペレーションの結果とメモリ内に格納されているデータとの差が決定される。本発明の説明の状況において、前記の差は、メモリ内に格納されているデータの第1の状態と前記のライトオペレーションから結果として生じる第2の状態との間のどんな差をも少なくとも部分的に反映するものとしてもよい。
【0068】
[0081]他の実施形態では、メモリ内に格納されている任意のデータの間の差を決定することができる。例えば、ファイルの新しい修正済みバージョンを作成し、メモリ内の新しいロケーションに書き込み、これにより、メモリ内の異なるロケーションからのデータの差を決定することができる。1つの選択として、データのロケーションは、ハッシュ、ブルームフィルターなどに基づいて識別することができる。この目的のために、同じデータの異なるインスタンスがメモリ内の異なるロケーションに書き込まれる例示的な一実施形態では、決定された差は、データのロケーションを含むことができるが、データそれ自体を含むことはない。
【0069】
[0082]一実施形態では、この差に関連する差分情報をメモリ(例えば、データが格納される同じメモリなど)に格納することができる。他の実施形態では、差分情報は、後で異なる実施形態の説明の際に詳述する方法で、別のバッファ内に格納することもできる。差分情報は、オペレーション804で決定された差を少なくとも部分的に記述するいかなる情報をも含むことができる。後で説明する実施形態の説明のときにすぐに明らかになるように、差分情報は、一実施形態において、命令セットを使用して格納することができる。以下でも説明するように、このような命令セットは、さまざまな実施形態において、適応的に変化すること、及び/又は動的に拡張することが可能である。
【0070】
[0083]この目的のために、ライトオペレーションは、差分情報を使用することで、縮小することができる。オペレーション806を参照されたい。この設計により、ライトオペレーションのこのような縮小を適宜行うことで、結果として、メモリの寿命を延長することができる。
【0071】
[0084]そこで、ユーザの望みに応じて、前記のフレームワークが実装される、又は実装されない場合のあるさまざまな任意選択のアーキテクチャ及び特徴に関して説明に役立つ情報をさらに述べる。例えば、差分情報に基づいてライトオペレーションを減らすという例示的な一方法を実装することについて、例示的な一システムを説明する。以下の情報は、説明に役立てることを目的として述べられており、いかなる形でも制限するものであると解釈すべきでないことに十分留意されたい。以下の特徴はどれも、説明されている他の特徴を除外して、又は除外せずに適宜に組み込むことができる。
【0072】
[0085]
図9は、他の実施形態による、メモリ内のライトオペレーションを減らすためのシステム900を示している。1つの選択として、本発明のシステム900は、
図8の方法800を実行するように実装すること及び/又は
図1〜7の方法又は技術のどれかをさらに適宜組み込むように実装することが可能である。ただし、システム900は、所望の任意の方法で使用できることはもちろんである。さらにここでもまた、前記の定義は、本発明の説明全体に適用できる。
【0073】
[0086]図に示されているように、システム900は、この後すぐに説明する方法で、入力/出力(I/O)バス902を介してストレージデバイス930に結合されたコンピュータ901を備える。I/Oバス902は、リードパス903とライトパス904とを備える。ストレージデバイス930は、複数のストレージブロック931、932、933を備える。ストレージブロック931、932、933に対し、コンピュータ901による読み書きが行われる。
【0074】
[0087]この後すぐに明らかにされる理由により、ストレージブロック931、932、933のうちのそれぞれのブロックの所定の部分934を割り当てて、コンピュータ901によって対応するストレージブロック931、932、933の残りの部分935内に格納されているデータに加えられたいかなる変更をも反映する差分情報を格納することができる。さまざまな実施形態において、所定の部分934のサイズは、ユーザ側で構成することができる。さらに、その部分に格納されている差分情報はどのような形態のものであってもよい。
【0075】
[0088]表1は、差分情報のインスタンスを表すための1つの可能なフォーマットを示している(その複数のものを、ストレージブロック931、932、933のそれぞれの所定の部分934内に格納できる)。
【表1】
【0076】
[0089]本発明の実施形態では、オペレーションコードは、対応するストレージブロック931、932、933の残り部分935内に格納されているデータに対し実行されるオペレーションを表すことができる。そのようなオペレーションの例として、限定はしないが、終了、置換、上へ移動、下へ移動、削除、挿入、及び/又はそのようなことに対する、その他のオペレーションが挙げられる。1つの選択として、そのようなオペレーションは、それぞれ、コンパクトな表現用に関連コードを有する場合がある(例えば、置換=「001」、上へ移動=「010」など)。
【0077】
[0090]さらに、ソース開始アドレス及びサイズは、オペレーションの対象となる対応するストレージブロック931、932、933の残り部分935内に格納されているデータのサイズ(それぞれ)を指し、またそのサイズを示すことができる。さらに、置換/修正などを命令するオペレーションが実行される状況では、データそれ自体を差分情報の一構成要素として格納することができる。さらにもう1つの選択として、より効率的な格納が行えるように圧縮アルゴリズムを差分情報に適用することができる。もう1つの選択として、データの移動を命令するオペレーションが実行される状況において、データのソースロケーションを指定することができるが、そのようなデータが元のストレージブロック内に収められているため必ずしもデータそれ自体を指定することはできない。
【0078】
[0091]他の実施形態では、新しいオペレーションを適応的に生成することができる。例えば、第1のオペレーションの反復シーケンスを、新しい第2のオペレーションで置き換えることができる。そのような新しい第2のオペレーションは、適宜、第1のオペレーションのシーケンスを記述することができる。この方法で、新しいオペレーションを、システム900が新しいアプリケーションに最適に適合するように適応的に作成することができる。
【0079】
[0092]もちろん、表1のデータ構造体は、説明に役立てることのみを目的として述べられており、いかなる形でも制限するものであると解釈すべきでない。例えば、差分情報のインスタンスは、置き換えられるデータを単純に含むことができる(いかなる複雑なコマンドなどをも使用せずに)。
【0080】
[0093]メモリ内のライトオペレーションを減らすための装置910をさらに備える。そのような装置910は、複数の集合バッファ921、922、923を備える集合メモリ920を具備する。一実施形態では、集合バッファ921、922、923のそれぞれのサイズは、単一のオペレーションでストレージブロック931、932、933のそれぞれに書き込むことができる最小のブロック部分と相関しうる所定のサイズ(例えば、4Kbなど)とすることができる。さらに、さまざまな実施形態において、集合バッファ921は、オンチップストレージ、外部メモリ、DRAM、SRAMなどを備えることができる。
【0081】
[0094]これからすぐに明らかになるように、集合メモリバッファ921、922、923はそれぞれ、対応するストレージブロック931、932、及び933に対する差分情報のインスタンス(例えば、表1を参照)を保持する。言い換えると、複数の集合メモリバッファのうちの第1の集合メモリバッファ921は、複数のストレージブロックのうちの第1のストレージブロック931に対する差分情報のインスタンスを保持し、複数の集合メモリバッファのうちの第2の集合メモリバッファ922は、複数のストレージブロックのうちの第2のストレージブロック932に対する差分情報のインスタンスを保持し、複数の集合メモリバッファのうちの第3の集合メモリバッファ923は、複数のストレージブロックのうちの第3のストレージブロック933に対する差分情報のインスタンスを保持し、と以下同様に続く。
【0082】
[0095]装置910は、集合メモリバッファ921、922、923に格納されている差分情報を対応するストレージブロック931、932、及び933に書き込むためにバス914を介して集合メモリ920に結合されている更新モジュール912をさらに備える。一実施形態では、そのような書き込みは、集合メモリバッファ921、922、923のうちの1つに差分情報の少なくとも1つのインスタンスが書き込まれた後に(そうしてストレージブロック931、932、及び933のうちの適切な1つのブロックへの最小書き込みサイズを構成して)開始することができる。この書き込みを遂行するために、更新モジュール912は、バス915を介してストレージデバイス930に結合されている。図にさらに示されているように、更新モジュール912の出力は、リードパス903を介してI/Oバス902に結合されている。
【0083】
[0096]さらに、差分計算モジュール911は、リードパスバス903を介して更新モジュール912に結合され、ライトパスバス904を介してI/Oバス902に結合され、バス913を介して集合メモリ920にさらに結合されている。使用時に、差分計算モジュール911は、ストレージデバイス930からデータを読み出し、関連するストレージブロック931、932、及び933及び/又は集合メモリバッファ921、922、923からの差分情報を使用してそのようなデータの現在状態をさらに再構成することができる。
【0084】
[0097]差分計算モジュール911は、最初にそのようなデータの現在状態を再構成することと(上記のリードオペレーションと同様)、そのような現在状態とライトオペレーション(コンピュータ901によって開始される)の後結果として生じるであろう状態との差異を識別することと、集合メモリバッファ921、922、923に、関連するストレージブロック931、932、及び933を更新するために使用される差分情報の1つ又は複数のインスタンスを配置することとを、適宜行うことによってデータをストレージデバイス930に書き込むことができる。次に、
図10及び11の説明の際に、そのようなリードオペレーション及びライトオペレーションに関する詳細情報を述べることにする。
【0085】
[0098]さまざまな実施形態において、差分計算モジュール911は、前記の差分(複数可)を識別するために所望の技術を使用することができる。例えば、さまざまな文字列照合アルゴリズム、データ動き推定技術などを利用することができる。さらに追加の実施形態では、差分をバイト毎に決定することができる。
【0086】
[0099]さらに、差分の計算は、挿入されるバイト文字列を検索すること、削除されるバイト文字列を検索すること、置換されるバイト文字列を検索すること、コピーされるバイト文字列を検索すること、値を追加することによってバイト文字列が更新されるかどうかを判定すること、ストレージブロックのコピーを検索して、それらのコピーへの参照を作成すること、ブロック分割を検索すること、ブロックマージを検索することなどのうちの1つ又は複数を伴うことができる。
【0087】
[00100]
図10は、一実施形態による、差分情報を使用してメモリを読み出すための方法1000を示している。1つの選択として、本発明の方法1000は、
図9のシステム900を使用して実行すること及び/又は
図1〜8の技術のどれかをさらに適宜組み込むことが、望み通りに可能である。ただし、方法1000は、所望のどのような方法でも使用できることはもちろんである。さらに、前記の定義は、本発明の説明全体に適用できる。
【0088】
[00101]図に示されているように、方法1000は、オペレーション1001において、コンピュータ(例えば、コンピュータ901など)によって要求されたときに、ストレージ(例えば、ストレージデバイス930など)からブロック(例えば、
図9のブロック931、932、933など)を読み出すことによって開始することができる。その後、読み出されたストレージブロックデータは、更新モジュール(例えば、更新モジュール912など)に送られる。次に、リードオペレーションに応答して、ストレージブロック(コンピュータの要求に関連する)に対応する集合バッファ(例えば、集合バッファ921、922、923など)及び/又はストレージブロックそれ自体から差分情報が読み出される。オペレーション1002を参照されたい。差分情報の適切なソースは、要求された情報が読み出し要求が発生したときに集合バッファから対応するストレージブロックに書き込まれたかどうかに依存することがある。1つの選択として、差分情報をフラッシュ内のデータ間に散在させることができる。それに加えて、特定のデータに関係する差分を1つ又は複数のグループに分けることもできる。
【0089】
[00102]次に、オペレーション1003において、更新モジュールが、オペレーション1002からの差分情報に反映されている差分をオペレーション1001で読み出された対応するブロックに適用する。この目的のために、オペレーション1003で再構成されたデータをリードパス(例えば、リードパス903など)経由でコンピュータに送ることができる。オペレーション1004を参照されたい。
【0090】
[00103]さまざまな実施形態において、前記のデータリードオペレーションは、論理ストレージブロック番号を物理ストレージブロック番号にマッピングすることを伴ってもよい。さらに、方法1000は、読み出しに関連して誤り検出及び誤り訂正をさらに行うこともできる。読み出されたデータのこのような誤り検出及び訂正は、データを回復し、回復されたデータを別のストレージロケーションに再配置することを試みる再リードオペレーションをさらに含むことができる。例えば、回復されたデータのそのような再配置は、論理ストレージブロック変換を伴うこと、及び/又は候補ストレージブロックの誤り率情報に基づくこともできる。
【0091】
[00104]
図11は、一実施形態による、差分情報を使用してメモリに書き込むための方法1100を示している。1つの選択として、本発明の方法1100は、
図9のシステム900を使用して実行すること及び/又は
図1〜8、10の技術のどれかをさらに適宜組み込むことが、望み通りに可能である。ただし、方法1100は、所望のどのような方法でも使用できることはもちろんである。さらに、前記の定義は、本発明の説明全体に適用できる。
【0092】
[00105]
図10の読み出し方法1000と同様に、方法1100は、オペレーション1101において、ストレージ(例えば、ストレージデバイス930など)からブロック(例えば、
図9のブロック931、932、933など)を読み出すことによって開始することができるが、これはコンピュータ(例えば、コンピュータ901など)による書き出し要求を前提条件とする。その後、読み出されたストレージブロックデータは、更新モジュール(例えば、更新モジュール912など)に送られる。次に、オペレーション1102において、ストレージブロック(コンピュータの要求に関連する)に対応する集合バッファ(例えば、集合バッファ921、922、923など)及び/又はストレージブロックそれ自体から差分情報が読み出される。次に、オペレーション1103において、更新モジュールが、オペレーション1102からの差分情報に反映されている差分をオペレーション1101で読み出された対応するブロックに適用し、読み出し又は書き込みが行われるデータを再構成する。
【0093】
[00106]この目的のために、オペレーション1103で再構成されたデータを差分計算モジュール(例えば、差分計算モジュール911など)に送り、コンピュータによって要求されたライトオペレーションの実行の結果生じるであろうデータの状態と比較することができる。オペレーション1104を参照されたい。この目的のために、再構成されたデータとライトオペレーションの実行の結果生じるであろうデータの状態との間の差が識別される。一実施形態では、このような差は、データを更新する場合に(コンピュータ上で実行されている)アプリケーションによって引き起こされる可能性がある。そのような更新としては、限定はしないが、バイト列の置換、バイト列の挿入、バイト列の削除、バイト列のコピーなどが挙げられる。
【0094】
[00107]オペレーション1105において、オペレーション1104で計算された差分に関連する差分情報を、オペレーション1104で計算された少なくとも1つの差分があるブロックに対応する適切な集合バッファに付加することができる。そのような付加は、集合メモリにおいて集合バッファの末尾に書き込むことで実行できる。一実施形態では、そのような付加は、集合バッファの展開、データの付加、及び適切な集合バッファの再圧縮をさらに含むことができる。1つの選択として、集合バッファメモリは、オンデマンドで集合バッファに再割り当てすることができる。
【0095】
[00108]任意選択の一実施形態では、差分情報を、データに対して実行される機能(例えば、書き込みなど)を記述するオペレーションとして格納することができる。例えば、差分情報は、Bツリーで実行されるオペレーションの結果として生じる変化を反映することができ、したがって、そのようなオペレーションに関する差分を表すことができる。そのようなBツリーは、データベース、メールサーバー、ファイルシステムなどで適宜利用できる。
【0096】
[00109]次に、決定1106において、集合バッファをテストして、それらのバッファが満杯かどうかを判定する。満杯の集合バッファがない場合には、方法1100はオペレーション1110に進む。他方で、満杯の集合バッファが少なくとも1つある場合には、方法1100はオペレーション1107に進む。オペレーション1107において、任意の満杯の集合バッファが差分情報に付加される。それに加えて、オペレーション1112で示されているように、そのような満杯の集合バッファが空にされる(再利用などのために)。
【0097】
[00110]差分情報が満杯かどうかがさらに判定される(オペレーション1114)。方法1100は、差分情報が満杯でないと判定された場合、オペレーション1110に進む。しかし、差分情報が満杯であるとの判定に応答して、差分情報からの変更がデータに適用される。オペレーション1116に注意すること。さらに、オペレーション1118で示されているように、変更が適用されたデータのブロックが書き込まれ、古いデータは破棄される。さらに、オペレーション1120で示されているように、差分情報が空にされる。この目的のために、書き込まれたデータと既存のデータとの差分を使用して、書き込みを減らし、また書き込みを複数のメモリブロックに分配して、ブロックベースのストレージの信頼性を改善するデータストレージシステムを構成することができる。
【0098】
[00111]さまざまな実施形態において、前記の実施形態で述べたメモリとして、機械式ストレージデバイス(例えば、SATAディスクドライブ、SASディスクドライブ、ファイバーチャネルディスクドライブ、IDEディスクドライブ、ATAディスクドライブ、CEディスクドライブ、USBディスクドライブ、スマートカードディスクドライブ、MMCディスクドライブなどを含むディスクドライブ)、及び/又は非機械式ストレージデバイス(例えば、半導体ベースのデバイスなど)を挙げることができる。このような非機械式メモリは、例えば、揮発性又は不揮発性メモリを含むことができる。さまざまな実施形態において、不揮発性メモリデバイスは、フラッシュメモリ(例えば、シングルビットパーセルNOR型フラッシュメモリ、マルチビットパーセルNOR型フラッシュメモリ、シングルビットパーセルNAND型フラッシュメモリ、マルチビットパーセルNAND型フラッシュメモリ、マルチレベルマルチビットパーセルNAND型フラッシュ、ラージブロックフラッシュメモリなど)を備えることができる。メモリのさまざまな実施例が本明細書で説明されているが、さまざまなオペレーションが実行されることで寿命が短縮する可能性のあるどのタイプのメモリにも、各種の原理を応用することができることに留意されたい。
【0099】
[00112]
図12は、さまざまな前の実施形態のさまざまなアーキテクチャ及び/又は機能を実装できる例示的なシステム1200を示している。例えば、例示的なシステム1200は、前の実施形態のうちのいくつかにおいて説明されているコンピュータを表すことができる。さらに、上述のさまざまな装置でさえ、システム1200の一コンポーネントであってもよい。
【0100】
[00113]図に示されているように、通信バス1202に接続されている少なくとも1つのホストプロセッサ1201を備えるシステム1200が実現される。システム1200は、メインメモリ1204も備える。制御論理(ソフトウェア)及びデータは、ランダムアクセスメモリ(RAM)の形態をとることができるメインメモリ1204内に格納される。
【0101】
[00114]システム1200は、グラフィックスプロセッサ1206及びディスプレイ1208、つまりコンピュータモニタも備える。システム1200は、二次記憶装置1210も備えることができる。二次記憶装置1210としては、例えば、ハードディスクドライブ及び/又はフロッピーディスクドライブ、磁気テープドライブ、コンパクトディスクドライブなどを表す取り外し可能ストレージドライブが挙げられる。取り外し可能ストレージドライブは、よく知られている方法で取り外し可能ストレージモジュールからの読み出し及び/又は取り外し可能ストレージモジュールへの書き込みを行う。
【0102】
[00115]コンピュータプログラム、又はコンピュータ制御論理アルゴリズムは、メインメモリ1204及び/又は二次記憶装置1210に格納することができる。このようなコンピュータプログラムを使用し、実行することで、システム1200はさまざまな機能を実行することができる。メモリ1204、ストレージ1210、及び/又は他の任意のストレージは、コンピュータ可読媒体の可能ないくつかの例である。
【0103】
[00116]一実施形態において、さまざまな前の図のアーキテクチャ及び/又は機能は、ホストプロセッサ1201、グラフィックスプロセッサ1206、二次記憶装置1210、ホストプロセッサ1201及びグラフィックスプロセッサ1206の両方の機能の少なくとも一部を実行できる集積回路(図示されていない)、チップセット(つまり、関連する機能などを実行するためのモジュールとして動作し、販売されるように設計されている集積回路のグループ)、及び/又はそのような機能を実行するための他の任意の集積回路との関連で実装することができる。
【0104】
[00117]さらに、さまざまな前の図のアーキテクチャ及び/又は機能は、汎用コンピュータシステム、回路基板システム、娯楽目的に限定された専用ゲーム機システム、特定用途向けシステム、及び/又は他の任意の所望のシステムとの関連で実装することができる。例えば、システム1200は、デスクトップコンピュータ、ラップトップコンピュータ、及び/又は他の任意のタイプの論理回路の形態をとることができる。さらに、システム1200は、限定はしないが、携帯情報端末(PDA)デバイス、携帯電話デバイス、テレビなどを含むさまざまな他のデバイスの形態をとることができる。
【0105】
[00118]さらに、図示されていないが、システム1200は、通信目的でネットワーク[例えば、電気通信網、ローカルエリアネットワーク(LAN)、無線ネットワーク、インターネットなどのワイドエリアネットワーク(WAN)、ピアツーピアネットワーク、ケーブルネットワークなど]に結合することができる。
【0106】
[00119]さらに、図示されていないが、システム1200は、通信目的でネットワーク[例えば、電気通信網、ローカルエリアネットワーク(LAN)、無線ネットワーク、インターネットなどのワイドエリアネットワーク(WAN)、ピアツーピアネットワーク、ケーブルネットワークなど]に結合することができる。
【0107】
[00120]さまざまな実施例について説明してきたが、これらは例としてのみ提示されており、限定することを意図していないことは理解されるであろう。したがって、好ましい一実施形態の程度及び範囲は、上述の例示的な実施形態により制限されるのではなく、請求項及びその等価物によってのみ画定されるべきである。