IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ マイクロソフト テクノロジー ライセンシング,エルエルシーの特許一覧

特表2023-533445メモリモジュールの温度に基づくクラウドコンピューティングシステムにおけるメモリ割り当ておよびメモリ書き込みリダイレクト
<>
  • 特表-メモリモジュールの温度に基づくクラウドコンピューティングシステムにおけるメモリ割り当ておよびメモリ書き込みリダイレクト 図1
  • 特表-メモリモジュールの温度に基づくクラウドコンピューティングシステムにおけるメモリ割り当ておよびメモリ書き込みリダイレクト 図2
  • 特表-メモリモジュールの温度に基づくクラウドコンピューティングシステムにおけるメモリ割り当ておよびメモリ書き込みリダイレクト 図3
  • 特表-メモリモジュールの温度に基づくクラウドコンピューティングシステムにおけるメモリ割り当ておよびメモリ書き込みリダイレクト 図4
  • 特表-メモリモジュールの温度に基づくクラウドコンピューティングシステムにおけるメモリ割り当ておよびメモリ書き込みリダイレクト 図5
  • 特表-メモリモジュールの温度に基づくクラウドコンピューティングシステムにおけるメモリ割り当ておよびメモリ書き込みリダイレクト 図6
  • 特表-メモリモジュールの温度に基づくクラウドコンピューティングシステムにおけるメモリ割り当ておよびメモリ書き込みリダイレクト 図7
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2023-08-03
(54)【発明の名称】メモリモジュールの温度に基づくクラウドコンピューティングシステムにおけるメモリ割り当ておよびメモリ書き込みリダイレクト
(51)【国際特許分類】
   G06F 1/20 20060101AFI20230727BHJP
   G06F 11/30 20060101ALI20230727BHJP
   G06F 12/06 20060101ALI20230727BHJP
