(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-07-05
(54)【発明の名称】システムがサポートする計算エンティティによって共有される物理メモリをオーバーサブスクライブすることによるシステム内のメモリ削減
(51)【国際特許分類】
G06F 12/02 20060101AFI20240628BHJP
G06F 16/13 20190101ALI20240628BHJP
G06F 12/1027 20160101ALI20240628BHJP
【FI】
G06F12/02 510M
G06F16/13 100
G06F12/02 510A
G06F12/1027
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023577866
(86)(22)【出願日】2022-05-26
(85)【翻訳文提出日】2023-12-18
(86)【国際出願番号】 US2022030990
(87)【国際公開番号】W WO2023278077
(87)【国際公開日】2023-01-05
(32)【優先日】2021-07-02
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】シャー,モニッシュ シャンティラル
(72)【発明者】
【氏名】シュー,リサ ルー-フォン
(72)【発明者】
【氏名】バーガー,ダニエル セバスチャン
【テーマコード(参考)】
5B160
5B205
【Fターム(参考)】
5B160AA06
5B160AA12
5B160AB26
5B205KK14
5B205MM36
5B205MM51
5B205UU42
(57)【要約】
計算エンティティの間で共有される物理メモリをオーバーサブスクライブすることによるシステム内のメモリ削減に関する方法及びシステムが提供される。メモリの部分は、第1タイプの第1物理メモリの部分と、システムに関連付けられた論理プールメモリとの組み合わせを含む。論理プールメモリコントローラは、(1)複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡し、(2)計算エンティティに前に割り当てられた論理プールメモリの部分に対応する物理メモリの範囲までのみ第1タイプの第2物理メモリ内の任意の利用可能な空間へデータを書き込むことを書き込み動作に許す、よう構成される。
【特許請求の範囲】
【請求項1】
システムに関連付けられたメモリの部分を計算エンティティに割り当てることであり、前記メモリの前記部分は、第1タイプの第1物理メモリの部分と、前記システムに関連付けられた複数の計算エンティティとともに使用される論理プールメモリの部分との組み合わせを含み、前記論理プールメモリは、前記第1タイプの第2物理メモリにマッピングされ、前記複数の計算エンティティへの割り当てに利用可能であるものとして指示される前記論理プールメモリの量は、前記第1タイプの前記第2物理メモリの量よりも多い、前記割り当てることと、
前記論理プールメモリに関連付けられた論理プールメモリコントローラに対して、前記複数の計算エンティティのいずれかに最初に割り当てられる前記論理プールメモリに関連付けられた全てのページが既知のパターンページであることを示すことと、
前記論理プールメモリコントローラが、前記複数の計算エンティティのいずれかに割り当てられた前記論理プールメモリのページが既知のパターンページであるかどうかの状態と、前記複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡することと、
前記計算エンティティによって開始された書き込み動作に応答して、前記論理プールメモリコントローラが、前記計算エンティティに前に割り当てられた前記論理プールメモリの前記部分に対応する物理メモリの範囲までのみ前記第1タイプの前記第2物理メモリ内の任意の利用可能な空間へのデータの書き込みを許可することと
を有する方法。
【請求項2】
前記システムに関連付けられた前記論理プールメモリの量は、如何なるタイプの物理メモリによっても支援されない既知のパターンページに対応するメモリの量と組み合わされる前記第1タイプの前記第2物理メモリの量に等しい、
請求項1に記載の方法。
【請求項3】
前記複数の計算エンティティのいずれかに割り当てられた前記論理プールメモリの前記ページが既知のパターンページであるかどうかの前記状態と、前記物理メモリアドレス及び前記論理メモリアドレスの間の関係との両方を追跡することは、マッピングテーブルを保持することを含む、
請求項1に記載の方法。
【請求項4】
前記マッピングテーブルは、トランスレーション・ルックアサイド・バッファを使用して実施される、
請求項3に記載の方法。
【請求項5】
前記計算エンティティによる前記第1タイプの前記第1物理メモリの予測される使用に基づいて、前記第1タイプの前記第1物理メモリの前記部分を割り当てることを更に有する、
請求項1に記載の方法。
【請求項6】
前記計算エンティティに割り当てられた前記第1タイプの前記第1物理メモリの使用に関連付けられた利用パターンに基づいて、前記計算エンティティに割り当てられた前記第1タイプの前記第1物理メモリの前記部分の量を動的に変更することを更に有する、
請求項1に記載の方法。
【請求項7】
前記計算エンティティが、前記計算エンティティに割り当てられた前記論理プールメモリの前記部分と、前記計算エンティティに割り当てられた前記第1タイプの前記第1物理メモリの前記部分とを区別することを可能にするよう、ソフトウェアメカニズムを介して、前記計算エンティティに割り当てられた前記論理プールメモリの前記部分をエクスポーズすることを更に有する、
請求項1に記載の方法。
【請求項8】
前記論理プールメモリは、ファブリックマネージャによって管理されている各々のリンクを介して、前記システムに関連付けられた前記論理プールメモリの少なくとも一部を割り当てられている前記複数の計算エンティティのいずれかを実行するプロセッサへ結合される、
請求項1に記載の方法。
【請求項9】
システムであって、
メモリの部分が、第1タイプの第1物理メモリの部分と、前記システムに関連付けられた論理プールメモリの部分との組み合わせを含み、前記論理プールメモリは、前記第1タイプの第2物理メモリにマッピングされ、複数の計算エンティティへの割り当てに利用可能であるものとして指示される前記論理プールメモリの量は、前記第1タイプの前記第2物理メモリの量よりも多い、前記メモリと、
前記システムに関連付けられた前記論理プールメモリへ結合され、(1)前記複数の計算エンティティのいずれかに割り当てられた前記論理プールメモリのページが既知のパターンページであるかどうかの状態と、前記複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡し、(2)計算エンティティによって既知のパターン以外の任意のデータを書き込むよう開始された書き込み動作に応答して、前記書き込み動作が、前記計算エンティティに前に割り当てられた前記論理プールメモリの部分に対応する物理メモリの範囲までのみ前記第1タイプの前記第2物理メモリ内の任意の利用可能な空間へ前記データを書き込むことを可能にする、よう構成される論理プールメモリコントローラと
を有するシステム。
【請求項10】
前記システムに関連付けられた前記論理プールメモリの量は、如何なるタイプの物理メモリによっても支援されない既知のパターンページに対応するメモリの量と組み合わされる前記第1タイプの前記第2物理メモリの量に等しい、
請求項9に記載のシステム。
【請求項11】
前記論理プールメモリコントローラは、前記複数の計算エンティティのいずれかに割り当てられた前記論理プールメモリの前記ページが前記既知のパターンページであるかどうかの前記状態と、前記複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた前記物理メモリアドレス及び前記論理メモリアドレスの間の前記関係との両方を追跡するために、マッピングテーブルを保持するよう更に構成される、
請求項9に記載のシステム。
【請求項12】
前記計算エンティティによる前記第1タイプの前記第1物理メモリの予測される使用に基づいて、前記第1タイプの前記第1物理メモリの前記部分を前記計算エンティティに割り当てるよう構成されるスケジューラを更に有する、
請求項9に記載のシステム。
【請求項13】
前記スケジューラは、前記計算エンティティに割り当てられた前記第1タイプの前記第1物理メモリの使用に関連付けられた利用パターンに基づいて、前記計算エンティティに割り当てられた前記第1タイプの前記第1物理メモリの前記部分の量を動的に変更するよう構成される、
請求項12に記載のシステム。
【請求項14】
前記論理プールメモリコントローラは、前記複数の計算エンティティのいずれかに最初に割り当てられる前記論理プールメモリに関連付けられた全てのページが既知のパターンページであることを前記複数の計算エンティティの夫々に示すよう更に構成される、
請求項9に記載のシステム。
【請求項15】
システムであって、
複数の計算エンティティのうちの1つ以上を実行するよう構成される複数のホストサーバと、
メモリの部分が、第1タイプの第1物理メモリの部分と、前記複数のホストサーバの間で共有される論理プールメモリの部分との組み合わせを含み、前記論理プールメモリは、前記第1タイプの第2物理メモリにマッピングされ、前記複数の計算エンティティへの割り当てに利用可能であるものとして指示される前記論理プールメモリの量は、前記第1タイプの前記第2物理メモリの量よりも多い、前記メモリと、
前記システムに関連付けられた前記論理プールメモリへ結合され、(1)前記複数の計算エンティティのいずれかに割り当てられた前記論理プールメモリのページが既知のパターンページであるかどうかの状態と、前記複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡し、(2)既知のパターン以外の任意のデータを書き込むよう、前記複数のホストサーバのうちのいずれかに関連付けられたプロセッサによって実行される、計算エンティティによって開始された書き込み動作に応答して、前記書き込み動作が、前記計算エンティティに前に割り当てられた前記論理プールメモリの部分に対応する物理メモリの範囲までのみ前記第1タイプの前記第2物理メモリ内の任意の利用可能な空間へ前記データを書き込むことを可能にする、よう構成される論理プールメモリコントローラと
を有するシステム。
【発明の詳細な説明】
【背景技術】
【0001】
多数のユーザ又はテナントは、コンピューティングシステム及び通信システムを含むシステムを共有することがある。コンピューティングシステムは、パブリッククラウド、プライベートクラウド、又はパブリック部分及びプライベート部分の両方を有するハイブリッドクラウドを含み得る。パブリッククラウドは、データの記憶及び管理、アプリケーションの実行、並びにビデオのストリーミング、電子メールのプロビジョニング、オフィス生産性ソフトウェアの提供、又はソーシャルメディアの対応などのコンテンツ又はサービスの配信を含む様々な機能を実行するサーバのグローバルネットワークを含む。パブリッククラウドがインターネット上で公衆にサービスを提供する一方で、ビジネスはプライベートクラウド又はハイブリッドクラウドを使用し得る。プライベートクラウド及びハイブリッドクラウドは両方とも、データセンターに収容されているサーバのネットワークも含む。
【0002】
多数のテナントは、クラウド内のサーバに関連付けられた計算、記憶、及びネットワーキングリソースを使用し得る。例として、異なるテナントに関連付けられた計算エンティティは、一定の量の計算リソース及びメモリリソースを割り当てられ得る。多くのかような状況で、メモリリソースを含む、様々な計算エンティティへの割り当てられているリソースは、十分に利用されていないことがある。基地局を含む通信システムなどの他のシステムでは、メモリリソースの同様の活用不足が起こることがある。
【発明の概要】
【0003】
一例で、本開示は、システムに関連付けられたメモリの部分を計算エンティティに割り当てることを有し、メモリの前記部分は、第1タイプの第1物理メモリの部分と、システムに関連付けられた複数の計算エンティティとともに使用される論理プールメモリの部分との組み合わせを含む、方法に関する。本明細書で使用されるように、「計算エンティティ」という用語は、機能性、仮想マシン、アプリケーション、サービス、マイクロサービス、コンテナ、サーバレスコンピューティング用のユニカーネル、又は前述のものの部分を実装する任意の実行可能コード(ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組み合わせの形をとる。)を包含するが限られない。本明細書で使用されるように、「論理プールメモリ」という用語は、単一のホスト又は複数のホストに対応し得る複数の計算エンティティによって共有されるオーバーコミットされた物理メモリを含むメモリを指す。論理プールメモリは、第1タイプの第2物理メモリにマッピングされてよく、複数の計算エンティティへの割り当てに利用可能であるものとして指示される論理プールメモリの量は、第1タイプの第2物理メモリの量よりも多くてもよい。方法は、論理プールメモリに関連付けられた論理プールメモリコントローラに対して、複数の計算エンティティのいずれかに最初に割り当てられる論理プールメモリに関連付けられた全てのページが既知のパターンページであることを示すことを更に含み得る。方法は、論理プールメモリコントローラが、複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡することを更に含み得る。方法は、計算エンティティによって開始された書き込み動作に応答して、論理プールメモリコントローラが、計算エンティティに前に割り当てられた論理プールメモリの部分に対応する物理メモリの範囲までのみ第1タイプの第2物理メモリ内の任意の利用可能な空間へのデータの書き込みを許可することを更に含み得る。
【0004】
他の例では、本開示は、複数の計算エンティティとともに使用されるメモリを有するシステムであって、メモリの部分が、第1タイプの第1物理メモリの部分と、システムに関連付けられた論理プールメモリの部分との組み合わせを含む、システムに関する。論理プールメモリは、第1タイプの第2物理メモリにマッピングされてよく、複数の計算エンティティへの割り当てに利用可能であるものとして指示される論理プールメモリの量は、第1タイプの第2物理メモリの量よりも多くてもよい。システムは、論理プールメモリへ結合され、(1)複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡し、(2)計算エンティティによって既知のパターン以外の任意のデータを書き込むよう開始された書き込み動作に応答して、書き込み動作が、計算エンティティに前に割り当てられた論理プールメモリの部分に対応する物理メモリの範囲までのみ第1タイプの第2物理メモリ内の任意の利用可能な空間へデータを書き込むことを可能にする、よう構成される論理プールメモリコントローラを更に含み得る。
【0005】
更なる他の例では、本開示は、複数の計算エンティティのうちの1つ以上を実行するよう構成される複数のホストサーバを含むシステムに関する。システムはメモリを更に含んでよく、メモリの部分は、第1タイプの第1物理メモリの部分と、複数のホストサーバの間で共有される論理プールメモリの部分との組み合わせを含む。論理プールメモリは、第1タイプの第2物理メモリにマッピングされてよく、複数の計算エンティティへの割り当てに利用可能であるものとして指示される論理プールメモリの量は、第1タイプの第2物理メモリの量よりも多くてもよい。システムは、システムに関連付けられた論理プールメモリへ結合され、(1)複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡し、(2)既知のパターン以外の任意のデータを書き込むよう、複数のホストサーバのうちのいずれかに関連付けられたプロセッサによって実行される、計算エンティティによって開始された書き込み動作に応答して、書き込み動作が、計算エンティティに前に割り当てられた論理プールメモリの部分に対応する物理メモリの範囲までのみ第1タイプの第2物理メモリ内の任意の利用可能な空間へデータを書き込むことを可能にする、よう構成される論理プールメモリコントローラを更に含み得る。
【0006】
本概要は、詳細な説明において以下で更に説明される概念の一部を簡略化された形で紹介するために設けられている。本概要は、請求態様の重要な特徴又は本質的な特徴を特定するよう意図されたものでも、請求対象の範囲を制限するために使用されるよう意図されたものでもない。
【0007】
本開示は、一例として説明されており、添付の図面によって制限されない。図面中、同じ参照符号は、同様の要素を示すものである。図中の要素は、簡潔さ及び明りょうさのために表されており、必ずしも実寸通りではない。
【図面の簡単な説明】
【0008】
【
図1】一例に従って、論理プールメモリシステムと結合されているホストサーバを含むシステム環境のブロック図である。
【
図2】一例に従って、オーバーサブスクリプションプロセスを示す。
【
図3】一例に従って、オーバーサブスクリプションを許すよう構成された論理プールメモリシステムを含むホストサーバ、機械学習(ML)システム、及びVMスケジューラを含むシステムのブロック図である。
【
図4】一例に従って、メモリのオーバーサブスクリプションを許すよう構成される論理プールメモリシステムのブロック図である。
【
図5】一例に従って、トランスレーション・ルックアサイド・バッファ(TLB)を使用するマッピングテーブルの実施例の図を示す。
【
図6】メモリのオーバーサブスクリプションを許すよう構成される論理プールメモリシステムと結合された複数のホストサーバを含むシステムの例のブロック図を示す。
【
図7】計算エンティティに割り当てられているプールメモリのオーバーサブスクリプションを許す方法の少なくとも一部を実施するシステムの例のブロック図を示す。
【
図8】計算エンティティとともに使用される物理メモリをオーバーサブスクライブする方法の例のフローチャートを示す。
【
図9】計算エンティティとともに使用される物理メモリをオーバーサブスクライブする他の方法の例のフローチャートを示す。
【発明を実施するための形態】
【0009】
本開示で記載されている例は、システムがサポートする計算エンティティの間で共有される物理メモリをオーバーサブスクライブすることによるシステム内のメモリの削減に関する。特定の例は、マルチテナントコンピューティングシステムにおいて仮想マシンとともに使用される物理メモリをオーバーサブスクライブすることに関する。マルチテナントコンピューティングシステムは、パブリッククラウド、プライベートクラウド、又はハイブリッドクラウドであってよい。パブリッククラウドは、データの記憶及び管理、アプリケーションの実行、並びにストリーミングビデオ、電子メール、オフィス生産性ソフトウェア、又はソーシャルメディアなどのコンテンツ又はサービスの配信を含む様々な機能を実行するサーバのグローバルネットワークを含む。サーバ及び他のコンポーネントは、世界中のデータセンターに位置し得る。パブリッククラウドがインターネット上で公衆にサービスを提供する一方で、ビジネスはプライベートクラウド又はハイブリッドクラウドを使用し得る。プライベートクラウド及びハイブリッドクラウドは両方とも、データセンターに収容されているサーバのネットワークも含む。計算エンティティは、データセンターの計算リソース及びメモリリソースを用いて実行され得る。本明細書で使用されるように、「計算エンティティ」という用語は、機能性、仮想マシン、アプリケーション、サービス、マイクロサービス、コンテナ、サーバレスコンピューティング用のユニカーネル、又は前述のものの部分を実装する任意の実行可能コード(ハードウェア、ファームウェア、ソフトウェア、又はこれらの任意の組み合わせの形をとる。)を包含するが限られない。代替的に、計算エンティティは、エッジコンピューティングデバイス、オンプレミスサーバ、又は基地局(5G若しくは6G基地局)などの通信システムを含む他のタイプのシステムに関連付けられたハードウェアで実行されてもよい。
【0010】
本開示の例に従って、計算エンティティは、メモリ使用量が通常、計算エンティティに割り当てられたメモリ以下になる、という仮定の下に、ローカル物理メモリ及び論理プールメモリの組み合わせを割り当てられる。これにより、より多くの計算エンティティがシステムによって追加の物理メモリを配置する必要なしにサポートされ得るので、計算エンティティによるシステム内のインストールされたメモリのオーバーサブスクリプションが可能になる。例として、マルチテナントコンピューティング又は通信システムで、各テナントは、全システムメモリのいくつかの部分を割り当てられる。全てのテナントが同時にメモリのそれらの割り当て全体を使用するわけではないことが観測される。よって、例として、データセンター内のホストサーバは、プールメモリシステムがエクスポーズした論理プールメモリを割り当てられ得る。VMの夫々は、ホストサーバ上でのローカル物理メモリとホストサーバが利用可能な論理プールメモリの一部との組み合わせを割り当てられ得る。論理プールメモリは、如何なる物理メモリによっても支持(backed)されない既知のパターンページと物理プールメモリとの組み合わせであってよい。要するに、本明細書で使用されるように、「論理プールメモリ」(logical pooled memory)という用語は、単一のホスト又は複数のホストに対応し得る複数の計算エンティティによって共有されるオーバーコミットされた物理メモリを含むメモリを指す。この例において、オーバーコミットされた(overcommited)、とは、論理プールメモリが、計算エンティティに利用可能であるものとして指示されるメモリの総量よりも少ない量の物理メモリを有する、ことを意味する。本明細書で使用されるように、「既知のパターンページ」という用語は、0のみ、1のみ、又は値若しくはシンボルのその他の既知のパターンを含む任意のページを指す。VMは最初にローカル物理メモリを使用し、それが使用されると、VMは論理プールメモリの部分にアクセスし得る。マルチテナントコンピューティングシステムにおいて、全てのVMがこのようにしてメモリを割り当てられる場合に、それらは、論理プールメモリを支援している物理プールメモリの割り当て全体を使い果たす可能性が低い。これは、論理プールメモリコントローラの背後にある実際の物理メモリがホストサーバにエクスポーズされている論理プールメモリよりも少なくなり得るからである。これは、翻って、マルチテナントコンピューティングシステム又は通信システムの部分として配置される必要がある物理メモリ(例えば、DRAM)の量の削減を可能にすることができる。
【0011】
論理プールメモリの上記の実施によれば、論理プールメモリの部分のいくらかは使用されないままであるが、論理プールメモリのどの部分が所与の時点で使用されないかを予測することは難しい。そのため、未使用の物理プールメモリをマッピングしないまま、使用中である論理プールメモリ空間が物理プールメモリによって支援されるように、プーリングされた物理メモリを、計算エンティティにエクスポーズされている論理プールメモリに柔軟にマッピングするメカニズムが必要である。ある例では、マッピング機能は、ページマッピングテーブルを使用して実行され得る。他のメカニズムも使用されてよい。更に、いくつかの事例では、メモリの使用は、データを記憶する前にデータを物理プールメモリ内に圧縮することによって、更に最適化されてもよい。データ圧縮が使用される場合、マッピング機能は、圧縮されたメモリページの経過を追うよう更に変更されてもよい。
【0012】
図1は、一例に従って、論理プールメモリシステム180と結合されているホストサーバ(例えば、ホストサーバ110,120、及び130)を含むシステム環境100のブロック図である。各ホストサーバは、いくつかの計算エンティティを実行するよう構成され得る。この例において、ホストサーバ110は、計算エンティティ112(例えば、CE-0、CE-1、及びCE-2)を実行中であってよく、ホストサーバ120は、計算エンティティ122(例えば、CE-3、CE-4、及びCE-5)を実行中であってよく、ホストサーバ130は、計算エンティティ132(例えば、CE-6、CE-7、及びCE-7)を実行中であってよい。論理プールメモリシステム180は論理プールメモリ190を含んでよく、論理プールメモリ190はいくつかのメモリモジュールを含んでよい。
図1には示されていないが、論理プールメモリシステム180は、論理プールメモリコントローラ(後述)を含んでもよい。更に詳細に後で説明されるように、論理プールメモリ190は、論理アドレス空間をサポートするよう構成される物理メモリよりも大きいアドレス空間を含んでもよい。この例において、論理プールメモリ190はメモリモジュール:PM-1、PM-2、及びPM-Mを含み得る。ここで、Mは1よりも大きい整数である。本明細書で使用されるように、「メモリモジュール」という用語は、キャッシュ可能なメモリとして動作することができるメモリ技術に基づいた如何なるメモリも含む。かようなメモリモジュールの例には、デュアル・インライン・メモリモジュール(DIMM)又はシングル・インライン・メモリモジュール(SIMM)が含まれるが限られない。本明細書で使用されるように、「キャッシュ可能なメモリ」という用語は、メモリに関連した読み出し動作により取得されたデータが、次に同じデータがアクセスされるときにメモリキャッシュから取得できるようにメモリキャッシュにコピーされ得る如何なるタイプのメモリも含む。メモリは動的ランダムアクセスメモリ(DRAM)、フラッシュメモリ、静的ランダムアクセスメモリ(SRAM)、相変化メモリ、磁気ランダムアクセスメモリ、又はメモリがキャッシュ可能なメモリとして動作できるようにする任意の他のタイプのメモリ技術であってもよい。
【0013】
引き続き
図1を参照して、ホストサーバ110、120、及び130の夫々は、論理プールメモリ190に含まれているメモリモジュールへリンクにより結合され得る。例として、ホストサーバ110は、リンク142を介してメモリモジュールPM-1と結合され、リンク144を介してメモリモジュールPM-2と結合され、リンク146を介してメモリモジュールPM-Mと結合されるものとして示されている。ホストサーバ120は、リンク152を介してメモリモジュールPM-1と結合され、リンク154を介してメモリモジュールPM-2と結合され、リンク156を介してメモリモジュールPM-Mと結合されるものとして示されている。他の例として、ホストサーバ130は、リンク162を介してメモリモジュールPM-1と結合され、リンク164を介してメモリモジュールPM-2と結合され、リンク166を介してメモリモジュールPM-Mと結合されるものとして示されている。
【0014】
依然として
図1を参照すると、この例において、ファブリックマネージャ170は、各々のホストサーバへのメモリ範囲の割り当てを管理し得る。計算エンティティにサービスを提供するプロセッサ(例えば、CPU)は、ロード又はストア命令を発し得る。ロード又はストア命令は、ローカルメモリ(例えば、計算エンティティを実行するよう構成されるホストサーバのCPUに関連付けられたDRAM)に対する読み出し若しくは書き込み、又は論理プールメモリ190に関連付けられたメモリモジュールへの読み出し/書き込みをもたらしえる。この例において、論理プールメモリ190に関連付けられたメモリモジュールへの読み出し/書き込みをもたらすロード又はストア命令は、ファブリックマネージャ170によって、リンクの1つ(例えば、リンク142、144、又は146)を使用して完了されるトランザクションに変換され得る。一例では、ファブリックマネージャ170は、Compute Express Link規格に基づいたファブリックマネージャを使用して実装されてもよい。
【0015】
引き続き
図1を参照して、計算エンティティ112、122、及び132は、データセンターの部分として含まれ得るクラスタの組を使用して計算、記憶、及びネットワーキングリソースを提供され得る。本開示で使用されるように、「データセンター」という用語は、クラウドサービスプロバイダが所有するデータセンターの一部又は全て、クラウドサービスプロバイダが所有し操作するデータの一部又は全て、サービスプロバイダのカスタマが操作するクラウドサービスプロバイダが所有するデータセンターの一部又は全て、データセンターの任意の他の組み合わせ、単一のデータセンター、あるいは、特定のデータセンター内のいくつかのクラスタを含み得るが限られない。一例では、各クラスタはいくつかの同じサーバを含み得る。よって、クラスタは、特定の数のCPUコア及び特定の量のメモリを含むサーバを含み得る。代替的に、計算エンティティ112、122、及び132は、エッジコンピューティングデバイス、オンプレミスサーバ、又は基地局(例えば、5G若しくは6G基地局)などの通信システムを含む他のタイプのシステムに関連付けられたハードウェアで実行されてもよい。
図1は、システム環境100を、特定の方法で配置されている計算エンティティ及びメモリコンポーネントを含む特定の数のコンポーネントを有するものとして示すが、システム環境100は、別なふうに配置される追加の又はより少ないコンポーネントを含んでもよい。
【0016】
図2は、オーバーサブスクリプションプロセスフローの例を示す。この例は、ホストサーバに関連付けられたハードウェアを使用して実行される例示的な計算エンティティとして仮想マシン(VM)を使用するオーバーサブスクリプションプロセスを表す。更に、この例は、ホストサーバがホストサーバのクラスタを含むデータセンターに位置する、と仮定する。この例は更に、ホストサーバのクラスタがマルチテナントクラウドの部分である、と仮定する。しかし、オーバーサブスクリプションプロセスは、計算エンティティがエッジコンピューティングデバイス、オンプレミスサーバ、又は基地局(例えば、5G若しくは6G基地局)などの通信システムを含む他のタイプのシステムに関連付けられたハードウェアで実行されている場合を含む他の設定で使用されてもよい。VMを初期化するためのユーザからの要求に応答して、VMスケジューラは、ホストサーバに関連付けられたハードウェアリソースを使用した実行のためにVMをスケジューリングし得る。このプロセスの部分として、VMは、特定の計算リソース(例えば、CPU)及びメモリ(例えば、CPUに関連付けられたDRAM)を割り当てられ得る。ホストサーバに関連付けられたメモリは、オーバーサブスクリプション単独で、又はプーリングと組み合わせてオーバーサブスクリプションを使用することによって、より良く利用され得る。例として、メモリは、ほとんどの場合に、VMが、かようなVMによって通常利用されているか、又はかようなVMによる使用のために予測されているメモリのみを使用するという期待により、オーバーサブスクライブされ得る。一例では、VMによるピーク使用の平均は、ローカル物理メモリとしてVMに割り当てられ得る。よって、特定の量のメモリが、かようなメモリが、例えば、ピーク使用量又は他の高メモリ使用シナリオなど、かようなVMに必ずしも利用可能でない場合があること認識しながら、VMに割り当てられ得る。プーリングは、オーバーサブスクリプションに役立つことができ、オーバーサブスクリプションは、それら2つの技術が一緒に使用される場合にプーリングに役立つことができる。これは、プールからのメモリが、オーバーサブスクライブされたメモリを割り当てられたVMに使用され得るからである。
【0017】
依然として
図2を参照すると、VMによる32GBメモリ(210)に対する要求に関する例示的なオーバーサブスクリプションプロセスが示されている。この例において、この要求に応答して、ハイパーバイザ(又はリソースをVMに割り当てるための他のコーディネータ)は、19GBの物理メモリと、論理プールメモリにマッピングされている13GBのメモリとを割り当ててよい。この例において、19GBメモリの割り当ては、要求元のVMによるメモリの予測される使用に基づき得る。この例において、プーリングされたメモリは、128GBの物理プールメモリとともに256GBの論理プールメモリを有し得る。このようにして、プールにマッピングされている13GBのメモリは、256GBの論理プールメモリが追加のVMをサポートする他のホストサーバと共有されるということで、利用可能であってもなくてもよい。19GBの物理メモリと、プーリングされたメモリにマッピングされている13GBのメモリとを割り当てられているVMは、ほとんどの場合に、VMによって実際に使用されるメモリが19GBに満たない(220)ということで、プーリングされたメモリに如何なる要求も出さずに実行できる。代替的に、稀な場合に、VMのメモリ使用は19GBを超える(230)ことがある。かような場合に、追加のメモリが、論理プールメモリ240の中の物理プールメモリ242から割り当てられ得る。オーバーサブスクリプションプロセスの部分として、ハイウォーターマークが物理プールメモリ242の使用に関連付けられてよく、それにより、VMによるこのメモリの使用がハイウォーターマークに近づくとき、特定の軽減プロセスが開始され得る。例として、ハイウォーターマークに達すると、論理プールメモリコントローラは、ページを物理プールメモリ242に格納する前に、それらのページの圧縮を開始し得る。他の例では、物理プールメモリ242は、より高いレイテンシを有し得る追加の物理メモリによってバックアップされ得るので、物理プールメモリ242に関連付けられたメモリよりも安価に配置できる可能性が高い。かような状況で、ハイウォーターマークに達すると、ページはより遅いメモリに書き込まれ得る。
【0018】
計算エンティティが最初に、それに割り当てられている論理プールメモリの部分(例えば、13GB)を使用する前に、それに割り当てられている物理プールメモリの部分(例えば、19GB)を使用することを確かにするために、計算エンティティが物理メモリと論理プールメモリとを区別することを可能にするソフトウェアメモリが使用されてもよい。一例では、Non-Uniform Memory Access(NUMA)ノードをサポートするホストサーバにおいてより良い性能を確保するために、プーリングされたメモリは、VMに対してコンピューティングレス仮想NUMAノードとしてエクスポーズされ得る。これにより、VMはローカル物理メモリと論理プールメモリとを区別できるようになり、より高いレイテンシを有することになる。従って、VMは、まずはローカル物理メモリを使用し続け、それから、それが使い果たされると、VMに対してコンピューティングレス仮想NUMAノードとしてエクスポーズされているプーリングされたメモリの使用を開始し得る。VMがローカル物理メモリと論理プールメモリとを区別することを可能にする他のメカニズムも使用されてよい。
図2は、VMによって要求された合計32GBと256GBの論理プールメモリとによるオーバーサブスクリプションプロセスについて記載しているが、VMは、追加の又はより少ない量のメモリ(例えば、4GBから128GBの間のどこか)を要求してもよい。同様に、論理プールメモリのサイズは、コンピューティングシステムによってサービスを提供される計算エンティティの数に依存して、より小さくても又はより大きくてもよい。更に、
図2は、ローカル物理メモリの量を19GBと、論理プールメモリの量を13GBと記載しているが、これらの量は、計算エンティティティの間で変化してもよい。更に、オーバーサブスクリプションプロセスは、ホストサーバ(又は他のシステム)の間のメモリのプーリングを必要とせず、それは、論理プールメモリを共有する複数の計算エンティティのみを必要とする。
【0019】
図3は、一例に従って、オーバーサブスクリプションを許すよう構成されるリソース330を含むホストサーバ310、機械学習(ML)システム304、VMスケジューラ302を含むシステム300のブロック図である。ホストサーバ310は、ハイパーバイザ320、計算リソース(例えば、CPU-0 332及びCPU-1 338)、ローカルメモリリソース(例えば、ローカルメモリ-0 340及びローカルメモリ-1 342)、ファブリックマネージャ350、及び論理プールメモリシステム360も含み得る。VMスケジューラ302は、マルチテナントクラウドに関連付けられたテナントのいずれかからVMに対する要求を受け取り、VM(例えば、ホストサーバ310上のVM312、VM314、VM316、及びVM318)の配置をスケジューリングするよう構成され得る。この例では、リソース330の夫々は、SoC、コントローラ、プロセッシングコア、メモリモジュール、ASIC、FPGA、CPLD、PLS、シリコンIP、などの1つ以上の使用など、ハードウェア部品として実装されてよい。更に、この例において、VMスケジューラ302、MLシステム304、及びハイパーバイザ320の夫々に関連した機能性は、プロセッサによって実行される場合に、非一時的な媒体に記憶されている命令により実施されてよい。
図3は、VMに関してシステム300を記載しているが、他の計算エンティティも同様にしてシステム300により使用されてよい。更に、VMスケジューラ302は、エッジコンピューティングデバイス、オンプレミスサーバ、又は基地局(例えば、5G若しくは6G基地局)などの通信システムを含む他のタイプのシステムに含まれる計算エンティティからの要求を処理するよう構成されてもよい。
【0020】
MLシステム304は、予測されたメモリ使用量を含むリソース予測をVMスケジューラ302に提供するよう構成され得る。VMの組を配置するための要求がVMスケジューラ302に届き得る。この例において、VMスケジューラ302は、次いで、予測されたメモリ使用量を要求するようMLシステム304にクエリを送信し得る。MLシステム304はメモリ使用量予測を提供し得る。これらの予測を用いて、VMスケジューラ302はメモリリソースをVMに割り当て得る。代替的に、VMが実行のために設置又はスケジューリングされる必要があるたびにVMスケジューラ302がMLシステム304にクエリする必要がないように、VMスケジューラ302はメモリ使用量予測又は他のメモリ使用量情報を提供されてもよい。
図2に関連して先に説明されたように、割り当てられたメモリは、物理メモリ(例えば、ローカルDRAM)と論理プールメモリへのマッピングとの組み合わせであってよい。
【0021】
引き続き
図3を参照して、MLシステム304は、MLシステム304に関連した様々な機能を実行するよう構成された命令を有するいくつかのコンポーネントを含み得る。MLシステム304は、オフライン訓練コンポーネント及びオンライン予測コンポーネントの両方を含み得る。オフライン訓練コンポーネントは、様々な機械学習モデルの訓練、モデルの妥当性検証、及び妥当性検証されたモデルの公開に関与し得る。オンライン予測コンポーネントは、VMによるメモリ使用量に関する予測及びVMに関連した任意の挙動パターンを含む様々な側面に関係がある予測を生成し得る。MLモデルの訓練の前に、MLモデルが入力に基づいてメトリックを予測することを可能にする特徴が選択されてもよい。訓練フェーズは、後方伝播(backward propagation)の使用、又はMLが特定の入力パラメータとパラメータに基づいた特定の予測との間の関係を学習することを可能にする他の技術を含んでもよい。例として、確率的勾配降下法(stochastic gradient descent)を用いて訓練されたニューラルネットワークモデルが、VMなどの計算エンティティのためのメモリ使用量を予測するために使用されてもよい。ベイジアンモデルを含む他のタイプのMLモデルが使用されてもよい。
【0022】
一般に、入力データに基づいて訓練できる教師あり学習アルゴリムを実装することができ、それが訓練されると、訓練に基づいて予測又は処方を行うことができる。線形回帰、回帰用に設定されたサポートベクターマシン(SVM)、回帰用に設定されたランダムフォレスト、回帰用に設定された勾配ブースティングツリー、及びニューラルネットワークなどの学習及び推論技術が使用され得る。線形回帰は、独立変数と従属出力変数との間の過去の関係をモデル化することを含み得る。ニューラルネットワークは、入力層、1つ以上の隠れ層、及び出力層を生成するために使用される人工ニューロンを含み得る。各層は、ニューラルネットワークのオフラインの訓練により取得された係数又は定数の形で表される重みの行列又はベクトルとして符号化され得る。ニューラルネットワークは、回帰型ニューラルネットワーク(RNN)、長・短期記憶(LSTM)ニューラルネットワーク、又はゲート付き回帰型ユニット(GRU)として実装されてもよい。教師あり学習に基づいたモデルによって必要とされる全ての情報は、これらの技術のいずれかに対応するベクトル表現に変換され得る。
【0023】
LSTMを例とすると、LSTMネットワークは、繰り返すRNN層又は他のタイプの層の連続を有し得る。LSTMネットワークの各層は、所与の時間ステップでの入力、例えば、前の時間ステップからの層の状態を消費し、新しい出力又は状態の組を生成し得る。LSTMを使用する場合に、コンテンツの単一のチャンクが単一のベクトル又は複数のベクトルに符号化され得る。例として、単語又は単語の組み合わせ(例えば、フレーズ、センテンス、又は段落)が単一のベクトルとして符号化され得る。各チャンクは、LSTMネットワークの個別的な層(例えば、特定の時間ステップ)に符号化され得る。LSTM層は、次のような式の組を用いて記述され得る:
【数1】
【0024】
この例において、各LSTM層内で、入力及び隠れ状態は、必要に応じて、ベクトル演算(例えば、ドット積、内積、若しくはベクトル加算)又は非線形演算の組み合わせにより処理され得る。機械学習システムに対応する命令は、A/Iプロセッサに対応するハードウェアとして符号化され得る。この場合に、MLシステム304に関連した機能性の一部又は全ては、ハードコード化されるか又はA/Iプロセッサの部分として別なふうに供給され得る。例として、A/Iプロセッサは、必要機能を備えたFPGAを用いて実装されてもよい。
【0025】
他の例では、VMに割り当てられるメモリは動的に変更又は決定され得る。例として、挙動変化は、時間にわたってVMによって処理されるワークロードに対応してもよく、それを使用してメモリ割り当てを動的に変更することができる。挙動変化の一例は、ウェブ検索ワークロード又は他の同様のワークロードにサービスを提供するVMに関連し得る。かようなVMは、日中はワークロードがより多くのリソースを必要とするが、夜間にはそれほど多くのリソースが必要でないという日周パターンを有し得る。一例において、高速フーリエ変換(FFT)アルゴリズムを使用して、VMに関連した挙動の周期性を検出することができる。FFTは、複数の時間スケールで周期性を検出するために使用され得るが、VMのメモリ割り当ては、VMによって扱われるワークロードが特定のパターン、例えば、日周パターンと一致する周期性を持っている場合にのみ動的に変更され得る。周期性分析により、VMが日周パターン又は別のパターンを実行する可能性が高いことを予測するためのMLモデルの訓練においても使用できるグラウンド・トゥルースラベルが生成され得る。他の例では、他の機能(例えば、クラウドサブスクリプションID、VMを作成したユーザ、VMタイプ、VMサイズ、ゲストオペレーティングシステム)も、VMに割り当てられる物理メモリ及びプールされたメモリの範囲を静的又は動的に変更するために使用されてもよい。
【0026】
更なる他の例では、メモリ使用量の予測又は挙動/使用パターンの決定の代わりに、VMは、VMをスケジューリングするための要求に応答してローカル物理メモリを排他的に割り当ててもよい。後の時点で、ホストサーバ(又はホストサーバの集合)に関連付けられたローカル物理メモリが特定の利用レベルに達し始めると、スケジューリングされたVMは、ローカル物理メモリとマッピングされた論理プールメモリとの組み合わせを割り当てられ得る。このようにして、メモリは、現在実行中であるVMに動的に割り当てられ得る。
【0027】
依然として
図3を参照すると、ハイパーバイザ320は、VM312、314、316、及び318を含む仮想マシンを管理し得る。CPU-0 332は1つ以上のプロセッシングコアを含み、CPU-1 338は1つ以上のプロセッシングコアを含み得る。ハイパーバイザ320に対応する命令は、プロセッシングコアのいずれかによって実行される場合に、ハイパーバイザ320によって提供される管理機能を提供し得る。ハイパーバイザ320は、いずれかの所与のVMに関連した如何なるスレッドもそのグループの論理コアに対してのみスケジューリングされることを確かにし得る。CPU-0 332はローカルメモリ-0 340に結合され、CPU-1 338は、他のローカルメモリ-1 342に結合され得る。ローカルメモリ-0 340及びローカルメモリ-1 342の夫々は、1つ以上のメモリモジュールを含み得る。かようなメモリモジュールの例には、デュアル・インライン・メモリモジュール(DIMM)又はシングル・インライン・メモリモジュール(SIMM)が含まれるが限られない。「キャッシュ可能なメモリ」である如何なるメモリタイプも、メモリモジュールを実装するために使用されてよい。本明細書で使用されるように、「キャッシュ可能なメモリ」という用語は、メモリに関連した読み出し動作により取得されたデータが、次に同じデータがアクセスされるときにメモリキャッシュから取得できるようにメモリキャッシュにコピーされ得る如何なるタイプのメモリも含む。メモリは動的ランダムアクセスメモリ(DRAM)、フラッシュメモリ、静的ランダムアクセスメモリ(SRAM)、相変化メモリ、磁気ランダムアクセスメモリ、又はメモリがキャッシュ可能なメモリとして動作できるようにする任意の他のタイプのメモリ技術であってもよい。
【0028】
引き続き
図3を参照して、この例において、CPU-0 332は、ファブリックインターフェース-0 334を介してファブリックマネージャ350に結合され、CPU-1 338は、他のファブリックインターフェース-1 336を介してファブリックマネージャ350に結合され得る。ファブリックマネージャ350は、CPU-0 332及びCPU-1 338に関連したプロセッシングコアによって実行されるVMのいずれかが論理プールメモリシステム360にアクセスすることを可能にし得る。一例において、ホストサーバ310に関連したCPUのいずれかは、ハイパーバイザ320によって設定された論理アドレス空間へのロード又はストア命令を発し得る。ロード又はストア命令は、ローカルメモリ(例えば、ロード又はストア命令を発するCPUに応じてローカルメモリ-0 340又はローカルメモリ-1 342のどちらか一方)への読み出し若しくは書き込み、又は論理プールメモリシステム360に関連した読み出し/書き込みトランザクションをもたらし得る。一例において、ローカルメモリがDRAMであるとすれば、DRAMへのアクセスに関連した関係があるダブル・データ・レート(DDR)プロトコルのいずれかが、CPUによって、ローカルメモリを読み出す/ローカルメモリに書き込むために使用され得る。この例において、論理プールメモリシステム360に関連したメモリモジュールへの読み出し/書き込みをもたらすロード又はストア命令は、ファブリックマネージャ350(又は他の類似したサブシステム)によって、論理プールメモリシステム360に関連付けられたメモリとVMを結合するリンクのいずれかを用いて完了されるトランザクションに変換され得る。読み出し/書き込みトランザクションは、ファブリックマネージャ350及び論理プールメモリシステム360に関連したプロトコルを用いて実行されてよい。論理プールメモリシステム360に関連付けられたメモリモジュールは、DRAMモジュールとして実装される場合に、関係があるDDRプロトコルのいずれかを用いて、論理プールメモリシステム360に関連付けられたコントローラによってアクセスされ得る。
【0029】
一例において、ファブリックマネージャ350は、Compute Express Link(CXL)規格に基づいたファブリックマネージャを使用して実装されてもよい。この例において、論理プールメモリシステム360に関連付けられたメモリモジュールは、Type3 CXLデバイスとして構成されてよい。仮想マシンに対してハイパーバイザ320によってエクスポーズされる論理アドレス空間は、少なくとも、CXLバス/リンクに関連付けられたコントローラによってエクスポーズされたアドレス範囲のサブセットであってよい。よって、この例の部分として、CXL.ioプロトコルに関連したトランザクションは、PCIeに基づいた非コヒーレントI/Oプロトコルであり、メモリデバイスと、論理プールメモリシステム360に含まれるメモリモジュールとCPUとの間のリンクとを設定するために使用され得る。CXL.ioプロトコルは、ホストサーバ310に関連付けられたCPUによって、デバイスの発見、列挙、エラー報告及び管理においても使用されてよい。代替的に、かような設定トランザクションをサポートする任意の他のI/Oプロトコルも使用されてよい。メモリモジュールへのメモリアクセスは、メモリトランザクションをサポートするメモリアクセスプロトコルであるCXL.memプロトコルに関連したトランザクションを介して処理されてもよい。例として、ホストサーバ310のCPUのいずれかに関連したロード命令及びストア命令は、CXL.memプロトコルを介して処理され得る。代替的に、論理プールメモリシステム360に含まれるメモリモジュールに関連した読み出し/書き込みトランザクションへのCPUロード/ストア命令の変換を可能にする任意の他のプロトコルも使用されてよい。
図3は、特定の方法で配置されている特定のコンポーネントを含むホストサーバ310を示しているが、ホストサーバ310は、別なふうに配置される追加の又はより少ないコンポーネントを含んでもよい。例として、
図3は、CPUに結合されたローカルメモリを示しているが、非ローカルメモリがCPUに結合されてもよい。代わりに、CPUは、論理プールメモリシステム360に関連付けられたメモリにのみアクセスし得る。更に、
図3は、単一のホストサーバによってホストされているVMを示しているが、VM312、314、316、及び318は、ホストサーバのグループ(例えば、データセンター内のホストサーバのクラスタ)を用いてホストされてもよい。論理プールメモリシステム360は、ホストサーバの間で共有されてよく、あるいは、各ホストサーバに専用であってもよい。
【0030】
図4は、一例に従って、メモリのオーバーサブスクリプションを許すよう構成される論理プールメモリシステム400のブロック図である。一例において、
図3の論理プールメモリシステム360は論理プールメモリシステム400として実装されてもよい。この例において、論理プールメモリシステム400は、論理プールメモリ410、論理プールメモリコントローラ450、及びプールメモリ制御構造480を含み得る。論理プールメモリ410は、物理プールメモリ412及び既知のパターンページ414を含み得る。物理プールメモリ412は、物理メモリ(例えば、DRAM)を備えたメモリモジュールを含み得る。物理プールメモリ412は論理アドレス空間に対応し得る。既知のパターンページ414は、如何なる物理メモリによっても支援されない論理アドレス空間を表し得る。論理プールメモリコントローラ450は、プールメモリデータ構造480と相互作用することによって、論理プールメモリ410へのアクセスを管理し得る。論理プールメモリコントローラ450は、ハードウェア、ファームウェア、又はソフトウェア命令の任意の組み合わせとして実装されてよい。論理プールメモリコントローラ450に対応する命令は、論理プールメモリシステム400に関連付けられたメモリに記憶されてよい。かような命令は、論理プールメモリシステム400に関連付けられたプロセッサによって実行される場合に、論理プールメモリコントローラ450に関連した機能の少なくとも一部を提供し得る。他の機能は、有限状態機械及び他のロジックを含む、論理プールメモリコントローラ450に関連した制御ロジックによって提供され得る。
【0031】
この例において、プールメモリ制御構造480は、マッピングテーブル482及び物理メモリフリーページリスト484を含み得る。マッピングテーブル482及び物理メモリフリーページリスト484は両方とも、物理プールメモリ412又は他のメモリ(例えば、論理プールメモリコントローラ450に関連付けられたキャッシュ)に記憶され得る。マッピングテーブル482は、物理プールメモリ412に関連付けられた物理アドレス空間及び論理アドレス空間の間のマッピングを保持し得る。マッピングテーブル482はまた、ページが既知のパターンページであるか否かに関してページの状態を追跡し得る。既知のパターンページは、物理プールメモリ412の部分として如何なる割り当てられた物理空間も有さなくてよい。この例において、既知のパターンページに関連付けられた物理メモリアドレスは、マッピングテーブル482において無効と見なされる(該当なし(N/A)と識別される)。圧縮を用いて物理プールメモリ412において追加の空間を自由化する場合に、それもマッピングテーブル482を用いて追跡できる。以下の表1は、例となるマッピングテーブル482を示す。
【表1】
【0032】
表1で上に示されるように、マッピングテーブル482はページ番号によって索引付けされてよい。既知のパターンページのインジケータ(例えば、既知のパターンページのフラグ)が各ページに関連付けられてよい。論理ハイ値(例えば、1)は、ページ番号に対応して物理プールメモリ412において物理メモリ空間が割り当てられていないことを論理プールメモリコントローラ450に示し得る。論理ロー値(例えば、0)は、ページ番号に対応して物理プールメモリ412において物理メモリ空間が割り当てられていることを論理プールメモリコントローラ450に示し得る。論理プールメモリコントローラ450は、ページ番号に関連した任意のステータス変化に基づいて、既知のパターンページのインジケータを変更し得る。VMのスケジューリング又は作成の時点で、ハイパーバイザ(又はホストオペレーティングシステム)は、VMのためのメモリの一部をホストサーバに関連付けられた物理メモリにマッピングし、残りを論理プールメモリ410にマッピングし得る。この時点で、ハイパーバイザ(又はオペレーティングシステム)は、VMに割り当てられている論理プールメモリに関連したページについて既知のパターンページのインジケータを論理ハイ値(例えば、1)にセットするようコマンドを論理プールメモリコントローラ450に発し得る。VMはまた、VMが初期化される時にそれに割り当てられた論理プールメモリに既知のパターンを書き込み得る。論理プールメモリコントローラ450は、既知のパターンを書き込んでいる書き込み動作を、物理メモリがこの時点でVMに割り当てられる必要がないという指示として検出し得る。更に、論理プールメモリコントローラ450は、対応するページに対する既知のパターンページのインジケータがマッピングテーブル482において正確に反映されることを確かにし得る。
【0033】
最初に、論理プールメモリコントローラ450は、VMのための論理プールメモリの全てを既知のパターンページ414にマッピングし得る。新たにスケジューリングされたVMも、VMに割り当てられている論理プールメモリ410に対応する如何なるページもマッピングテーブル482において既知のパターンページとして識別されることを確かにするよう、ハイパーバイザとともに動作し得る。後の時点で、VMがそれに割り当てられたローカル物理メモリの全てを使い果たし、既知でないパターン(例えば、非ゼロ)を論理メモリアドレス空間に書き込み始めるとき、論理プールメモリコントローラ450は、物理プールメモリ412に対応する(論理プールメモリコントローラ450によってエクスポーズされた)論理アドレス空間内からのページをVMに割り当てることを開始し得る。物理メモリフリーページリスト484は、マッピングテーブル482によってマッピングされていない空いている物理プールメモリ412に対応するページのリストを含み得る。以下の表2は、例となる物理メモリフリーページリスト484を示す。この例は、自由に割り当てられる物理プールメモリ412に対応するページをリストアップしている。
【表2】
【0034】
アドレス変換は単一レベルのアドレス変換として記載されているが、アドレス変換はマルチレベルのアドレス変換であってもよく、従って、追加のマッピングテーブルの使用が必要になる場合がある。いずれの場合にも、論理プールメモリコントローラ450は、マッピングテーブルを保持し、既知のパターンページの適切な追跡を確かにして、先に記載されたように、VMに割り当てられるメモリのプーリング及びオーバーサブスクリプションを可能にするよう構成され得る。更に、マッピングテーブル482はページに関連して記載されているが、メモリブロックを含むメモリの他のグルーピングもマッピングテーブル482とともに使用されてもよい。また、マッピングテーブル482の機能性は、プロセッサ及びコントローラに関連付けられたレジスタ又は他の類似したハードウェア構造を用いて実装されてもよい。更に、マッピングテーブル482は、物理プールメモリ412に記憶されるものとして記載されているが、マッピングテーブルの少なくとも一部は、アドレス変換プロセスを加速させるために、論理プールメモリコントローラ450に関連付けられたキャッシュに記憶されてもよい。
【0035】
図5は、一例に従って、トランスレーション・ルックアサイド・バッファ(TLB)を使用するマッピングテーブルの実施例の図を示す。
図4に関連して先に説明されたように、マッピングテーブル482は、論理プールメモリコントローラ450によって、ハイパーバイザ(又は他のソース)から受け取られた論理アドレスを、物理プールメモリ412に関連した物理アドレスに変換するために使用され得る。この例において、論理プールメモリコントローラ520は、トランスレーション・ルックアサイド・バッファ(TLB)530として実装されるキャッシュを含み得る。TLB530は、連想メモリ(CAM)、フルアソシアティブキャッシュ、2ウェイセットアソシアティブキャッシュ、ダイレクトマップ方式キャシュ、又は他のタイプの適切なキャッシュとして実装されてよい。TLB530は、論理プールアドレスから物理プールメモリアドレスへの変換及びページの既知のパターンページのステータスのチェックの両方を達成するよう実装され得る。各アドレス変換要求について、論理プールメモリコントローラ520は最初に、アドレス変換が既にキャッシュされているかどうかを決定するようTLB530をチェックし得る。アドレス変換がTML530にキャッシュされていることが分かる場合に、TLB HIT信号が生成され得る。更に、TLB HIT信号を生じさせたページ番号に対応する物理アドレスが、その物理アドレスに記憶されているデータ又は命令へのアクセスを可能にするために、物理プールメモリ560へ供給され得る。代替的に、アドレス変換がキャッシュされていない場合には、TLB MISS信号が生成され得る。これは次いで、既知のパターンページのフラグが論理真値にセットされない限り、マッピングテーブル562にわたるテーブルウォークをもたらし得る。
図5に示されるように、物理メモリフリーページリスト564も物理プールメモリ560に記憶されてよい。
【0036】
図6は、メモリのオーバーサブスクリプションを許すよう構成された論理プールメモリシステム670に結合されている複数のホストサーバを含むシステム600のブロック図を示す。システム600は、論理プールメモリシステム670に結合されているホストサーバ610、ホストサーバ620、及びホストサーバ630を含み得る。先に説明されたように、各ホストサーバは複数の計算エンティティ(例えば、VM)をホストすることができ、これらはシステム600の異なるテナントによって購入されるか又は別なふうに支払われている場合がある。各サーバは、ローカルメモリ(例えば、
図3のホストサーバ310に関連して記載されたメモリモジュール)を含んでもよく、また、論理プールメモリシステム670に含まれる論理プールメモリの部分であることができる論理プールメモリへのアクセスを有してもよい。先に記載されたように、ファブリックマネージャ(CXLに基づいて実装される。)は、論理プールメモリシステム670に関連付けられた論理プールメモリのサブセットをホスト610、620及び630の夫々にエクスポーズし得る。論理プールメモリシステム670は、先に記載されたのと同様に実装されてよい。
【0037】
ホストサーバ610を介してテナントにスケジューリング又は別なふうに利用可能にされている計算エンティティの夫々は、ローカルメモリ612の部分及びプールされたメモリ614の部分を割り当てられ得る。先に記載されたように、各計算エンティティへの割り当ては、論理プールメモリシステム670によって管理されている論理プールメモリへのオーバーサブスクリプションに基づき得る。この例において、ホストサーバ610によってホストされている各計算エンティティは、リンク616(又はリンクの集合)を介して論理プールメモリシステム670に結合され得る。ホストサーバ620を介してテナントにスケジューリング又は別なふうに利用可能にされている計算エンティティの夫々は、ローカルメモリ622の部分及びプールされたメモリ624の部分を割り当てられ得る。先に記載されたように、ホストサーバ620によってホストされている各計算エンティティへの割り当ては、論理プールメモリシステム670によって管理されている論理プールメモリへのオーバーサブスクリプションに基づき得る。この例において、ホストサーバ620によってホストされている各計算エンティティは、リンク626(又はリンクの集合)を介して論理プールメモリシステム670に結合され得る。ホストサーバ630を介してテナントにスケジューリング又は別なふうに利用可能にされている計算エンティティの夫々は、ローカルメモリ632の部分及びプールされたメモリ634の部分を割り当てられ得る。先に記載されたように、ホストサーバ630によってホストされている各計算エンティティへの割り当ては、論理プールメモリシステム670によって管理されている論理プールメモリへのオーバーサブスクリプションに基づき得る。この例において、ホストサーバ630によってホストされている各計算エンティティは、リンク636(又はリンクの集合)を介して論理プールメモリシステム670に結合され得る。例として、ホストサーバ610、620及び630の夫々のCPUのいずれかに関連したロード及びストア命令は、CXL.memプロトコルにより処理されてよい。代替的に、論理プールメモリシステム670に含まれるメモリモジュールに関連した読み出し/書き込みトランザクションへのCPUロード/ストア命令の変換を可能にする任意の他のプロトコルも使用されてよい。
図6は、特定の方法で配置されている特定のコンポーネントを含むものとしてシステム600を示しているが、システム600は、別なふうに配置される追加の又はより少ないコンポーネントを含んでもよい。
【0038】
図7は、計算エンティティに割り当てられているプールされたメモリのオーバーサブスクリプションを許す方法の少なくとも一部を実装するシステム700のブロック図を示す。システム700は、プロセッサ702、I/Oコンポーネント704、メモリ706、提示コンポーネント708、センサ710、データベース712、ネットワーキングインターフェース714、及びI/Oポート716を含んでよく、これらはバス720を介して相互接続され得る。プロセッサ702は、メモリ706に記憶されている命令を実行し得る。I/Oコンポーネント704は、キーボード、マウス、発話認識プロセッサ、又はタッチスクリーンなどのコンポーネントを含み得る。メモリ706は、不揮発性ストレージ又は揮発性ストレージ(例えば、フラッシュメモリ、DRAM、SRAM、若しくは他のタイプのメモリ)の任意の組み合わせであることができる。提示コンポーネント708は、ディスプレイ、ホログラフィックデバイス、又は他の提示デバイスを含み得る。ディスプレイは、LCD、LED、又は他のタイプのディスプレイなどの任意のタイプのディスプレイであることができる。センサ710は、情報(例えば、収集されたデータ)を検出及び/又は受信するよう構成されたテレメトリ又は他のタイプのセンサを含み得る。センサ710は、情報(例えば、データセンター内のホストサーバによって実行されている様々な計算エンティティによるメモリ使用量)を検出及び/又は受信するよう構成されたテレメトリ又は他のタイプのセンサを含み得る。センサ710は、CPU、メモリ、又は他の記憶コンポーネント、FPGA、マザーボード、基板管理コントローラ、などに関連した条件を検知するよう構成されたセンサを含み得る。センサ710は、ラック、シャーシ、ファン、電源ユニット(PSU)、などに関連した条件を検知するよう構成されたセンサも含み得る。センサ710は、ネットワーク・インターフェース・コントローラ(NIC)、トップ・オブ・ラック(TOR)スイッチ、ミドル・オブ・ラック(MOR)スイッチ、ルータ、電力分配ユニット(PDU)、ラックレベル無停電電源(UPS)システム、などに関連した条件を検知するよう構成されたセンサに含み得る。
【0039】
依然として
図7を参照すると、データベース712は、本明細書に記載の方法の実行に必要な、収集又は記録されたデータのいずれかを格納するために使用され得る。データベース712は、分散データベースの集合として、又は単一のデータベースとして実装され得る。ネットワークインターフェース714は、イーサネット(登録商標)、セルラー無線、ブルートゥース(登録商標)無線、UWB無線、又は他の種類の無線若しくは有線通信インターフェースなどの通信インターフェースを含み得る。I/Oポート716は、イーサネットポート、光ファイバポート、無線ポート、又は他の通信ポート若しくは診断ポートを含み得る。
図7は、特定の方法で配置され結合された特定の数のコンポーネントを含むものとしてシステム700を示しているが、別なふうに配置され結合されたより少ない又は追加のコンポーネントを含んでもよい。更に、システム700に関連した機能性は、必要に応じて分散されてもよい。
【0040】
図8は、計算エンティティとともに使用される物理メモリをオーバーサブスクライブする方法の例のフローチャート800を示す。一例において、この方法に関連したステップは、先に記載されたシステムの様々なコンポーネントによって実行され得る。ステップ810は、システムに関連付けられたメモリの部分を計算エンティティに割り当てることを含むことができ、メモリの部分は、第1タイプの第1物理メモリの部分と、システムに関連付けられた論理プールメモリの部分との組み合わせを有する。論理プールメモリは、第1タイプの第2物理メモリにマッピングされ、複数の計算エンティティへの割り当てに利用可能であるものとして指示される論理プールメモリの量は、第1タイプの第2物理メモリの量よりも多い。
図2に関して先に記載されたように、計算エンティティの一種である仮想マシンは、19GBの物理メモリ(例えば、CPUのためのローカルメモリとして構成されたDRAMを含むメモリモジュール)と、DRAMを含むメモリモジュールであることもできる
図2の物理プールメモリ242を含む
図2の論理プールメモリ240の部分であることができる13GBの論理プールメモリとを割り当てられ得る。本明細書で使用されるように、「第1タイプ」というフレーズ中で使用される「タイプ」という用語は、メモリがキャッシュ可能なメモリであるか否かを指す。先に記載されたように、「キャッシュ可能なメモリ」という用語は、メモリに関連した読み出し動作により取得されたデータが、次に同じデータがアクセスされるときにメモリキャッシュから取得できるようにメモリキャッシュにコピーされ得る如何なるタイプのメモリも含む。メモリは動的ランダムアクセスメモリ(DRAM)、フラッシュメモリ、静的ランダムアクセスメモリ(SRAM)、相変化メモリ、磁気ランダムアクセスメモリ、又はメモリがキャッシュ可能なメモリとして動作できるようにする任意の他のタイプのメモリ技術であってもよい。要するに、第1タイプの第1物理メモリ及び第1タイプの第2物理メモリは、キャッシュ可能なタイプである必要があるが、それらは他方で異なるタイプであってもよい(例えば、DRAM対相変化メモリ、又はSRAM対DRAM)。
【0041】
ステップ820は、論理プールメモリに関連付けられた論理プールメモリコントローラに対して、複数の計算エンティティのいずれかに最初に割り当てられる論理プールメモリに関連付けられた全てのページが既知のパターンページであることを示すことを含むことができる。例として、ハイパーバイザ(例えば、
図3のハイパーバイザ320)は、最初に割り当てられたページのステータスを既知のパターンページ(例えば、既知のパターンページ414)として論理プールメモリコントローラ(例えば、
図4の論理プールメモリコントローラ450)に示し得る。
【0042】
ステップ830は、論理プールメモリコントローラが、複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡することを含むことができる。この例において、このステップの部分として、
図4及び
図5に関連して先に説明されたように、論理プールメモリコントローラ(例えば、
図4の論理プールメモリコントローラ450)は、ページのステータス(既知のパターンページか否か)、及び物理メモリ(例えば、
図4の物理プールメモリ412)内の物理アドレスとページ番号との間の関係を、マッピングテーブル(例えば、
図4のマッピングテーブル482)を用いて追跡し得る。先に説明されたように、論理プールメモリへのアクセスを加速させるために、マッピングテーブルの少なくとも一部は、トランスレーション・ルックアサイド・バッファとして実装されてもよい。更に、マッピングテーブル(又は類似の構造)はレジスタを用いて実装されてもよい。
【0043】
ステップ840は、計算エンティティによって開始された書き込み動作に応答して、論理プールメモリコントローラが、計算エンティティに前に割り当てられた論理プールメモリの部分に対応する物理メモリの範囲までのみ第1タイプの第2物理メモリ内の任意の利用可能な空間へのデータの書き込みを許可することを含むことができる。先に説明されたように、計算エンティティ(例えば、VM)が、それに割り当てられたローカル物理メモリの全てを使い果たし、既知でないパターンを論理メモリアドレス空間に書き込み始めるとき、ハイパーバイザは、物理メモリ(例えば、
図4の物理プールメモリ412)に対応する(論理プールメモリコントローラ450によってエクスポーズされた)論理アドレス空間内からのページを計算エンティティに割り当てることを開始し得る。論理プールメモリコントローラは、マッピングテーブルによってマッピングされていない空いているページにアクセスためにフリーページリスト(例えば、
図4の物理メモリフリーページリスト484)にアクセスし得る。更に、先に説明されたように、計算エンティティは、前に計算エンティティに割り当てられた(例えば、
図2に関して記載された例では13GB)よりも多く、論理プールメモリコントローラによって管理されている物理メモリを割り当てられない場合がある。この方法により、より多くの計算エンティティがシステムによって追加の物理メモリ(例えば、DRAM)を配置する必要なしにサポートされ得るので、計算エンティティによるシステム内のインストールされたメモリのオーバーサブスクリプションが可能になる。
【0044】
図9は、計算エンティティとともに使用される物理メモリをオーバーサブスクライブする他の方法の例のフローチャート900を示す。一例において、この方法に関連したステップは、先に記載されたシステムの様々なコンポーネントによって実行され得る。ステップ910は、システムに関連付けられたメモリの部分を計算エンティティに割り当てることを含むことができ、メモリの部分は、第1タイプの第1物理メモリの部分と、システムに関連付けられた論理プールメモリの部分との組み合わせを有する。論理プールメモリは、第1タイプの第2物理プールメモリにマッピングされ得、複数の計算エンティティへの割り当てに利用可能であるものとして指示される論理プールメモリの量は、第1タイプの第2物理プールメモリの量よりも多くてもよい。
図2に関して先に記載されたように、計算エンティティの一種である仮想マシンは、19GBの物理メモリ(例えば、CPUのためのローカルメモリとして構成されたDRAMを含むメモリモジュール)と、DRAMを含むメモリモジュールであることもできる
図2の物理プールメモリ242を含む
図2の論理プールメモリ240の部分であることができる13GBの論理プールメモリとを割り当てられ得る。例として、論理プールメモリは、
図6の論理プールメモリシステム670の部分として含まれる論理プールメモリであってよく、物理プールメモリは、
図6の論理プールメモリシステム670の部分として含まれる物理メモリ(例えば、DRAM)に対応してもよい。
【0045】
ステップ920は、論理プールメモリに向けられた如何なるロード又はストア命令も、複数の計算エンティティの夫々と、第1タイプの第2物理プールメモリの部分として含まれる物理メモリデバイスの夫々との間の各々のリンクを介した完了のために、メモリトランザクションに変換することを含み得る。一例において、先に説明されたように、Compute Express Link(CXL)仕様に基づいたファブリックマネージャを用いて実装されるファブリックマネージャ(例えば、
図3のファブリックマネージャ350又は
図6のファブリックマネージャ650)が、ロード及びストア命令を、CXL仕様に関連したトランザクションに変換し得る。計算エンティティにエクスポーズされた論理アドレス空間は、少なくとも、CXLバス/リンクに関連したコントローラによってエクスポーズされたアドレス範囲のサブセットであってよい。
【0046】
ステップ930は、論理プールメモリに関連付けられた論理プールメモリコントローラに対して、複数の計算エンティティのいずれかに最初に割り当てられる論理プールメモリに関連付けられた全てのページが既知のパターンページであることを示すことを含むことができる。例として、ハイパーバイザ(例えば、
図3のハイパーバイザ320、又は
図6のホストサーバ610、620及び630のいずれかに関連付けられたハイパーバイザ)は、最初に割り当てられたページのステータスを既知のパターンページ(例えば、既知のパターンページ414)として論理プールメモリコントローラ(例えば、
図4の論理プールメモリコントローラ450)に示し得る。ハイパーバイザの組み合わせも、共有されている論理プールメモリを管理する複数のハイパーバイザを有するコンピューティングシステム又は通信システムによってサポートされる計算エンティティへのメモリ割り当てを管理するよう互いに協調し得る。
【0047】
ステップ940は、論理プールメモリコントローラが、複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡することを含むことができる。この例において、このステップの部分として、
図4~
図6に関連して先に説明されたように、論理プールメモリコントローラ(例えば、
図4の論理プールメモリコントローラ450)は、ページのステータス(既知のパターンページか否か)、及び物理メモリ(例えば、
図4の物理プールメモリ412)内の物理アドレスとページ番号との間の関係を、マッピングテーブル(例えば、
図4のマッピングテーブル482)を用いて追跡し得る。先に説明されたように、論理プールメモリへのアクセスを加速させるために、マッピングテーブルの少なくとも一部は、トランスレーション・ルックアサイド・バッファとして実装されてもよい。更に、マッピングテーブル(又は類似の構造)はレジスタを用いて実装されてもよい。
【0048】
ステップ950は、計算エンティティによって既知のパターン以外の任意のデータを書き込むために開始された書き込み動作に応答して、論理プールメモリコントローラが、計算エンティティに前に割り当てられた論理プールメモリの部分に対応する物理メモリの範囲までのみ第1タイプの第2物理プールメモリ内の任意の利用可能な空間へのデータの書き込みを許可することを含むことができる。先に説明されたように、計算エンティティ(例えば、VM)が、それに割り当てられたローカル物理メモリの全てを使い果たし、既知でないパターンを論理メモリアドレス空間に書き込み始めるとき、ハイパーバイザは、物理メモリ(例えば、
図4の物理プールメモリ412、又は
図6の論理プールメモリシステム670に関連付けられた物理プールメモリ)に対応する(論理プールメモリコントローラ450によってエクスポーズされた)論理アドレス空間内からのページを計算エンティティに割り当てることを開始し得る。論理プールメモリコントローラは、マッピングテーブルによってマッピングされていない空いているページにアクセスためにフリーページリスト(例えば、
図4の物理メモリフリーページリスト484)にアクセスし得る。更に、先に説明されたように、計算エンティティは、前に計算エンティティに割り当てられた(例えば、
図2に関して記載された例では13GB)よりも多く、論理プールメモリコントローラによって管理されている物理メモリを割り当てられない場合がある。この方法によっても、より多くの計算エンティティがシステムによって追加の物理メモリ(例えば、DRAM)を配置する必要なしにサポートされ得るので、計算エンティティによるシステム内のインストールされたメモリのオーバーサブスクリプションが可能になる。
【0049】
まとめると、本開示は、システムに関連付けられたメモリの部分を計算エンティティに割り当てることを有し、メモリの部分が、第1タイプの第1物理メモリの部分と、システムに関連付けられた複数の計算エンティティとともに使用される論理プールメモリの部分との組み合わせを有する、方法に関係がある。論理プールメモリは、第1タイプの第2物理メモリにマッピングされてよく、複数の計算エンティティへの割り当てに利用可能であるものとして指示される論理プールメモリの量は、第1タイプの第2物理メモリの量よりも多くてもよい。方法は、論理プールメモリに関連付けられた論理プールメモリコントローラに対して、複数の計算エンティティのいずれかに最初に割り当てられる論理プールメモリに関連付けられた全てのページが既知のパターンページであることを示すことを更に含み得る。方法は、論理プールメモリコントローラが、複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡することを更に含み得る。方法は、計算エンティティによって開始された書き込み動作に応答して、論理プールメモリコントローラが、計算エンティティに前に割り当てられた論理プールメモリの部分に対応する物理メモリの範囲までのみ第1タイプの第2物理メモリ内の任意の利用可能な空間へのデータの書き込みを許可することを更に含み得る。
【0050】
この方法で、システムに関連付けられた論理プールメモリの量は、如何なるタイプの物理メモリによっても支援されない既知のパターンページに対応するメモリの量と組み合わされる第1タイプの前記第2物理メモリの量に等しくなり得る。複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡することは、マッピングテーブルを保持することを含み得る。一例において、マッピングテーブルは、トランスレーション・ルックアサイド・バッファを使用して実施されてよい。
【0051】
方法は、計算エンティティによる第1タイプの第1物理メモリの予測される使用に基づいて、第1タイプの第1物理メモリの部分を割り当てることを更に含んでもよい。方法は、計算エンティティに割り当てられた第1タイプの第1物理メモリの使用に関連付けられた利用パターンに基づいて、計算エンティティに割り当てられた第1タイプの第1物理メモリの部分の量を動的に変更することを更に含んでもよい。
【0052】
方法は、計算エンティティが、計算エンティティに割り当てられた論理プールメモリの部分と、計算エンティティに割り当てられた第1タイプの第1物理メモリの部分とを区別することを可能にするよう、ソフトウェアメカニズムを介して、計算エンティティに割り当てられた論理プールメモリの部分をエクスポーズすることを更に含んでもよい。論理プールメモリは、ファブリックマネージャによって管理されている各々のリンクを介して、システムに関連付けられた論理プールメモリの少なくとも一部を割り当てられている複数の計算エンティティのいずれかを実行するプロセッサへ結合され得る。
【0053】
他の例では、本開示は、複数の計算エンティティとともに使用されるメモリを有するシステムにおいて、メモリの部分が、第1タイプの第1物理メモリの部分と、システムに関連付けられた論理プールメモリの部分との組み合わせを有する、システムに関係がある。論理プールメモリは、第1タイプの第2物理メモリにマッピングされ得、複数の計算エンティティへの割り当てに利用可能であるものとして指示される論理プールメモリの量は、第1タイプの前記第2物理メモリの量よりも多くてもよい。システムは、論理プールメモリへ結合され、(1)複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡し、(2)計算エンティティによって既知のパターン以外の任意のデータを書き込むよう開始された書き込み動作に応答して、書き込み動作が、計算エンティティに前に割り当てられた論理プールメモリの部分に対応する物理メモリの範囲までのみ第1タイプの第2物理メモリ内の任意の利用可能な空間へデータを書き込むことを可能にする、よう構成される論理プールメモリコントローラを更に含み得る。
【0054】
システムの部分として、システムに関連付けられた論理プールメモリの量は、如何なるタイプの物理メモリによっても支援されない既知のパターンページに対応するメモリの量と組み合わされる第1タイプの第2物理メモリの量に等しくなり得る。論理プールメモリコントローラは、複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡するために、マッピングテーブルを保持するよう更に構成され得る。
【0055】
システムの部分として、一例において、計算エンティティによる第1タイプの第1物理メモリの予測される使用に基づいて、第1タイプの第1物理メモリの部分を割り当てるよう、スケジューラが構成され得る。スケジューラはまた、計算エンティティに割り当てられた第1タイプの第1物理メモリの使用に関連付けられた利用パターンに基づいて、計算エンティティに割り当てられた第1タイプの第1物理メモリの部分の量を動的に変更するよう構成され得る。論理プールメモリコントローラは、複数の計算エンティティのいずれかに最初に割り当てられる論理プールメモリに関連付けられた全てのページが既知のパターンページであることを複数の計算エンティティの夫々に示すよう更に構成され得る。
【0056】
更なる他の例では、本開示は、複数の計算エンティティのうちの1つ以上を実行するよう構成される複数のホストサーバを含むシステムに関係がある。システムは、メモリを更に含むことができ、メモリの部分は、第1タイプの第1物理メモリの部分と、複数のホストサーバの間で共有される論理プールメモリの部分との組み合わせを有する。論理プールメモリは、第1タイプの第2物理メモリにマッピングされ、複数の計算エンティティへの割り当てに利用可能であるものとして指示される論理プールメモリの量は、第1タイプの第2物理メモリの量よりも多くてもよい。システムは、システムに関連付けられた論理プールメモリへ結合され、複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡し、(2)既知のパターン以外の任意のデータを書き込むよう、複数のホストサーバのうちのいずれかに関連付けられたプロセッサによって実行される、計算エンティティによって開始された書き込み動作に応答して、書き込み動作が、計算エンティティに前に割り当てられた論理プールメモリの部分に対応する物理メモリの範囲までのみ第1タイプの第2物理メモリ内の任意の利用可能な空間へデータを書き込むことを可能にする、よう構成される論理プールメモリコントローラを更に含み得る。
【0057】
システムの部分として、システムに関連付けられた論理プールメモリの量は、如何なるタイプの物理メモリによっても支援されない既知のパターンページに対応するメモリの量と組み合わされる第1タイプの第2物理メモリの量に等しくなり得る。論理プールメモリコントローラは、複数の計算エンティティのいずれかに割り当てられた論理プールメモリのページが既知のパターンページであるかどうかの状態と、複数の計算エンティティのいずれかへの任意の割り当てられている論理プールメモリに関連付けられた物理メモリアドレス及び論理メモリアドレスの間の関係との両方を追跡するために、マッピングテーブルを保持するよう更に構成され得る。
【0058】
システムの部分として、一例において、計算エンティティによる第1タイプの第1物理メモリの予測される使用に基づいて、第1タイプの第1物理メモリの部分を割り当てるよう、スケジューラが構成され得る。スケジューラはまた、計算エンティティに割り当てられた第1タイプの第1物理メモリの使用に関連付けられた利用パターンに基づいて、計算エンティティに割り当てられた第1タイプの第1物理メモリの部分の量を動的に変更するよう構成され得る。論理プールメモリコントローラは、複数の計算エンティティのいずれかに最初に割り当てられる論理プールメモリに関連付けられた全てのページが既知のパターンページであることを複数の計算エンティティの夫々に示すよう更に構成され得る。
【0059】
本明細書で説明される方法、モジュール、及びコンポーネントは単なる例示であることが理解されるべきである。代替的に、又は追加的に、本明細書で記載される機能は、少なくとも部分的に、1つ以上のハードウェアロジックコンポーネントによって実行できる。例えば、制限なしに、使用できるハードウェアロジックコンポーネントの例示的なタイプには、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定用途向け標準製品(ASSP)、システムオンチップシステム(SOC)、複合プログラム可能ロジックデバイス(CPLD)、などがある。抽象的だが、それでも明確な意味で、同じ機能を達成するためのコンポーネントの如何なる配置も、望ましい機能が達成されるように有効に“関連付け”られる。従って、特定の機能を達成するよう本明細書で組み合わされている任意の2つのコンポーネントは、アーキテクチャ又は中間コンポーネントに関係なく、望ましい機能が達成されるように互いに“関連付けられている”と見なすことができる。同様に、そのように関連付けられた任意の2つのコンポーネントは、望ましい機能を達成するために互いに“動作可能に接続”又は“結合”されているものとして見なすこともできる。装置、構造、システム、又は機能の任意の他の実装であり得るコンポーネントが、別のコンポーネントに結合されるものとして本明細書に記載されているという理由だけで、コンポーネントが必ずしも別個のコンポーネントであることを意味するものではない。例として、別のコンポーネントBに結合されていると説明されているコンポーネントAは、コンポーネントBのサブコンポーネントである場合もあれば、コンポーネントBがコンポーネントAのサブコンポーネントである場合も、コンポーネントA及びBが他のコンポーネントCの結合されたサブコンポーネントである場合もある。
【0060】
本開示で記載されるいくつかの例に関連した機能は、非一時的な媒体に記憶されている命令も含むことができる。本明細書で使用される「非一時的な媒体」という用語は、マシンを特定の方法で動作させるデータ及び/又は命令を記憶している如何なる媒体も指す。実例となる非一時的な媒体には、不揮発性媒体及び/又は揮発性媒体がある。不揮発性媒体には、例えば、ハードディスク、ソリッドステートドライブ、磁気ディスク若しくはテープ、光ディスク若しくはテープ、フラッシュメモリ、EPROM、NVRAM、PRAM、又は他のかような媒体、あるいは、かような媒体のネットワーク化されたバージョンがある。揮発性媒体には、例えば、DRAM、SRAM、キャッシュ、又は他のかような媒体などの動的なメモリがある。非一時的な媒体は、伝送媒体とは異なるが、伝送媒体とともに使用できる。伝送媒体は、データ及び/又は命令をマシンとの間で転送するために使用される。実例となる伝送媒体には、同軸ケーブル、光ファイバケーブル、銅線、及び電波などの無線媒体がある。
【0061】
更に、当業者であれば、上記の動作の機能の間の境界は例示に過ぎないことを認識するであろう。複数の動作の機能は単一の動作にまとめられてもよく、及び/又は単一の動作の機能は追加の動作に分配されてもよい。更に、代替の実施形態は、特定の動作の複数のインスタンスを含んでもよく、動作の順序は、様々な他の実施形態で変更されてもよい。
【0062】
本開示は具体例を提供するが、様々な修正及び変更が、以下で特許請求の範囲において記載されている本開示の範囲から外れずに行われ得る。従って、明細書及び図面は、限定の意味ではなくむしろ例示の意味で見なされるべきである、全てのかような修正は、本開示の範囲内に含まれるよう意図される。具体例に関して本明細書で記載される課題に対する如何なる利点、効果、又は解決法も、いずれか又は全ての請求項の重要な、必要な、又は必須の特徴又は要素として解釈されることを意図したものではない。
【0063】
更に、本明細書で使用される「1つの」(a又はan)という用語は、1つ以上として定義される。また、特許請求の範囲中の「少なくとも1つ」や「1つ以上」などの導入句の使用は、同じクレームが「1つ以上」又は「少なくとも1つ」という導入句と不定冠詞(例えば、a又はan)とを含む場合でさえ、不定冠詞(a又はan)による他のクレーム要素の導入が、そのような導入されたクレーム要素を含む任意の特定のクレームを、かような要素を少なくも1つしか含まない発明に制限することを暗示するものとして解釈されるべきではない。同じことは、定冠詞の使用についても当てはまる。
【0064】
別なふうに述べられない限り、「第1」及び「第2」などの用語は、そのような用語が記載する要素どうしを任意に区別するために使用される。よって、これらの用語は、斯様なようその時間的な又は他の優先順位を示すよう必ずしも意図されない。
【国際調査報告】