(57)【特許請求の範囲】
【請求項１】
メモリと、
前記メモリに接続されるメモリインターフェイスを含むコントローラと、を有し、
前記コントローラは、前記メモリに格納された第１データと関連したアドレスに書き込む書込みデータと、前記メモリに記憶された第１差分圧縮（ｄｉｆｆｅｒｅｎｔｉａｌｌｙ  ｃｏｍｐｒｅｓｓｅｄ）された値とを受信し、
前記書込みデータと前記第１データとに基づいて第２差分圧縮された値を計算し、
前記メモリに前記第２差分圧縮された値を格納し、
前記第１差分圧縮された値の代わりに前記第２差分圧縮された値を参照するために、前記アドレスの関連性を変更し、
前記第１差分圧縮された値は、前記第１データのハッシュ関数と圧縮関数に基づいて決定され、
前記第２差分圧縮された値は、前記書込みデータと前記第１データのハッシュ関数と圧縮関数に基づいて決定されることを特徴とする記憶装置。
【請求項２】
前記コントローラは、前記アドレスと関連する読出し要請を受信し、
前記第１データを読み出し、
前記第２差分圧縮された値を読み出し、
第２データを形成するために前記第１データと前記第２差分圧縮された値とを結合し、
前記第２データで読出し要請に応答することを特徴とする請求項１に記載の記憶装置。
【請求項３】
前記コントローラは、前記アドレスと関連する読出し要請を受信し、
前記第１データを読み出し、
前記第１データで前記読出し要請に応答することを特徴とする請求項１に記載の記憶装置。
【請求項４】
前記コントローラは、前記アドレスと前記第１差分圧縮された値との関連性を維持し、
前記アドレスと関連する読出し要請を受信し、
前記第１データを読み出し、
前記第１差分圧縮された値を読み出し、
第３データを形成するために前記第１データと前記第１差分圧縮された値とを結合し、
前記第３データで前記読出し要請に応答することを特徴とする請求項１に記載の記憶装置。
【請求項５】
前記アドレスは、論理的アドレスとして参照され、
前記コントローラは、前記第１データを読み出し、
前記第２差分圧縮された値を読み出し
第２データを形成するために前記第１データと前記第２差分圧縮された値とを結合し、
前記第２データを前記メモリ内の物理的アドレスに格納し、
前記第２データを格納する前記物理的アドレスを参照するために前記論理的アドレスの関連性をアップデートすることを特徴とする請求項１に記載の記憶装置。
【請求項６】
前記コントローラは、複数のエントリを含む前記メモリ内のマッピングテーブルを維持し、
各々のエントリは、論理的アドレス、物理的アドレス、及び差分圧縮された値の表示を含むよう構成されることを特徴とする請求項１に記載の記憶装置。
【請求項７】
前記メモリは、不揮発性メモリと揮発性メモリを含み、
前記コントローラは、前記第１データを前記不揮発性メモリに格納し、前記第２差分圧縮された値を前記揮発性メモリに格納するよう構成されることを特徴とする請求項１に記載の記憶装置。
【請求項８】
前記コントローラは、前記第２差分圧縮された値を前記揮発性メモリから前記不揮発性メモリに伝送するよう構成されることを特徴とする請求項７に記載の記憶装置。
【請求項９】
前記第１データは、順次書込み（ｉｎ−ｐｌａｃｅ  ｗｒｉｔｅｓ）を遂行できないメモリの少なくとも一部分に格納されることを特徴とする請求項１に記載の記憶装置。
【請求項１０】
前記コントローラは、前記メモリに格納されたデータと関連しない新しいアドレスを有する書込み要請を受信し、
前記書込み要請のデータを前記メモリに書き込み、
前記メモリに書き込まれたデータと前記新しいアドレスとの関連性を生成することを特徴とする請求項１に記載の記憶装置。
【請求項１１】
記憶装置の動作方法であって、
メモリに格納された第１データと関連するアドレスに書き込む書込みデータと、前記メモリに格納された第１差分圧縮された値とを受信する段階と、
前記書込みデータと前記第１データとに基づいて第２差分圧縮された値を計算する段階と、
前記メモリに前記第２差分圧縮された値を格納する段階と、
前記第１差分圧縮された値の代わりに前記第２差分圧縮された値を参照するために、前記アドレスの関連性を変更する段階と、を有し、
前記第１差分圧縮された値は、前記第１データのハッシュ関数と圧縮関数に基づいて決定され、
前記第２差分圧縮された値は、前記書込みデータと前記第１データのハッシュ関数と圧縮関数に基づいて決定されることを特徴とする記憶装置の動作方法。
【請求項１２】
前記アドレスと関連する読出し要請を受信する段階と、
前記第１データを読み出す段階と、
前記第２差分圧縮された値を読み出す段階と、
第２データを形成するために前記第１データと前記第２差分圧縮された値とを結合する段階と、
前記第２データで前記読出し要請に対応する段階と、をさらに有することを特徴とする請求項１１に記載の記憶装置の動作方法。
【請求項１３】
前記アドレスと関連する読出し要請を受信する段階と、
前記第１データを読み出す段階と、
前記第１データで前記読出し要請に応答する段階をさらに有することを特徴とする請求項１１に記載の記憶装置の動作方法。
【請求項１４】
前記アドレスは論理的アドレスとして参照され、
前記記憶装置の動作方法は、前記第１データを読み出す段階と、
前記第２差分圧縮された値を読み出す段階と、
第２データを形成するために前記第１データと前記第２差分圧縮された値とを結合する段階と、
前記第２データを前記メモリ内の物理的アドレスに格納する段階と、
前記第２データを格納する前記物理的アドレスを参照するために前記論理的アドレスの関連性をアップデートする段階をさらに有することを特徴とする請求項１１に記載の記憶装置の動作方法。
【請求項１５】
複数のエントリを含む前記メモリ内のマッピングテーブルを維持する段階を、さらに有し、
各々のエントリは、論理的アドレス、物理的アドレス、及び差分圧縮された値の表示を含むことを特徴とする請求項１１に記載の記憶装置の動作方法。
【請求項１６】
前記第１データを不揮発性メモリに格納する段階と、
前記第２差分圧縮された値を前記揮発性メモリに格納する段階と、をさらに有することを特徴とする請求項１に記載の記憶装置の動作方法。
【請求項１７】
前記第２差分圧縮された値を前記揮発性メモリから前記不揮発性メモリに伝送する段階をさらに有することを特徴とする請求項１６に記載の記憶装置の動作方法。
【請求項１８】
通信インターフェイスと、
前記通信インターフェイスを通じてメモリに接続されるプロセッサと、を有し、
前記プロセッサは、前記プロセッサに接続される記憶装置に格納された第１データと関連するアドレスに書き込む書込みデータと、第１差分圧縮された値とを受信し、
前記書込みデータと前記第１データとに基づいて第２差分圧縮された値を計算し、
前記第１差分圧縮された値の代わりに前記第２差分圧縮された値を参照するために、前記アドレスの関連性を変更し、
前記第１差分圧縮された値は、前記第１データのハッシュ関数と圧縮関数に基づいて決定され、
前記第２差分圧縮された値は、前記書込みデータと前記第１データのハッシュ関数と圧縮関数に基づいて決定されることを特徴とするシステム。
【請求項１９】
前記プロセッサに接続されたメモリをさらに有し、
前記プロセッサは、前記メモリに前記第２差分圧縮された値を格納するよう構成されることを特徴とする請求項１８に記載のシステム。
【請求項２０】
前記プロセッサは、前記記憶装置に前記第２差分圧縮された値を格納するよう構成されることを特徴とする請求項１８に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は記憶装置に関し、さらに詳細にはバージョニング記憶装置（ｖｅｒｓｉｏｎｉｎｇ  ｓｔｏｒａｇｅ  ｄｅｖｉｃｅｓ）及びその動作方法に関する。
【背景技術】
【０００２】
記憶装置はレイテンシに影響を及ぶ様々な方法として動作することができる。
例えば、データはＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）にページ単位に書き込まれる。
ブロックは多数のページからなる。
フラッシュメモリは、ブロック単位に消去動作を遂行することができる。
【０００３】
仮に１つのブロックにある様々なページがそれ以上必要でなければ、そのブロックにある他の有効なページを読み出して他のブロックに書き込み、そのブロックをフリーアップ（ｆｒｅｅ  ｕｐ）状態にする。
その次に、その状態のブロックを消去することができる。
このようなプロセスをガーベッジコレクションと称する。
【０００４】
ガーベッジコレクションは、記憶装置のレイテンシを増加させるおそれがある。
特に、ＳＳＤは、ガーベッジコレクションを遂行する間に読出し及び／又は書込み要請を処理できない。
その結果として、入ってくる読出し／書込み要請が、ガーベッジコレクションが終わるまで、遅延されてしまう。
【０００５】
いくつかのハードディスクは、ＳＭＲ（ｓｈｉｎｇｌｅｄ  ｍａｇｎｅｔｉｃ  ｒｅｃｏｒｄｉｎｇ）を使用する。
ＳＭＲによって、記憶媒体のトラックをオーバーラップさせることができる。
トラックに記憶されたデータが変更され、そのトラックが再び書き込まれる時、オーバーラップするトラックもまた読み出し、再び書き込まれなければならない。
この追加的な動作は、それが遂行される間にレイテンシを引き起こすという問題がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は上記従来の記憶装置における問題点に鑑みてなされたものであって、本発明の目的は、レイテンシ性能を向上させ、メモリセルの消耗を改善して寿命を増加するバージョニング記憶装置及びその動作方法並びにそれを含むシステムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するためになされた本発明による記憶装置は、メモリと、前記メモリに接続されるメモリインターフェイスを含むコントローラと、を有し、前記コントローラは、前記メモリに格納された第１データと関連したアドレスに書き込む書込みデータと、前記メモリに記憶された第１差分圧縮（ｄｉｆｆｅｒｅｎｔｉａｌｌｙ  ｃｏｍｐｒｅｓｓｅｄ）された値とを受信し、前記書込みデータと前記第１データとに基づいて第２差分圧縮された値を計算し、前記メモリに前記第２差分圧縮された値を格納し、前記第１差分圧縮された値の代わりに前記第２差分圧縮された値を参照するために、前記アドレスの関連性を変更し、前記第１差分圧縮された値は、前記第１データのハッシュ関数と圧縮関数に基づいて決定され、前記第２差分圧縮された値は、前記書込みデータと前記第１データのハッシュ関数と圧縮関数に基づいて決定されることを特徴とする。
【０００８】
上記目的を達成するためになされた本発明による記憶装置の動作方法は、記憶装置の動作方法であって、メモリに格納された第１データと関連するアドレスに書き込む書込みデータと、前記メモリに格納された第１差分圧縮された値とを受信する段階と、前記書込みデータと前記第１データとに基づいて第２差分圧縮された値を計算する段階と、前記メモリに前記第２差分圧縮された値を格納する段階と、前記第１差分圧縮された値の代わりに前記第２差分圧縮された値を参照するために、前記アドレスの関連性を変更する段階と、を有し、前記第１差分圧縮された値は、前記第１データのハッシュ関数と圧縮関数に基づいて決定され、前記第２差分圧縮された値は、前記書込みデータと前記第１データのハッシュ関数と圧縮関数に基づいて決定されることを特徴とする。
【０００９】
上記目的を達成するためになされた本発明によるシステムは、通信インターフェイスと、前記通信インターフェイスを通じてメモリに接続されるプロセッサと、を有し、前記プロセッサは、前記プロセッサに接続される記憶装置に格納された第１データと関連するアドレスに書き込む書込みデータと、第１差分圧縮された値とを受信し、前記書込みデータと前記第１データとに基づいて第２差分圧縮された値を計算し、前記第１差分圧縮された値の代わりに前記第２差分圧縮された値を参照するために、前記アドレスの関連性を変更し、前記第１差分圧縮された値は、前記第１データのハッシュ関数と圧縮関数に基づいて決定され、前記第２差分圧縮された値は、前記書込みデータと前記第１データのハッシュ関数と圧縮関数に基づいて決定されることを特徴とする。
【発明の効果】
【００１０】
本発明に係る記憶装置及びその動作方法並びにシステムによれば、記憶装置のレイテンシ性能が向上されることができる。
また、記憶装置内のメモリセルの消耗を改善して寿命を増加させることができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の一実施形態による記憶装置を概略的に示すブロック図である。
【図２Ａ】本発明の実施形態による記憶装置に対する書込みを説明するための概念図である。
【図２Ｂ】本発明の実施形態による記憶装置に対する書込みを説明するための概念図である。
【図２Ｃ】本発明の実施形態による記憶装置に対する書込みを説明するための概念図である。
【図２Ｄ】本発明の実施形態による記憶装置に対する書込みを説明するための概念図である。
【図２Ｅ】本発明の実施形態による記憶装置に対する書込みを説明するための概念図である。
【図３Ａ】本発明の実施形態による記憶装置から読み出す動作を説明するための概念図である。
【図３Ｂ】本発明の実施形態による記憶装置から読み出す動作を説明するための概念図である。
【図３Ｃ】本発明の実施形態による記憶装置から読み出す動作を説明するための概念図である。
【図３Ｄ】本発明の実施形態による記憶装置から読み出す動作を説明するための概念図である。
【図３Ｅ】本発明の実施形態による記憶装置から読み出す動作を説明するための概念図である。
【図４Ａ】本発明の他の実施形態による記憶装置を概略的に示すブロック図である。
【図４Ｂ】本発明のさらに他の実施形態による記憶装置を概略的に示すブロック図である。
【図５】本発明の実施形態による記憶装置内のページデータサイズを示す図である。
【図６】本発明の実施形態によるＳＳＤを概略的に示すブロック図である。
【図７】本発明の実施形態によるバージョニング記憶システムを概略的に示すブロック図である。
【図８】本発明の実施形態によるサーバーを概略的に示すブロック図である。
【図９】本発明の実施形態による分散システムを概略的に示すブロック図である。
【図１０】本発明の実施形態によるデータセンターを概略的に示すブロック図である。
【発明を実施するための形態】
【００１２】
次に、本発明に係る記憶装置及びその動作方法並びにシステムを実施するための形態の具体例を図面を参照しながら説明する。
【００１３】
本発明は、バージョニング記憶装置及びその動作方法に係る。
後述する説明は、当分野に通常的な知識を有する者（以下、当業者）が実施形態を実施できるように提供する。
実施形態及び一般的な原則及び特性に対する多様な変更画可能であることは明確である。実施形態は主に具体的な具現で提供する具体的な方法及びシステムの形態として説明する。
【００１４】
しかし、方法及びシステムは、他の具現で有効に動作することができる。“実施形態”、“一実施形態”、“他の実施形態”のような用語は多重の実施形態のみならず、同一の実施形態を参照することができる。
実施形態は特定の構成要素を具備するシステム及び／又は装置を参照して説明する。
しかし、システム及び／又は装置は図示したことより多いか、又はそれより少ない構成要素を含むことができる。
そして、本発明の技術的思想を逸脱しない範囲内で構成要素の多様な配置及びタイプの変更が多様に実施することができる。
実施形態は特定の段階を具備する具体的な方法を参照して説明する。しかし、方法及びシステムは異なる及び／又は追加的な段階及び実施形態と一致しない異なる順序を有する段階を具備する他の方法にしたがって動作することができる。
したがって、実施形態は図示した具体的な実施形態に限定されなく、説明された原理及び特性と一致する最も広い範囲にしたがう。
実施形態は、特定の構成要素を具備する具体的なシステムを参照して説明する。
本発明の実施形態が他の及び／又は追加的な構成要素及び／又は他の特性を具備するシステムや装置の使用と一貫することは当業者に明確である。
また、当業者は他の方法及びシステムが他の構造と一致するを理解すべきである。また、当業者は方法及びシステムが多重要素を具備するメモリシステム構造の使用に適用されることを理解できる。
【００１５】
ここで使用する用語、特に添付した請求の範囲に使用される用語は広い意味として解釈されることが理解される。例えば、“含む”“又は“含んでいる”の用語は“含むが、限定されない”と解釈されなければならない。“具備した”又は“有する”の用語は“少なくとも具備した”又は“少なくとも有する”の意味として解析されるべきである。
【００１６】
図１は、本発明の実施形態による記憶装置を示すブロック図である。
実施形態として、記憶装置１００はコントローラ１０２とメモリ１０４とを含む。
コントローラ１０２は記憶装置１００の動作を管理するように構成される回路である。
そして、コントローラ１０２は、汎用目的プロセッサ（ｇｅｎｅｒａｌ  ｐｕｒｐｏｓｅ  ｐｒｏｃｅｓｓｏｒ）、デジタル信号プロセッサ（ＤＳＰ；ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）、ＡＳＩＣ（ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ）、マイクロコントローラ（ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ）、プログラム可能なロジック装置（ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ）、離散回路（ｄｉｓｃｒｅｔｅ  ｃｉｒｃｕｉｔｓ）、これらのような装置の組み合わせ等のような要素（ｃｏｍｐｏｎｅｎｔｓ）を含む。
【００１７】
コントローラ１０２は、レジスター、キャッシュメモリ、プロセシングコア等のような内部部分（ｉｎｔｅｒｎａｌ  ｐｏｒｔｉｏｎｓ）を含む。
そして、コントローラ１０２は、またアドレス及びデータバスインターフェイス、インタラプトインターフェイス等のような外部インターフェイスを含む。
例えば、ただ１つのコントローラ１０２が記憶装置１００内に図示しているが、複数のコントローラが存在することもできる。
また、バッファ、メモリインターフェイス回路、通信インターフェイス等のような他のインターフェイス装置がコントローラ１０２を内部及び外部要素と接続する記憶装置１００の一部分になることができる。
【００１８】
他の実施形態として、コントローラ１０２は、記憶装置１００が通信できるようにする回路を含む通信インターフェイスを含むことができる。
例えば、通信インターフェイスには、ｕｎｉｖｅｒｓａｌ  ｓｅｒｉａｌ  ｂｕｓ（ＵＳＢ）、ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）、ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ（ＰＣＩｅ）、ｓｅｒｉａｌ  ａｔｔａｃｈｅｄ  ＳＣＳＩ（ＳＡＳ）、ｐａｒａｌｌｅｌ  ＡＴＡ（ＰＡＴＡ）、ｓｅｒｉａｌ  ＡＴＡ（ＳＡＴＡ）、ＮＶＭ  Ｅｘｐｒｅｓｓ（ＮＶＭｅ）、ｕｎｉｖｅｒｓａｌ  ｆｌａｓｈ  ｓｔｏｒａｇｅ（ＵＦＳ）、Ｆｉｂｅｒ  ｃｈａｎｎｅｌ、Ｅｔｈｅｒｎｅｔ、ｒｅｍｏｔｅ  ｄｉｒｅｃｔ  ｍｅｍｏｒｙ  ａｃｃｅｓｓ（ＲＤＭＡ）、Ｉｎｆｉｎｉｂａｎｄ、ｏｒ  ｏｔｈｅｒ  ｉｎｔｅｒｆａｃｅｓ等が含むことができる。
【００１９】
このような通信インターフェイスを利用して、記憶装置１００は、関連する媒体を通じて外部装置及びシステムと通信するように構成することができる。
他の実施形態として、コントローラ１０２は、通信インターフェイスを通じて読出し及び書込み要請を受信するように構成することができる。
【００２０】
メモリ１０４は、データを記憶（格納）できる所定の装置である。
ここで、１つのメモリ１０４が記憶装置１００のために図示しているが、複数のメモリが記憶装置１００内に含まれることができる。
記憶装置１００は、複数の異なるメモリタイプを含むことができる。
【００２１】
例として、メモリ１０４には、ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＤＲＡＭ）、ＤＤＲ、ＤＤＲ２、ＤＤＲ３、ＤＤＲ４のような規格にしたがうｄｏｕｂｌｅ  ｄａｔａ  ｒａｔｅ  ｓｙｎｃｈｒｏｎｏｕｓ  ｄｙｎａｍｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＤＤＲ  ＳＤＲＡＭ）、ｓｔａｔｉｃ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＳＲＡＭ）、ｆｌａｓｈ  ｍｅｍｏｒｙ、ｓｐｉｎ−ｔｒａｎｓｆｅｒ  ｔｏｒｑｕｅ  ｍａｇｅｎｔｏｒｅｓｉｓｔｉｖｅ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＳＴＴ−ＭＲＡＭ）、Ｐｈａｓｅ−Ｃｈａｎｇｅ  ＲＡＭ、ｎａｎｏｆｌｏａｔｉｎｇ  ｇａｔｅ  ｍｅｍｏｒｙ（ＮＦＧＭ）、ｏｒ  ｐｏｌｙｍｅｒ  ｒａｎｄｏｍ  ａｃｃｅｓｓ  ｍｅｍｏｒｙ（ＰｏＲＡＭ）、ｍａｇｎｅｔｉｃ  ｏｒ  ｏｐｔｉｃａｌ  ｍｅｄｉａのようなｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ等を含むことができる。
【００２２】
メモリ１０４は、データ１０６、差分圧縮値（ｄｉｆｆｅｒｅｎｔｉａｌｌｙ  ｃｏｍｐｒｅｓｓｅｄ  ｖａｌｕｅｓ；以下、ＤＣＶと記す）１０８及びマッピングテーブル１１０を格納（以下、「格納する」で記す）するよう構成される。
後述でさらに詳細に説明するが、メモリ１０４は複数のメモリ装置を含むことができる。
メモリ１０４に格納されたデータは、多様な方法でそのような装置の間に分布させることができる。
しかし、説明を簡易にするために、ここではデータは１つのメモリ１０４に格納されることと説明する。
【００２３】
コントローラ１０２は、メモリ１０４に接続されるメモリインターフェイス１１１を含む。
コントローラ１０２は、メモリインターフェイス１１１を通じてメモリ１０４にアクセスするよう構成される。
メモリインターフェイス１１１は、命令、アドレス、及び／又はデータバスのためのインターフェイスを含む。
インターフェイスを通じて、コントローラ１０２とメモリ１０４とは通信する。
【００２４】
メモリ１０４がコントローラ１０２とは別に構成されることを説明したが、他の実施形態ではキャッシュメモリやＳＲＡＭ等のようなメモリ１０４の一部分がコントローラ１０２に含まれてもよい。
コントローラ１０２は内部通信バスを含む。
プロセシングコア、外部通信インターフェイス、キャッシュメモリ等のような内部要素は内部通信バスを通じて通信することができる。
【００２５】
データ１０６は、記憶装置１００に格納されたデータを示す。
後述でさらに詳細に説明するが、ＤＣＶ１０８は、関連するデータ１０６と結合される時、記憶装置１００に格納された現在データを示すデータを意味する。
他の実施形態として、ＤＣＶ１０８は対応するデータ１０６のサイズより少ないサイズを有する値である。
例えば、データ１０６とＤＣＶ１０８とは各々異なるデータサイズを有するページに格納することができる。
例として、データ１０６のページは８Ｋバイトのサイズを有する。
これと対照的に、対応するＤＣＶ１０８のためのページのサイズは４Ｋバイトである。
特定データサイズを例として使用したが、他の実施形態ではデータサイズが異なってもよい。
【００２６】
コントローラ１０２は、メモリ１０４に格納されたデータ１０６と関連するアドレスに書き込む書込みデータと書込み要請を受信するよう構成される。
マッピングテーブル１１０は、論理的アドレス、物理的アドレス、ＤＣＶ「アドレス又は値」等のような情報を有するエントリを含み、「アドレス又は値」又は他の情報間の関連性を作成する。
マッピングテーブル１１０は、ページ、ブロック、又はハイブリッドマッピング方策を使用することができる。
しかし、ここでの例は説明のためにブロックマッピングを使用する。
【００２７】
コントローラ１０２は、マッピングテーブル１１０に格納されたデータを使用して、物理的アドレス、ＤＣＶ１０８、又は論理的アドレスと関連されることを職別する。
例えば、通信インターフェイスを通じて論理的アドレスと共に読出し又は書込み要請を受信した後に、コントローラ１０２はマッピングテーブル１１０をアクセスして論理的アドレスと関連するエントリを読み出すように構成する。
実施形態として、コントローラ１０２は、マッピングテーブル１１０を格納する内部キャッシュメモリにアクセスするよう構成される。
しかし、他の例として、コントローラ１０２は、ＤＲＡＭのような外部メモリにアクセスするよう構成されてもよい。
【００２８】
コントローラ１０２は、論理的アドレスと関連する物理的アドレスでメモリ１０４に格納されたデータ１０６を読み出すよう構成される。
コントローラ１０２は、書込み要請に含まれた書込みデータ及び物理的アドレスから読み出したデータに基づいてＤＣＶ１０８を計算するように構成される。
この計算は物理的アドレスに格納されたデータ１０６と入ってくる書込みデータ間の差分に基づいてＤＣＶ１０８を生成する。
また、この計算は物理的アドレスから読み出したデータ及び／又は書込みデータより小さいサイズを有するＤＣＶ１０８を生成する。
【００２９】
ＤＣＶは、多様な方法で計算することができる。
実施形態として、コントローラ１０２は、ソフトウェア又は内部回路内でＤＣＶを計算するよう構成することができる。
ＤＣＶ機能（１０９−１）はコントローラ１０２のこのような動作を示す。
即ち、コントローラ１０２が書込みデータ及び物理的アドレスから読み出したデータ１０６を受信した後に、コントローラ１０２は書込みデータ及びメモリ１０４からの読出しデータを使用して数学的な計算を遂行することによって、ＤＣＶを生成するよう構成される。
【００３０】
他の例として、コントローラ１０２は、外部回路を使用してＤＣＶを計算することができる。
例えば、コントローラ１０２は、書込みデータ及び読出しデータをＤＣＶ回路（１０９−２）に直接接続する。
そして、コントローラ１０２は、その応答によりＤＣＶを生成する。
ＤＣＶ回路（１０９−２）は、演算ユニット（ａｒｉｔｈｍｅｔｉｃ  ｕｎｉｔｓ）、ルックアップテーブル（ｌｏｏｋｕｐ  ｔａｂｌｅｓ）、入出力バッファ（ｉｎｐｕｔ／ｏｕｔｐｕｔ  ｂｕｆｆｅｒｓ）等を含むことによって、ＤＣＶを計算し、コントローラ１０２及び／又はメモリ１０４とインターフェイスする。
【００３１】
ＤＣＶ回路（１０９−２）は、コントローラ１０２のＤＣＶ機能（１０９−１）に対する代替（ａｌｔｅｒｎａｔｉｖｅ）や結合（ｃｏｎｊｕｃｔｉｏｎ）として使用することを示すように点線にて示してある。
ＤＣＶ回路（１０９−２）を通じて直接又は間接的にコントローラ１０２によって遂行される多様な機能はＤＣＶを生成するよう使用される。
【００３２】
実施形態として、機能は簡単な引き算動作（ｓｕｂｔｒａｃｔｉｏｎ  ｏｐｅｒａｔｉｏｎ）である。
他の例として、その機能はより複雑なハッシュ関数であってもよい。
他の例として、記録はビットがフリップすることを示すように生成することができる（ｒｅｃｏｒｄｓ  ｃａｎ  ｂｅ  ｃｒｅａｔｅｄ  ｉｎｄｉｃａｔｉｎｇ  ｗｈｉｃｈ  ｂｉｔｓ  ｈａｖｅ  ｆｌｉｐｐｅｄ）。
実施形態として、その機能は“ｄｉｆｆ”関数として称される。
特別な実施形態として、その機能はＤＣＶのサイズを減らすために最適化され得る。
実施形態として、その機能は差分のサイズを減らすために圧縮関数（ｃｏｍｐｒｅｓｓｉｏｎ  ｆｕｃｔｉｏｎ）を含むことができる。
【００３３】
コントローラ１０２は、またＤＣＶ回路（１０９−２）を通じて直接又は間接的にＤＣＶ関数の逆（ｉｎｖｅｒｓｅ）である関数を遂行するよう構成され得る。
逆ＤＣＶ関数は、ソースデータ及び他のデータから生成されたソースデータ及びＤＣＶを入力として使用して、他のデータを再生成する関数である。
したがって、データ１０６及びＤＣＶ１０８を維持することによって、他のデータは逆ＤＣＶ関数を通じて利用する。
【００３４】
コントローラ１０２は、メモリ１０４に計算されたＤＣＶを格納するよう構成される。
例えば、コントローラ１０２は、ＤＣＶ１０８と共に計算されたＤＣＶをメモリ１０４に格納することができる。
しかし、後述にてさらに詳細に説明するが、他の実施形態として、ＤＣＶはＤＣＶ１０８と共に記憶される前に、メモリ１０４の１つ又はそれ以上の他の部分にキャッシュされることもできる。
【００３５】
コントローラ１０２は、アドレスの関係性を変更させて、アドレスと関連する以前ＤＣＶの代わりに計算されたＤＣＶを参照することができる。
後述にてさらに詳細に説明するが、アドレスと関連するデータ１０６が読み出される時、新しいＤＣＶは以前ＤＣＶの代わりにアクセスすることができる。
他の例として、単なる１つのＤＣＶがアドレスと関連するデータを示すように維持することができる。
【００３６】
実施形態として、メモリ１０４の少なくとも一部分は、書込みの観点から、非対称性能（ａｓｙｍｍｅｔｒｉｃ  ｐｅｒｆｏｒｍａｎｃｅ）を有することができる。
例えば、フラッシュメモリベースの記憶装置は「ｉｎ−ｐｌａｃｅ」書込みを許容しない。
新しいブロックは書込みのために割り当てされなければならない。
そして、次の書込み（ｆｕｔｕｒｅ  ｗｒｉｔｅｓ）を準備するために、以前ブロックは削除されなければならない。
ＳＭＲ（ｓｈｉｎｇｌｅｄ  ｍａｇｎｅｔｉｃ  ｒｅｃｏｒｄｉｎｇ）を有する記憶装置で、他のトラックと重なるトラックに書き込むことは、重なるトラック（ｏｖｅｒｌａｐｐｉｎｇ  ｔｒａｃｋ）を再び書き込むことを含む。
後述にてさらに詳細に説明するが、ＤＣＶを使用することによって、非対称性能の影響は減らされる。
【００３７】
図２Ａ〜図２Ｅは、本発明の実施形態による記憶装置に対する書込みを説明するための概念図である。
図１の記憶装置１００が例として使用される。
図１及び図２Ａを参照すると、実施形態として、マッピングテーブル２１０はメモリ１０４に格納されたマッピングテーブル２１０に対応する。
マッピングテーブル２１０は複数のエントリ２１１を含む。
各々のエントリ２１１は、論理的ブロックアドレス（ＬＢＡ）、物理的ブロックアドレス（ＰＢＡ）、及びＤＣＶの表示（ｉｎｄｉｃａｔｉｏｎ）のためのフィールドを含む。
【００３８】
特定フィールドを例として使用したが、他の実施形態として、他のフィールドが存在することもでき、そのフィールドが他の形態を取ってもよい。
例えば、ここで、論理的及び物理的アドレスはブロックとされるが、他の実施形態では、論理的及び物理的アドレスがブロック内のページ又はメモリ１０４の他の構造と関連することもできる。
他の例として、物理的アドレスのようなシングルアドレス（ｓｉｎｇｌｅ  ａｄｄｒｅｓｓ）は現在唯一のアドレス（ｔｈｅ  ｏｎｌｙ  ａｄｄｒｅｓｓ  ｐｒｅｓｅｎｔ）である。
【００３９】
マッピングテーブル２１０で、２つのエントリ（２１１−１、２１１−２）は以前から存在したエントリである。
新しい論理的ブロックアドレスに書込み要請（２０２−１）が入力される時、新しいエントリ（２１１−３）がコントローラ１０２によって生成される。
この例では、新しいエントリ（２１１−３）は、論理的ブロックアドレス「１」のためのものである。コントローラ１０２は論理的ブロックアドレス１と物理的ブロックアドレス２３とを関連させる。
【００４０】
しかし、物理的ブロックアドレスと関連する唯一のデータは、入力されるデータＤである。
例えば、データＤは新しいファイルと関連付けされ、ＤＣＶは計算されない。
即ち、所定の有効データもデータメモリ（２０４−１）内の物理的アドレス「２３」に存在しない。
ＤＣＶフィールドにある‘ｘ’表記はＤＣＶが存在しないか、或いは有効でない表示を示す。
実施形態として、フラッグ（ｆｌａｇ）はＤＣＶが存在するか、或いは有効であるかを示す。
他の例として、特定アドレス／フィールド値は、ＤＣＶが存在しないか、或いは有効でない表示として定義することができる。
その他の例として、ＤＣＶフィールドはエントリ（２１１−３）の一部ではないこともあり得る。ＤＣＶが存在しないか、或いは有効でない表示は他の形態を取ることもあり得る。
【００４１】
書込み要請（２０２−１）が新しいエントリ（２１１−３）と関連付けされるので、コントローラ１０２はデータＤをデータメモリ（２０４−１）の物理的ブロックアドレス「２３」に格納する。
データメモリ（２０４−１）は、データ１０６が格納されるメモリ１０４の部分を示す。
したがって、新しい有効エントリ（２１１−３）は、データメモリ（２０４−１）に格納されたデータを参照して生成される。
データＤがデータメモリ（２０４−１）に書き込まれることとして説明したが、他の実施形態として、多様なバッファーリング又はキャッシング等がデータＤをデータメモリ（２０４−１）に伝送する前に書き込むパート（ｐａｒｔ）として動作することもできる。
【００４２】
図１及び図２Ｂを参照すると、実施形態として、新しい書込み要請（２０２−２）を受信する。
再び、書込み要請（２０２−２）が論理的ブロックアドレス「１」に直接的に向かう（ｄｉｒｅｃｔｅｄ  ｔｏｗａｒｄｓ）。
しかし、エントリ（２１１−３）が存在することによって、データは既にデータメモリ（２０４−１）の関連する物理的ブロックアドレスに格納されている。
即ち、図２ＡのデータＤが格納されている。
したがって、この書込み要請（２０２−２）は、論理的ブロックアドレス「１」に格納されたデータを新しいデータＤ’でアップデートする。
【００４３】
データＤの元に書込みと対照的に、図２Ａと関連して上記で説明したように、データＤ’はデータメモリ（２０４−１）の物理的ブロックアドレス「２３」に書き込まれない。
コントローラ１０２はエントリ２１１がマッピングテーブル２１０に存在するかを決定する。
実施形態として、コントローラ１０２は、書込み要請の論理的ブロックアドレスと存在するエントリ２１１の論理的アドレスを比較する。
仮に合致（ｍａｔｃｈ）が発見されれば、以前書込みが発生し、データがデータメモリ（２０４−１）に存在する。
コントローラ１０２は、関連する物理的ブロックアドレスに格納されたデータＤを読み出す。
ここで、コントローラ１０２は、物理的ブロックアドレス「２３」から読み出す。
図２Ａに示したように以前に書き込まれたデータＤはデータメモリ（２０４−１）から読み出される。
【００４４】
書込み要請（２０２−２）の新しいデータＤ’及びデータメモリ（２０４−１）からの存在するデータＤはＤＣＶ機能（２０８−１）の入力として使用される。
ＤＣＶ機能（２０８−１）は、上記で説明したように、ＤＣＶを計算するために、コントローラ１０２によって遂行される動作を示す。
ＤＣＶ機能（２０８−１）は、新しいデータＤ’及び存在するデータＤに基づいてＤＣＶ’を生成する。
ここで、ＤＣＶ’はデータＤと結合されてデータＤ’を生成することを示すためにアポストロフィを付けた。
コントローラ１０２は、ＤＣＶメモリ（２０４−２）内に新しいＤＣＶ’を格納する。
実施形態として、コントローラ１０２はＤＣＶアドレスをマッピングテーブル２１０にあるエントリ（２１１−３）のＤＣＶフィールドに格納する。
ここで、「０ｘ１２」の値はその値が新しいか、変更されたことを示すために、アンダーラインを付けた。
【００４５】
他の例として、ＤＣＶメモリ（２０４−２）は使用されなく、ＤＣＶ’はエントリ（２１１−３）のＤＣＶフィールドに格納することができる。
例えば、ＤＣＶは相対的に小さく、それでエントリ２１１にＤＣＶを記憶できるメモリの追加的な量は相対的に小さくなる。
それにも拘らず、エントリ（２１１−３）は、現在論理的ブロックアドレス、物理的ブロックアドレス、及びＤＣＶを結合（ａｓｓｏｃｉａｔｉｏｎ）する。
【００４６】
図１及び図２Ｃを参照すると、実施形態として、他の書込み要請（２０２−３）がコントローラ１０２によって入力される。
この書込み要請（２０２−３）は、論理的ブロックアドレス「１」に新しいデータＤ”を書き込むための要請である。
再び、コントローラ１０２はマッピングテーブル２１０で合致（ｍａｔｃｈ）を見つけようとする。
ここで、エントリ（２１１−３）が存在する。
図２Ｂと同様に、コントローラ１０２は、エントリ（２１１−３）で表示された物理的ブロックアドレス「２３」からデータＤを読み出す。
データＤは、データメモリ（２０４−１）から出力される。
データメモリ（２０４−１）から出力された、書込み要請（２０２−３）の新しいデータＤ”と、存在するデータＤはＤＣＶ機能（２０８−１）に対する入力として使用される。
【００４７】
ＤＣＶ機能（２０８−１）は、新しいデータＤ”と存在するデータＤに基づいて新しいＤＣＶ”を生成する。
特に、ＤＣＶ”の生成は、図２Ｂで書き込まれたデータＤ’の中間状態（ｉｎｔｅｒｍｅｄｉａｔｅ  ｓｔａｔｅ）に関与しない。
データＤが物理的ブロックアドレス「２３」でデータメモリ（２０４−１）に格納されたデータであるので、関心の差（ｄｉｆｆｅｒｅｎｃｅ  ｏｆ  ｉｎｔｅｒｅｓｔ）はデータＤと書き込まれるデータＤ”との間の差である。
コントローラ１０２は、結果であるＤＣＶ”をＤＣＶメモリ（２０４−２）に格納する。
コントローラ１０２は、エントリ（２１１−３）のＤＣＶフィールドにあるＤＣＶアドレスを使用して、予め存在するＤＣＶ’を新しいＤＣＶ”で重なって書き込む。
したがって、現在エントリ（２１１−３）にあるＤＣＶフィールドは新しいＤＣＶ”を参照する（ｒｅｆｅｒｅｎｃｅｓ）。
【００４８】
図１及び図２Ｄを参照すると、その動作は図２Ｃで説明したものと類似する。
しかし、実施形態として、ＤＣＶ”をＤＣＶメモリ（２０４−２）に書き込めば、新しいＤＣＶアドレスが生成される。
例えば、仮にＤＣＶメモリ（２０４−２）がフラッシュメモリで具現されれば、新しいＤＣＶ”はＤＣＶ’を格納するページと異なる、ＤＣＶメモリ（２０４−２）にあるページに書き込まれる。
新しいＤＣＶアドレスはＤＣＶメモリ（２０４−２）にあるアドレスであり、ＤＣＶ”はそこに格納される。エントリ（２１１−３）で、新しいアドレスは「０ｘ２１」で表示され、ＤＣＶフィールドで変更を示すようにアンダーラインを付けた。
【００４９】
ＤＣＶメモリ（２０４−２）にある同一アドレスでメモリ位置（ｍｅｍｏｒｙ  ｌｏｃａｔｉｏｎ）をアップデートするか、或いはエントリ（２１１−３）を新しいアドレスにアップデートすることが、論理的ブロックアドレスとＤＣＶの関連性（ａｓｓｏｃｉａｔｉｏｎ）を変更する方法の例として使用して新しいＤＣＶを参照することにも拘らず、その関連性においての変更が異なる。
例えば、実施形態として、コントローラ１０２は、ＤＣＶフィールドのような、マッピングテーブルにＤＣＶ”を格納する。
エントリ（２１１−３）に格納されたＤＣＶ’はＤＣＶ”と取り替える。
【００５０】
図１及び図２Ｅを参照すると、実施形態として、コントローラ１０２は、ＤＣＶフラッシュアクセス（２０２−４）を受信する。
ここで、ＤＣＶフラッシュアクセス（２０２−４）は、上記で説明した各図と同様に、論理的ブロックアドレス「１」を示す。
マッピングテーブル２１０は、図２Ｄのマッピングテーブル２１０と同様に、初期状態（２１０−１）にある。
再び、コントローラ１０２はエントリ（２１１−３）にアクセスし、データメモリ（２０４−１）にある関連する物理的ブロックアドレス「２３」からデータＤを読み出す。
しかし、コントローラ１０２は、ＤＣＶフィールドを使用して、ＤＣＶメモリ（２０４−２）に格納されたＤＣＶ”にアクセスする。
ここで、コントローラ１０２は、ＤＣＶアドレスを使用してＤＣＶメモリ（２０４−２）にアクセスする。
【００５１】
コントローラ１０２は、ＤＣＶ”及びデータＤを逆ＤＣＶ機能（２０８−２）に提供する。
逆ＤＣＶ機能（２０８−２）は、上記で説明したように、データとＤＣＶとを組み合わせてデータアップデートされたバージョンを作るための関数を示す。
ここで、逆ＤＣＶ機能（２０８−２）は、データＤとＤＣＶ”とを使用してデータＤ”を再生成する。
コントローラ１０２は、データＤの代わりにデータメモリ（２０４−１）にデータＤ”を格納する。
マッピングテーブル２１０は、状態（２１０−２）にアップデートされる。
ここで、エントリ（２１１−３）は、有効ＤＣＶが存在しないことを示すようにアップデートされる。
したがって、論理的ブロックアドレス「１」に連続された書込みが、図２Ｂで説明したように、コントローラ１０２によって取り扱われる。
【００５２】
上記で説明した動作の結果として、頻繁に変更されたデータは非対称性能を有するメモリ１０４を有する記憶装置の性能において影響を与える。
例えば、持続的に変更されたデータは、全体データセットの５％未満を含み得る。
例として２００ＧＢを使用すれば、単なる１％又は２ＧＢが持続的にアップデートされる。
ＤＣＶのより小さいサイズは書き込まれるデータの量を減少させる。
実施形態として、大部分のＤＣＶは全体データブロックのサイズの２０％である（ａ  ｍａｊｏｒｉｔｙ  ｏｆ  ＤＣＶ  ｍａｙ  ｂｅ  ｏｎ  ｔｈｅ  ｏｒｄｅｒ  ｏｆ  ２０％  ｏｆ  ａ  ｓｉｚｅ  ｏｆ  ａｎ  ｅｎｔｉｒｅ  ｂｌｏｃｋ  ｏｆ  ｄａｔａ）。
【００５３】
余りの大部分は相変わらず、データのサイズの５０％より小さい。
したがって、２００ＧＢの例で、ＤＣＶの４００ＭＢないしは１ＧＢが書き込まれる。
減られたサイズは空間を効率的に作り、浪費を減らす。
特に、２ＧＢの新しく削除されたブロックを使用してアップデートするのに、現在では４００ＭＢを使用することができる。
記憶装置の与えられた容量に対して、新しく削除されたブロックに対する要求を減らすことはガーベッジコレクションの遂行頻度を減らし、媒体に対する消耗度を減らす。
【００５４】
図３Ａ〜図３Ｅは、本発明の実施形態による記憶装置から読み出す動作を説明するための概念図である。
図１の記憶装置１００が例として使用される。図２Ａ〜図２Ｅの構成要素と類似する構成要素の説明は簡易化のために省略する。
図１及び図３Ａを参照すると、マッピングテーブル３１０は、図２Ａで説明したように、データが書き込まれた後の状態を示す。
即ち、データＤはデータメモリ（３０４−１）内に格納され、エントリ（３１１−３）はマッピングテーブル３１０に追加される。
しかし、エントリ（３１１−３）はＤＣＶが存在しないか、或いは有効ではない表示を含む。
【００５５】
コントローラ１０２は、読出し要請３０２を受信する。
ここで、読出し要請３０２は、論理的ブロックアドレス「１」にアクセスするように構成される。これに応答し、コントローラ１０２は、マッピングテーブル３１０をアクセスするか、或いは物理的ブロックアドレス「２３」を読み出す。
物理的ブロックアドレスを使用して、コントローラ１０２はデータメモリ（３０４−１）からデータＤを読み出す。
コントローラ１０２は、データＤと共に読出し要請３０２に応答する。
特に、エントリ（３１１−３）はＤＣＶが存在しないか、或いは有効ではない表示を含むので、コントローラ１０２は、変更（ｍｏｄｉｆｉｃａｔｉｏｎ）無しでデータＤを応答する。
【００５６】
図１及び図３Ｂを参照すると、実施形態として、マッピングテーブル３１０が図２Ｂで説明したようにデータが書き込まれた後の状態であるので、読出し要請３０２はコントローラ１０２によって受信される。
即ち、データＤは、初期にデータメモリ（３０４−１）に書き込まれ、ＤＣＶメモリ（３０４−２）に格納されているので、アップデートされたデータＤ’が書き込まれる。
したがって、コントローラ１０２は、読出し要請３０２を再び受信し、これに応答して、物理的ブロックアドレス「２３」をアクセスすることによってデータメモリ（３０４−１）からデータＤを読み出す。
しかし、有効ＤＣＶフィールドがエントリ（３１１−３）に存在するので、コントローラ１０２はＤＣＶメモリ（３０４−２）にアクセスしてＤＣＶ’を読み出す。
コントローラ１０２は、逆ＤＣＶ機能（３０８−２）に対する入力としてデータＤとＤＣＶ’を使用し、データＤとＤＣＶ’とを組み合わせてデータＤ’を生成する。
コントローラ１０２は、データＤ’と共に読出し要請３０２に応答する。
【００５７】
増加した読出し量がこの技術に関与する間に、その増加した読出し量は、無視できないが、少ない量を有する。
例えば、実施形態として、メモリ１０４の内部読出し幅（ｉｎｔｅｒｎａｌ  ｒｅａｄ  ｂａｎｄｗｉｄｔｈｓ）は、記憶装置１００の外部インターフェイス幅より高い。
たとえば、読出し性能に無視できない影響を有しても、読出しは削除されたブロックの使用、隣接するトラックの再書込み等をもたらしない。
このように、読出し性能を減らす動作は、レイテンシを減らすか、或いはレイテンシの一貫性を向上させるか、あるいは、その他の関連する動作より影響が少ない。
【００５８】
図１及び図３Ｃを参照すると、実施形態として、読出し要請３０２は、マッピングテーブル３１０が図２Ｃに示したようにデータが書き込まれた後の状態にある時、コントローラ１０２によって受信される。
即ち、データＤは、初期にデータメモリ（３０４−１）に書き込まれる。
アップデートされたデータＤ’は、ＤＣＶメモリ（３０４−２）に格納されてあるＤＣＶ’の結果として書き込まれる。
そして、追加してアップデートされたデータＤ”は、ＤＣＶメモリ（３０４−２）に格納されてあるＤＣＶ”の結果として書き込まれる。
【００５９】
コントローラ１０２は、再び物理的ブロックアドレス２３のためのエントリ（３１１−３）にアクセスし、物理的ブロックアドレス「２３」を使用してデータメモリ（３０４−１）にアクセスしてデータＤにアクセスし、ＤＣＶアドレスを使用してＤＣＶメモリ（３０４−２）をアクセスする。
しかし、データＤ”が論理的ブロックアドレス「１」に最も最近に書き込まれたデータであるので、ＤＣＶ”は利用可能であり、ＤＣＶメモリ（３０４−２）でアクセスされるＤＣＶである。
コントローラ１０２は、ＤＣＶ”とデータＤを逆ＤＣＶ機能（３０８−２）に対する入力として使用してデータＤ”を生成する。
コントローラ１０２は、データＤ”と読出し要請３０２とに応答する。
したがって、初期データＤがアクセスされたが、最も最近データＤ”は再び生成される。
特に、データＤ’とそれと関連するＤＣＶ’は、データＤ”を生成するのに使用されない。
【００６０】
図３Ａ〜図３Ｃで説明したように、コントローラ１０２は、ＤＣＶフィールドがＤＣＶが存在するか、又は有効であるかを指示するか否かに基づいて、異なった動作するように構成される。
しかし、他の実施形態として、コントローラ１０２は、たとえ初期データがデータメモリ（３０４−１）に格納されている時にも、図３Ｂ及び図３Ｃと同様に動作するように構成され得る。
特に、エントリ３１１のＤＣＶフィールドは、ＤＣＶフィールドにあるか、或いはＤＣＶメモリ（３０４−２）内にある識別ＤＣＶ（ｉｄｅｎｔｉｔｙＤＣＶ）を指示することで初期化される。
識別ＤＣＶは、初期データＤと共に逆ＤＣＶ機能（３０８−２）に対する入力で使用される時、データＤを発生する。
結果として、実際データを比較することから得られるＤＣＶが存在するか、或いは有効であるか否かに関係なく、実質的に同一の動作がコントローラ１０２によって遂行される。
【００６１】
図１及び図３Ｄを参照すると、実施形態として、データの以前の初期バーションにアクセスすることができる。
特に、コントローラ１０２は、ソース読出し要請（３０２−１）を受信する。
ここで、ソース読出し要請（３０２−１）は、論理的ブロックアドレス「１」を参照する。
その応答で、コントローラ１０２は、図３Ａで説明したアクセスと同様に、データメモリ（３０４−１）の物理的ブロックアドレス「２３」にあるデータＤにアクセスする。
しかし、エントリ（３１１−３）のＤＣＶフィールドは、図３Ｂ及び図３Ｃと同様に有効である。
即ち、論理的ブロックアドレス「１」には、データのアップデートバージョンが存在する。
図３Ｂと図３Ｃとは対照的に、初期データＤは、再び生成された現在データＤ’又はＤ”に復帰する（ｒｅｔｕｒｎｅｄ）。
したがって、ソース読出し要請（３０２−１）又は同様の要請を使用して、記憶装置１００に格納されたデータの以前のバーションを読み出すことができる。
エントリ（３１１−３）のＤＣＶフィールドからのＤＣＶアドレスを読み出す動作が例として使用される反面、他の実施形態として、ＤＣＶ値はエントリ（３１１−３）のＤＣＶフィールドから読み出されてもよい。
例えば、図３Ｂ及び図３ＣのＤＣＶ’及びＤＣＶ”は各々エントリ（３１１−３）から読み出される。
【００６２】
図１及び図３Ｅを参照すると、実施形態として、図２Ｃで説明したようにマッピングテーブル３１０がデータが書き込まれた後の状態にある時、読出し要請（３０２−２）がコントローラ１０２によって入力される。
即ち、データＤは初期にデータメモリ（３０４−１）に書き込まれる。
アップデートされたデータＤ’は、ＤＣＶメモリ（３０４−２）に格納されてあるＤＣＶ’の結果として書き込まれる。
そして、追加して、アップデートされたデータＤ”は、ＤＣＶメモリ（３０４−２）に格納されてあるＤＣＶ”の結果として書き込まれる。
しかし、この実施形態で、１つ又はそれ以上の中間ＤＣＶｓ（ｉｎｔｅｒｍｅｄｉａｔｅ  ＤＣＶｓ）が維持される。
この例で、ＤＣＶ”は現在のＤＣＶである。
しかし、ＤＣＶ’は、また維持される。
エントリ（３１１−４）にある「０ｘ５５」の追加的なパラメーターはＤＣＶ’の表示を示す（例えば、その値やアドレス）。
【００６３】
この例で、読出し要請（３０２−２）はＬＢＡ１’のための要請である。
ＬＢＡ１’はデータＤ’としてのデータの状態を示す。
したがって、コントローラ１０２は、ＤＣＶ’アドレス、即ちＤＣＶ’がＤＣＶメモリ（３０４−２）に格納された位置を示すアドレスにアクセスする。
結果として、ＤＣＶ’はアクセスされ、逆ＤＣＶ機能（３０８−２）にあるデータＤと結合されてデータＤ’を生成する。
たとえとして単なる１つの中間ＤＣＶ（例えば、ＤＣＶ’）が例として使用されるが、他の実施形態としていくつかの数の中間ＤＣＶも格納されることができる。
例えば、ＤＣＶｓ、ＤＣＶ’、ＤＣＶ”、ＤＣＶ’’’、及びＤＣＶ’’’’がＤＣＶメモリ（３０４−２）に全て格納されるＤＣＶｓの各々は、データＤと結合されてデータＤ’、Ｄ”、Ｄ’’’、及びＤ’’’’のようなデータの以後バーションを各々生成することができる。
【００６４】
図４Ａ及び図４Ｂは、本発明の他の実施形態による記憶装置を概略的に示すブロック図である。
図４Ａを参照すると、実施形態として、記憶装置４００は、図１に示した記憶装置１００のコントローラ１０２と同様のコントローラ４０２とを含む。
しかし、記憶装置４００は、不揮発性メモリ（４０４−１）と揮発性メモリ（４０４−２）とを含む。
不揮発性メモリ（４０４−１）には例として、ｆｌａｓｈ  ｍｅｍｏｒｙ、ＳＴＴ−ＭＲＡＭ、Ｐｈａｓｅ−ＣｈａｎｇｅＲＡＭ、ＮＦＧＭ、ｏｒ  ＰｏＲＡＭ、ｍａｇｎｅｔｉｃ  ｏｒ  ｏｐｔｉｃａｌ  ｍｅｄｉａ等が含まれ得る。
揮発性メモリ（４０４−２）には例として、ＤＲＡＭ、ＤＤＲ、ＤＤＲ２、ＤＤＲ３、ＤＤＲ４、ＳＲＡＭ等のような多様な標準にしたがうＤＤＲ  ＳＤＲＡＭ等が含まれ得る。
【００６５】
コントローラ４０２は、不揮発性メモリ（４０４−１）にデータ４０６を記憶し、揮発性メモリ（４０４−２）にＤＣＶ４０８を格納する。
コントローラ４０２は、また揮発性メモリ（４０４−２）にマッピングテーブル４１０を格納する。
実施形態として、記憶装置４００の使用は、一貫性（ｃｏｎｓｉｓｔｅｎｃｙ）よりは一貫されたレイテンシ（ｃｏｎｓｉｓｔｅｎｔ  ｌａｔｅｎｃｙ）に優先順位を置く。
したがって、データの一貫性は次順位になる（ｃｏｎｓｉｓｔｅｎｃｙ  ｏｆ  ｔｈｅ  ｄａｔａ  ｍａｙ  ｂｅ  ｒｅｌａｘｅｄ）。
例えば、様々なインターネット−スケールアプリケーション（ｓｅｖｅｒａｌ  ｉｎｔｅｒｎｅｔ−ｓｃａｌｅ  ａｐｐｌｉｃａｔｉｏｎｓ）は次順位範囲内で（ｗｉｔｈｉｎ  ｒｅｌａｘｅｄ  ｂｏｕｎｄｓ）一貫性を考慮してアクセスされる。
そのようなアプリケーションは、ツイート（ｔｗｅｅｔｓ）及びフォトタギング（ｐｈｏｔｏ  ｔａｇｇｉｎｇ）を含む。
【００６６】
しかし、そのようなアプリケーションのために、レイテンシスパイク（ｌａｔｅｎｃｙ  ｓｐｉｋｅｓ）は受け入れない。
ＤＣＶ４０８で表現されるように、このような範囲内のデータは、揮発性メモリ（４０４−２）に格納される。
コントローラ４０２は、ＤＣＶ４０８のオーバープロー（ｏｖｅｒｆｌｏｗｓ）を不揮発性メモリ（４０４−１）にフラッシュ（ｆｌｕｓｈ）するようにする。
実施形態として、コントローラ４０２はＤＣＶ４０８を不揮発性メモリ（４０４−１）のデータ４０６にフラッシュする。
【００６７】
揮発性メモリ（４０４−２）はバッテリ、スーパーキャパシタ、又はＮＶＲＡＭによってバックアップされる（ｍａｙ  ｂｅ  ｂａｃｋｅｄ）。
しかし、実施形態として、そのようなバックアップは、ＤＣＶ４０８の損失を生じる失敗が相変わらず、許容可能な範囲内にあるので、必ず必要であることではない。
バックアップのために使用されるバッテリ、スーパーキャパシタ、又はＮＶＲＡＭを省略すれば、記憶装置４００の費用（ｃｏｓｔ）を減少させることができる。
【００６８】
実施形態として、キャッシュ４１２は、データを不揮発性メモリ（４０４−１）に伝送する前に、データをキャッシュするのに使用される。
例えば、図２Ａ〜図２Ｄで説明した読出し要請から追い出されたデータは、キャッシュ４１２に格納される。
このストレージは、図２Ａ〜図２Ｄで説明した多様な技術無しでも動作することができる。しかし、データがキャッシュ４１２から追い出される時又はそれと同様な場合に、図２Ａ〜図２Ｄで説明した技術が使用することができる。
特別な例として、キャッシュ４１２に格納されたデータブロックは、複数の読出し要請によってアップデートされる。
このようなアップデートは、ＤＣＶの計算に関係しない。
データブロックがデータを追い出されるか、或いはコミットされる時、データの状態に基づいて図２Ａ〜図２Ｄで説明したようにＤＣＶを生成する。
【００６９】
図４Ｂを参照すると、実施形態として、記憶装置４０１は図４Ａの記憶装置４００と同様である。
しかし、記憶装置４０１では、コントローラ４０２はキャッシュされたＤＣＶ（４０８−１）として表現される揮発性メモリ（４０４−２）内ＤＣＶをキャッシュするようにする。
特に、コントローラ４０２は、頻繁にアクセスされるＤＣＶを揮発性メモリ（４０４−２）に維持する。
コントローラ４０２は、キャッシングアルゴリズムや発見的な方法（ｈｅｕｒｉｓｔｉｃｓ）等を使用して、どのキャッシュされたＤＣＶ（４０８−１）を維持するかを決定する（ｄｅｔｅｒｍｉｎｅ  ｗｈｉｃｈ  ＤＣＶｓ  ４０８−１  ｔｏ  ｍａｉｎｔａｉｎ  ｉｎ  ｔｈｅ  ｃａｃｈｅ）。
コントローラ４０２は、他のキャッシュされたＤＣＶ（４０８−１）を不揮発性メモリ（４０４−１）に格納されたＤＣＶ（４０８−２）に伝送し、その逆も成立する。
結果的に、実施形態として、頻繁にアクセスされるか、或いは重くアクセスされるデータはキャッシュされる。
さらに、キャッシュされたＤＣＶ（４０８−１）は、対応するデータ４０６よりサイズが小さいので、実際のデータがキャッシュされた場合よりも、より多くのアップデートが揮発性メモリ（４０４−２）で維持される。
【００７０】
図５は、本発明の実施形態による記憶装置内のページデータサイズを示す図ある。
実施形態として、データページ５０２とＤＣＶページ５０４とは同じメモリ５００に格納される。
ここで、データページ（５０２−１、５０２−２）とＤＣＶページ（５０４−１）〜（５０４−４）とはメモリ５００に格納されたデータページ５０２及びＤＣＶページ５０４の例である。
ここで、ＤＣＶページ５０４はソースデータと比較して相対的にさらに小さいサイズのＤＣＶを示すためにさらに小さく示している。
この例で、ＤＣＶページ５０４はデータページ５０２の半分サイズである。
しかし、他の実施形態では、ＤＣＶページ５０４のデータサイズは使用された特別なＤＣＶ機能によって異なり得る。
【００７１】
実施形態として、データページ５０２及びＤＣＶページ５０４の両方はレイテンシを増加させる順次書込み（ｉｎ−ｐｌａｃｅ  ｗｒｉｔｅｓ）の不足のような、同一の制限を受け得る。
上記で説明したように、データページ５０２は一般的にＤＣＶが変わる間は維持される。
ＤＣＶページに対する変化は、レイテンシ影響（ｌａｔｅｎｃｙ  ｉｍｐａｃｔ）をもたらす。
しかし、ＤＣＶページ５０４のサイズが段々小さくなることによって、レイテンシ影響は減少される。
例えば、ＤＣＶページ５０４がデータページ５０２と異なるブロックに格納される。
したがって、さらに多くのＤＣＶがＤＣＶページ５０４に蓄積されることによって、ガーベッジコレクションがそのブロックで遂行されて自由ブロックが回復する（ｒｅｃｏｖｅｒ）。
ＤＣＶページ５０４がさらに小さいので、ガーベッジコレクションはより少ない時間で遂行されるか、及び／又はより少ない頻度で遂行される。
【００７２】
これに加えて、データページ５０２はＤＣＶページ５０４より長い間、有効な状態を維持する。
結果的に、データページ５０２を格納するブロックはＤＣＶページ５０４を格納するブロックよりもガベージコレクションを受けにくい。
また、ＤＣＶページ５０４が早く無効化される可能性がより高いので、ＤＣＶページ５０４を格納するブロックのより多くのページが無効となり、ガベージコレクション操作の時間が短縮される。
【００７３】
図６は、本発明の実施形態によるＳＳＤを示すブロック図である。
実施形態として、ＳＳＤ６００は図１に図示された記憶装置１００のコントローラ１０２と同様である。
しかし、ＳＳＤ６００は、フラッシュメモリ（６０４−１）、ＤＲＡＭ（６０４−２）、及びＳＲＡＭ（６０４−３）を含む。
コントローラ６０２は、フラッシュメモリ（６０４−１）にデータ６０６とＤＣＶ（６０８−１）とを格納する。
例えとして、メモリの構成を特定して示しているが、他の実施形態として、ＳＳＤ６００はデータ６０６及びＤＣＶ（６０８−１、６０８−２）の構成と分布が他のメモリを含むことができ、マッピングテーブル６１０も異なることができる。例えば、ＳＳＤ６００は図１、図４Ａ、及び図４Ｂと同様な構成を有する。
【００７４】
フラッシュメモリ（６０４−１）に格納されたデータ６０６とＤＣＶ（６０８−１）はガーベッジコレクションを頻繁に受けやすい（ｓｕｓｃｅｐｔｉｂｌｅ  ｔｏ  ｇａｒｂａｇｅ  ｃｏｌｌｅｃｔｉｏｎ）。
データ６０６とＤＣＶ（６０８−１）とを格納するページが削除され、潜在的に追加的なレイテンシを招く。
しかし、先に説明したように、ＤＣＶ（６０８−１）のサイズは対応するデータ６０６より小さい。
即ち、データ６０６を格納するために使用されるフラッシュメモリ（６０４−１）内のページはＤＣＶ（６０８−１）を格納するのに使用されるページよりサイズが大きい。
ＤＣＶを使用すれば、ＳＳＤ６００内で書込み変更（ｗｒｉｔｅ  ｍｏｄｉｆｉｃａｔｉｏｎｓ）、即ち非順次アップデート（ｏｕｔ−ｏｆ−ｐｌａｃｅ  ｕｐｄａｔｅｓ）が減少する。これはリクレーム（ｒｅｃｌａｉｍ）される無効ブロックを小さくする。
【００７５】
これによって、ガーベッジコレクションの回数（ｆｒｅｕｅｎｃｙ）が減少する。
特に、ＳＳＤ６００は、ビックデータとクラウドアプリケーションとアップデート−ヘビーＩ／Ｏトラフィックを処理する。
例えば、ＳＳＤ６００は、アップデータとクラウドアプリケーションとを有し、ガーベッジコレクションの低い回数とそれによる高いレイテンシの低い機会、特にレイテンシスパイクを有し、アップデート−ヘビーＩ／Ｏトラフィックを処理する。
【００７６】
特に、データ６０６に対する書込みアップデートをする時、データ６０６の第１コピーはフラッシュメモリ（６０４−１）に残る。
フラッシュメモリ（６０４−１）にあるＤＣＶ（６０８−１）とＤＲＡＭ（６０４−２）にキャッシュされたフラッシュＤＣＶ（６０８−２）は、書込みアップデートがヘビーな作業負荷（ｈｅａｖｙ  ｗｏｒｋｌｏａｄｓ）であっても、フラッシュメモリ（６０４−１）にあるページの寿命を増加させる。
これに加えて、先に説明したように、データ６０６の以前バージョンも利用することができる。
レイテンシを向上させることのみならず、アーキテクチャがフラッシュセル消耗（ｗｅａｒｉｎｇ）を改善することもできる。
【００７７】
特に、以前ページを無効化し、アップデートデータのための新しいページを要請する代わりに、コントローラ６０２は、以前ページとアップデートとの間の差分を示すＤＣＶと共にフラッシュメモリ（６０４−１）に有効／アクティブとして以前ページを維持する。
続く読出し動作の時に、コントローラ６０２は、以前ページとＤＣＶとを全て読み出し、結合してデータページまで大部分を提供する。
上記で説明したように、ＤＣＶをどこに記憶するかについては多数の構成がある。
例えば、フラッシュメモリ（６０４−１）、ＤＲＡＭ（６０４−２）、ＳＲＡＭ（６０４−３）、又はそのようなメモリの組み合わせに格納する。
これに加えて、アクティブ又は“ホット”ページＤＣＶをＤＲＡＭ（６０４−２）にキャッシュし、フラッシュメモリ（６０４−１）上のＤＣＶ（６０８−１）に持続的な（ｐｅｒｓｉｓｔｅｎｔ）コピーを維持することによって、ＤＣＶはキャッシュされる。
【００７８】
実施形態として、読出しと書込みが非対称（ａｓｙｍｍｅｔｒｉｃ）でないか、同一のオーバーヘッドを有するか、或いはそのようなものである時でも、本明細書で説明したように、記憶装置は性能利点を有する。
特に、仮に書込みのサイズとＤＣＶのデータサイズとを有する書込み時間スケール（ｗｒｉｔｅ  ｔｉｍｅｓ  ｓｃａｌｅ）が対応するデータブロックのデータサイズより小さければ、書込み時間は減少する。
実施形態として、ＤＲＡＭ（６０４−２）は、書込み要請及び／又は書込みデータをキャッシュするのに使用することができる。
書込み要請を処理することがデータ６０６に存在するデータを読み出すことに関与する時、対応するデータ６０６はキャッシュされたデータ（６０６−１）としてＤＲＡＭ（６０４−２）に格納される。
コントローラ６０２は、上記で説明したＤＣＶ関数に対する入力として、ＤＲＡＭ（６０４−２）に格納されたキャッシュされたデータ（６０６−１）を使用する。
即ち、フラッシュメモリ（６０４−１）に格納されたデータ６０６からデータを読み出す代わりに、コントローラ６０２はＤＲＡＭ（６０４−２）に格納されたキャッシュされたデータ（６０６−１）からデータを読み出す。
【００７９】
実施形態として、フラッシュメモリ（６０４−１）はパネルとチャンネルとに区分することができる。
ＳＳＤ６００は、ページ単位に読み出し、書き込み、ブロック単位に消去する。ブロックは複数のページを含む。
マッピング方策（ｍａｐｐｉｎｇ  ｓｔｒａｔｅｇｙ）は、翻訳単位（ｇｒａｎｕｌａｒｉｔｙ  ｏｆ  ｔｒａｎｓｌａｔｉｏｎ）を定義する。
例えば、ページレベルマッピングは、より大きい面積（ｌａｒｇｅｒ  ｆｏｏｔｐｒｉｎｔ）を必要とするが、さらに高い流動性（ｈｉｇｈｅｒ  ｄｅｇｒｅｅ  ｏｆ  ｆｌｅｘｉｂｉｌｉｔｙ）を提供することができる。
ブロックレベルマッピングは、より小さい面積（ｓｍａｌｌｅｒ  ｆｏｏｔｐｒｉｎｔ）を使用するが、配置（ｐｌａｃｅｍｅｎｔ）に制限的である。
幾つのハイブリッド方策の変形がページ及びブロックに基づいたマッピングの組み合わせを利用するように提案されている。
マッピングテーブル６１０にあるマッピングはそのようなマッピング技術の中からいずれでも使用することができる。
【００８０】
ＳＳＤ６００を例として説明したが、他の実施形態として、ＳＭＤ（ｓｈｉｎｇｌｅｄ  ｍａｇｎｅｔｉｃ  ｄｒｉｖｅｓ）のような他の形態の記憶媒体も使用され得る。
特に、「ｓｈｉｎｇｌｅｄ  ｄｉｓｋ」上では、書込みは以前に書き込まれた磁気トラックの一部分とオーバーラップする。
これは書込み性能を低くし、また隣接するトラックを上書きする結果を招く。
ＳＭＤ（ｓｈｉｎｇｌｅｄ  ｍａｇｎｅｔｉｃ  ｄｒｉｖｅｓ）はファームウェアでこれを管理することによって、このような複雑性（ｃｏｍｐｌｅｘｉｔｙ）を隠す。
さらに低い書込み性能（隣接するトラックに書込みをする時）は不一致レイテンシ（ｉｎｃｏｎｓｉｓｔｅｎｔ  ｌａｔｅｎｃｙ）をもたらし、大部分のクラウドアプリケーションで解決しなければならない問題である。
本明細書で説明したように、ＤＣＶを使用すれば、上書きが縮み、アップデート−集中作業負荷（ｕｐｄａｔｅ−ｉｎｔｅｎｓｉｖｅ  ｗｏｒｋｌｏａｄｓ）に対する一致したトランザクションレイテンシ（ｃｏｎｓｉｓｔｅｎｔ  ｔｒａｎｓａｃｔｉｏｎ  ｌａｔｅｎｃｙ）を提供することができる。
【００８１】
図７は、本発明の実施形態によるバージョニング記憶システムを概略的に示すブロック図である。
実施形態として、システム７００は、通信リンク７０６を通じて記憶装置７０４に接続されるホスト７０２を含む。
ホスト７０２は、記憶装置のデータ記憶能力を使用するシステムとして、「ｇｅｎｅｒａｌ  ｐｕｒｐｏｓｅ  ｐｒｏｃｅｓｓｏｒ」、「ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ（ＤＳＰ）」、「ａｐｐｌｉｃａｔｉｏｎ  ｓｐｅｃｉｆｉｃ  ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ」、「ｍｉｃｒｏｃｏｎｔｒｏｌｌｅｒ、ｐｒｏｇｒａｍｍａｂｌｅ  ｌｏｇｉｃ  ｄｅｖｉｃｅ」、「ｄｉｓｃｒｅｔｅ  ｃｉｒｃｕｉｔｓ」、及びこのような装置の組み合わせやこれと同様なものを含む。
【００８２】
実施形態として、ホスト７０２は、コンピュータ、サーバー、ワークステーション、又は同様なものであってもよい。
ホスト７０２は、オペレーションシステム（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ：ＯＳ）及びアプリケーションのようなソフトウェアを遂行する。
ホスト７０２は、メモリ７０８に接続される。
メモリ７０８は、運用メモリ（ｏｐｅｒａｔｉｏｎａｌ  ｍｅｍｏｒｙ）及び／又はホスト７０２に使用されるキャッシュメモリを含む。
キャッシュメモリの例としては、ＤＲＡＭや、ＤＤＲ、ＤＤＲ２、ＤＤＲ３、ＤＤＲ４、ＳＲＡＭ等のような多様な標準にしたがうＤＤＲＳ  ＤＲＡＭ等が含まれる。
メモリ７０８がホスト７０８と分離して説明したが、実施形態として、メモリ７０８はホスト７０２の一部分であってもよい。
【００８３】
通信リンク７０６は、ホスト７０２と記憶装置７０４とが通信するよう構成される媒体を示す。
例えば、通信リンク７０６は、ＵＳＢ、ＳＣＳＩ、ＰＣＩｅ、ＳＡＳ、ＰＡＴＡ、ＳＡＴＡ、ＮＶＭｅ、ＵＦＳ、Ｆｉｂｅｒ  ｃｈａｎｎｅｌ、Ｅｔｈｅｒｎｅｔ、ＲＤＭＡ、Ｉｎｆｉｎｉｂａｎｄ、又は他の同様なリンク、のようなリンクである。
ホスト７０２と記憶装置７０４との各々はそのような通信リンクと通信するためのインターフェイスを有するように構成される。
【００８４】
実施形態として、記憶装置７０４は、先に説明した記憶装置（１００、４００、４０１、６００）と同様な記憶装置であり、図２Ａ〜図３Ｄで説明した方式の通り動作するように構成される。
ホスト７０２は、記憶装置７０４からデータを読み出すか、或いは記憶装置７０４にデータを書き込むように構成される。
記憶装置７０４は、先に説明したようにシステム７００の動作を向上するようにＤＣＶを使用するよう構成される。
【００８５】
しかし、他の実施形態として、ホスト７０２はＤＣＶの観点から、先に説明した方法と同様な動作を遂行するように構成される。
例として、ホスト７０２は、記憶装置ドライバー７１０を含む。
記憶装置ドライバー７１０は、記憶装置７０４と動作するホスト７０２との上で遂行されるソフトウェアを示す。
特に、記憶装置ドライバー７１０は、ＤＣＶの観点から先に説明した方法と同様な動作を遂行するように構成される。
即ち、コントローラ（１０２、４０２、６０２）等によって遂行された先に説明した動作は、記憶装置ドライバー７１０によって遂行される。
これに加えて、メモリ７０８は少なくともメモリ（１０４、４０４−２、６０４−２、６０４−３）の一部分と同様に使用される。
即ち、メモリ７０８は、例えばマッピングテーブル（１１０、４１０、６１０）、ＤＣＶ（１０８、４０８）、及び／又はキャッシュされたＤＣＶ（４０８−１、６０８−２）を格納するのに使用される。
【００８６】
実施形態として、図２Ａ〜図３Ｄで説明した論理的ブロックアドレス及び物理的ブロックアドレスの関連性はマッピングテーブルに示す必要はない。
記憶装置ドライバー７１０は、論理的アドレスとＤＣＶの表示（ｉｎｄｉｃａｔｉｏｎｓ  ｏｆ  ＤＣＶ）の関連性を維持する。
即ち、記憶装置ドライバー７１０は、初期データＤが格納されたところに対する表示として、物理的ブロックアドレスと同様に論理的ブロックアドレスを使用する。
実施形態として、記憶装置ドライバー７１０は、図２Ａ〜図３Ｄで説明したデータメモリ（２０４−１、３０４−１）のような記憶装置７０４を使用するように構成される。
【００８７】
実施形態として、論理的ブロックアドレスに対して、記憶装置ドライバー７１０は、初期データを記憶装置７０４上の論理的ブロックアドレスに書き込む。
記憶装置ドライバー７１０は、初期データをメモリ７０８にキャッシュするようにする。
データが続いて変更される時、記憶装置ドライバー７１０は、キャッシュされた初期データを使用してＤＣＶを計算し、ＤＣＶを記憶装置に書き込むようにする。
他の実施形態として、記憶装置ドライバー７１０は、ＤＣＶをメモリ７０８に維持する。
先に説明したＤＣＶ管理技術は、記憶装置ドライバー７１０に使用される。
【００８８】
図８は、本発明の実施形態によるサーバーを概略的に示すブロック図である。
実施形態として、サーバー８００は、「ｓｔａｎｄ−ａｌｏｎｅ  ｓｅｒｖｅｒ」、「ｒａｃｋ−ｍｏｕｎｔｅｄ  ｓｅｒｖｅｒ」、「ｂｌａｄｅ  ｓｅｒｖｅｒ」等を含む。
サーバー８００は、記憶装置８０２とプロセッサ８０４とを含む。
プロセッサ８０４は、記憶装置８０２に接続される。
例えとして、１つの記憶装置８０２を示しているが、複数の記憶装置８０２が存在することができる。
記憶装置８０２は、先に説明した記憶装置の中のいずれでもあってもよい。
それにより、サーバー８００の性能は向上され得る。
【００８９】
図９は、本発明の実施形態による分散システムを概略的に示すブロック図である。
実施形態として、サーバーシステム９００は複数のサーバー（９０２−１）〜（９０２−Ｎ）を含む。
サーバー（９０２−１）〜（９０２−Ｎ）は各々マネージャ９０４に接続される。
１つ又はそれ以上のサーバー（９０２−１）〜（９０２−Ｎ）は先に説明したサーバー８００と同様である。
マネージャ９０４は、サーバー（９０２−１）〜（９０２−Ｎ）及びサーバーシステム９００の他の構成を管理する。
実施形態として、マネージャ９０４は、サーバー（９０２−１）〜（９０２−Ｎ）の性能をモニターするように構成される。
例えば、サーバー（９０２−１）〜（９０２−Ｎ）の各々は、先に説明した記憶装置を含む。
【００９０】
図１０は、本発明の実施形態によるデータセンターを概略的に示すブロック図である。
実施形態として、データセンター１０００は複数のサーバーシステム（１００２−１）〜（１００２−Ｎ）を含む。
サーバーシステム（１００２−１）〜（１００２−Ｎ）は、図９に示したサーバーシステム９００と同様である。
サーバーシステム（１００２−１）〜（１００２−Ｎ）は、インターネットのようなネットワーク１００４と結合される。
したがって、サーバシステム（１００２−１）〜（１００２−Ｎ）は、ネットワーク１００４を通じて多様なノード（１１０６−１）〜（１１０６−Ｍ）と通信する。
例えば、ノード（１１０６−１）〜（１１０６−Ｍ）は、クライアントコンピュータ、他のサーバー、リモートデータセンター、記憶システム、又はこれと同様なものであってもよい。
【００９１】
実施形態において、クラウド及び「ｌａｒｇｅ−ｓｃａｌｅ  ｌａｔｅｎｃｙ−ｃｒｉｔｉｃａｌ  ｓｅｒｖｉｃｅｓ」のように、一貫された性能が重要な要素（ｉｍｐｏｒｔａｎｔ  ｆａｃｔｏｒ）であるところで使用することができる。
そのようなサービスの例は、データ分析（ｄａｔａ  ａｎａｌｙｔｉｃｓ）、機械学習（ｍａｃｈｉｎｅ  ｌｅａｒｎｉｎｇ）、オーディオ及びビデオストリーミング（ａｕｄｉｏ  ａｎｄ  ｖｉｄｅｏ  ｓｔｒｅａｍｉｎｇ）を含む。
一貫したレイテンシは高い優先順位である。
そして、幾つかの実施形態は、さらに予測可能な性能を支援する「ｒｅｌａｘｅｄ  ｃｏｎｓｉｓｔｅｎｃｙ」要求（ｒｅｐｕｉｒｅｍｅｎｔｓ）を採用する配布されたソフトウェアスタックを使用する。
たとえば、幾つかの要素がリソース共有及び待ち行列（ｒｅｓｏｕｒｃｅ  ｓｈａｒｉｎｇ  ａｎｄ  ｑｕｅｕｉｎｇ）のような、負荷されたレイテンシ（ｌｏａｄｅｄ  ｌａｔｅｎｃｙ）で不一致を発生させても、ＳＳＤ内でガーベッジコレクションは相当な利点を有することができる。
【００９２】
現在のソフトウェアスタックは、複製（ｒｅｐｌｉｃａｔｉｏｎ）を使用することができる。
しかし、この解決はガベージコレクションなどの問題の根本を解決することができない。
これに加えて、複製は内在的にさらに多い費用が掛かり、増加されたネットワークトラフィックをもたらす。
これはさらにネットワークレイテンシに影響を及ぶ。
また、複製はソフトウェア層で「ｃｏｏｒｄｉｎａｔｉｏｎ」を使用する。
大きいデータ生成率によって、さらに速いデータ分析に使用することができる。
サーチエンジンとソーシャルメディアのようなオンラインサービスにおいて重要なデザイン目標は予測可能な性能を提供することにある。
このような状況（ｃｏｎｔｅｘｔ）では、平均応答時間は性能を代表するものではない。
【００９３】
最も悪いケース（ｗｏｒｓｔ  ｃａｓｅ）がさらに性能の関心事である。
多様な反応時間がサービスの要素においてさらに高いテールレイテンシ（ｈｉｇｈｅｒ  ｔａｉｌ  ｌａｔｅｎｃｙ）を引き起こすことがある。
結果的に、使用者は長い応答時間を経る。
業務負荷（ｗｏｒｋｌｏａｄ）とＳＳＤファームウェア方策に基づいて、テールレイテンシスパイク（ｔａｉｌ  ｌａｔｅｎｃｙ  ｓｐｉｋｅｓ）は、まれに又は頻繁に発生し得る。
しかし、大部分の場合に、現在非常に競争的な市場で使用者の経験及びサービス提供者の評判を脅かすのに十分である。
テールレイテンシペナルティーは、Ａｍａｚｏｎ（登録商標）  ＡＷＳやＧｏｏｇｌｅ（登録商標）  Ｃｌｏｕｄのような共有基盤施設（ｓｈａｒｅｄ  ｉｎｆｒａｓｔｒｕｃｔｕｒｅｓ）でさらに悪化する（ｅｘａｃｅｒｂａｔｅｄ）。
このような問題点は、いくつかのクラウドベンダーによって共有されており、ハードウェア／ソフトウェアシステムアーキテクチャをデザインしている会社の主要挑戦の中の１つとして認識されている。
【００９４】
たとえば、幾つかの要素がリソース共有及び待ち行列（ｒｅｓｏｕｒｃｅ  ｓｈａｒｉｎｇ  ａｎｄ  ｑｕｅｕｉｎｇ）のような、負荷されたレイテンシ（ｌｏａｄｅｄ  ｌａｔｅｎｃｙ）で不一致を発生させても、ＳＳＤ内でガーベッジコレクションは相当な利点を有することができる。
順次アップデート（ｉｎ−ｐｌａｃｅ  ｕｐｄａｔｅｓ）を許容しないフラッシュメモリの特性により、ＳＳＤファームウェアは非順次的に（ｏｕｔ  ｏｆ  ｐｌａｃｅ）にアップデートを書き込み、以前コピーを無効化させる。
リクレーム空間（ｒｅｃｌａｉｍ  ｓｐａｃｅ）のために、無効空間はそれが再び書き込まれる前に削除される必要がある。
しかし、削除動作（ｉｎ  ｍｉｌｌｉｓｅｃｏｎｄｓ）は、読出し書込み動作（ｉｎ  ｍｉｃｒｏｓｅｃｏｎｄｓ）に比べてさらに相当遅い。
そして、削除動作は、典型的にさらに粗い単位（ｏｎ  ａ  ｃｏａｒｓｅｒ  ｇｒａｎｕｌａｒｉｔｙ）に行われる。
【００９５】
このようなプロセスは、ＳＳＤ内でガーベッジコレクションを生じさせ、チャンネルはガーベッジコレクションが生じる間、読出し／書込み要請をサービスできない。
このような理由で、ガーベッジコレクションは、臨界動作（ｃｒｉｔｉｃａｌ  ｏｐｅｒａｔｉｏｎｓ）においてレイテンシ又は性能に悪い影響を及ばせる。
いくつかの場合には読出しレイテンシがガーベッジコレクションの間に１００倍増加し得る。
これに加えて、ガーベッジコレクションはＳＳＤが使用されることによってさらに頻繁に発生する可能性がある。
【００９６】
クラウドで顕著ないくつかのアプリケーションタイプは書込みアップデートが重い。
一例として、実世界の使用ケース（ｒｅａｌ−ｗｏｒｌｄ  ｕｓｅ  ｃａｓｅ）をエミュレートするこのような例の１つにＹＣＳＢ（Ｙａｈｏｏ（登録商標）  Ｃｌｏｕｄ  Ｓｅｒｖｉｎｇ  Ｂｅｎｃｈｍａｒｋ）がある。
これはクラウドシステムを評価するためのベンチマーキンクスイート（ｂｅｎｃｈｍａｒｋｉｎｇ  ｓｕｉｔｅ）である。
ＹＣＳＢで提供される幾つかのアップデート−過作業負荷（ｕｐｄａｔｅ−ｈｅａｖｙ  ｗｏｒｋｌｏａｄｓ）で、アクセス比率は５０％読出し、０％挿入、及び５０％アップデートである。
【００９７】
ｅ−コマースアプリケーション（ｅ−ｃｏｍｍｅｒｃｅ  ａｐｐｌｉｃａｔｉｏｎｓ）は、ユーザセッションにある「ｒｅｃｏｒｄｉｎｇ  ｒｅｃｅｎｔ  ａｃｔｉｏｎｓ」、「ｅ−ｃｏｍｍｅｒｃｅ  ｕｓｅｒ」の典型的なアクションのような動作を含む、アプリケーションの例である。
アプリケーションのこのようなカテゴリで、ＳＳＤ内のガーベッジコレクションによるテールレイテンシの影響は、使用者反応時間にさらに高いレイテンシを引き起こす可能性がある。
他の作業負荷（ｗｏｒｋｌｏａｄ）の例として、アクセス比率は９５％読出し、０％挿入、５％アップデートである。
一例はソーシャルメディアであり、たとえ小さいアップデート率であってもガーベッジコレクションをトリガーし、サービスレベル目標を違反する可能性がある。
例えば、フォトタギングを有し、タッグを加えることはアップデートであるが、大部分の動作はタッグを読み出すことである。
【００９８】
ビックデータとクラウドアプリケーションの大部分は、トランザクション性（アトミック性（ａｔｏｍｉｃｉｔｙ）、一貫性、隔離性、耐久性、またはＡＣＩＤ）などのより多くの伝統的な側面に対してスケーラビリティおよび一貫したパフォーマンスを優先させる。
強い一貫性は正しくスケールしない（ｓｔｒｏｎｇ  ｃｏｎｓｉｓｔｅｎｃｙ  ｄｏｅｓ  ｎｏｔ  ｓｃａｌｅ  ｗｅｌｌ）。
ほとんどのクラウドアプリケーションでは、一貫性のあるパフォーマンスを目標として、より緩やかなトランザクションの整合性が優先される。
このような理由で、弱い一貫性モデルは、最も一般的なクラウド規模の分散ソフトウェアスタック全体で広く使用される。
これは、高負荷の並行システムでのＩ／Ｏパフォーマンスの大幅な向上をもたらす。
【００９９】
すべてのクラウドアプリケーションが多い量のデータを格納し、増加するデータフットプリント（ｆｏｏｔｐｒｉｎｔ）にしたがってスケールされるようにデザインされているが、単なるサブセット（ｓｕｂｓｅｔ）は他のものよりさらに頻繁にアクセスされている。このような不均等な配布はデータセンターで“ホット”データアクセスパターンを表わされる。
【０１００】
ここで説明した実施形態は多様なアプリケーションで使用することができ、減少され、さらに一貫されたレイテンシの利点を提供する。
先に説明したクラウドアプリケーションは、そのようなアプリケーションの単純な例に過ぎない。
たとえば、構造、装置、方法、そしてシステムを特定の実施形態にしたがって説明したが、本発明の技術分野で通常の知識を有する者は多様な変更が可能であることを容易に認識することができる。したがって、多い変形が追加された請求項の範囲及び技術的思想を逸脱しない限り、多様になされることができる。
【符号の説明】
【０１０１】
１００    記憶装置
１０２    コントローラ
１０４    メモリ
１０６    データ
１０８    ＤＣＶ
１０９−１、２０８−１    ＤＣＶ機能
１０９−２    ＤＣＶ回路
１１０、２１０    マッピングテーブル
１１１    メモリインターフェイス
２０４−１    データメモリ
２０４−２    ＤＣＶメモリ
２０８−２    逆ＤＣＶ機能
【図１】
0006713934.tif 000002
【図２Ａ】
0006713934.tif 000003
【図２Ｂ】
0006713934.tif 000004
【図２Ｃ】
0006713934.tif 000005
【図２Ｄ】
0006713934.tif 000006
【図２Ｅ】
0006713934.tif 000007
【図３Ａ】
0006713934.tif 000008
【図３Ｂ】
0006713934.tif 000009
【図３Ｃ】
0006713934.tif 000010
【図３Ｄ】
0006713934.tif 000011
【図３Ｅ】
0006713934.tif 000012
【図４Ａ】
0006713934.tif 000013
【図４Ｂ】
0006713934.tif 000014
【図５】
0006713934.tif 000015
【図６】
0006713934.tif 000016
【図７】
0006713934.tif 000017
【図８】
0006713934.tif 000018
【図９】
0006713934.tif 000019
【図１０】
0006713934.tif 000020