【FI】
G06F1/20 D
G06F1/20 B
G06F11/30 158
G06F12/06 515H
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2022578980
(86)(22)【出願日】2021-04-20
(85)【翻訳文提出日】2022-12-21
(86)【国際出願番号】 US2021028037
(87)【国際公開番号】W WO2022005557
(87)【国際公開日】2022-01-06
(31)【優先権主張番号】16/915,303
(32)【優先日】2020-06-29
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】コウノ,レイモンド-ノエル ヌクル
(72)【発明者】
【氏名】ジョン,ニシャ スーザン
【テーマコード(参考)】
5B042
5B160
【Fターム(参考)】
5B042GA33
5B042JJ29
5B042MA08
5B042MC38
5B160AA20
5B160MM01
(57)【要約】
クラウドコンピューティングシステムにおけるメモリモジュールの温度に基づいて、メモリを割り当てること、および、データ書き込みをリダイレクトするためのシステムおよび方法が説明される。方法は、複数の第1メモリモジュールおよび複数の第2メモリモジュールの温度プロファイルを維持することを含む。本方法は、メモリに対する書き込み第1要求を、第1プロセッサによって実行されている第1計算エンティティから、少なくとも複数の第1メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトすること、および、メモリに対する書き込み第1要求を、第2プロセッサによって実行されている第2計算エンティティから、少なくとも複数の第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含む。
【特許請求の範囲】
【請求項1】
ホストサーバを含むクラウドコンピューティングシステムにおける方法であって、前記ホストサーバは、第1プロセッサに結合された少なくとも複数の第1メモリモジュール、および、第2プロセッサに結合された少なくとも複数の第2メモリモジュールを含み、前記方法は、
少なくとも複数の前記第1メモリモジュールに含まれる複数の第1メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第1温度プロファイルを維持するステップと、
少なくとも複数の前記第2メモリモジュールに含まれる複数の第2メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第2温度プロファイルを維持するステップと、
少なくとも前記第1温度プロファイルに基づいて、メモリに対する書き込み第1要求を、前記第1プロセッサによって実行されている第1計算エンティティから、少なくとも前記複数の第1メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、前記複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトするステップと、
少なくとも前記第2温度プロファイルに基づいて、メモリに対する書き込み第2要求を、前記第2プロセッサによって実行されている第2計算エンティティから、少なくとも前記複数の第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、前記複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトするステップと、
を含む、方法。
【請求項2】
前記ホストサーバは、前記第1プロセッサまたは前記第2プロセッサによる実行のために複数の計算エンティティを管理するためのハイパーバイザを含み、かつ、
前記ハイパーバイザは、前記第1温度プロファイルおよび前記第2温度プロファイルの両方を維持するように構成されている、
請求項1に記載の方法。
【請求項3】
前記方法は、さらに、
前記第1温度プロファイルまたは前記第2温度プロファイルのうち少なくとも1つを更新するために、前記ハイパーバイザが、定期的に、温度スキャンを開始するステップ、
を含む、請求項2に記載の方法。
【請求項4】
前記方法は、さらに、
既定の時間枠の全期間中、または、前記既定の時間枠の全期間中で選択された回数について、温度閾値を超える温度を有している、K個のメモリチップ、Kは正の整数、を含むか否かの、前記第1温度プロファイルおよび前記第2温度プロファイルの分析に基づいて、前記ハイパーバイザが、前記第1メモリモジュールまたは前記第2メモリモジュールの少なくとも1つから選択された、メモリモジュールを隔離するステップ、
を含む、請求項3に記載の方法。
【請求項5】
前記方法は、さらに、
他のメモリモジュールに対する特定のメモリモジュールの過剰使用を防止するために、前記ハイパーバイザが、計算エンティティによる前記複数の第1メモリモジュールおよび前記第2メモリモジュールそれぞれの使用に関連するメトリックを追跡するステップ、
を含む、請求項2に記載の方法。
【請求項6】
前記方法は、さらに、
計算エンティティに割り当てられた仮想メモリと物理メモリとの間のマッピングを管理するステップ、
を含む、請求項2に記載の方法。
【請求項7】
前記第1計算エンティティおよび前記第2計算エンティティそれぞれが、サーバレス機能のための仮想マシン(VM)、マイクロVM、マイクロサービス、または、ユニカーネルのうち少なくとも1つを含む、
請求項1に記載の方法。
【請求項8】
システムであって、
第1プロセッサに結合された少なくとも複数の第1メモリモジュール、および、第2プロセッサに結合された少なくとも複数の第2メモリモジュールを含む、ホストサーバと、
前記ホストサーバに関連付けられたハイパーバイザと、を含み、
前記ハイパーバイザは、
少なくとも複数の前記第1メモリモジュールに含まれる複数の第1メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第1温度プロファイルを維持し、
少なくとも複数の前記第2メモリモジュールに含まれる複数の第2メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第2温度プロファイルを維持し、
少なくとも前記第1温度プロファイルに基づいて、メモリに対する書き込み第1要求を、前記第1プロセッサによって実行されている第1計算エンティティから、少なくとも前記複数の第1メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、前記複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトし、かつ、
少なくとも前記第2温度プロファイルに基づいて、メモリに対する書き込み第2要求を、前記第2プロセッサによって実行されている第2計算エンティティから、少なくとも前記複数の第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、前記複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトする、
ように構成されている、
システム。
【請求項9】
前記ハイパーバイザは、さらに、
前記第1温度プロファイルまたは前記第2温度プロファイルのうち少なくとも1つを更新するために、定期的に、温度スキャンを開始する、
ように構成されている、請求項8に記載のシステム。
【請求項10】
前記ハイパーバイザは、さらに、
既定の時間枠の全期間中、または、前記既定の時間枠の全期間中で選択された回数について、温度閾値を超える温度を有している、K個のメモリチップ、Kは正の整数、を含むか否かの、前記第1温度プロファイルおよび前記第2温度プロファイルの分析に基づいて、前記ハイパーバイザが、前記第1メモリモジュールまたは前記第2メモリモジュールの少なくとも1つから選択された、メモリモジュールを隔離する、
ように構成されている、請求項9に記載のシステム。
【請求項11】
前記ハイパーバイザは、さらに、
他のメモリモジュールに対する特定のメモリモジュールの過剰使用を防止するために、前記ハイパーバイザが、計算エンティティによる前記複数の第1メモリモジュールおよび前記第2メモリモジュールそれぞれの使用に関連するメトリックを追跡する、
ように構成されている、請求項8に記載のシステム。
【請求項12】
前記ハイパーバイザは、さらに、
計算エンティティに割り当てられた仮想メモリと物理メモリとの間のマッピングを管理する、
ように構成されている、請求項8に記載のシステム。
【請求項13】
前記第1計算エンティティおよび前記第2計算エンティティそれぞれが、サーバレス機能のための仮想マシン(VM)、マイクロVM、マイクロサービス、または、ユニカーネルのうち少なくとも1つを含む、
請求項9に記載のシステム。
【請求項14】
第1ホストサーバおよび第2ホストサーバを含む、クラウドコンピューティングシステムにおける方法であって、
前記第1ホストサーバは、第1プロセッサに結合された少なくとも複数の第1メモリモジュール、および、第2プロセッサに結合された少なくとも複数の第2メモリモジュールを含み、前記第2ホストサーバは、第3プロセッサに結合された少なくとも複数の第3メモリモジュール、および、第4プロセッサに結合された少なくとも複数の第4メモリモジュールを含み、
前記第1ホストサーバは、前記第1プロセッサまたは前記第2プロセッサによる実行のために複数の第1計算エンティティを管理する第1ハイパーバイザを含み、かつ、前記第2ホストサーバは、前記第3プロセッサまたは前記第4プロセッサによる実行のために複数の第2計算エンティティを管理する第2ハイパーバイザを含み、前記方法は、
少なくとも複数の前記第1メモリモジュールおよび少なくとも複数の前記第2メモリモジュールに含まれる複数の第1メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第1温度プロファイルを維持するステップと、
少なくとも複数の前記第3メモリモジュールおよび少なくとも複数の前記第4メモリモジュールに含まれる複数の第2メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第2温度プロファイルを維持するステップと、
少なくとも前記第1温度プロファイルに基づいて、メモリに対する書き込み第1要求を、前記第1プロセッサによって実行されている第1計算エンティティから、少なくとも前記複数の第1メモリモジュールおよび少なくとも複数の前記第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、前記複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトするステップと、
少なくとも前記第2温度プロファイルに基づいて、メモリに対する書き込み第2要求を、前記第2プロセッサによって実行されている第2計算エンティティから、少なくとも前記複数の第3メモリモジュールおよび少なくとも複数の前記第4メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、前記複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトするステップと、
複数の前記第1メモリチップの少なくともN個、Nは正の整数、の温度が温度閾値を満たしているか又は超えていると判断すると、複数の前記第2メモリチップのうち少なくとも1つのメモリチップの温度が前記温度閾値を満たさないか又は超えない場合に、少なくとも前記第1計算エンティティのサブセットを、前記第1ホストサーバから、前記第2ホストサーバへ自動的に移行するステップと、
を含む、方法。
【請求項15】
前記方法は、さらに、
複数の前記第2メモリチップの少なくともO個、Oは正の整数、の温度が温度閾値を満たしているか又は超えていると判断すると、複数の前記第1メモリチップのうち少なくとも1つのメモリチップの温度が温度閾値を満たさないか又は超えない場合に、少なくとも前記第1計算エンティティのサブセットを、前記第2ホストサーバから、前記第1ホストサーバへ自動的に移行するステップ、
を含む、請求項14に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
コンピューティング、ストレージ、およびネットワークリソースは、パブリッククラウド、プライベートクラウド、または2つのハイブリッドを介してアクセスされることが増えている。パブリッククラウドは、データのストレージと管理、アプリケーションの実行、ビデオのストリーミング、電子メール、オフィス生産性ソフトウェア、またはソーシャルメディアといった、コンテンツまたはサービスの配信を含む、様々な機能を実行するサーバのグローバルネットワークを含んでいる。サーバおよび他のコンポーネントは、世界中のデータセンタに配置され得る。パブリッククラウドは、インターネットを介して一般にサービスを提供するが、ビジネスは、プライベートクラウドまたはハイブリッドクラウドを使用することができる。プライベートクラウドおよびハイブリッドクラウドの両方は、また、データセンタに収容されたサーバのネットワークも含む。クラウドサービスプロバイダは、クラウドコンピューティングおよびストレージのリソースを顧客に提供することにより、これらのリソースへのアクセスを提供する。
【0002】
クラウドコンピューティングシステムにおいて使用されるメモリモジュールの信頼性を向上させるための方法およびシステムに対する必要性が存在している。
【発明の概要】
【0003】
本開示の一つの態様は、ホストサーバを含むクラウドコンピューティングシステムにおける方法に関する。ここで、ホストサーバは、第1プロセッサに結合された少なくとも複数の第1メモリモジュール、および、第2プロセッサに結合された少なくとも複数の第2メモリモジュールを含む。本方法は、複数の第1メモリモジュールの少なくとも1つに含まれる複数の第1メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第1温度プロファイルを維持すること、を含み得る。本方法は、さらに、少なくとも複数の第2メモリモジュールに含まれる複数の第2メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第2温度プロファイルを維持すること、を含み得る。本方法は、さらに、少なくとも第1温度プロファイルに基づいて、メモリに対する書き込み第1要求を、第1プロセッサによって実行されている第1計算エンティティから、少なくとも複数の第1メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。本方法は、さらに、少なくとも第2温度プロファイルに基づいて、メモリに対する書き込み第2要求を、第2プロセッサによって実行されている第2計算エンティティから、少なくとも複数の第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。
【0004】
さらに別の態様において、本開示は、ホストサーバを含む、システムに関する。ホストサーバは、第1プロセッサに結合された少なくとも複数の第1メモリモジュール、および、第2プロセッサに結合された少なくとも複数の第2メモリモジュールを含む。本システムは、さらに、ホストサーバに関連付けられたハイパーバイザを含む。ハイパーバイザは、(1)複数の第1メモリモジュールの少なくとも1つに含まれる複数の第1メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第1温度プロファイルを維持し、(2)少なくとも複数の第2メモリモジュールに含まれる複数の第2メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第2温度プロファイルを維持し、(3)少なくとも第1温度プロファイルに基づいて、メモリに対する書き込み第1要求を、第1プロセッサによって実行されている第1計算エンティティから、少なくとも複数の第1メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトし、かつ、(4)少なくとも第2温度プロファイルに基づいて、メモリに対する書き込み第2要求を、第2プロセッサによって実行されている第2計算エンティティから、少なくとも複数の第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、前記複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトする、ように構成され得る。
【0005】
別の態様において、本開示は、第1ホストサーバおよび第2ホストサーバを含む、クラウドコンピューティングシステムにおける方法に関する。ここで、第1ホストサーバは、第1プロセッサに結合された少なくとも複数の第1メモリモジュール、および、第2プロセッサに結合された少なくとも複数の第2メモリモジュールを含み、第2ホストサーバは、第3プロセッサに結合された少なくとも複数の第3メモリモジュール、および、第4プロセッサに結合された少なくとも複数の第4メモリモジュールを含む。ここで、第1ホストサーバは、第1プロセッサまたは第2プロセッサによる実行のために複数の第1計算エンティティを管理する第1ハイパーバイザを含み、かつ、第2ホストサーバは、第3プロセッサまたは第4プロセッサによる実行のために複数の第2計算エンティティを管理する第2ハイパーバイザを含む。本方法は、少なくとも複数の第1メモリモジュールおよび少なくとも複数の第2メモリモジュールに含まれる複数の第1メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第1温度プロファイルを維持すること、を含み得る。本方法は、さらに、少なくとも複数の第3メモリモジュールおよび少なくとも複数の第4メモリモジュールに含まれる複数の第2メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第2温度プロファイルを維持すること、を含み得る。本方法は、さらに、少なくとも第1温度プロファイルに基づいて、メモリに対する書き込み第1要求を、第1プロセッサによって実行されている第1計算エンティティから、少なくとも複数の第1メモリモジュールおよび少なくとも複数の第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。本方法は、さらに、少なくとも第2温度プロファイルに基づいて、メモリに対する書き込み第2要求を、第2プロセッサによって実行されている第2計算エンティティから、少なくとも複数の第3メモリモジュールおよび少なくとも複数の第4メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。本方法は、さらに、複数の第1メモリチップの少なくともN個、Nは正の整数、の温度が温度閾値を満たしているか又は超えていると判断すると、複数の第2メモリチップのうち少なくとも1つのメモリチップの温度が温度閾値を満たさないか又は超えない場合に、少なくとも第1計算エンティティのサブセットを、第1ホストサーバから、第2ホストサーバへ自動的に移行すること、を含み得る。
【0006】
この概要は、以下の詳細な説明でさらに説明される概念の選択を簡略化された形式で紹介するために提供されている。この概要は、請求される技術的事項(subject matter)の主要な特徴または本質的な特徴を特定するように意図されたものではなく、また、請求される技術的事項の範囲を制限するために使用されように意図されたものでもない。
【図面の簡単な説明】
【0007】
本開示は例として例示されており、そして、添付の図面によって限定されるものではない。図面では、同様なリファレンスは同様な要素を示している。図面における要素は、単純化と明確化のために図示されており、そして、必ずしも縮尺どおりに描画されているとは限らない。
図1図1は、一つの例に従った、クラウドコンピューティングシステムにおけるメモリ割り当ておよびデータ書き込みを制御するためのシステムを示している。
図2図2は、一つの例に従った、サーバのブロック図を示している。
図3図3は、一つの例に従った、メモリモジュールを含むホストサーバを示している。
図4図4は、一つの例に従った、メモリ割り当ておよびデータ書き込みを制御するシステムを実装するためのシステム環境を示している。
図5図5は、一つの例に従った、所定の方法を実行するために使用することができるコンピューティングプラットフォームを示している。
図6図6に一つの例に従った、方法のフローチャートを示している。
図7図7は一つの例に従った、方法の別のフローチャートを示している。
【発明を実施するための形態】
【0008】
この開示で説明される実施例は、クラウドコンピューティングシステムのメモリモジュールの温度に基づいてメモリを割り当てること、および、データ書き込みをリダイレクトすることに関する。メモリモジュールは、ホストサーバに含まれてよい。複数のホストサーバをサーバのラックまたはサーバのスタックに含まれちょい。ホストサーバは、クラウドコンピューティングサービスのテナントまたは他の加入者にサービスを提供するように構成されたクラウドコンピューティング環境内の任意のサーバであってよい。メモリ技術の例は、これらに限定されるわけではないが、揮発性メモリ技術、不揮発性メモリ技術、および、準(quasi)揮発性メモリ技術を含む。メモリタイプの例は、ダイナミックランダムアクセスメモリ(DRAM)、フラッシュメモリ(例えば、NANDフラッシュ)、強誘電体ランダムアクセスメモリ(FeRAM)、磁気ランダムアクセスメモリ(MRAM)、相変化メモリ(PCM)、抵抗型ランダムアクセスメモリ(RRAM)を含む。大まかに言えば、本開示は、熱および酷使(overuse)のせいで機能停止または故障の影響を受けやすい技術に基づくメモリを有する、任意のサーバの信頼性およびアップタイムを向上させることに関する。
【0009】
所定の例において、ここで説明される方法およびシステムは、クラウドコンピューティング環境において展開され得る。クラウドコンピューティングとは、構成可能なコンピューティングリソースの共有プールへのオンデマンドのネットワークアクセスを可能にするモデルを指すことができる。例えば、クラウドコンピューティングは、構成可能なコンピューティングリソースの共有プールへのユビキタスで便利なオンデマンドアクセスを提供するために、市場で採用することができる。構成可能なコンピューティングリソースの共有プールは、仮想化を介して迅速に供給(provision)され、かつ、少ない管理労力またはサービスプロバイダとのインタラクションでリリースされ、そして、次いで、それに応じてスケール化され得る。クラウドコンピューティングモデルは、例えば、オンデマンドのセルフサービス、広範なネットワークアクセス、リソースプーリング、迅速な弾性(elasticity)、測定されたサービス、等といった、様々な特性で構成され得る。クラウドコンピューティングモデルは、例えば、サービスとしてのハードウェア("HaaS")、サービスとしてのソフトウェア("SaaS")、サービスとしてのプラットフォーム("PaaS")、サービスとしてのインフラストラクチャ("IaaS")といった、様々なサービスモデルを公開(expose)するために使用され得る。クラウドコンピューティングモデルは、またh、プライベートクラウド、コミュニティクラウド、パブリッククラウド、ハイブリッドクラウド、等といった、様々な展開モデルを使用して展開することもできる。
【0010】
図1は、一つの例に従った、クラウドコンピューティングシステムにおけるメモリ割り当ておよびデータ書き込みを制御するためのシステム100を示している。この例において、システム100は、データセンタにおけるクラウドコンピューティングスタックに対応し得る。システム100は、サーバのラックとして実装され得る。この例において、システム100は、ホストサーバ110、120、および130を含んでよい。各ホストサーバは、少なくとも何らかの形式でコンピューティング機能を提供するように構成された1つ以上のプロセッサを含み得る。例えば、ホストサーバ110は、CPU-0 112およびCPU-1 114を含み、ホストサーバ120は、CPU-0 122およびCPU-1 124を含み、そして、ホストサーバ130は、CPU-0 132およびCPU-1 134を含み得る。ホストサーバ110は、さらに、メモリモジュール116および118を含み得る。ホストサーバ120は、さらに、メモリモジュール126および128を含み得る。ホストサーバ130は、さらに、メモリモジュール136および138を含み得る。
【0011】
図1を引き続き参照すると、ホストサーバ110は、ハイパーバイザ140に対応する命令を実行するように構成され得る。ハイパーバイザ140は、さらに、仮想マシン(VM)(例えば、VM142、VM144、およびVM146)とインターフェイスするように構成され得る。VMに対応する命令は、ホストサーバ110に関連付けられたCPU-0 112またはCPU-1 114のいずれかを使用して実行され得る。ハイパーバイザ150は、さらに、仮想マシン(VM)(例えば、VM152、VM154、およびVM156)とインターフェイスするように構成され得る。VMに対応する命令は、ホストサーバ120に関連付けられたCPU-0 122またはCPU-1 124のいずれかを使用して実行され得る。ハイパーバイザ160は、さらに、仮想マシン(VM)(例えば、VM162、VM164、およびVM166)とインターフェイスするように構成され得る。VMに対応する命令は、ホストサーバ130に関連付けられたCPU-0 132またはCPU-1 134のいずれかを使用して実行され得る。
【0012】
ハイパーバイザ140は、制御パスを介して、ハイパーバイザ150と制御情報を共有することができる。制御パスは、バスシステム(例えば、サーバラックバスシステム、または、他のタイプのバスシステム)を使用して実装されたパスに対応し得る。ハイパーバイザ150は、別の制御パスを介して、ハイパーバイザ160と制御情報を共有し得る。制御パスは、バスシステム(例えば、サーバラックバスシステムやその他のタイプのバスシステム)を使用して実装されたパスに対応し得る。ハイパーバイザ140、ハイパーバイザ150、およびハイパーバイザ160それぞれは、カーネルベースの仮想マシン(KVM)ハイパーバイザ、Hyper-Vハイパーバイザ、または、別のタイプのハイパーバイザであり得る。図1は、所定の方法で配置および結合された所定の数のコンポーネントを含むものとしてシステム100を示しているが、異なる方法で配置および結合されたより少ない、または追加的なコンポーネントを含んでよい。一つの例として、図1には示されていないが、各ホストサーバは、ホストサーバの所定の態様を管理するためのオペレーティングシステムを含み得る。別の例として、システム100は、ラックまたはスタックの一部として結合された任意の数のホストサーバを含み得る。別の例として、各ホストサーバは、クラウドコンピューティング、ストレージ、及び/又はネットワーク機能を提供するための必要に応じて、任意の数のCPU、GPU、メモリモジュール、または、その他のコンポーネントを含み得る。さらに、システム100に関連する機能は、必要に応じて、分散または結合され得る。さらに、図1は、VMによるホストサーバのメモリへのアクセスを説明しているが、コンテナ、マイクロVM、マイクロサービス、およびサーバレス機能のユニカーネル(unikernel)といった、他のタイプの計算エンティティも同様の方法でメモリにアクセスし得る。ここで使用されているように、「計算エンティティ(“compute entity”)」という用語は、これらに限定されるわけではないが、機能性、アプリケーション、サービス、マイクロサービス、コンテナ、サーバレスコンピューティングのためユニカーネル、または、前述の一部を実装する、任意の実行可能コードを(ハードウェア、ファームウェア、ソフトウェアの形式で、または上記の任意の組み合わせで)包含している。
【0013】
図2は、一つの例に従った、ホストサーバ(例えば、ホストサーバ110、ホストサーバ120、またはホストサーバ130のいずれか)を実装するサーバ200のブロック図を示している。サーバ200は、サーバボード210およびサーバボード250を含み得る。サーバボード210およびサーバボード250は、インターコネクト、高速ケーブル、ラックに関連付けられたバスシステム、または、サーバボード210およびサーバボード250を収容する別の構造を介して、結合され得る。サーバボード210は、CPU-0 212、デュアルインラインメモリモジュール(DIMM)(例えば、サーバボード210の一部として図2に示されているDIMM)、および、ソリッドステートドライブ(SSD)245、247、および249を含み得る。この例において、CPU-0 212は、に24個のコアを含み得る(図2において大文字Cを有するブロックとして識別されるもの)。DIMMそれぞれは、DIMMスロット/コネクタに設置され得る。この例において、6個のDIMMがCPU-0 212の一方側に配置され、そして、別の6個のDIMがCPU-0 212の反対側に配置されてよい。この例において、DIMM0 222、DIMM1 224、DIMM2 226、DIMM3 228、DIMM4 230、およびDIMM5 232が、CPU-0 212の左側に配置されてよい。DIMM6 234、DIMM7 236、DIMM8 238、DIMM9 240、DIMM10 242、およびDIMM11 244が、CPU-0 212の右側に配置されてよい。
【0014】
引き続き図2を参照すると、サーバボード250は、CPU-1 252、デュアルインラインメモリモジュール(DIMM)(例えば、サーバボード250の一部として図2に示されているDIMM)、および、ソリッドステートドライブ(SSD)285、287、および289を含み得る。この例において、CPU-1 252は、24個のコア(図2において大文字Cを有するブロックとして識別されるもの)を含み得る。DIMMそれぞれは、DIMMスロット/コネクタに設置され得る。この例において、6個のDIMMがCPU-1 252の一方側に配置され、そして、別の6個のDIMがCPU-1 252の反対側に配置されてよい。この例において、DIMM0 262、DIMM1 264、DIMM2 266、DIMM3 268、DIMM4 270、およびDIMM5 272が、CPU-1 252の左側に配置されてよい。DIMM6 274、DIMM7 276、DIMM8 278、DIMM9 280、DIMM10 282、およびDIMM11 284が、CPU-1 252の右側に配置されてよい。
【0015】
依然として図2を参照すると、この例において、サーバ200は、空気を使用して冷却され得る。一つの例として、吸気口(inlet)292、294および296を使用して、サーバボード210およびサーバボード250の様々な部分に冷却空気を供給することができる。図2において、冷却は、冷却空気を使用して行われるが、また、液体または他の形態の物質を使用してサーバ200を冷却することもできる。使用する冷却方法に関係なく、サーバ200に組み込まれている様々なコンポーネントは、異なる温度を有し得る。コンポーネントの温度が均一でないのには、いくつかの理由が考えられる。一つの例として、サーバボード210および250のいずれかに搭載されている所定のコンポーネントは、他のコンポーネントよりも発熱量が多いことがある。別の例として、一部の下流コンポーネントによって受け取られた冷却空気は、上流コンポーネント(例えば、図2に示されるSSD)によって予熱されることがある。加えて、吸気口の数や配置によって、サーバラック、または、サーバボード210および250を収容するために使用される別の構造の内側の温度が不均一になることがある。DIMMは、また、温度が均一でないこともある。図2は、所定の方法で配置および結合された所定の数のコンポーネントを含むものとしてサーバ200を示しているが、異なる方法で配置および結合された、より少ない又は追加的なコンポーネントを含んでよい。一つの例として、サーバ200は、ラックおよび他の構造の内側に配置された任意の数のサーバボードを含み得る。別の例として、各サーバボードは、コンピューティング、ストレージ、及び/又はネットワーク機能を提供するための必要に応じて、任意の数のCPU、GPU、メモリモジュール、または他のコンポーネントを含み得る。加えて、サーバボード210および250は、DIMMを有するものとして説明されているが、他のタイプのメモリモジュールが、サーバボード210および250の一部として含まれてよい。一つの例として、そうしたメモリモジュールはシングルインラインメモリモジュール(Single-Inline Memory Module、SIMM)であってよい。
【0016】
図3は、一つの例に従った、メモリモジュール350を含むホストサーバ300を示している。ホストサーバ300は、部分310を含み得る。この例において、部分310は、中央処理機能およびバス/メモリコントローラを含む、ホストサーバ300の一部に対応し得る。一つの例として、部分310は、CPU312、キャッシュ314、ペリフェラルコンポーネントインターコネクトエクスプレス(PCIe)コントローラ316、およびメモリコントローラ(MC)318を含み得る。CPU312は、バス313を介してキャッシュ314に結合されており、キャッシュされた命令またはデータへの高速アクセスを可能にすることができる。CPU312は、また、バス315を介して、PCIeコントローラ316に接続されてもよい。CPU312は、バス317を介して、メモリコントローラ318に接続されてよい。キャッシュ314は、バス319を介して、メモリコントローラ318に接続されてよい。一つの例において、CPU312、キャッシュ314、およびPCIeコントローラ316は、単一モジュール(例えば、CPUモジュール)内に組み込むことができる。
【0017】
PCIeコントローラ316は、PCIeバス321を介して、PCIeブリッジ320に接続され得る。PCIeブリッジ320は、ピアツーピア(P2P) コントローラ322を含み得る。PCIeブリッジ320は、また、必要に応じて、PCIeコントローラに関連する機能および他の機能性も提供し、様々なストレージやネットワークリソースとのインターフェイスを可能にすることができる。この例において、P2Pコントローラ322は、バス334を介して、P2P 328、P2P 330、およびP2P 332を含むP2Pポートに結合され得る。この例において、P2P 328はSSD 340に結合され、P2P 330はSSD 342に結合され、そして、P2P 332はSSD 344に結合され得る。
【0018】
引き続き図3を参照すると、メモリコントローラ318は、バス352および354を介して、メモリモジュール350に結合され得る。この例において、メモリモジュールへの結合は、高度なメモリバッファ(例えば、AMB 362、372、および382)を介して行われ得る。加えて、この例において、バス352は、データ/制御/ステータス信号を、メモリコントローラ318からメモリモジュール350に転送することができ、そして、バス354は、データ/制御/ステータス信号をメモリモジュール350からメモリコントローラ318に転送することができる。加えて、必要に応じて、信号を同期させるために、クロックソース346が使用され得る。クロックソース346は、位相同期ループ(PLL)回路または別のタイプのクロック回路として実装され得る。
【0019】
メモリモジュール360、370、および380それぞれは、上述のように、DIMMであってよい。メモリモジュール360は、メモリチップ363、364、365、366、367、および368を含み得る。メモリモジュール360は、さらに、メモリモジュールコントローラ(MMC)361を含み得る。メモリモジュール370は、メモリチップ373、374、375、376、377、および378を含み得る。メモリモジュール370は、さらに、MMC371を含み得る。メモリモジュール380は、メモリチップ383、384、385、386、387、および388を含み得る。メモリモジュール380は、さらに、MMC381を含み得る。各メモリチップは、メモリチップの中の温度を継続的にモニタリングおよび追跡するための温度センサ(図示なし)を含み得る。そうした温度センサは、メモリチップの製造中に半導体製造技術を使用して、実装することができる。この例において、MMC361、371、および381それぞれが、バス351を介して、メモリコントローラ318に結合され得る。各MMCは、とりわけ、それぞれのメモリチップそれぞれから温度センサの値を収集する責任がある。メモリコントローラ318は、メモリモジュール360、370、および380それぞれに対応するそれぞれのMMCから温度関連情報を取得することができる。代替的に、MMC361、371、および381それぞれは、温度関連の情報をメモリコントローラ318または別のコントローラに定期的に提供することができ、それは、次いで、ホストサーバに関連付けられたハイパーバイザからアクセス可能な方法で情報を保管することができる。
【0020】
依然として図3を参照すると、一つの例において、収集された温度値は、制御/ステータスレジスタまたはCPU312にアクセス可能な他のタイプのメモリ構造に保管されてよい。この例において、メモリコントローラは、メモリモジュール360、370、および380の温度プロファイルを維持し得る。温度プロファイルの例は、各メモリモジュールに関連付けられた各メモリチップの温度の最新の測定値に関する情報が含まれ得る。一つの例において、ハイパーバイザは、更新された情報が定期的にハイパーバイザにアクセスできるように、温度プロファイルのスキャンを制御することができる。温度プロファイルは、また、ベースラインと比較した温度の相対的な違いも含み得る。従って、この例において、メモリチップは、ベースライン温度よりも低いか、または、高い温度を有し得る。メモリチップ間の相対的な温度差は、摂氏10度以上になることがある。CPU312は、必要に応じて、メモリチップに関連する温度測定値、および、より細かいデータに対するアクセスを有し得る。ホストサーバに関連付けられたハイパーバイザは、メモリ割り当ての決定の一部として、または、他の物理メモリ位置への書き込みのリダイレクトの一部として、各メモリモジュールについて温度プロファイルにアクセスすることができる。
【0021】
ホストサーバに関連付けられたメモリ(例えば、DIMM)へのアクセスに関して、大まかなレベルでは、計算エンティティ(例えば、仮想マシン(VM))がホストサーバのメモリにアクセスする2つの方法が存在し得る。これらのインスタンスでは、VMが実行されているCPUに関連付けられている物理メモリにアクセスしている場合には、次いで、システムに関連付けられているハードウェアによって、ロードまたはストアアクセスがバストランザクションへ変換され得る。しかしながら、VMに別のCPUに関連付けられている物理メモリへのアクセスが提供されている場合には、次いで、一つの例において、ハイパーバイザは、マップされていない(unmapped)ページへのアクセスの試みによって生じるハードウェア例外(hardware exception)を使用して、これを管理し得る。各ハイパーバイザは、ホスト側のページテーブル、または、他のメモリマップテーブルへのアクセスが許可され得る。マップされていないページに対するアクセスは、ページフォールトといった、ハードウェア例外を発生させることがある。ハイパーバイザは、他のホストサーバに関連付けられたローカルメモリへページを移動した後で、ホストメモリにアクセスし、そして、ページテーブルマッピングをインストールし得る。
【0022】
一つの例においては、そうしたメモリ操作(またはI/O操作)が実行される以前に、サーバのスタックまたはグループの一部である、ホストサーバ間で制御情報が交換され得る。情報の交換は、ハイパーバイザ(例えば、図1に示されるハイパーバイザ)間で生じ得る。ライブマイグレーション(live migration)を有効にするために、各ホストサーバは、ホストサーバ内でのVMの再起動を可能にするように、ホストメモリ全体の一部を予約することができる。ホストサーバは、また、スタックインフラストラクチャのオーバーヘッドおよび回復力リザーブ(resiliency reserve)を含む、他の目的のために予約された所定量のメモリを保持するように要求されることもある。これは、サーバ障害または他のそうした問題のせいで別のホストサーバの可用性が不足した場合に、VMの移行を可能にするために予約されたメモリに関連し得る。従って、制御情報の少なくとも一部は、VMのライブマイグレーションを可能にするために、他のホストサーバによって実行されている仮想マシンによってアクセスされ得る、メモリ空間を指定している各ホストサーバに関連し得る。一つの例においては、ライブマイグレーションを開始する以前に、ハイパーバイザは、少なくとも所定数のメモリチップの温度が温度閾値を満たすか、または、超えていると判断することができる。そのように決定された場合に、ハイパーバイザは、少なくともホストサーバに関連付けられているメモリの温度が温度閾値を満たさないか、または、超えていなければ、コンピューティングエンティティの少なくともサブセットを、そのホストサーバから別のホストサーバへ自動的に移行することができる。このプロセスの一部として、より温度が低いDIMMへのライブマイグレーションを確実にすることとは別に、ハイパーバイザは、また、ライブマイグレーションを発生させるのに十分な物理メモリが他のホストサーバ内に存在することも確実にすることができる。
【0023】
依然として図3を参照すると、一つの例において、ホストサーバ300の一部として、リモートダイレクトメモリアクセス(RDMA)を使用して、ロードおよびストアが実行され得る。RDMAは、あるシステム(例えば、図1のホストサーバ110)のメモリから別のシステム(例えば、図1のホストサーバ120)のメモリの中へ、どちらのシステムのオペレーティングシステムも関与することなく、直接的にデータをコピーすることを可能にし得る。この方法では、RDMAをサポートするホストサーバは、プロセスのメモリ空間に対して、または、そこから、直接的にデータを転送することによって、ゼロコピーの利点を達成することができ、それは、オペレーティングシステムにおけるアプリケーションメモリとデータバッファとの間の余分なデータコピーが排除し得る。別の言葉で言えば、この例において、様々なソフトウェア/ハードウェアレイヤにわたりアドレス変換/マッピングを使用することによって、ホストサーバに関連付けられたメモリ(または、I/Oデバイス)に、データの1つだけのコピーが保管され得る。
【0024】
引き続き図3を参照すると、必要に応じて、PCIeバスを介して結合されたSSDの温度プロファイルも、また、モニタリングすることができ、そして、VMに対応するデータをより低温のSSDに保存することができる。上述のように、バス321は、PCIe仕様に従って機能できるPCIeバスに対応することができ、必要に応じて、非透過ブリッジングのためのサポートを含んでいる。PCIeトランザクションは、アドレスルーティング、IDベースルーティング(例えば、バス番号、デバイス番号、および機能番号を使用する)、または、メッセージを使用した暗黙のルーティングを使用して、ルート化(routed)され得る。トランザクションタイプは、メモリの読み取り/書き込み(read/write)、I/Oの読み取り/書き込み、コンフィグレーションの読み取り/書き込み、および、メッセージング操作に関連付けられたトランザクションを含み得る。PCIeシステムのエンドポイントは、ベースアドレスレジスタ(BAR)を使用して構成され得る。BARのタイプは、メモリ操作またはI/O操作のBARとして構成され得る。必要に応じて、その他のセットアップおよびコンフィグレーションも、また、実行され得る。PCIeシステムに関連付けられたハードウェア(例えば、任意のルート複合体(complexes)およびポート)は、さらに、メモリの読み取り/書き込み操作、および、I/O操作のパフォーマンスを可能にする機能性を提供し得る。一つの例として、PCIeシステムに関連付けられたアドレス変換ロジックは、パケット転送またはパケットドロップを含む、パケット処理のためのアドレス変換に使用され得る。
【0025】
一つの例において、ホストサーバ300上で実行されるハイパーバイザは、ホストサーバ300に関連付けられたSSDに関連付けられたメモリ領域を、CPU312を使用して実行される仮想マシンのゲストアドレス空間へとマッピングすることができる。データのローディングがVMにより必要な場合、そのロードは、PCIeトランザクションへと直接的に変換され得る。ストア操作の場合、PCIeコントローラ316は、PCIeパケットをP2Pコントローラ322に送信し、P2Pコントローラは、次いで、P2Pポート328、330、または332のいずれかに対してそれを送信し得る。この方法で、データは、ホストサーバ300に関連付けられた、I/Oデバイス(例えば、SSD、HD、または、他のI/Oデバイス)に保管され得る。転送は、また、PCIeシステムによるアドレス変換も含み得る。図3は、ホストサーバ300を、所定の方法で配置および結合された所定の数のコンポーネントを含んでいるように示しているが、ホストサーバは、異なって配置および結合された、より少ないまたは追加のコンポーネントを含んでよい。加えて、必要に応じて、ホストサーバ300に関連する機能は、分散または結合され得る。一つの例として、図3は、I/O操作のパフォーマンスを有効にするためのP2Pポートを示しているが、そうした機能性を有効にするために、他の種類のインターコネクトも、また、使用され得る。代替的に、かつ/あるいは、追加的に、CPU312によって実行されている仮想マシンと関連付けられているSSDへの任意のアクセス操作は、リモートダイレクトメモリアクセス(RDMA)を使用して、有効にすることができる。
【0026】
図4は、一つの例に従った、システムおよび方法を実装するためのシステム環境400を示している。この例において、システム環境400は、データセンタの一部に対応し得る。一つの例として、データセンタは、サーバノード、ストレージノード、ネットワークノード、または、他のタイプのノードといった、プラットフォームハードウェアを含んでいる、ラックのいくつかのクラスタを含み得る。サーバノードは、ネットワークを形成するように、スイッチに接続されてよい。ネットワークは、スイッチの各可能な組み合わせ間で、接続を有効にすることができる。システム環境400は、サーバ1 410およびサーバN 430を含み得る。システム環境400は、さらに、展開/モニタリング470、ディレクトリ/アイデンティティサービス472、ロードバランシング474、データセンタコントローラ476(例えば、ソフトウェア定義ネットワーク(SDN)コントローラ、および、他のコントローラ)、ルータ/スイッチ478を含む、データセンタ関連の機能460を含み得る。サーバ1 410は、ホストプロセッサ411、ホストハイパーバイザ412、メモリ413、ストレージインターフェイスコントローラ(SIC)414、冷却415(例えば、冷却ファンまたは他の冷却装置)、ネットワークインターフェイスコントローラ(NIC)416、および、ストレージディスク417と418、を含み得る。サーバN 430は、ホストプロセッサ431、ホストハイパーバイザ432、メモリ433、ストレージインターフェイスコントローラ(SIC)434、冷却435(例えば、冷却ファンまたは他の冷却装置)、ネットワークインターフェイスコントローラ(NIC)436、およびストレージディスク437と438、を含み得る。サーバ1 410は、VM1 419、VM2 420、VMN 421を含む、仮想マシンをサポートするように構成され得る。仮想マシンは、さらに、APP1 422、APP2 423、APPN 424といった、アプリケーションをサポートするように構成され得る。サーバN 430は、VM1 439、VM2 440、およびVMN 441を含む、仮想マシンをサポートするように構成され得る。仮想マシンは、さらに、APP1 442、APP2 443、APPN 444といった、アプリケーションをサポートするように構成され得る。
【0027】
引き続き図4を参照すると、一つの例において、仮想拡張ローカルエリアネットワーク(VXLAN) フレームワークを使用して、複数のテナントについてシステム環境400が有効にされ得る。各仮想マシン(VM)は、同じVXLANセグメント内のVMとの通信が許可され得る。各VXLANセグメントは、VXLANネットワーク識別子(VNI)によって識別され得る。図4は、所定の方法で配置および結合された所定の数のコンポーネントを含むものとして、システム環境400を示しているが、システム環境は、異なって配置および結合された、より少ないか、または、追加のコンポーネントを含み得る。加えて、システム環境400に関連する機能性は、必要に応じて、分散または結合されてよい。さらに、図4は、VMによる未使用リソースへのアクセスを記載しているが、コンテナ、マイクロVM、マイクロサービス、サーバレス機能用のユニカーネルといった、他のタイプのコンピューティングエンティティが、同様の方法で、ホストサーバに関連付けられた未使用リソースにアクセスすることができる。
【0028】
図5は、一つの例に従った、コンピューティングプラットフォーム500(例えば、本開示に関連する方法およびアルゴリズムに係る所定の態様を実装するため)のブロック図を示している。コンピューティングプラットフォーム500は、プロセッサ502、I/Oコンポーネント504、メモリ506、プレゼンテーションコンポーネント508、センサ510、データベース512、ネットワークインターフェイス514、およびI/Oポートを含み得る。これらは、バス520を介して相互接続され得る。プロセッサ502は、メモリ506に保管された命令を実行することができる。I/Oコンポーネント504は、キーボード、マウス、音声認識プロセッサ、またはタッチスクリーンといった、ユーザーインターフェイスデバイスを含み得る。メモリ506は、不揮発性ストレージまたは揮発性ストレージ(例えば、フラッシュメモリ、DRAM、SRAM、または他のタイプのメモリ)の任意の組み合わせであり得る。プレゼンテーションコンポーネント508は、LCD、LED、または他のタイプのディスプレイといった、任意のタイプのディスプレイであり得る。センサ510は、情報(例えば、デバイスに関連する条件)を検出及び/又は受信するように構成されたテレメトリ、または、他のタイプのセンサを含み得る。センサ510は、CPU、メモリまたは他のストレージコンポーネント、FPGA、マザーボード、ベースボード管理コントローラ、などに関連する状態を感知するように構成されたセンサを含み得る。センサ510は、また、ラック、シャーシ、ファン、電源装置(PSU)、などに関連する状態を感知するように構成されたセンサも含み得る。センサ510は、また、ネットワークインターフェイスコントローラ(NIC)、トップオブラック(Top-of-Rack、TOR)スイッチ、ミドルオブラック(Middle-of-Rack、MOR)スイッチ、ルータ、配電ユニット(PDU)、ラックレベルの無停電電源装置(UPS)システム、などに関連する状態を感知するように構成されたセンサも含み得る。
【0029】
引き続き図5を参照すると、センサ510は、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせで実装され得る。いくつかのセンサ510は、センサ510がセンサAPIを介して情報を受信できるようにするセンサAPIを使用して、実装され得る。所定の条件またはイベントを検出または聞く(listen)ように設定されたソフトウェアは、データセンタまたは他の同様なシステムの一部である、デバイスに関連する任意の条件を、センサAPIを介して、通信することができる。リモートセンサまたは他のテレメトリデバイスは、データセンタ内に組み込まれてよく、そこに設置されたコンポーネントに関連する状態を感知することができる。リモートセンサまたは他のテレメトリは、また、データセンタ内の他の有害信号をモニタリングするためにも使用され得る。一つの例として、ラックを冷却しているファンが動作を停止した場合は、センサによって読み取られ、そして、展開およびモニタリング機能に報告され得る。このタイプのモニタリングは、温度プロファイルベースのメモリ書き込みのリダイレクトへの任意の影響が、必要に応じて、検出、記録、および修正されることを確実にし得る。
【0030】
さらに図5を参照すると、データベース512は、メモリ書き込みのリダイレクトおよびVMの移行のための温度プロファイルに関連するレコードを保管するために使用されてよく、そうした機能性をどのホストサーバが実装できるかを確立するポリシーレコードを含んでいる。加えて、データベース512は、また、温度プロファイルに基づく、メモリ書き込みのリダイレクトおよびVMの移行に関連するレポートを生成するために使用されるデータを保管することもできる。
【0031】
ネットワークインターフェイス514は、イーサネット(登録商標)、セルラー無線、ブルートゥース(登録商標)無線、UWB無線、もしくは、他のタイプの無線または有線通信インターフェイスといった、通信インターフェイスを含み得る。I/Oポートは、イーサネットポート、インフィニバンド(InfiniBand)ポート、光ファイバポート、または、他のタイプのポートを含み得る。図5は、所定の方法で配置され、かつ、結合された所定の数のコンポーネントを含むコンピューティングプラットフォーム500を示しているが、異なるように配置され、かつ、結合されたより少ない又は追加のコンポーネントを含んでよい。加えて、必要に応じて、コンピューティングプラットフォーム500に関連する機能が配布され得る。
【0032】
図6は、一つの例に従った、方法のフローチャート600を示している。この例において、この方法は、ホストサーバを含むクラウドコンピューティングシステムで実行され得る。ここで、ホストサーバは、第1プロセッサに結合された少なくとも複数の第1メモリモジュール、および、第2プロセッサに結合された少なくとも複数の第2メモリモジュールを含む。一つの例として、この方法は、図1のシステム100の一部としての、図3のホストサーバ300の一部として実行され得る。ステップ610は、少なくとも複数の第1メモリモジュールに含まれる複数の第1メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第1温度プロファイルを維持すること、を含み得る。例として、第1温度プロファイルは、前述のメモリモジュール(例えば、図3のメモリモジュール360、370、および380のうち1つ)の一部として含まれるメモリチップに関連付けられた温度データに対応し得る。一つの例において、ホストサーバに関連付けられたハイパーバイザは、第1温度プロファイルを管理し得る。
【0033】
ステップ620は、少なくとも複数の第2メモリモジュールに含まれる複数の第2メモリチップそれぞれに関連する温度センサから受け取った情報に基づいて、第2温度プロファイルを維持すること、を含み得る。例として、第2温度プロファイルは、前述の他のメモリモジュールの1つ(例えば、図3のメモリモジュール360、370、および380のうち1つ)の一部として含まれるメモリチップに関連付けられた温度データに対応し得る。一つの例において、ホストサーバに関連付けられたハイパーバイザは、第2温度プロファイルを管理し得る。加えて、ハイパーバイザは、また、第1温度プロファイルまたは第2温度プロファイルの少なくとも1つを更新するための温度スキャンを定期的に開始することもできる。上述のように、温度プロファイルを更新するために、プッシュまたはプルのいずれかの技法が(または、両方を組み合わせて)使用され得る。ハイパーバイザおよび関連モジュールに対応する命令は、必要に応じて、コンピューティングプラットフォーム500に関連するメモリ506を含むメモリに保管され得る。
【0034】
ステップ630は、少なくとも第1温度プロファイルに基づいて、メモリに対する書き込み第1要求を、第1プロセッサによって実行されている第1計算エンティティから、少なくとも複数の第1メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。一つの例において、ホストサーバに関連付けられたハイパーバイザは、メモリ書き込み操作を自動的にリダイレクトするのに役立ち得る。書き込み操作を開始するCPUは、ホストサーバのメモリを管理するためにハイパーバイザによって保持されるメモリマッピングテーブルに基づいて、メモリコントローラ(例えば、図3に関して先に説明したメモリコントローラ)の助けを得て、物理メモリに対して書き込むことができる。ハイパーバイザおよび関連モジュールに対応する命令は、必要に応じて、コンピューティングプラットフォーム500に関連するメモリ506を含むメモリに保管され得る。
【0035】
ステップ640は、少なくとも第2温度プロファイルに基づいて、メモリに対する書き込み第2要求を、第2プロセッサによって実行されている第2計算エンティティから、少なくとも複数の第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。一つの例において、ホストサーバに関連付けられたハイパーバイザは、メモリ書き込み操作を自動的にリダイレクトするのに役立ち得る。書き込み操作を開始するCPUは、ホストサーバのメモリを管理するためにハイパーバイザによって保持されるメモリマッピングテーブルに基づいて、メモリコントローラ(例えば、図3に関して先に説明したメモリコントローラ)の助けを得て、物理メモリに対して書き込むことができる。ハイパーバイザおよび関連モジュールに対応する命令は、必要に応じて、コンピューティングプラットフォーム500に関連するメモリ506を含むメモリに保管され得る。図6は、所定の順序で実行される所定の数のステップを含むものとして、フローチャート600を説明しているが、本方法は、異なる順序で実行される追加的または少数のステップを含んでよい。一つの例として、ハイパーバイザは、第1温度プロファイルまたは第2温度プロファイルの少なくとも1つを更新するための温度スキャンを定期的に開始することができる。さらに、メモリモジュールが、既定の時間枠(time frame)の全期間中、または、既定の時間枠の全期間中で選択された回数について、温度閾値を超える温度を有している、K個のメモリチップ、Kは正の整数、を含むか否かの、第1温度プロファイルおよび第2温度プロファイルの分析に基づいて、ハイパーバイザは、第1メモリモジュールまたは第2メモリモジュールの少なくとも1つから選択されたメモリモジュール(例えば、前述のDIMMを含む、任意のメモリモジュール)を隔離(quarantine)することができる。最後に、ハイパーバイザは、他のメモリモジュールに対する特定のメモリモジュールの過剰使用(overuse)を防止するために、計算エンティティによる複数の第1メモリモジュールおよび第2メモリモジュールそれぞれの使用に関連するメトリックを追跡することができる。一つの例として、メモリモジュールの使用に関連するメトリックは、既定の時間枠内で異なるメモリモジュールがアクセスされた回数に関連し得る。ヒストグラムは、また、過剰使用されているメモリモジュールをビンする(bin)ためにも、使用され得る。
【0036】
図7は、一つの例に従った、方法の別のフローチャート700を示している。この例において、この方法は、第1ホストサーバおよび第2ホストサーバを含むクラウドコンピューティングシステムにおいて実行され得る。ここで、第1ホストサーバは、第1プロセッサに結合された少なくとも複数の第1メモリモジュール、および、第2プロセッサに結合された少なくとも複数の第2メモリモジュールを含み、ここで、第2ホストサーバは、第3プロセッサに結合された少なくとも複数の第3メモリモジュール、および、第4プロセッサに結合された少なくとも複数の第4メモリモジュールを含み、ここで、第1ホストサーバは、第1プロセッサまたは第2プロセッサによる実行のために複数の第1計算エンティティを管理する第1ハイパーバイザを含み、かつ、第2ホストサーバは、第3プロセッサまたは第4プロセッサによる実行のために複数の第2計算エンティティを管理する第2ハイパーバイザを含む。この例において、この方法は、図1のシステム100の一部として、図3のホストサーバ300で実行され得る。
【0037】
ステップ710は、少なくとも複数の第1メモリモジュール、および、少なくとも複数の第2メモリモジュールに含まれる、複数の第1メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第1温度プロファイルを維持すること、を含み得る。一つの例として、第1温度プロファイルは、前述のメモリモジュールの一部として含まれるメモリチップに関連付けられた温度データに対応し得る(例えば、図3のメモリモジュール360、370、および380)。一つの例において、ホストサーバに関連付けられたハイパーバイザは、第1温度プロファイルを管理し得る。
【0038】
ステップ720は、少なくとも複数の第3メモリモジュール、および、少なくとも複数の第4メモリモジュールに含まれる、複数の第2メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第2温度プロファイルを維持すること、を含み得る。一つの例として、第2温度プロファイルは、前述の他のメモリモジュールの一部として含まれるメモリチップに関連付けられた温度データに対応し得る(例えば、図3のメモリモジュール360、370、および380のうち1つ)。一つの例において、ホストサーバに関連付けられたハイパーバイザは、第2温度プロファイルを管理し得る。加えて、ハイパーバイザは、また、第1温度プロファイルまたは第2温度プロファイルの少なくとも1つを更新するための温度スキャンを定期的に開始することもできる。上述のように、温度プロファイルを更新するために、プッシュまたはプルのいずれかの技法が(または、両方を組み合わせて)使用され得る。
【0039】
ステップ730は、少なくとも第1温度プロファイルに基づいて、メモリに対する書き込み第1要求を、第1プロセッサによって実行されている第1計算エンティティから、少なくとも複数の第1メモリモジュールおよび少なくとも複数の第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。一つの例において、ホストサーバに関連付けられたハイパーバイザは、メモリ書き込み操作を自動的にリダイレクトするのに役立ち得る。書き込み操作を開始するCPUは、ホストサーバのメモリを管理するためにハイパーバイザによって保持されるメモリマッピングテーブルに基づいて、メモリコントローラ(例えば、図3に関して先に説明したメモリコントローラ)の助けを得て、物理メモリに対して書き込むことができる。
【0040】
ステップ740は、少なくとも第2温度プロファイルに基づいて、メモリに対する書き込み第2要求を、第2プロセッサによって実行されている第2計算エンティティから、少なくとも複数の第3メモリモジュールおよび少なくとも複数の第4メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。一つの例において、ホストサーバに関連付けられたハイパーバイザは、メモリ書き込み操作を自動的にリダイレクトするのに役立ち得る。書き込み操作を開始するCPUは、ホストサーバのメモリを管理するためにハイパーバイザによって保持されるメモリマッピングテーブルに基づいて、メモリコントローラ(例えば、図3に関して先に説明したメモリコントローラ)の助けを得て、物理メモリに対して書き込むことができる。
【0041】
ステップ750は、複数の第1メモリチップの少なくともN個、Nは正の整数、の温度が温度閾値を満たしているか又は超えていると判断すると、複数の第2メモリチップのうち少なくとも1つのメモリチップの温度が温度閾値を満たさないか又は超えない場合に、少なくとも第1計算エンティティのサブセットを、第1ホストサーバから、第2ホストサーバへ自動的に移行すること、を含み得る。前述のように、図3に関して、計算エンティティ(例えば、VM)のライブマイグレーションは、2つのホストサーバ(例えば、VMの移行元のホストサーバおよびVMの移行先のホストサーバ)に関連付けられたハイパーバイザ間の調整によって実行され得る。図7では、フローチャート700は、所定の順序で実行される所定の数のステップを含むものとして説明されているが、リソースの収集方法は、異なる順序で実行される追加のステップを含んでよい。一つの例として、ハイパーバイザは、複数の第2メモリチップの少なくともO個、Oは正の整数、の温度が温度閾値を満たしているか又は超えていると判断すると、複数の第1メモリチップのうち少なくとも1つのメモリチップの温度が温度閾値を満たさないか又は超えない場合に、少なくとも第1計算エンティティのサブセットを、第2ホストサーバから、第1ホストサーバへ自動的に移行する。別の言葉で言えば、温度プロファイルが変化した場合に、VMは、あるホストサーバから別のホストサーバに移行され、そして、次いで、同じホストサーバに戻され得る。
【0042】
結論として、本開示は、ホストサーバが、第1プロセッサに結合された少なくとも複数の第1メモリモジュール、および、第2プロセッサに結合された少なくとも複数の第2メモリモジュールを含む、ホストサーバを含むクラウドコンピューティングシステムにおける方法に関する。本方法は、複数の第1メモリモジュールの少なくとも1つに含まれる複数の第1メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第1温度プロファイルを維持すること、を含み得る。本方法は、さらに、少なくとも複数の第2メモリモジュールに含まれる複数の第2メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第2温度プロファイルを維持すること、を含み得る。本方法は、さらに、少なくとも第1温度プロファイルに基づいて、メモリに対する書き込み第1要求を、第1プロセッサによって実行されている第1計算エンティティから、少なくとも複数の第1メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。本方法は、さらに、少なくとも第2温度プロファイルに基づいて、メモリに対する書き込み第2要求を、第2プロセッサによって実行されている第2計算エンティティから、少なくとも複数の第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。
【0043】
ホストサーバは、第1プロセッサまたは第2プロセッサによる実行のために複数の計算エンティティを管理するためのハイパーバイザを含み、かつ、ハイパーバイザは、第1温度プロファイルおよび第2温度プロファイルの両方を維持するように構成され得る。本方法は、さらに、第1温度プロファイルまたは第2温度プロファイルのうち少なくとも1つを更新するために、ハイパーバイザが、定期的に、温度スキャンを開始すること、を含み得る。
【0044】
本方法は、さらに、ハイパーバイザを含み、ハイパーバイザは、既定の時間枠の全期間中、または、既定の時間枠の全期間中で選択された回数について、温度閾値を超える温度を有している、K個のメモリチップ、Kは正の整数、を含むか否かの、第1温度プロファイルおよび第2温度プロファイルの分析に基づいて、第1メモリモジュールまたは第2メモリモジュールの少なくとも1つから選択された、メモリモジュールを隔離する。本方法は、さらに、ハイパーバイザを含み、ハイパーバイザは、他のメモリモジュールに対する特定のメモリモジュールの過剰使用を防止するために、計算エンティティによる前記複数の第1メモリモジュールおよび前記第2メモリモジュールそれぞれの使用に関連するメトリックを追跡する。
【0045】
本方法は、さらに、計算エンティティに割り当てられた仮想メモリと物理メモリとの間のマッピングを管理すること、を含む。第1計算エンティティおよび第2計算エンティティそれぞれは、サーバレス機能のための仮想マシン(VM)、マイクロVM、マイクロサービス、または、ユニカーネルのうち少なくとも1つを含む。
【0046】
さらに別の態様において、本開示は、ホストサーバを含む、システムに関する。ホストサーバは、第1プロセッサに結合された少なくとも複数の第1メモリモジュール、および、第2プロセッサに結合された少なくとも複数の第2メモリモジュールを含む。本システムは、さらに、ホストサーバに関連付けられたハイパーバイザを含む。ハイパーバイザは、(1)複数の第1メモリモジュールの少なくとも1つに含まれる複数の第1メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第1温度プロファイルを維持し、(2)少なくとも複数の第2メモリモジュールに含まれる複数の第2メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第2温度プロファイルを維持し、(3)少なくとも第1温度プロファイルに基づいて、メモリに対する書き込み第1要求を、第1プロセッサによって実行されている第1計算エンティティから、少なくとも複数の第1メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトし、かつ、(4)少なくとも第2温度プロファイルに基づいて、メモリに対する書き込み第2要求を、第2プロセッサによって実行されている第2計算エンティティから、少なくとも複数の第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、前記複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトする、ように構成され得る。
【0047】
本ハイパーバイザは、さらに、第1温度プロファイルまたは第2温度プロファイルのうち少なくとも1つを更新するために、定期的に、温度スキャンを開始する、ように構成されている。本ハイパーバイザは、さらに、既定の時間枠の全期間中、または、既定の時間枠の全期間中で選択された回数について、温度閾値を超える温度を有している、K個のメモリチップ、Kは正の整数、を含むか否かの、第1温度プロファイルおよび第2温度プロファイルの分析に基づいて、ハイパーバイザが、第1メモリモジュールまたは第2メモリモジュールの少なくとも1つから選択された、メモリモジュールを隔離する、ように構成されている。
【0048】
本ハイパーバイザは、さらに、他のメモリモジュールに対する特定のメモリモジュールの過剰使用を防止するために、計算エンティティによる複数の第1メモリモジュールおよび第2メモリモジュールそれぞれの使用に関連するメトリックを追跡する、ように構成されている。本ハイパーバイザは、さらに、計算エンティティに割り当てられた仮想メモリと物理メモリとの間のマッピングを管理する、ように構成されている。第1計算エンティティおよび第2計算エンティティそれぞれは、サーバレス機能のための仮想マシン(VM)、マイクロVM、マイクロサービス、または、ユニカーネルのうち少なくとも1つを含む。
【0049】
別の態様において、本開示は、第1ホストサーバおよび第2ホストサーバを含む、クラウドコンピューティングシステムにおける方法に関する。ここで、第1ホストサーバは、第1プロセッサに結合された少なくとも複数の第1メモリモジュール、および、第2プロセッサに結合された少なくとも複数の第2メモリモジュールを含み、第2ホストサーバは、第3プロセッサに結合された少なくとも複数の第3メモリモジュール、および、第4プロセッサに結合された少なくとも複数の第4メモリモジュールを含む。ここで、第1ホストサーバは、第1プロセッサまたは第2プロセッサによる実行のために複数の第1計算エンティティを管理する第1ハイパーバイザを含み、かつ、第2ホストサーバは、第3プロセッサまたは第4プロセッサによる実行のために複数の第2計算エンティティを管理する第2ハイパーバイザを含む。本方法は、少なくとも複数の第1メモリモジュールおよび少なくとも複数の第2メモリモジュールに含まれる複数の第1メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第1温度プロファイルを維持すること、を含み得る。本方法は、さらに、少なくとも複数の第3メモリモジュールおよび少なくとも複数の第4メモリモジュールに含まれる複数の第2メモリチップそれぞれに関連付けられた温度センサから受け取った情報に基づいて、第2温度プロファイルを維持すること、を含み得る。本方法は、さらに、少なくとも第1温度プロファイルに基づいて、メモリに対する書き込み第1要求を、第1プロセッサによって実行されている第1計算エンティティから、少なくとも複数の第1メモリモジュールおよび少なくとも複数の第2メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第1メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。本方法は、さらに、少なくとも第2温度プロファイルに基づいて、メモリに対する書き込み第2要求を、第2プロセッサによって実行されている第2計算エンティティから、少なくとも複数の第3メモリモジュールおよび少なくとも複数の第4メモリモジュールに含まれている、温度が温度閾値を満たさないか又は超えない、複数の第2メモリチップのうち選択された1つへ、自動的にリダイレクトすること、を含み得る。本方法は、さらに、複数の第1メモリチップの少なくともN個、Nは正の整数、の温度が温度閾値を満たしているか又は超えていると判断すると、複数の第2メモリチップのうち少なくとも1つのメモリチップの温度が温度閾値を満たさないか又は超えない場合に、少なくとも第1計算エンティティのサブセットを、第1ホストサーバから、第2ホストサーバへ自動的に移行すること、を含み得る。
【0050】
本方法は、さらに、複数の第2メモリチップの少なくともO個、Oは正の整数、の温度が温度閾値を満たしているか又は超えていると判断すると、複数の第1メモリチップのうち少なくとも1つのメモリチップの温度が温度閾値を満たさないか又は超えない場合に、少なくとも第1計算エンティティのサブセットを、第2ホストサーバから、第1ホストサーバへ自動的に移行すること、を含み得る。本方法は、さらに、第1温度プロファイルを更新するために、第1ハイパーバイザが、定期的に、温度スキャンを開始すること、および、第2温度プロファイルを更新するために、第2ハイパーバイザが、定期的に、温度スキャンを開始すること、を含み得る。
【0051】
本方法は、さらに、既定の時間枠の全期間中、または、既定の時間枠の全期間中で選択された回数について、温度閾値を超える温度を有している、K個のメモリチップ、Kは正の整数、を含むか否かを判断するための、第1温度プロファイルの分析により、第1ハイパーバイザが、第1メモリモジュールまたは第2メモリモジュールの少なくとも1つから選択された、メモリモジュールを隔離すること、を含み得る。本方法は、さらに、既定の時間枠の全期間中、または、既定の時間枠の全期間中で選択された回数について、温度閾値を超える温度を有している、K個のメモリチップ、Kは正の整数、を含むか否かを判断するための、第2温度プロファイルの分析により、第2ハイパーバイザが、第3メモリモジュールまたは第4メモリモジュールの少なくとも1つから選択された、メモリモジュールを隔離すること、を含み得る。
【0052】
本方法は、さらに、他のメモリモジュールに対する特定のメモリモジュールの過剰使用を防止するために、第1ハイパーバイザが、計算エンティティによる複数の第1メモリモジュールおよび第2メモリモジュールそれぞれの使用に関連するメトリックを追跡すること、を含み得る。本方法は、さらに、他のメモリモジュールに対する特定のメモリモジュールの過剰使用を防止するために、第2ハイパーバイザが、計算エンティティによる複数の第3メモリモジュールおよび第4メモリモジュールそれぞれの使用に関連するメトリックを追跡すること、を含み得る。
【0053】
ここに示されている方法、モジュール、およびコンポーネントは単に例示的なものであることが理解されるべきである。代替的、または追加的に、ここで説明される機能は、少なくとも部分的に、1つ以上のハードウェアロジックコンポーネントによって実行され得る。例えば、限定することなく、使用され得るハードウェアロジックコンポーネントの例示的なタイプは、フィールドプログラマブルゲートアレイ(FPGA)、特定用途向け集積回路(ASIC)、特定応用向け汎用品(Application-Specific Standard Products、ASSP)、システムオンチップ(SOC)、コンプレクス・プログラマブルロジックデバイス(Complex Programmable Logic Devices、CPLD)、等を含む。抽象的であるが、まだ明確な意味で、同じ機能性を達成するためのコンポーネントの任意の構成は、所望の機能性が達成されるように、効果的に「関連付け(“associated”)」られる。従って、特定の機能性を実現するためにここにおいて組み合わせられた2つのコンポーネントは、アーキテクチャまたは中間コンポーネントに関係なく、所望の機能性が達成されるように、互いに「関連付けられている(“associated with”)」とみなすことができる。同様に、そのように関連付けられた2つのコンポーネントは、また、所望の機能性を実現するために相互に「操作可能に接続(“operably connected”)」または「結合(“coupled”)」されているとみなすこともできる。
【0054】
この開示で説明されているいくつかの例に関連する機能性は、また、非一時的なメディアに保管された命令を含むこともできる。ここで使用される「非一時的な媒体(“non-transitory media”)」は、マシンを指定の方法で動作させるデータ及び/又は命令を保管している任意の媒体を指す。代表的な非一時的な媒体は、不揮発性媒体及び/又は揮発性媒体を含む。不揮発性媒体は、例えば、ハードディスク、ソリッドステートドライブ、磁気ディスクまたはテープ、光ディスクまたはテープ、フラッシュメモリ、EPROM、NVRAM、PRAM、または、他のそうした媒体、もしくは、そうした媒体のネットワークバージョンを含む。揮発性媒体は、例えば、DRAM、SRAM、キャッシュといったダイナミックメモリ、または、他のそうしたメディアを含む。非一時的な媒体は、伝送媒体とは異なるが、伝送媒体と組み合わせて使用することができる。伝送媒体は、マシンから又はマシンにデータ及び/又は命令を転送するために使用される。代表的な伝送媒体は、同軸ケーブル、光ファイバーケーブル、銅線、および、電波といった、無線媒体を含む。
【0055】
さらに、当業者であれば、上述された操作の機能性間の境界は、単なる例示であることを認識するだろう。複数の操作の機能が、1つの操作へと結合され、かつ/あるいは、1つの操作の機能が、追加の操作において分散されてよい。さらに、代替的な実施形態は、特定の操作の複数のインスタンスを含んでよく、そして、操作の順序は、様々な他の実施形態においては変更されてよい。
【0056】
本開示は、具体的な実施例を示しているが、以下の請求項において定められる本開示の範囲を逸脱することなく、様々な修正および変更がなされ得る。従って、本明細書および図面は、限定的な意味ではなく、例示的な意味で考慮されるべきであり、そして、そうした全ての変更は、本開示の範囲内に含まれるように意図されている。特定の例に関してここにおいて記載されている利益、利点、または、問題に対するソリューションは、任意または全ての請求項に係る重要で、必要とされ、または、不可欠な特徴または要素として解釈されるように意図されたものではない。
【0057】
さらに、ここで使用される用語「1つ(“a”または“an”)」は、1つ又は1つ以上、として定義される。また、「少なくとも1つ(“at least one”)」および「1つ以上(“on or more”)」といった導入句を請求項において使用することは、同じ請求項が、「1つ以上」または「少なくとも1つ」といった導入句、および、「1つ」といった不定冠詞を含む場合であっても、不定冠詞「1つ」による別の請求項要素の導入が、そうした導入された請求項要素を含む任意の特定な請求項を、そうした要素の1つだけを含む発明に限定すること、を意味するように理解されるべきではない。定冠詞の使用についても同様である。
【0058】
特に明記されていない限り、「第1(“first”)」および「第2(“second”)」といった用語は、そうした用語が表す要素の間を任意に区別するために使用される。従って、これらの用語は、そうした要素の時間的または他の優先順位付けを示すように、必ずしも意図されたものではない。
図1
図2
図3
図4
図5
図6
図7
【国際調査報告】