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

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

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

特表2024-510438コンピューティング・システムにおけるメモリ動作管理
<>
  • 特表-コンピューティング・システムにおけるメモリ動作管理 図1
  • 特表-コンピューティング・システムにおけるメモリ動作管理 図2
  • 特表-コンピューティング・システムにおけるメモリ動作管理 図3
  • 特表-コンピューティング・システムにおけるメモリ動作管理 図4
  • 特表-コンピューティング・システムにおけるメモリ動作管理 図5
  • 特表-コンピューティング・システムにおけるメモリ動作管理 図6
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-03-07
(54)【発明の名称】コンピューティング・システムにおけるメモリ動作管理
(51)【国際特許分類】
   G06F 12/0893 20160101AFI20240229BHJP
   G06F 12/06 20060101ALI20240229BHJP
【FI】
G06F12/0893
G06F12/06 515J
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2023555212
(86)(22)【出願日】2022-02-25
(85)【翻訳文提出日】2023-09-08
(86)【国際出願番号】 US2022017789
(87)【国際公開番号】W WO2022197419
(87)【国際公開日】2022-09-22
(31)【優先権主張番号】63/163,183
(32)【優先日】2021-03-19
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】17/328,891
(32)【優先日】2021-05-24
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【弁理士】
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【弁理士】
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】アガルワル,イシュワル
(72)【発明者】
【氏名】クリソス,ジョージ・ザカリアス
(72)【発明者】
【氏名】ローゼル・マルティネス、オスカー
【テーマコード(参考)】
5B160
5B205
【Fターム(参考)】
5B160AA20
5B205MM01
5B205MM61
5B205UU01
(57)【要約】
メモリ動作管理の技法が本明細書で開示される。1つの例示的な技法は、システム・メモリ・セクションに対応するデータを読み取る要求を受信すると、第1のメモリ(151)から、第1のメモリのデータ部分からのデータおよびメタデータ部分からメタデータを取り出すことを含む。次いで、この方法は、データ位置情報を解析して、第1のメモリが、受信された要求におけるシステム・メモリ・セクションに対応するデータを現在含んでいるかどうかを判定することを含むことができる。第1のメモリが、受信された要求におけるシステム・メモリ・セクションに対応するデータを現在含んでいると判定することに応答して、受信された要求に応答して、第1のメモリのデータ部分からの取り出されたデータをプロセッサに送信する。そうでない場合、本方法は、システム・メモリ・セクションに対応するデータを含む第2のメモリ(153)におけるメモリ位置を識別して、識別されたメモリ位置からデータを前記取り出すことを含むことができる。
【特許請求の範囲】
【請求項1】
プロセッサと、前記プロセッサに近接し、前記プロセッサのためのキャッシュとして構成された第1のメモリと、前記プロセッサとは別個であり、前記プロセッサとインターフェースされた第2のメモリと、前記第1および第2のメモリの動作を管理するように構成されたメモリ・コントローラとを有するコンピューティング・デバイスにおけるメモリ管理の方法であって、当該方法は:
前記メモリ・コントローラにおいて、システム・メモリ・セクションに対応するデータを前記プロセッサの前記キャッシュから読み出す要求を前記プロセッサから受信するステップと;
前記読み出す要求を受信することに応答して、前記メモリ・コントローラを用いて行われる、
前記第1のメモリから、前記第1のメモリのデータ部分からのデータおよびメタデータ部分からのメタデータを取り出すステップであって、前記メタデータ部分からの前記メタデータが、前記第1のメモリおよび前記第2のメモリにおける複数のシステム・メモリ・セクションのデータ位置情報をエンコードする、取り出すステップと;
前記第1のメモリの前記メタデータ部分からの取り出された前記メタデータにおける前記データ位置情報を解析して、前記第1のメモリが、前記受信された要求における前記システム・メモリ・セクションに対応するデータを現在含んでいるかどうかを判定するステップと;
前記第1のメモリが前記受信された要求における前記システム・メモリ・セクションに対応するデータを現在含んでいると判定することに応答して、前記受信された要求に応答して、前記第1のメモリの前記データ部分からの前記取り出されたデータを前記プロセッサに送信するステップとを含む、
方法。
【請求項2】
前記第1のメモリが前記受信された要求における前記システム・メモリ・セクションに対応するデータを現在含んでいないと判定することに応答して行われる、
前記受信された要求における前記システム・メモリ・セクションに対応するデータを含む前記第2のメモリにおけるメモリ位置を識別するために、前記取り出されたメタデータにおける前記データ位置情報をさらに解析するステップと;
前記受信された要求に応答して、前記第2のメモリにおける前記識別されたメモリ位置から前記データを取り出し、取り出されたデータを前記プロセッサに提供するステップとをさらに含む、
請求項1に記載の方法。
【請求項3】
前記第1のメモリが前記受信された要求における前記システム・メモリ・セクションに対応するデータを現在含んでいないと判定することに応答して行われる、
前記受信された要求における前記システム・メモリ・セクションに対応するデータを含む前記第2のメモリにおけるメモリ位置を識別するために、前記取り出されたメタデータにおける前記データ位置情報をさらに解析するステップと;
前記受信された要求に応答して、前記第2のメモリにおける前記識別されたメモリ位置から前記データを取り出し、取り出されたデータを前記プロセッサに提供するステップと;
前記第2のメモリにおける前記識別されたメモリ位置からの前記取り出されたデータを前記第1のメモリに書き込むステップとをさらに含む、
請求項1に記載の方法。
【請求項4】
前記第1のメモリが前記受信された要求における前記システム・メモリ・セクションに対応するデータを現在含んでいないと判定することに応答して行われる、
前記受信された要求における前記システム・メモリ・セクションに対応するデータを含む前記第2のメモリにおけるメモリ位置を識別するために、前記取り出されたメタデータにおける前記データ位置情報をさらに解析するステップと;
前記第2のメモリにおける前記識別されたメモリ位置から前記データを取り出すステップと;
前記第2のメモリにおける前記識別されたメモリ位置からの前記取り出されたデータを前記第1のメモリに書き込むステップと;
前記受信された要求における前記システム・メモリ・セクションに対応する前記データが現在前記第1のメモリにあることを示すように、前記第1のメモリの前記メタデータ部分における前記メタデータを修正するステップとをさらに含む、
請求項1に記載の方法。
【請求項5】
前記第1のメモリが前記受信された要求における前記システム・メモリ・セクションに対応するデータを現在含んでいないと判定することに応答して行われる、
前記受信された要求における前記システム・メモリ・セクションに対応するデータを含む前記第2のメモリにおけるメモリ位置を識別するために、前記取り出されたメタデータにおける前記データ位置情報をさらに解析するステップと;
前記第2のメモリにおける前記識別されたメモリ位置から前記データを取り出すステップと;
前記第2のメモリにおける前記識別されたメモリ位置からの前記取り出されたデータを前記第1のメモリに書き込むステップと;
前記第2のメモリにおける前記識別されたメモリ位置に、前記第1のメモリから前記取り出されたデータを書き込むステップとをさらに含む、
請求項1に記載の方法。
【請求項6】
前記第1のメモリが前記受信された要求における前記システム・メモリ・セクションに対応するデータを現在含んでいないと判定することに応答して行われる、
前記受信された要求における前記システム・メモリ・セクションに対応するデータを含む前記第2のメモリにおけるメモリ位置を識別するために、前記取り出されたメタデータにおける前記データ位置情報をさらに解析するステップと;
前記第2のメモリにおける前記識別されたメモリ位置から前記データを取り出すステップと;
前記第2のメモリにおける前記識別されたメモリ位置からの前記取り出されたデータを前記第1のメモリに書き込むステップと;
前記第1のメモリからの取り出された前記データを、前記第2のメモリにおける前記識別されたメモリ位置に書き込むステップと;
前記第1のメモリの前記メタデータ部分における前記メタデータを修正して:
前記受信された要求における前記システム・メモリ・セクションに対応する前記データが、現在、前記第1のメモリにあり、
前記第1のメモリに以前に保持されていたデータが、現在、前記第2のメモリにおける前記識別されたメモリ位置にあることを示すようにするステップとをさらに含む、
請求項1に記載の方法。
【請求項7】
前記メタデータ部分からの前記メタデータが一つまたは複数のビットを含み;
前記データ位置情報は、前記複数のシステム・メモリ・セクションのうちの1つに個々に対応する前記一つまたは複数のビットの組み合わせを含み;
前記データ位置情報を解析することは:
前記一つまたは複数のビットの組み合わせを識別し;
前記識別された組み合わせが前記受信された要求における前記システム・メモリ・セクションに対応するかどうかを判定することを含む、
請求項1に記載の方法。
【請求項8】
前記メタデータ部分からの前記メタデータが、一つまたは複数の誤り検査訂正(ECC)ビットを含み;
前記データ位置情報は、前記複数のシステム・メモリ・セクションのうちの1つに個々に対応する前記一つまたは複数のECCビットの組み合わせを含み;
前記データ位置情報を解析することは:
前記一つまたは複数のECCビットの組み合わせを識別し;
ECCビットの前記識別された組み合わせが前記受信された要求における前記システム・メモリ・セクションに対応するかどうかを判定することを含む、
請求項1に記載の方法。
【請求項9】
コンピューティング・デバイスであって、
プロセッサと;
前記プロセッサに近接し、前記プロセッサのためのキャッシュとして構成された第1のメモリと;
前記プロセッサとは別個であり、前記プロセッサとインターフェースされる第2のメモリと;
前記第1および第2のメモリの動作を管理するように構成されたメモリ・コントローラとを備え、前記メモリ・コントローラは:
前記メモリ・コントローラにおいて、システム・メモリ・セクションに対応するデータのブロックを前記プロセッサの前記キャッシュに書き込む要求を前記プロセッサから受信すると;
前記第1のメモリから、前記第1のメモリのメタデータ部分からのメタデータを取り出すステップであって、前記メタデータ部分からの前記メタデータは、前記第1のメモリおよび前記第2のメモリにおける複数のシステム・メモリ・セクションのデータ位置情報をエンコードする、ステップと;
前記第1のメモリの前記メタデータ部分からの取り出された前記メタデータにおける前記データ位置情報を解析して、前記第1のメモリが前記受信された要求における前記システム・メモリ・セクションに対応するデータを現在含んでいるかどうかを判定するステップと;
前記第1のメモリが前記受信された要求における前記システム・メモリ・セクションに対応するデータを現在含んでいると判定することに応答して、
前記システム・メモリ・セクションに対応する前記データのブロックを前記第1のメモリに書き込み;
前記プロセッサに、前記データのブロックの書き込みの完了を示すステップと
を実行するために前記メモリ・コントローラによって実行可能な命令を有する、
コンピューティング・デバイス。
【請求項10】
前記メモリ・コントローラは:
前記第1のメモリが前記受信された要求における前記システム・メモリ・セクションに対応するデータを現在含んでいないと判定することに応答して、
前記取り出されたメタデータにおける前記データ位置情報をさらに解析して、前記受信された要求における前記システム・メモリ・セクションに対応するデータを現在含んでいる前記第2のメモリにおけるメモリ位置を識別するステップと;
前記第2のメモリにおける前記識別されたメモリ位置に前記データのブロックを書き込むステップと;
前記プロセッサに、前記データのブロックの書き込みの完了を示すステップと
を実行するために前記メモリ・コントローラによって実行可能な追加的な命令を有する、
請求項9に記載のコンピューティング・デバイス。
【発明の詳細な説明】
【背景技術】
【0001】
コンピューティングにおいて、メモリは典型的には、コンピュータまたは他のタイプのコンピューティング・デバイス内の中央処理装置(CPU)による即時アクセスのためにデータを記憶するために使用されるコンピューティング・コンポーネントを指す。メモリに加えて、コンピュータはまた、コンピュータ上にデータを永続的に記憶する一つまたは複数のコンピュータ記憶デバイス(たとえば、ハードディスクドライブまたはHDD)をも含むことができる。動作において、アプリケーションの命令などのデータは、まずコンピュータ記憶デバイスからメモリにロードされうる。次いで、CPUは、メモリにロードされたアプリケーションの命令を実行して、ワードプロセッシング、オンライン会議などのコンピューティング・サービスを提供することができる。
【発明の概要】
【発明が解決しようとする課題】
【0002】
この概要は、以下の詳細な説明においてさらに説明される概念のセレクションを簡略化された形で紹介するために提供される。この概要は、特許請求される主題の主要な特徴または本質的な特徴を特定することを意図するものではなく、特許請求される主題の範囲を限定するために使用されることを意図するものでもない。
【0003】
コンピューティング・デバイスにおいて、メモリはキャッシュ・メモリとメイン・メモリの両方を含むことができる。キャッシュ・メモリは、メイン・メモリとCPUとの間のバッファとして機能し、頻繁に使用されるデータおよび命令を保持してCPUが即座に利用できるようにする超高速メモリでありうる。たとえば、ある種のコンピュータは、CPU用のキャッシュ・メモリとしてCPUとともにパッケージ化されたダブルデータレート(DDR)シンクロナスダイナミックランダムアクセスメモリ(SDRAM)を含むことができる。そのようなキャッシュ・メモリは、CPUに近接しているために「ニアメモリ」と呼ばれることがある。ニアメモリに加えて、CPUは、コンピュートエクスプレスリンク(Compute Express Link、CXL)または他の適切なタイプのインターフェース・プロトコルを介してメイン・メモリとインターフェースをもつこともできる。メイン・メモリは、ニアメモリよりもCPUから遠い距離にあるため、「ファーメモリ」と呼ばれることがある。
【0004】
CPUのためのキャッシュ・メモリとしてDDR SDRAMを使用することは、ある種の欠点を有しうる。たとえば、ニアメモリは、典型的には、ファーメモリよりも高価であり、コンピューティング・デバイス上のオペレーティングシステム(OS)によってアクセスされるために利用可能ではなく、またはオペレーティングシステム(OS)にとって可視でさえない。その代わりに、CPUがニアメモリに対する排他的な制御を有する。加えて、DDR SDRAMなどのニアメモリ・デバイスは、非常に高価でありうる。いくつかのデータセンター・サーバーでは、ニアメモリとして使用されるDDR SDRAMのコストは、データセンター・サーバーの総コストの最大約50パーセントになりうる。よって、ニアメモリがOSにとって可視であり、OSによってアクセス可能でありうる場合、データセンター・サーバーのための資本投資、およびデータセンター・サーバーからさまざまなコンピューティング・サービスを提供するための関連するコストは、著しく低減されうる。
【課題を解決するための手段】
【0005】
開示される技術のいくつかの実施形態は、ニアメモリが、コンピューティング・デバイス内のCPUのための専用キャッシュ・メモリであるのではなく、ファーメモリのためのスワップ・バッファとして使用される、メモリ階層化(memory tiering)を実装することに向けられる。よって、CPUは、ニアメモリおよびファーメモリがアドレス指定可能かつ割り当て可能なシステム・メモリとしてOSに公開されていながら、ニアメモリ内にデータをキャッシングすることを続けることができる。ある種の実装では、ハードウェア・メモリ・コントローラは、キャッシュ・ライン粒度(たとえば、64バイト)でスワッピング動作を制御するように構成されうる。よって、コンピューティング・デバイスは、いかなるソフトウェア介入も必要とせず、ソフトウェアの影響も引き起こさない。他の実装では、ハードウェアおよびソフトウェア・コンポーネントの両方を有するメモリ・コントローラが、そのようなスワッピング動作を制御するために使用されうる。
【0006】
ニアメモリとファーメモリとの間の記憶スペースの比率は、柔軟でありうる。たとえば、ニアメモリとファーメモリとの間の比率は、1対1以上の任意の整数でありうる。例解用の例では、システム・メモリ・アドレスの範囲は、1対3の比のニアメモリとファーメモリとの組み合わせによってカバーされうる。よって、システム・メモリの範囲は、4つのセクション、たとえば、A、B、C、およびDに分割されることができる。各セクションは、データ部分(たとえば、512ビット)およびメタデータ部分(たとえば、128ビット)を含むことができる。データ部分は、ユーザー・データを表すデータ、またはコンピューティング・デバイス内のCPUによって実行可能な命令を含むように構成されうる。メタデータ部分は、データ部分内のデータのさまざまな属性を表すデータを含むことができる。たとえば、メタデータ部分は、誤り検査および訂正(ECC)ビットまたは他の適切なタイプの情報を含むことができる。
【0007】
開示される技術のいくつかの実施形態によれば、ニアメモリ内のメタデータ部分内のいくつかのビット(たとえば、ECCビット)は、(1)システム・メモリの範囲のどのセクションをニアメモリが現在保持するか、および(2)ファーメモリ内の、システム・メモリの範囲の追加的セクションの位置を示すように構成されることができる。たとえば、システム・メモリの4つのセクションを有する上記の例では、ニアメモリ内のメタデータ部分内の8ビットを、前述の情報を示すように構成することができる。たとえば、最初の2ビットの第1の対は、次のように、どのセクションが現在ニアメモリ内に保持されているかを示すように構成されることができる。
【表1】
よって、メモリ・コントローラは、ビット1およびビット2がそれぞれ0および0を含むとき、ニアメモリがシステム・メモリのセクションAからのデータを含むことを容易に判別することができる。
【0008】
上に示した例では、最初の2ビットはニアメモリに対応する一方、追加の6ビットは、システム・メモリの範囲の対応するセクションにマッピングされる、ファーメモリ内の位置に個々に対応する3つの対に細分されることができる。たとえば、第2、第3、および第4の対はそれぞれ、次のように、ファーメモリ内の第1、第2、または第3の位置に対応することができる。
【表2】
【0009】
よって、メモリ・コントローラは、システム・メモリのあるセクションからのデータがたとえ現在ニアメモリ内になくても、ファーメモリ内のどこにあるかを容易に決定することができる。たとえば、第2の対(すなわち、ビット3およびビット4)が(0,0)を含むとき、メモリ・コントローラは、システム・メモリのセクションAに対応するデータがファーメモリ内の第1の位置にあると判断するように構成されうる。前述の例は、システム・メモリの範囲の個々のセクションの位置をエンコードするためにメタデータ部分内の8ビットを使用するが、他の実装では、メタデータ部分内の他の適切な数のビットが、同じ情報をエンコードするために使用されうる。たとえば、4つのセクションを有する上記の図示された例では、5、6、または7ビットが、セクションの位置情報をエンコードするために使用されうる。
【0010】
ニアメモリ内のメタデータ部分からのデータを使用して、メモリ・コントローラは、ニアメモリをスワップ・バッファとして使用するために、ニアメモリとファーメモリとの間のスワップ動作を管理するように構成されうる。たとえば、読み出し動作中に、メモリ・コントローラは、ニアメモリから読み出して、ニアメモリのデータ部分およびメタデータ部分の両方からデータを取り出すように構成されうる。次いで、メモリ・コントローラは、上記のテーブルを使用して、取り出されたデータがシステム・メモリのどのセクションに対応するかを決定し、決定されたセクションが、読み取られるべきターゲット・セクションに一致するかどうかを判定するように構成されうる。たとえば、ターゲット・セクションがセクションAであり、メタデータ部分からの最初の2ビットが(0,0)を含むとき、メモリ・コントローラは、取り出されたデータがセクションAからのものであると決定するように構成されうる。よって、メモリ・コントローラは、セクションAからの取り出されたデータを、コンピューティング・デバイス上で実行されるアプリケーションまたはOSなどの要求元エンティティに転送することができる。
【0011】
一方、メタデータ部分からの最初の2ビットが(0,0)の代わりに(0,1)を含むとき、たとえば、メモリ・コントローラは、取り出されたデータがセクションA(「Aデータ」と呼ばれる)ではなくセクションBに属する(「Bデータ」と呼ばれる)と決定するように構成されうる。次いで、メモリ・コントローラは、メタデータ部分内の追加ビットを調べることに進み、どのビット対が(0,0)を含むかを判別することができる。たとえば、メタデータ部分からの第2の対(ビット3およびビット4)が(0,0)を含むとき、メモリ・コントローラは、Aデータがファーメモリ内の第1の位置に位置すると決定するように構成されうる。それに応答して、メモリ・コントローラは、ファーメモリ内の第1の位置からAデータを読み出し、Aデータを要求元エンティティに提供するように構成されうる。次いで、メモリ・コントローラは、取り出されたAデータをニアメモリに書き込み、以前に取り出されたBデータをファーメモリ内の第1のセクションに書き込むように構成されうる。メモリ・コントローラはまた、ニアメモリ内のセクションAとセクションBとの間のデータのスワッピングを反映するよう、ニアメモリ内のメタデータ部分内のビットを修正するように構成されることができる。
【0012】
書き込み動作中、メモリ・コントローラは、まずニアメモリ内のメタデータ部分からデータを読み出すように構成されうる。メモリ・コントローラは、次いで、システム・メモリのどのセクションからのデータがニアメモリ内に現在保持されているかを決定し、決定されたセクションが書き込まれるべきターゲット・セクションに一致するかどうかを判定するように構成されうる。たとえば、書き込み動作のためのターゲット・セクションがセクションAであり、メタデータ部分からの最初の2ビットが(0,0)を含むとき、メモリ・コントローラは、Aデータが現在ニアメモリ内にあると判断するように構成されうる。それに応答して、メモリ・コントローラは、ニアメモリの前記データ部分内のデータを上書きし、書き込み動作の完了を報告するように構成されうる。
【0013】
一方、メタデータ部分からの最初の2ビットが(0,1)を含む場合、メモリ・コントローラは、データBが現在ニアメモリ内にあると判断するように構成されうる。それに応答して、メモリ・コントローラは、ニアメモリに書き込むことを控え、代わりに、メタデータ部分の追加のビットを調べ続けて、どのビット対が(0,0)を含むかを決定するように構成されうる。たとえば、メタデータ部分からの第2の対(ビット3およびビット4)が(0,0)を含むとき、メモリ・コントローラは、Aデータがファーメモリ内の第1の位置に現在位置していると判断するように構成されうる。それに応答して、メモリ・コントローラは、ニアメモリの代わりにファーメモリ内の第1の位置に書き込むように構成されうる。完了すると、メモリ・コントローラは、書き込み動作の完了を報告するように構成されうる。
【0014】
開示される技術のいくつかの実施形態は、以前にキャッシュ・メモリとして使用され、OSには不可視であったメモリが、OSによってアドレス指定可能なシステム・メモリとして構成されることを許容することによって、コンピューティング・デバイスの動作および性能を改善することができる。たとえば、ニアメモリをCPUのための専用キャッシュ・メモリとして使用する代わりに、ニアメモリは、上述のスワッピング動作を介して、CPUにキャッシング機能を提供し続ける一方で、割り当て可能なシステム・メモリとして使用されうる。アドレス指定可能なシステム・メモリの量を増加させることによって、コンピューティング・デバイスにおけるコンピューティングまたは他の適切なタイプのレイテンシーを減少させることができる。
【図面の簡単な説明】
【0015】
図1】開示される技術の実施形態による、メモリ動作管理を実装する分散コンピューティング・システムを示す概略図である。
【0016】
図2】開示される技術の実施形態による、図1の分散コンピューティング・システムのいくつかのハードウェア/ソフトウェア・コンポーネントを示す概略図である。
【0017】
図3】AおよびBは、開示される技術の実施形態によるシステム・メモリの階層化の一例を示す概略図である。
【0018】
図4】AおよびBは、開示される技術の実施形態による、スワップ・バッファとしてニアメモリを使用する例示的な読み出し動作を示す概略タイミング図である。
【0019】
図5】AおよびBは、開示される技術の実施形態による、スワップ・バッファとしてニアメモリを使用する例示的な書き込み動作を示す概略タイミング図である。
【0020】
図6図1の分散コンピューティング・システムのある種のコンポーネントに適したコンピューティング・デバイスである。
【発明を実施するための形態】
【0021】
メモリ動作管理のためのシステム、デバイス、コンポーネント、モジュール、ルーチン、データ構造、およびプロセスのある種の実施形態が、以下で説明される。以下の説明では、開示される技術のある種の実施形態の十全な理解を提供するために、構成要素の特定の詳細が含まれる。当業者はまた、本技術が追加の実施形態を有しうることを理解するであろう。本技術はまた、図1図6を参照して以下に説明される実施形態の詳細のうちのいくつかを伴わずに実施されることもできる。たとえば、データセンターまたは他の適切な分散コンピューティング・システムにおいて実装される代わりに、本明細書で開示されるメモリ動作管理技法の諸側面は、パーソナルコンピュータ、スマートフォン、タブレット、または他の適切なタイプのコンピューティング・デバイス上でも実装されうる。
【0022】
本明細書で使用されるところでは、「分散コンピューティング・システム」という用語は、一般に、複数のサーバーまたはホストを互いにおよび/または外部ネットワーク(たとえば、インターネット)に相互接続する複数のネットワーク・ノードを有する相互接続されたコンピュータ・システムを指す。「ネットワーク・ノード」という用語は、一般に、物理ネットワーク・デバイスを指す。例示的なネットワーク・ノードは、ルーター、スイッチ、ハブ、ブリッジ、ロードバランサー、セキュリティゲートウェイ、またはファイアウォールを含む。「ホスト」は、一般に、物理コンピューティング・デバイスを指す。ある種の実施形態では、ホストは、たとえば、一つまたは複数の仮想マシン、仮想スイッチ、または他の好適な仮想化コンポーネントを実装するように構成されることができる。たとえば、ホストは、一つまたは複数の仮想マシン、仮想スイッチ、または他の適切なタイプの仮想コンポーネントをサポートするように構成されたハイパーバイザーを有するサーバーを含むことができる。他の実施形態では、ホストは、適切なアプリケーションをオペレーティングシステム上で直接実行するように構成されうる。
【0023】
コンピュータ・ネットワークは、ある種の実装では、アンダーレイ・ネットワークの上に実装されるオーバーレイ・ネットワークに概念的に分割されうる。「オーバーレイ・ネットワーク」は、一般に、アンダーレイ・ネットワークにかぶせて実装され、その上で動作する抽象化されたネットワークを指す。アンダーレイ・ネットワークは、互いに相互接続された複数の物理ネットワーク・ノードを含むことができる。オーバーレイ・ネットワークは、一つまたは複数の仮想ネットワークを含むことができる。「仮想ネットワーク」は、一般に、オーバーレイ・ネットワーク内のアンダーレイ・ネットワークの一部の抽象化を指す。仮想ネットワークは、仮想ネットワークおよび関連するコンピューティング、ストレージ、または他の適切なリソースにアクセスするためにユーザーまたは「テナント」によって個々に使用される「テナント・サイト」と呼ばれる一つまたは複数の仮想エンドポイントを含むことができる。テナント・サイトは、一つまたは複数のテナント・エンドポイント(「TEP」)、たとえば、仮想マシンをホストすることができる。仮想ネットワークは、異なるホスト上の複数のTEPを相互接続することができる。オーバーレイ・ネットワーク内の仮想ネットワーク・ノードは、アンダーレイ・ネットワーク内の一つまたは複数の物理ネットワーク・ノードに沿った一つまたは複数のネットワーク・ルートに個々に対応する仮想リンクによって互いに接続されることができる。他の実装では、コンピュータ・ネットワークはアンダーレイ・ネットワークのみを含むことができる。
【0024】
また、本明細書で使用されるところでは、「ニアメモリ」という用語は、概して、プロセッサからある距離にある他の「ファーメモリ」よりもプロセッサ(たとえば、CPU)に物理的に近接しているメモリを指す。たとえば、ニアメモリは、インターポーザーおよび/またはシリコン貫通ビアを介して一つまたは複数のCPUダイとともに集積回路(IC)コンポーネント・パッケージに組み込まれる一つまたは複数のDDR SDRAMダイを含むことができる。対照的に、ファーメモリは、CPUがCXLまたは他の適切なタイプのプロトコルを介してインターフェースをもつことができる、アクセラレータ、メモリ・バッファ、またはスマートI/Oデバイス上の追加のメモリを含むことができる。たとえば、データセンターでは、複数のサーバー/サーバーブレード上の複数のメモリデバイスが、該サーバー/サーバーブレードのうちの1つ上の単一のCPUに割り当て可能であるようにプールされうる。CPUは、データセンター内のコンピュータ・ネットワークを介して、割り当てられたファーメモリにアクセスすることができる。
【0025】
図1は、開示された技術の実施形態による、メモリ動作管理を実装する分散コンピューティング・システム100を示す概略図である。図1に示されるように、分散コンピューティング・システム100は、複数のホスト106と、対応するユーザー101に関連付けられた複数のクライアント・デバイス102と、互いに動作上結合されたプラットフォーム・コントローラ125とを相互接続するアンダーレイ・ネットワーク108を含むことができる。プラットフォーム・コントローラ125は、クラスターコントローラ、ファブリックコントローラ、データベースコントローラ、および/またはサーバー106および/または分散コンピューティング・システム100内の他のコンポーネントのリソースおよび動作を監視および管理するように構成された他の適切なタイプのコントローラでありうる。分散コンピューティング・システム100のコンポーネントが図1に示されているが、他の実施形態では、分散コンピューティング・システム100は、追加のおよび/または異なるコンポーネントまたは構成を含むこともできる。たとえば、ある種の実施形態では、分散コンピューティング・システム100は、ネットワーク・ストレージ・デバイス、追加のホスト、および/または他の適切な構成の他の適切なコンポーネント(図示せず)も含むことができる。
【0026】
図1に示されるように、アンダーレイ・ネットワーク108は、複数のホスト106とユーザー101のクライアント・デバイス102とを相互接続する一つまたは複数のネットワーク・ノード112を含むことができる。ある種の実施形態では、ホスト106は、ラック、アクションゾーン、グループ、セット、または他の好適な区分に編成されることができる。たとえば、図示された実施形態において、ホスト106は、第1、第2、および第3のホスト・セット107a~107cとして個々に識別される3つのホスト・セットにグループ化される。ホスト・セット107a~107cのそれぞれは、一般に「トップオブラック」〔ラックの最上部〕ネットワーク・ノードまたは「TOR」と呼ばれる対応するネットワーク・ノード112a~112cにそれぞれ動作上結合される。次いで、TOR 112a~112cは追加のネットワーク・ノード112に動作上結合されて、階層型、フラット型、メッシュ型、または他の適切なタイプのトポロジーでコンピュータ・ネットワークを形成することができる。アンダーレイ・ネットワークは、ホスト106、プラットフォーム・コントローラ125、およびユーザー101の間の通信を許容できる。他の実施形態では、複数のホスト・セット107a~107cは、単一のネットワーク・ノード112を共有することができ、または他の適切な構成を有することができる。
【0027】
ホスト106は、コンピューティング、ストレージ、および/または他の適切なクラウドもしくは他の適切なタイプのコンピューティング・サービスをユーザー101に提供するように個々に構成されることができる。たとえば、図2を参照して以下により詳細に説明されるように、ホスト106のうちの1つは、ユーザー101からの要求に際して、一つまたは複数の仮想マシン144(図2に示される)またはコンテナ(図示せず)を開始および維持することができる。次いで、ユーザー101は、提供された仮想マシン144またはコンテナを利用して、データベース、計算、通信、および/または他の適切なタスクを実行することができる。ある種の実施形態において、ホスト106のうちの1つは、複数のユーザー101に仮想マシン144を提供することができる。たとえば、ホスト106aは、ユーザー101a~101cのそれぞれに個々に対応する3つの仮想マシン144をホストすることができる。他の実施形態では、複数のホスト106が、ユーザー101a~101cのための仮想マシン144をホストすることができる。
【0028】
クライアント・デバイス102はそれぞれ、ユーザー101がアンダーレイ・ネットワーク108を介してホスト106によって提供されるコンピューティング・サービスにアクセスすることを容易にするコンピューティング・デバイスを含むことができる。図示された実施形態では、クライアント・デバイス102は個々にデスクトップコンピュータを含む。他の実施形態では、クライアント・デバイス102はまた、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、または他の好適なコンピューティング・デバイスを含むことができる。例解の目的で3人のユーザー101が図1に示されているが、他の実施形態では、分散コンピューティング・システム100は、任意の適切な数のユーザー101が、分散コンピューティング・システム100内のホスト106によって提供されるクラウドまたは他の適切なタイプのコンピューティング・サービスにアクセスすることを容易にすることができる。
【0029】
図2は、開示された技術の実施形態による分散コンピューティング・システム100のある種のハードウェア/ソフトウェア・コンポーネントを示す概略図である。図2は、図1のアンダーレイ・ネットワーク108上に実装されることができるオーバーレイ・ネットワーク108'を示す。オーバーレイ・ネットワーク108'の特定の構成が図2に示されているが、他の実施形態では、オーバーレイ・ネットワーク108'は、他の適切な方法で構成されることもできる。図2では、明確のために、図1のアンダーレイ・ネットワーク108のある種のコンポーネントのみが示されている。
【0030】
図2および本明細書の他の図において、個々のソフトウェア・コンポーネント、オブジェクト、クラス、モジュール、およびルーチンは、C、C++、C#、Java(登録商標)、および/または他の適切なプログラミング言語でソースコードとして書かれたコンピュータ・プログラム、プロシージャ、またはプロセスであってもよい。コンポーネントは、限定はしないが、一つまたは複数のモジュール、オブジェクト、クラス、ルーチン、プロパティ、プロセス、スレッド、実行可能ファイル、ライブラリ、または他のコンポーネントを含むことができる。コンポーネントは、ソースまたはバイナリ形式であってもよい。コンポーネントは、コンパイル前のソースコード(たとえば、クラス、プロパティ、プロシージャ、ルーチン)、コンパイルされたバイナリユニット(たとえば、ライブラリ、実行可能ファイル)、または実行時にインスタンス化され使用されるアーティファクト(たとえば、オブジェクト、プロセス、スレッド)の側面を含むことができる。
【0031】
システム内のコンポーネントは、システム内で異なる形態をとることができる。一例として、第1のコンポーネント、第2のコンポーネント、および第3のコンポーネントを備えるシステムは、ソースコードでのプロパティである第1のコンポーネントと、バイナリのコンパイルされたライブラリである第2のコンポーネントと、実行時に生成されるスレッドである第3のコンポーネントとを有するシステムを包含できるが、これに限定されない。コンピュータ・プログラム、プロシージャ、またはプロセスは、オブジェクト、中間コード、または機械コードにコンパイルされ、パーソナルコンピュータ、ネットワークサーバー、ラップトップコンピュータ、スマートフォン、および/または他の好適なコンピューティング・デバイスの一つまたは複数のプロセッサによる実行のために提示されてもよい。
【0032】
同様に、コンポーネントはハードウェア回路を含んでいてもよい。当業者は、ハードウェアは固定化されたソフトウェアとみなすことができ、ソフトウェアは流動化されたハードウェアとみなすことができることを認識するであろう。単なる一例として、コンポーネント内のソフトウェア命令は、プログラマブルロジックアレイ回路に焼き付けられていてもよく、または適切な集積回路を有するハードウェア回路として設計されてもよい。同様に、ハードウェアはソフトウェアによってエミュレートされてもよい。ソースコード、中間コード、および/またはオブジェクトコード、ならびに関連するデータのさまざまな実装は、読み出し専用メモリ、ランダムアクセスメモリ、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および/または伝搬信号を除く他の適切なコンピュータ可読記憶媒体を含むコンピュータメモリに記憶されうる。
【0033】
図2に示されるように、ソース・ホスト106aならびに宛先ホスト106bおよび106b'(宛先ホスト106bのみが詳細な構成要素とともに示されている)はそれぞれ、互いに動作上結合されたプロセッサ132、メモリ134、ネットワークインターフェースカード136、およびパケット・プロセッサ138を含むことができる。他の実施形態では、ホスト106はまた、オペレーターおよび/もしくは自動化ソフトウェアコントローラ(図示せず)、または他の好適なタイプのハードウェア構成要素から入力を受け取り、それらに出力を提供するように構成された入力/出力デバイスを含むことができる。
【0034】
プロセッサ132は、マイクロプロセッサ、キャッシュ、および/または他の適切な論理デバイスを含むことができる。メモリ134は、揮発性および/または不揮発性媒体(たとえば、ROM、RAM、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、および/または他の適切な記憶媒体)、および/またはプロセッサ132から受信されたデータならびにプロセッサ510のための命令(たとえば、図5のA~Dを参照して以下で説明する方法を実行するための命令)を記憶するように構成された他のタイプのコンピュータ可読記憶媒体を含むことができる。図2では例示のために個々のホスト106に1つのプロセッサ132および1つのメモリ134のみが示されているが、他の実施形態では、個々のホスト106は、2つ、6つ、8つ、または任意の他の適切な数のプロセッサ132および/またはメモリ134を含むことができる。
【0035】
ソース・ホスト106aおよび宛先ホスト106bは、プロセッサ132によって実行可能なメモリ134内の命令を個々に含むことができ、該命令は、個々のプロセッサ132に、ハイパーバイザー140(個々に第1および第2のハイパーバイザー140aおよび140bとして識別される)およびオペレーティングシステム141(個々に第1および第2のオペレーティングシステム141aおよび141bとして識別される)を提供させる。ハイパーバイザー140およびオペレーティングシステム141は別個のコンポーネントとして示されているが、他の実施形態では、ハイパーバイザー140は、ホスト106上で実行されるオペレーティングシステム141またはホスト106のファームウェアコンポーネントの上で動作することができる。
【0036】
ハイパーバイザー140は、テナント・サイト142に編成された一つまたは複数の仮想マシン144を生成、監視、終了、および/または他の仕方で管理するように個々に構成することができる。たとえば、図2に示されるように、ソース・ホスト106aは、第1および第2のテナント・サイト142aおよび142bをそれぞれ管理する第1のハイパーバイザー140aを提供することができる。宛先ホスト106bは、第1および第2のテナント・サイト142a'および142b'をそれぞれ管理する第2のハイパーバイザー140bを提供することができる。ハイパーバイザー140は、ソフトウェア・コンポーネントとして図2に個別に示されている。しかしながら、他の実施形態では、ハイパーバイザー140は、ファームウェアおよび/またはハードウェア・コンポーネントでありうる。テナント・サイト142はそれぞれ、特定のテナント(図示せず)のための複数の仮想マシン144を含むことができる。たとえば、ソース・ホスト106aおよび宛先ホスト106bは、第1のテナント101a(図1)のためのテナント・サイト142aおよび142a'を両方ともホストすることができる。ソース・ホスト106aおよび宛先ホスト106bは、第2のテナント101b(図1)のためのテナント・サイト142bおよび142b'を両方ともホストすることができる。各仮想マシン144は、対応するオペレーティングシステム、ミドルウェア、および/またはアプリケーションを実行することができる。
【0037】
また図2に示されるように、分散コンピューティング・システム100は、複数のホスト106にわたってテナント・サイト142aおよび142bを相互接続する一つまたは複数の仮想ネットワーク146を有するオーバーレイ・ネットワーク108'を含むことができる。たとえば、第1の仮想ネットワーク142aは、ソース・ホスト106aおよび宛先ホスト106bにおける第1のテナント・サイト142aおよび142a'を相互接続する。第2の仮想ネットワーク146bは、ソース・ホスト106aおよび宛先ホスト106bにおける第2のテナント・サイト142bおよび142b'を相互接続する。単一の仮想ネットワーク146が1つのテナント・サイト142に対応するものとして示されているが、他の実施形態では、複数の仮想ネットワーク146(図示せず)が単一のテナント・サイト146に対応するように構成されてもよい。
【0038】
仮想マシン144は、一つまたは複数のアプリケーション147を実行して、適切なクラウドまたは他の適切なタイプのコンピューティング・サービスをユーザー101(図1)に提供するように構成されることができる。たとえば、ソース・ホスト106aは、オンライン取引を監視し、コンピューティング・サービスに加入している複数のユーザー101に価格データを配信するコンピューティング・サービスを提供するように構成されたアプリケーション147を実行することができる。仮想ネットワーク146上の仮想マシン144は、仮想マシン144が異なるホスト106上に位置されていても、アンダーレイ・ネットワーク108(図1)を介して互いに通信することもできる。
【0039】
各仮想ネットワーク146の通信は、他の仮想ネットワーク146から隔離されうる。ある種の実施形態では、通信は、セキュリティゲートウェイを通して、または他の仕方で制御された様式で、1つの仮想ネットワーク146から別の仮想ネットワークに横断することを許容されることができる。仮想ネットワーク・アドレスは、特定の仮想ネットワーク146内の仮想マシン144のうちの1つに対応することができる。よって、異なる仮想ネットワーク146は、同じ一つまたは複数の仮想ネットワーク・アドレスを使用することができる。例示的な仮想ネットワーク・アドレスは、IPアドレス、MACアドレス、および/または他の適切なアドレスを含むことができる。仮想マシン144間の通信を容易にするために、ネットワークインターフェースカード136を介して異なる仮想マシン144に向けられ、パケット・プロセッサ138によって容易にされるパケットをスイッチまたはフィルタリングするように仮想スイッチ(図示せず)が構成されることができる。
【0040】
図2に示されるように、互いとの、または外部デバイスとの通信を容易にするために、個々のホスト106はまた、コンピュータ・ネットワーク(たとえば、図1のアンダーレイ・ネットワーク108)とインターフェースをもつためのネットワークインターフェースカード(「NIC」)136を含むことができる。NIC 136は、イーサネット(登録商標)、ファイバーチャネル、Wi-Fi、または他の適切な物理および/またはデータリンク層規格に従ってネットワーク媒体(たとえば、光ファイバー)を介してデータを(たとえば、パケットとして)送信/受信することによってホスト106間の通信を可能にするために、ネットワークアダプター、LANアダプター、物理ネットワークインターフェース、または他の適切なハードウェア回路および/またはファームウェアを含むことができる。動作中、NIC 136は、ホスト106上で実行される適切なソフトウェア・コンポーネントへの/からの通信を容易にすることができる。例示的なソフトウェア・コンポーネントは、仮想スイッチ141、仮想マシン144、仮想マシン144上で実行されるアプリケーション147、ハイパーバイザー140、または他の適切なタイプのコンポーネントを含むことができる。
【0041】
ある種の実装では、パケット・プロセッサ138は、通信セキュリティを実施し、ネットワーク仮想化を実行し、ネットワーク・アドレスを変換し、通信フロー状態を維持/制限し、または他の適切な機能を実行するためのネットワーク・トラフィック動作を容易にするために、NIC 136に相互接続され、および/またはそれと統合されることができる。ある種の実装では、パケット・プロセッサ138は、NIC 136と統合されたフィールドプログラマブルゲートアレイ(「FPGA」)を含むことができる。
【0042】
FPGAは、論理回路のアレイと、製造後にユーザーによって論理回路が論理ゲートのように「一緒に配線される」ことを許容する再構成可能な相互接続の階層とを含むことができる。よって、ユーザー101は、複雑な組み合わせ機能を実行するようにFPGA内の論理ブロックを構成することができ、または単に、ソフトウェアよりもはるかに高速でハードウェア内で実行可能な同等の機能を合成するための単純な論理演算を構成することができる。図示した実施形態では、パケット・プロセッサ138は、NIC 136に通信上結合された1つのインターフェースと、他方においてネットワークスイッチ(たとえば、トップオブラックまたは「TOR」スイッチ)に結合された別のインターフェースとを有する。他の実施形態では、パケット・プロセッサ138はまた、特定用途向け集積回路(「ASIC」)、マイクロプロセッサ、または他の好適なハードウェア回路を含むことができる。前述の実施形態のいずれにおいても、パケット・プロセッサ138は、図3のA~図5を参照して以下でより詳細に説明されるように、時間依存データ送達のさまざまな側面を達成するためにパケット・プロセッサ138内でパケットをルーティングするように、プロセッサ132(またはそれに関連付けられた適切なソフトウェア・コンポーネント)によってプログラムされうる。
【0043】
動作中、プロセッサ132および/またはユーザー101(図1)は、複雑な組み合わせ機能または単純な論理演算を実行し、ソフトウェアよりもはるかに高速にハードウェア内で実行可能な同等の機能を合成するようパケット・プロセッサ138内の論理回路を構成することができる。たとえば、パケット・プロセッサ138は、MATなどのフロー・テーブルに含まれる構成されたポリシーまたはルールに従って、個々のフローのためのインバウンド/アウトバウンド・パケットを処理するように構成されうる。フロー・テーブルは、顧客によって供給されたアドレス空間、スケーラブルロードバランサー、セキュリティグループおよびアクセス制御リスト(「ACL」)、仮想ルーティングテーブル、帯域幅メータリング、サービス品質(「QoS」)などを有するプライベート仮想ネットワークを可能にするための各フローに対応する処理アクションを表すデータを含むことができる。
【0044】
よって、ひとたびパケット・プロセッサ138がインバウンド/アウトバウンド・パケットを特定のフローに属するものとして識別すると、パケット・プロセッサ138は、処理されたパケットをNIC 136またはTOR 112に転送する前に、フロー・テーブル内の一つまたは複数の対応するポリシーを適用することができる。たとえば、図2に示されるように、アプリケーション147、仮想マシン144、および/またはソース・ホスト106a上の他の適切なソフトウェア・コンポーネントは、たとえば、宛先ホスト106bおよび106b'における他のアプリケーション147に宛てられたアウトバウンド・パケットを生成することができる。ソース・ホスト106aにおけるNIC 136は、フロー・テーブル内のある種のポリシーに従って処理するために、生成されたパケットをパケット・プロセッサ138に転送することができる。ひとたび処理されると、パケット・プロセッサ138は、アウトバウンド・パケットを第1のTOR 112aに転送することができ、次いで、第1のTOR 112aは、オーバーレイ/アンダーレイ・ネットワーク108および108'を介してパケットを第2のTOR 110bに転送する。
【0045】
次いで、第2のTOR 112bは、宛先ホスト106bおよび106b'における別のフロー・テーブル内の他のポリシーに従って処理されるように、パケットを宛先ホスト106bおよび106b'におけるパケット・プロセッサ138に転送することが可能である。パケット・プロセッサ138がパケットをいずれのフローに属するものとしても識別できない場合、パケット・プロセッサ138は、例外処理のために、NIC 136を介してパケットをプロセッサ132に転送することができる。別の例では、第1のTOR 112aが、たとえば、第2のTOR 112bを介して宛先ホスト106bからインバウンド・パケットを受信すると、第1のTOR 112aは、パケットのフローに関連付けられたポリシーに従って処理されるように、パケットをパケット・プロセッサ138に転送することができる。次いで、パケット・プロセッサ138は、処理されたパケットをNIC 136に転送して、たとえば、アプリケーション147または仮想マシン144に転送されるようにすることができる。
【0046】
ある種の実施形態において、メモリ134は、キャッシュ・メモリおよびメイン・メモリ(図示せず)の両方を含むことができる。キャッシュ・メモリは、プロセッサ132がすぐに利用できるように、頻繁に使用されるデータおよび命令を保持するために、メイン・メモリとプロセッサ132との間のバッファとして働く非常に高速なメモリでありうる。たとえば、ある種のコンピュータは、プロセッサ132用のキャッシュ・メモリとして、プロセッサ132と一緒にパッケージ化されたダブルデータレート(DDR)シンクロナスダイナミックランダムアクセスメモリ(SDRAM)を含むことができる。そのようなキャッシュ・メモリは、プロセッサ132に近接しているために「ニアメモリ」と呼ばれることがある。ニアメモリに加えて、プロセッサ132は、コンピュートエクスプレスリンク(Compute Express Link、CXL)または他の適切なタイプのインターフェース・プロトコルを介してメイン・メモリとインターフェースをもつこともできる。メイン・メモリは、プロセッサ132からの距離がニアメモリよりも遠いため、「ファーメモリ」と呼ばれることがある。
【0047】
プロセッサ132のためのキャッシュ・メモリとしてDDR SDRAMを使用することは、ある種の欠点を有しうる。たとえば、ニアメモリは、典型的には、ファーメモリよりも高価であり、コンピューティング・デバイス上のオペレーティングシステム(OS)によってアクセスされるために利用可能ではなく、またはオペレーティングシステム(OS)にとって可視でさえない。代わりに、プロセッサ132は、ニアメモリに対する排他的制御を有する。加えて、DDR SDRAMなどのニアメモリ・デバイスは、非常に高価でありうる。いくつかのデータセンター・サーバーでは、ニアメモリとしてのDDR SDRAMのコストは、サーバーの総コストの最大約50パーセントになりうる。よって、ニアメモリがオペレーティングシステム141に可視であり、それによってアクセス可能でありうる場合、サーバーのための資本投資およびホスト106からさまざまなコンピューティング・サービスを提供するための関連コストを大幅に削減することができる。
【0048】
開示される技術のいくつかの実施形態は、ニアメモリが、プロセッサ132のための専用キャッシュ・メモリとして使用されるのではなく、ファーメモリのためのスワップ・バッファとして使用される、メモリ階層化(memory tiering)を実装することに向けられる。よって、プロセッサ132は、ニアメモリおよびファーメモリがアドレス指定可能かつ割り当て可能なシステム・メモリとしてオペレーティングシステム141に公開されていながら、ニアメモリ内にデータをキャッシングすることを続けることができる。ある種の実装では、ハードウェア・メモリ・コントローラは、キャッシュ・ライン粒度(たとえば、64バイト)でスワッピング動作を制御するように構成されうる。よって、ホスト106は、いかなるソフトウェア介入も影響も経験しない。他の実装では、ハードウェアおよびソフトウェア・コンポーネントの両方を有するメモリ・コントローラが、そのようなスワッピング動作を制御するために使用されうる。
【0049】
ニアメモリとファーメモリとの間の記憶スペースの比率は、柔軟でありうる。たとえば、ニアメモリとファーメモリとの間の比率は、1対1以上の任意の整数でありうる。図3のAに示される例解用の例では、システム・メモリ・アドレス150の範囲は、1対3の比のニアメモリ151とファーメモリ153との組み合わせによってカバーされる。よって、システム・メモリ150の範囲は、4つのセクション152、たとえば、A、B、C、およびD(それぞれ図3のAでは152A~152Dとして識別される)に分割されることができる。各セクションは、データ部分156(たとえば、512ビット)およびメタデータ部分154(たとえば、128ビット)を含むことができる。データ部分156は、ユーザー・データを表すデータ、またはホスト106において実行される命令を含むように構成されうる。メタデータ部分154は、データ部分156内のデータのさまざまな属性を表すデータを含むことができる。たとえば、メタデータ部分154は、誤り検査および訂正ビットまたは他の適切なタイプの情報を含むことができる。
【0050】
開示される技術のいくつかの実施形態によれば、ニアメモリ151内のメタデータ部分154内のいくつかのビットは、(1)システム・メモリの範囲のどのセクションをニアメモリが現在保持するか、および(2)ファーメモリ内の、システム・メモリの範囲の追加的セクションの位置を示すように構成されることができる。システム・メモリ150の4つのセクションを有する上記の例では、ニアメモリ151内のメタデータ部分154内の8ビットを、前述の情報を示すように構成することができる。たとえば、最初の2ビットの第1の対は、次のように、どのセクション152が現在ニアメモリ151内に保持されているかを示すように構成されることができる。
【表3】
よって、メモリ・コントローラ135は、図3のAに示されるように、ビット1およびビット2がそれぞれ0および0を含むとき、ニアメモリ151がシステム・メモリのセクションAからのデータを含むことを容易に判別することができる。
【0051】
最初の2ビットはニアメモリ151に対応する一方、追加の6ビットは、図3のBに示されるように、ファーメモリ153内の位置に個々に対応する3つの対に細分されることができる。たとえば、第2、第3、および第4の対はそれぞれ、次のように、ファーメモリ153内の第1、第2、または第3の位置に対応することができる。
【表4】
【0052】
よって、メモリ・コントローラ135は、システム・メモリ150のある特定のセクションからのデータがたとえ現在ニアメモリ151内になくても、ファーメモリ153内のどこにあるかを容易に決定することができる。たとえば、第2の対(すなわち、ビット3およびビット4)が(1,1)を含むとき、メモリ・コントローラ135は、システム・メモリ150のセクションDに対応するデータがファーメモリ153内の第1の位置158Aにあると判断するように構成されうる。第3の対(すなわち、ビット5およびビット6)が(1,0)を含むとき、メモリ・コントローラ135は、システム・メモリ150のセクションCに対応するデータがファーメモリ153内の第2の位置158Bにあると判断するように構成されうる。第4の対(すなわち、ビット7およびビット8)が(0,1)を含むとき、メモリ・コントローラ135は、システム・メモリ150のセクションBに対応するデータがファーメモリ153内の第3の位置158Cにあると判断するように構成されうる。これは図3のAおよびBに示されている。
【0053】
ニアメモリ151内のメタデータ部分154からのデータを使用して、メモリ・コントローラ135は、ニアメモリ151をスワップ・バッファとして使用して、ニアメモリ151とファーメモリ153との間のスワップ動作を管理するように構成されうる。たとえば、図4のAに示されるように、読み出し動作中に、CPUは、メモリ・コントローラ135に、セクションAに対応するデータを、そのようなデータがCPUの最終レベルキャッシュに現在存在しないときに、読み出すようコマンドを発することができる。応答して、メモリ・コントローラ135は、ニアメモリから読み出して、ニアメモリのデータ部分およびメタデータ部分の両方からデータを取り出すように構成されうる。次いで、メモリ・コントローラ135は、上記のテーブルを使用して、取り出されたデータがシステム・メモリのどのセクションに対応するかを決定し、決定されたセクションが、読み取られるべきターゲット・セクションに一致するかどうかを判定するように構成されうる。たとえば、図4のAに示されるように、ターゲット・セクションがセクションAであり、メタデータ部分からの最初の2ビットが(0,0)を含むとき、メモリ・コントローラ135は、取り出されたデータがセクションAからのものである(すなわち、「Aデータ」)と決定するように構成されうる。よって、メモリ・コントローラ135は、セクションAからの取り出されたAデータを、コンピューティング・デバイス上でCPUによって実行されるアプリケーションなどの要求元エンティティに転送することができる。
【0054】
一方、図4Bに示されるように、メタデータ部分からの最初の2ビットが(0,0)の代わりに(0,1)を含むとき、たとえば、メモリ・コントローラ135は、取り出されたデータがセクションAデータではなくセクションBに属する(「Bデータ」と呼ばれる)と決定するように構成されうる。次いで、メモリ・コントローラ135は、メタデータ部分内の追加ビットを調べることに進み、どのビット対が(0,0)を含むかを判別することができる。たとえば、メタデータ部分からの第2の対(ビット3およびビット4)が(0,0)を含むとき、メモリ・コントローラ135は、Aデータがファーメモリ内の第1の位置に位置すると決定するように構成されうる。それに応答して、メモリ・コントローラ135は、ファーメモリ内の第1の位置からAデータを読み出し、Aデータを要求元エンティティに提供するように構成されうる。次いで、メモリ・コントローラ135は、取り出されたAデータをニアメモリに書き込み、以前に取り出されたBデータをファーメモリ内の第1のセクションに書き込むように構成されうる。メモリ・コントローラ135はまた、セクションAとセクションBとの間のスワッピングを反映するよう、ニアメモリ内のメタデータ部分内のビットを修正するように構成されることができる。
【0055】
書き込み動作中、図5のAに示されるように、メモリ・コントローラ135は、まずニアメモリ内のメタデータ部分からデータを読み出すように構成されうる。メモリ・コントローラ135は、次いで、システム・メモリのどのセクションからのデータがニアメモリ内に現在保持されているかを決定し、決定されたセクションが、書き込まれるべきターゲット・セクションに一致するかどうかを判定するように構成されうる。たとえば、ターゲット・セクションがセクションAであり、メタデータ部分からの最初の2ビットが(0,0)を含むとき、メモリ・コントローラ135は、Aデータが現在ニアメモリ内にあると判断するように構成されうる。よって、メモリ・コントローラ135は、ニアメモリの前記データ部分内のデータを上書きし、書き込み動作の完了を報告するように構成されうる。
【0056】
一方、メタデータ部分からの最初の2ビットが(0,1)を含む場合、メモリ・コントローラ135は、データBが現在ニアメモリ内にあると判断するように構成されうる。それに応答して、メモリ・コントローラ135は、ニアメモリに書き込むことを控え、代わりに、メタデータ部分の追加のビットを調べ続けて、どのビット対が(0,0)を含むかを決定するように構成されうる。たとえば、メタデータ部分からの第2の対(ビット3およびビット4)が(0,0)を含むとき、メモリ・コントローラ135は、Aデータがファーメモリ内の第1の位置に位置していると判断するように構成されうる。それに応答して、メモリ・コントローラ135は、ニアメモリの代わりにファーメモリ内の第1の位置に書き込み、書き込み動作の完了を報告するように構成されうる。
【0057】
開示される技術のいくつかの実施形態は、以前にキャッシュ・メモリとして使用され、OSには不可視であったメモリが、OSによってアドレス指定可能なシステム・メモリとして構成されることを許容することによって、コンピューティング・デバイスの動作および性能を改善することができる。たとえば、ニアメモリをCPUのための専用キャッシュ・メモリとして使用する代わりに、ニアメモリは、上述のスワッピング動作を介して、CPUにキャッシング機能を提供し続ける一方で、割り当て可能なシステム・メモリとして使用されうる。アドレス指定可能なシステム・メモリの量を増加させることによって、コンピューティング・デバイスにおけるコンピューティングまたは他の適切なタイプのレイテンシーを減少させることができる。
【0058】
図6は、図1の分散コンピューティング・システム100のある種の構成要素に適したコンピューティング・デバイス300である。たとえば、コンピューティング・デバイス300は、図1のホスト106、クライアント・デバイス102、またはプラットフォーム・コントローラ125に適している可能性がある。非常に基本的な構成302では、コンピューティング・デバイス300は、一つまたは複数のプロセッサ304およびシステム・メモリ306を含むことができる。メモリ・バス308は、プロセッサ304とシステム・メモリ306との間で通信するために使用されうる。
【0059】
所望の構成に依存して、プロセッサ304は、限定はしないが、マイクロプロセッサ(μP)、マイクロコントローラ(μC)、デジタル信号プロセッサ(DSP)、またはそれらの任意の組み合わせを含む任意のタイプのものでありうる。プロセッサ304は、レベル1キャッシュ310およびレベル2キャッシュ312などのもう1つのレベルのキャッシングと、プロセッサ・コア314と、レジスタ316とを含むことができる。例示的なプロセッサ・コア314は、演算論理ユニット(ALU)、浮動小数点ユニット(FPU)、デジタル信号処理コア(DSPコア)、またはそれらの任意の組み合わせを含むことができる。例示的なメモリ・コントローラ318はまた、プロセッサ304とともに使用されうるか、またはいくつかの実装では、メモリ・コントローラ318は、プロセッサ304の内部部分でありうる。
【0060】
所望の構成に依存して、システム・メモリ306は、限定はしないが、揮発性メモリ(RAMなど)、不揮発性メモリ(ROM、フラッシュメモリなど)、またはそれらの任意の組み合わせを含む任意のタイプのものでありうる。システム・メモリ306は、オペレーティングシステム320、一つまたは複数のアプリケーション322、およびプログラムデータ324を含むことができる。図11に示されるように、オペレーティングシステム320は、一つまたは複数の仮想マシン144を管理するためのハイパーバイザー140を含むことができる。この説明された基本構成302は、内側破線内のそれらの構成要素によって図8に示される。
【0061】
コンピューティング・デバイス300は、基本構成302と任意の他のデバイスおよびインターフェースとの間の通信を容易にするために、追加の特徴または機能、および追加のインターフェースを有することができる。たとえば、バス/インターフェース・コントローラ330が、ストレージインターフェースバス334を介した基本構成302と一つまたは複数のデータストレージデバイス332との間の通信を容易にするために使用できる。データストレージデバイス332は、リムーバブルストレージデバイス336、非リムーバブルストレージデバイス338、またはそれらの組み合わせとすることができる。リムーバブルストレージデバイスおよび非リムーバブルストレージデバイスの例は、若干を挙げると、フレキシブルディスクドライブおよびハードディスクドライブ(HDD)などの磁気ディスクデバイス、コンパクトディスク(CD)ドライブまたはデジタル多用途ディスク(DVD)ドライブなどの光ディスクドライブ、ソリッドステートドライブ(SSD)、およびテープドライブを含む。例示的なコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報を記憶するための任意の方法または技術で実装される揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体を含むことができる。「コンピュータ可読記憶媒体」または「コンピュータ可読記憶デバイス」という用語は、伝搬信号および通信媒体を除外する。
【0062】
システム・メモリ306、リムーバブル記憶デバイス336、および非リムーバブル記憶デバイス338は、コンピュータ可読記憶媒体の例である。コンピュータ可読記憶媒体は、限定はしないが、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)もしくは他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置もしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用することができ、コンピューティング・デバイス300によってアクセスすることができる任意の他の媒体を含む。任意のそのようなコンピュータ可読記憶媒体は、コンピューティング・デバイス300の一部とすることができる。「コンピュータ可読記憶媒体」という用語は、伝搬信号および通信媒体を除外する。
【0063】
コンピューティング・デバイス300はまた、バス/インターフェース・コントローラ330を介してさまざまなインターフェースデバイス(たとえば、出力デバイス342、周辺インターフェース344、および通信デバイス346)から基本構成302への通信を容易にするためのインターフェースバス340を含むことができる。例示的な出力デバイス342は、一つまたは複数のA/Vポート352を介してディスプレイまたはスピーカーなどのさまざまな外部デバイスと通信するように構成されうるグラフィックス処理ユニット348およびオーディオ処理ユニット350を含む。例示的な周辺インターフェース344は、一つまたは複数のI/Oポート358を介して入力デバイス(たとえば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなど)または他の周辺デバイス(たとえば、プリンタ、スキャナなど)などの外部デバイスと通信するように構成されうる、シリアルインターフェースコントローラ354またはパラレルインターフェースコントローラ356を含む。例示的な通信デバイス346は、一つまたは複数の通信ポート364を介してネットワーク通信リンク上で一つまたは複数の他のコンピューティング・デバイス362との通信を容易にするように構成されうるネットワークコントローラ360を含む。
【0064】
ネットワーク通信リンクは、通信媒体の一例でありうる。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、または搬送波もしくは他のトランスポート機構などの変調されたデータ信号内の他のデータによって具現されることができ、任意の情報送達媒体を含むことができる。「変調されたデータ信号」は、その特性の一つまたは複数が信号内に情報をエンコードするような仕方で設定または変更された信号でありうる。限定ではなく例として、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、無線周波数(RF)、マイクロ波、赤外線(IR)、および他の無線媒体などの無線媒体を含むことができる。本明細書で使用されるコンピュータ可読媒体という用語は、記憶媒体と通信媒体の両方を含むことができる。
【0065】
コンピューティング・デバイス300は、携帯電話、携帯情報端末(PDA)、パーソナルメディアプレーヤーデバイス、ワイヤレスウェブウォッチデバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、または上記の機能のいずれかを含むハイブリッドデバイスなど、小さなフォームファクターのポータブル(またはモバイル)電子デバイスの一部として実装されうる。コンピューティング・デバイス300は、ラップトップコンピュータ構成と非ラップトップコンピュータ構成の両方を含むパーソナルコンピュータとして実装されることもできる。
【0066】
上記から、本開示の特定の実施形態が例示の目的で本明細書に記載されているが、本開示から逸脱することなくさまざまな修正がなされうることが理解されるであろう。さらに、ある実施形態の要素の多くは、他の実施形態の要素に加えて、または他の実施形態の要素の代わりに、他の実施形態と組み合わされることができる。よって、本技術は、添付の特許請求の範囲による場合を除いて限定されない。
図1
図2
図3
図4
図5
図6
【国際調査報告】