(57)【特許請求の範囲】
【請求項１】
メモリモジュールであって、
１つ以上のＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）装置と、
ホストコンピュータへのＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）メモリインターフェイスと、
メモリオーバープロビジョニングロジック（ｍｅｍｏｒｙ  ｏｖｅｒｐｒｏｖｉｓｉｏｎｉｎｇ  ｌｏｇｉｃ）と、を有し、
前記メモリオーバープロビジョニングロジックは、前記１つ以上のＤＲＡＭ装置のメモリ使用量をモニターし、前記１つ以上のＤＲＡＭ装置の圧縮又は重複除去の内の少なくとも１つの比率をホストコンピュータのカーネルドライバーモジュールに提供するよう構成され、
前記ホストコンピュータのカーネルドライバーモジュールは、圧縮又は重複除去の内の少なくとも１つの比率に基づいて、前記メモリモジュールの仮想メモリ容量を動的にアップデートするように構成され、
前記カーネルドライバーモジュールは、前記圧縮又は重複除去の内の少なくとも１つの比率が減少すれば、システムメモリにメモリページを予約し、
前記圧縮又は重複除去の内の少なくとも１つの比率が増加すると、前記システムメモリに予約された前記メモリページをオペレーティングシステムに解放（ｒｅｌｅａｓｅ）して、前記オペレーティングシステムが、前記メモリモジュールの前記仮想メモリ容量に対応するメモリ空間の量を利用することを特徴とするメモリモジュール。
【請求項２】
前記メモリオーバープロビジョニングロジックは、前記メモリモジュールのメモリ使用量をモニターするフィードバックループを駆動し、
前記メモリモジュールの前記仮想メモリ容量を調整するよう構成されることを特徴とする請求項１に記載のメモリモジュール。
【請求項３】
前記メモリオーバープロビジョニングロジックは、前記メモリモジュールの前記仮想メモリ容量を前記カーネルドライバーモジュールに周期的にアップデートし、報告するよう構成されることを特徴とする請求項１に記載のメモリモジュール。
【請求項４】
前記カーネルドライバーモジュールは、前記ホストコンピュータの前記システムメモリ内にロード（ｌｏａｄ）され、前記メモリモジュールの前記メモリオーバープロビジョニングロジックからメモリ可用性（ｍｅｍｏｒｙ  ａｖａｉｌａｂｉｌｉｔｙ）を調査する（ｐｏｌｌ）よう構成されることを特徴とする請求項１に記載のメモリモジュール。
【請求項５】
前記カーネルドライバーモジュール及び前記オペレーティングシステムのカーネルは、互いに分離されてコンパイルされることを特徴とする請求項１に記載のメモリモジュール。
【請求項６】
前記カーネルドライバーモジュールは、前記メモリモジュールの前記仮想メモリ容量に対応するメモリ空間の量を制御するように構成されることを特徴とする請求項１に記載のメモリモジュール。
【請求項７】
オペレーティングシステム（ＯＳ）とカーネルドライバーモジュールとを含むホストコンピュータと、
１つ以上のＤＲＡＭ装置とメモリオーバープロビジョニングロジックとを含むメモリモジュールと、
前記ホストコンピュータと前記メモリモジュールとを結合するＤＤＲメモリインターフェイスと、を有し、
前記メモリオーバープロビジョニングロジックは、前記１つ以上のＤＲＡＭ装置のメモリ使用量をモニターし、前記１つ以上のＤＲＡＭ装置に書き込まれたデータに基づいて、前記ＤＤＲメモリインターフェイスを介して、前記メモリモジュールの圧縮又は重複除去の内の少なくとも１つの比率を前記ホストコンピュータの前記カーネルドライバーモジュールに提供するよう構成され、
前記ホストコンピュータの前記カーネルドライバーモジュールは、前記圧縮又は重複除去の内の少なくとも１つの比率に基づいて前記メモリモジュールの仮想メモリ容量を動的にアップデートするよう構成され、
前記カーネルドライバーモジュールは、前記圧縮又は重複除去の内の少なくとも１つの比率が減少すれば、システムメモリにメモリページを予約し、
前記圧縮又は重複除去の内の少なくとも１つの比率が増加すると、前記システムメモリに予約された前記メモリページをオペレーティングシステムに解放して、前記オペレーティングシステムが、前記メモリモジュールの前記仮想メモリ容量に対応するメモリ空間の量を利用することを特徴とするメモリシステム。
【請求項８】
前記メモリオーバープロビジョニングロジックは、前記メモリモジュールのメモリ使用量をモニターするフィードバックループを駆動し、
前記メモリモジュールの前記仮想メモリ容量を調整するよう構成されることを特徴とする請求項７に記載のメモリシステム。
【請求項９】
前記メモリオーバープロビジョニングロジックは、前記メモリモジュールの前記仮想メモリ容量を前記カーネルドライバーモジュールに周期的にアップデートし、報告するよう構成されることを特徴とする請求項７に記載のメモリシステム。
【請求項１０】
前記カーネルドライバーモジュールは、前記ホストコンピュータの前記システムメモリ内にロードされ、前記メモリモジュールの前記メモリオーバープロビジョニングロジックからメモリ可用性を調査するよう構成されることを特徴とする請求項７に記載のメモリシステム。
【請求項１１】
前記カーネルドライバーモジュール及び前記オペレーティングシステムのカーネルは、互いに分離されてコンパイルされることを特徴とする請求項７に記載のメモリシステム。
【請求項１２】
前記メモリオーバープロビジョニングロジックは、追加的なページを格納するための安全バッファ（ｓａｆｅｔｙ  ｂｕｆｆｅｒ）をさらに含むことを特徴とする請求項７に記載のメモリシステム。
【請求項１３】
前記カーネルドライバーモジュールは、前記メモリモジュールの前記仮想メモリ容量に対応するメモリ空間の量を制御するように構成されることを特徴とする請求項７に記載のメモリシステム。
【請求項１４】
メモリシステムの動作方法であって、
１つ以上のＤＲＡＭ装置を含み、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）メモリインターフェイスを介してホストコンピュータとインターフェイスするメモリモジュールを提供する段階と、
前記メモリモジュールの初期仮想メモリ容量を提供する段階と、
前記メモリモジュールの前記１つ以上のＤＲＡＭ装置内に格納されたデータの圧縮又は重複除去の内の少なくとも１つの比率に基づいて、前記メモリモジュールに書き込まれたデータのインライン（ｉｎｌｉｎｅ）圧縮又は重複除去の内の少なくとも１つの比率をモニターリングする段階と、
前記１つ以上のＤＲＡＭ装置に書き込まれたデータに基づいて、前記メモリモジュールの圧縮又は重複除去の内の少なくとも１つの比率を前記ＤＤＲメモリインターフェイスを介して、前記ホストコンピュータのカーネルドライバーモジュールに提供する段階と、
前記圧縮又は重複除去の内の少なくとも１つの比率の変化に基づいて、前記メモリモジュールの仮想メモリ容量を動的にアップデートする段階と、
前記圧縮又は重複除去の内の少なくとも１つの比率が減少すると、前記カーネルドライバーモジュールを用いてシステムメモリにメモリページを予約する段階と、
前記圧縮又は重複除去の内の少なくとも１つの比率が増加すると、前記システムメモリに予約された前記メモリページをオペレーティングシステムに解放して、前記オペレーティングシステムが、前記メモリモジュールの前記仮想メモリ容量に対応するメモリ空間の量を利用する段階と、を有することを特徴とするメモリシステムの動作方法。
【請求項１５】
前記メモリモジュールのメモリ使用量をモニターするためのフィードバックループを駆動する段階と、
前記メモリモジュールの前記仮想メモリ容量を調整する段階と、をさらに有することを特徴とする請求項１４に記載のメモリシステムの動作方法。
【請求項１６】
前記メモリモジュールの前記仮想メモリ容量を前記カーネルドライバーモジュールに周期的にアップデートし、報告する段階をさらに有することを特徴とする請求項１４に記載のメモリシステムの動作方法。
【請求項１７】
前記カーネルドライバーモジュールを前記ホストコンピュータの前記システムメモリ内にロードする段階と、
前記メモリモジュールのメモリオーバープロビジョニングロジックからメモリ可用性を調査する段階と、をさらに有することを特徴とする請求項１４に記載のメモリシステムの動作方法。
【請求項１８】
前記ホストコンピュータから受信したデータをメモリオーバープロビジョニングロジックの安全バッファ内に格納する段階をさらに有することを特徴とする請求項１４に記載のメモリシステムの動作方法。
【請求項１９】
前記カーネルドライバーモジュールは、前記メモリモジュールの前記仮想メモリ容量に対応するメモリ空間の量を制御するように構成されることを特徴とする請求項１４に記載のメモリシステムの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はメモリシステムに関し、特に、メモリオーバープロビジョニング（ｍｅｍｏｒｙ  ｏｖｅｒｐｒｏｖｉｓｉｏｎｉｎｇ）を遂行するメモリモジュール及びメモリモジュールを含むメモリシステム並びにメモリシステムの動作方法に関する。
【背景技術】
【０００２】
データベース（ｄａｔａ  ｂａｓｅ）、仮想デスクトップコンピュータインフラ構造（ｉｎｆｒａｓｔｒｕｃｔｕｒｅ）、及びデータ分析（ｄａｔａ  ａｎａｌｙｔｉｃｓ）等のようなアプリケーションを駆動する現代のコンピュータシステムは大きなメインメモリ占有面積を有する。
システムの規模が拡張されるにつれて、さらに大きいデータストレージ容量に対する要求が線形的に増加する。
メモリ技術は、占有面積の小さい大容量メモリの増大するニーズに対応するために積極的に進歩しており、インライン（ｉｎｌｉｎｅ）圧縮又は重複除去（ｄｅｄｕｐｌｉｃａｔｉｏｎ）のようなメモリモジュールレベルの技術はメモリモジュールの仮想容量をさらに増加させるために適用することができる。
【０００３】
例えば、メモリ容量をメモリコントローラに公開する（ｅｘｐｏｓｉｎｇ）場合、インライン圧縮及び／又は重複除去を遂行するように具現されたメモリモジュールは、その仮想メモリ容量をその物理メモリ容量より２倍から３倍の間の容量に増加させることができる。
メモリモジュール−レベル技術の推進には、メモリシステム全体がシステムレベルの制御が可能であるようにさらに変更する必要である。
【０００４】
残念ながら、インライン圧縮又は重複除去によって増加されるメモリモジュールの仮想メモリ容量は、メモリモジュール内に格納されてあるデータセット（ｄａｔａｓｅｔ）に依存する。
冗長性（ｒｅｄｕｎｄａｎｃｙ）を備えた一部のデータセットでは、適切な圧縮及び重複除去を助けることができるが、他のデータセットでは圧縮又は重複除去に適していないことがある。
その上に、アプリケーションランタイムの間、データ圧縮及び／又は重複除去の効率はデータが変更されることによって動的に変わる。
【０００５】
アプリケーションに対するメモリモジュールの動的に変わる仮想容量の公開（ｅｘｐｏｓｕｒｅ）はコンピュータシステムのソフトウェアスタック（ｓｔａｃｋ）に対する軽微ではない（ｎｏｎ−ｔｒｉｖｉａｌ）変更を必要とする。
例えば、メモリページング（ｍｅｍｏｒｙ  ｐａｇｉｎｇ）を綿密に管理し、メモリモジュールにスワッピング（ｓｗａｐｐｉｎｇ）することによって、ホストコンピュータのオペレーティングシステム（ＯＳ：Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）は動的に変わる仮想容量を収容することができる。
【０００６】
しかし、このような変更は、ＯＳカーネル（Ｋｅｒｎｅｌ）のカスタマイズ（ｃｕｓｔｏｍｉｚａｔｉｏｎ）を要求し、このようなカスタマイズは高価の費用が掛かり、上述した変更の適用を難しくするという問題がある。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第７，４２１，５３３号明細書
【特許文献２】米国特許第９，３１１，２３６号明細書
【特許文献３】米国特許出願公開第２０１１／００２９９６９号明細書
【特許文献４】国際特許出願公開ＷＯ２０１５／１３２７５３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は上記従来のメモリモジュールのメモリ技術における問題点に鑑みてなされたものであって、本発明の目的は、メモリオーバープロビジョニング（ｍｅｍｏｒｙ  ｏｖｅｒｐｒｏｖｉｓｉｏｎｉｎｇ）を遂行するためのメモリモジュール及びメモリモジュールを含むメモリシステム並びにメモリシステムの動作方法を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するためになされた本発明によるメモリモジュールは、１つ以上のＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）装置と、ホストコンピュータへのＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）メモリインターフェイスと、メモリオーバープロビジョニングロジック（ｍｅｍｏｒｙ  ｏｖｅｒｐｒｏｖｉｓｉｏｎｉｎｇ  ｌｏｇｉｃ）と、を有し、前記メモリオーバープロビジョニングロジックは、前記１つ以上のＤＲＡＭ装置のメモリ使用量をモニターし、前記１つ以上のＤＲＡＭ装置の圧縮又は重複除去の内の少なくとも１つの比率をホストコンピュータのカーネルドライバーモジュールに提供するよう構成され、前記ホストコンピュータのカーネルドライバーモジュールは、圧縮又は重複除去の内の少なくとも１つの比率に基づいて、前記メモリモジュールの仮想メモリ容量を動的にアップデートするように構成され、前記カーネルドライバーモジュールは、前記圧縮又は重複除去の内の少なくとも１つの比率が減少すれば、システムメモリにメモリページを予約し、前記圧縮又は重複除去の内の少なくとも１つの比率が増加すると、前記システムメモリに予約された前記メモリページをオペレーティングシステムに解放（ｒｅｌｅａｓｅ）して、前記オペレーティングシステムが、前記メモリモジュールの前記仮想メモリ容量に対応するメモリ空間の量を利用することを特徴とする。
【００１０】
上記目的を達成するためになされた本発明によるメモリシステムは、オペレーティングシステム（ＯＳ）とカーネルドライバーモジュールとを含むホストコンピュータと、１つ以上のＤＲＡＭ装置とメモリオーバープロビジョニングロジックとを含むメモリモジュールと、前記ホストコンピュータと前記メモリモジュールとを結合するＤＤＲメモリインターフェイスと、を有し、前記メモリオーバープロビジョニングロジックは、前記１つ以上のＤＲＡＭ装置のメモリ使用量をモニターし、前記１つ以上のＤＲＡＭ装置に書き込まれたデータに基づいて、前記ＤＤＲメモリインターフェイスを介して、前記メモリモジュールの圧縮又は重複除去の内の少なくとも１つの比率を前記ホストコンピュータの前記カーネルドライバーモジュールに提供するよう構成され、前記ホストコンピュータの前記カーネルドライバーモジュールは、前記圧縮又は重複除去の内の少なくとも１つの比率に基づいて前記メモリモジュールの仮想メモリ容量を動的にアップデートするよう構成され、前記カーネルドライバーモジュールは、前記圧縮又は重複除去の内の少なくとも１つの比率が減少すれば、システムメモリにメモリページを予約し、前記圧縮又は重複除去の内の少なくとも１つの比率が増加すると、前記システムメモリに予約された前記メモリページをオペレーティングシステムに解放して、前記オペレーティングシステムが、前記メモリモジュールの前記仮想メモリ容量に対応するメモリ空間の量を利用することを特徴とする。
【００１１】
上記目的を達成するためになされた本発明によるメモリシステムの動作方法は、１つ以上のＤＲＡＭ装置を含み、ＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）メモリインターフェイスを介してホストコンピュータとインターフェイスするメモリモジュールを提供する段階と、前記メモリモジュールの初期仮想メモリ容量を提供する段階と、前記メモリモジュールの前記１つ以上のＤＲＡＭ装置内に格納されたデータの圧縮又は重複除去の内の少なくとも１つの比率に基づいて、前記メモリモジュールに書き込まれたデータのインライン（ｉｎｌｉｎｅ）圧縮又は重複除去の内の少なくとも１つの比率をモニターリングする段階と、前記１つ以上のＤＲＡＭ装置に書き込まれたデータに基づいて、前記メモリモジュールの圧縮又は重複除去の内の少なくとも１つの比率を前記ＤＤＲメモリインターフェイスを介して、前記ホストコンピュータのカーネルドライバーモジュールに提供する段階と、前記圧縮又は重複除去の内の少なくとも１つの比率の変化に基づいて、前記メモリモジュールの仮想メモリ容量を動的にアップデートする段階と、前記圧縮又は重複除去の内の少なくとも１つの比率が減少すると、前記カーネルドライバーモジュールを用いてシステムメモリにメモリページを予約する段階と、前記圧縮又は重複除去の内の少なくとも１つの比率が増加すると、前記システムメモリに予約された前記メモリページをオペレーティングシステムに解放して、前記オペレーティングシステムが、前記メモリモジュールの前記仮想メモリ容量に対応するメモリ空間の量を利用する段階と、を有することを特徴とする。
【発明の効果】
【００１２】
本発明に係るメモリモジュール及びメモリモジュールを含むメモリシステム並びにメモリシステムの動作方法によれば、メモリモジュール内に格納されたデータセットとインライン圧縮及び／又は重複除去効率の変化にしたがって、メモリモジュールの仮想メモリ容量を動的、且つ効率的に拡張するか、或いは縮小することができる。したがって、メモリモジュールのメモリ使用効率が向上するという効果がある。
【図面の簡単な説明】
【００１３】
【図１】本発明の一実施形態に係るメモリシステムの構造を概略的に示すブロック図である。
【図２】本発明の一実施形態に係る動的に拡張可能であり、縮小可能であるシステムメモリを例示的に示す図である。
【図３】本発明の一実施形態に係る圧縮／重複除去に基づくシステムメモリ使用の例示的な機能を説明するためのグラフである。
【図４】本発明の一実施形態に係る例示的なメモリオーバープロビジョニングスキームを説明するためのフローチャートである。
【発明を実施するための形態】
【００１４】
次に、本発明に係るメモリモジュール及びメモリモジュールを含むメモリシステム並びにメモリシステムの動作方法を実施するための形態の具体例を図面を参照しながら説明する。
【００１５】
図面は必ずしも一定な比率で図示されなく、一般的に、類似な構造や機能の要素は図面にわたって例示的な目的のために同様の参照番号で表示する。
図面は本明細書で記述される多様な実施形態の説明を容易にするためのものである。
図面は本明細書に開示された教示のすべての様相を記述しなく、請求項の保護範囲を制限しない。
【００１６】
本明細書で開示された特徴及び教示の各々は拡張可能であり、縮小可能であるメモリオーバープロビジョニング（ｏｖｅｒｐｒｏｖｉｓｉｏｎｉｎｇ）を提供するための他の特徴及び教示と共に又は分離されて使用することができる。
このような追加的な特徴及び教示が分離されるか、或いは結合されて利用される代表的な例は添付した図面を参照して詳細に説明する。
このような詳細な説明は単なる本教示の側面を実施するための技術分野で詳細な知識を有する者を教示するためのものであり、請求項の範囲を制限しない。
したがって、詳細な説明に上述された特徴の組み合わせは広い意味で教示を実施する必要がなくともよく、代わりに本教示、特に代表的な実施形態を説明するために単に教示する。
【００１７】
以下の説明で、説明の目的のみに、特定名称が本発明の完全な理解を提供するために説明される。
しかし、このような特定細部事項は本発明の思想を実施するために必要ではないことは当業者に理解されることができる。
詳細な説明の幾つかの部分はアルゴリズム及びコンピュータメモリ内データビットに対する動作のシンボル表現の側面で提供される。
これらのアルゴリズム説明及び表現は、他の分野の当業者に作業の実体を効果的に伝達するために、データ処理分野の当業者によって使用される。
【００１８】
ここで、アルゴリズムは一般的に望む結果に至る段階に対する一貫性ある順序である。
段階は物理的量の物理的操作が必要であるものである。
一般的に、必須的ではないが、このような量は格納、伝達、結合、比較、及び異なって操作することができる電気又は磁気信号の形態を取る。
このような信号をビット、値、要素、シンボル、特徴、用語、数等として指称することが主に共通的な使用の理由でしばしば便利であることが立証された。
しかし、これら及び類似な用語の全ては適切な物理量と連関され、単なるこのような量に適用される便利なラベルであることを留意しなければならない。
【００１９】
具体的には下の説明から明確であるように、説明で、このような“処理”、“コンピューティング”、“計算”、“決定”、“表示”等のような用語を使用する論議はコンピュータシステム又はコンピュータレジスター及びメモリ内で物理的（電気的）量として現れるデータをコンピュータシステムメモリ又はレジスター又は他の情報ストレージ、伝送又は表示装置内で物理的量として現れる類似の他のデータに操作及び変形する類似の電子コンピューティング装置の活動及び過程を示すことと理解される。
【００２０】
本明細書で説明するアルゴリズムは本質的に任意の特定コンピュータ又は他の装置と関連するものではない。
多様な一般的な目的のシステム、コンピュータサーバー、又は個人用コンピュータは本明細書の教示にしたがうプログラムと共に使用されるか、或いは要求された方法段階を遂行するためのより特殊化された装置を構成することが便利である。
このような多様なシステムのために要求される構造は以下の説明で示す。多様なプログラミング言語が本明細書で記載したような発明の教示を具現するのに使用されてもよいことを理解すべきである。
【００２１】
また、代表的な例に対する多様な特徴及び従属項は本発明の教示に対する有用な追加的な実施形態を提供するために明示的ではない、そして列挙されない方式に結合されることもあり得る。
また、すべての値の範囲又は独立体のグループの暗示はすべての可能な中間値又は当該発明を制限する目的のみならず、本来の開示目的のための中間独立体を開示することが言及される。
また、明示的な基準及び図面に図示された構成要素の形状は本明細書で実施される方式を理解できるよう設計されるが、寸法及び実施形態に示した形状に限定されないことを留意する。
【００２２】
本明細書は、カーネルドライバーモジュールを使用してメモリモジュールの拡張可能であり、縮小可能である（又は、パフアップ（ｐｕｆｆ−ｕｐ）、又はパフダウン（ｐｕｆｆ−ｄｏｗｎ））オーバープロビジョニングを提供する。
「拡張可能であり、縮小可能である」という用語は、格納されたデータの動的に変わるインライン圧縮及び／又は重複除去比率を有するメモリモジュールの物理的容量内の変化を反映するためにメモリモジュールの仮想容量を動的に変えることができることを意味する。
メモリモジュールの仮想メモリ容量は格納されたデータのエラー訂正に基づいて変わる。
【００２３】
例えば、メモリが拡張されたものとしてプロビジョニングされる時、ホストコンピュータに公開（ｅｘｐｏｓｕｒｅ）されたメモリモジュールの仮想メモリ容量はその物理メモリ容量より大きくなる。
メモリモジュールの拡張された仮想メモリ容量は、インライン圧縮／重複除去の効率が低下することによって縮小される。
メモリモジュール内に格納されたデータセットとインライン（ｉｎｌｉｎｅ）圧縮及び／又は重複除去効率の変化によって、メモリモジュールの仮想メモリ容量は動的に拡張されるか、或いは縮小され得る。
【００２４】
本発明のメモリオーバープロビジョニングスキームは簡単であり、拡張可能な（ｓｃａｌａｂｌｅ）解決策を提供してメモリモジュールの仮想メモリ容量を管理することができる。
例えば、ホストコンピュータのオペレーティングシステム（ＯＳ）カーネル（ｋｅｒｎｅｌ）に実質的な変化を作ることとは対照的に、本発明のメモリオーバープロビジョニングスキームは主にカーネルドライバーモジュール内での変化を作ることができる。
メモリ圧縮／重複除去ハードウェアと共にカーネルドライバーモジュールの配置はアプリケーションがメモリモジュールの増加された仮想メモリ容量を使用するように助けることができる。
【００２５】
本発明のメモリオーバープロビジョニングスキームは、システムレベルインラインメモリ圧縮又は重複除去から利用可能である仮想メモリ容量を拡張するか、或いは縮小するための効率的なメカニズム（ｍｅｃｈａｎｉｓｍ）を利用する。
モジュールレベルの圧縮／重複除去機能を有するメモリシステムは、ブート（ｂｏｏｔ）時間の間、メモリモジュールの仮想メモリ容量がメモリモジュールの物理的メモリより高いことをＢＩＯＳに通知する。
このような楽観的な仮定はメモリシステムがそのメモリ容量をオーバープロビジョン（過剰供給）することを可能にする。
【００２６】
しかし、ランタイムの間に、メモリモジュール内に格納された常駐データ（ｒｅｓｉｄｅｎｔ  ｄａｔａ）は圧縮／重複除去をするのに排他的（ｕｎｆｒｉｅｎｄｌｙ）になり、これは予期せぬメモリ不足を引き起こす。
本発明のメモリオーバープロビジョニングスキームは、メモリモジュールの圧縮／重複除去及びマイクロマネージページング／スワッピング（ｍｉｃｒｏｍａｎａｇｅ  ｐａｇｉｎｇ／ｓｗａｐｐｉｎｇ）の詳細を認識し、カーネルシステムのＭＭＵ（Ｍｅｍｏｒｙ  Ｍａｎａｇｅｍｅｎｔ  Ｕｎｉｔ）を変更することができる。
【００２７】
ホストコンピュータのオペレーティングシステムに対する重大な変更を避けるために、本発明のメモリオーバープロビジョニングスキームは拡張可能であるカーネルドライバーモジュールを利用する。
メモリモジュールからのフィードバックと共に、拡張可能であるカーネルドライバーモジュールはメモリモジュールの仮想メモリ容量を動的に調整することができる。
本発明のメモリオーバープロビジョニングスキームは、ハイパーバイザー（ｈｙｐｅｒｖｉｓｏｒ）が仮想マシン（ＶＭ：Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）のメモリを回収する仮想マシン環境のバルーン（ｂａｌｌｏｏｎｉｎｇ）技術と一部の外観上の共通性を示す。
【００２８】
しかし、本発明の一実施形態によれば、インライン圧縮又は重複除去機能を有するメモリシステムは、カーネルドライバーモジュールを利用して動的に変わり、データ依存的な仮想メモリ容量を提供することができる。
本発明のメモリシステムは、ユーザー空間にメモリモジュールの仮想メモリ容量を提供する。
メモリモジュールは圧縮／重複除去効率が低下することによってページを回収（ｒｅｃｌａｉｍ）することができ、効率が増加することによってページを解放（ｒｅｌｅａｓｅ）することができる。
このために、本発明のメモリオーバープロビジョニングスキームはフィードバックループを利用する。
フィードバックループはデータ圧縮／重複除去を管理するのに具現されたロジック（例えば、ＳｏＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ））内のメモリモジュールと通信する。
【００２９】
図１は、本発明の一実施形態に係るメモリシステムの構造を概略的に示すブロック図である。
システム１００はホストコンピュータ１１０、メモリバスを通じてホストコンピュータ１１０と接続されたメモリモジュール１５０を含む。
ホストコンピュータ１１０はオペレーティングシステム（ＯＳ）１１２とカーネルドライバーモジュール１１３とを含む。
また、ホストコンピュータ１１０はユーザー空間上でアプリケーション１１１を駆動する。
【００３０】
一部の実施形態で、カーネルドライバーモジュール１１３はオペレーティングシステム１１２の一部である。
しかし、カーネルドライバーモジュール１１３はオペレーティングシステム１１２のカーネルの一部としてコンパイル（ｃｏｍｐｉｌｅ）されない。
代わりに、カーネルドライバーモジュール１１３はオペレーティングシステム１１２のカーネルから分離的にコンパイルされ、オペレーティングシステム１１２のカーネルから分離的にロードされ、これは、例えばランタイムの中に遂行されることができる。
【００３１】
メモリモジュール１５０は、複数のＤＲＡＭ（１５２ａ〜１５２ｎ）とメモリオーバープロビジョニングロジック（Ｍｅｍｏｒｙ  Ｏｖｅｒｐｒｏｖｉｓｉｏｎｉｎｇ  Ｌｏｇｉｃ）１５１とを含む。
メモリオーバープロビジョニングロジック１５１は、比率を追跡できる多数のハードウェアモジュールを含む。
また、メモリオーバープロビジョニングロジック１５１は、動的に拡張可能であり、縮小可能である仮想メモリ容量をホストコンピュータ１１０に公開する（ｅｘｐｏｓｉｎｇ）入力データを安全に受信、配置するための他のバッファに加えて、管理ポリシー制限テーブルを含む。
【００３２】
本発明の実施形態で、メモリモジュール１５０が複数のＤＲＡＭ（１５２ａ〜１５２ｎ）を含むものとして示した。
但し、本発明のメモリオーバープロビジョニングスキームは、他のタイプのメモリ装置にも適用されることを理解されるべきである。
このようなメモリ装置の例は、フラッシュメモリ、相変化（ｐｈａｓｅ  ｃｈａｎｇｅ）メモリ、ＮＶＤＩＭＭ（Ｎｏｎ−Ｖｏｌａｔｉｌｅ  Ｄｕａｌ  Ｉｎ−ｌｉｎｅ  Ｍｅｍｏｒｙ  Ｍｏｄｕｌｅ）、及びハイブリッドＮＶＤＩＭＭのような不揮発性メモリを含む。但し、本発明はこれに制限されない。
【００３３】
仮想マシンを背景として、たとえホストコンピュータ１１０がゲストオペレーティングシステムによって要求（ｒｅｑｕｅｓｔ）された場合に物理メモリ容量を収容するための物理ページを有しなくとも、ゲストオペレーティングシステムは大きい物理メモリ容量と共に提供することができる。
ホストコンピュータ上でメモリ不足又は可用性（ａｖａｉｌａｂｉｌｉｔｙ）を通信するために、バルーンドライバー（ｂａｌｌｏｏｎ  ｄｒｉｖｅｒ）はゲストＯＳにロード（ｌｏａｄ）される。
ゲストＯＳはホストコンピュータ上で運営されるハイパーバイザー（ｈｙｐｅｒｖｉｓｏｒ）と通信することによって、自分のメモリ容量を拡張させ、縮小させることができる。
【００３４】
一実施形態によれば、本発明のメモリシステムは複数のメモリモジュールを含む。
メモリモジュールのメモリオーバープロビジョニングの各々は、総括的に該当メモリモジュールの拡張されたか、或いは縮小された仮想メモリ容量を報告する。
メモリモジュールに書き込まれたデータの圧縮／重複除去効率にしたがってメモリモジュールの動的に変化する仮想メモリ容量に基づいて、ホストコンピュータのカーネルドライバーモジュールはコンテキスト（ｃｏｎｔｅｘｔ）スイッチング及びページ予約（Ｒｅｓｅｒｖａｔｉｏｎ）を遂行する。
一部の実施形態で、複数のメモリモジュールは１つ以上の圧縮不可能であるメモリモジュール及び１つ以上の圧縮可能なメモリモジュールを含む。
１つ以上の圧縮不可能であるメモリモジュールは、その物理メモリ容量を公開することができる。一方、１つ以上の圧縮可能であるメモリモジュールはその仮想メモリ容量を公開することができる。
【００３５】
図１を参照すると、メモリモジュール１５０のメモリオーバープロビジョニングロジック１５１は、データ重複除去／圧縮の効率を観察し、メモリオーバープロビジョニングのどのレベルが必要であるか否かを決定する。
ホストコンピュータ１１０のオペレーティングシステム１１２は、メモリプロビジョニングをモニターし、管理する必要がない。
カーネルドライバーモジュール１１３と関連したメモリオーバープロビジョニングロジック１５１は、ホストコンピュータ１１０のオペレーティングシステム１１２がメモリモジュール１５０の実際物理メモリ容量を過大評価した時、メモリランナウェイ（ｍｅｍｏｒｙ−ｒｕｎａｗａｙ）状況を避けるために、ページをスワップ（ｓｗａｐ）する安全な方法を補助スワップ装置に提供する。
【００３６】
ホストコンピュータ１１０のシステムメモリ内にロードされたカーネルドライバーモジュール１１３は、メモリオーバープロビジョニングロジック１５１から受信したフィードバックにしたがって、下位の（ｕｎｄｅｒｌｙｉｎｇ）メモリモジュール１５０のメモリ可用性を調査する。
メモリモジュール１５０のメモリオーバープロビジョニングロジック１５１は、ターゲットを拡張するか、或いは縮小するように設定（又は、貢献（ｃｏｎｔｒｉｂｕｔｅ））する。
そして、メモリモジュール１５０のメモリオーバープロビジョニングロジック１５１は、メモリモジュール１５０の仮想メモリ容量に対するフィードバックをカーネルドライバーモジュール１１３に提供する。
カーネルドライバーモジュール１１３によって提供されたメモリモジュール１５０の仮想メモリ容量に対するフィードバックを利用して、オペレーティングシステム１１２はメモリモジュール１５０のメモリ容量のアプリケーション１１１への一貫された観点（ｖｉｅｗ）を提供する。
【００３７】
図２は、本発明の一実施形態に係る動的に拡張可能であり、縮小可能であるシステムメモリを例示的に示す図である。
システムメモリ２００ａ、２００ｂは、各々メモリモジュールの拡張されたメモリ空間及び縮小されたメモリ空間を示す。
メモリモジュールのメモリ空間は予約されたページ（例えば、２０２、２１２）と物理メモリ内で使用可能なページ（例えば、２０１、２１１）とに区分される。
【００３８】
物理メモリ内で使用可能なページ（例えば、２０１、２１１）はホストコンピュータのカーネルドライバーモジュールに公開される。
開始の時に、メモリモジュールのメモリオーバープロビジョニングロジックは、メモリモジュールのオーバープロビジョン（過剰供給）されたメモリ容量を測定する。
カーネルドライバーモジュールによって提供され、測定されたオーバープロビジョンされたメモリ容量を使用して、システムメモリ２００ａのプール（ｐｏｏｌ）が生成される。
【００３９】
圧縮／重複除去効率が良い場合、メモリモジュールの使用可能な物理メモリ２０１は拡大されたものとして公開され、これにしたがって、ホストコンピュータに公開された仮想メモリ容量は使用可能な物理メモリ２０１より大きい。
圧縮／重複除去効率が低下する場合、使用可能な物理メモリ２０１は物理メモリ２１１に縮小される。
アプリケーションが縮小されたメモリ空間を使用することを防ぐために、ホストコンピュータのシステムメモリ内にロードされたカーネルドライバーモジュールはシステムメモリページ２１２を予約する。
メモリ空間が縮小される場合、メモリモジュールの仮想メモリは縮小された物理メモリ２１１に減少され、予約されたページ２１２はシステムメモリ２００ｂの残りのページに対応する。
【００４０】
一実施形態によれば、メモリモジュールに対するメモリオーバープロビジョニングのサイズは図２に示したメモリ圧縮／重複除去の効率を反映するために周期的に制御される。
拡張は、メモリページを予約し、予約されたメモリページ（例えば、２０２）をシステムメモリ（例えば、２００ａ）内に固定して、オペレーティングシステム内に超過メモリ割当が補助ストレージ（例えば、ＳＳＤ（Ｓｏｌｉｄ−Ｓｔａｔｅ  Ｄｒｉｖｅ）やＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ））に交換（ｓｗａｐ  ｏｕｔ）されるようにする。
同様に、メモリモジュールの仮想メモリ容量と一致（ｍａｔｃｈ）させるために、縮小は予約されたページ（例えば、２１２）をオペレーティングシステムに譲渡するか、或いは解放（ｒｅｌｅａｓｅ）する。
割当及び割当解除の速度は安全にページをスワップするために制御することができる。
【００４１】
一実施形態によれば、本発明のメモリオーバープロビジョニングスキームはメモリインターフェイスと独立的に具現され得る。
例えば、メモリモジュール１５０は、ＣＰＵロードストア（ｌｏａｄ−ｓｔｏｒｅｓ）意味論（ｓｅｍａｎｔｉｃｓ）を有するＤＤＲインターフェイス（例えば、ＤＤＲ４）上に在り得る。
このような場合、ホストコンピュータ１１０のメモリコントローラは、オンモジュール（ｏｎ−ｍｏｄｕｌｅ）圧縮／重複除去を収容するために変更されたタイミングを支援する。
【００４２】
例えば、変更されたタイミングは、メモリアクセスレイテンシ及び圧縮／重複除去ロジックを含むことができる。
例えば、重複除去に対しては、変更されたタイミングは、メモリ内容のコピーがシステムメモリ内に存在するか否かを確認し、コピーへのポインターを作るためのレイテンシ（待ち時間）を含むことができる。
他のレイテンシは、圧縮／重複除去ロジックのレイテンシを含むことができる。但し、本発明はこれに制限されない。
【００４３】
他の実施形態で、本発明のメモリオーバープロビジョニングスキームは、ブロックベースアドレッシングされるＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）のような高速のインターフェイス上に実装（ｐｏｐｕｌａｔｅ）され得る。
ＰＣＩｅの場合、ＭＳＩ（Ｍｅｓｓａｇｅ−Ｓｉｇｎａｌｅｄ  Ｉｎｔｅｒｒｕｐｔ）ハンドラー（ｈａｎｄｌｅｒ）は、メモリオーバープロビジョニングのフィードバック情報を通信する。
分離された装置ドライバーは正規非圧縮されたメモリ及び圧縮可能であるメモリに対するアクセスを処理することができる。
いずれの場合でも、持続的なメモリ容量観点（ｖｉｅｗ）を提供するために、カーネルドライバーモジュール１１３はメモリモジュール１５０のメモリオーバープロビジョニングロジック１５１と通信することができる。
【００４４】
ページを予約（拡張）する間に、カーネルドライバーモジュール１１３は、オペレーティングシステム１１２からゼロ化（ｚｅｒｏｅｄ）された予約されたページを要求する。
ゼロ化された予約されたページは、メモリオーバープロビジョニングロジック１５１によるさらに良い圧縮／重複除去を助けることができ、これによってメモリモジュール１５０の使用可能なメモリ容量が増加する。
【００４５】
ＣＰＵロードストアの場合、プロセッサキャッシュを利用してアプリケーションに透過的にデータを変更することによって、ホストコンピュータは再書込み（ｗｒｉｔｅｂａｃｋ）をメモリに遂行することができる。
これは結果的に、メモリに書き込まれたデータの圧縮／重複除去比率を変更することができる。
正確なメモリオーバープロビジョニングを提供するために、カーネルドライバーモジュール１１３は、速く変更されるデータを処理するためにインターフェイス書込み速度に合わせて調査することができる。
その上、仮想メモリ容量の拡張が物理メモリ容量を超過する場合、ページのスワップを強制して、カーネルドライバーモジュール１１３は持続的にデータをスワップするために充分な補助スワップ容量及び速度を保障する必要がある。
拡張／縮小の速度は、例えば、バッファサイズ、メモリサイズ、メモリ書込みの速度等の関連するシステムパラメーターを考慮に入れることができる。
【００４６】
ホストコンピュータの装置ドライバー及びカーネルドライバーは、多様な程度の優先順位を有する。
一実施形態によれば、非常に積極的な（ｅａｇｅｒ）予約を遂行しメモリランナウェイ状況を避けるために、カーネルドライバーモジュール１１３のスケジューリング優先順位を、最も高い可用度（ａｖａｉｌａｂｌｅ  ｄｅｇｒｅｅ）に設定することができる。
一実施形態によれば、メモリオーバープロビジョニングロジック１５１は、実際のメモリ使用量が使用可能なメモリを超過する前にカーネルドライバーモジュール１１３が時間的に拡張することができない予期せぬ場合に、超過されたデータを処理するために、オーバープロビジョニング“バッファ”を含むことができる。
【００４７】
一実施形態によれば、本発明のメモリオーバープロビジョニングスキームは、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）を支援する。
ホストコンピュータのカーネルドライバーモジュールは、オーバープロビジョンされたメモリアクセスと別にＲＤＭＡ（Ｒｅｍｏｔｅ  ＤＭＡ）とＤＭＡを処理することができる。
ＤＭＡの場合、カーネルドライバーモジュールは、そのオーバープロビジョンされた仮想メモリ容量がない単なるその物理メモリ容量のみを表示する。
【００４８】
一実施形態によれば、本発明のメモリオーバープロビジョニングスキームは、ＤＲＡＭの仮想メモリ空間内の匿名（ａｎｏｎｙｍｏｕｓ）と非匿名のページ内にデータの配置を提供する。
カーネルドライバーモジュールをオペレーティングシステムから分離する階層的（ｔｉｅｒｅｄ）メモリシステムは効率的にデータ配置を管理することができる。
メモリ占有が増加するほど、メモリオーバープロビジョニングロジック１５１は、予め定義された機能を利用してオーバープロビジョニング比率を減少することができる。
オーバープロビジョニング比率は、他の理由の中で（ランナウェイメモリ要求からの安全のために）メモリ占有の増加と共に減少する。
【００４９】
図３は、本発明の一実施形態に係る圧縮／重複除去に基づくシステムメモリ使用の例示的な機能を説明するためのグラフである。
図３の例示で、メモリモジュール１５０のメモリオーバープロビジョニングロジック１５１は‘Ｎ’（Ｎ＞１）の予め決定された最大圧縮／重複除去因子（ｆａｃｔｏｒ）を報告することができる。
メモリ占有が増加するほど、メモリ使用量がメモリ使用量閾値に至る場合、カーネルドライバーモジュールと共にメモリオーバープロビジョニングロジック１５１は、オーバープロビジョニング比率を‘１’までに減少させることができる。
一実施形態によれば、メモリ使用量閾値はプログラム可能である。
【００５０】
図４は本発明の一実施形態に係る例示的なメモリオーバープロビジョニングスキームを説明するためのフローチャートである。
メモリモジュールは、メモリオーバープロビジョニングロジックを含む。
メモリシステムがブート（ｂｏｏｔ）した時、メモリオーバープロビジョニングロジックは、初期オーバープロビジョニング予想値（ｅｓｔｉｍａｔｅ）をホストコンピュータのカーネルドライバーに提供する（ステップＳ４０１）。
【００５１】
例えば、メモリモジュールの物理メモリ容量が１２８ＧＢ（Ｇｉｇａ  Ｂｙｔｅ）であるが、メモリオーバープロビジョニングロジックはメモリモジュールの仮想メモリ容量を２５６ＧＢとして公開することができる。
メモリシステムがブートされた後、メモリモジュールのメモリオーバープロビジョニングロジックは、メモリモジュールのメモリ装置（例えば、ＤＲＡＭ）に書き込まれたデータのインライン（ｉｎｌｉｎｅ）圧縮及び／又は重複除去をモニターする（ステップＳ４０２）。
【００５２】
一実施形態によれば、メモリオーバープロビジョニングロジックは、データのインライン圧縮及び／又は重複除去を周期的にモニターする。
圧縮／重複除去効率が変わる場合、メモリオーバープロビジョニングロジックから受信されたフィードバックに基づいて、カーネルドライバーモジュールはホストコンピュータのカーネルドライバーモジュールに公開されたメモリモジュールの仮想メモリ容量を変更するよう決定する（ステップＳ４０３）。
【００５３】
メモリモジュールのアップデートされた仮想メモリ容量は、ホストコンピュータのカーネルドライバーモジュールに公開される（ステップＳ４０４）。
メモリモジュールの仮想メモリ容量と一致させるためにメモリモジュールのアップデートされた仮想メモリ容量に基づいて、カーネルドライバーモジュールはシステムメモリからページを予約するか、或いはオペレーティングシステムにページを解放（ｒｅｌｅａｓｅ）する（ステップＳ４０５）。
【００５４】
本発明のメモリオーバープロビジョニングスキームは、ホストコンピュータのオペレーティングシステム（ＯＳ）に大幅に変更することなく、インライン圧縮／重複除去をメモリモジュール上に展開するための安全で信頼性の高いメカニズムを提供する。
代わりに、使用者アプリケーションに対するメモリモジュールの動的に変化する仮想メモリ容量に基づいて、システムメモリの容量をアップデートできるカーネルドライバーモジュールがロードされる。
メモリ装置（又は、モジュール）の多様なタイプに適応するためにホストコンピュータのソフトウェアスタック（ｓｔａｃｋ）に要求される変化は最小化される。
これはカーネルドライバーモジュールは、ホストコンピュータのオペレーティングシステムの実質的に変更することなく変化を受け入れることができるためである。
【００５５】
一実施形態によれば、本発明のメモリオーバープロビジョニングスキームは、ホストコンピュータのカーネルドライバーモジュール内で実質的に具現することができる。
カーネルドライバーモジュールは、メモリモジュールのメモリオーバープロビジョニングロジックからメモリ可用性を調査する。
メモリモジュールのメモリ可用性に基づいて、メモリモジュールの仮想メモリ容量と一致させるために、カーネルドライバーモジュールはシステムメモリからページを予約するか、或いはオペレーティングシステムにページを解放（ｒｅｌｅａｓｅ）する。
カーネルドライバーモジュールのコンピューティングオーバーヘッド（ｏｖｅｒｈｅａｄ）は、メモリオーバープロビジョニングの周期及び複雑度にしたがって変化する。
最悪のシナリオで、メモリオーバープロビジョニングロジックの安全バッファは物理メモリ容量の１％より小さいサイズである。
【００５６】
メモリオーバープロビジョニングの周期は、メモリインターフェイス（例えば、ＰＣＩｅ及びＤＤＲ４）のタイプとオーバープロビジョニング安全バッファの容量に依存する。
例えば、４ＧＢ／ｓの帯域幅（ｂａｎｄｗｉｄｔｈ）及び１００％の書込み比率を有する４つのスロットを有するＰＣＩｅ装置に対して、大略４ＭＢのデータが１ｍｓ毎に伝送される。
安全バッファがこのようなデータ量を保管できる場合、メモリオーバープロビジョニングのインタラプト（ｉｎｔｅｒｒｕｐｔ）の周期は１ｍｓ又はそれより遅く設定される。
【００５７】
メモリオーバープロビジョニングの複雑度はメモリオーバープロビジョニングのアルゴリズムの複雑度に依存する。
一般的なメモリオーバープロビジョニングのアルゴリズムは１〜１０μｓ掛かる。
メモリオーバープロビジョニングの複雑度に影響するパラメーターには、メモリオーバープロビジョニングの知能（ｉｎｔｅｌｌｉｇｅｎｃｅ）、コンテキストスイッチング（ｃｏｎｔｅｘｔ  ｓｗｉｔｃｈｉｎｇ）、ページ予約、及び他の管理オーバーヘッドを含む。
【００５８】
一実施形態によれば、本発明のメモリオーバープロビジョニングは、実質的にメモリモジュールのメモリオーバープロビジョニングロジック内で具現することができる。
メモリオーバープロビジョニングロジックと共にカーネルドライバーモジュールはどのぐらい多く及び／又はどのぐらい頻繁にメモリモジュールの仮想メモリ容量を拡張するか、或いは縮小するかに対する決定を行う。
メモリモジュールの拡張されるか、或いは縮小された仮想メモリ容量に基づいて、カーネルドライバーモジュールはメモリモジュールの仮想メモリ容量と一致させるためにオペレーティングシステムにページを解放（ｒｅｌｅａｓｅ）するか、或いはシステムメモリからページを予約する。
【００５９】
一実施形態によれば、メモリモジュールは５ｘ帯域幅を有するＤＤＲ４プロトコル上でメモリシステム内に具現することができる。
そして、メモリオーバープロビジョニングに対するオーバーヘッドは５％又はそれより少なく制限することができる。
【００６０】
一実施形態によれば、本発明のメモリオーバープロビジョニングシステムの部分はメモリオーバープロビジョニングロジックのファームウェア内に具現することができる。
メモリオーバープロビジョニングロジックは、ただメモリオーバープロビジョニング要求の大きさのみをカーネルドライバーモジュールに伝送することができる。
他のパラメーター（例えば、オーバープロビジョニング比率、速度、及びトランザクション（ｔｒａｎｓａｃｔｉｏｎ）データ等）を計算するための追加的なロジック無しで、カーネルドライバーモジュールは、メモリオーバープロビジョニングの拡張又は縮小を遂行することができる。
【００６１】
一実施形態によれば、メモリモジュールは、１つ以上のメモリ装置、ホストコンピュータへのメモリインターフェイス、及びメモリオーバープロビジョニングロジックを有する。
メモリオーバープロビジョニングロジックは、１つ以上のメモリ装置のメモリ使用量をモニターし、１つ以上のメモリ装置の圧縮又は重複除去比率の内の少なくとも１つの比率をホストコンピュータのカーネルドライバーモジュールに提供するよう構成される。
ホストコンピュータのカーネルドライバーモジュールは、圧縮又は重複除去比率の内の少なくとも１つの比率に基づいてメモリモジュールの仮想メモリ容量をアップデートするよう構成される。
【００６２】
メモリオーバープロビジョニングロジックは、メモリモジュールのメモリ使用量をモニターし、メモリモジュールの仮想メモリ容量を調整するために、フィードバックループを駆動するよう構成されることが好ましい。
メモリオーバープロビジョニングロジックは、メモリモジュールの仮想メモリ容量をカーネルドライバーモジュールに周期的にアップデートし、報告するよう構成されることが好ましい。
カーネルドライバーモジュールは、ホストコンピュータのシステムメモリ内にロードされ、メモリモジュールのメモリオーバープロビジョニングロジックからメモリ可用性を調査するよう構成される。
メモリインターフェイスは、ＰＣＩｅ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｅｘｐｒｅｓｓ）又はＤＤＲ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ）インターフェイスであることが好ましい。
カーネルドライバーモジュールは、メモリモジュールの仮想メモリ容量と一致（ｍａｔｃｈ）させるために、システムメモリページを予約するか、或いは解放（ｒｅｌｅａｓｅ）し、オペレーティングシステムに使用可能なメモリを制御するよう構成されることが好ましい。
【００６３】
他の実施形態によれば、メモリシステムは、オペレーティングシステム（ＯＳ）とカーネルドライバーモジュールを含むホストコンピュータと、１つ以上のメモリ装置とメモリオーバープロビジョニングロジックとを含むメモリモジュールと、ホストコンピュータとメモリモジュールとを結合するメモリインターフェイスを有する。
メモリオーバープロビジョニングロジックは、１つ以上のメモリ装置のメモリ使用量をモニターし、メモリモジュールの圧縮又は重複除去比率の内の少なくとも１つの比率をホストコンピュータのカーネルドライバーモジュールに提供するよう構成される。
ホストコンピュータのカーネルドライバーモジュールは、圧縮又は重複除去比率の内の少なくとも１つの比率に基づいてメモリモジュールの仮想メモリ容量をアップデートするように構成される。
【００６４】
メモリオーバープロビジョニングロジックは、メモリモジュールのメモリ使用量をモニターし、メモリモジュールの仮想メモリ容量を調整するために、フィードバックループを駆動するよう構成されることが好ましい。
メモリオーバープロビジョニングロジックは、メモリモジュールの仮想メモリ容量をカーネルドライバーモジュールに周期的にアップデートし、報告するよう構成されることが好ましい。
カーネルドライバーモジュールは、ホストコンピュータのシステムメモリ内にロードされ、メモリモジュールのメモリオーバープロビジョニングロジックからメモリ可用性を調査するよう構成されることが好ましい。
メモリインターフェイスは、ＰＣＩｅ又はＤＤＲインターフェイスであることが好ましい。
メモリオーバープロビジョニングロジックは、追加的なページを格納するための安全バッファをさらに含むことが好ましい。
カーネルドライバーモジュールは、メモリモジュールの仮想メモリ容量と一致（ｍａｔｃｈ）させるために、システムメモリページを予約するか、或いは解放（ｒｅｌｅａｓｅ）し、オペレーティングシステムに使用可能なメモリを制御するよう構成されることが好ましい。
【００６５】
その他の実施形態によれば、メモリシステムの動作方法は、
１つ以上のメモリ装置を含むメモリモジュールを提供する段階と、
メモリモジュールの初期仮想メモリ容量を提供する段階と、
メモリモジュールの１つ以上のメモリ装置内に格納されたデータの圧縮又は重複除去比率の内の少なくとも１つの比率に基づいてメモリモジュールに書き込まれたデータのインライン（ｉｎｌｉｎｅ）圧縮又は重複除去比率の内の少なくとも１つの比率をモニターリングする段階と、
メモリモジュールの圧縮又は重複除去比率の内の少なくとも１つの比率をホストコンピュータのカーネルドライバーモジュールに提供する段階と、
メモリモジュールの圧縮又は重複除去比率の内の少なくとも１つの比率に基づいて、メモリモジュールの仮想メモリ容量をアップデートする段階と、を有する。
【００６６】
メモリシステムの動作方法は、メモリモジュールのメモリ使用量をモニターするためのフィードバックループを駆動する段階と、メモリモジュールの仮想メモリ容量を調整する段階と、をさらに有することが好ましい。
メモリシステムの動作方法は、メモリモジュールの仮想メモリ容量をカーネルドライバーモジュールに周期的にアップデートし、報告する段階をさらに有することが好ましい。
メモリシステムの動作方法は、カーネルドライバーモジュールをホストコンピュータのシステムメモリ内にロードする段階と、メモリモジュールのメモリオーバープロビジョニングロジックからメモリ可用性を調査する段階と、をさらに有することが好ましい。
メモリシステムの動作方法は、予約されたページ及び使用可能なメモリに対するページを安全バッファ内に格納する段階をさらに有することが好ましい。
カーネルドライバーモジュールは、メモリモジュールの仮想メモリ容量と一致（ｍａｔｃｈ）させるために、システムメモリページを予約するか、或いは解放（ｒｅｌｅａｓｅ）し、オペレーティングシステムに使用可能なメモリを調節するよう構成されることが好ましい。
以上で、上述した例示的な実施形態は拡張可能であり、縮小可能であるメモリオーバープロビジョニングを提供するための方法及びシステムを具現する多様な実施形態を説明した。
【００６７】
尚、本発明は、上述の実施形態に限られるものではない。本発明の技術的範囲から逸脱しない範囲内で多様に変更実施することが可能である。
【符号の説明】
【００６８】
１００    システム
１１０    ホストコンピュータ
１１１    アプリケーション
１１２    オペレーティングシステム
１１３    カーネルドライバーモジュール
１５０    メモリモジュール
１５１    メモリオーバープロビジョニングロジック
１５２ａ〜１５２ｎ    ＤＲＡＭ
２００ａ、２００ｂ    システムメモリ
【図１】
0006738301.tif 000002
【図２】
0006738301.tif 000003
【図３】
0006738301.tif 000004
【図４】
0006738301.tif 000005