(57)【要約】      （修正有）【課題】動的に適応されるキャッシュ格納のためのシステムを提供する。【解決手段】システム３００は、ホスト３０８から受け取ったデータを格納するための物理キャパシティを有する格納デバイスを含む。また、ホストからデータを受け取り、そのデータを圧縮データ・サイズに圧縮するための制御モジュール３０４も含む。代替的には、そのデータはまた、記憶デバイス３０２により圧縮することもできる。制御モジュールは、記憶デバイスの利用可能なスペースの量を決定し、また、再利用されるスペースも決定するように構成することができる。再利用スペースは、ホストから受け取ったデータのサイズと圧縮データのサイズとの間の差に従う。システムはまた、論理キャパシティをホストに提示するためのインタフェース・モジュール３０６も含む。この論理キャパシティは可変サイズを有しており、再利用スペースの少なくとも一部を含むことができる。【選択図】図３
2013200868.tif 000002
【特許請求の範囲】
【請求項１】
動的に適用されるキャッシュを管理する方法であって、
データをホストから受け取るステップと、
前記受け取ったデータを圧縮データに圧縮するステップと、
前記圧縮データを格納するステップと、
利用可能なスペースの量を決定するステップと、
前記利用可能スペース量が設定閾値よりも大きいときに、前記受け取ったデータのサイズと前記圧縮データのサイズとの差の少なくとも一部に基づく量によって、前記ホストに提示される論理キャパシティを増量するステップと、
を含む、方法。
【請求項２】
請求項１記載の方法であって、さらに、前記利用可能スペース量が予約量よりも少ないときにスペースを開放するステップを含む、方法。
【請求項３】
請求項２記載の方法であって、さらに、前記利用可能スペース量が前記予約量よりも少ないときにシグナリングするステップを含む、方法。
【請求項４】
請求項１記載の方法において、前記利用可能スペース量を決定するステップが、
前記利用可能スペース量が前記設定閾値よりも大きいときにシグナリングするステップと、
前記利用可能スペース量を決定するためにクエリを送るステップと、
を含む、方法。
【請求項５】
請求項１記載の方法において、当該方法における各ステップは、データが前記ホストから受け取られる毎に実行される、方法。
【請求項６】
請求項１記載の方法において、前記受け取ったデータを圧縮データに圧縮するステップが、無損失のアルゴリズムを用いて前記データを圧縮するステップを含む、方法。
【請求項７】
動的に適用されるキャッシュ格納のためのシステムであって、
ホストから受け取るデータを格納するための物理キャパシティを有する記憶デバイスと、
前記ホストから前記受け取ったデータを圧縮データ・サイズに圧縮するための圧縮モジュールと、
制御モジュールであって、前記ホストからデータを受け取るように構成され、さらに、前記記憶デバイスにおいて利用可能なスペースを決定するように構成され、さらに、前記ホストから前記受け取ったデータのサイズと前記圧縮データのサイズとの差に基づき再利用されるスペースを決定するように構成される、制御モジュールと、
前記再利用されるスペース部分を少なくとも含む、可変サイズを有する論理キャパシティを、前記ホストに提示するように構成されるインタフェース・モジュールと、
を備える、システム。
【請求項８】
請求項７記載のシステムにおいて、前記制御モジュールは、さらに、前記記憶デバイスにおける前記利用可能スペース量が予約量よりも少ないときに、前記記憶デバイスにおけるスペースを開放するように構成される、システム。
【請求項９】
請求項７記載のシステムにおいて、前記記憶デバイスが半導体ドライブである、システム。
【請求項１０】
請求項７に記載のシステムにおいて、固定の最小論理キャパシティが前記ホストに提示される、システム。
【請求項１１】
方法であって、
記憶デバイスが記憶インタフェースを介して複数のデータ部分を受け取るステップと、
縮小される各データ部分を形成するために前記データ部分のそれぞれを縮小するステップであって、前記データ部分のうち少なくともいくつかが前記各縮小データ部分よりも大きいサイズを有する、ステップと、
前記データ部分を前記記憶デバイスのデータ・メモリの前記縮小データ部分として格納するステップと、
前記データ・メモリの利用率(utilization)に従って前記データ・メモリの論理キャパシティを決定するステップと、
を含み、
前記データ・メモリの前記論理キャパシティを前記縮小に従って縮小させることを特徴とする、
方法。
【請求項１２】
請求項１１記載の方法において、前記論理キャパシティは、前記データ・メモリが格納することができる前記データ部分の数に対応する、方法。
【請求項１３】
請求項１１記載の方法であって、さらに、前記利用率が特定の閾値を超過したことに応答して、前記データ・メモリからの前記縮小データ部分のうち１またはそれ以上を削除するステップを含む、方法。
【請求項１４】
請求項１３記載の方法において、前記削除するステップが、前記記憶デバイスのタグ・メモリにおける１またはそれ以上のエントリを無効にするステップを含む、方法。
【請求項１５】
請求項１３記載の方法において、前記特定の閾値が、前記記憶デバイスのライト・アンプリフィケーションを特定の値以下に維持する、方法。
【請求項１６】
請求項１１記載の方法において、前記論理キャパシティは、前記データ部分の総サイズおよび前記縮小データ部分の総サイズとの差が増すにつれて増量される、方法。
【請求項１７】
請求項１１記載の方法において、前記論理キャパシティは、前記データ部分の総サイズおよび前記縮小データ部分の総サイズの差が減るにつれて減量される、方法。
【請求項１８】
請求項１１記載の方法において、前記記憶インタフーイスが、ＳＡＴＡインタフーイス、ＳＡＳインタフェース、およびＰＣＩｅインタフェースの内１つである、方法。
【請求項１９】
請求項１１記載の方法において、前記データ・メモリが不揮発性である、方法。
【請求項２０】
請求項１１記載の方法において、前記縮小するステップが圧縮するステップを含む、方法。
【請求項２１】
請求項１１記載の方法において、さらに、前記データ部分の内特定の１つについての前記記憶デバイスへの要求に応答して、前記各縮小データ部分の縮小を再利用して、前記特定のデータ部分を修復し、前記特定のデータ部分を前記ホストに戻すステップを含む、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
[0001]本開示は、全般的にはキャッシュ格納(cashing)の分野に関し、より具体的には、動的に適応されるキャッシュ格納のためのシステムおよび動的に適応されるキャッシュを管理する方法に関するものである。
【従来技術】
【０００２】
[0002]キャッシュ格納は、データをトランスペアレントに格納することにより記憶システムの性能の増強を支援するものとして知られており、その結果、そのデータについての将来の要求をより高速に満たすことができる。使用可能なキャッシュのキャパシティを大きくなればするほど、キャッシュがシステム全体にデリバすることができる性能はより良好になる。記憶キャッシュは、２つの部分を備える。すなわち、サーバのようなホストによって読み書きされるデータを格納するデータ部分、そして、キャッシュに格納された、ホストによりアクセス可能なより大きなデータ量のサブセットを識別および／または位置特定するために用いられるタグ部分である。
一般的に、データ部が大きくなればなるほど、キャッシュ内で「ヒット」するホスト・アクセスの割合がより向上し、また、記憶システムの性能もより向上する。
【０００３】
[0003]データ圧縮を用いることができ、その結果、全体の記憶スペースまたはデータの所与のサイズを要求する伝送時間を短縮する。しかしながら、データ圧縮性は可変的であり、データ・エントロピーのレベルに依存するものである。データの圧縮性におけるこの可変性の結果、サイズ変更についてのデータ記憶スペースが必要になる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
[0004]記憶システムのキャッシュ格納では、固定のおよび永続的なキャッシュ・サイズをシステムの上位レイヤに提示することがしばしば必要となる。従って、記憶デバイスにおけるデータの圧縮によって得ることができるスペースは、データおよびそれに対応するサイズの圧縮性という可変的な性質に因り、キャッシュは利用することができない。
【０００５】
[0005]それ故、データがデータ圧縮によってサイズ面で変化できるときに、記憶システムのキャッシュ格納(cashing)についての方法および装置を改良する必要性が存在する。
【課題を解決するための手段】
【０００６】
[0006]動的に適応されるキャッシュを管理する方法を提供する。データをホストから受け取るステップ、および受け取ったデータを圧縮データ・サイズに圧縮するステップを含む。次いで、圧縮データは格納され、利用可能なスペースの残りの量が決定される。本方法のさらなるステップは、利用可能なスペース量が設定閾値よりも大きいときに、受け取ったデータのサイズと圧縮したデータのサイズとの差の少なくとも一部に基づいた量によって、ホストに提示される論理キャパシティを増量するステップを含む。
【０００７】
[0007]本開示はまた、動的適応キャッシュ格納のためのシステムにも向けられる。本システムは、ホストから受け取るデータを格納するための物理キャパシティを有する記憶デバイスを含む。本システムはまた、通信により記憶デバイスに結合され、ホストからデータを受け取るように構成した制御モジュールを含むこともできる。制御モジュールは、ホストから受け取ったデータを圧縮データ・サイズに圧縮するように構成される。代替の実施形態では、データは、記憶デバイスにおいて圧縮することができる。制御モジュールはまた、記憶デバイスの利用可能スペースの量を決定するために構成することもできる。制御モジュールはまた、ホストから受け取ったデータのサイズおよび圧縮データのサイズとの差に基づいて再利用される(reclaim)スペースを決定するように構成することもできる。本システムはまた、論理キャパシティをホストに提示するように構成されるインタフェース・モジュールを含むこともできる。論理キャパシティは可変サイズを有しており、任意におよび／または選択的に、再利用されるスペースの部分を少なくとも含む。
【０００８】
[0008]本開示はまた、キャッシュを管理する方法にも向けられる。方法はまた、ホストからデータを受け取るステップ、およびデータを圧縮データ・サイズに圧縮するステップを含む。次いで、圧縮データは格納され、利用可能なスペースの量が決定される。次に、受け取ったデータのサイズと圧縮したデータのサイズとの差の少なくとも一部は、利用可能なスペースの量が設定閾値よりも大きいといったときに、任意におよび／または選択的にホストに提示される。
【０００９】
[0009]本開示は、記憶デバイスが記憶インタフェースを介して複数のデータ部分を受け取るステップを含む方法にも向けられる。本方法の次のステップは、縮小される各データ部分を形成するためにデータ部分のそれぞれを縮小するステップを必要とし、データ部分のうち少なくともいくつかが各縮小データ部分よりも大きいサイズを有する。本方法はまた、データ部分を記憶デバイスのデータ・メモリ内の縮小データ部分として格納するステップを含む。データ・メモリは、不揮発性データ・メモリでもよい。本方法の最後のステップは、データ・メモリの利用に従ってデータ・メモリの論理キャパシティを決定するステップである。本方法では、データ・メモリの論理キャパシティは、データ部分の縮小に従って変化する。
【００１０】
[0010]先に述べた一般的な説明および以下の詳細な説明の双方は、例示的および説明的なものに過ぎず、本開示において必ずしも限定的なものではないことが理解されるべきである。添付の図面は、組み込まれて本明細書の一部を構成し、本開示の主題について示している。これと共に、本説明および本図面は、本開示の本質(principle)を説明するのに役立つものである。
【００１１】
[0011]この開示の多くの利点は、添付の図を参照することで当業者によって、より良く理解することができる。
【図面の簡単な説明】
【００１２】
【図１Ａ】図１Ａは、本開示による動的適応キャッシュを管理する方法についてのフロー図である。
【図１Ｂ】図１Ｂは、本開示によるキャッシュを管理する方法についてのフロー図である。
【図２Ａ】図２Ａは、本開示によるいくつかの異なる時間間隔における動的適応キャッシュについて示している。
【図２Ｂ】図２Ｂは、本開示によるいくつかの異なる時間間隔における動的適応キャッシュについて示している。
【図２Ｃ】図２Ｃは、本開示によるいくつかの異なる時間間隔における動的適応キャッシュについて示している。
【図２Ｄ】図２Ｄは、本開示によるいくつかの異なる時間間隔における動的適応キャッシュについて示している。
【図２Ｅ】図２Ｅは、本開示によるいくつかの異なる時間間隔における動的適応キャッシュについて示している。
【図２Ｆ】図２Ｆは、本開示によるいくつかの異なる時間間隔における動的適応キャッシュについて示している。
【図３】図３は、本開示による動的適応キャッシュについて示している。
【図４Ａ】図４Ａは、本開示による動的適応キャッシュ格納を提供するための各システムについて示している。
【図４Ｂ】図４Ｂは、本開示による動的適応キャッシュ格納を提供するための各システムについて示している。
【図５】図５は、本開示による追加な方法についてのフロー図である。
【発明を実施するための形態】
【００１３】
[0012]これより、添付の図に示される開示の主題について詳細な参照を行う。
[0013]いくつかの実施形態では、動的に適応される記憶システム・キャッシュが、図３の記憶デバイス３０２のような記憶デバイスに格納される。記憶デバイスは、規定した最大論理キャパシティを有する論理アドレス・スペースを、規定した物理サイズを有する、ＮＡＮＤフラッシュ・チップのような物理記憶デバイスにマップする。最大論理キャパシティの一部分は、記憶システム・キャッシュを管理しているより高位のレイヤのような、より高位レイヤに提示され、および／または利用可能となる。そしてこの一部分は、物理記憶デバイスの利用率(utilization)に少なくとも部分的に基づいて変化する。
物理記憶デバイスの利用態様は、次に、当該物理記憶デバイス内に格納されたデータについて、圧縮を経るというような縮小に少なくとも部分的に基づいて変化する。動的適応記憶システム・キャッシュに格納することが可能なデータの量は、次に、記憶システム・キャッシュを管理しているより高位レイヤに提示され、および／または利用可能となる最大論理キャパシティの部分に少なくとも部分的に従って変化する。このように、より縮小可能な（例えば、より圧縮可能な）データを格納するときに、この動的適応記憶システム・キャッシュは、有利に、最大論理キャパシティについてより大きな部分を提示および／または利用可能となり、つまり、より高性能でより多くのデータを格納およびデリバすることができる。様々な実施形態によれば、より高位のレイヤは、記憶デバイス、図３の制御モジュール３０４のような制御モジュール、および図３のホスト３０６のようなホストの内の１つ以上を備える。例えば、実施形態によっては、制御モジュールは、動的適応記憶システム・キャッシュについてのタグ（つまり、そのデータ・コンテンツ）を管理することもある。その一方で、他の実施形態では、ホストが動的適応記憶システム・キャッシュのタグを管理する。
【００１４】
[0014]全般的に図１Ａを参照して、動的適応キャッシュを管理する方法１００を示す。動的適応キャッシュは、可変なキャッシュ・キャパシティをホストに提示し、任意におよび／または選択的に動的適応キャッシュと共に含まれる記憶デバイスの物理サイズよりも大きい論理サイズをホストに提示すること可能にする。本方法１００は、動的適応キャッシュに対しホストからデータを受け取るステップ１０２、およびホストから受け取ったデータを圧縮データへと圧縮する（または大きさを縮小する）ステップ１０４を含む。圧縮したデータは、記憶デバイス１０６に格納される。次に、本方法１００は、記憶デバイスにおいて利用可能なスペースの量を決定するステップ１０８を含む。本方法１００の更なるステップには、記憶デバイスにおいて利用可能なスペースの量が構成閾値よりも大きいときに、ホストから受け取ったデータのサイズと圧縮の後のデータのサイズの差の少なくとも一部に従って、量をホストに提示した動的適応キャッシュが有する論理キャパシティを増量するステップ１１０を必要とする。様々な実施形態によれば、ホストに提示される論理キャパシティは、差の一部と等しい量によって増量され、差の一部に比例した量によって増量され、少なくとも差の一部である量によって増量され、その差の関数および他の要員(factor)を通じて計算され、そして、利用可能なスペース、物理サイズおよび他の要因における量の関数を通じて計算されたものの内１つ以上である。本方法は、データをホストから受け取る毎に、または定期的に実行され、その結果、動的適応キャッシュはデータの圧縮性に依存してサイズを変更する。例えば、方法１００は、規則的な間隔、書き込みコマンドのような特定タイプのホスト・コマンド毎に、および／または利用可能なスペースの量が特定の量に変更されるときに実行することができる。
【００１５】
[0015]ホストから受け取ったデータを圧縮データに圧縮するステップ１０４は、圧縮（またはサイズを減らす他の技術）を実行するための適切なモジュールまたはハードウェアを用いて、記憶デバイスにおいて生じさせることができる。また、ホストから受け取ったデータを圧縮データに圧縮するステップ１０４は、圧縮データを記憶デバイスに格納する前に制御モジュールにおいて完結させることもできる。
【００１６】
[0016]図１Ａに示される本方法１００における記憶デバイスにおいて利用可能なスペースの量を決定するステップ１０８は、さまざまな方法で実行することができる。データを圧縮するステップ１０４が制御モジュールにおいて実行される例では、記憶デバイスの利用可能スペースの量を決定するステップ１０８は単純化することができる。何故ならば、制御モジュールは受け取ったデータのサイズおよび圧縮後のデータのサイズを自動的に決定することができ、また、この情報に基づいて記憶デバイスに残された利用可能スペースの量を簡単に決定することができるからである。
【００１７】
[0017]圧縮データをホストから受け取ったデータを圧縮するステップ１０４が記憶デバイスにおいて生じる場合には、記憶デバイスの利用可能スペース量を決定するステップ１０８は、同期モデルを用いて実行することができる。同期モデルの下では、記憶デバイスにおける利用可能なスペースの量が構成閾値を超過するときに、記憶デバイスは、一時中止(interrupt)のような信号を動的適応キャッシュの制御モジュールに送信する。制御モジュールは、次いで、リード・バッファまたは他のコマンドのような規定のコマンドを通じて利用可能なスペースの量を読み取るために、記憶デバイスに問い合わせすることになる。代替の実施形態において、この利用可能なスペースは、非同期モデルを用いて決定される。非同期モデルの下では、制御モジュールは、所与の時間に利用可能なスペースを決定するために記憶デバイスに動的に問い合わせをし、そして、定期的に記憶デバイスへの問い合わせを継続して、利用可能スペースが設定閾値を超過したかどうかを判断する。
【００１８】
[0018]方法１００はまた、利用可能なスペースの量が予約量より少ないときに、記憶デバイスのスペースを開放するステップを含むこともできる。これは、クリーン・エントリのようなキャッシュのエントリのいくつかを廃棄する(decommission)こと、記憶デバイスにＴＲＩＭ要求を発行すること、キャッシュのタグ・メモリの１つ以上のエントリを無効にすること、その他手段のうちの１つ以上によって達成することができる。このステップの目的は、動的適応キャッシュが、記憶デバイスのスペースの量を予約することにより、ホストに対し特定の最小固定サイズを保証できることを確実にすることである。データの圧縮性を可変的なものとすることができるため、スペースの予約量はストレージ・デバイスにおいて維持(preserve)される。その結果、動的適応キャッシュが最大キャパシティに近いときに、この動的適応キャッシュはデータをなおも格納することができ、および／または特定レベルの性能をなおも供給することができる。ホストに対する特定の最小固定サイズ、およびデータ圧縮の可変的性質を保証する要件のために、保守的に予約量を設定し、記憶デバイスが満杯になるリスクを回避し、および／または特定のレベル以下に性能が低下するのを回避することが望ましい。保守的に予約量を設定することも重要である。何故ならば、動的適応キャッシュは、システムの制約に依り記憶デバイスのスペースを開放するステップを、即座に実施することが常にはできないこともあるからである（例えば、何故ならば、ＴＲＩＭ命令は記憶デバイスによる読み出し／書き込み命令と並行して、または記憶デバイスが本来の命令キュー(native command queuing)を用いるか否かに依存しては実行することができないからである。）。
【００１９】
[0019]動的適応キャッシュを管理する方法１００の更なるステップは、記憶デバイスにおいて利用可能なスペースの量が予約量に接近している、および／または予約量より少ないときに、信号を記憶デバイスから制御モジュールに送信するステップを含む。このステップの目的は、記憶デバイスにおいて利用可能スペースが不足しているときに、制御モジュールが（例えば、記憶デバイスのスペースを開放することにより）適時に応答できることを確実にすることである。
【００２０】
[0020]図１Ｂを全般的に参照する。動的適応キャッシュを管理する方法１１４が示される。方法１１４は、ホストからデータを受け取るステップ１１６、および、受け取ったデータを圧縮データに圧縮する（その他サイズを減らす）ステップ１１８を含む。本方法のその次のステップは、圧縮データを格納するステップ１２０である。本方法の更なるステップは、利用可能な量を決定するステップ１２２である。本方法は、次いで、受け取ったデータのサイズと圧縮データのサイズの間の差の少なくとも一部をホストに提示するステップを含む。様々な実施形態によれば、ホストに提示するステップ１２４は、利用可能なスペースの量が構成閾値より大きいときに、定期的に、ホストから受け取った多くの命令において周期的に、およびホストからの要求時に、のうちの１つ以上のときに実行される。
【００２１】
[0021]図１Ｂに示される方法はまた、利用可能なスペースの量が予約量より少ないときに、記憶デバイスにおけるスペースを開放するステップも含むこともできる。本方法はまた、利用可能なスペースの量が予約量に接近し、および／または予約量より少ないときに、信号を送るステップ、ならびに、利用可能なスペースの量を決定するために恐らくは問合わせを送るステップを含むこともできる。本方法１１４は、データをホストから受け取るごとに実行することができる。
【００２２】
[0022]図２Ａ〜２Ｆを全般的に参照する。動的適応キャッシュ２００の実施例が示される。図２Ａは、初期時間間隔（ｔ０）における、論理スペース２０２および物理記憶スペース２０４を含む動的適応キャッシュ２００を示す。論理スペース２０２は、ホストに提示される記憶スペースであり、論理スペース２０２のサイズは時間とともに変化する。図２Ａに示すように、初期時間間隔（ｔ０）において、ホストから受け取ったデータはなく、動的適応キャッシュ２００の論理スペース２０２および物理記憶スペース２０４は空である。論理スペース２０２が図２Ａ〜２Ｆの物理記憶スペース２０４に隣接して示されるが、論理スペース２０２および物理記憶スペース２０４の相対的なサイズの関係性については何ら関連がない。様々な実施形態によれば、論理的スペース２０２は、物理記憶スペース２０４より少ないデータを格納することできる、物理記憶スペース２０４と同一の非圧縮性データの量を格納することができる、データが非圧縮であれば物理記憶スペース２０４が格納することができるであろう量より多くのデータを格納できる、特定の最大サイズよりも常に少ない、および、特定の最小限のサイズよりも常に大きい、の内の１つ以上である。
【００２３】
[0023]図２Ｂは、データを動的適用キャッシュ２００からホストに受け取った後の第１の時間間隔（ｔ１）における動的適応キャッシュ２００を示している。データは、圧縮されておらず、論理的スペース２０２の非圧縮のデータ・スペース２０６を必要とする。データは、圧縮データ・スペース２０８に圧縮され、物理記憶スペース２０４に格納される。圧縮（圧縮データ・スペース２０８）の後のデータのサイズは、圧縮される前のデータのサイズ（非圧縮のデータスペース２０６）よりも通常は小さい。但し、このことはデータの圧縮性に依存する。
【００２４】
[0024]図２Ｃは、ｔ２における動的適応キャッシュ２００を示す。時間ｔ２において、ホストに提示される、動的適用キャッシュ論理スペース２０２は、時間ｔ１におけるデータの圧縮の結果として再利用されるスペースの少なくとも一部に従う量を増量することになる。圧縮を通じて取得されるスペースは、再利用スペース２１０であり、非圧縮のデータ・スペース２０６のサイズと圧縮データ・スペース２０８のサイズとの間の差に等しい。図２Ｃは、論理スペース２０２に付加された再利用スペース２１０を示す。再利用スペース２１０は、ホストに提示される論理スペース２０２に付加される。このようにして、動的適応キャッシュ２００がより大きい論理的スペース２０２をホストに提示することを可能にする。一実施形態において、再利用スペース２１０の全サイズがホストに提示されているが、再利用スペース２１０の一部のみをホストに提示し、また、物理記憶スペース２０４における再利用スペース２１０の一部を予約することも可能である。
【００２５】
[0025]図２Ｄは、付加データが論理的スペース２０２からホストに受け取られた後の時間ｔ３における動的適応キャッシュ２００を示す。データは、圧縮されておらず、論理的スペース２０２における第２の非圧縮のデータ・スペース２１２を占有する。データは圧縮され、第２の圧縮データ・スペース２１４として物理記憶スペース２０４に格納される。第２の圧縮データ・スペース２１４のサイズは、データが少なくとも部分的に圧縮可能であるときに、第２の非圧縮のデータ・スペース２１２のサイズより少ない。圧縮によって取得されるスペースは、第２の再利用スペース２１６と称され、これは、第２の非圧縮データ・スペース２１２と第２の圧縮データ・スペース２１４の差に等しい。論理スペース２０２の有効サイズは、図２Ｄに示すように、第２の再利用スペース２１６のサイズに従う量によって増量される。第２の再利用スペース２１６は、論理スペース２０２に付加され、それによって、より大きな動的適応キャッシュ２００のホストへの提示を容易にする。
【００２６】
[0026]図２Ｅは、時間ｔ４において、動的適応キャッシュ２００ｔ４を示す。時間ｔ４において、付加データが、動的適応キャッシュ２００に受け取られる。データは、非圧縮であり論理スペース２０２において第３の非圧縮データ・スペース２２０を占有し、圧縮されて、物理記憶スペース２０４における第３の圧縮スペース２２２に格納される。この時に、物理記憶スペース２０４は、ほぼ満杯(full)であり、その最大キャパシティにほとんど達している。スペースの量が物理記憶スペース２０４に予約されており、その結果、物理記憶スペース２０４が満杯になるのを防止する。物理記憶スペース２０４が予約スペースの閾値に達するのに十分になり始めた場合には、スペースは動的適応キャッシュ２００によって開放されなければならない。
【００２７】
[0027]図２Ｆは、時間ｔ５における動的適応キャッシュ２００を示す。時間ｔ５において、スペースは物理記憶スペース２０４に開放されており、その結果、物理記憶スペース２０４はもはや完全に満杯になるという危険はない。開放されたスペース２２４は、物理記憶スペース２０４に戻されたので、もはや最大キャパシティに接近しない。開放されたスペース２２４は、１つ以上の圧縮データ・スペース２０８、第２の圧縮データ・スペース２１４、および第３の圧縮スペース２２２の内の１つ以上から、例えばトリミングによって、データを開放できている。データはまた、更なる圧縮を受けることもあり、その結果、より小さい第３の圧縮スペース２２２となる。
【００２８】
[0028]図２Ｆはまた、ホストに提示される、論理スペース２０２の増加の総量を示し、動的適応キャッシュ２００が、論理スペース２０２を提示することを反映する。論理スペース２０２は、変更することができ、また、いくつかの実施形態では、物理記憶スペース２０４よりも大きい場合もある。図２Ａ〜２Ｆに示されるプロセスは、ホストからデータが受け取られる毎に実行することができ、その結果、サイズを動的に変更し、動的に適応されるキャッシュとなる。
【００２９】
[0029]ホストに提示される論理スペースのサイズは、ホストから受け取ったデータおよび利用可能なスペースの量についての、圧縮性のような縮小に応じて変動する。データは、無損失の圧縮アルゴリズムまたは動的適応キャッシュに適した他のデータ・リダクションの方法によって縮小することができる。データ・エントロピーが１００％となるときは、データは圧縮可能（すなわち縮小可能）ではなく、動的適応キャッシュは、いかなるスペースも再利用することができず、論理スペースのサイズを増やすことによりそれをホストに提示することができない。データ・エントロピーが１００％未満であるときは、データは圧縮可能であり、また、動的適応キャッシュは圧縮によって保存されるスペースを再利用することができ、また、この量の少なくとも一部によって論理スペースを拡張することができる。ホストから受け取ったデータの圧縮性が、非圧縮データから高圧縮可能データにわたって変化させることができるので、動的適応キャッシュのサイズは受け取られたデータに従って動的に変更する。
【００３０】
[0030]図３を全般的に参照して、本開示による動的適応キャッシュ格納のための例示的なシステム３００を示す。システム３００は、コンピュータ・システムまたはコンピュータ・デバイスとすることができる。システム３００は、記憶デバイス３０２、制御モジュール３０４およびインタフェース・モジュール３０６を含む。システム３００は、ホスト３０８からのデータを送信および受信するために用いられる。制御モジュール３０４は、ホスト３０８からデータを受け取るように構成され、データを圧縮するために用いることができる。代替的に、データ圧縮は、記憶デバイス３０２において生じる場合がある。いずれの場合でも、圧縮データは、記憶デバイス３０２に格納される。様々な実施形態によれば、記憶デバイス３０２は、受け取ったデータを格納するための記憶メモリを備えており、静的ランダム・アクセス・メモリ、動的ランダム・アクセス・メモリ、組込メモリ、ＮＡＮＤフラッシュ・メモリのような不揮発性メモリ、半導体メモリ、および任意のその他のタイプのメモリ・デバイスの内の１つ以上である。
【００３１】
[0031]制御モジュール３０４はまた、圧縮によって得たスペースの量を決定するために用いることもでき、そのスペースは再利用スペースと称することができる。再利用スペースは、圧縮の前にホスト３０８から受け取ったデータのサイズと圧縮データのサイズの差に等しく、ホストから受け取ったデータ、および記憶デバイスに現在格納されているデータに合計される。再利用スペースの少なくとも一部は、インタフェース・モジュール３０６を用いて、ホスト３０８に提示し、および／または利用可能とすることができる。いくつかの実施形態では、インタフェース・モジュール３０６は、ホスト３０８に論理キャパシティを提示するように設定されることもある。ホストに提示される論理キャパシティのサイズは、変化することができるが、所与の時間での記憶デバイス３０２の利用可能な論理キャパシティと同様、再利用スペースの少なくとも一部を含むことができる。
【００３２】
[0032]図３に示されるシステム３００の制御モジュール３０４はまた、記憶デバイス３０２において利用可能な論理的スペースを決定するように構成することもできる。制御モジュール３０４は、通信により記憶デバイス３０２に結合され、記憶デバイス３０２から信号を受信することができる。制御モジュール３０４はまた、記憶デバイスからの信号の受信に基づくか、あるいは、所与の時間間隔、もしくは、数多くの命令および／または記憶デバイスから受け取った応答における周期、のいずれかにおいて記憶デバイス３０２に問い合わせるようにも構成される。
【００３３】
[0033]図３に示されるシステム３００の記憶デバイス３０２は、例えばＮＡＮＤフラッシュ・ベース・ストレージのような不揮発性半導体メモリを有するソリッド・ステート・ディスクでもよい。記憶デバイス３０２は、利用可能なスペースの量が構成閾値に接近しおよび／または構成閾値に達したときに、制御モジュール３０４に信号を送るように構成することができる。記憶デバイス３０２はまた、記憶デバイス３０２がホスト３０８からのデータを格納でき、いつでも特定の最低限の性能レベルを提供できることを確実にするために、スペースの予約量を維持するように構成することもできる。例えば、いくつかの実施形態では、ライト・アンプリフィケーション(write amplification)が特定のレベル未満であることを確実にするために、スペースの予約量が維持されることもある。
【００３４】
[0034]様々な実施形態によれば、図３に示されるシステム３００の制御モジュール３０４は、Ｉ／Ｏコントローラ、Ｒａｉｄ―Ｏｎ―Ｃｈｉｐ（ＲＯＣ）コントローラ、ホスト・バス・アダプタ、記憶デバイスをホストにインタフェースするための任意のチップ、ならびに、キャッシュ管理および／またはキャッシュ制御について先に述べた任意の組み込みのうちの１つ以上である。
【００３５】
[0035]本開示の図４Ａを参照する。動的適応キャッシュ格納のためのシステム３００を提供する。システム３００は、インタフェース・モジュール３０６、制御モジュール３０４、および記憶デバイス３０２を含む。制御モジュール３０４は、キャッシュを管理しており、キャッシュ・タグ４０２は制御モジュール３０４内に位置する。システム３００の記憶デバイス３０２はまた、キャッシュ・データ４１４も含む。システム３００は、通信により、インタフェース４１０を介してホスト３０８に結合される。ホスト３０８は、プロセッサ４０６およびメモリ４１２を含む。
【００３６】
[0036]本開示の図４Ｂにおいて、動的適応キャッシュ格納についてのシステム３００が提供され、ホスト３０８がキャッシュを管理するときの構成を示している。図４Ｂにおいて、システム３００は、キャッシュ・データ４１４をシステム３００が有する記憶デバイス３０２内に含む。ホスト３０８は、キャッシュ・タグ４０２をホスト３０８のメモリ４１２に含む。
【００３７】
[0037]ホスト３０８のメモリ４１２は、データを格納することができる任意のシステムおよび／またはデバイスとすることができる。一実施形態において、メモリ４１２は、プロセッサ４０６によって実施される際に、プロセッサ４０６に、動的適応キャッシュを管理するための方法を実行させるコンピュータ・コードを格納する。
【００３８】
[0038]図４Ａおよび４Ｂに示されるシステム３００は、任意的におよび／または選択的に構成され（例えば、メモリ４１２に、および／または記憶デバイス３０２に、および／または例示されない他のメモリに、格納されるソフトウェアおよび／またはファームウェアを実行し、ならびに特定用途向けの回路などを使用する等）、ホスト３０８から送られ、受け取ったデータについての動的適応キャッシュ格納を提供する。システム３００は、物理キャッシュ・サイズを超過するホスト３０８に、論理キャッシュ・サイズまたは有効キャッシュ・サイズを提示することができる。
【００３９】
[0039]本開示はまた、図５に示すように方法５００にも向けられる。方法５００は、記憶インタフェースを介した記憶デバイスによって、複数のデータ部分を受け取るステップ５０２を含む。記憶インタフェースは、ＳＡＴＡインタフェース、ＳＡＳインタフェース、ＰＣＩｅインタフェース、または他の適切な記憶インタフェースを含むことができる。本方法の次のステップは、データ部分のそれぞれを縮小して、縮小データ部分を形成すステップ５０４を必要とし、データ部分の内少なくともいくつかが、縮小データ部分のそれぞれよりも大きいサイズを有する。様々な実施形態によれば、細分化や圧縮のような１つ以上のデータ・リダクション技術が用いられる。本方法はまた、このデータ部分を、記憶デバイスのデータ・メモリ内に縮小されたデータ部分として格納するステップ５０６を含む。データ・メモリはまた、不揮発性データ・メモリとすることができる。本方法の最後のステップは、データ・メモリの利用に従って、データ・メモリの論理キャパシティを決定するステップ５０８である。
【００４０】
[0040]本方法５００において、データ・メモリの論理キャパシティは、例えば、利用率に比例することにより、すなわち、利用率についての関数(function)によって、データ・メモリの利用に従って変化する。次いで、データ・メモリの利用は、いくつのデータ部分がデータ・メモリに格納されているかに従って、および格納したデータ部分の縮小に従って変化する。第１の実施例では、より多くのデータ部分が、データ・メモリの未使用の論理ブロックに以前に格納されているために、データ・メモリの利用率は増加する。第２の実施例では、以前に格納されたデータ部分が、データ部分で上書きされ、より大きな程度縮小されるために、データ・メモリの利用率は減少する。第３の実施例では、格納されたデータ部分が例えばトリミングにより削除されるために、データ・メモリの利用率は減少する。
【００４１】
[0041]本方法５００のいくつかの実施例において、論理キャパシティが、供給された論理キャパシティのような決定された最大値を有することもある。様々な実施形態によれば、提供された論理キャパシティは、データ部分がこれ以上縮小できないと想定して、データ・メモリの物理サイズよりも小さい、同じ、または大きい量を格納することができる。更なる実施形態において、供給された論理キャパシティは、データ部分がこれ以上縮小できないと想定して、オーバー・プロビジョン(over-provisioning)した量の物理サイズを提供するために、データ・メモリの物理サイズよりも小さいデータ部分の量を格納することができる。オーバー・プロビジョンは、例えばライト・アンプリフィケーションによって、記憶デバイスの性能を改善する場合もある。
【００４２】
[0042]供給された論理キャパシティ以下の使用可能な論理キャパシティは、データ・メモリの利用に少なくとも部分的に基づいて決定される。様々な実施形態によれば、使用可能な論理キャパシティは、利用率の減少により増加した、利用率の増加により減量した、利用率の一次関数、利用率の非線形関数、周期的に変更した、記憶デバイスによって受信した数多くの命令において周期的に変更した、そして、利用率が決定量より多くのもので変更されるときに変更した、の内の１つ以上である。使用可能な論理キャパシティを変化させることにより、記憶デバイスにデータを格納している動的適応キャッシュが、使用可能な論理キャパシティに従って有利な量のデータを格納することを可能にし、これにより、ここに格納したデータの減量に従って性能を増大させるのを可能にする。
【００４３】
[0043]図５に示される方法５００はまた、特定の閾値の超過に応じてデータ・メモリから縮小したデータ部分のうち１つ以上を削除するステップを含むこともできる。このステップでは、特定の閾値は、特定の値より小さい記憶デバイスのライト・アンプリフィケーションを維持することができる。一実施形態において、データ・メモリから縮小データ部分のうち１つ以上を削除するステップは、少なくとも部分的に、記憶デバイスのタグ・メモリの１つ以上のエントリを無効にすることによって達成することができる。
【００４４】
[0044]図５に示される方法５００はまた、追加のステップを含むこともできる。記憶デバイスがデータ部分の特定の一つを要求する場合、本方法は、データ・メモリからそれぞれ縮小データ部分を読み取るステップ、特定のピン部を回復するためにそれぞれの縮小データ部分を回復する(reverse)ステップ、および要求に応じて特定のデータ部分を戻すステップを含むことができる。
【００４５】
[0045]本開示において、開示した方法は、命令セットまたはデバイスによって読み取り可能なソフトウェアとして実施することができる。さらに、開示した方法のステップについて特定の順序または階層が、例示の手法における実施例であるものと理解される。設計の優先度に基づいて、本方法のステップについての特定の順序または階層を、開示した主題の範囲内に維持しながら再配置することができる。付随的な方法では、サンプルの順序で様々な本構成要件を特許請求し、必ずしも提示された特定の方法や階層に限定することを意味するものではない。
【００４６】
[0046]本開示および多数のその効果は、先に述べた説明によって理解されることになり、また、様々な変更を、本開示の主題から逸脱することなく、または、その実質的な優位性の全てを犠牲にすることなく、コンポーネントの形式、構成および配置において行うことができるのは明らかである。記載した形式は、単に説明のためにすぎず、このような変更を包含するために添付の特許請求の範囲を意図するものである。
【００４７】
[0047]先に説明した発明の詳細な説明は、ブロック図、フローチャートおよび／または実施例を用いることによって、デバイスおよび／またはプロセスについての様々な実施形態の記載を含むことができる。その限りにおいて、ブロック図、フローチャートおよび／または実施例が一つ以上の機能および／または動作を含むように、その技術分野に属する当業者にとって、このようなブロック図、フローチャートまたは実施例における各機能または動作が、別個におよび／または集合的に、広範囲にわたるハードウェア、ソフトウェア、ファームウェアまたは仮想的な任意のこれらの組み合わせによって実施することができることが理解されよう。一実施形態において、本願明細書に記載される主題のいくつかの部分が、用途特定集積回路（ＡＳＩＣ;Application Specific Integrated Circuits）、フィールド・プログラム可能ゲート・アレイ（ＦＰＧＡｓ;Field Programmable Gate Arrays）、デジタル信号プロセッサ（ＤＳＰ;digital signal processors）その他、統合フォーマットで実施することができる。しかしながら、当業者にとって、本願明細書に開示される実施例のいくつかの態様が、全体的にまたは部分的に、１つ以上のコンピュータで起動する１つ以上のコンピュータ・プログラム）として（例えば、１つ以上のコンピュータ・システムで起動する１つ以上のプログラムとして）、１つ以上のプロセッサで起動する１つ以上のプログラムとして（例えば、１つ以上のマイクロ・プロセッサで起動する１つ以上のプログラムとして）、ファームウェアとして、または仮想的なこれらの任意の組み合わせとして、集積回路で等しく実施することができ、そして、回路の設計および／またはソフトウェアやファームウェアのコードの記述がこの開示から上手く当業者のスキルの範囲内となることが認められよう。
【００４８】
[0048]加えて、当業者にとって、本願明細書において記載している主題の機構が、様々な形態のプログラム製品として配布されることができ、また、本願明細書において記載している主題の例示の実施形態が、実際に配布を行うために用いる媒体を支持している(bear)特定のタイプの信号に関係なく、適用することが認められよう。信号が支持している媒体の例としては、例えばフロッピー（登録商標）・ディスク、ハード・ディスク・デバイス、ソリッド・ステート・ディスク、コンパクト・ディスク（ＣＤ）、ディジタル・ビデオ・ディスク（ＤＶＤ）およびデジタル・テープ、コンピュータ・メモリ等のような記録可能タイプ媒体、ならびに、例えばデジタルおよび／またはアナログの通信媒体（例えば、光ファイバ・ケーブル、導波管、有線通信リンク、無線通信リンク（例えば、送信器、受信器、送信ロジック、受信ロジックなど）など））のような伝送タイプ媒体を含むが、これに限定されない。
【００４９】
[0049]当業者にとって、最高水準の技術が、システムについてのハードウェア、ソフトウェアおよび／またはファームウェアでの実施態様の間に残される相違点はほとんどないという点への進歩を含むことができ、また、ハードウェア、ソフトウェアおよび／またはファームウェアの使用は、（特定のコンテキストではハードウェアおよびソフトウェアの選択が重要になる点では常にではないが、）通常は、デザイン選択表示コストと効率性との間のトレードオフとなることができることが認められるであろう。当業者にとって、本願明細書において記載されるプロセス、システムおよび／または他の技術を遂行することができる様々な媒体(vehicle)がある（例えば、ハードウェア、ソフトウェアおよび／またはファームウェア）こともあり、また、好適な媒体は、プロセス、システムおよび／または他の技術を展開することができるコンテキストで変更することができるものと認める。例えば、実装者が速度および精度が卓越したものと断定する場合、実装者は、主にハードウェアおよび／またはファームウェア媒体を選択することができる。代替的に、フレキシビリティが卓越したものである場合、実装者は、主にソフトウェア実装について選択することができる。または、再度代替的に、実装者は、ハードウェア、ソフトウェアおよび／またはファームウェアのいくらかの組合せを選択することができる。したがって、本願明細書において記載されるプロセス、デバイスおよび／または他の技術を遂行することができるいくつかの使用可能な媒体とすることができる。そして、これらのいずれについても、利用されることになる媒体が、媒体が配置されることになるコンテキストに依存した選択となり、また、実装者が有する特定の懸念（例えば、速度、フレキシビリティ性または予測性）があり得、いずれもが変化できるという点で、他よりも本質的に優れたものとはならない。当業者にとって、実施の光学態様として、典型的には光学的に順応されたハードウェア、ソフトウェア、またはファームウェアを採用することになることが認められるであろう。
【図１Ａ】
2013200868.tif 000003
【図１Ｂ】
2013200868.tif 000004
【図３】
2013200868.tif 000005
【図４Ａ】
2013200868.tif 000006
【図４Ｂ】
2013200868.tif 000007
【図５】
2013200868.tif 000008
【図２Ａ】
2013200868.tif 000009
【図２Ｂ】
2013200868.tif 000010
【図２Ｃ】
2013200868.tif 000011
【図２Ｄ】
2013200868.tif 000012
【図２Ｅ】
2013200868.tif 000013
【図２Ｆ】
2013200868.tif 000014