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

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

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

特表2024-529857コンピューティングシステムにおけるメモリ階層化技術
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-14
(54)【発明の名称】コンピューティングシステムにおけるメモリ階層化技術
(51)【国際特許分類】
   G06F 12/0897 20160101AFI20240806BHJP
   G06F 12/0895 20160101ALI20240806BHJP
【FI】
G06F12/0897
G06F12/0895
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024500485
(86)(22)【出願日】2022-06-02
(85)【翻訳文提出日】2024-01-09
(86)【国際出願番号】 US2022031862
(87)【国際公開番号】W WO2023283000
(87)【国際公開日】2023-01-12
(31)【優先権主張番号】17/371,422
(32)【優先日】2021-07-09
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
1.JAVA
(71)【出願人】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100107766
【弁理士】
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100229448
【弁理士】
【氏名又は名称】中槇 利明
(72)【発明者】
【氏名】アガルワル,イシュワル
(72)【発明者】
【氏名】クリソス,ジョージ ザカリアス
(72)【発明者】
【氏名】ローゼル マルティネス,オスカー
【テーマコード(参考)】
5B205
【Fターム(参考)】
5B205KK02
5B205UU31
5B205UU45
(57)【要約】
コンピューティングデバイスにおけるメモリ階層化の技術が開示される。1つの例示的な技術は、システムメモリセクションに対応するデータを読み出すための要求を受信したとき、第1のメモリ内の第1の階層から、第1の階層のデータ部分からのデータ及びメタデータ部分からのメタデータを取り出すことを含む。当該方法は、データ位置情報を分析して、第1の階層が、要求におけるシステムメモリセクションに対応するデータを現在含むか否かを決定することを含んでもよい。第1の階層が要求におけるシステムメモリセクションに対応するデータを現在含むと決定したことに応じて、第1のメモリのデータ部分からの取り出されたデータは、受信された要求に応じてプロセッサに送信されてもよい。当該方法は、システムメモリセクションに対応するデータを含むメモリ内のメモリ位置を識別することと、識別されたメモリ位置からデータを取り出すこととを含んでもよい。
【特許請求の範囲】
【請求項1】
プロセッサと、前記プロセッサに近接しており前記プロセッサのためのキャッシュとして構成された第1のメモリと、前記プロセッサとは別個であり前記プロセッサとインターフェース接続された第2のメモリと、前記第1及び第2のメモリの動作を管理するように構成されたメモリコントローラとを有するコンピューティングデバイスにおけるメモリ管理の方法であって、
前記メモリコントローラにおいて、前記プロセッサの前記キャッシュからシステムメモリセクションに対応するデータを読み出すための要求を前記プロセッサから受信するステップと、
前記読み出すための要求を受信したことに応じて、前記メモリコントローラを用いて、
前記第1のメモリ内の第1のセクションから、前記第1のメモリの前記第1のセクション内のデータ部分からのデータ及びメタデータ部分からのメタデータを取り出すステップであり、前記メタデータ部分からの前記メタデータは、前記第1のメモリの前記第1のセクション、前記第1のメモリの第2のセクション及び前記第2のメモリ内の1つ以上の更なるセクションにおける複数のシステムメモリセクションのデータ位置情報を符号化する、ステップと、
前記第1のメモリ内の前記第1のセクションの前記メタデータ部分からの前記取り出されたメタデータ内の前記データ位置情報を分析して、前記第1のメモリ内の前記第1のセクションが、前記受信された要求における前記システムメモリセクションに対応するデータを現在含むか否かを決定するステップと、
前記第1のメモリ内の前記第1のセクションが、前記受信された要求における前記システムメモリセクションに対応するデータを現在含むと決定したことに応じて、前記受信された要求に応じて、前記第1のメモリ内の前記第1のセクションの前記データ部分からの前記取り出されたデータを前記プロセッサに送信するステップと
を含む方法。
【請求項2】
前記第1のメモリ内の前記第1のセクションが、前記受信された要求における前記システムメモリセクションに対応するデータを現在含んでいないと決定したことに応じて、
前記取り出されたメタデータ内の前記データ位置情報を更に分析して、前記第1のメモリ内の前記第2のセクション又は前記第2のメモリ内のメモリ位置が、前記受信された要求における前記システムメモリセクションに対応するデータを含むか否かを識別するステップと、
前記受信された要求に応じて、前記第1のメモリ内の前記第2のセクション又は前記第2のメモリ内の前記メモリ位置から前記データを取り出し、前記取り出されたデータを前記プロセッサに提供するステップと
を更に含む、請求項1に記載の方法。
【請求項3】
前記第1のメモリ内の前記第1のセクションが、前記受信された要求における前記システムメモリセクションに対応するデータを現在含んでいないと決定したことに応じて、
前記取り出されたメタデータ内の前記データ位置情報を更に分析して、前記第1のメモリ内の前記第2のセクション又は前記第2のメモリ内のメモリ位置が、前記受信された要求における前記システムメモリセクションに対応する前記データを含むか否かを識別するステップと、
前記第1のメモリ内の前記第2のセクションが、前記受信された要求における前記システムメモリセクションに対応する前記データを含むと決定したとき、
前記受信された要求に応じて、前記第1のメモリ内の前記第2のセクションから前記データを取り出し、前記取り出されたデータを前記プロセッサに提供するステップと、
前記第1のメモリ内の前記第2のセクションからの前記取り出されたデータを、前記第1のメモリ内の前記第1のセクションに書き込むステップと
を更に含む、請求項1に記載の方法。
【請求項4】
前記第1のメモリ内の前記第1のセクションが、前記受信された要求における前記システムメモリセクションに対応するデータを現在含んでいないと決定したことに応じて、
前記取り出されたメタデータ内の前記データ位置情報を更に分析して、前記第1のメモリ内の前記第2のセクション又は前記第2のメモリ内のメモリ位置が、前記受信された要求における前記システムメモリセクションに対応する前記データを含むか否かを識別するステップと、
前記第1のメモリ内の前記第2のセクションが、前記受信された要求における前記システムメモリセクションに対応する前記データを含むと決定したとき、
前記受信された要求に応じて、前記第1のメモリ内の前記第2のセクションから前記データを取り出し、前記取り出されたデータを前記プロセッサに提供するステップと、
前記第1のメモリ内の前記第2のセクションからの前記取り出されたデータを、前記第1のメモリ内の前記第1のセクションに書き込むステップと、
前記受信された要求における前記システムメモリセクションに対応する前記データが、前記第1のメモリの前記第1のセクション内に現在あることを示すように、前記第1のメモリの前記メタデータ部分内の前記メタデータを修正するステップと
を更に含む、請求項1に記載の方法。
【請求項5】
前記第1のメモリ内の前記第1のセクションが、前記受信された要求における前記システムメモリセクションに対応するデータを現在含んでいないと決定したことに応じて、
前記取り出されたメタデータ内の前記データ位置情報を更に分析して、前記第1のメモリ内の前記第2のセクション又は前記第2のメモリ内のメモリ位置が、前記受信された要求における前記システムメモリセクションに対応する前記データを含むか否かを識別するステップと、
前記第1のメモリ内の前記第2のセクションが、前記受信された要求における前記システムメモリセクションに対応する前記データを含むと決定したとき、
前記受信された要求に応じて、前記第1のメモリ内の前記第2のセクションから前記データを取り出し、前記取り出されたデータを前記プロセッサに提供するステップと、
前記第1のメモリ内の前記第2のセクションからの前記取り出されたデータを、前記第1のメモリ内の前記第1のセクションに書き込むステップと、
前記第1のメモリの前記第1のセクションからの前記取り出されたデータを、前記第1のメモリ内の前記第2のセクションに書き込むステップと
を更に含む、請求項1に記載の方法。
【請求項6】
前記第1のメモリ内の前記第1のセクションが、前記受信された要求における前記システムメモリセクションに対応するデータを現在含んでいないと決定したことに応じて、
前記取り出されたメタデータ内の前記データ位置情報を更に分析して、前記第1のメモリ内の前記第2のセクション又は前記第2のメモリ内のメモリ位置が、前記受信された要求における前記システムメモリセクションに対応する前記データを含むか否かを識別するステップと、
前記第1のメモリ内の前記第2のセクションが、前記受信された要求における前記システムメモリセクションに対応する前記データを含むと決定したとき、
前記受信された要求に応じて、前記第1のメモリ内の前記第2のセクションから前記データを取り出し、前記取り出されたデータを前記プロセッサに提供するステップと、
前記第1のメモリ内の前記第2のセクションからの前記取り出されたデータを、前記第1のメモリ内の前記第1のセクションに書き込むステップと、
前記第1のメモリの前記第1のセクションからの前記取り出されたデータを、前記第1のメモリ内の前記第2のセクションに書き込むステップと、
前記第1のメモリの前記第1のセクション内の前記メタデータ部分内の前記メタデータを修正して、前記受信された要求における前記システムメモリセクションに対応する前記データが前記第1のメモリの前記第1のセクション内に現在あり、前記第1のメモリの第1のセクションに以前に保持されていた前記データが前記第1のメモリの前記第2のセクションに現在あることを示すステップと
更に含む、請求項1に記載の方法。
【請求項7】
前記メタデータ部分からの前記メタデータは、1つ以上のビットを含み、
前記データ位置情報は、前記複数のシステムメモリセクションのうち1つに個々に対応する前記1つ以上のビットの組み合わせを含み、
前記データ位置情報を分析することは、
前記1つ以上のビットの組み合わせを識別することと、
前記識別された組み合わせが前記受信された要求における前記システムメモリセクションに対応するか否かを決定することと
を含む、請求項1に記載の方法。
【請求項8】
前記メタデータ部分からの前記メタデータは、1つ以上のエラー検査及び訂正(ECC)ビットを含み、
前記データ位置情報は、前記複数のシステムメモリセクションのうち1つに個々に対応する前記1つ以上のECCビットの組み合わせを含み、
前記データ位置情報を分析することは、
前記1つ以上のECCビットの組み合わせを識別することと、
前記識別されたECCビットの組み合わせが前記受信された要求における前記システムメモリセクションに対応するか否かを決定することと
を含む、請求項1に記載の方法。
【請求項9】
プロセッサと、前記プロセッサに近接しており前記プロセッサのためのキャッシュとして構成された第1のメモリと、前記プロセッサとは別個であり前記プロセッサとインターフェース接続された第2のメモリと、前記第1及び第2のメモリの動作を管理するように構成されたメモリコントローラとを有するコンピューティングデバイスであって、
前記メモリコントローラは、
前記プロセッサの前記キャッシュからシステムメモリセクションに対応するデータを読み出すための要求を前記プロセッサから受信したとき、
前記第1のメモリ内の第1のセクションから、前記第1のメモリの前記第1のセクション内のデータ部分からのデータ及びメタデータ部分からのメタデータを取り出すステップであり、前記メタデータ部分からの前記メタデータは、前記第1のメモリの前記第1のセクション、前記第1のメモリの第2のセクション及び前記第2のメモリの1つ以上の更なるセクションにおける複数のシステムメモリセクションのデータ位置情報を符号化する、ステップと、
前記第1のメモリ内の前記第1のセクションの前記メタデータ部分からの前記取り出されたメタデータ内の前記データ位置情報を分析して、前記第1のメモリ内の前記第1のセクションが、前記受信された要求における前記システムメモリセクションに対応するデータを現在含むか否かを決定するステップと、
前記第1のメモリ内の前記第1のセクションが、前記受信された要求における前記システムメモリセクションに対応するデータを現在含むと決定したことに応じて、前記受信された要求に応じて、前記第1のメモリ内の前記第1のセクションの前記データ部分からの前記取り出されたデータを前記プロセッサに送信するステップと
を実行するように前記メモリコントローラによって実行可能な命令を有する、コンピューティングデバイス。
【請求項10】
前記メモリコントローラは、
前記第1のメモリ内の前記第1のセクションが、前記受信された要求における前記システムメモリセクションに対応するデータを現在含んでいないと決定したことに応じて、
前記取り出されたメタデータ内の前記データ位置情報を更に分析して、前記第1のメモリ内の前記第2のセクション又は前記第2のメモリ内のメモリ位置が、前記受信された要求における前記システムメモリセクションに対応するデータを含むか否かを識別するステップと、
前記受信された要求に応じて、前記第1のメモリ内の前記第2のセクション又は前記第2のメモリ内の前記メモリ位置から前記データを取り出し、前記取り出されたデータを前記プロセッサに提供するステップと
を実行可能な更なる命令を含む、請求項9に記載のコンピューティングデバイス。
【発明の詳細な説明】
【背景技術】
【0001】
コンピューティングにおいて、メモリは、典型的には、コンピュータ又は他のタイプのコンピューティングデバイス内の中央処理装置(CPU, central processing unit)による即時アクセスのためのデータを記憶するために使用されるコンピューティングコンポーネントを示す。メモリに加えて、コンピュータはまた、コンピュータ上にデータを永続的に記憶する1つ以上のコンピュータ記憶デバイス(例えば、ハードディスクドライブ又はHDD)を含むこともできる。動作時に、アプリケーションの命令のようなデータは、最初にコンピュータ記憶デバイスからメモリにロードできる。次いで、CPUは、メモリにロードされたアプリケーションの命令を実行して、ワードプロセッシング、オンライン会議等のようなコンピューティングサービスを提供できる。
【発明の概要】
【0002】
この概要は、以下の詳細な説明において更に記載される概念の選択を簡略化された形式で紹介するために提供される。この概要は、特許請求される主題の重要な特徴又は本質的な特徴を特定することを意図するものではなく、特許請求される主題の範囲を限定するために使用されることも意図するものではない。
【0003】
特定のコンピューティングデバイスは、異なるタイプのメモリにアクセスするように構成されたCPUを含むことができる。例えば、コンピューティングデバイスは、高速である第1のタイプのメモリと、より低速の第2のタイプのメモリとを含むことができる。第1のタイプのメモリの例は、CPUと共にパッケージ化されたダブルデータレート(DDR, Double Data Rate)シンクロナスダイナミックランダムアクセスメモリ(SDRAM, Synchronous Dynamic Random-Access Memory)とすることができる。このような第1のタイプのメモリは、CPUに物理的に近接していることから、場合によっては「ニアメモリ(near memory)」と呼ばれる。第2のタイプのメモリの例は、CPUがコンピュートエクスプレスリンク(CXL, Compute Express Link)又は他の適切なプロトコルを介してインターフェース接続できるものを含むことができる。このような第2のタイプのメモリは、ニアメモリよりもCPUから遠い距離にあることに起因して、場合によっては「ファーメモリ(far memory)」と呼ばれることがある。
【0004】
CPU用のニアメモリとして高速メモリを使用することは、特定の欠点を有する可能性がある。例えば、DDR SDRAMは、典型的には、ファーメモリに使用されるものよりも高価である。ニアメモリはまた、コンピューティングデバイス上のオペレーティングシステム(OS, Operating System)によってアクセスされるのに利用可能ではないか、或いは、OSにとって可視ではないことすらある。その代わりに、CPUはニアメモリに対して排他的な制御を有する。いくつかのデータセンタサーバでは、ニアメモリとして使用されるDDR SDRAMのコストは、データセンタサーバの総コストの約50パーセントまでになる可能性がある。したがって、ニアメモリがOSにとって可視であり、OSによってアクセス可能である場合、データセンタサーバの設備投資、及びデータセンタサーバから様々なコンピューティングサービスを提供するための関連コストが大幅に削減できる。
【0005】
開示される技術のいくつかの実施形態は、ニアメモリがコンピューティングデバイス内のCPUのための専用キャッシュメモリとなる代わりに、ファーメモリのためのスワップバッファとして使用できるメモリマルチ階層化を実装することを対象とする。したがって、CPUは、ニアメモリ及びファーメモリがアドレス指定可能で割り当て可能なシステムメモリとしてOSに公開される一方で、ニアメモリ内のデータをキャッシュし続けることができる。特定の実装では、ハードウェアメモリコントローラ(例えば、DRAMコントローラ)は、キャッシュライン粒度(例えば、64バイト)でスワッピング動作を管理するように構成できる。したがって、コンピューティングデバイスは、ソフトウェアの介入を必要としないか、或いは、ソフトウェアの影響を引き起こさない。他の実施形態では、ハードウェアコンポーネントとソフトウェアコンポーネントとの双方を有するメモリコントローラが、このようなスワッピング動作を制御するために使用されてもよい。
【0006】
特定の実装では、ニアメモリは、ファーメモリと同じか或いはファーメモリよりも更に多くの記憶空間の単位を有することができる。例えば、システムメモリアドレスの範囲は、2対1、2対2、3対1、3対2、4対1、4対3の比、又は1以上の整数の他の適切な比でのニアメモリとファーメモリとの組み合わせによってカバーできる。1つの例示的な例では、システムメモリアドレスの範囲(例えば、512GB)は、2対2の比でのニアメモリとファーメモリとの組み合わせ、すなわち、2つの128GBのニアメモリと2つの128GBのファーメモリとの組み合わせによってカバーできる。したがって、システムメモリの範囲は、4つのセクション、例えば、それぞれがニアメモリ又はファーメモリ内の記憶空間の1つのセクションに対応するA、B、C及びDに分割できる。
【0007】
特定の実施形態では、ニアメモリをファーメモリのためのスワップバッファとして使用するとき、ニアメモリの複数のセクションは、個々のルックスルー階層(look-through tier)として構成できる。例えば、ニアメモリの第1のセクションは、階層1として構成でき、ニアメモリの第2のセクション151Bは、階層2として構成される。ファーメモリは、1つ以上の更なるセクションを含んでもよい階層3として構成できる。したがって、動作中に、キャッシュラインのようなデータの読み出しを実行するとき、メモリコントローラは、ニアメモリの階層1がキャッシュラインを含むか否かを最初に決定するように構成できる。階層1がキャッシュラインを含むとき、メモリコントローラは、階層1からキャッシュラインを取り出し、キャッシュラインを要求側エンティティに提供し、読み出し動作を終了する。階層1がキャッシュラインを含まないとき、メモリコントローラは、階層2がキャッシュラインを含むか否かを決定できる。このような動作は、ニアメモリ内の更なる階層について再帰的に繰り返されることができる。他の実施形態では、複数のセクションは、他の適切な動作方式で構成できる。
【0008】
特定の実施形態では、ニアメモリ又はファーメモリ内の各セクションは、データ部分(例えば、512ビット)及びメタデータ部分(例えば、128ビット)を含むことができる。データ部分は、ユーザデータを表すデータ、又はコンピューティングデバイス内のCPUによって実行可能な命令を含むように構成できる。メタデータ部分は、データ部分内のデータの様々な属性を表すメタデータを含むことができる。例えば、メタデータ部分は、エラー追跡を符号化するエラー検査及び訂正(ECC, Error Checking and Correction)ビット、又は他の適切なタイプの情報を含むことができる。他の実施形態では、各セクションはまた、更なるデータ/メタデータ部分及び/又は異なるデータ/メタデータ部分を含むこともできる。
【0009】
開示される技術のいくつかの実施形態によれば、ニアメモリの階層1内のメタデータ部分内のいくつかのビット(例えば、ECCビット)は、(1)システムメモリの範囲のどのセクションをニアメモリの階層1が現在保持しているかと、(2)ニアメモリの他の階層又はファーメモリ内のシステムメモリの範囲の更なるセクションの位置とを示すように構成できる。例えば、2対2のニアメモリ/ファーメモリの比を有するシステムメモリの4つのセクションを有する上記の例では、階層1のメタデータ部分内の8ビットは、このような情報を含むように構成できる。例えば、第1のビット対(ビット1及びビット2)は、以下のように、どのセクションがニアメモリの階層1に現在保持されているかを示すように構成できる。
【0010】
【表1】
したがって、メモリコントローラは、ビット1及びビット2がそれぞれ0及び0を含むとき、ニアメモリの階層1がシステムメモリのセクションAからのデータを含むと容易に決定できる。
【0011】
上記の例では、最初の2ビットはニアメモリの階層1に対応するが、更なる6ビットは、ニアメモリの階層2と、システムメモリの範囲の対応するセクションにマッピングされたファーメモリ内の第1の位置及び第2の位置とに個々に対応する3つの対に再分割できる。例えば、第2の対、第3の対及び第4の対は、それぞれ、以下のように、ニアメモリの階層2、ファーメモリ内の第1の位置及びファーメモリ内の第2の位置にそれぞれ対応できる。
【0012】
【表2】
したがって、メモリコントローラは、システムメモリのセクションのデータがニアメモリの階層1に現在存在しない場合であっても、そのセクションの位置を容易に決定できる。例えば、第2の対(すなわち、ビット3及びビット4)が(0,0)を含むとき、メモリコントローラは、システムメモリのセクションAに対応するデータがニアメモリの階層2にあると決定するように構成できる。
【0013】
ニアメモリの階層1内のメタデータ部分からのメタデータを使用して、メモリコントローラは、ニアメモリをスワップバッファとして使用するとき、ニアメモリ内の様々な階層とファーメモリとの間のスワップ動作を管理するように構成できる。例えば、ターゲットセクションの読み出し中に、メモリコントローラは、ニアメモリの階層1から読み出して、ニアメモリの階層1からのデータ部分及びメタデータ部分の双方からデータ及びメタデータを取り出すように構成できる。取り出されたメタデータに基づいて、メモリコントローラは、例えば、上記のテーブルを使用して、取り出されたデータがシステムメモリのどのセクションに対応するかを決定し、決定されたセクションが読み出されるターゲットセクションに一致するか否かを決定するように構成できる。例えば、ターゲットセクションがセクションAであり、メタデータ部分からの最初の2ビットが(0,0)を含むとき、メモリコントローラは、ニアメモリの階層1からの取り出されたデータがセクションA(「Aデータ」と呼ばれる)に対応すると決定するように構成できる。したがって、メモリコントローラは、セクションAからの取り出されたデータを、コンピューティングデバイス上で実行されるアプリケーション又はOSのような要求側エンティティに転送できる。
【0014】
他方、メタデータ部分からの最初の2ビットが(0,0)の代わりに(0,1)を含むとき、例えば、メモリコントローラは、取り出されたデータがセクションAではなくセクションB(「Bデータ」と呼ばれる)に属すると決定するように構成できる。次いで、メモリコントローラは、メタデータ部分内の更なるビットを検査し続けて、どのビット対が(0,0)を含むかを決定できる。例えば、メタデータ部分からの第2の対(ビット3及びビット4)が(0,0)を含むとき、メモリコントローラは、Aデータがニアメモリ内の階層2に位置すると決定するように構成できる。これに応じて、メモリコントローラは、ニアメモリ内の階層2からAデータを読み出し、Aデータを要求側エンティティに提供するように構成できる。メモリコントローラはまた、取り出されたAデータをニアメモリの階層1に書き込み、以前に取り出されたBデータを階層1からニアメモリ内の階層2に書き込むように構成し、したがって、階層1及び階層2内のデータをスワップできる。メモリコントローラはまた、ニアメモリの階層1と階層2との間のデータのスワッピングを反映するために、ニアメモリの階層1内のメタデータ部分内のビットを修正するように構成できる。
【0015】
特定の実装では、メモリコントローラは、階層的な方式、例えば、T1→T2→T3で複数の階層からデータ追出しを実行するように構成できる。例えば、上記の例では、メタデータ部分内の更なるビットを検査するとき、メモリコントローラは、第3の対(ビット5及びビット6)が(0,0)を含むと決定してもよい。したがって、メモリコントローラは、データAがファーメモリ内の第1の位置に位置すると決定できる。これに応じて、メモリコントローラは、ファーメモリ内の第1の位置からデータAを取り出し、取り出されたデータAを要求側エンティティに提供するように構成できる。メモリコントローラはまた、ニアメモリの階層1に現在記憶されているデータ(例えば、データB)をニアメモリの階層2に追い出し、ニアメモリの階層2に現在記憶されているデータ(例えば、セクションCに対応するデータC)をファーメモリの第1の位置に追い出すように構成できる。したがって、読み出し動作が完了すると、データA、B、Cは、階層1、階層2及びファーメモリの第1の位置に位置する。
【0016】
書き込み動作中に、メモリコントローラは、ニアメモリの階層1内のメタデータ部分からデータを最初に読み出すように構成できる。メモリコントローラは、システムメモリのどのセクションからのデータがニアメモリの階層1に現在保持されているかと、決定されたセクションが書き込まれるべきターゲットセクションに一致するか否かとを決定するように構成できる。例えば、書き込み動作のターゲットセクションがセクションAであり、メタデータ部分からの最初の2ビットが(0,0)を含むとき、メモリコントローラは、Aデータがニアメモリの階層1に現在あると決定するように構成できる。これに応じて、メモリコントローラは、ニアメモリの階層1のデータ部分内のデータを上書きし、書き込み動作の完了を報告するように構成できる。
【0017】
他方、メタデータ部分からの最初の2ビットが(0,1)を含むとき、メモリコントローラは、データBが現在ニアメモリの階層1にあると決定するように構成できる。これに応じて、メモリコントローラは、ニアメモリの階層1への書き込みを控え、その代わりにメタデータ部分の更なるビットを検査し続けて、どのビット対が(0,0)を含むかを決定するように構成できる。例えば、メタデータ部分からの第2の対(ビット3及びビット4)が(0,0)を含むとき、メモリコントローラは、Aデータがニアメモリの階層2に現在位置すると決定するように構成できる。これに応じて、メモリコントローラは、ニアメモリの階層1の代わりにニアメモリの階層2に書き込むように構成できる。完了すると、メモリコントローラは、書き込み動作の完了を報告するように構成できる。
【0018】
開示される技術のいくつかの実施形態は、以前にキャッシュメモリとして使用され、OSには見えないメモリが、OSによってアドレス指定可能なシステムメモリとして構成されることを可能にすることによって、コンピューティングデバイスの動作及び性能を改善できる。例えば、ニアメモリをCPUのための専用キャッシュメモリとして使用する代わりに、ニアメモリは、上記のスワッピング動作を介してCPUにキャッシング機能を提供し続けながら、割り当て可能なシステムメモリとして使用できる。アドレス指定可能なシステムメモリの量を増加させることによって、コンピューティングデバイスにおけるコンピューティング又は他の適切なタイプのレイテンシが減少できる。
【0019】
開示される技術のいくつかの実施形態はまた、直接マッピングされたキャッシュに関連する特定の性能外れ値を軽減することもできる。特定のコンピューティングシステムでは、2つのキャッシュラインがニアメモリにおいて交互にアクセスされるとき、2つのキャッシュラインのうち一方は、他方のキャッシュラインをニアメモリからファーメモリに追い出すことによって、ニアメモリから追い出されてもよい。このようなスワッピングは、メモリ帯域幅を低減し、したがって、システム性能に悪影響を及ぼす可能性がある。ニアメモリを複数の階層に構成することによって、このようなスワッピングは、ニアメモリの内部の階層の間、例えば、上記の例における階層1と階層2との間とすることができる。したがって、このようなスワッピングのメモリ帯域幅への影響は、ニアメモリとファーメモリとの間のスワッピングよりもかなり小さくすることができる。さらに、ニアメモリを複数の階層に構成することはまた、コンピューティングシステムがファーメモリよりもニアメモリにおいてより多くの容量をプロビジョニングされることを可能にする。
【図面の簡単な説明】
【0020】
図1】開示される技術の実施形態に従ってメモリ動作管理を実装する分散コンピューティングシステムを示す概略図である。
図2】開示される技術の実施形態に従って図1の分散コンピューティングシステムの特定のハードウェア/ソフトウェアコンポーネントを示す概略図である。
図3A】開示される技術の実施形態に従ったシステムメモリの階層化の例を示す概略図である。
図3B】開示される技術の実施形態に従ったシステムメモリの階層化の例を示す概略図である。
図4A】開示される技術の実施形態に従ってニアメモリをスワップバッファとして使用する例示的な読み出し動作を示す概略タイミング図である。
図4B】開示される技術の実施形態に従ってニアメモリをスワップバッファとして使用する例示的な読み出し動作を示す概略タイミング図である。
図4C】開示される技術の実施形態に従ってニアメモリをスワップバッファとして使用する例示的な読み出し動作を示す概略タイミング図である。
図5A】開示される技術の実施形態に従ってニアメモリをスワップバッファとして使用する例示的な書き込み動作を示す概略タイミング図である。
図5B】開示される技術の実施形態に従ってニアメモリをスワップバッファとして使用する例示的な書き込み動作を示す概略タイミング図である。
図5C】開示される技術の実施形態に従ってニアメモリをスワップバッファとして使用する例示的な書き込み動作を示す概略タイミング図である。
図6】11の分散コンピューティングシステムの特定のコンポーネントに適したコンピューティングデバイスである。
【発明を実施するための形態】
【0021】
メモリ階層化技術のためのシステム、デバイス、コンポーネント、モジュール、ルーチン、データ構造及びプロセスの特定の実施形態が以下に記載される。以下の説明では、開示される技術の特定の実施形態の完全な理解を提供するために、コンポーネントの具体的な詳細が含まれている。当業者はまた、当該技術が更なる実施形態を有する可能性があることも理解する。当該技術はまた、図1図6を参照して以下に説明する実施形態の詳細のうちいくつかを伴わずに実施できる。例えば、データセンタ又は他の適切な分散コンピューティングシステムに実装される代わりに、本明細書に開示されるメモリ動作管理技術の態様はまた、パーソナルコンピュータ、スマートフォン、タブレット又は他の適切なタイプのコンピューティングデバイスに実装できる。
【0022】
本明細書で使用される「分散コンピューティングシステム」という用語は、一般的に、複数のサーバ又はホストを互いに及び/又は外部ネットワーク(例えば、インターネット)に相互接続する複数のネットワークノードを有する相互接続されたコンピュータシステムを示す。「ネットワークノード」という用語は、一般的に、物理的なネットワークデバイスを示す。例示的なネットワークノードは、ルータ、スイッチ、ハブ、ブリッジ、ロードバランサ、セキュリティゲートウェイ又はファイアウォールを含む。「ホスト」は、一般的に、物理的なコンピューティングデバイスを示す。特定の実施形態では、ホストは、例えば、1つ以上の仮想マシン、仮想スイッチ又は他の適切な仮想化されたコンポーネントを実装するように構成できる。例えば、ホストは、1つ以上の仮想マシン、仮想スイッチ又は他の適切なタイプの仮想コンポーネントをサポートするように構成されたハイパーバイザを有するサーバを含むことができる。他の実施形態では、ホストは、オペレーティングシステムの上で直接適切なアプリケーションを実行するように構成できる。
【0023】
特定の実装では、コンピュータネットワークは、アンダーレイネットワーク(underlay network)上に実装されるオーバーレイネットワーク(overlay network)に概念的に分割できる。「オーバーレイネットワーク」は、一般的に、アンダーレイネットワークの上に実装され、その上で動作する抽象化されたネットワークを示す。アンダーレイネットワークは、互いに相互接続された複数の物理的なネットワークノードを含むことができる。オーバーレイネットワークは、1つ以上の仮想ネットワークを含むことができる。「仮想ネットワーク」は、一般的に、オーバーレイネットワーク内のアンダーレイネットワークの一部の抽象化を示す。仮想ネットワークは、仮想ネットワーク及び関連するコンピューティング、ストレージ又は他の適切なリソースにアクセスするためにユーザ又は「テナント(tenant)」によって個々に使用される「テナントサイト(tenant site)」と呼ばれる1つ以上の仮想エンドポイントを含むことができる。テナントサイトは、1つ以上のテナントエンドポイント(TEP, tenant end point)、例えば、仮想マシンをホストできる。仮想ネットワークは、異なるホスト上の複数のTEPを相互接続できる。オーバーレイネットワーク内の仮想ネットワークノードは、アンダーレイネットワーク内の1つ以上の物理的なネットワークノードに沿った1つ以上のネットワークルートに個々に対応する仮想リンクによって互いに接続できる。他の実装では、コンピュータネットワークはアンダーレイネットワークのみを含むことができる。
【0024】
また、本明細書で使用される「ニアメモリ」という用語は、一般的に、プロセッサから離れた他の「ファーメモリ」よりもプロセッサ(例えば、CPU)に物理的に近接したメモリを示す。例えば、ニアメモリは、インターポーザ(interposer)及び/又はシリコン貫通電極(through silicon via)を介して1つ以上のCPUダイと共に集積回路(IC, Integrated Circuit)コンポーネントパッケージに組み込まれる1つ以上のDDR SDRAMダイを含むことができる。対照的に、ファーメモリは、CPUがCXL又は他の適切なタイプのプロトコルを介してインターフェース接続できるアクセラレータ、メモリバッファ又はスマートI/Oデバイス上の更なるメモリを含むことができる。例えば、データセンタでは、複数のサーバ/サーバブレード上の複数のメモリデバイスが、サーバ/サーバブレードのうち1つの上の単一のCPUに割り当て可能であるようにプールされてもよい。CPUは、データセンタ内のコンピュータネットワークを介して割り当てられたファーメモリにアクセスできる。
【0025】
図1は、開示される技術の実施形態に従ってメモリ動作管理を実装する分散コンピューティングシステム100を示す概略図である。図1に示すように、分散コンピューティングシステム100は、複数のホスト106を相互接続するアンダーレイネットワーク108と、対応するユーザ101に関連する複数のクライアントデバイス102と、互いに動作可能に結合されたプラットフォームコントローラ125とを含むことができる。プラットフォームコントローラ125は、クラスタコントローラ、ファブリックコントローラ、データベースコントローラ、及び/又は分散コンピューティングシステム100内のサーバ106及び/又は他のコンポーネントのリソース及び動作を監視及び管理するように構成された他の適切なタイプのコントローラとすることができる。分散コンピューティングシステム100のコンポーネントが図1に示されているが、他の実施形態では、分散コンピューティングシステム100はまた、更なるコンポーネント及び/又は異なるコンポーネント又は配置を含むこともできる。例えば、特定の実施形態では、分散コンピューティングシステム100はまた、他の適切な構成で、ネットワーク記憶デバイス、更なるホスト及び/又は他の適切なコンポーネント(図示せず)も含むことができる。
【0026】
図1に示すように、アンダーレイネットワーク108は、複数のホスト106とユーザ101のクライアントデバイス102とを相互接続する1つ以上のネットワークノード112を含むことができる。特定の実施形態では、ホスト106は、ラック、アクションゾーン、グループ、セット又は他の適切な区分に編成できる。例えば、図示の実施形態では、ホスト106は、第1、第2及び第3のホストセット107a~107cとして個々に識別される3つのホストセットにグループ化される。ホストセット107a~107cのそれぞれは、それぞれ、対応するネットワークノード112a~112cに動作可能に結合され、これらは、一般的に、「トップオブラック(top-of-rack)」ネットワークノード又は「TOR」と呼ばれる。次いで、TOR112a~112cは、更なるネットワークノード112に動作可能に結合されて、階層型、フラット型、メッシュ型又は他の適切なタイプのトポロジでコンピュータネットワークを形成できる。アンダーレイネットワーク108は、ホスト106、プラットフォームコントローラ125及びユーザ101の間の通信を可能にできる。他の実施形態では、複数のホストセット107a~107cは、単一のネットワークノード112を共有してもよく、或いは、他の適切な構成を有することができる。
【0027】
ホスト106は、コンピューティング、ストレージ、及び/又は他の適切なクラウド若しくは他の適切なタイプのコンピューティングサービスをユーザ101に提供するように個々に構成できる。例えば、図2を参照して以下でより詳細に説明するように、ホスト106のうち1つは、ユーザ101からの要求で、1つ以上の仮想マシン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及び/又は他の適切なプログラミング言語でソースコードとして記述されたコンピュータプログラム、プロシージャ又はプロセスでもよい。コンポーネントは、限定することなく、1つ以上のモジュール、オブジェクト、クラス、ルーチン、プロパティ、プロセス、スレッド、実行可能ファイル、ライブラリ又は他のコンポーネントを含んでもよい。コンポーネントは、ソース形式又はバイナリ形式でもよい。コンポーネントは、コンパイル前のソースコードの態様(例えば、クラス、プロパティ、プロシージャ、ルーチン)、コンパイルされたバイナリユニット(例えば、ライブラリ、実行可能ファイル)又はランタイムでインスタンス化されて使用されるアーチファクト(例えば、オブジェクト、プロセス、スレッド)を含んでもよい。
【0031】
システム内のコンポーネントは、システム内で異なる形式をとってもよい。一例として、第1のコンポーネントと、第2のコンポーネントと、第3のコンポーネントとを含むシステムは、限定することなく、ソースコード内のプロパティである第1のコンポーネントと、バイナリコンパイルされたライブラリである第2のコンポーネントと、ランタイムで作成されたスレッドである第3のコンポーネントとを有するシステムを包含することができる。コンピュータプログラム、プロシージャ又はプロセスは、オブジェクトコード、中間コード又はマシンコードにコンパイルされ、パーソナルコンピュータ、ネットワークサーバ、ラップトップコンピュータ、スマートフォン及び/又は他の適切なコンピューティングデバイスの1つ以上のプロセッサによる実行のために提示されてもよい。
【0032】
同様に、コンポーネントはハードウェア回路を含んでもよい。当業者は、ハードウェアが固定されたソフトウェアと考えられ、ソフトウェアが液化されたハードウェアと考えられることを認識する。単なる一例として、コンポーネント内のソフトウェア命令は、プログラマブルロジックアレイ回路に焼き付けられてもよく、或いは、適切な集積回路を有するハードウェア回路として設計されてもよい。同様に、ハードウェアはソフトウェアによってエミュレートされてもよい。ソースコード、中間コード及び/又はオブジェクトコード及び関連データの様々な実装は、リードオンリメモリ、ランダムアクセスメモリ、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス、及び/又は伝搬信号を除く他の適切なコンピュータ可読記憶媒体を含むコンピュータメモリに記憶されてもよい。
【0033】
図2に示すように、ソースホスト106a並びに宛先ホスト106b及び106b'(宛先ホスト106bのみが詳細なコンポーネントと共に示されている)はそれぞれ、互いに動作可能に結合されたプロセッサ132、メモリ134、ネットワークインターフェースカード136及びパケットプロセッサ138を含むことができる。他の実施形態では、ホスト106はまた、オペレータ及び/又は自動ソフトウェアコントローラ(図示せず)又は他の適切なタイプのハードウェアコンポーネントから入力を受け入れ、これらに出力を提供するように構成された入出力デバイスを含むこともできる。
【0034】
プロセッサ132は、マイクロプロセッサ、キャッシュ及び/又は他の適切な論理デバイスを含むことができる。メモリ134は、揮発性及び/又は不揮発性媒体(例えば、ROM、RAM、磁気ディスク記憶媒体、光記憶媒体、フラッシュメモリデバイス及び/又は他の適切な記憶媒体)、及び/又はプロセッサ132から受信したデータ及びプロセッサ110のための命令(例えば、図5A図5Dを参照して以下に説明する方法を実行するための命令)を記憶するように構成された他のタイプのコンピュータ可読記憶媒体を含むことができる。図2では、説明のために、1つのプロセッサ132及び1つのメモリ134のみが個々のホスト106に示されているが、他の実施形態では、個々のホスト106は、2つ、6つ、8つ又は任意の他の適切な数のプロセッサ132及び/又はメモリ134を含むことができる。
【0035】
ソースホスト106a及び宛先ホスト106bは、個々のプロセッサ132にハイパーバイザ140(第1及び第2のハイパーバイザ140a及び140bとして個々に識別される)及びオペレーティングシステム141(第1及び第2のオペレーティングシステム141a及び141bとして個々に識別される)を提供させるために、プロセッサ132によって実行可能な命令をメモリ134内に個々に含むことができる。ハイパーバイザ140及びオペレーティングシステム141は、別個のコンポーネントとして示されているが、他の実施形態では、ハイパーバイザ140は、ホスト106又はホスト106のファームウェアコンポーネント上で実行するオペレーティングシステム141の上で動作できる。
【0036】
ハイパーバイザ140は、テナントサイト142に編成された1つ以上の仮想マシン144を生成、監視、終了及び/又は他の方法で管理するように個々に構成できる。例えば、図2に示すように、ソースホスト106aは、第1のテナントサイト142a及び第2のテナントサイト142bをそれぞれ管理する第1のハイパーバイザ140aを提供できる。宛先ホスト106bは、第1のテナントサイト142a'及び第2のテナントサイト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を相互接続する1つ以上の仮想ネットワーク146を有するオーバーレイネットワーク108'を含むことができる。例えば、第1の仮想ネットワーク142aは、ソースホスト106a及び宛先ホスト106bにおける第1のテナントサイト142a及び142a'を相互接続する。第2の仮想ネットワーク146bは、ソースホスト106a及び宛先ホスト106bにおける第2のテナントサイト142b及び142b'を相互接続する。単一の仮想ネットワーク146が1つのテナントサイト142に対応するものとして示されているが、他の実施形態では、複数の仮想ネットワーク146(図示せず)が単一のテナントサイト146に対応するように構成されてもよい。
【0038】
仮想マシン144は、1つ以上のアプリケーション147を実行して、適切なクラウド又は他の適切なタイプのコンピューティングサービスをユーザ101(図1)に提供するように構成できる。例えば、ソースホスト106aは、オンライン取引を監視し、コンピューティングサービスに加入している複数のユーザ101に価格データを配信するコンピューティングサービスを提供するように構成されたアプリケーション147を実行できる。仮想ネットワーク146上の仮想マシン144はまた、仮想マシン144が異なるホスト106に位置していても、アンダーレイネットワーク108(図1)を介して互いに通信することもできる。
【0039】
仮想ネットワーク146のそれぞれの通信は、他の仮想ネットワーク146から分離できる。特定の実施形態では、通信は、セキュリティゲートウェイを通じて或いは別法で制御された様式で、1つの仮想ネットワーク146から別の仮想ネットワークに横断することを可能にできる。仮想ネットワークアドレスは、特定の仮想ネットワーク146内の仮想マシン144のうち1つに対応できる。したがって、異なる仮想ネットワーク146は、同じである1つ以上の仮想ネットワークアドレスを使用できる。例示的な仮想ネットワークアドレスは、IPアドレス、MACアドレス及び/又は他の適切なアドレスを含むことができる。仮想マシン144の間の通信を容易にするために、仮想スイッチ(図示せず)は、ネットワークインターフェースカード136を介して異なる仮想マシン144に向けられ、パケットプロセッサ138によって容易にされるパケットをスイッチング又はフィルタリングするように構成できる。
【0040】
図2に示すように、互いの通信又は外部デバイスとの通信を容易にするために、個々のホスト106はまた、コンピュータネットワーク(例えば、図1のアンダーレイネットワーク108)とインターフェース接続するためのネットワークインターフェースカード(NIC, network interface card)136も含むことができる。NIC136は、イーサネット(登録商標)、ファイバチャネル、Wi-Fi又は他の適切な物理及び/又はデータリンク層標準に従って、ネットワーク媒体(例えば、光ファイバ)を介してデータを(例えば、パケットとして)送信/受信することによって、ホスト106の間の通信を可能にするためのネットワークアダプタ、LANアダプタ、物理ネットワークインターフェース又は他の適切なハードウェア回路及び/又はファームウェアを含むことができる。動作中に、NIC136は、ホスト106上で実行する適切なソフトウェアコンポーネントとの間の通信を容易にすることができる。例示的なソフトウェアコンポーネントは、仮想スイッチ141、仮想マシン144、仮想マシン144上で実行するアプリケーション147、ハイパーバイザ140又は他の適切なタイプのコンポーネントを含むことができる。
【0041】
特定の実装では、パケットプロセッサ138は、NIC136に相互接続され及び/又はNIC210と統合されて、通信セキュリティを実施するか、ネットワーク仮想化を実行するか、ネットワークアドレスを変換するか、通信フロー状態を維持/制限するか、或いは、他の適切な機能を実行するためのネットワークトラフィック動作を容易にすることができる。特定の実装では、パケットプロセッサ138は、NIC136と統合されたフィールドプログラマブルゲートアレイ(FPGA, Filed-Programmable Gate Array)を含むことができる。
【0042】
FPGAは、論理回路のアレイと、製造後にユーザによって論理ゲートのように論理回路が「一緒に配線される」ことを可能にする再構成可能な相互接続の階層とを含むことができる。したがって、ユーザ101は、複雑な組み合わせ機能を実行するためにFPGA内に論理ブロックを構成でき、或いは、ソフトウェアよりもはるかに高速でハードウェア内で実行可能な同等の機能を合成するために単に単純な論理演算を構成できる。図示の実施形態では、パケットプロセッサ138は、NIC136に通信可能に結合された1つのインターフェースと、他方でネットワークスイッチ(例えば、トップオブラック又は「TOR」スイッチ)に結合された別のインターフェースとを有する。他の実施形態では、パケットプロセッサ138はまた、特定用途向け集積回路(ASIC, Application Specific Integrated Circuit)、マイクロプロセッサ又は他の適切なハードウェア回路を含むこともできる。
【0043】
動作中に、プロセッサ132及び/又はユーザ101(図1)は、パケットプロセッサ138内の論理回路を構成して、複雑な組み合わせ機能又は単純な論理演算を実行し、ソフトウェアよりもはるかに高速でハードウェアにおいて実行可能な同等の機能を合成できる。例えば、パケットプロセッサ138は、MATのようなフローテーブルに含まれる構成されたポリシー又はルールに従って、個々のフローのインバウンド/アウトバウンドパケットを処理するように構成できる。フローテーブルは、顧客が供給したアドレス空間、スケーラブルなロードバランサ、セキュリティグループ及びアクセス制御リスト(ACL, Access Control List)、仮想ルーティングテーブル、帯域幅計測、サービス品質(QoS, Quality of Service)等を有するプライベート仮想ネットワークを可能にするための各フローに対応する処理アクションを表すデータを含むことができる。
【0044】
したがって、パケットプロセッサ138が、インバウンド/アウトバウンドパケットを特定のフローに属するものとして識別すると、パケットプロセッサ138は、処理されたパケットをNIC136又はTOR112に転送する前に、フローテーブル内の1つ以上の対応するポリシーを適用できる。例えば、図2に示すように、アプリケーション147、仮想マシン144及び/又はソースホスト106a上の他の適切なソフトウェアコンポーネントは、例えば、宛先ホスト106b及び106b'における他のアプリケーション147に宛てられたアウトバウンドパケットを生成できる。ソースホスト106aにおけるNIC136は、フローテーブル内の特定のポリシーに従って処理するために、生成されたパケットをパケットプロセッサ138に転送できる。処理されると、パケットプロセッサ138は、アウトバウンドパケットを第1のTOR112aに転送でき、次に、第1のTOR112aは、オーバーレイ/アンダーレイネットワーク108及び108'を介してパケットを第2のTOR210bに転送する。
【0045】
次いで、第2のTOR112bは、宛先ホスト106b及び106b'における別のフローテーブル内の他のポリシーに従って処理されるように、パケットを宛先ホスト106b及び106b'におけるパケットプロセッサ138に転送できる。パケットプロセッサ138がパケットをいずれのフローに属するものとしても識別できない場合、パケットプロセッサ138は、例外処理のためにNIC136を介してパケットをプロセッサ132に転送できる。別の例では、第1のTOR112aが、例えば、第2のTOR112bを介して宛先ホスト106bからインバウンドパケットを受信したとき、第1のTOR112aは、パケットのフローに関連するポリシーに従って処理されるように、パケットをパケットプロセッサ138に転送できる。次いで、パケットプロセッサ138は、処理されたパケットをNIC136に転送して、例えば、アプリケーション147又は仮想マシン144に転送できる。
【0046】
特定の実施形態では、メモリ134は、高速メモリ及び低速メモリを含むことができる。高速メモリは、プロセッサ132に対して直ちに利用可能とするために頻繁に使用されるデータ及び命令を保持するために、より低速のメモリとプロセッサ132との間のバッファとして機能することができる。例えば、特定のコンピュータは、プロセッサ132のためのキャッシュメモリとしてプロセッサ132と共にパッケージ化されたダブルデータレート(DDR, Double Data Rate)シンクロナスダイナミックランダムアクセスメモリ(SDRAM, Synchronous Dynamic Random-Access Memory)を含むことができる。このようなキャッシュメモリは、プロセッサ132に近接していることから、場合によっては「ニアメモリ」と呼ばれる。ニアメモリに加えて、プロセッサ132は、コンピュートエクスプレスリンク(CXL, Compute Express Link)又は他の適切なタイプのインターフェースプロトコルを介して、より低速のメモリとインターフェース接続できる。より低速のメモリは、ニアメモリよりもプロセッサ132からの遠い距離にあることに起因して、場合によっては「ファーメモリ」と呼ばれることがある。
【0047】
プロセッサ132用のキャッシュメモリとしてDDR SDRAMを使用することは、特定の欠点を有する可能性がある。例えば、DDR SDRAMメモリは、典型的には、ファーメモリに使用されるものよりも高価であり、コンピューティングデバイス上のオペレーティングシステム(OS, Operating System)によってアクセスされるのに利用可能ではないか、或いは、OSにとって可視ではないことすらある。その代わりに、プロセッサ132はニアメモリに対して排他的な制御を有する。さらに、DDR SDRAMのようなニアメモリデバイスは、非常に高価になる可能性がある。いくつかのデータセンタサーバでは、ニアメモリとしてのDDR SDRAMのコストは、サーバの総コストの約50パーセントまでになる可能性がある。したがって、ニアメモリがオペレーティングシステム141に可視であり、オペレーティングシステム110によってアクセス可能である場合、サーバの設備投資、及びホスト106から様々なコンピューティングサービスを提供するための関連コストが大幅に削減できる。
【0048】
開示される技術のいくつかの実施形態は、ニアメモリがプロセッサ132のための専用キャッシュメモリとして使用される代わりに、ファーメモリのためのスワップバッファとして使用されるメモリ階層化を実装することを対象とする。したがって、プロセッサ132は、ニアメモリ及びファーメモリがアドレス指定可能なシステムメモリとしてオペレーティングシステム141に公開される一方で、ニアメモリ内のデータをキャッシュし続けることができる。特定の実装では、ハードウェアメモリコントローラ(図示せず)は、キャッシュライン粒度(例えば、64バイト)でスワッピング動作を制御するように構成できる。したがって、ホスト106は、ソフトウェアの介入又は影響を全く受けない。他の実装では、ハードウェアコンポーネントとソフトウェアコンポーネントの双方を有するメモリコントローラが、このようなスワッピング動作を制御するために使用されてもよい。
【0049】
ニアメモリとファーメモリとの間の記憶空間の比は柔軟にすることができる。例えば、システムメモリアドレスの範囲は、2対1、2対2、3対1、3対2、4対1、4対3の比、又は1以上の整数の他の適切な比でのニアメモリとファーメモリとの組み合わせによってカバーできる。図3Aに示す例示的な例では、システムメモリアドレス150の範囲は、2対2の比でニアメモリ151とファーメモリ153との組み合わせによってカバーされる。したがって、システムメモリ150の範囲は、4つのセクション152、例えば、A、B、C及びDに分割できる。各セクションは、データ部分156(例えば、512ビット)及びメタデータ部分154(例えば、128ビット)を含むことができる。データ部分156は、ホスト106(図2)において実行されるユーザデータ又は命令を表すデータを含むように構成できる。メタデータ部分154は、データ部分156内のデータの様々な属性を表すデータを含むことができる。例えば、メタデータ部分154は、エラー検査及び訂正(ECC, error checking and correction)ビット又は他の適切なタイプの情報を含むことができる。
【0050】
特定の実施形態では、ニアメモリ151をファーメモリ153のためのスワップバッファとして使用するとき、ニアメモリの複数のセクションは、個々のルックスルー階層(look-through tier)として構成できる。例えば、ニアメモリ151の第1のセクション151Aは、階層1として構成でき、ニアメモリの第2のセクション151Bは、階層2として構成される。ファーメモリは、第1のメモリ位置158a及び第2のメモリ位置185bのように1つ以上の更なるセクションを含んでもよい階層3として構成できる。したがって、動作中に、キャッシュラインのようなデータの読み出しを実行するとき、メモリコントローラ135は、ニアメモリ151の階層1がキャッシュラインを含むか否かを最初に決定するように構成できる。階層1がキャッシュラインを含むとき、メモリコントローラ135は、階層1からキャッシュラインを取り出し、キャッシュラインを要求側エンティティに提供し、読み出し動作を終了する。階層1がキャッシュラインを含まないとき、メモリコントローラ135は、階層2がキャッシュラインを含むか否かを決定できる。図4A図5Cを参照してより詳細に以下で説明するように、このような動作は、ニアメモリ151内の更なる階層について再帰的に繰り返されることができる。他の実施形態では、複数のセクションは、他の適切な動作方式で構成できる。
【0051】
開示される技術のいくつかの実施形態によれば、ニアメモリ151の階層1のメタデータ部分154内のいくつかのビットは、(1)システムメモリの範囲のどのセクションをニアメモリ151の階層1が現在保持しているかと、(2)ニアメモリの階層2又はファーメモリ153内のシステムメモリの範囲の更なるセクションの位置とを示すように構成できる。システムメモリ150の4つのセクションを有する例では、ニアメモリ151内のメタデータ部分154内の8ビットは、上記の情報を示すように構成できる。例えば、最初の2ビットの第1の対は、どのセクション152がニアメモリ151の階層1に現在保持されているかを示すように構成できる。
【0052】
【表3】
したがって、メモリコントローラ135は、図3Aに示すように、ビット1及びビット2がそれぞれ0及び0を含むとき、ニアメモリ151の階層1がシステムメモリのセクションAからのデータを含むと容易に決定できる。
【0053】
最初の2ビットはニアメモリ151に対応するが、更なる6ビットは、図3Bに示すように、ニアメモリの階層2と、ファーメモリ153内の第1の位置と、ファーメモリ153内の第2の位置とに個々に対応する3つの対に再分割できる。例えば、第2の対、第3の対及び第4の対は、それぞれ、以下のように、第2の階層、ファーメモリ153内の第1の位置及び第2の位置にそれぞれ対応できる。
【0054】
【表4】
したがって、メモリコントローラ135は、システムメモリ150の特定のセクションからのデータがニアメモリ151の階層1に現在存在しない場合であっても、そのデータがニアメモリ151の階層2又はファーメモリ153のどこに存在するかを容易に決定できる。例えば、第2の対(すなわち、ビット3及びビット4)が(0,1)を含むとき、メモリコントローラ135は、システムメモリ150のセクションBに対応するデータがニアメモリ151の階層2にあると決定するように構成できる。第3の対(すなわち、ビット5及びビット6)が(1,1)を含むとき、メモリコントローラ135は、システムメモリ150のセクションDに対応するデータがファーメモリ153内の第1の位置158aにあると決定するように構成できる。第4の対(すなわち、ビット7及びビット8)が(1,0)を含むとき、図3A及び図3Bに示すように、メモリコントローラ135は、システムメモリ150のセクションCに対応するデータがファーメモリ153内の第2の位置158bにあると決定するように構成できる。上記の例は、システムメモリの範囲の個々のセクションの位置を符号化するためにメタデータ部分において8ビットを使用するが、他の実装では、同じ情報を符号化するためにメタデータ部分において他の適切な数のビットが使用されてもよい。例えば、4つのセクションを有する上記の例では、5ビット、6ビット又は7ビットが、セクションの位置情報を符号化するために使用されてもよい。
【0055】
ニアメモリ151内のメタデータ部分154からのデータを使用して、メモリコントローラ135は、ニアメモリ151の階層1をスワップバッファとして使用して、ニアメモリ151内の階層とファーメモリ153との間のスワップ動作を管理するように構成できる。例えば、図4Aに示すように、読み出し動作中に、CPUは、例えば、セクションAに対応するデータがCPUのラストレベルキャッシュに現在存在していないとき、このようなデータを読み出すためのコマンドをメモリコントローラ135に発行できる。これに応じて、メモリコントローラ135は、ニアメモリ151の階層1から読み出して、ニアメモリ151のデータ部分及びメタデータ部分の双方からデータを取り出すように構成できる。次いで、メモリコントローラ135は、例えば、上記のテーブルを使用して、取り出されメタデータに基づいて、取り出されたデータがシステムメモリのどのセクションに対応するかと、決定されたセクションが読み出されるターゲットセクションに一致するか否かを決定するように構成できる。例えば、図4Aに示すように、ターゲットセクションがセクションAであり、階層1内のメタデータ部分からの最初の2ビットが(0,0)を含むとき、メモリコントローラ135は、取り出されたデータがセクションAからのものである(すなわち、「Aデータ」)と決定するように構成できる。したがって、メモリコントローラ135は、セクションAの取り出されたAデータを、コンピューティングデバイス上のCPUによって実行されるアプリケーションのような要求側エンティティに転送できる。
【0056】
他方、図4Bに示すように、メタデータ部分からの最初の2ビットが(0,0)の代わりに(0,1)を含むとき、メモリコントローラ135は、取り出されたデータがAデータではなくセクションB(すなわち、「Bデータ」)に属すると決定するように構成できる。次いで、メモリコントローラ135は、メタデータ部分内の更なるビットを検査し続けて、どのビット対が(0,0)を含むかを決定できる。例えば、メタデータ部分からの第2の対(ビット3及びビット4)が(0,0)を含むとき、メモリコントローラ135は、Aデータがニアメモリ151内の階層2に位置すると決定するように構成できる。これに応じて、メモリコントローラ135は、ニアメモリ151内の階層2からAデータを読み出し、Aデータを要求側エンティティに提供するように構成できる。次いで、メモリコントローラ135は、取り出されたAデータをニアメモリの階層1に書き込み、以前に取り出されたBデータをニアメモリの階層2に書き込むように構成できる。メモリコントローラ135はまた、ニアメモリ151の階層1及び階層2内のセクションAとセクションBとの間のスワッピングを反映するために、ニアメモリの階層1内のメタデータ部分内のビットを修正するように構成できる。
【0057】
別の例では、図4Bに示すように、メタデータ部分からの最初の2ビットが(0,0)の代わりに(0,1)を含むとき、メモリコントローラ135は、取り出されたデータがAデータではなくセクションB(すなわち、「Bデータ」)に属すると決定するように構成できる。メモリコントローラ135は、メタデータ部分内の更なるビットを検査し続けて、例えば、メタデータ部分からの第3の対(ビット5及びビット6)が(0,0)を含むと決定でき、次いで、メモリコントローラ135は、Aデータがファーメモリ153内の第1の位置158a(図3A)に位置すると決定するように構成できる。これに応じて、メモリコントローラ135は、ファーメモリ158内の第1の位置153aからAデータを読み出し、Aデータを要求側エンティティに提供するように構成できる。次いで、メモリコントローラ135は、取り出されたAデータをニアメモリの階層1に書き込み、以前に取り出されたBデータをニアメモリの階層2に書き込み、階層2に現在存在するデータ(例えば、Cデータ)をファーメモリ153内の第1の位置158aに追い出すように構成できる。メモリコントローラ135はまた、ニアメモリ151の階層1から階層2への、そしてファーメモリ153における階層3への順次的なデータの追出しを反映するために、ニアメモリ151の階層1内のメタデータ部分内のビットを修正するように構成できる。
【0058】
書き込み動作中に、図5Aに示すように、メモリコントローラ135は、ニアメモリ151の階層1内のメタデータ部分からデータを最初に読み出すように構成できる。次いで、メモリコントローラ135は、システムメモリのどのセクションからのデータがニアメモリの階層1に現在保持されているかと、決定されたセクションが書き込まれるべきターゲットセクションに一致するか否かとを決定できる。例えば、ターゲットセクションがセクションAであり、メタデータ部分からの最初の2ビットが(0,0)を含むとき、メモリコントローラ135は、Aデータがニアメモリ151の階層1に現在あると決定するように構成できる。したがって、メモリコントローラ135は、ニアメモリ151の階層1のデータ部分内のデータを上書きし、書き込み動作の完了を報告できる。
【0059】
他方、図5Bに示すように、メタデータ部分からの最初の2ビットが(0,1)を含むとき、メモリコントローラ135は、データBが現在ニアメモリ151の階層1にあると決定するように構成できる。これに応じて、メモリコントローラ135は、ニアメモリ151の階層1への書き込みを控え、その代わりにメタデータ部分の更なるビットを検査し続けて、どのビット対が(0,0)を含むかを決定するように構成できる。例えば、メタデータ部分からの第2の対(ビット3及びビット4)が(0,0)を含むとき、メモリコントローラ135は、Aデータがニアメモリ151の階層2に現在位置すると決定するように構成できる。これに応じて、メモリコントローラ135は、ニアメモリ151の階層1の代わりにニアメモリ151の階層2に書き込み、書き込み動作の完了を報告するように構成できる。
【0060】
別の例では、図5Cに示すように、メタデータ部分からの最初の2ビットが(0,1)を含むとき、メモリコントローラ135は、データBがニアメモリ151の階層1に現在あると決定するように構成できる。これに応じて、メモリコントローラ135は、ニアメモリ151の階層1への書き込みを控え、その代わりに、メタデータ部分の更なるビットを検査し続けて、どのビット対が(0,0)を含むかを決定するように構成できる。例えば、メタデータ部分からの第3の対(ビット5及びビット6)が(0,0)を含むとき、メモリコントローラ135は、Aデータがファーメモリ158内の第1の位置153aに位置すると決定するように構成できる。これに応じて、メモリコントローラ135は、ニアメモリ151の階層1の代わりにファーメモリ153内の第1の位置158aに書き込み、書き込み動作の完了を報告するように構成できる。
【0061】
開示される技術のいくつかの実施形態は、以前にキャッシュメモリとして使用され、OSには見えないメモリが、OSによってアドレス指定可能なシステムメモリとして構成されることを可能にすることによって、コンピューティングデバイスの動作及び性能を改善できる。例えば、ニアメモリ151をCPUのための専用キャッシュメモリとして使用する代わりに、ニアメモリ151は、上記のスワッピング動作及び順次追い出し動作を介してCPUにキャッシング機能を提供し続けながら、割り当て可能なシステムメモリとして使用できる。アドレス指定可能なシステムメモリの量を増加させることによって、コンピューティングデバイスにおけるコンピューティング又は他の適切なタイプのレイテンシが減少できる。
【0062】
開示される技術のいくつかの実施形態はまた、ニアメモリ151の複数のセクションを個々の階層として構成することによって、階層1と階層2との間のスワッピング動作に関連する実行レイテンシを低減できる。メモリコントローラ135は、非常に高速(例えば、40ナノ秒以下)で階層1と階層2との間のスワッピング動作を実行するように構成できると考えられる。したがって、ニアメモリ151は、専用キャッシュの代わりにスワップバッファとして動作するように構成されるが、更なるスワッピング動作は、実行レイテンシに対して小さい影響を有する可能性があるか、或いは、無視できる影響を有することさえある。開示される技術の様々な態様を示すために、階層1及び階層2のみが図3A図5Cに示されているが、他の実施形態では、ニアメモリ151は、3つ、4つ、5つ又は任意の他の適切な数の階層を含むように構成できる。
【0063】
図6は、図1における分散コンピューティングシステム100の特定のコンポーネントに適したコンピューティングデバイス300である。例えば、コンピューティングデバイス300は、図1のホスト106、クライアントデバイス102又はプラットフォームコントローラ125に適したものとすることができる。非常に基本的な構成302において、コンピューティングデバイス300は、1つ以上のプロセッサ304及びシステムメモリ306を含むことができる。メモリバス308は、プロセッサ304とシステムメモリ306との間の通信に使用できる。
【0064】
所望の構成に依存して、プロセッサ304は、マイクロプロセッサ(μP, microprocessor)、マイクロコントローラ(μC, microcontroller)、デジタルシグナルプロセッサ(DSP, digital signal processor)又はこれらの任意の組み合わせを含むが、これらに限定されない任意のタイプのものとすることができる。プロセッサ304は、レベル1キャッシュ310及びレベル2キャッシュ312のような1つ以上のレベルのキャッシングと、プロセッサコア314と、レジスタ316とを含むことができる。例示的なプロセッサコア314は、算術論理演算ユニット(ALU, arithmetic logic unit)、浮動小数点ユニット(FPU, floating-point unit)、デジタル信号処理コア(DSPコア)又はこれらの任意の組み合わせを含むことができる。例示的なメモリコントローラ318はまた、プロセッサ304と共に使用でき、或いは、いくつかの実装では、メモリコントローラ318は、プロセッサ304の内部の部分とすることができる。
【0065】
所望の構成に依存して、システムメモリ306は、揮発性メモリ(RAM等)、非揮発性メモリ(ROM、フラッシュメモリ等)又はこれらの任意の組み合わせを含むが、これらに限定されない任意のタイプのものとすることができる。システムメモリ306は、オペレーティングシステム320と、1つ以上のアプリケーション322と、プログラムデータ324とを含むことができる。図6に示すように、オペレーティングシステム320は、1つ以上の仮想マシン144を管理するためのハイパーバイザ140を含むことができる。この記載される基本的な構成302は、図6において、内側の破線内のコンポーネントによって示されている。
【0066】
コンピューティングデバイス300は、更なる特徴又は機能と、基本的な構成302と任意の他のデバイス及びインターフェースとの間の通信を容易にするための更なるインターフェースとを有することができる。例えば、バス/インターフェースコントローラ330は、記憶インターフェースバス334を介して基本的な構成302と1つ以上のデータ記憶デバイス332との間の通信を容易にするために使用できる。データ記憶デバイス332は、取り外し可能な記憶デバイス336、取り外し不可能な記憶デバイス338、又はこれらの組み合わせとすることができる。取り外し可能な記憶デバイス及び取り外し不可能な記憶デバイスの例は、いくつか例を挙げると、フレキシブルディスクドライブ及びハードディスクドライブ(HDD, hard-disk drive)のような磁気ディスクデバイス、コンパクトディスク(CD, compact disk)ドライブ又はデジタル多用途ディスク(DVD, digital versatile disk)ドライブのような光ディスクドライブ、ソリッドステートドライブ(SSD, solid state drive)及びテープドライブを含む。例示的なコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール又は他のデータのような情報を記憶するための任意の方法又は技術で実装された揮発性及び不揮発性の、取り外し可能及び取り外し不可能な媒体を含むことができる。「コンピュータ可読記憶媒体」又は「コンピュータ可読記憶デバイス」という用語は、伝搬信号及び通信媒体を除外する。
【0067】
システムメモリ306、取り外し可能な記憶デバイス336及び取り外し不可能な記憶デバイス338は、コンピュータ可読記憶媒体の例である。コンピュータ可読記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ若しくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD, digital versatile disk)若しくは他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ若しくは他の磁気記憶デバイス、又は所望の情報を記憶するために使用でき、コンピューティングデバイス300によってアクセスできる任意の他の媒体を含むが、これらに限定されない。任意のこのようなコンピュータ可読記憶媒体は、コンピューティングデバイス300の一部とすることができる。「コンピュータ可読記憶媒体」という用語は、伝搬信号及び通信媒体を除外する。
【0068】
コンピューティングデバイス300はまた、バス/インターフェースコントローラ330を介して様々なインターフェースデバイス(例えば、出力デバイス342、周辺インターフェース344及び通信デバイス346)から基本的な構成302への通信を容易にするためのインターフェースバス340を含むこともできる。例示的な出力デバイス342は、1つ以上のA/Vポート352を介してディスプレイ又はスピーカのような様々な外部デバイスと通信するように構成できる、グラフィックス処理ユニット348及びオーディオ処理ユニット350を含む。例示的な周辺インターフェース344は、1つ以上のI/Oポート358を介して、入力デバイス(例えば、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイス等)又は他の周辺デバイス(例えば、プリンタ、スキャナ等)のような外部デバイスと通信するように構成できるシリアルインターフェースコントローラ354又はパラレルインターフェースコントローラ356を含む。例示的な通信デバイス346は、1つ以上の通信ポート364を介してネットワーク通信リンク上で1つ以上の他のコンピューティングデバイス362との通信を容易にするように構成できるネットワークコントローラ360を含む。
【0069】
ネットワーク通信リンクは、通信媒体の一例とすることができる。通信媒体は、典型的には、コンピュータ可読命令、データ構造、プログラムモジュール、又は搬送波若しくは他のトランスポート機構のような変調データ信号内の他のデータによって具現でき、任意の情報配信媒体を含むことができる。「変調データ信号」は、信号内の情報を符号化するような方式で設定又は変更されたその特性の1つ以上を有する信号とすることができる。限定ではなく例として、通信媒体は、有線ネットワーク又は直接有線接続のような有線媒体と、音響、無線周波数(RF, radio frequency)、マイクロ波、赤外線(IR, infrared)及び他の無線媒体のような無線媒体とを含むことができる。本明細書で使用されるコンピュータ可読媒体という用語は、記憶媒体と通信媒体との双方を含むことができる。
【0070】
コンピューティングデバイス300は、携帯電話、携帯情報端末(PDA, personal data assistant)、パーソナルメディアプレーヤデバイス、無線ウェブウォッチデバイス、パーソナルヘッドセットデバイス、特定用途向けデバイス、又は上記の機能のいずれかを含むハイブリッドデバイスのようなスモールフォームファクタポータブル(又はモバイル)電子デバイスの一部として実装できる。コンピューティングデバイス300はまた、ラップトップコンピュータ構成と非ラップトップコンピュータ構成との双方を含むパーソナルコンピュータとして実装できる。
【0071】
上記から、本開示の特定の実施形態が例示の目的で本明細書に記載されているが、本開示から逸脱することなく様々な修正が行われてもよいことが理解される。さらに、一実施形態の要素の多くは、他の実施形態の要素に加えて或いはその代わりに、他の実施形態と組み合わされてもよい。したがって、本技術は、添付の特許請求の範囲による場合を除いて限定されない。
図1
図2
図3A
図3B
図4A
図4B
図4C
図5A
図5B
図5C
図6
【国際調査報告】